{"version":3,"sources":["webpack://gatsby-casper/./node_modules/react-flow-renderer/dist/ReactFlow.esm.js"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__spreadArrays","il","r","Array","k","a","j","jl","isArray","cc","obj","out","tmp","getAugmentedNamespace","__esModule","defineProperty","value","keys","forEach","d","getOwnPropertyDescriptor","get","enumerable","createCommonjsModule","fn","module","exports","result","root","Symbol","observable","symbolObservablePonyfill","self","window","g","global","randomString","Math","random","toString","substring","split","join","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","isPlainObject","proto","getPrototypeOf","getUndefinedStateErrorMessage","key","action","actionType","type","String","bindActionCreator","actionCreator","dispatch","_defineProperty","configurable","writable","ownKeys","object","enumerableOnly","push","filter","sym","_objectSpread2","target","source","getOwnPropertyDescriptors","defineProperties","compose","_len","funcs","_key","arg","reduce","b","redux","freeze","__proto__","__DO_NOT_USE__ActionTypes","applyMiddleware","middlewares","createStore","store","_dispatch","Error","middlewareAPI","getState","chain","map","middleware","bindActionCreators","actionCreators","boundActionCreators","combineReducers","reducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","reducer","undefined","assertReducerShape","state","hasChanged","nextState","_i","previousStateForKey","nextStateForKey","errorMessage","preloadedState","enhancer","_ref2","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","slice","subscribe","listener","isSubscribed","index","splice","listeners","replaceReducer","nextReducer","_ref","outerSubscribe","observer","TypeError","observeState","next","unsubscribe","createThunkMiddleware","extraArgument","thunk","withExtraArgument","es","Q","L","constructor","v","o","Z","u","has","f","set","delete","add","c","X","Map","q","Set","l","nn","create","y","clear","h","isFrozen","tn","m","_","U","O","S","w","P","M","x","H","A","I","R","D","concat","N","z","E","T","F","C","rn","en","Proxy","revocable","revoke","proxy","J","K","from","min","entries","$","path","op","unshift","JSON","stringify","setPrototypeOf","size","values","V","done","G","W","B","Reflect","for","iterator","getOwnPropertyNames","deleteProperty","on","useProxies","setUseProxies","autoFreeze","setAutoFreeze","produce","bind","produceWithPatches","Promise","then","createDraft","finishDraft","applyPatches","un","an","cn","sn","vn","pn","ln","immer_esm","Immer","castDraft","castImmutable","current","enableAllPlugins","enableES5","enableMapSet","enablePatches","immerable","isDraft","isDraftable","nothing","original","Similar","list","lastItem","isEqual","val","callback","thisArg","val1","val2","similar","mapOrSimilar","forceSimilar","memoizerific","limit","cache","lru","newMap","fnResult","currentCache","argsLengthMinusOne","lruPath","isMemoized","numArgs","cacheItem","moveToMostRecentLru","removeCachedResult","shift","wasMemoized","isMatch","ii","lruLen","lruPathLen","removedLru","removedLruLen","currentLru","isObject","isPlainObject_2","ctor","prot","isPlainObject_1","useMemoOne","getResult","inputs","initial","useState","committed","useRef","Boolean","newInputs","lastInputs","areInputsEqual","useEffect","useCallbackOne","useMemo","useCallback","useMemoOne_esm","require$$1","require$$2","u$1","f$1","easyPeasy","default","createContext","useLayoutEffect","useContext","useReducer","getActions","persist","resolveRehydration","$ep_a","resolve","all","reject","payload","definition","meta","parent","parentPath","bindComputedProperty","getItem","setItem","removeItem","reverse","parse","data","isAsync","in","internals","config","storage","mergeStrategy","console","log","catch","error","isInReducer","dependencyResolvers","some","Y","devTools","disableImmer","enhancers","initialState","injections","mockActions","name","version","reducerEnhancer","ePRS","requestIdleCallback","requestAnimationFrame","allow","deny","findIndex","finally","flush","sort","$ep_aO","actionName","category","resolvedTargets","$ep_t","$ep_tO","startType","successType","failType","thunkHandler","fail","getStoreActions","getStoreState","$ep_c","stateResolvers","$ep_r","$ep_e","prev","change","transformers","targetResolver","model","references","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","addModel","clearMockedActions","getListeners","getMockedActions","reconfigure","removeModel","StoreProvider","createElement","Provider","children","actionOn","computed","createContextStore","runtimeModel","includes","originalInjections","useStore","useStoreState","useStoreActions","useStoreDispatch","useStoreRehydrated","createTransform","whitelist","blacklist","createTypedHooks","debug","generic","memo","$ep_p","thunkOn","unstable_effectOn","useLocalStore","typedHooks","isInputDOMNode","nodeName","hasAttribute","getDimensions","node","width","offsetWidth","height","offsetHeight","clamp","max","clampPosition","position","extent","useKeyPress","keyCode","_a","keyPressed","setKeyPressed","downHandler_1","event","preventDefault","upHandler_1","resetHandler_1","addEventListener","removeEventListener","isEdge","element","isNode","onLoadProject","currentStore","_b","snapToGrid","_c","tx","ty","tScale","snapX","snapY","round","pointToRendererPoint","transform","snapGrid","getBoundsOfBoxes","box1","box2","x2","y2","rectToBox","boxToRect","getRectOfNodes","nodes","box","currBox","__rf","Infinity","getNodesInside","rect","partially","rBox","isDragging","nBox","xOverlap","yOverlap","overlappingArea","ceil","getConnectedEdges","edges","nodeIds","id","edge","parseElements","onLoadGetElements","onLoadToObject","elements","zoom","noop","test","Dispatch","parseTypenames","typenames","types","trim","typename","copy","that","args","xhtml","namespaces","svg","xlink","xml","xmlns","namespace","prefix","space","local","creatorInherit","document","ownerDocument","uri","namespaceURI","documentElement","createElementNS","creatorFixed","fullname","creator","none","selector","querySelector","array","empty","selectorAll","querySelectorAll","matcher","matches","childMatcher","find","childFirst","firstElementChild","sparse","update","EnterNode","datum","_next","_parent","__data__","constant","bindIndex","group","enter","exit","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","ascending","NaN","attrRemove","removeAttribute","attrRemoveNS","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","defaultView","styleRemove","style","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","string","classList","ClassList","_node","_names","getAttribute","classedAdd","names","classedRemove","remove","classedTrue","classedFalse","classedFunction","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","parentNode","appendChild","lower","previousSibling","insertBefore","firstChild","constantNull","removeChild","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","parseTypenames$1","onRemove","__on","options","onAdd","contextListener","dispatchEvent","params","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","child","contains","root$1","Selection","groups","parents","_groups","_parents","selection","select","pointer","sourceEvent","currentTarget","ownerSVGElement","createSVGPoint","point","clientX","clientY","matrixTransform","getScreenCTM","inverse","getBoundingClientRect","left","clientLeft","top","clientTop","pageX","pageY","noevent","stopImmediatePropagation","dragDisable","view","__noselect","MozUserSelect","yesdrag","noclick","setTimeout","define","factory","extend","Color","subgroups","subnode","subgroup","selectAll","arrayAll","selectChild","match","childFind","selectChildren","childrenFilter","enterGroup","updateGroup","exitGroup","previous","i0","i1","_enter","_exit","onenter","onupdate","onexit","append","merge","order","groups0","groups1","m0","m1","merges","group0","group1","compareDocumentPosition","compare","compareNode","sortgroups","sortgroup","each","attr","getAttributeNS","property","classed","text","html","insert","before","deep","darker","brighter","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color","format","toLowerCase","exec","parseInt","rgbn","Rgb","rgba","hsla","rgbConvert","opacity","rgb_formatHex","hex","rgb_formatRgb","isNaN","Hsl","hslConvert","hsl2rgb","m2","channels","displayable","formatHsl","pow","constant$1","gamma","nogamma","exponential","linear","interpolateRgb","rgbGamma","rgb$1","start","end","interpolateNumber","reA","reB","interpolateString","am","bm","bs","bi","lastIndex","one","zero","svgNode","degrees","PI","identity","translateX","translateY","rotate","skewX","scaleX","scaleY","decompose","sqrt","atan2","atan","interpolateTransform","pxComma","pxParen","degParen","pop","xa","ya","xb","yb","translate","scale","interpolateTransformCss","DOMMatrix","WebKitCSSMatrix","isIdentity","interpolateTransformSvg","baseVal","consolidate","matrix","cosh","exp","taskHead","taskTail","interpolateZoom","zoomRho","rho","rho2","rho4","p0","p1","ux0","uy0","w0","ux1","uy1","w1","dx","dy","d2","d1","b0","b1","r0","r1","coshr0","tanh","sinh","duration","SQRT2","_1","_2","frame","timeout","interval","clockLast","clockNow","clockSkew","clock","performance","now","Date","setFrame","clearNow","Timer","_call","_time","timer","delay","time","restart","wake","timerFlush","t0","t2","t1","sleep","nap","poke","clearTimeout","clearInterval","setInterval","timeout$1","elapsed","stop","emptyOn","emptyTween","schedule","timing","schedules","__transition","tween","tick","ease","init","get$1","set$1","interrupt","active","tweenRemove","tween0","tween1","tweenFunction","tweenValue","transition","_id","interpolate","attrRemove$1","attrRemoveNS$1","attrConstant$1","value1","string00","interpolate0","string1","string0","attrConstantNS$1","attrFunction$1","string10","attrFunctionNS$1","attrInterpolate","attrInterpolateNS","attrTweenNS","_value","attrTween","delayFunction","delayConstant","durationFunction","durationConstant","easeConstant","onFunction","on0","on1","sit","every","Selection$1","styleRemove$1","styleInterpolate","styleTween","textInterpolate","textTween","Transition","_name","newId","selection_prototype","inherit","id0","id1","styleNull","styleFunction$1","listener0","styleMaybeRemove","styleConstant$1","textFunction$1","textConstant$1","removeFunction","easeVarying","cancel","defaultTiming","constant$2","ZoomEvent","Transform","applyX","applyY","invert","location","invertX","invertY","rescaleX","domain","range","rescaleY","identity$1","nopropagation","noevent$1","defaultFilter","ctrlKey","button","defaultExtent","SVGElement","viewBox","clientWidth","clientHeight","defaultTransform","__zoom","defaultWheelDelta","deltaY","deltaMode","defaultTouchable","navigator","maxTouchPoints","defaultConstrain","translateExtent","dx0","dx1","dy0","dy1","Position","ArrowHeadType","BackgroundVariant","ConnectionMode","ConnectionLineType","PanOnScrollMode","viewChanged","prevTransform","eventTransform","eventToFlowTransform","ZoomPane","rendererNode","updateSize","onMove","onMoveStart","onMoveEnd","zoomOnScroll","zoomOnPinch","_d","panOnScroll","_e","panOnScrollSpeed","_f","panOnScrollMode","Free","_g","zoomOnDoubleClick","selectionKeyPressed","elementsSelectable","_h","paneMoveable","_j","defaultPosition","_k","defaultZoom","zoomActivationKeyCode","zoomPane","d3Zoom","d3Selection","d3ZoomHandler","initD3Zoom","actions","updateTransform","zoomActivationKeyPressed","resizeObserver","updateDimensions","warn","onresize","ResizeObserver","observe","unobserve","currentTranslateExtent","d3ZoomInstance","touchstarting","touchfirst","touchending","constrain","wheelDelta","touchable","scaleExtent","touchDelay","clickDistance2","tapDistance","wheeled","mousedowned","dblclicked","touchstarted","touchmoved","touchended","centroid","gesture","clean","__zooming","Gesture","taps","wheel","mouse","wheelidled","mousemoved","mouseupped","x0","y0","moved","changedTouches","k1","shiftKey","started","touches","identifier","touch0","touch1","l0","l1","dp","dl","hypot","collection","scaleBy","scaleTo","translateBy","translateTo","emit","clickDistance","minZoom","maxZoom","clampedX","clampedY","clampedZoom","updatedTransform","currentZoom","pinchDelta","zoom_1","deltaNormalize","deltaX","Vertical","Horizontal","flowTransform","zoomScroll","pinchZoom","closest","className","ref","getMousePosition","reactFlowNode","containerBounds","SelectionRect","userSelectionRect","draw","UserSelection","selectionActive","setUserSelection","updateUserSelection","unsetUserSelection","unsetNodesSelection","onMouseDown","mousePos","onMouseMove","onMouseUp","onMouseLeave","b$1","c$1","d$1","e$1","f$2","g$1","h$1","k$1","l$1","m$1","n$1","p$1","q$1","r$1","t$1","v$1","w$1","x$1","y$1","z$1","$$typeof","A$1","reactIs_production_min","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Fragment","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","propIsEnumerable","toObject","test1","test2","fromCharCode","test3","letter","err","shouldUseNative","ReactPropTypesSecret_1","checkPropTypes","typeSpecs","componentName","getStack","resetWarningCache","Function","emptyFunction","emptyFunctionWithReset","propTypes","shim","props","propName","propFullName","secret","getShim","isRequired","ReactPropTypes","bool","func","number","symbol","any","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","PropTypes","factoryWithThrowingShims","classnames","hasOwn","classNames","classes","argType","inner","findInArray_1","isFunction_1","isNum_1","num","int_1","dontSetMe_1","shims","findInArray","isFunction","isNum","int","dontSetMe","_typeof","matchesSelector_1","matchesSelector","matchesSelectorAndParentsTo_1","el","baseNode","addEvent_1","handler","inputOptions","_objectSpread","capture","attachEvent","removeEvent_1","detachEvent","outerHeight_1","computedStyle","borderTopWidth","borderBottomWidth","outerWidth_1","borderLeftWidth","borderRightWidth","innerHeight_1","paddingTop","paddingBottom","innerWidth_1","paddingLeft","paddingRight","offsetXYFromParent_1","evt","offsetParent","offsetParentRect","body","scrollLeft","scrollTop","createCSSTransform_1","controlPos","positionOffset","translation","getTranslation","_defineProperty$1","_getPrefix","browserPrefixToKey","createSVGTransform_1","getTranslation_1","getTouch_1","targetTouches","getTouchIdentifier_1","addUserSelectStyles_1","doc","styleEl","getElementById","getElementsByTagName","addClassName","removeUserSelectStyles_1","removeClassName","getSelection","removeAllRanges","addClassName_1","removeClassName_1","_getRequireWildcardCache","newObj","hasPropertyDescriptor","desc","_interopRequireWildcard","getPrefix","browserPrefixToStyle","prop","prefixes","str","shouldCapitalize","toUpperCase","kebabToTitleCase","_default","WeakMap","ownKeys$1","symbols","matchesSelectorFunc","method","unitSuffix","defaultX","defaultY","replace","domFns","matchesSelectorAndParentsTo","addEvent","removeEvent","outerHeight","outerWidth","innerHeight","innerWidth","offsetXYFromParent","createCSSTransform","createSVGTransform","getTouch","getTouchIdentifier","addUserSelectStyles","removeUserSelectStyles","getBoundPosition_1","draggable","bounds","right","bottom","cloneBounds","findDOMNode","boundNode","ownerWindow","HTMLElement","nodeStyle","boundNodeStyle","offsetLeft","marginLeft","offsetTop","marginTop","marginRight","marginBottom","snapToGrid_1","grid","pendingX","pendingY","canDragX_1","axis","canDragY_1","getControlPosition_1","touchIdentifier","draggableCore","touchObj","createCoreData_1","isStart","lastX","lastY","createDraggableData_1","coreData","positionFns","getBoundPosition","canDragX","canDragY","getControlPosition","createCoreData","createDraggableData","log_1","DraggableCore_1","React$1","_propTypes","_interopRequireDefault","_reactDom","_log","_slicedToArray","arr","_arrayWithHoles","_arr","_n","_s","_iterableToArrayLimit","minLen","_arrayLikeToArray","_unsupportedIterableToArray","_nonIterableRest","len","arr2","_classCallCheck","instance","Constructor","_defineProperties","descriptor","_setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","construct","sham","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","eventsFor","move","dragEventFor","DraggableCore","_React$Component","subClass","superClass","_inherits","protoProps","staticProps","_super","_this","dragging","allowAnyClick","thisNode","disabled","Node","handle","setState","coreEvent","onStart","mounted","enableUserSelectHack","handleDrag","handleDragStop","_snapToGrid2","onDrag","MouseEvent","initMouseEvent","onStop","handleDragStart","onTouchStart","passive","nodeRef","cloneElement","Children","only","onTouchEnd","Component","nodeType","Draggable_1","_DraggableCore","_classnames","_extends","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","_createClass","Draggable","dragged","uiData","newState","slackX","slackY","_getBoundPosition2","newStateX","newStateY","_this$props$position","prevPropsPosition","isElementSVG","_classNames","_this$props","defaultClassName","defaultClassNameDragging","defaultClassNameDragged","draggableCoreProps","svgTransform","validPosition","transformOpts","onDragStart","onDragStop","defaultProps","cjs","_default$1","DraggableCore_1$1","NodesSelection","onSelectionDragStart","onSelectionDrag","onSelectionDragStop","onSelectionContextMenu","tX","tY","selectedNodesBbox","selectedElements","updateNodePosDiff","selectedNodes","selectedNode","matchingNode","innerStyle","diff","onContextMenu","FlowRenderer","onPaneClick","onPaneContextMenu","onPaneScroll","onElementsRemove","deleteKeyCode","selectionKeyCode","multiSelectionKeyCode","resetSelectedElements","nodesSelectionActive","setMultiSelectionActive","deleteKeyPressed","multiSelectionKeyPressed","elementsToRemove","res","item","useGlobalKeyHandler","onClick","onWheel","displayName","FlowRenderer$1","NodeRenderer","nodesDraggable","nodesConnectable","viewportBox","batchUpdateNodeDimensions","visibleNodes","onlyRenderVisibleElements","transformStyle","updates","entry","nodeElement","NodeComponent","nodeTypes","isDraggable","isSelectable","selectable","isConnectable","connectable","sourcePosition","targetPosition","isHidden","xPos","yPos","isInitialized","selectNodesOnDrag","onElementClick","onMouseEnter","onNodeMouseEnter","onNodeMouseMove","onNodeMouseLeave","onNodeContextMenu","onNodeDragStart","onNodeDrag","onNodeDragStop","selected","NodeRenderer$1","EdgeText","label","labelStyle","labelShowBg","labelBgStyle","labelBgPadding","labelBgBorderRadius","edgeRef","edgeTextBbox","setEdgeTextBbox","textBbox","getBBox","rx","ry","getMarkerEnd","arrowHeadType","markerEndId","getCenter","sourceX","sourceY","targetX","targetY","xOffset","abs","centerX","yOffset","getBezierPath","Bottom","Top","centerY","_centerX","_centerY","leftAndRight","Left","Right","cX","cY","BezierEdge","markerEnd","bottomLeftCorner","bottomRightCorner","rightBottomCorner","topLeftCorner","topRightCorner","rightTopCorner","getSmoothStepPath","borderRadius","offsetX","offsetY","cornerWidth","cornerHeight","cornerSize","firstCornerPath","secondCornerPath","leftTopCorner","leftBottomCorner","SmoothStepEdge","ConnectionLine","connectionNodeId","connectionHandleId","connectionHandleType","connectionLineStyle","connectionPositionX","connectionPositionY","connectionLineType","Bezier","CustomConnectionLineComponent","sourceNode","setSourceNode","nodeId","handleId","nextSourceNode","sourceHandle","handleBounds","sourceHandleX","sourceHandleY","dAttr","Step","SmoothStep","Marker","markerWidth","markerHeight","orient","refX","refY","MarkerDefinitions","stroke","strokeLinecap","strokeLinejoin","strokeWidth","fill","points","StepEdge","StraightEdge","checkElementBelowIsValid","connectionMode","isTarget","isValidConnection","elementBelow","elementFromPoint","elementBelowIsTarget","elementBelowIsSource","isValid","connection","targetHandle","isHoveringHandle","Strict","elementBelowNodeId","elementBelowHandleId","resetRecentHandle","hoveredHandle","setConnectionNodeId","setPosition","onConnect","onConnectStart","onConnectStop","onConnectEnd","recentHoveredHandle","handleType","toggle","wrapEdge","EdgeComponent","EdgeWrapper","animated","sourceHandleId","targetHandleId","handleEdgeUpdate","onConnectEdge","addSelectedElements","setConnectionPosition","updating","setUpdating","edgeClasses","inactive","onEdgeClick","edgeElement","handleEdgeUpdater","isSourceHandle","onEdgeUpdaterSourceMouseDown","onEdgeUpdaterTargetMouseDown","onEdgeUpdaterMouseEnter","onEdgeUpdaterMouseOut","onMouseOut","cx","cy","getHandlePosition","getHandle","Edge","targetNode","getSourceTargetNodes","onEdgeUpdate","edgeType","edgeTypes","targetNodeBounds","targetNodeHandles","sourceHandlePos","targetHandlePos","getEdgePositions","sourcePos","targetPos","edgeBox","isEdgeVisible","isSelected","elm","EdgeRenderer","connectionPosition","arrowHeadColor","connectionLineComponent","renderConnectionLine","EdgeRenderer$1","DEFAULT_PADDING","initialZoomPanHelper","zoomIn","zoomOut","zoomTo","fitView","setCenter","__","fitBounds","initialized","getTransformForBounds","padding","xZoom","yZoom","useZoomPanHelper","zoomLevel","nextTransform","includeHiddenNodes","nextZoom","GraphView","onLoad","nodeExtent","isInitialised","setOnConnect","setOnConnectStart","setOnConnectStop","setOnConnectEnd","setSnapGrid","setSnapToGrid","setNodesDraggable","setNodesConnectable","setElementsSelectable","setMinZoom","setMaxZoom","setTranslateExtent","setNodeExtent","setConnectionMode","setTransform","project","getElements","GraphView$1","ElementUpdater","setElements","NodeIdContext","Consumer","alwaysValid","Handle","rest","onConnectAction","onConnectExtended","onMouseDownHandler","handleClasses","Handle$1","DefaultNode","DefaultNode$1","InputNode","InputNode$1","OutputNode","OutputNode$1","wrapNode","NodeWrapper","updateNodeDimensions","zIndex","pointerEvents","onMouseEnterHandler","onMouseMoveHandler","onMouseLeaveHandler","onContextMenuHandler","onSelectNodeHandler","draggableData","currNode_1","nodeClasses","SelectionListener","onSelectionChange","fastDeepEqual","equal","flags","valueOf","getHandleBounds","getHandleBoundsByHandleType","parentBounds","handles","dimensions","handlePosition","storeModel","Number","NEGATIVE_INFINITY","POSITIVE_INFINITY","startX","startY","multiSelectionActive","reactFlowVersion","propElements","out_i_1","_loop_1","se","pe","storeElementIndex","storeElement","propNode","positionChanged","typeChanged","parseElement","matchingIndex","updateNodePos","pos","gridSizeX","gridSizeY","sNode","negativeX","negativeY","nextRect","nextSelectedElements","selectedElementsUpdated","setSelection","isActive","setSelectedElements","selectedElementsArr","helpers","nextElements","setInteractive","isInteractive","nodeEnv","Wrapper","easyPeasyStore","styleInject","css","insertAt","head","styleSheet","cssText","createTextNode","defaultNodeTypes","input","output","defaultEdgeTypes","straight","step","smoothstep","ReactFlow","_l","_m","_o","_p","_q","_r","_t","_u","_v","_w","_x","_y","_z","nodeTypesParsed","standardTypes","specialTypes","createNodeTypes","edgeTypesParsed","bezier","createEdgeTypes","reactFlowClasses","MiniMapNode","strokeColor","background","backgroundColor","MiniMapNode$1","MiniMap","rect2","nodeStrokeColor","nodeColor","nodeClassName","nodeBorderRadius","nodeStrokeWidth","maskColor","containerWidth","containerHeight","mapClasses","elementWidth","elementHeight","nodeColorFunc","nodeStrokeColorFunc","nodeClassNameFunc","hasNodes","bb","viewBB","boundingRect","scaledWidth","scaledHeight","viewScale","viewWidth","viewHeight","offset","fillRule","SvgPlus","_extends$1","_ref$1","SvgMinus","_extends$2","_ref$2","SvgFitview","_extends$3","_ref$3","SvgLock","_extends$4","_ref$4","SvgUnlock","Controls","showZoom","showFitView","showInteractive","fitViewParams","onZoomIn","onZoomOut","onFitView","onInteractiveChange","onZoomInHandler","onZoomOutHandler","onFitViewHandler","onInteractiveChangeHandler","defaultColors","Dots","Lines","Background","variant","gap","bgClasses","scaledGap","isLines","bgColor","createGridLinesPath","createGridDotsPath","patternUnits"],"mappings":"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","file":"b9e0c7b4-851f514f8892a591cc3b.js","sourcesContent":["import React, { useState, useRef, useEffect, memo, useMemo as useMemo$1, useCallback as useCallback$1, createContext, useContext, createElement } from 'react';\nimport require$$2$1 from 'react-dom';\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n\nvar __assign = function () {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nfunction __rest(s, e) {\n var t = {};\n\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nfunction __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n\n for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j];\n\n return r;\n}\n\nvar isArray = Array.isArray;\n\nfunction cc(obj) {\n var out = \"\";\n if (typeof obj === \"string\" || typeof obj === \"number\") return obj || \"\";\n if (isArray(obj)) for (var k = 0, tmp; k < obj.length; k++) {\n if ((tmp = cc(obj[k])) !== \"\") {\n out += (out && \" \") + tmp;\n }\n } else for (var k in obj) {\n if (obj.hasOwnProperty(k) && obj[k]) out += (out && \" \") + k;\n }\n return out;\n}\n\nfunction getAugmentedNamespace(n) {\n if (n.__esModule) return n;\n var a = Object.defineProperty({}, '__esModule', {\n value: true\n });\n Object.keys(n).forEach(function (k) {\n var d = Object.getOwnPropertyDescriptor(n, k);\n Object.defineProperty(a, k, d.get ? d : {\n enumerable: true,\n get: function () {\n return n[k];\n }\n });\n });\n return a;\n}\n\nfunction createCommonjsModule(fn) {\n var module = {\n exports: {}\n };\n return fn(module, module.exports), module.exports;\n}\n\nfunction symbolObservablePonyfill(root) {\n var result;\n var Symbol = root.Symbol;\n\n if (typeof Symbol === 'function') {\n if (Symbol.observable) {\n result = Symbol.observable;\n } else {\n result = Symbol('observable');\n Symbol.observable = result;\n }\n } else {\n result = '@@observable';\n }\n\n return result;\n}\n/* global window */\n\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = symbolObservablePonyfill(root);\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\n\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\n\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error('It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error('You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected the listener to be a function.');\n }\n\n if (isDispatching) {\n throw new Error('You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api-reference/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error('You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api-reference/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[result] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[result] = observable, _ref2;\n}\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\n\n\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionDescription = actionType && \"action \\\"\" + String(actionType) + \"\\\"\" || 'an action';\n return \"Given \" + actionDescription + \", reducer \\\"\" + key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\";\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle \" + ActionTypes.INIT + \" or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(\"bindActionCreators expected an object or a function, instead received \" + (actionCreators === null ? 'null' : typeof actionCreators) + \". \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n keys.push.apply(keys, Object.getOwnPropertySymbols(object));\n }\n\n if (enumerableOnly) keys = keys.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\n\n\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error('Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread2({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nvar redux = /*#__PURE__*/Object.freeze({\n __proto__: null,\n __DO_NOT_USE__ActionTypes: ActionTypes,\n applyMiddleware: applyMiddleware,\n bindActionCreators: bindActionCreators,\n combineReducers: combineReducers,\n compose: compose,\n createStore: createStore\n});\n\nfunction createThunkMiddleware(extraArgument) {\n return function (_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n if (typeof action === 'function') {\n return action(dispatch, getState, extraArgument);\n }\n\n return next(action);\n };\n };\n };\n}\n\nvar thunk = createThunkMiddleware();\nthunk.withExtraArgument = createThunkMiddleware;\nvar es = /*#__PURE__*/Object.freeze({\n __proto__: null,\n 'default': thunk\n});\n\nfunction n(n) {\n for (var t = arguments.length, r = Array(t > 1 ? t - 1 : 0), e = 1; e < t; e++) r[e - 1] = arguments[e];\n\n if (\"production\" !== process.env.NODE_ENV) {\n var i = Y[n],\n o = i ? \"function\" == typeof i ? i.apply(null, r) : i : \"unknown error nr: \" + n;\n throw Error(\"[Immer] \" + o);\n }\n\n throw Error(\"[Immer] minified error nr: \" + n + (r.length ? \" \" + r.join(\",\") : \"\") + \". Find the full error at: https://bit.ly/3cXEKWf\");\n}\n\nfunction t(n) {\n return !!n && !!n[Q];\n}\n\nfunction r(n) {\n return !!n && (function (n) {\n if (!n || \"object\" != typeof n) return !1;\n var t = Object.getPrototypeOf(n);\n return !t || t === Object.prototype;\n }(n) || Array.isArray(n) || !!n[L] || !!n.constructor[L] || s(n) || v(n));\n}\n\nfunction e(r) {\n return t(r) || n(23, r), r[Q].t;\n}\n\nfunction i(n, t, r) {\n void 0 === r && (r = !1), 0 === o(n) ? (r ? Object.keys : Z)(n).forEach(function (e) {\n r && \"symbol\" == typeof e || t(e, n[e], n);\n }) : n.forEach(function (r, e) {\n return t(e, r, n);\n });\n}\n\nfunction o(n) {\n var t = n[Q];\n return t ? t.i > 3 ? t.i - 4 : t.i : Array.isArray(n) ? 1 : s(n) ? 2 : v(n) ? 3 : 0;\n}\n\nfunction u(n, t) {\n return 2 === o(n) ? n.has(t) : Object.prototype.hasOwnProperty.call(n, t);\n}\n\nfunction a(n, t) {\n return 2 === o(n) ? n.get(t) : n[t];\n}\n\nfunction f(n, t, r) {\n var e = o(n);\n 2 === e ? n.set(t, r) : 3 === e ? (n.delete(t), n.add(r)) : n[t] = r;\n}\n\nfunction c(n, t) {\n return n === t ? 0 !== n || 1 / n == 1 / t : n != n && t != t;\n}\n\nfunction s(n) {\n return X && n instanceof Map;\n}\n\nfunction v(n) {\n return q && n instanceof Set;\n}\n\nfunction p(n) {\n return n.o || n.t;\n}\n\nfunction l(n) {\n if (Array.isArray(n)) return Array.prototype.slice.call(n);\n var t = nn(n);\n delete t[Q];\n\n for (var r = Z(t), e = 0; e < r.length; e++) {\n var i = r[e],\n o = t[i];\n !1 === o.writable && (o.writable = !0, o.configurable = !0), (o.get || o.set) && (t[i] = {\n configurable: !0,\n writable: !0,\n enumerable: o.enumerable,\n value: n[i]\n });\n }\n\n return Object.create(Object.getPrototypeOf(n), t);\n}\n\nfunction d(n, e) {\n y(n) || t(n) || !r(n) || (o(n) > 1 && (n.set = n.add = n.clear = n.delete = h), Object.freeze(n), e && i(n, function (n, t) {\n return d(t, !0);\n }, !0));\n}\n\nfunction h() {\n n(2);\n}\n\nfunction y(n) {\n return null == n || \"object\" != typeof n || Object.isFrozen(n);\n}\n\nfunction b(t) {\n var r = tn[t];\n return r || n(\"production\" !== process.env.NODE_ENV ? 18 : 19, t), r;\n}\n\nfunction m(n, t) {\n tn[n] = t;\n}\n\nfunction _() {\n return \"production\" === process.env.NODE_ENV || U || n(0), U;\n}\n\nfunction j(n, t) {\n t && (b(\"Patches\"), n.u = [], n.s = [], n.v = t);\n}\n\nfunction g(n) {\n O(n), n.p.forEach(S), n.p = null;\n}\n\nfunction O(n) {\n n === U && (U = n.l);\n}\n\nfunction w(n) {\n return U = {\n p: [],\n l: U,\n h: n,\n m: !0,\n _: 0\n };\n}\n\nfunction S(n) {\n var t = n[Q];\n 0 === t.i || 1 === t.i ? t.j() : t.g = !0;\n}\n\nfunction P(t, e) {\n e._ = e.p.length;\n var i = e.p[0],\n o = void 0 !== t && t !== i;\n return e.h.O || b(\"ES5\").S(e, t, o), o ? (i[Q].P && (g(e), n(4)), r(t) && (t = M(e, t), e.l || x(e, t)), e.u && b(\"Patches\").M(i[Q], t, e.u, e.s)) : t = M(e, i, []), g(e), e.u && e.v(e.u, e.s), t !== H ? t : void 0;\n}\n\nfunction M(n, t, r) {\n if (y(t)) return t;\n var e = t[Q];\n if (!e) return i(t, function (i, o) {\n return A(n, e, t, i, o, r);\n }, !0), t;\n if (e.A !== n) return t;\n if (!e.P) return x(n, e.t, !0), e.t;\n\n if (!e.I) {\n e.I = !0, e.A._--;\n var o = 4 === e.i || 5 === e.i ? e.o = l(e.k) : e.o;\n i(3 === e.i ? new Set(o) : o, function (t, i) {\n return A(n, e, o, t, i, r);\n }), x(n, o, !1), r && n.u && b(\"Patches\").R(e, r, n.u, n.s);\n }\n\n return e.o;\n}\n\nfunction A(e, i, o, a, c, s) {\n if (\"production\" !== process.env.NODE_ENV && c === o && n(5), t(c)) {\n var v = M(e, c, s && i && 3 !== i.i && !u(i.D, a) ? s.concat(a) : void 0);\n if (f(o, a, v), !t(v)) return;\n e.m = !1;\n }\n\n if (r(c) && !y(c)) {\n if (!e.h.N && e._ < 1) return;\n M(e, c), i && i.A.l || x(e, c);\n }\n}\n\nfunction x(n, t, r) {\n void 0 === r && (r = !1), n.h.N && n.m && d(t, r);\n}\n\nfunction z(n, t) {\n var r = n[Q];\n return (r ? p(r) : n)[t];\n}\n\nfunction I(n, t) {\n if (t in n) for (var r = Object.getPrototypeOf(n); r;) {\n var e = Object.getOwnPropertyDescriptor(r, t);\n if (e) return e;\n r = Object.getPrototypeOf(r);\n }\n}\n\nfunction E(n) {\n n.P || (n.P = !0, n.l && E(n.l));\n}\n\nfunction k(n) {\n n.o || (n.o = l(n.t));\n}\n\nfunction R(n, t, r) {\n var e = s(t) ? b(\"MapSet\").T(t, r) : v(t) ? b(\"MapSet\").F(t, r) : n.O ? function (n, t) {\n var r = Array.isArray(n),\n e = {\n i: r ? 1 : 0,\n A: t ? t.A : _(),\n P: !1,\n I: !1,\n D: {},\n l: t,\n t: n,\n k: null,\n o: null,\n j: null,\n C: !1\n },\n i = e,\n o = rn;\n r && (i = [e], o = en);\n var u = Proxy.revocable(i, o),\n a = u.revoke,\n f = u.proxy;\n return e.k = f, e.j = a, f;\n }(t, r) : b(\"ES5\").J(t, r);\n return (r ? r.A : _()).p.push(e), e;\n}\n\nfunction D(e) {\n return t(e) || n(22, e), function n(t) {\n if (!r(t)) return t;\n var e,\n u = t[Q],\n c = o(t);\n\n if (u) {\n if (!u.P && (u.i < 4 || !b(\"ES5\").K(u))) return u.t;\n u.I = !0, e = N(t, c), u.I = !1;\n } else e = N(t, c);\n\n return i(e, function (t, r) {\n u && a(u.t, t) === r || f(e, t, n(r));\n }), 3 === c ? new Set(e) : e;\n }(e);\n}\n\nfunction N(n, t) {\n switch (t) {\n case 2:\n return new Map(n);\n\n case 3:\n return Array.from(n);\n }\n\n return l(n);\n}\n\nfunction T() {\n function r(n, t) {\n var r = s[n];\n return r ? r.enumerable = t : s[n] = r = {\n configurable: !0,\n enumerable: t,\n get: function () {\n var t = this[Q];\n return \"production\" !== process.env.NODE_ENV && f(t), rn.get(t, n);\n },\n set: function (t) {\n var r = this[Q];\n \"production\" !== process.env.NODE_ENV && f(r), rn.set(r, n, t);\n }\n }, r;\n }\n\n function e(n) {\n for (var t = n.length - 1; t >= 0; t--) {\n var r = n[t][Q];\n if (!r.P) switch (r.i) {\n case 5:\n a(r) && E(r);\n break;\n\n case 4:\n o(r) && E(r);\n }\n }\n }\n\n function o(n) {\n for (var t = n.t, r = n.k, e = Z(r), i = e.length - 1; i >= 0; i--) {\n var o = e[i];\n\n if (o !== Q) {\n var a = t[o];\n if (void 0 === a && !u(t, o)) return !0;\n var f = r[o],\n s = f && f[Q];\n if (s ? s.t !== a : !c(f, a)) return !0;\n }\n }\n\n var v = !!t[Q];\n return e.length !== Z(t).length + (v ? 0 : 1);\n }\n\n function a(n) {\n var t = n.k;\n if (t.length !== n.t.length) return !0;\n var r = Object.getOwnPropertyDescriptor(t, t.length - 1);\n return !(!r || r.get);\n }\n\n function f(t) {\n t.g && n(3, JSON.stringify(p(t)));\n }\n\n var s = {};\n m(\"ES5\", {\n J: function (n, t) {\n var e = Array.isArray(n),\n i = function (n, t) {\n if (n) {\n for (var e = Array(t.length), i = 0; i < t.length; i++) Object.defineProperty(e, \"\" + i, r(i, !0));\n\n return e;\n }\n\n var o = nn(t);\n delete o[Q];\n\n for (var u = Z(o), a = 0; a < u.length; a++) {\n var f = u[a];\n o[f] = r(f, n || !!o[f].enumerable);\n }\n\n return Object.create(Object.getPrototypeOf(t), o);\n }(e, n),\n o = {\n i: e ? 5 : 4,\n A: t ? t.A : _(),\n P: !1,\n I: !1,\n D: {},\n l: t,\n t: n,\n k: i,\n o: null,\n g: !1,\n C: !1\n };\n\n return Object.defineProperty(i, Q, {\n value: o,\n writable: !0\n }), i;\n },\n S: function (n, r, o) {\n o ? t(r) && r[Q].A === n && e(n.p) : (n.u && function n(t) {\n if (t && \"object\" == typeof t) {\n var r = t[Q];\n\n if (r) {\n var e = r.t,\n o = r.k,\n f = r.D,\n c = r.i;\n if (4 === c) i(o, function (t) {\n t !== Q && (void 0 !== e[t] || u(e, t) ? f[t] || n(o[t]) : (f[t] = !0, E(r)));\n }), i(e, function (n) {\n void 0 !== o[n] || u(o, n) || (f[n] = !1, E(r));\n });else if (5 === c) {\n if (a(r) && (E(r), f.length = !0), o.length < e.length) for (var s = o.length; s < e.length; s++) f[s] = !1;else for (var v = e.length; v < o.length; v++) f[v] = !0;\n\n for (var p = Math.min(o.length, e.length), l = 0; l < p; l++) void 0 === f[l] && n(o[l]);\n }\n }\n }\n }(n.p[0]), e(n.p));\n },\n K: function (n) {\n return 4 === n.i ? o(n) : a(n);\n }\n });\n}\n\nfunction F() {\n function r(n) {\n if (!n || \"object\" != typeof n) return n;\n if (Array.isArray(n)) return n.map(r);\n if (s(n)) return new Map(Array.from(n.entries()).map(function (n) {\n return [n[0], r(n[1])];\n }));\n if (v(n)) return new Set(Array.from(n).map(r));\n var t = Object.create(Object.getPrototypeOf(n));\n\n for (var e in n) t[e] = r(n[e]);\n\n return t;\n }\n\n function e(n) {\n return t(n) ? r(n) : n;\n }\n\n var f = \"add\";\n m(\"Patches\", {\n $: function (t, e) {\n return e.forEach(function (e) {\n for (var i = e.path, u = e.op, c = t, s = 0; s < i.length - 1; s++) \"object\" != typeof (c = a(c, i[s])) && n(15, i.join(\"/\"));\n\n var v = o(c),\n p = r(e.value),\n l = i[i.length - 1];\n\n switch (u) {\n case \"replace\":\n switch (v) {\n case 2:\n return c.set(l, p);\n\n case 3:\n n(16);\n\n default:\n return c[l] = p;\n }\n\n case f:\n switch (v) {\n case 1:\n return c.splice(l, 0, p);\n\n case 2:\n return c.set(l, p);\n\n case 3:\n return c.add(p);\n\n default:\n return c[l] = p;\n }\n\n case \"remove\":\n switch (v) {\n case 1:\n return c.splice(l, 1);\n\n case 2:\n return c.delete(l);\n\n case 3:\n return c.delete(e.value);\n\n default:\n return delete c[l];\n }\n\n default:\n n(17, u);\n }\n }), t;\n },\n R: function (n, t, r, o) {\n switch (n.i) {\n case 0:\n case 4:\n case 2:\n return function (n, t, r, o) {\n var c = n.t,\n s = n.o;\n i(n.D, function (n, i) {\n var v = a(c, n),\n p = a(s, n),\n l = i ? u(c, n) ? \"replace\" : f : \"remove\";\n\n if (v !== p || \"replace\" !== l) {\n var d = t.concat(n);\n r.push(\"remove\" === l ? {\n op: l,\n path: d\n } : {\n op: l,\n path: d,\n value: p\n }), o.push(l === f ? {\n op: \"remove\",\n path: d\n } : \"remove\" === l ? {\n op: f,\n path: d,\n value: e(v)\n } : {\n op: \"replace\",\n path: d,\n value: e(v)\n });\n }\n });\n }(n, t, r, o);\n\n case 5:\n case 1:\n return function (n, t, r, i) {\n var o = n.t,\n u = n.D,\n a = n.o;\n\n if (a.length < o.length) {\n var c = [a, o];\n o = c[0], a = c[1];\n var s = [i, r];\n r = s[0], i = s[1];\n }\n\n for (var v = 0; v < o.length; v++) if (u[v] && a[v] !== o[v]) {\n var p = t.concat([v]);\n r.push({\n op: \"replace\",\n path: p,\n value: e(a[v])\n }), i.push({\n op: \"replace\",\n path: p,\n value: e(o[v])\n });\n }\n\n for (var l = o.length; l < a.length; l++) {\n var d = t.concat([l]);\n r.push({\n op: f,\n path: d,\n value: e(a[l])\n });\n }\n\n o.length < a.length && i.push({\n op: \"replace\",\n path: t.concat([\"length\"]),\n value: o.length\n });\n }(n, t, r, o);\n\n case 3:\n return function (n, t, r, e) {\n var i = n.t,\n o = n.o,\n u = 0;\n i.forEach(function (n) {\n if (!o.has(n)) {\n var i = t.concat([u]);\n r.push({\n op: \"remove\",\n path: i,\n value: n\n }), e.unshift({\n op: f,\n path: i,\n value: n\n });\n }\n\n u++;\n }), u = 0, o.forEach(function (n) {\n if (!i.has(n)) {\n var o = t.concat([u]);\n r.push({\n op: f,\n path: o,\n value: n\n }), e.unshift({\n op: \"remove\",\n path: o,\n value: n\n });\n }\n\n u++;\n });\n }(n, t, r, o);\n }\n },\n M: function (n, t, r, e) {\n r.push({\n op: \"replace\",\n path: [],\n value: t\n }), e.push({\n op: \"replace\",\n path: [],\n value: n.t\n });\n }\n });\n}\n\nfunction C() {\n function t(n, t) {\n function r() {\n this.constructor = n;\n }\n\n a(n, t), n.prototype = (r.prototype = t.prototype, new r());\n }\n\n function e(n) {\n n.o || (n.D = new Map(), n.o = new Map(n.t));\n }\n\n function o(n) {\n n.o || (n.o = new Set(), n.t.forEach(function (t) {\n if (r(t)) {\n var e = R(n.A.h, t, n);\n n.p.set(t, e), n.o.add(e);\n } else n.o.add(t);\n }));\n }\n\n function u(t) {\n t.g && n(3, JSON.stringify(p(t)));\n }\n\n var a = function (n, t) {\n return (a = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (n, t) {\n n.__proto__ = t;\n } || function (n, t) {\n for (var r in t) t.hasOwnProperty(r) && (n[r] = t[r]);\n })(n, t);\n },\n f = function () {\n function n(n, t) {\n return this[Q] = {\n i: 2,\n l: t,\n A: t ? t.A : _(),\n P: !1,\n I: !1,\n o: void 0,\n D: void 0,\n t: n,\n k: this,\n C: !1,\n g: !1\n }, this;\n }\n\n t(n, Map);\n var o = n.prototype;\n return Object.defineProperty(o, \"size\", {\n get: function () {\n return p(this[Q]).size;\n }\n }), o.has = function (n) {\n return p(this[Q]).has(n);\n }, o.set = function (n, t) {\n var r = this[Q];\n return u(r), p(r).has(n) && p(r).get(n) === t || (e(r), E(r), r.D.set(n, !0), r.o.set(n, t), r.D.set(n, !0)), this;\n }, o.delete = function (n) {\n if (!this.has(n)) return !1;\n var t = this[Q];\n return u(t), e(t), E(t), t.D.set(n, !1), t.o.delete(n), !0;\n }, o.clear = function () {\n var n = this[Q];\n return u(n), e(n), E(n), n.D = new Map(), i(n.t, function (t) {\n n.D.set(t, !1);\n }), n.o.clear();\n }, o.forEach = function (n, t) {\n var r = this;\n p(this[Q]).forEach(function (e, i) {\n n.call(t, r.get(i), i, r);\n });\n }, o.get = function (n) {\n var t = this[Q];\n u(t);\n var i = p(t).get(n);\n if (t.I || !r(i)) return i;\n if (i !== t.t.get(n)) return i;\n var o = R(t.A.h, i, t);\n return e(t), t.o.set(n, o), o;\n }, o.keys = function () {\n return p(this[Q]).keys();\n }, o.values = function () {\n var n,\n t = this,\n r = this.keys();\n return (n = {})[V] = function () {\n return t.values();\n }, n.next = function () {\n var n = r.next();\n return n.done ? n : {\n done: !1,\n value: t.get(n.value)\n };\n }, n;\n }, o.entries = function () {\n var n,\n t = this,\n r = this.keys();\n return (n = {})[V] = function () {\n return t.entries();\n }, n.next = function () {\n var n = r.next();\n if (n.done) return n;\n var e = t.get(n.value);\n return {\n done: !1,\n value: [n.value, e]\n };\n }, n;\n }, o[V] = function () {\n return this.entries();\n }, n;\n }(),\n c = function () {\n function n(n, t) {\n return this[Q] = {\n i: 3,\n l: t,\n A: t ? t.A : _(),\n P: !1,\n I: !1,\n o: void 0,\n t: n,\n k: this,\n p: new Map(),\n g: !1,\n C: !1\n }, this;\n }\n\n t(n, Set);\n var r = n.prototype;\n return Object.defineProperty(r, \"size\", {\n get: function () {\n return p(this[Q]).size;\n }\n }), r.has = function (n) {\n var t = this[Q];\n return u(t), t.o ? !!t.o.has(n) || !(!t.p.has(n) || !t.o.has(t.p.get(n))) : t.t.has(n);\n }, r.add = function (n) {\n var t = this[Q];\n return u(t), this.has(n) || (o(t), E(t), t.o.add(n)), this;\n }, r.delete = function (n) {\n if (!this.has(n)) return !1;\n var t = this[Q];\n return u(t), o(t), E(t), t.o.delete(n) || !!t.p.has(n) && t.o.delete(t.p.get(n));\n }, r.clear = function () {\n var n = this[Q];\n return u(n), o(n), E(n), n.o.clear();\n }, r.values = function () {\n var n = this[Q];\n return u(n), o(n), n.o.values();\n }, r.entries = function () {\n var n = this[Q];\n return u(n), o(n), n.o.entries();\n }, r.keys = function () {\n return this.values();\n }, r[V] = function () {\n return this.values();\n }, r.forEach = function (n, t) {\n for (var r = this.values(), e = r.next(); !e.done;) n.call(t, e.value, e.value, this), e = r.next();\n }, n;\n }();\n\n m(\"MapSet\", {\n T: function (n, t) {\n return new f(n, t);\n },\n F: function (n, t) {\n return new c(n, t);\n }\n });\n}\n\nfunction J() {\n T(), C(), F();\n}\n\nfunction K(n) {\n return n;\n}\n\nfunction $(n) {\n return n;\n}\n\nvar G,\n U,\n W = \"undefined\" != typeof Symbol && \"symbol\" == typeof Symbol(\"x\"),\n X = \"undefined\" != typeof Map,\n q = \"undefined\" != typeof Set,\n B = \"undefined\" != typeof Proxy && void 0 !== Proxy.revocable && \"undefined\" != typeof Reflect,\n H = W ? Symbol.for(\"immer-nothing\") : ((G = {})[\"immer-nothing\"] = !0, G),\n L = W ? Symbol.for(\"immer-draftable\") : \"__$immer_draftable\",\n Q = W ? Symbol.for(\"immer-state\") : \"__$immer_state\",\n V = \"undefined\" != typeof Symbol && Symbol.iterator || \"@@iterator\",\n Y = {\n 0: \"Illegal state\",\n 1: \"Immer drafts cannot have computed properties\",\n 2: \"This object has been frozen and should not be mutated\",\n 3: function (n) {\n return \"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" + n;\n },\n 4: \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n 5: \"Immer forbids circular references\",\n 6: \"The first or second argument to `produce` must be a function\",\n 7: \"The third argument to `produce` must be a function or undefined\",\n 8: \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n 9: \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n 10: \"The given draft is already finalized\",\n 11: \"Object.defineProperty() cannot be used on an Immer draft\",\n 12: \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n 13: \"Immer only supports deleting array indices\",\n 14: \"Immer only supports setting array indices and the 'length' property\",\n 15: function (n) {\n return \"Cannot apply patch, path doesn't resolve: \" + n;\n },\n 16: 'Sets cannot have \"replace\" patches.',\n 17: function (n) {\n return \"Unsupported patch operation: \" + n;\n },\n 18: function (n) {\n return \"The plugin for '\" + n + \"' has not been loaded into Immer. To enable the plugin, import and call `enable\" + n + \"()` when initializing your application.\";\n },\n 19: \"plugin not loaded\",\n 20: \"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",\n 21: function (n) {\n return \"produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '\" + n + \"'\";\n },\n 22: function (n) {\n return \"'current' expects a draft, got: \" + n;\n },\n 23: function (n) {\n return \"'original' expects a draft, got: \" + n;\n }\n},\n Z = \"undefined\" != typeof Reflect && Reflect.ownKeys ? Reflect.ownKeys : void 0 !== Object.getOwnPropertySymbols ? function (n) {\n return Object.getOwnPropertyNames(n).concat(Object.getOwnPropertySymbols(n));\n} : Object.getOwnPropertyNames,\n nn = Object.getOwnPropertyDescriptors || function (n) {\n var t = {};\n return Z(n).forEach(function (r) {\n t[r] = Object.getOwnPropertyDescriptor(n, r);\n }), t;\n},\n tn = {},\n rn = {\n get: function (n, t) {\n if (t === Q) return n;\n var e = p(n);\n if (!u(e, t)) return function (n, t, r) {\n var e,\n i = I(t, r);\n return i ? \"value\" in i ? i.value : null === (e = i.get) || void 0 === e ? void 0 : e.call(n.k) : void 0;\n }(n, e, t);\n var i = e[t];\n return n.I || !r(i) ? i : i === z(n.t, t) ? (k(n), n.o[t] = R(n.A.h, i, n)) : i;\n },\n has: function (n, t) {\n return t in p(n);\n },\n ownKeys: function (n) {\n return Reflect.ownKeys(p(n));\n },\n set: function (n, t, r) {\n var e = I(p(n), t);\n if (null == e ? void 0 : e.set) return e.set.call(n.k, r), !0;\n\n if (n.D[t] = !0, !n.P) {\n if (c(r, z(p(n), t)) && (void 0 !== r || u(n.t, t))) return !0;\n k(n), E(n);\n }\n\n return n.o[t] = r, !0;\n },\n deleteProperty: function (n, t) {\n return void 0 !== z(n.t, t) || t in n.t ? (n.D[t] = !1, k(n), E(n)) : delete n.D[t], n.o && delete n.o[t], !0;\n },\n getOwnPropertyDescriptor: function (n, t) {\n var r = p(n),\n e = Reflect.getOwnPropertyDescriptor(r, t);\n return e ? {\n writable: !0,\n configurable: 1 !== n.i || \"length\" !== t,\n enumerable: e.enumerable,\n value: r[t]\n } : e;\n },\n defineProperty: function () {\n n(11);\n },\n getPrototypeOf: function (n) {\n return Object.getPrototypeOf(n.t);\n },\n setPrototypeOf: function () {\n n(12);\n }\n},\n en = {};\n\ni(rn, function (n, t) {\n en[n] = function () {\n return arguments[0] = arguments[0][0], t.apply(this, arguments);\n };\n}), en.deleteProperty = function (t, r) {\n return \"production\" !== process.env.NODE_ENV && isNaN(parseInt(r)) && n(13), rn.deleteProperty.call(this, t[0], r);\n}, en.set = function (t, r, e) {\n return \"production\" !== process.env.NODE_ENV && \"length\" !== r && isNaN(parseInt(r)) && n(14), rn.set.call(this, t[0], r, e, t[0]);\n};\n\nvar on = function () {\n function e(n) {\n this.O = B, this.N = \"production\" !== process.env.NODE_ENV, \"boolean\" == typeof (null == n ? void 0 : n.useProxies) && this.setUseProxies(n.useProxies), \"boolean\" == typeof (null == n ? void 0 : n.autoFreeze) && this.setAutoFreeze(n.autoFreeze), this.produce = this.produce.bind(this), this.produceWithPatches = this.produceWithPatches.bind(this);\n }\n\n var i = e.prototype;\n return i.produce = function (t, e, i) {\n if (\"function\" == typeof t && \"function\" != typeof e) {\n var o = e;\n e = t;\n var u = this;\n return function (n) {\n var t = this;\n void 0 === n && (n = o);\n\n for (var r = arguments.length, i = Array(r > 1 ? r - 1 : 0), a = 1; a < r; a++) i[a - 1] = arguments[a];\n\n return u.produce(n, function (n) {\n var r;\n return (r = e).call.apply(r, [t, n].concat(i));\n });\n };\n }\n\n var a;\n\n if (\"function\" != typeof e && n(6), void 0 !== i && \"function\" != typeof i && n(7), r(t)) {\n var f = w(this),\n c = R(this, t, void 0),\n s = !0;\n\n try {\n a = e(c), s = !1;\n } finally {\n s ? g(f) : O(f);\n }\n\n return \"undefined\" != typeof Promise && a instanceof Promise ? a.then(function (n) {\n return j(f, i), P(n, f);\n }, function (n) {\n throw g(f), n;\n }) : (j(f, i), P(a, f));\n }\n\n if (!t || \"object\" != typeof t) {\n if ((a = e(t)) === H) return;\n return void 0 === a && (a = t), this.N && d(a, !0), a;\n }\n\n n(21, t);\n }, i.produceWithPatches = function (n, t) {\n var r,\n e,\n i = this;\n return \"function\" == typeof n ? function (t) {\n for (var r = arguments.length, e = Array(r > 1 ? r - 1 : 0), o = 1; o < r; o++) e[o - 1] = arguments[o];\n\n return i.produceWithPatches(t, function (t) {\n return n.apply(void 0, [t].concat(e));\n });\n } : [this.produce(n, t, function (n, t) {\n r = n, e = t;\n }), r, e];\n }, i.createDraft = function (e) {\n r(e) || n(8), t(e) && (e = D(e));\n var i = w(this),\n o = R(this, e, void 0);\n return o[Q].C = !0, O(i), o;\n }, i.finishDraft = function (t, r) {\n var e = t && t[Q];\n \"production\" !== process.env.NODE_ENV && (e && e.C || n(9), e.I && n(10));\n var i = e.A;\n return j(i, r), P(void 0, i);\n }, i.setAutoFreeze = function (n) {\n this.N = n;\n }, i.setUseProxies = function (t) {\n t && !B && n(20), this.O = t;\n }, i.applyPatches = function (n, r) {\n var e;\n\n for (e = r.length - 1; e >= 0; e--) {\n var i = r[e];\n\n if (0 === i.path.length && \"replace\" === i.op) {\n n = i.value;\n break;\n }\n }\n\n var o = b(\"Patches\").$;\n return t(n) ? o(n, r) : this.produce(n, function (n) {\n return o(n, r.slice(e + 1));\n });\n }, e;\n}(),\n un = new on(),\n an = un.produce,\n fn = un.produceWithPatches.bind(un),\n cn = un.setAutoFreeze.bind(un),\n sn = un.setUseProxies.bind(un),\n vn = un.applyPatches.bind(un),\n pn = un.createDraft.bind(un),\n ln = un.finishDraft.bind(un);\n\nvar immer_esm = /*#__PURE__*/Object.freeze({\n __proto__: null,\n 'default': an,\n Immer: on,\n applyPatches: vn,\n castDraft: K,\n castImmutable: $,\n createDraft: pn,\n current: D,\n enableAllPlugins: J,\n enableES5: T,\n enableMapSet: C,\n enablePatches: F,\n finishDraft: ln,\n immerable: L,\n isDraft: t,\n isDraftable: r,\n nothing: H,\n original: e,\n produce: an,\n produceWithPatches: fn,\n setAutoFreeze: cn,\n setUseProxies: sn\n});\n\nfunction Similar() {\n this.list = [];\n this.lastItem = undefined;\n this.size = 0;\n return this;\n}\n\nSimilar.prototype.get = function (key) {\n var index;\n\n if (this.lastItem && this.isEqual(this.lastItem.key, key)) {\n return this.lastItem.val;\n }\n\n index = this.indexOf(key);\n\n if (index >= 0) {\n this.lastItem = this.list[index];\n return this.list[index].val;\n }\n\n return undefined;\n};\n\nSimilar.prototype.set = function (key, val) {\n var index;\n\n if (this.lastItem && this.isEqual(this.lastItem.key, key)) {\n this.lastItem.val = val;\n return this;\n }\n\n index = this.indexOf(key);\n\n if (index >= 0) {\n this.lastItem = this.list[index];\n this.list[index].val = val;\n return this;\n }\n\n this.lastItem = {\n key: key,\n val: val\n };\n this.list.push(this.lastItem);\n this.size++;\n return this;\n};\n\nSimilar.prototype.delete = function (key) {\n var index;\n\n if (this.lastItem && this.isEqual(this.lastItem.key, key)) {\n this.lastItem = undefined;\n }\n\n index = this.indexOf(key);\n\n if (index >= 0) {\n this.size--;\n return this.list.splice(index, 1)[0];\n }\n\n return undefined;\n}; // important that has() doesn't use get() in case an existing key has a falsy value, in which case has() would return false\n\n\nSimilar.prototype.has = function (key) {\n var index;\n\n if (this.lastItem && this.isEqual(this.lastItem.key, key)) {\n return true;\n }\n\n index = this.indexOf(key);\n\n if (index >= 0) {\n this.lastItem = this.list[index];\n return true;\n }\n\n return false;\n};\n\nSimilar.prototype.forEach = function (callback, thisArg) {\n var i;\n\n for (i = 0; i < this.size; i++) {\n callback.call(thisArg || this, this.list[i].val, this.list[i].key, this);\n }\n};\n\nSimilar.prototype.indexOf = function (key) {\n var i;\n\n for (i = 0; i < this.size; i++) {\n if (this.isEqual(this.list[i].key, key)) {\n return i;\n }\n }\n\n return -1;\n}; // check if the numbers are equal, or whether they are both precisely NaN (isNaN returns true for all non-numbers)\n\n\nSimilar.prototype.isEqual = function (val1, val2) {\n return val1 === val2 || val1 !== val1 && val2 !== val2;\n};\n\nvar similar = Similar;\n\nvar mapOrSimilar = function (forceSimilar) {\n if (typeof Map !== 'function' || forceSimilar) {\n var Similar = similar;\n return new Similar();\n } else {\n return new Map();\n }\n};\n\nvar memoizerific = function (limit) {\n var cache = new mapOrSimilar(false === 'true'),\n lru = [];\n return function (fn) {\n var memoizerific = function () {\n var currentCache = cache,\n newMap,\n fnResult,\n argsLengthMinusOne = arguments.length - 1,\n lruPath = Array(argsLengthMinusOne + 1),\n isMemoized = true,\n i;\n\n if ((memoizerific.numArgs || memoizerific.numArgs === 0) && memoizerific.numArgs !== argsLengthMinusOne + 1) {\n throw new Error('Memoizerific functions should always be called with the same number of arguments');\n } // loop through each argument to traverse the map tree\n\n\n for (i = 0; i < argsLengthMinusOne; i++) {\n lruPath[i] = {\n cacheItem: currentCache,\n arg: arguments[i]\n }; // climb through the hierarchical map tree until the second-last argument has been found, or an argument is missing.\n // if all arguments up to the second-last have been found, this will potentially be a cache hit (determined later)\n\n if (currentCache.has(arguments[i])) {\n currentCache = currentCache.get(arguments[i]);\n continue;\n }\n\n isMemoized = false; // make maps until last value\n\n newMap = new mapOrSimilar(false === 'true');\n currentCache.set(arguments[i], newMap);\n currentCache = newMap;\n } // we are at the last arg, check if it is really memoized\n\n\n if (isMemoized) {\n if (currentCache.has(arguments[argsLengthMinusOne])) {\n fnResult = currentCache.get(arguments[argsLengthMinusOne]);\n } else {\n isMemoized = false;\n }\n } // if the result wasn't memoized, compute it and cache it\n\n\n if (!isMemoized) {\n fnResult = fn.apply(null, arguments);\n currentCache.set(arguments[argsLengthMinusOne], fnResult);\n } // if there is a cache limit, purge any extra results\n\n\n if (limit > 0) {\n lruPath[argsLengthMinusOne] = {\n cacheItem: currentCache,\n arg: arguments[argsLengthMinusOne]\n };\n\n if (isMemoized) {\n moveToMostRecentLru(lru, lruPath);\n } else {\n lru.push(lruPath);\n }\n\n if (lru.length > limit) {\n removeCachedResult(lru.shift());\n }\n }\n\n memoizerific.wasMemoized = isMemoized;\n memoizerific.numArgs = argsLengthMinusOne + 1;\n return fnResult;\n };\n\n memoizerific.limit = limit;\n memoizerific.wasMemoized = false;\n memoizerific.cache = cache;\n memoizerific.lru = lru;\n return memoizerific;\n };\n}; // move current args to most recent position\n\n\nfunction moveToMostRecentLru(lru, lruPath) {\n var lruLen = lru.length,\n lruPathLen = lruPath.length,\n isMatch,\n i,\n ii;\n\n for (i = 0; i < lruLen; i++) {\n isMatch = true;\n\n for (ii = 0; ii < lruPathLen; ii++) {\n if (!isEqual(lru[i][ii].arg, lruPath[ii].arg)) {\n isMatch = false;\n break;\n }\n }\n\n if (isMatch) {\n break;\n }\n }\n\n lru.push(lru.splice(i, 1)[0]);\n} // remove least recently used cache item and all dead branches\n\n\nfunction removeCachedResult(removedLru) {\n var removedLruLen = removedLru.length,\n currentLru = removedLru[removedLruLen - 1],\n tmp,\n i;\n currentLru.cacheItem.delete(currentLru.arg); // walk down the tree removing dead branches (size 0) along the way\n\n for (i = removedLruLen - 2; i >= 0; i--) {\n currentLru = removedLru[i];\n tmp = currentLru.cacheItem.get(currentLru.arg);\n\n if (!tmp || !tmp.size) {\n currentLru.cacheItem.delete(currentLru.arg);\n } else {\n break;\n }\n }\n} // check if the numbers are equal, or whether they are both precisely NaN (isNaN returns true for all non-numbers)\n\n\nfunction isEqual(val1, val2) {\n return val1 === val2 || val1 !== val1 && val2 !== val2;\n}\n/*!\n * is-plain-object \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n\nfunction isObject(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject$1(o) {\n var ctor, prot;\n if (isObject(o) === false) return false; // If has modified constructor\n\n ctor = o.constructor;\n if (ctor === undefined) return true; // If has modified prototype\n\n prot = ctor.prototype;\n if (isObject(prot) === false) return false; // If constructor does not have an Object-specific method\n\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n } // Most likely a plain Object\n\n\n return true;\n}\n\nvar isPlainObject_2 = isPlainObject$1;\nvar isPlainObject_1 = /*#__PURE__*/Object.defineProperty({\n isPlainObject: isPlainObject_2\n}, '__esModule', {\n value: true\n});\n\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n\n for (var i = 0; i < newInputs.length; i++) {\n if (newInputs[i] !== lastInputs[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction useMemoOne(getResult, inputs) {\n var initial = useState(function () {\n return {\n inputs: inputs,\n result: getResult()\n };\n })[0];\n var committed = useRef(initial);\n var isInputMatch = Boolean(inputs && committed.current.inputs && areInputsEqual(inputs, committed.current.inputs));\n var cache = isInputMatch ? committed.current : {\n inputs: inputs,\n result: getResult()\n };\n useEffect(function () {\n committed.current = cache;\n }, [cache]);\n return cache.result;\n}\n\nfunction useCallbackOne(callback, inputs) {\n return useMemoOne(function () {\n return callback;\n }, inputs);\n}\n\nvar useMemo = useMemoOne;\nvar useCallback = useCallbackOne;\nvar useMemoOne_esm = /*#__PURE__*/Object.freeze({\n __proto__: null,\n useCallback: useCallback,\n useCallbackOne: useCallbackOne,\n useMemo: useMemo,\n useMemoOne: useMemoOne\n});\nvar require$$1 = /*@__PURE__*/getAugmentedNamespace(redux);\nvar require$$2 = /*@__PURE__*/getAugmentedNamespace(es);\nvar u$1 = /*@__PURE__*/getAugmentedNamespace(immer_esm);\nvar f$1 = /*@__PURE__*/getAugmentedNamespace(useMemoOne_esm);\nvar easyPeasy = createCommonjsModule(function (module, exports) {\n function n(n) {\n return n && \"object\" == typeof n && \"default\" in n ? n.default : n;\n }\n\n var t = React,\n r = n(t),\n e = require$$1,\n o = n(require$$2),\n i = n(memoizerific),\n a = t.createContext(),\n s = \"undefined\" != typeof window ? t.useLayoutEffect : t.useEffect;\n\n function v(n) {\n return function (r, e) {\n var o = t.useContext(n),\n u = t.useRef(r),\n i = t.useRef(),\n c = t.useRef(!0),\n f = t.useRef(),\n a = t.useReducer(function (n) {\n return n + 1;\n }, 0)[1];\n if (f.current || u.current !== r || void 0 === i.current) try {\n i.current = r(o.getState());\n } catch (n) {\n if (\"development\" === process.env.NODE_ENV) {\n var v = \"An error occurred trying to map state in a useStoreState hook: \" + n.message + \".\";\n throw f.current && (v += \"\\nThis error may be related to the following error:\\n\" + f.current.stack + \"\\n\\nOriginal stack trace:\"), new Error(v);\n }\n\n throw f.current || n;\n }\n return s(function () {\n u.current = r, f.current = void 0;\n }), s(function () {\n var n = function () {\n try {\n var n = u.current(o.getState());\n if (\"function\" == typeof e ? e(i.current, n) : i.current === n) return;\n i.current = n;\n } catch (n) {\n f.current = n;\n }\n\n c.current && a({});\n },\n t = o.subscribe(n);\n\n return n(), function () {\n c.current = !1, t();\n };\n }, []), i.current;\n };\n }\n\n var l = v(a);\n\n function d(n) {\n return function (r) {\n return r(t.useContext(n).getActions());\n };\n }\n\n var p = d(a);\n\n function y(n) {\n return function () {\n return t.useContext(n).dispatch;\n };\n }\n\n var m = y(a);\n\n function h() {\n return t.useContext(a);\n }\n\n function S(n) {\n return function () {\n var r = t.useContext(n),\n e = t.useState(!1),\n o = e[0],\n u = e[1];\n return t.useEffect(function () {\n r.persist.resolveRehydration().then(function () {\n return u(!0);\n });\n }, []), o;\n };\n }\n\n var g = S(a);\n\n function w() {\n return (w = Object.assign || function (n) {\n for (var t = 1; t < arguments.length; t++) {\n var r = arguments[t];\n\n for (var e in r) Object.prototype.hasOwnProperty.call(r, e) && (n[e] = r[e]);\n }\n\n return n;\n }).apply(this, arguments);\n }\n\n var b = function (n) {\n var t;\n return (t = {}).$ep_a = !0, t.fn = n, t;\n },\n j = [function (n) {\n return n;\n }],\n P = new u$1.Immer({\n useProxies: !0,\n autoFreeze: !1\n }),\n O = function (n) {\n return function n(t) {\n var r = Object.keys(t).reduce(function (n, r) {\n return null == Object.getOwnPropertyDescriptor(t, r).get && (n[r] = t[r]), n;\n }, {});\n return Object.keys(r).forEach(function (t) {\n isPlainObject_1.isPlainObject(r[t]) && (r[t] = n(r[t]));\n }), r;\n }(n);\n },\n x = function (n) {\n return null != n && \"object\" == typeof n && \"function\" == typeof n.then;\n };\n\n function _(n, t) {\n return n.reduce(function (n, t) {\n return isPlainObject_1.isPlainObject(n) ? n[t] : void 0;\n }, t);\n }\n\n var A = function (n, t, r) {\n 0 !== n.length ? n.reduce(function (t, e, o) {\n return t[e] = o + 1 === n.length ? r : t[e] || {}, t[e];\n }, t) : \"object\" == typeof r && (Object.keys(t).forEach(function (n) {\n delete t[n];\n }), Object.keys(r).forEach(function (n) {\n t[n] = r[n];\n }));\n },\n k = function (n) {\n try {\n var t = [];\n return Promise.resolve((r = n, new Promise(function (n, e) {\n var o = r[Symbol.iterator]();\n !function r(u) {\n try {\n var i = o.next();\n if (i.done) return n(u), Promise.resolve();\n\n var c = function (n, e) {\n try {\n var o = Promise.resolve(Promise.all([u, i.value])).then(function (n) {\n r(function (n, r) {\n try {\n return Promise.resolve(r()).then(function (n) {\n t.push(n);\n });\n } catch (n) {\n return Promise.reject(n);\n }\n }(0, n[1]));\n });\n } catch (n) {\n return e(n);\n }\n\n return o && o.then ? o.then(void 0, e) : o;\n }(0, function (n) {\n e(n);\n });\n\n return Promise.resolve(c && c.then ? c.then(function () {}) : void 0);\n } catch (n) {\n return Promise.reject(n);\n }\n }(void 0);\n }))).then(function () {\n return t;\n });\n } catch (n) {\n return Promise.reject(n);\n }\n\n var r;\n };\n\n function I(n, t, r, e) {\n var o = function (n) {\n return void 0 === n && (n = !1), function (t, r, e) {\n if (n) {\n var o = _(t, r),\n i = e(o);\n\n return o !== i ? function n(t, r, e) {\n if (0 === t.length) return e;\n var o = w({}, r),\n u = t[0];\n return o[u] = 1 === t.length ? e : n(t.slice(1), o[u], e), o;\n }(t, r, i) : r;\n }\n\n if (0 === t.length) {\n var c = P.createDraft(r),\n f = e(c);\n return f ? u$1.isDraft(f) ? P.finishDraft(f) : f : P.finishDraft(c);\n }\n\n var a = t.slice(0, t.length - 1),\n s = P.createDraft(r),\n v = _(a, r),\n l = e(_(t, s));\n\n return l && (v[t[t.length - 1]] = l), P.finishDraft(s);\n };\n }(n);\n\n return function (n, u) {\n var i = function (n, r) {\n var e = t[r.type];\n return e ? function (n, t, r, e) {\n return o(e, n, function (n) {\n return r(n, t.payload);\n });\n }(n, r, e, e.definition.meta.parent) : n;\n }(n, u),\n c = r.length > 0 ? function (n, t) {\n return r.reduce(function (n, r) {\n var e = r.key,\n u = r.reducer;\n return o(r.parentPath, n, function (n) {\n return n[e] = u(n[e], t), n;\n });\n }, n);\n }(i, u) : i;\n\n return n !== c && e.forEach(function (n) {\n var t = n.bindComputedProperty,\n r = _(n.parentPath, c);\n\n null != r && t(r, c);\n }), c;\n };\n }\n\n var R = {\n getItem: function () {},\n setItem: function () {},\n removeItem: function () {}\n },\n T = function (n) {\n var t;\n return function () {\n if (!t) {\n try {\n \"undefined\" != typeof window && void 0 !== window[n] && (t = window[n]);\n } catch (n) {}\n\n t || (t = R);\n }\n\n return t;\n };\n },\n C = T(\"localStorage\"),\n q = T(\"sessionStorage\");\n\n function D(n, t) {\n void 0 === t && (t = []), null == n && (n = q()), \"string\" == typeof n && (\"localStorage\" === n ? n = C() : \"sessionStorage\" === n ? n = q() : (\"development\" === process.env.NODE_ENV && console.warn(\"Invalid storage provider specified for Easy Peasy persist: \" + n + '\\nValid values include \"localStorage\", \"sessionStorage\" or a custom storage engine.'), n = R));\n\n var r = [].concat(t).reverse(),\n e = function (t) {\n var e = n === C() || n === q() ? JSON.parse(t).data : t;\n return r.length > 0 && null != e && \"object\" == typeof e && Object.keys(e).forEach(function (n) {\n e[n] = r.reduce(function (t, r) {\n return r.out(t, n);\n }, e[n]);\n }), e;\n },\n o = x(n.getItem(\"_\"));\n\n return {\n isAsync: o,\n getItem: function (t) {\n if (o) return n.getItem(t).then(function (n) {\n return null != n ? e(n) : void 0;\n });\n var r = n.getItem(t);\n return null != r ? e(r) : void 0;\n },\n setItem: function (r, e) {\n return n.setItem(r, function (r) {\n return t.length > 0 && null != r && \"object\" == typeof r && Object.keys(r).forEach(function (n) {\n r[n] = t.reduce(function (t, r) {\n return r.in(t, n);\n }, r[n]);\n }), n === C() || n === q() ? JSON.stringify({\n data: r\n }) : r;\n }(e));\n },\n removeItem: function (t) {\n return n.removeItem(t);\n }\n };\n }\n\n function M(n, t) {\n return function () {\n return 0 === t.internals.t.length ? Promise.resolve() : k(t.internals.t.map(function (t) {\n var r = t.path,\n e = t.config;\n return function () {\n return Promise.resolve(e.storage.removeItem(n(r)));\n };\n }));\n };\n }\n\n function E(n, t, r, e) {\n return 0 === r.internals.t.length ? Promise.resolve() : k(r.internals.t.map(function (o) {\n return function () {\n var u = o.path,\n i = o.config,\n f = i.mergeStrategy,\n a = i.storage;\n if (e && (u.length < 1 || u[0] !== e)) return Promise.resolve();\n\n var s = r.internals.o,\n v = function (n, t) {\n return null != n && null != t && (typeof n != typeof t || Array.isArray(n) && !Array.isArray(t));\n },\n l = function (n) {\n null != n && function (n, t) {\n if (\"overwrite\" === f) A(u, n, t);else if (\"mergeShallow\" === f) {\n var r = _(u, n);\n\n Object.keys(t).forEach(function (n) {\n v(r[n], t[n]) || (r[n] = t[n]);\n });\n } else \"mergeDeep\" === f && function n(t, r) {\n Object.keys(r).forEach(function (e) {\n v(t[e], r[e]) || (isPlainObject_1.isPlainObject(r[e]) ? (t[e] = t[e] || {}, n(t[e], r[e])) : t[e] = r[e]);\n });\n }(_(u, n), t);\n }(s, n), t(s);\n },\n d = a.getItem(n(u));\n\n return x(d) ? d.then(l) : Promise.resolve(l(d));\n };\n }));\n }\n\n var N = function (n, t) {\n console.log(\"An error occurred in a listener for \" + n), console.log(t);\n },\n z = function (n, t) {\n return function () {\n try {\n var r = t.apply(void 0, [].slice.call(arguments));\n x(r) && r.catch(function (t) {\n N(n, t);\n });\n } catch (t) {\n N(n, t);\n }\n };\n };\n\n function J(n) {\n return function () {\n return function (t) {\n return function (r) {\n var e = t(r);\n\n if (r && n.internals.u[r.type] && n.internals.u[r.type].length > 0) {\n var o = n.internals.i[r.type];\n n.internals.u[r.type].forEach(function (n) {\n n({\n type: o ? o.definition.meta.type : r.type,\n payload: r.payload,\n error: r.error,\n result: r.result\n });\n });\n }\n\n return e;\n };\n };\n };\n }\n\n function F(n) {\n return function (t) {\n return function (r) {\n return function (e) {\n return n.internals.s.currentState = t.getState(), n.internals.s.isInReducer = !0, r(e);\n };\n };\n };\n }\n\n function L(n) {\n return function (t) {\n return function (r) {\n return function (e) {\n if (0 === n.internals.v.length) return r(e);\n var o = t.getState(),\n u = r(e),\n i = t.getState();\n return n.internals.v.forEach(function (n) {\n var t = _(n.meta.parent, o),\n r = _(n.meta.parent, i);\n\n if (t !== r) {\n var u = n.dependencyResolvers.map(function (n) {\n return n(t);\n }),\n c = n.dependencyResolvers.map(function (n) {\n return n(r);\n });\n u.some(function (n, t) {\n return n !== c[t];\n }) && n.actionCreator(u, c, e);\n }\n }), u;\n };\n };\n };\n }\n\n var V = function (n) {\n console.log(n);\n },\n Y = function (n, t) {\n console.log(\"An error occurred in a listener for \" + n), console.log(t);\n },\n $ = function (n, t) {\n return function () {\n try {\n var r = t.apply(void 0, [].slice.call(arguments));\n x(r) && r.catch(function (t) {\n Y(n, t);\n });\n } catch (t) {\n Y(n, t);\n }\n };\n };\n\n function B(n, t) {\n void 0 === t && (t = {});\n var r = O(n),\n u = t.compose,\n f = t.devTools,\n a = void 0 === f ? \"production\" !== process.env.NODE_ENV : f,\n s = t.disableImmer,\n v = void 0 !== s && s,\n l = t.enhancers,\n d = void 0 === l ? [] : l,\n p = t.initialState,\n y = void 0 === p ? {} : p,\n m = t.injections,\n h = void 0 === m ? {} : m,\n S = t.middleware,\n g = void 0 === S ? [] : S,\n j = t.mockActions,\n P = void 0 !== j && j,\n R = t.name,\n T = void 0 === R ? \"EasyPeasyStore\" : R,\n C = t.version,\n q = void 0 === C ? 0 : C,\n N = t.reducerEnhancer,\n Y = void 0 === N ? function (n) {\n return n;\n } : N;\n if (\"production\" !== process.env.NODE_ENV && \"object\" != typeof h) throw new Error(\"[easy-peasy] Store injections must be an object\");\n\n var B = function (n) {\n return w({}, n, {\n ePRS: b(function (n, t) {\n return t;\n })\n });\n },\n G = {},\n H = B(r),\n K = [],\n Q = function (n) {\n return \"[\" + T + \"][\" + q + \"]\" + (n.length > 0 ? \"[\" + n.join(\".\") + \"]\" : \"\");\n },\n U = function (n, t) {\n var r,\n e = Promise.resolve(),\n o = !1,\n u = \"undefined\" == typeof window ? function (n) {\n return n();\n } : null != window.requestIdleCallback ? window.requestIdleCallback : window.requestAnimationFrame;\n return {\n persist: function (i) {\n if (0 !== t.internals.t.length) {\n var f = function () {\n o = !0, e = new Promise(function (e) {\n u(function () {\n k(t.internals.t.map(function (t) {\n var r = t.path,\n e = t.config;\n return function () {\n var t = e.storage,\n o = e.allow,\n u = e.deny,\n f = function (n, t, r) {\n var e = Object.keys(n);\n return t.length > 0 && (e = e.reduce(function (n, r) {\n return -1 !== t.findIndex(function (n) {\n return n === r;\n }) ? [].concat(n, [r]) : n;\n }, [])), r.length > 0 && (e = e.reduce(function (n, t) {\n return -1 !== r.findIndex(function (n) {\n return n === t;\n }) ? n : [].concat(n, [t]);\n }, [])), e;\n }(O(_(r, i)), o, u),\n a = {};\n\n return f.map(function (n) {\n var t = _([].concat(r, [n]), i),\n e = isPlainObject_1.isPlainObject(t) ? O(t) : t;\n\n a[n] = e;\n }), Promise.resolve(t.setItem(n(r), a));\n };\n })).finally(function () {\n if (o = !1, r) {\n var n = r;\n r = null, n();\n } else e();\n });\n });\n });\n };\n\n o ? r = f : f();\n }\n },\n clear: M(n, t),\n flush: function () {\n try {\n return r && r(), Promise.resolve(e).then(function () {});\n } catch (n) {\n return Promise.reject(n);\n }\n }\n };\n }(Q, G),\n W = function (n, t) {\n return function (r) {\n var e = r.getState;\n return function (r) {\n return function (o) {\n var u = r(o);\n return o && \"@action.ePRS\" !== o.type && t.internals.t.length > 0 && n.persist(e()), u;\n };\n };\n };\n }(U, G),\n X = function (n) {\n return G.internals.i[\"@action.ePRS\"](n);\n },\n Z = function (n) {\n void 0 === n && (n = {}), G.internals = function (n) {\n var t = n.disableImmer,\n r = n.reducerEnhancer,\n e = function (n, t, r, e) {\n var o = t,\n u = {},\n f = {},\n a = {},\n s = {},\n v = [],\n l = [],\n d = [],\n p = {},\n y = {},\n m = [],\n h = [],\n S = {\n isInReducer: !1,\n currentState: o\n };\n return h = h.sort(function (n, t) {\n var r = n.path.join(\".\"),\n e = t.path.join(\".\");\n return r < e ? -1 : r > e ? 1 : 0;\n }), function n(y, S) {\n return Object.keys(y).forEach(function (g) {\n var b = y[g],\n j = [].concat(S, [g]),\n P = {\n parent: S,\n path: j,\n key: g\n },\n O = function () {\n var n = _(S, t);\n\n A(j, o, n && g in n ? n[g] : b);\n };\n\n if (\"$ep_p\" !== g) {\n if (null != b && \"object\" == typeof b) {\n if (b.$ep_a || b.$ep_aO) {\n var k = w({}, b),\n I = k.$ep_a ? \"@action\" : \"@actionOn\";\n k.meta = {\n actionName: P.key,\n category: I,\n type: I + \".\" + P.path.join(\".\"),\n parent: P.parent,\n path: P.path\n }, k.actionCreator = function (n, t) {\n var r = function (r) {\n var e = {\n type: n.meta.type,\n payload: r\n };\n return n.$ep_aO && n.meta.resolvedTargets && (r.resolvedTargets = [].concat(n.meta.resolvedTargets)), t.dispatch(e);\n };\n\n return r.type = n.meta.type, r;\n }(k, e), k.actionCreator.definition = k, k.fn.definition = k, u[k.meta.type] = k.actionCreator, a[k.meta.type] = k.fn, \"ePRS\" !== P.key && (k.$ep_aO ? (m.push(k), A(j, p, k.actionCreator)) : A(j, f, k.actionCreator));\n } else if (b.$ep_t || b.$ep_tO) {\n var R = w({}, b),\n T = (R.$ep_t ? \"@thunk\" : \"@thunkOn\") + \".\" + P.path.join(\".\");\n R.meta = {\n actionName: P.key,\n parent: P.parent,\n path: P.path,\n type: T,\n startType: T + \"(start)\",\n successType: T + \"(success)\",\n failType: T + \"(fail)\"\n }, R.thunkHandler = function (n, t, r, e) {\n return function (o, u) {\n var i = {\n dispatch: t.dispatch,\n fail: u,\n getState: function () {\n return _(n.meta.parent, t.getState());\n },\n getStoreActions: function () {\n return e;\n },\n getStoreState: t.getState,\n injections: r,\n meta: {\n key: n.meta.actionName,\n parent: n.meta.parent,\n path: n.meta.path\n }\n };\n return n.$ep_tO && n.meta.resolvedTargets && (o.resolvedTargets = [].concat(n.meta.resolvedTargets)), n.fn(_(n.meta.parent, e), o, i);\n };\n }(R, e, r, f), A(j, s, R.thunkHandler), R.actionCreator = function (n, t) {\n var r = function (r) {\n var e = z(n.meta.startType, function () {\n return t.dispatch({\n type: n.meta.startType,\n payload: r\n });\n }),\n o = z(n.meta.failType, function (e) {\n return t.dispatch({\n type: n.meta.failType,\n payload: r,\n error: e\n });\n }),\n u = z(n.meta.successType, function (e) {\n return t.dispatch({\n type: n.meta.successType,\n payload: r,\n result: e\n });\n });\n e();\n\n var i = null,\n c = function (n) {\n i = n;\n },\n f = t.dispatch(function () {\n return n.thunkHandler(r, c);\n });\n\n return x(f) ? f.then(function (n) {\n return i ? o(i) : u(n), n;\n }) : (i ? o(i) : u(f), f);\n };\n\n return r.type = n.meta.type, r.successType = n.meta.successType, r.failType = n.meta.failType, r.startType = n.meta.startType, r;\n }(R, e), R.actionCreator.definition = R, u[R.meta.type] = R.actionCreator, R.$ep_tO ? (m.push(R), A(j, p, R.actionCreator)) : A(j, f, R.actionCreator);\n } else if (b.$ep_c) {\n var C = _(S, o),\n q = function (n, t, r, e, o) {\n var u = i(1)(r.fn);\n return function (e, o) {\n Object.defineProperty(e, t, {\n configurable: !0,\n enumerable: !0,\n get: function () {\n var t = _(n, o),\n e = r.stateResolvers.map(function (n) {\n return n(t, o);\n });\n\n return u.apply(void 0, e);\n }\n });\n };\n }(S, g, b);\n\n q(C, o), v.push({\n key: g,\n parentPath: S,\n bindComputedProperty: q\n });\n } else if (b.$ep_r) l.push({\n key: g,\n parentPath: S,\n reducer: b.fn\n });else if (b.$ep_e) {\n var M = w({}, b),\n E = \"@effectOn.\" + P.path.join(\".\");\n M.meta = {\n type: E,\n actionName: P.key,\n parent: P.parent,\n path: P.path,\n startType: E + \"(start)\",\n successType: E + \"(success)\",\n failType: E + \"(fail)\"\n };\n\n var N = function (n, t, r, e) {\n var o,\n u = _(n.meta.parent, e);\n\n return function (i) {\n var c = {\n dispatch: t.dispatch,\n getState: function () {\n return _(n.meta.parent, t.getState());\n },\n getStoreActions: function () {\n return e;\n },\n getStoreState: t.getState,\n injections: r,\n meta: {\n key: n.meta.actionName,\n parent: n.meta.parent,\n path: n.meta.path\n }\n };\n\n if (void 0 !== o) {\n var f = o();\n o = void 0, x(f) && f.catch(V);\n }\n\n var a = n.fn(u, i, c);\n if (x(a)) return a.then(function (n) {\n \"function\" == typeof n && \"production\" !== process.env.NODE_ENV && console.warn(\"[easy-peasy] You have an effect which is asynchronously resolving a dispose function. This is considered an anti-pattern. Please read the API documentation for more information.\");\n });\n \"function\" == typeof a && (o = a);\n };\n }(M, e, r, f),\n J = function (n, t, r) {\n var e = function (e, o, u) {\n var i = {\n prev: e,\n current: o,\n action: u\n },\n c = $(n.meta.startType, function () {\n return t.dispatch({\n type: n.meta.startType,\n change: i\n });\n }),\n f = $(n.meta.successType, function () {\n return t.dispatch({\n type: n.meta.successType,\n change: i\n });\n });\n c();\n\n try {\n var a = t.dispatch(function () {\n return r(i);\n });\n return x(a) ? a.then(function (n) {\n return f(n), n;\n }, V) : (f(a), a);\n } catch (n) {\n V(n);\n }\n };\n\n return e.type = n.meta.type, e.startType = n.meta.startType, e.successType = n.meta.successType, e.failType = n.meta.failType, e;\n }(M, e, N);\n\n M.actionCreator = J, d.push(M);\n } else isPlainObject_1.isPlainObject(b) ? (null == _(j, o) && A(j, o, {}), n(b, j)) : O();\n } else O();\n } else h.push(function (n, t) {\n return void 0 === t && (t = {}), {\n path: n,\n config: {\n allow: t.allow || [],\n deny: t.deny || [],\n mergeStrategy: t.mergeStrategy || \"mergeDeep\",\n storage: D(t.storage, t.transformers)\n }\n };\n }(S, b));\n });\n }(n, []), function (n, t, r, e) {\n n.forEach(function (n) {\n var o = n.targetResolver(_(n.meta.parent, t), t),\n u = (Array.isArray(o) ? o : [o]).reduce(function (n, t) {\n return \"function\" == typeof t && t.definition.meta.type && r[t.definition.meta.type] ? n.push(t.definition.meta.successType ? t.definition.meta.successType : t.definition.meta.type) : \"string\" == typeof t && n.push(t), n;\n }, []);\n n.meta.resolvedTargets = u, u.forEach(function (t) {\n var o = e[t] || [];\n o.push(r[n.meta.type]), e[t] = o;\n });\n });\n }(m, f, u, y), {\n i: u,\n l: f,\n p: a,\n m: v,\n h: l,\n s: S,\n o: o,\n v: d,\n S: p,\n u: y,\n t: h\n };\n }(n.model, n.initialState, n.injections, n.references),\n o = e.m;\n\n return {\n i: e.i,\n l: e.l,\n m: o,\n s: e.s,\n o: e.o,\n v: e.v,\n S: e.S,\n u: e.u,\n t: e.t,\n reducer: r(I(t, e.p, e.h, o))\n };\n }({\n disableImmer: v,\n initialState: n,\n injections: h,\n model: H,\n reducerEnhancer: Y,\n references: G\n });\n },\n nn = u || (a && \"undefined\" != typeof window && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\n name: T\n }) : e.compose);\n\n Z(y);\n var tn = [F(G)].concat(g, [o, J(G), L(G), W]);\n P && tn.push(function () {\n return function () {\n return function (n) {\n null != n && K.push(n);\n };\n };\n });\n var rn = e.createStore(G.internals.reducer, G.internals.o, nn.apply(void 0, [e.applyMiddleware.apply(void 0, tn)].concat(d)));\n rn.subscribe(function () {\n G.internals.s.isInReducer = !1;\n }), G.dispatch = rn.dispatch, G.getState = rn.getState;\n\n var en = function () {\n Object.keys(rn.dispatch).forEach(function (n) {\n delete rn.dispatch[n];\n }), Object.keys(G.internals.l).forEach(function (n) {\n rn.dispatch[n] = G.internals.l[n];\n });\n };\n\n en();\n\n var on = function (n) {\n var t = rn.getState();\n n && delete t[n], Z(t), rn.replaceReducer(G.internals.reducer), X(G.internals.o), en();\n },\n un = E(Q, X, G);\n\n return Object.assign(rn, {\n addModel: function (n, t) {\n H[n] && \"production\" !== process.env.NODE_ENV && (console.warn('easy-peasy: The store model already contains a model definition for \"' + n + '\"'), rn.removeModel(n)), H[n] = t, on();\n var r = E(Q, X, G, n);\n return {\n resolveRehydration: function () {\n return r;\n }\n };\n },\n clearMockedActions: function () {\n K = [];\n },\n getActions: function () {\n return G.internals.l;\n },\n getListeners: function () {\n return G.internals.S;\n },\n getMockedActions: function () {\n return [].concat(K);\n },\n persist: {\n clear: U.clear,\n flush: U.flush,\n resolveRehydration: function () {\n return un;\n }\n },\n reconfigure: function (n) {\n H = B(n), on();\n },\n removeModel: function (n) {\n H[n] ? (delete H[n], on(n)) : \"production\" !== process.env.NODE_ENV && console.warn('easy-peasy: The store model does not contain a model definition for \"' + n + '\"');\n }\n });\n }\n\n exports.StoreProvider = function (n) {\n return r.createElement(a.Provider, {\n value: n.store\n }, n.children);\n }, exports.action = b, exports.actionOn = function (n, t) {\n var r;\n return (r = {}).$ep_aO = !0, r.fn = t, r.targetResolver = n, r;\n }, exports.computed = function (n, t) {\n var r, e;\n return \"function\" == typeof t ? ((e = {}).$ep_c = !0, e.fn = t, e.stateResolvers = n, e) : ((r = {}).$ep_c = !0, r.fn = n, r.stateResolvers = j, r);\n }, exports.createContextStore = function (n, e) {\n void 0 === e && (e = {});\n var o = e.injections,\n u = void 0 === o ? {} : o,\n i = t.createContext();\n return {\n Provider: function (t) {\n var o = t.children,\n c = t.runtimeModel,\n a = t.injections;\n\n if (null != a) {\n var s = \"function\" == typeof a ? a(u) : a,\n v = Object.keys(s);\n Object.keys(u).filter(function (n) {\n return !v.includes(n);\n }).forEach(function (n) {\n delete u[n];\n }), Object.assign(u, s);\n }\n\n var l = f$1.useMemoOne(function () {\n return B(\"function\" == typeof n ? n(c) : n, w({}, e, {\n originalInjections: u\n }));\n }, []);\n return r.createElement(i.Provider, {\n value: l\n }, o);\n },\n useStore: function () {\n return t.useContext(i);\n },\n useStoreState: v(i),\n useStoreActions: d(i),\n useStoreDispatch: y(i),\n useStoreRehydrated: S(i)\n };\n }, exports.createStore = B, exports.createTransform = function (n, t, r) {\n void 0 === r && (r = {});\n var e = r.whitelist || null,\n o = r.blacklist || null;\n\n function u(n) {\n return !(!e || -1 !== e.indexOf(n)) || !(!o || -1 === o.indexOf(n));\n }\n\n return {\n in: function (t, r, e) {\n return !u(r) && n ? n(t, r, e) : t;\n },\n out: function (n, r, e) {\n return !u(r) && t ? t(n, r, e) : n;\n }\n };\n }, exports.createTypedHooks = function () {\n return {\n useStoreActions: p,\n useStoreDispatch: m,\n useStoreState: l,\n useStoreRehydrated: g,\n useStore: h\n };\n }, exports.debug = function (n) {\n return u$1.isDraft(n) ? u$1.current(n) : n;\n }, exports.generic = function (n) {\n return n;\n }, exports.memo = function (n, t) {\n return i(t)(n);\n }, exports.persist = function (n, t) {\n var r;\n return \"undefined\" == typeof window ? n : w({}, n, ((r = {}).$ep_p = t, r));\n }, exports.reducer = function (n) {\n var t;\n return (t = {}).$ep_r = !0, t.fn = n, t;\n }, exports.thunk = function (n) {\n var t;\n return (t = {}).$ep_t = !0, t.fn = n, t;\n }, exports.thunkOn = function (n, t) {\n var r;\n return (r = {}).$ep_tO = !0, r.fn = t, r.targetResolver = n, r;\n }, exports.unstable_effectOn = function (n, t) {\n var r;\n return (r = {}).$ep_e = !0, r.dependencyResolvers = n, r.fn = t, r;\n }, exports.useLocalStore = function (n, r, e) {\n void 0 === r && (r = []);\n var o = t.useRef(),\n u = t.useRef(),\n i = f$1.useMemoOne(function () {\n var t = null != o.current ? o.current.getState() : void 0,\n r = null != e ? e(t, u.current) : void 0,\n i = B(n(t), r);\n return u.current = r, o.current = i, i;\n }, r),\n c = t.useState(function () {\n return i.getState();\n }),\n a = c[0],\n s = c[1];\n return t.useEffect(function () {\n return i.subscribe(function () {\n var n = i.getState();\n a !== n && s(n);\n });\n }, [i]), [a, i.getActions(), i];\n }, exports.useStore = h, exports.useStoreActions = p, exports.useStoreDispatch = m, exports.useStoreRehydrated = g, exports.useStoreState = l;\n});\nvar typedHooks = easyPeasy.createTypedHooks();\nvar useStoreActions = typedHooks.useStoreActions;\nvar useStoreDispatch = typedHooks.useStoreDispatch;\nvar useStoreState = typedHooks.useStoreState;\nvar useStore = typedHooks.useStore;\n\nvar isInputDOMNode = function (e) {\n var target = e === null || e === void 0 ? void 0 : e.target;\n return ['INPUT', 'SELECT', 'TEXTAREA', 'BUTTON'].includes(target === null || target === void 0 ? void 0 : target.nodeName) || (target === null || target === void 0 ? void 0 : target.hasAttribute('contenteditable'));\n};\n\nvar getDimensions = function (node) {\n return {\n width: node.offsetWidth,\n height: node.offsetHeight\n };\n};\n\nvar clamp = function (val, min, max) {\n if (min === void 0) {\n min = 0;\n }\n\n if (max === void 0) {\n max = 1;\n }\n\n return Math.min(Math.max(val, min), max);\n};\n\nvar clampPosition = function (position, extent) {\n return {\n x: clamp(position.x, extent[0][0], extent[1][0]),\n y: clamp(position.y, extent[0][1], extent[1][1])\n };\n};\n\nvar useKeyPress = function (keyCode) {\n var _a = useState(false),\n keyPressed = _a[0],\n setKeyPressed = _a[1];\n\n useEffect(function () {\n if (typeof keyCode !== 'undefined') {\n var downHandler_1 = function (event) {\n if (!isInputDOMNode(event) && (event.key === keyCode || event.keyCode === keyCode)) {\n event.preventDefault();\n setKeyPressed(true);\n }\n };\n\n var upHandler_1 = function (event) {\n if (!isInputDOMNode(event) && (event.key === keyCode || event.keyCode === keyCode)) {\n setKeyPressed(false);\n }\n };\n\n var resetHandler_1 = function () {\n return setKeyPressed(false);\n };\n\n window.addEventListener('keydown', downHandler_1);\n window.addEventListener('keyup', upHandler_1);\n window.addEventListener('blur', resetHandler_1);\n return function () {\n window.removeEventListener('keydown', downHandler_1);\n window.removeEventListener('keyup', upHandler_1);\n window.removeEventListener('blur', resetHandler_1);\n };\n }\n }, [keyCode, setKeyPressed]);\n return keyPressed;\n};\n\nvar isEdge = function (element) {\n return 'id' in element && 'source' in element && 'target' in element;\n};\n\nvar isNode = function (element) {\n return 'id' in element && !('source' in element) && !('target' in element);\n};\n\nvar getOutgoers = function (node, elements) {\n if (!isNode(node)) {\n return [];\n }\n\n var outgoerIds = elements.filter(function (e) {\n return isEdge(e) && e.source === node.id;\n }).map(function (e) {\n return e.target;\n });\n return elements.filter(function (e) {\n return outgoerIds.includes(e.id);\n });\n};\n\nvar getIncomers = function (node, elements) {\n if (!isNode(node)) {\n return [];\n }\n\n var incomersIds = elements.filter(function (e) {\n return isEdge(e) && e.target === node.id;\n }).map(function (e) {\n return e.source;\n });\n return elements.filter(function (e) {\n return incomersIds.includes(e.id);\n });\n};\n\nvar removeElements = function (elementsToRemove, elements) {\n var nodeIdsToRemove = elementsToRemove.map(function (n) {\n return n.id;\n });\n return elements.filter(function (element) {\n var edgeElement = element;\n return !(nodeIdsToRemove.includes(element.id) || nodeIdsToRemove.includes(edgeElement.target) || nodeIdsToRemove.includes(edgeElement.source));\n });\n};\n\nvar getEdgeId = function (_a) {\n var source = _a.source,\n sourceHandle = _a.sourceHandle,\n target = _a.target,\n targetHandle = _a.targetHandle;\n return \"reactflow__edge-\" + source + sourceHandle + \"-\" + target + targetHandle;\n};\n\nvar connectionExists = function (edge, elements) {\n return elements.some(function (el) {\n return isEdge(el) && el.source === edge.source && el.target === edge.target && (el.sourceHandle === edge.sourceHandle || !el.sourceHandle && !edge.sourceHandle) && (el.targetHandle === edge.targetHandle || !el.targetHandle && !edge.targetHandle);\n });\n};\n\nvar addEdge = function (edgeParams, elements) {\n if (!edgeParams.source || !edgeParams.target) {\n console.warn(\"Can't create edge. An edge needs a source and a target.\");\n return elements;\n }\n\n var edge;\n\n if (isEdge(edgeParams)) {\n edge = __assign({}, edgeParams);\n } else {\n edge = __assign(__assign({}, edgeParams), {\n id: getEdgeId(edgeParams)\n });\n }\n\n if (connectionExists(edge, elements)) {\n return elements;\n }\n\n return elements.concat(edge);\n};\n\nvar updateEdge = function (oldEdge, newConnection, elements) {\n if (!newConnection.source || !newConnection.target) {\n console.warn(\"Can't create new edge. An edge needs a source and a target.\");\n return elements;\n }\n\n var foundEdge = elements.find(function (e) {\n return isEdge(e) && e.id === oldEdge.id;\n });\n\n if (!foundEdge) {\n console.warn(\"The old edge with id=\" + oldEdge.id + \" does not exist.\");\n return elements;\n } // Remove old edge and create the new edge with parameters of old edge.\n\n\n var edge = __assign(__assign({}, oldEdge), {\n id: getEdgeId(newConnection),\n source: newConnection.source,\n target: newConnection.target,\n sourceHandle: newConnection.sourceHandle,\n targetHandle: newConnection.targetHandle\n });\n\n return elements.filter(function (e) {\n return e.id !== oldEdge.id;\n }).concat(edge);\n};\n\nvar pointToRendererPoint = function (_a, _b, snapToGrid, _c) {\n var x = _a.x,\n y = _a.y;\n var tx = _b[0],\n ty = _b[1],\n tScale = _b[2];\n var snapX = _c[0],\n snapY = _c[1];\n var position = {\n x: (x - tx) / tScale,\n y: (y - ty) / tScale\n };\n\n if (snapToGrid) {\n return {\n x: snapX * Math.round(position.x / snapX),\n y: snapY * Math.round(position.y / snapY)\n };\n }\n\n return position;\n};\n\nvar onLoadProject = function (currentStore) {\n return function (position) {\n var _a = currentStore.getState(),\n transform = _a.transform,\n snapToGrid = _a.snapToGrid,\n snapGrid = _a.snapGrid;\n\n return pointToRendererPoint(position, transform, snapToGrid, snapGrid);\n };\n};\n\nvar parseElement = function (element, nodeExtent) {\n if (!element.id) {\n throw new Error('All nodes and edges need to have an id.');\n }\n\n if (isEdge(element)) {\n return __assign(__assign({}, element), {\n source: element.source.toString(),\n target: element.target.toString(),\n sourceHandle: element.sourceHandle ? element.sourceHandle.toString() : null,\n targetHandle: element.targetHandle ? element.targetHandle.toString() : null,\n id: element.id.toString(),\n type: element.type || 'default'\n });\n }\n\n return __assign(__assign({}, element), {\n id: element.id.toString(),\n type: element.type || 'default',\n __rf: {\n position: clampPosition(element.position, nodeExtent),\n width: null,\n height: null,\n handleBounds: {},\n isDragging: false\n }\n });\n};\n\nvar getBoundsOfBoxes = function (box1, box2) {\n return {\n x: Math.min(box1.x, box2.x),\n y: Math.min(box1.y, box2.y),\n x2: Math.max(box1.x2, box2.x2),\n y2: Math.max(box1.y2, box2.y2)\n };\n};\n\nvar rectToBox = function (_a) {\n var x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height;\n return {\n x: x,\n y: y,\n x2: x + width,\n y2: y + height\n };\n};\n\nvar boxToRect = function (_a) {\n var x = _a.x,\n y = _a.y,\n x2 = _a.x2,\n y2 = _a.y2;\n return {\n x: x,\n y: y,\n width: x2 - x,\n height: y2 - y\n };\n};\n\nvar getBoundsofRects = function (rect1, rect2) {\n return boxToRect(getBoundsOfBoxes(rectToBox(rect1), rectToBox(rect2)));\n};\n\nvar getRectOfNodes = function (nodes) {\n var box = nodes.reduce(function (currBox, _a) {\n var _b = _a.__rf,\n _c = _b === void 0 ? {} : _b,\n position = _c.position,\n width = _c.width,\n height = _c.height;\n\n return getBoundsOfBoxes(currBox, rectToBox(__assign(__assign({}, position), {\n width: width,\n height: height\n })));\n }, {\n x: Infinity,\n y: Infinity,\n x2: -Infinity,\n y2: -Infinity\n });\n return boxToRect(box);\n};\n\nvar getNodesInside = function (nodes, rect, _a, partially) {\n var _b = _a === void 0 ? [0, 0, 1] : _a,\n tx = _b[0],\n ty = _b[1],\n tScale = _b[2];\n\n if (partially === void 0) {\n partially = false;\n }\n\n var rBox = rectToBox({\n x: (rect.x - tx) / tScale,\n y: (rect.y - ty) / tScale,\n width: rect.width / tScale,\n height: rect.height / tScale\n });\n return nodes.filter(function (_a) {\n var _b = _a.__rf,\n position = _b.position,\n width = _b.width,\n height = _b.height,\n isDragging = _b.isDragging;\n var nBox = rectToBox(__assign(__assign({}, position), {\n width: width,\n height: height\n }));\n var xOverlap = Math.max(0, Math.min(rBox.x2, nBox.x2) - Math.max(rBox.x, nBox.x));\n var yOverlap = Math.max(0, Math.min(rBox.y2, nBox.y2) - Math.max(rBox.y, nBox.y));\n var overlappingArea = Math.ceil(xOverlap * yOverlap);\n\n if (width === null || height === null || isDragging) {\n // nodes are initialized with width and height = null\n return true;\n }\n\n if (partially) {\n return overlappingArea > 0;\n }\n\n var area = width * height;\n return overlappingArea >= area;\n });\n};\n\nvar getConnectedEdges = function (nodes, edges) {\n var nodeIds = nodes.map(function (node) {\n return node.id;\n });\n return edges.filter(function (edge) {\n return nodeIds.includes(edge.source) || nodeIds.includes(edge.target);\n });\n};\n\nvar parseElements = function (nodes, edges) {\n return __spreadArrays(nodes.map(function (node) {\n var n = __assign({}, node);\n\n n.position = n.__rf.position;\n delete n.__rf;\n return n;\n }), edges.map(function (e) {\n return __assign({}, e);\n }));\n};\n\nvar onLoadGetElements = function (currentStore) {\n return function () {\n var _a = currentStore.getState(),\n _b = _a.nodes,\n nodes = _b === void 0 ? [] : _b,\n _c = _a.edges,\n edges = _c === void 0 ? [] : _c;\n\n return parseElements(nodes, edges);\n };\n};\n\nvar onLoadToObject = function (currentStore) {\n return function () {\n var _a = currentStore.getState(),\n _b = _a.nodes,\n nodes = _b === void 0 ? [] : _b,\n _c = _a.edges,\n edges = _c === void 0 ? [] : _c,\n transform = _a.transform;\n\n return {\n elements: parseElements(nodes, edges),\n position: [transform[0], transform[1]],\n zoom: transform[2]\n };\n };\n};\n\nvar useGlobalKeyHandler = function (_a) {\n var deleteKeyCode = _a.deleteKeyCode,\n multiSelectionKeyCode = _a.multiSelectionKeyCode,\n onElementsRemove = _a.onElementsRemove;\n var store = useStore();\n var unsetNodesSelection = useStoreActions(function (actions) {\n return actions.unsetNodesSelection;\n });\n var setMultiSelectionActive = useStoreActions(function (actions) {\n return actions.setMultiSelectionActive;\n });\n var resetSelectedElements = useStoreActions(function (actions) {\n return actions.resetSelectedElements;\n });\n var deleteKeyPressed = useKeyPress(deleteKeyCode);\n var multiSelectionKeyPressed = useKeyPress(multiSelectionKeyCode);\n useEffect(function () {\n var _a = store.getState(),\n edges = _a.edges,\n selectedElements = _a.selectedElements;\n\n if (onElementsRemove && deleteKeyPressed && selectedElements) {\n var selectedNodes = selectedElements.filter(isNode);\n var connectedEdges = getConnectedEdges(selectedNodes, edges);\n\n var elementsToRemove = __spreadArrays(selectedElements, connectedEdges).reduce(function (res, item) {\n return res.set(item.id, item);\n }, new Map());\n\n onElementsRemove(Array.from(elementsToRemove.values()));\n unsetNodesSelection();\n resetSelectedElements();\n }\n }, [deleteKeyPressed]);\n useEffect(function () {\n setMultiSelectionActive(multiSelectionKeyPressed);\n }, [multiSelectionKeyPressed]);\n};\n\nvar noop = {\n value: () => {}\n};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || t in _ || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function (t) {\n var name = \"\",\n i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {\n type: t,\n name: name\n };\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function (typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length; // If no callback was specified, return the callback of the given type and name.\n\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n\n return;\n } // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n\n\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function () {\n var copy = {},\n _ = this._;\n\n for (var t in _) copy[t] = _[t].slice();\n\n return new Dispatch(copy);\n },\n call: function (type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function (type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n\n if (callback != null) type.push({\n name: name,\n value: callback\n });\n return type;\n}\n\nvar xhtml = \"http://www.w3.org/1999/xhtml\";\nvar namespaces = {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n\nfunction namespace(name) {\n var prefix = name += \"\",\n i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {\n space: namespaces[prefix],\n local: name\n } : name; // eslint-disable-line no-prototype-builtins\n}\n\nfunction creatorInherit(name) {\n return function () {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml ? document.createElement(name) : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function () {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nfunction creator(name) {\n var fullname = namespace(name);\n return (fullname.local ? creatorFixed : creatorInherit)(fullname);\n}\n\nfunction none() {}\n\nfunction selector(selector) {\n return selector == null ? none : function () {\n return this.querySelector(selector);\n };\n}\n\nfunction selection_select(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n\nfunction array(x) {\n return typeof x === \"object\" && \"length\" in x ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n\nfunction empty() {\n return [];\n}\n\nfunction selectorAll(selector) {\n return selector == null ? empty : function () {\n return this.querySelectorAll(selector);\n };\n}\n\nfunction arrayAll(select) {\n return function () {\n var group = select.apply(this, arguments);\n return group == null ? [] : array(group);\n };\n}\n\nfunction selection_selectAll(select) {\n if (typeof select === \"function\") select = arrayAll(select);else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n\nfunction matcher(selector) {\n return function () {\n return this.matches(selector);\n };\n}\n\nfunction childMatcher(selector) {\n return function (node) {\n return node.matches(selector);\n };\n}\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function () {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nfunction selection_selectChild(match) {\n return this.select(match == null ? childFirst : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return this.children;\n}\n\nfunction childrenFilter(match) {\n return function () {\n return filter.call(this.children, match);\n };\n}\n\nfunction selection_selectChildren(match) {\n return this.selectAll(match == null ? children : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n\nfunction selection_filter(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n\nfunction sparse(update) {\n return new Array(update.length);\n}\n\nfunction selection_enter() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nfunction EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function (child) {\n return this._parent.insertBefore(child, this._next);\n },\n insertBefore: function (child, next) {\n return this._parent.insertBefore(child, next);\n },\n querySelector: function (selector) {\n return this._parent.querySelector(selector);\n },\n querySelectorAll: function (selector) {\n return this._parent.querySelectorAll(selector);\n }\n};\n\nfunction constant(x) {\n return function () {\n return x;\n };\n}\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length; // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n } // Put any non-null nodes that don’t fit into exit.\n\n\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map(),\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue; // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n } // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n\n\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n } // Add any remaining nodes that were not bound to data to exit.\n\n\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && nodeByKeyValue.get(keyValues[i]) === node) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nfunction selection_data(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = array(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key); // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\nfunction selection_exit() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n\nfunction selection_join(onenter, onupdate, onexit) {\n var enter = this.enter(),\n update = this,\n exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove();else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n\nfunction selection_merge(selection) {\n if (!(selection instanceof Selection)) throw new Error(\"invalid merge\");\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n\nfunction selection_order() {\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n\nfunction selection_sort(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n\nfunction selection_call() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n\nfunction selection_nodes() {\n return Array.from(this);\n}\n\nfunction selection_node() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n\nfunction selection_size() {\n let size = 0;\n\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n\n\n return size;\n}\n\nfunction selection_empty() {\n return !this.node();\n}\n\nfunction selection_each(callback) {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n\nfunction attrRemove(name) {\n return function () {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function () {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function () {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function () {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function () {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function () {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nfunction selection_attr(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local ? node.getAttributeNS(fullname.space, fullname.local) : node.getAttribute(fullname);\n }\n\n return this.each((value == null ? fullname.local ? attrRemoveNS : attrRemove : typeof value === \"function\" ? fullname.local ? attrFunctionNS : attrFunction : fullname.local ? attrConstantNS : attrConstant)(fullname, value));\n}\n\nfunction defaultView(node) {\n return node.ownerDocument && node.ownerDocument.defaultView || // node is a Node\n node.document && node // node is a Window\n || node.defaultView; // node is a Document\n}\n\nfunction styleRemove(name) {\n return function () {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function () {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function () {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);else this.style.setProperty(name, v, priority);\n };\n}\n\nfunction selection_style(name, value, priority) {\n return arguments.length > 1 ? this.each((value == null ? styleRemove : typeof value === \"function\" ? styleFunction : styleConstant)(name, value, priority == null ? \"\" : priority)) : styleValue(this.node(), name);\n}\n\nfunction styleValue(node, name) {\n return node.style.getPropertyValue(name) || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n\nfunction propertyRemove(name) {\n return function () {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function () {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function () {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];else this[name] = v;\n };\n}\n\nfunction selection_property(name, value) {\n return arguments.length > 1 ? this.each((value == null ? propertyRemove : typeof value === \"function\" ? propertyFunction : propertyConstant)(name, value)) : this.node()[name];\n}\n\nfunction classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function (name) {\n var i = this._names.indexOf(name);\n\n if (i < 0) {\n this._names.push(name);\n\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function (name) {\n var i = this._names.indexOf(name);\n\n if (i >= 0) {\n this._names.splice(i, 1);\n\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function (name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node),\n i = -1,\n n = names.length;\n\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node),\n i = -1,\n n = names.length;\n\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function () {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function () {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function () {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nfunction selection_classed(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()),\n i = -1,\n n = names.length;\n\n while (++i < n) if (!list.contains(names[i])) return false;\n\n return true;\n }\n\n return this.each((typeof value === \"function\" ? classedFunction : value ? classedTrue : classedFalse)(names, value));\n}\n\nfunction textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function () {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function () {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nfunction selection_text(value) {\n return arguments.length ? this.each(value == null ? textRemove : (typeof value === \"function\" ? textFunction : textConstant)(value)) : this.node().textContent;\n}\n\nfunction htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function () {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function () {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nfunction selection_html(value) {\n return arguments.length ? this.each(value == null ? htmlRemove : (typeof value === \"function\" ? htmlFunction : htmlConstant)(value)) : this.node().innerHTML;\n}\n\nfunction raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nfunction selection_raise() {\n return this.each(raise);\n}\n\nfunction lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nfunction selection_lower() {\n return this.each(lower);\n}\n\nfunction selection_append(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function () {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n\nfunction constantNull() {\n return null;\n}\n\nfunction selection_insert(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function () {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n\nfunction remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nfunction selection_remove() {\n return this.each(remove);\n}\n\nfunction selection_cloneShallow() {\n var clone = this.cloneNode(false),\n parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true),\n parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_clone(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n\nfunction selection_datum(value) {\n return arguments.length ? this.property(\"__data__\", value) : this.node().__data__;\n}\n\nfunction contextListener(listener) {\n return function (event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames$1(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function (t) {\n var name = \"\",\n i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {\n type: t,\n name: name\n };\n });\n}\n\nfunction onRemove(typename) {\n return function () {\n var on = this.__on;\n if (!on) return;\n\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n\n if (++i) on.length = i;else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function () {\n var on = this.__on,\n o,\n listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {\n type: typename.type,\n name: typename.name,\n value: value,\n listener: listener,\n options: options\n };\n if (!on) this.__on = [o];else on.push(o);\n };\n}\n\nfunction selection_on(typename, value, options) {\n var typenames = parseTypenames$1(typename + \"\"),\n i,\n n = typenames.length,\n t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n\n return this;\n}\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function () {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function () {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nfunction selection_dispatch(type, params) {\n return this.each((typeof params === \"function\" ? dispatchFunction : dispatchConstant)(type, params));\n}\n\nfunction* selection_iterator() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n\nvar root$1 = [null];\n\nfunction Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root$1);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nfunction select(selector) {\n return typeof selector === \"string\" ? new Selection([[document.querySelector(selector)]], [document.documentElement]) : new Selection([[selector]], root$1);\n}\n\nfunction sourceEvent(event) {\n let sourceEvent;\n\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n\n return event;\n}\n\nfunction pointer(event, node) {\n event = sourceEvent(event);\n if (node === undefined) node = event.currentTarget;\n\n if (node) {\n var svg = node.ownerSVGElement || node;\n\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n\n return [event.pageX, event.pageY];\n}\n\nfunction noevent(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n\nfunction dragDisable(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, true);\n\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, true);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nfunction yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n\n if (noclick) {\n selection.on(\"click.drag\", noevent, true);\n setTimeout(function () {\n selection.on(\"click.drag\", null);\n }, 0);\n }\n\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n\nfunction define(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nfunction extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n\n for (var key in definition) prototype[key] = definition[key];\n\n return prototype;\n}\n\nfunction Color() {}\n\nvar darker = 0.7;\nvar brighter = 1 / darker;\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\ndefine(Color, color, {\n copy: function (channels) {\n return Object.assign(new this.constructor(), this, channels);\n },\n displayable: function () {\n return this.rgb().displayable();\n },\n hex: color_formatHex,\n // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nfunction color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb(m >> 8 & 0xf | m >> 4 & 0xf0, m >> 4 & 0xf | m & 0xf0, (m & 0xf) << 4 | m & 0xf, 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba(m >> 12 & 0xf | m >> 8 & 0xf0, m >> 8 & 0xf | m >> 4 & 0xf0, m >> 4 & 0xf | m & 0xf0, ((m & 0xf) << 4 | m & 0xf) / 0xff) // #f000\n : null // invalid hex\n ) : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0) : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nfunction rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb();\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nfunction rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nfunction Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function (k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function (k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function () {\n return this;\n },\n displayable: function () {\n return -0.5 <= this.r && this.r < 255.5 && -0.5 <= this.g && this.g < 255.5 && -0.5 <= this.b && this.b < 255.5 && 0 <= this.opacity && this.opacity <= 1;\n },\n hex: rgb_formatHex,\n // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity;\n a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\") + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \" + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \" + Math.max(0, Math.min(255, Math.round(this.b) || 0)) + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;else if (l <= 0 || l >= 1) h = s = NaN;else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nfunction hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl();\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;else if (g === max) h = (b - r) / s + 2;else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n\n return new Hsl(h, s, l, o.opacity);\n}\n\nfunction hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function (k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function (k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function () {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2), hsl2rgb(h, m1, m2), hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2), this.opacity);\n },\n displayable: function () {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && 0 <= this.l && this.l <= 1 && 0 <= this.opacity && this.opacity <= 1;\n },\n formatHsl: function () {\n var a = this.opacity;\n a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\") + (this.h || 0) + \", \" + (this.s || 0) * 100 + \"%, \" + (this.l || 0) * 100 + \"%\" + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n/* From FvD 13.37, CSS Color Module Level 3 */\n\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60 : h < 180 ? m2 : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60 : m1) * 255;\n}\n\nvar constant$1 = x => () => x;\n\nfunction linear(a, d) {\n return function (t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function (t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nfunction gamma(y) {\n return (y = +y) === 1 ? nogamma : function (a, b) {\n return b - a ? exponential(a, b, y) : constant$1(isNaN(a) ? b : a);\n };\n}\n\nfunction nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant$1(isNaN(a) ? b : a);\n}\n\nvar interpolateRgb = function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb$1(start, end) {\n var r = color((start = rgb(start)).r, (end = rgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function (t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb$1.gamma = rgbGamma;\n return rgb$1;\n}(1);\n\nfunction interpolateNumber(a, b) {\n return a = +a, b = +b, function (t) {\n return a * (1 - t) + b * t;\n };\n}\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function () {\n return b;\n };\n}\n\nfunction one(b) {\n return function (t) {\n return b(t) + \"\";\n };\n}\n\nfunction interpolateString(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0,\n // scan index for next number in b\n am,\n // current match in a\n bm,\n // current match in b\n bs,\n // string preceding current number in b, if any\n i = -1,\n // index in s\n s = [],\n // string constants and placeholders\n q = []; // number interpolators\n // Coerce inputs to strings.\n\n a = a + \"\", b = b + \"\"; // Interpolate pairs of numbers in a & b.\n\n while ((am = reA.exec(a)) && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) {\n // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n if ((am = am[0]) === (bm = bm[0])) {\n // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else {\n // interpolate non-matching numbers\n s[++i] = null;\n q.push({\n i: i,\n x: interpolateNumber(am, bm)\n });\n }\n\n bi = reB.lastIndex;\n } // Add remains of b.\n\n\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n } // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n\n\n return s.length < 2 ? q[0] ? one(q[0].x) : zero(b) : (b = q.length, function (t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n\n return s.join(\"\");\n });\n}\n\nvar degrees = 180 / Math.PI;\nvar identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nfunction decompose(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n\nvar svgNode;\n/* eslint-disable no-undef */\n\nfunction parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nfunction parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({\n i: i - 4,\n x: interpolateNumber(xa, xb)\n }, {\n i: i - 2,\n x: interpolateNumber(ya, yb)\n });\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360;else if (b - a > 180) a += 360; // shortest path\n\n q.push({\n i: s.push(pop(s) + \"rotate(\", null, degParen) - 2,\n x: interpolateNumber(a, b)\n });\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({\n i: s.push(pop(s) + \"skewX(\", null, degParen) - 2,\n x: interpolateNumber(a, b)\n });\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({\n i: i - 4,\n x: interpolateNumber(xa, xb)\n }, {\n i: i - 2,\n x: interpolateNumber(ya, yb)\n });\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function (a, b) {\n var s = [],\n // string constants and placeholders\n q = []; // number interpolators\n\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n\n return function (t) {\n var i = -1,\n n = q.length,\n o;\n\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n\n return s.join(\"\");\n };\n };\n}\n\nvar interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nvar interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\nvar epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nvar interpolateZoom = function zoomRho(rho, rho2, rho4) {\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0],\n uy0 = p0[1],\n w0 = p0[2],\n ux1 = p1[0],\n uy1 = p1[1],\n w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S; // Special case for u0 ≅ u1.\n\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n\n i = function (t) {\n return [ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(rho * t * S)];\n };\n } // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n\n i = function (t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / cosh(rho * s + r0)];\n };\n }\n\n i.duration = S * 1000 * rho / Math.SQRT2;\n return i;\n }\n\n zoom.rho = function (_) {\n var _1 = Math.max(1e-3, +_),\n _2 = _1 * _1,\n _4 = _2 * _2;\n\n return zoomRho(_1, _2, _4);\n };\n\n return zoom;\n}(Math.SQRT2, 2, 4);\n\nvar frame = 0,\n // is an animation frame pending?\ntimeout = 0,\n // is a timeout pending?\ninterval = 0,\n // are any timers active?\npokeDelay = 1000,\n // how frequently we check for clock skew\ntaskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function (f) {\n setTimeout(f, 17);\n};\n\nfunction now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nfunction Timer() {\n this._call = this._time = this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function (callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;else taskHead = this;\n taskTail = this;\n }\n\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function () {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nfunction timer(callback, delay, time) {\n var t = new Timer();\n t.restart(callback, delay, time);\n return t;\n}\n\nfunction timerFlush() {\n now(); // Get the current time, if not already set.\n\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n\n var t = taskHead,\n e;\n\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(),\n delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0,\n t1 = taskHead,\n t2,\n time = Infinity;\n\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n\nfunction timeout$1(callback, delay, time) {\n var t = new Timer();\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\nvar CREATED = 0;\nvar SCHEDULED = 1;\nvar STARTING = 2;\nvar STARTED = 3;\nvar RUNNING = 4;\nvar ENDING = 5;\nvar ENDED = 6;\n\nfunction schedule(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index,\n // For context during callback.\n group: group,\n // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nfunction init(node, id) {\n var schedule = get$1(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nfunction set$1(node, id) {\n var schedule = get$1(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nfunction get$1(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween; // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time); // If the elapsed delay is less than our first sleep, start immediately.\n\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o; // If the state is not SCHEDULED, then we previously errored on start.\n\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue; // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n\n if (o.state === STARTED) return timeout$1(start); // Interrupt the active transition, if any.\n\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n } // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n } // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n\n\n timeout$1(function () {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n }); // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n\n self.state = STARTED; // Initialize the tween, deleting null tween.\n\n tween = new Array(n = self.tween.length);\n\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n } // Dispatch the end event.\n\n\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n\n\n delete node.__transition;\n }\n}\n\nfunction interrupt(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n if (!schedules) return;\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) {\n empty = false;\n continue;\n }\n\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n\nfunction selection_interrupt(name) {\n return this.each(function () {\n interrupt(this, name);\n });\n}\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function () {\n var schedule = set$1(this, id),\n tween = schedule.tween; // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error();\n return function () {\n var schedule = set$1(this, id),\n tween = schedule.tween; // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n\n for (var t = {\n name: name,\n value: value\n }, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction transition_tween(name, value) {\n var id = this._id;\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get$1(this.node(), id).tween;\n\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nfunction tweenValue(transition, name, value) {\n var id = transition._id;\n transition.each(function () {\n var schedule = set$1(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n return function (node) {\n return get$1(node, id).value[name];\n };\n}\n\nfunction interpolate(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber : b instanceof color ? interpolateRgb : (c = color(b)) ? (b = c, interpolateRgb) : interpolateString)(a, b);\n}\n\nfunction attrRemove$1(name) {\n return function () {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS$1(fullname) {\n return function () {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant$1(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function () {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null : string0 === string00 ? interpolate0 : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS$1(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function () {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null : string0 === string00 ? interpolate0 : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction$1(name, interpolate, value) {\n var string00, string10, interpolate0;\n return function () {\n var string0,\n value1 = value(this),\n string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS$1(fullname, interpolate, value) {\n var string00, string10, interpolate0;\n return function () {\n var string0,\n value1 = value(this),\n string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction transition_attr(name, value) {\n var fullname = namespace(name),\n i = fullname === \"transform\" ? interpolateTransformSvg : interpolate;\n return this.attrTween(name, typeof value === \"function\" ? (fullname.local ? attrFunctionNS$1 : attrFunction$1)(fullname, i, tweenValue(this, \"attr.\" + name, value)) : value == null ? (fullname.local ? attrRemoveNS$1 : attrRemove$1)(fullname) : (fullname.local ? attrConstantNS$1 : attrConstant$1)(fullname, i, value));\n}\n\nfunction attrInterpolate(name, i) {\n return function (t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function (t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n\n tween._value = value;\n return tween;\n}\n\nfunction transition_attrTween(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error();\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n\nfunction delayFunction(id, value) {\n return function () {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function () {\n init(this, id).delay = value;\n };\n}\n\nfunction transition_delay(value) {\n var id = this._id;\n return arguments.length ? this.each((typeof value === \"function\" ? delayFunction : delayConstant)(id, value)) : get$1(this.node(), id).delay;\n}\n\nfunction durationFunction(id, value) {\n return function () {\n set$1(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function () {\n set$1(this, id).duration = value;\n };\n}\n\nfunction transition_duration(value) {\n var id = this._id;\n return arguments.length ? this.each((typeof value === \"function\" ? durationFunction : durationConstant)(id, value)) : get$1(this.node(), id).duration;\n}\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error();\n return function () {\n set$1(this, id).ease = value;\n };\n}\n\nfunction transition_ease(value) {\n var id = this._id;\n return arguments.length ? this.each(easeConstant(id, value)) : get$1(this.node(), id).ease;\n}\n\nfunction easeVarying(id, value) {\n return function () {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error();\n set$1(this, id).ease = v;\n };\n}\n\nfunction transition_easeVarying(value) {\n if (typeof value !== \"function\") throw new Error();\n return this.each(easeVarying(this._id, value));\n}\n\nfunction transition_filter(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n\nfunction transition_merge(transition) {\n if (transition._id !== this._id) throw new Error();\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function (t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0,\n on1,\n sit = start(name) ? init : set$1;\n return function () {\n var schedule = sit(this, id),\n on = schedule.on; // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n schedule.on = on1;\n };\n}\n\nfunction transition_on(name, listener) {\n var id = this._id;\n return arguments.length < 2 ? get$1(this.node(), id).on.on(name) : this.each(onFunction(id, name, listener));\n}\n\nfunction removeFunction(id) {\n return function () {\n var parent = this.parentNode;\n\n for (var i in this.__transition) if (+i !== id) return;\n\n if (parent) parent.removeChild(this);\n };\n}\n\nfunction transition_remove() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n\nfunction transition_select(select) {\n var name = this._name,\n id = this._id;\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get$1(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n\nfunction transition_selectAll(select) {\n var name = this._name,\n id = this._id;\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get$1(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n\nvar Selection$1 = selection.prototype.constructor;\n\nfunction transition_selection() {\n return new Selection$1(this._groups, this._parents);\n}\n\nfunction styleNull(name, interpolate) {\n var string00, string10, interpolate0;\n return function () {\n var string0 = styleValue(this, name),\n string1 = (this.style.removeProperty(name), styleValue(this, name));\n return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove$1(name) {\n return function () {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant$1(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function () {\n var string0 = styleValue(this, name);\n return string0 === string1 ? null : string0 === string00 ? interpolate0 : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction$1(name, interpolate, value) {\n var string00, string10, interpolate0;\n return function () {\n var string0 = styleValue(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), styleValue(this, name));\n return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0,\n on1,\n listener0,\n key = \"style.\" + name,\n event = \"end.\" + key,\n remove;\n return function () {\n var schedule = set$1(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove$1(name)) : undefined; // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n schedule.on = on1;\n };\n}\n\nfunction transition_style(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransformCss : interpolate;\n return value == null ? this.styleTween(name, styleNull(name, i)).on(\"end.style.\" + name, styleRemove$1(name)) : typeof value === \"function\" ? this.styleTween(name, styleFunction$1(name, i, tweenValue(this, \"style.\" + name, value))).each(styleMaybeRemove(this._id, name)) : this.styleTween(name, styleConstant$1(name, i, value), priority).on(\"end.style.\" + name, null);\n}\n\nfunction styleInterpolate(name, i, priority) {\n return function (t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n\n tween._value = value;\n return tween;\n}\n\nfunction transition_styleTween(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error();\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n\nfunction textConstant$1(value) {\n return function () {\n this.textContent = value;\n };\n}\n\nfunction textFunction$1(value) {\n return function () {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nfunction transition_text(value) {\n return this.tween(\"text\", typeof value === \"function\" ? textFunction$1(tweenValue(this, \"text\", value)) : textConstant$1(value == null ? \"\" : value + \"\"));\n}\n\nfunction textInterpolate(i) {\n return function (t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n\n tween._value = value;\n return tween;\n}\n\nfunction transition_textTween(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error();\n return this.tween(key, textTween(value));\n}\n\nfunction transition_transition() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get$1(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n\nfunction transition_end() {\n var on0,\n on1,\n that = this,\n id = that._id,\n size = that.size();\n return new Promise(function (resolve, reject) {\n var cancel = {\n value: reject\n },\n end = {\n value: function () {\n if (--size === 0) resolve();\n }\n };\n that.each(function () {\n var schedule = set$1(this, id),\n on = schedule.on; // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n\n if (on !== on0) {\n on1 = (on0 = on).copy();\n\n on1._.cancel.push(cancel);\n\n on1._.interrupt.push(cancel);\n\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n }); // The selection was empty, resolve end immediately\n\n if (size === 0) resolve();\n });\n}\n\nvar id = 0;\n\nfunction Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nfunction newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\nTransition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n\nfunction cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n\nvar defaultTiming = {\n time: null,\n // Set on use.\n delay: 0,\n duration: 250,\n ease: cubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n\n return timing;\n}\n\nfunction selection_transition(name) {\n var id, timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n\nvar constant$2 = x => () => x;\n\nfunction ZoomEvent(type, {\n sourceEvent,\n target,\n transform,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {\n value: type,\n enumerable: true,\n configurable: true\n },\n sourceEvent: {\n value: sourceEvent,\n enumerable: true,\n configurable: true\n },\n target: {\n value: target,\n enumerable: true,\n configurable: true\n },\n transform: {\n value: transform,\n enumerable: true,\n configurable: true\n },\n _: {\n value: dispatch\n }\n });\n}\n\nfunction Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function (k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function (x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function (point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function (x) {\n return x * this.k + this.x;\n },\n applyY: function (y) {\n return y * this.k + this.y;\n },\n invert: function (location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function (x) {\n return (x - this.x) / this.k;\n },\n invertY: function (y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function (x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function (y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function () {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\nvar identity$1 = new Transform(1, 0, 0);\n\nfunction nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nfunction noevent$1(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n} // Ignore right-click, since that should open the context menu.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\n\n\nfunction defaultFilter(event) {\n return (!event.ctrlKey || event.type === 'wheel') && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity$1;\n}\n\nfunction defaultWheelDelta(event) {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || \"ontouchstart\" in this;\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1), dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1));\n}\n\nfunction zoom() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchfirst,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0,\n tapDistance = 10;\n\n function zoom(selection) {\n selection.property(\"__zoom\", defaultTransform).on(\"wheel.zoom\", wheeled).on(\"mousedown.zoom\", mousedowned).on(\"dblclick.zoom\", dblclicked).filter(touchable).on(\"touchstart.zoom\", touchstarted).on(\"touchmove.zoom\", touchmoved).on(\"touchend.zoom touchcancel.zoom\", touchended).style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function (collection, transform, point, event) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n\n if (collection !== selection) {\n schedule(collection, transform, point, event);\n } else {\n selection.interrupt().each(function () {\n gesture(this, arguments).event(event).start().zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform).end();\n });\n }\n };\n\n zoom.scaleBy = function (selection, k, p, event) {\n zoom.scaleTo(selection, function () {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p, event);\n };\n\n zoom.scaleTo = function (selection, k, p, event) {\n zoom.transform(selection, function () {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p, event);\n };\n\n zoom.translateBy = function (selection, x, y, event) {\n zoom.transform(selection, function () {\n return constrain(this.__zoom.translate(typeof x === \"function\" ? x.apply(this, arguments) : x, typeof y === \"function\" ? y.apply(this, arguments) : y), extent.apply(this, arguments), translateExtent);\n }, null, event);\n };\n\n zoom.translateTo = function (selection, x, y, p, event) {\n zoom.transform(selection, function () {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity$1.translate(p0[0], p0[1]).scale(t.k).translate(typeof x === \"function\" ? -x.apply(this, arguments) : -x, typeof y === \"function\" ? -y.apply(this, arguments) : -y), e, translateExtent);\n }, p, event);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k,\n y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point, event) {\n transition.on(\"start.zoom\", function () {\n gesture(this, arguments).event(event).start();\n }).on(\"interrupt.zoom end.zoom\", function () {\n gesture(this, arguments).event(event).end();\n }).tween(\"zoom\", function () {\n var that = this,\n args = arguments,\n g = gesture(that, args).event(event),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function (t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else {\n var l = i(t),\n k = w / l[2];\n t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k);\n }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return !clean && that.__zooming || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.sourceEvent = null;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n event: function (event) {\n if (event) this.sourceEvent = event;\n return this;\n },\n start: function () {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n\n return this;\n },\n zoom: function (key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function () {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n\n return this;\n },\n emit: function (type) {\n var d = select(this.that).datum();\n listeners.call(type, this.that, new ZoomEvent(type, {\n sourceEvent: this.sourceEvent,\n target: zoom,\n type,\n transform: this.that.__zoom,\n dispatch: listeners\n }), d);\n }\n };\n\n function wheeled(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, args).event(event),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = pointer(event); // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n\n clearTimeout(g.wheel);\n } // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return; // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent$1(event);\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned(event, ...args) {\n if (touchending || !filter.apply(this, arguments)) return;\n var g = gesture(this, args, true).event(event),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = pointer(event, currentTarget),\n currentTarget = event.currentTarget,\n x0 = event.clientX,\n y0 = event.clientY;\n dragDisable(event.view);\n nopropagation(event);\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved(event) {\n noevent$1(event);\n\n if (!g.moved) {\n var dx = event.clientX - x0,\n dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n\n g.event(event).zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped(event) {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n yesdrag(event.view, g.moved);\n noevent$1(event);\n g.event(event).end();\n }\n }\n\n function dblclicked(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n noevent$1(event);\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event);else select(this).call(zoom.transform, t1, p0, event);\n }\n\n function touchstarted(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, args, event.changedTouches.length === n).event(event),\n started,\n i,\n t,\n p;\n nopropagation(event);\n\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function () {\n touchstarting = null;\n }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length,\n i,\n t,\n p,\n l;\n noevent$1(event);\n\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n\n t = g.that.__zoom;\n\n if (g.touch1) {\n var p0 = g.touch0[0],\n l0 = g.touch0[1],\n p1 = g.touch1[0],\n l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n } else if (g.touch0) p = g.touch0[0], l = g.touch0[1];else return;\n\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length,\n i,\n t;\n nopropagation(event);\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function () {\n touchending = null;\n }, touchDelay);\n\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);else {\n g.end(); // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n\n if (g.taps === 2) {\n t = pointer(t, this);\n\n if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n }\n\n zoom.wheelDelta = function (_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant$2(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function (_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant$2(!!_), zoom) : filter;\n };\n\n zoom.touchable = function (_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant$2(!!_), zoom) : touchable;\n };\n\n zoom.extent = function (_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant$2([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function (_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function (_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function (_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function (_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function (_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function () {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function (_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n zoom.tapDistance = function (_) {\n return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n };\n\n return zoom;\n}\n\nvar useResizeHandler = function (rendererNode) {\n var updateSize = useStoreActions(function (actions) {\n return actions.updateSize;\n });\n useEffect(function () {\n var resizeObserver;\n\n var updateDimensions = function () {\n if (!rendererNode.current) {\n return;\n }\n\n var size = getDimensions(rendererNode.current);\n\n if (size.height === 0 || size.width === 0) {\n console.warn('The React Flow parent container needs a width and a height to render the graph.');\n }\n\n updateSize(size);\n };\n\n updateDimensions();\n window.onresize = updateDimensions;\n\n if (rendererNode.current) {\n resizeObserver = new ResizeObserver(function () {\n return updateDimensions();\n });\n resizeObserver.observe(rendererNode.current);\n }\n\n return function () {\n window.onresize = null;\n\n if (resizeObserver && rendererNode.current) {\n resizeObserver.unobserve(rendererNode.current);\n }\n };\n }, []);\n};\n\nvar Position;\n\n(function (Position) {\n Position[\"Left\"] = \"left\";\n Position[\"Top\"] = \"top\";\n Position[\"Right\"] = \"right\";\n Position[\"Bottom\"] = \"bottom\";\n})(Position || (Position = {}));\n\nvar ArrowHeadType;\n\n(function (ArrowHeadType) {\n ArrowHeadType[\"Arrow\"] = \"arrow\";\n ArrowHeadType[\"ArrowClosed\"] = \"arrowclosed\";\n})(ArrowHeadType || (ArrowHeadType = {}));\n\nvar BackgroundVariant;\n\n(function (BackgroundVariant) {\n BackgroundVariant[\"Lines\"] = \"lines\";\n BackgroundVariant[\"Dots\"] = \"dots\";\n})(BackgroundVariant || (BackgroundVariant = {}));\n\nvar ConnectionMode;\n\n(function (ConnectionMode) {\n ConnectionMode[\"Strict\"] = \"strict\";\n ConnectionMode[\"Loose\"] = \"loose\";\n})(ConnectionMode || (ConnectionMode = {}));\n\nvar ConnectionLineType;\n\n(function (ConnectionLineType) {\n ConnectionLineType[\"Bezier\"] = \"default\";\n ConnectionLineType[\"Straight\"] = \"straight\";\n ConnectionLineType[\"Step\"] = \"step\";\n ConnectionLineType[\"SmoothStep\"] = \"smoothstep\";\n})(ConnectionLineType || (ConnectionLineType = {}));\n\nvar PanOnScrollMode;\n\n(function (PanOnScrollMode) {\n PanOnScrollMode[\"Free\"] = \"free\";\n PanOnScrollMode[\"Vertical\"] = \"vertical\";\n PanOnScrollMode[\"Horizontal\"] = \"horizontal\";\n})(PanOnScrollMode || (PanOnScrollMode = {}));\n\nvar viewChanged = function (prevTransform, eventTransform) {\n return prevTransform.x !== eventTransform.x || prevTransform.y !== eventTransform.y || prevTransform.zoom !== eventTransform.k;\n};\n\nvar eventToFlowTransform = function (eventTransform) {\n return {\n x: eventTransform.x,\n y: eventTransform.y,\n zoom: eventTransform.k\n };\n};\n\nvar ZoomPane = function (_a) {\n var onMove = _a.onMove,\n onMoveStart = _a.onMoveStart,\n onMoveEnd = _a.onMoveEnd,\n _b = _a.zoomOnScroll,\n zoomOnScroll = _b === void 0 ? true : _b,\n _c = _a.zoomOnPinch,\n zoomOnPinch = _c === void 0 ? true : _c,\n _d = _a.panOnScroll,\n panOnScroll = _d === void 0 ? false : _d,\n _e = _a.panOnScrollSpeed,\n panOnScrollSpeed = _e === void 0 ? 0.5 : _e,\n _f = _a.panOnScrollMode,\n panOnScrollMode = _f === void 0 ? PanOnScrollMode.Free : _f,\n _g = _a.zoomOnDoubleClick,\n zoomOnDoubleClick = _g === void 0 ? true : _g,\n selectionKeyPressed = _a.selectionKeyPressed,\n elementsSelectable = _a.elementsSelectable,\n _h = _a.paneMoveable,\n paneMoveable = _h === void 0 ? true : _h,\n _j = _a.defaultPosition,\n defaultPosition = _j === void 0 ? [0, 0] : _j,\n _k = _a.defaultZoom,\n defaultZoom = _k === void 0 ? 1 : _k,\n translateExtent = _a.translateExtent,\n zoomActivationKeyCode = _a.zoomActivationKeyCode,\n children = _a.children;\n var zoomPane = useRef(null);\n var prevTransform = useRef({\n x: 0,\n y: 0,\n zoom: 0\n });\n var store = useStore();\n var d3Zoom = useStoreState(function (s) {\n return s.d3Zoom;\n });\n var d3Selection = useStoreState(function (s) {\n return s.d3Selection;\n });\n var d3ZoomHandler = useStoreState(function (s) {\n return s.d3ZoomHandler;\n });\n var initD3Zoom = useStoreActions(function (actions) {\n return actions.initD3Zoom;\n });\n var updateTransform = useStoreActions(function (actions) {\n return actions.updateTransform;\n });\n var zoomActivationKeyPressed = useKeyPress(zoomActivationKeyCode);\n useResizeHandler(zoomPane);\n useEffect(function () {\n if (zoomPane.current) {\n var state = store.getState();\n var currentTranslateExtent = typeof translateExtent !== 'undefined' ? translateExtent : state.translateExtent;\n var d3ZoomInstance = zoom().scaleExtent([state.minZoom, state.maxZoom]).translateExtent(currentTranslateExtent);\n var selection = select(zoomPane.current).call(d3ZoomInstance);\n var clampedX = clamp(defaultPosition[0], currentTranslateExtent[0][0], currentTranslateExtent[1][0]);\n var clampedY = clamp(defaultPosition[1], currentTranslateExtent[0][1], currentTranslateExtent[1][1]);\n var clampedZoom = clamp(defaultZoom, state.minZoom, state.maxZoom);\n var updatedTransform = identity$1.translate(clampedX, clampedY).scale(clampedZoom);\n d3ZoomInstance.transform(selection, updatedTransform);\n initD3Zoom({\n d3Zoom: d3ZoomInstance,\n d3Selection: selection,\n d3ZoomHandler: selection.on('wheel.zoom'),\n // we need to pass transform because zoom handler is not registered when we set the initial transform\n transform: [clampedX, clampedY, clampedZoom]\n });\n }\n }, []);\n useEffect(function () {\n if (d3Selection && d3Zoom) {\n if (panOnScroll && !zoomActivationKeyPressed) {\n d3Selection.on('wheel', function (event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n var currentZoom = d3Selection.property('__zoom').k || 1;\n\n if (event.ctrlKey && zoomOnPinch) {\n var point = pointer(event); // taken from https://github.com/d3/d3-zoom/blob/master/src/zoom.js\n\n var pinchDelta = -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * 10;\n var zoom_1 = currentZoom * Math.pow(2, pinchDelta);\n d3Zoom.scaleTo(d3Selection, zoom_1, point);\n return;\n } // increase scroll speed in firefox\n // firefox: deltaMode === 1; chrome: deltaMode === 0\n\n\n var deltaNormalize = event.deltaMode === 1 ? 20 : 1;\n var deltaX = panOnScrollMode === PanOnScrollMode.Vertical ? 0 : event.deltaX * deltaNormalize;\n var deltaY = panOnScrollMode === PanOnScrollMode.Horizontal ? 0 : event.deltaY * deltaNormalize;\n d3Zoom.translateBy(d3Selection, -(deltaX / currentZoom) * panOnScrollSpeed, -(deltaY / currentZoom) * panOnScrollSpeed);\n }).on('wheel.zoom', null);\n } else if (typeof d3ZoomHandler !== 'undefined') {\n d3Selection.on('wheel', null).on('wheel.zoom', d3ZoomHandler);\n }\n }\n }, [panOnScroll, panOnScrollMode, d3Selection, d3Zoom, d3ZoomHandler, zoomActivationKeyPressed, zoomOnPinch]);\n useEffect(function () {\n if (d3Zoom) {\n if (selectionKeyPressed) {\n d3Zoom.on('zoom', null);\n } else {\n d3Zoom.on('zoom', function (event) {\n updateTransform([event.transform.x, event.transform.y, event.transform.k]);\n\n if (onMove) {\n var flowTransform = eventToFlowTransform(event.transform);\n onMove(flowTransform);\n }\n });\n }\n }\n }, [selectionKeyPressed, d3Zoom, updateTransform, onMove]);\n useEffect(function () {\n if (d3Zoom) {\n if (onMoveStart) {\n d3Zoom.on('start', function (event) {\n if (viewChanged(prevTransform.current, event.transform)) {\n var flowTransform = eventToFlowTransform(event.transform);\n prevTransform.current = flowTransform;\n onMoveStart(flowTransform);\n }\n });\n } else {\n d3Zoom.on('start', null);\n }\n }\n }, [d3Zoom, onMoveStart]);\n useEffect(function () {\n if (d3Zoom) {\n if (onMoveEnd) {\n d3Zoom.on('end', function (event) {\n if (viewChanged(prevTransform.current, event.transform)) {\n var flowTransform = eventToFlowTransform(event.transform);\n prevTransform.current = flowTransform;\n onMoveEnd(flowTransform);\n }\n });\n } else {\n d3Zoom.on('end', null);\n }\n }\n }, [d3Zoom, onMoveEnd]);\n useEffect(function () {\n if (d3Zoom) {\n d3Zoom.filter(function (event) {\n var zoomScroll = zoomActivationKeyPressed || zoomOnScroll;\n var pinchZoom = zoomOnPinch && event.ctrlKey; // if all interactions are disabled, we prevent all zoom events\n\n if (!paneMoveable && !zoomScroll && !panOnScroll && !zoomOnDoubleClick && !zoomOnPinch) {\n return false;\n } // during a selection we prevent all other interactions\n\n\n if (selectionKeyPressed) {\n return false;\n } // if zoom on double click is disabled, we prevent the double click event\n\n\n if (!zoomOnDoubleClick && event.type === 'dblclick') {\n return false;\n }\n\n if (event.target.closest('.nowheel') && event.type === 'wheel') {\n return false;\n } // when the target element is a node, we still allow zooming\n\n\n if ((event.target.closest('.react-flow__node') || event.target.closest('.react-flow__edgeupdater')) && event.type !== 'wheel') {\n return false;\n } // when the target element is a node selection, we still allow zooming\n\n\n if (event.target.closest('.react-flow__nodesselection') && event.type !== 'wheel') {\n return false;\n }\n\n if (!zoomOnPinch && event.ctrlKey && event.type === 'wheel') {\n return false;\n } // when there is no scroll handling enabled, we prevent all wheel events\n\n\n if (!zoomScroll && !panOnScroll && !pinchZoom && event.type === 'wheel') {\n return false;\n } // if the pane is not movable, we prevent dragging it with the mouse\n\n\n if (!paneMoveable && event.type === 'mousedown') {\n return false;\n } // default filter for d3-zoom\n\n\n return (!event.ctrlKey || event.type === 'wheel') && !event.button;\n });\n }\n }, [d3Zoom, zoomOnScroll, zoomOnPinch, panOnScroll, zoomOnDoubleClick, paneMoveable, selectionKeyPressed, elementsSelectable, zoomActivationKeyPressed]);\n return React.createElement(\"div\", {\n className: \"react-flow__renderer react-flow__zoompane\",\n ref: zoomPane\n }, children);\n};\n/**\r\n * The user selection rectangle gets displayed when a user drags the mouse while pressing shift\r\n */\n\n\nfunction getMousePosition(event) {\n var reactFlowNode = event.target.closest('.react-flow');\n\n if (!reactFlowNode) {\n return;\n }\n\n var containerBounds = reactFlowNode.getBoundingClientRect();\n return {\n x: event.clientX - containerBounds.left,\n y: event.clientY - containerBounds.top\n };\n}\n\nvar SelectionRect = function () {\n var userSelectionRect = useStoreState(function (state) {\n return state.userSelectionRect;\n });\n\n if (!userSelectionRect.draw) {\n return null;\n }\n\n return React.createElement(\"div\", {\n className: \"react-flow__selection\",\n style: {\n width: userSelectionRect.width,\n height: userSelectionRect.height,\n transform: \"translate(\" + userSelectionRect.x + \"px, \" + userSelectionRect.y + \"px)\"\n }\n });\n};\n\nvar UserSelection = memo(function (_a) {\n var selectionKeyPressed = _a.selectionKeyPressed;\n var selectionActive = useStoreState(function (state) {\n return state.selectionActive;\n });\n var elementsSelectable = useStoreState(function (state) {\n return state.elementsSelectable;\n });\n var setUserSelection = useStoreActions(function (actions) {\n return actions.setUserSelection;\n });\n var updateUserSelection = useStoreActions(function (actions) {\n return actions.updateUserSelection;\n });\n var unsetUserSelection = useStoreActions(function (actions) {\n return actions.unsetUserSelection;\n });\n var unsetNodesSelection = useStoreActions(function (actions) {\n return actions.unsetNodesSelection;\n });\n var renderUserSelectionPane = selectionActive || selectionKeyPressed;\n\n if (!elementsSelectable || !renderUserSelectionPane) {\n return null;\n }\n\n var onMouseDown = function (event) {\n var mousePos = getMousePosition(event);\n\n if (!mousePos) {\n return;\n }\n\n setUserSelection(mousePos);\n };\n\n var onMouseMove = function (event) {\n if (!selectionKeyPressed || !selectionActive) {\n return;\n }\n\n var mousePos = getMousePosition(event);\n\n if (!mousePos) {\n return;\n }\n\n updateUserSelection(mousePos);\n };\n\n var onMouseUp = function () {\n return unsetUserSelection();\n };\n\n var onMouseLeave = function () {\n unsetUserSelection();\n unsetNodesSelection();\n };\n\n return React.createElement(\"div\", {\n className: \"react-flow__selectionpane\",\n onMouseDown: onMouseDown,\n onMouseMove: onMouseMove,\n onMouseUp: onMouseUp,\n onMouseLeave: onMouseLeave\n }, React.createElement(SelectionRect, null));\n});\n/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar b$1 = \"function\" === typeof Symbol && Symbol.for,\n c$1 = b$1 ? Symbol.for(\"react.element\") : 60103,\n d$1 = b$1 ? Symbol.for(\"react.portal\") : 60106,\n e$1 = b$1 ? Symbol.for(\"react.fragment\") : 60107,\n f$2 = b$1 ? Symbol.for(\"react.strict_mode\") : 60108,\n g$1 = b$1 ? Symbol.for(\"react.profiler\") : 60114,\n h$1 = b$1 ? Symbol.for(\"react.provider\") : 60109,\n k$1 = b$1 ? Symbol.for(\"react.context\") : 60110,\n l$1 = b$1 ? Symbol.for(\"react.async_mode\") : 60111,\n m$1 = b$1 ? Symbol.for(\"react.concurrent_mode\") : 60111,\n n$1 = b$1 ? Symbol.for(\"react.forward_ref\") : 60112,\n p$1 = b$1 ? Symbol.for(\"react.suspense\") : 60113,\n q$1 = b$1 ? Symbol.for(\"react.suspense_list\") : 60120,\n r$1 = b$1 ? Symbol.for(\"react.memo\") : 60115,\n t$1 = b$1 ? Symbol.for(\"react.lazy\") : 60116,\n v$1 = b$1 ? Symbol.for(\"react.block\") : 60121,\n w$1 = b$1 ? Symbol.for(\"react.fundamental\") : 60117,\n x$1 = b$1 ? Symbol.for(\"react.responder\") : 60118,\n y$1 = b$1 ? Symbol.for(\"react.scope\") : 60119;\n\nfunction z$1(a) {\n if (\"object\" === typeof a && null !== a) {\n var u = a.$$typeof;\n\n switch (u) {\n case c$1:\n switch (a = a.type, a) {\n case l$1:\n case m$1:\n case e$1:\n case g$1:\n case f$2:\n case p$1:\n return a;\n\n default:\n switch (a = a && a.$$typeof, a) {\n case k$1:\n case n$1:\n case t$1:\n case r$1:\n case h$1:\n return a;\n\n default:\n return u;\n }\n\n }\n\n case d$1:\n return u;\n }\n }\n}\n\nfunction A$1(a) {\n return z$1(a) === m$1;\n}\n\nvar AsyncMode = l$1;\nvar ConcurrentMode = m$1;\nvar ContextConsumer = k$1;\nvar ContextProvider = h$1;\nvar Element = c$1;\nvar ForwardRef = n$1;\nvar Fragment = e$1;\nvar Lazy = t$1;\nvar Memo = r$1;\nvar Portal = d$1;\nvar Profiler = g$1;\nvar StrictMode = f$2;\nvar Suspense = p$1;\n\nvar isAsyncMode = function (a) {\n return A$1(a) || z$1(a) === l$1;\n};\n\nvar isConcurrentMode = A$1;\n\nvar isContextConsumer = function (a) {\n return z$1(a) === k$1;\n};\n\nvar isContextProvider = function (a) {\n return z$1(a) === h$1;\n};\n\nvar isElement = function (a) {\n return \"object\" === typeof a && null !== a && a.$$typeof === c$1;\n};\n\nvar isForwardRef = function (a) {\n return z$1(a) === n$1;\n};\n\nvar isFragment = function (a) {\n return z$1(a) === e$1;\n};\n\nvar isLazy = function (a) {\n return z$1(a) === t$1;\n};\n\nvar isMemo = function (a) {\n return z$1(a) === r$1;\n};\n\nvar isPortal = function (a) {\n return z$1(a) === d$1;\n};\n\nvar isProfiler = function (a) {\n return z$1(a) === g$1;\n};\n\nvar isStrictMode = function (a) {\n return z$1(a) === f$2;\n};\n\nvar isSuspense = function (a) {\n return z$1(a) === p$1;\n};\n\nvar isValidElementType = function (a) {\n return \"string\" === typeof a || \"function\" === typeof a || a === e$1 || a === m$1 || a === g$1 || a === f$2 || a === p$1 || a === q$1 || \"object\" === typeof a && null !== a && (a.$$typeof === t$1 || a.$$typeof === r$1 || a.$$typeof === h$1 || a.$$typeof === k$1 || a.$$typeof === n$1 || a.$$typeof === w$1 || a.$$typeof === x$1 || a.$$typeof === y$1 || a.$$typeof === v$1);\n};\n\nvar typeOf = z$1;\nvar reactIs_production_min = {\n AsyncMode: AsyncMode,\n ConcurrentMode: ConcurrentMode,\n ContextConsumer: ContextConsumer,\n ContextProvider: ContextProvider,\n Element: Element,\n ForwardRef: ForwardRef,\n Fragment: Fragment,\n Lazy: Lazy,\n Memo: Memo,\n Portal: Portal,\n Profiler: Profiler,\n StrictMode: StrictMode,\n Suspense: Suspense,\n isAsyncMode: isAsyncMode,\n isConcurrentMode: isConcurrentMode,\n isContextConsumer: isContextConsumer,\n isContextProvider: isContextProvider,\n isElement: isElement,\n isForwardRef: isForwardRef,\n isFragment: isFragment,\n isLazy: isLazy,\n isMemo: isMemo,\n isPortal: isPortal,\n isProfiler: isProfiler,\n isStrictMode: isStrictMode,\n isSuspense: isSuspense,\n isValidElementType: isValidElementType,\n typeOf: typeOf\n};\n/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar reactIs_development = createCommonjsModule(function (module, exports) {\n if (process.env.NODE_ENV !== \"production\") {\n (function () {\n // The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n // nor polyfill, then a plain number is used for performance.\n var hasSymbol = typeof Symbol === 'function' && Symbol.for;\n var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\n var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\n var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\n var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\n var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\n var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\n var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n // (unstable) APIs that have been removed. Can we remove the symbols?\n\n var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\n var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\n var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\n var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\n var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\n var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\n var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\n var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\n var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\n var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\n var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\n function isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n }\n\n function typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n } // AsyncMode is deprecated along with isAsyncMode\n\n\n var AsyncMode = REACT_ASYNC_MODE_TYPE;\n var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\n var ContextConsumer = REACT_CONTEXT_TYPE;\n var ContextProvider = REACT_PROVIDER_TYPE;\n var Element = REACT_ELEMENT_TYPE;\n var ForwardRef = REACT_FORWARD_REF_TYPE;\n var Fragment = REACT_FRAGMENT_TYPE;\n var Lazy = REACT_LAZY_TYPE;\n var Memo = REACT_MEMO_TYPE;\n var Portal = REACT_PORTAL_TYPE;\n var Profiler = REACT_PROFILER_TYPE;\n var StrictMode = REACT_STRICT_MODE_TYPE;\n var Suspense = REACT_SUSPENSE_TYPE;\n var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\n function isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n }\n\n function isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n }\n\n function isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n }\n\n function isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n }\n\n function isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n\n function isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n }\n\n function isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n }\n\n function isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n }\n\n function isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n }\n\n function isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n }\n\n function isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n }\n\n function isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n }\n\n function isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n }\n\n exports.AsyncMode = AsyncMode;\n exports.ConcurrentMode = ConcurrentMode;\n exports.ContextConsumer = ContextConsumer;\n exports.ContextProvider = ContextProvider;\n exports.Element = Element;\n exports.ForwardRef = ForwardRef;\n exports.Fragment = Fragment;\n exports.Lazy = Lazy;\n exports.Memo = Memo;\n exports.Portal = Portal;\n exports.Profiler = Profiler;\n exports.StrictMode = StrictMode;\n exports.Suspense = Suspense;\n exports.isAsyncMode = isAsyncMode;\n exports.isConcurrentMode = isConcurrentMode;\n exports.isContextConsumer = isContextConsumer;\n exports.isContextProvider = isContextProvider;\n exports.isElement = isElement;\n exports.isForwardRef = isForwardRef;\n exports.isFragment = isFragment;\n exports.isLazy = isLazy;\n exports.isMemo = isMemo;\n exports.isPortal = isPortal;\n exports.isProfiler = isProfiler;\n exports.isStrictMode = isStrictMode;\n exports.isSuspense = isSuspense;\n exports.isValidElementType = isValidElementType;\n exports.typeOf = typeOf;\n })();\n }\n});\nvar reactIs = createCommonjsModule(function (module) {\n if (process.env.NODE_ENV === 'production') {\n module.exports = reactIs_production_min;\n } else {\n module.exports = reactIs_development;\n }\n});\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n/* eslint-disable no-unused-vars */\n\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n if (val === null || val === undefined) {\n throw new TypeError('Object.assign cannot be called with null or undefined');\n }\n\n return Object(val);\n}\n\nfunction shouldUseNative() {\n try {\n if (!Object.assign) {\n return false;\n } // Detect buggy property enumeration order in older V8 versions.\n // https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\n\n var test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\n test1[5] = 'de';\n\n if (Object.getOwnPropertyNames(test1)[0] === '5') {\n return false;\n } // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\n\n var test2 = {};\n\n for (var i = 0; i < 10; i++) {\n test2['_' + String.fromCharCode(i)] = i;\n }\n\n var order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n return test2[n];\n });\n\n if (order2.join('') !== '0123456789') {\n return false;\n } // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\n\n var test3 = {};\n 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n test3[letter] = letter;\n });\n\n if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') {\n return false;\n }\n\n return true;\n } catch (err) {\n // We don't expect any of the above to throw, but better to be safe.\n return false;\n }\n}\n\nvar objectAssign = shouldUseNative() ? Object.assign : function (target, source) {\n var from;\n var to = toObject(target);\n var symbols;\n\n for (var s = 1; s < arguments.length; s++) {\n from = Object(arguments[s]);\n\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n\n if (getOwnPropertySymbols) {\n symbols = getOwnPropertySymbols(from);\n\n for (var i = 0; i < symbols.length; i++) {\n if (propIsEnumerable.call(from, symbols[i])) {\n to[symbols[i]] = from[symbols[i]];\n }\n }\n }\n }\n\n return to;\n};\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\nvar ReactPropTypesSecret_1 = ReactPropTypesSecret;\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar printWarning = function () {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret$1 = ReactPropTypesSecret_1;\n var loggedTypeFailures = {};\n var has = Function.call.bind(Object.prototype.hasOwnProperty);\n\n printWarning = function (text) {\n var message = 'Warning: ' + text;\n\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\n\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error; // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret$1);\n } catch (ex) {\n error = ex;\n }\n\n if (error && !(error instanceof Error)) {\n printWarning((componentName || 'React class') + ': type specification of ' + location + ' `' + typeSpecName + '` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).');\n }\n\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n var stack = getStack ? getStack() : '';\n printWarning('Failed ' + location + ' type: ' + error.message + (stack != null ? stack : ''));\n }\n }\n }\n }\n}\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\n\n\ncheckPropTypes.resetWarningCache = function () {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n};\n\nvar checkPropTypes_1 = checkPropTypes;\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar has$1 = Function.call.bind(Object.prototype.hasOwnProperty);\n\nvar printWarning$1 = function () {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning$1 = function (text) {\n var message = 'Warning: ' + text;\n\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nvar factoryWithTypeCheckers = function (isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n\n var ANONYMOUS = '<>'; // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker\n };\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n\n /*eslint-disable no-self-compare*/\n\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n\n\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n } // Make `instanceof Error` still work for returned errors.\n\n\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret_1) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error('Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use `PropTypes.checkPropTypes()` to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n\n if (!manualPropTypeCallCache[cacheKey] && // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3) {\n printWarning$1('You are manually calling a React.PropTypes validation ' + 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' + 'and will throw in the standalone `prop-types` package. ' + 'You may be seeing this warning due to a third-party PropTypes ' + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.');\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n\n var propValue = props[propName];\n\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret_1);\n\n if (error instanceof Error) {\n return error;\n }\n }\n\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n\n if (!reactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning$1('Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).');\n } else {\n printWarning$1('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n\n if (type === 'symbol') {\n return String(value);\n }\n\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n\n var propValue = props[propName];\n var propType = getPropType(propValue);\n\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n\n for (var key in propValue) {\n if (has$1(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n\n if (error instanceof Error) {\n return error;\n }\n }\n }\n\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning$1('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n\n if (typeof checker !== 'function') {\n printWarning$1('Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.');\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret_1) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n\n if (!checker) {\n continue;\n }\n\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n\n if (error) {\n return error;\n }\n }\n\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n } // We need to check all keys in case some are required but missing from\n // props.\n\n\n var allKeys = objectAssign({}, props[propName], shapeTypes);\n\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n\n if (!checker) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') + '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' '));\n }\n\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n\n if (error) {\n return error;\n }\n }\n\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n\n case 'boolean':\n return !propValue;\n\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n } // falsy value can't be a Symbol\n\n\n if (!propValue) {\n return false;\n } // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n\n\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n } // Fallback for non-spec compliant Symbols which are polyfilled.\n\n\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n } // Equivalent of `typeof` but with special handling for array and regexp.\n\n\n function getPropType(propValue) {\n var propType = typeof propValue;\n\n if (Array.isArray(propValue)) {\n return 'array';\n }\n\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n\n return propType;\n } // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n\n\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n\n var propType = getPropType(propValue);\n\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n\n return propType;\n } // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n\n\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n\n default:\n return type;\n }\n } // Returns class name of the object, if any.\n\n\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes_1;\n ReactPropTypes.resetWarningCache = checkPropTypes_1.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n return ReactPropTypes;\n};\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\nfunction emptyFunction() {}\n\nfunction emptyFunctionWithReset() {}\n\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nvar factoryWithThrowingShims = function () {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret_1) {\n // It is still safe when called from React.\n return;\n }\n\n var err = new Error('Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use PropTypes.checkPropTypes() to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n err.name = 'Invariant Violation';\n throw err;\n }\n\n shim.isRequired = shim;\n\n function getShim() {\n return shim;\n } // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n\n\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n ReactPropTypes.PropTypes = ReactPropTypes;\n return ReactPropTypes;\n};\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\nvar propTypes = createCommonjsModule(function (module) {\n if (process.env.NODE_ENV !== 'production') {\n var ReactIs = reactIs; // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n\n var throwOnDirectAccess = true;\n module.exports = factoryWithTypeCheckers(ReactIs.isElement, throwOnDirectAccess);\n } else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = factoryWithThrowingShims();\n }\n});\n/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n\nvar classnames = createCommonjsModule(function (module) {\n /* global define */\n (function () {\n var hasOwn = {}.hasOwnProperty;\n\n function classNames() {\n var classes = [];\n\n for (var i = 0; i < arguments.length; i++) {\n var arg = arguments[i];\n if (!arg) continue;\n var argType = typeof arg;\n\n if (argType === 'string' || argType === 'number') {\n classes.push(arg);\n } else if (Array.isArray(arg) && arg.length) {\n var inner = classNames.apply(null, arg);\n\n if (inner) {\n classes.push(inner);\n }\n } else if (argType === 'object') {\n for (var key in arg) {\n if (hasOwn.call(arg, key) && arg[key]) {\n classes.push(key);\n }\n }\n }\n }\n\n return classes.join(' ');\n }\n\n if (module.exports) {\n classNames.default = classNames;\n module.exports = classNames;\n } else {\n window.classNames = classNames;\n }\n })();\n});\nvar findInArray_1 = findInArray;\nvar isFunction_1 = isFunction;\nvar isNum_1 = isNum;\nvar int_1 = int;\nvar dontSetMe_1 = dontSetMe; // @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\n\nfunction findInArray(array\n/*: Array | TouchList*/\n, callback\n/*: Function*/\n)\n/*: any*/\n{\n for (var i = 0, length = array.length; i < length; i++) {\n if (callback.apply(callback, [array[i], i, array])) return array[i];\n }\n}\n\nfunction isFunction(func\n/*: any*/\n)\n/*: boolean %checks*/\n{\n return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\n\nfunction isNum(num\n/*: any*/\n)\n/*: boolean %checks*/\n{\n return typeof num === 'number' && !isNaN(num);\n}\n\nfunction int(a\n/*: string*/\n)\n/*: number*/\n{\n return parseInt(a, 10);\n}\n\nfunction dontSetMe(props\n/*: Object*/\n, propName\n/*: string*/\n, componentName\n/*: string*/\n) {\n if (props[propName]) {\n return new Error(\"Invalid prop \".concat(propName, \" passed to \").concat(componentName, \" - do not set this, set it on the child.\"));\n }\n}\n\nvar shims = /*#__PURE__*/Object.defineProperty({\n findInArray: findInArray_1,\n isFunction: isFunction_1,\n isNum: isNum_1,\n int: int_1,\n dontSetMe: dontSetMe_1\n}, '__esModule', {\n value: true\n});\nvar getPrefix_1 = createCommonjsModule(function (module, exports) {\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.getPrefix = getPrefix;\n exports.browserPrefixToKey = browserPrefixToKey;\n exports.browserPrefixToStyle = browserPrefixToStyle;\n exports.default = void 0;\n var prefixes = ['Moz', 'Webkit', 'O', 'ms'];\n\n function getPrefix()\n /*: string*/\n {\n var prop\n /*: string*/\n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform'; // Checking specifically for 'window.document' is for pseudo-browser server-side\n // environments that define 'window' as the global context.\n // E.g. React-rails (see https://github.com/reactjs/react-rails/pull/84)\n\n if (typeof window === 'undefined' || typeof window.document === 'undefined') return '';\n var style = window.document.documentElement.style;\n if (prop in style) return '';\n\n for (var i = 0; i < prefixes.length; i++) {\n if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];\n }\n\n return '';\n }\n\n function browserPrefixToKey(prop\n /*: string*/\n , prefix\n /*: string*/\n )\n /*: string*/\n {\n return prefix ? \"\".concat(prefix).concat(kebabToTitleCase(prop)) : prop;\n }\n\n function browserPrefixToStyle(prop\n /*: string*/\n , prefix\n /*: string*/\n )\n /*: string*/\n {\n return prefix ? \"-\".concat(prefix.toLowerCase(), \"-\").concat(prop) : prop;\n }\n\n function kebabToTitleCase(str\n /*: string*/\n )\n /*: string*/\n {\n var out = '';\n var shouldCapitalize = true;\n\n for (var i = 0; i < str.length; i++) {\n if (shouldCapitalize) {\n out += str[i].toUpperCase();\n shouldCapitalize = false;\n } else if (str[i] === '-') {\n shouldCapitalize = true;\n } else {\n out += str[i];\n }\n }\n\n return out;\n } // Default export is the prefix itself, like 'Moz', 'Webkit', etc\n // Note that you may have to re-test for certain things; for instance, Chrome 50\n // can handle unprefixed `transform`, but not unprefixed `user-select`\n\n\n var _default = getPrefix();\n\n exports.default = _default;\n});\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nvar matchesSelector_1 = matchesSelector;\nvar matchesSelectorAndParentsTo_1 = matchesSelectorAndParentsTo;\nvar addEvent_1 = addEvent;\nvar removeEvent_1 = removeEvent;\nvar outerHeight_1 = outerHeight;\nvar outerWidth_1 = outerWidth;\nvar innerHeight_1 = innerHeight;\nvar innerWidth_1 = innerWidth;\nvar offsetXYFromParent_1 = offsetXYFromParent;\nvar createCSSTransform_1 = createCSSTransform;\nvar createSVGTransform_1 = createSVGTransform;\nvar getTranslation_1 = getTranslation;\nvar getTouch_1 = getTouch;\nvar getTouchIdentifier_1 = getTouchIdentifier;\nvar addUserSelectStyles_1 = addUserSelectStyles;\nvar removeUserSelectStyles_1 = removeUserSelectStyles;\nvar addClassName_1 = addClassName;\nvar removeClassName_1 = removeClassName;\n\nvar _getPrefix = _interopRequireWildcard(getPrefix_1);\n\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n\n return cache;\n}\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n\n var cache = _getRequireWildcardCache();\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj.default = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nfunction ownKeys$1(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys$1(Object(source), true).forEach(function (key) {\n _defineProperty$1(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$1(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _defineProperty$1(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar matchesSelectorFunc = '';\n\nfunction matchesSelector(el\n/*: Node*/\n, selector\n/*: string*/\n)\n/*: boolean*/\n{\n if (!matchesSelectorFunc) {\n matchesSelectorFunc = (0, shims.findInArray)(['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'], function (method) {\n // $FlowIgnore: Doesn't think elements are indexable\n return (0, shims.isFunction)(el[method]);\n });\n } // Might not be found entirely (not an Element?) - in that case, bail\n // $FlowIgnore: Doesn't think elements are indexable\n\n\n if (!(0, shims.isFunction)(el[matchesSelectorFunc])) return false; // $FlowIgnore: Doesn't think elements are indexable\n\n return el[matchesSelectorFunc](selector);\n} // Works up the tree to the draggable itself attempting to match selector.\n\n\nfunction matchesSelectorAndParentsTo(el\n/*: Node*/\n, selector\n/*: string*/\n, baseNode\n/*: Node*/\n)\n/*: boolean*/\n{\n var node = el;\n\n do {\n if (matchesSelector(node, selector)) return true;\n if (node === baseNode) return false;\n node = node.parentNode;\n } while (node);\n\n return false;\n}\n\nfunction addEvent(el\n/*: ?Node*/\n, event\n/*: string*/\n, handler\n/*: Function*/\n, inputOptions\n/*: Object*/\n)\n/*: void*/\n{\n if (!el) return;\n\n var options = _objectSpread({\n capture: true\n }, inputOptions);\n\n if (el.addEventListener) {\n el.addEventListener(event, handler, options);\n } else if (el.attachEvent) {\n el.attachEvent('on' + event, handler);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = handler;\n }\n}\n\nfunction removeEvent(el\n/*: ?Node*/\n, event\n/*: string*/\n, handler\n/*: Function*/\n, inputOptions\n/*: Object*/\n)\n/*: void*/\n{\n if (!el) return;\n\n var options = _objectSpread({\n capture: true\n }, inputOptions);\n\n if (el.removeEventListener) {\n el.removeEventListener(event, handler, options);\n } else if (el.detachEvent) {\n el.detachEvent('on' + event, handler);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = null;\n }\n}\n\nfunction outerHeight(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetTop which is including margin. See getBoundPosition\n var height = node.clientHeight;\n var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height += (0, shims.int)(computedStyle.borderTopWidth);\n height += (0, shims.int)(computedStyle.borderBottomWidth);\n return height;\n}\n\nfunction outerWidth(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetLeft which is including margin. See getBoundPosition\n var width = node.clientWidth;\n var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width += (0, shims.int)(computedStyle.borderLeftWidth);\n width += (0, shims.int)(computedStyle.borderRightWidth);\n return width;\n}\n\nfunction innerHeight(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n var height = node.clientHeight;\n var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height -= (0, shims.int)(computedStyle.paddingTop);\n height -= (0, shims.int)(computedStyle.paddingBottom);\n return height;\n}\n\nfunction innerWidth(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n var width = node.clientWidth;\n var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width -= (0, shims.int)(computedStyle.paddingLeft);\n width -= (0, shims.int)(computedStyle.paddingRight);\n return width;\n} // Get from offsetParent\n\n\nfunction offsetXYFromParent(evt\n/*: {clientX: number, clientY: number}*/\n, offsetParent\n/*: HTMLElement*/\n, scale\n/*: number*/\n)\n/*: ControlPosition*/\n{\n var isBody = offsetParent === offsetParent.ownerDocument.body;\n var offsetParentRect = isBody ? {\n left: 0,\n top: 0\n } : offsetParent.getBoundingClientRect();\n var x = (evt.clientX + offsetParent.scrollLeft - offsetParentRect.left) / scale;\n var y = (evt.clientY + offsetParent.scrollTop - offsetParentRect.top) / scale;\n return {\n x: x,\n y: y\n };\n}\n\nfunction createCSSTransform(controlPos\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n)\n/*: Object*/\n{\n var translation = getTranslation(controlPos, positionOffset, 'px');\n return _defineProperty$1({}, (0, _getPrefix.browserPrefixToKey)('transform', _getPrefix.default), translation);\n}\n\nfunction createSVGTransform(controlPos\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n)\n/*: string*/\n{\n var translation = getTranslation(controlPos, positionOffset, '');\n return translation;\n}\n\nfunction getTranslation(_ref2, positionOffset\n/*: PositionOffsetControlPosition*/\n, unitSuffix\n/*: string*/\n)\n/*: string*/\n{\n var x = _ref2.x,\n y = _ref2.y;\n var translation = \"translate(\".concat(x).concat(unitSuffix, \",\").concat(y).concat(unitSuffix, \")\");\n\n if (positionOffset) {\n var defaultX = \"\".concat(typeof positionOffset.x === 'string' ? positionOffset.x : positionOffset.x + unitSuffix);\n var defaultY = \"\".concat(typeof positionOffset.y === 'string' ? positionOffset.y : positionOffset.y + unitSuffix);\n translation = \"translate(\".concat(defaultX, \", \").concat(defaultY, \")\") + translation;\n }\n\n return translation;\n}\n\nfunction getTouch(e\n/*: MouseTouchEvent*/\n, identifier\n/*: number*/\n)\n/*: ?{clientX: number, clientY: number}*/\n{\n return e.targetTouches && (0, shims.findInArray)(e.targetTouches, function (t) {\n return identifier === t.identifier;\n }) || e.changedTouches && (0, shims.findInArray)(e.changedTouches, function (t) {\n return identifier === t.identifier;\n });\n}\n\nfunction getTouchIdentifier(e\n/*: MouseTouchEvent*/\n)\n/*: ?number*/\n{\n if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier;\n if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier;\n} // User-select Hacks:\n//\n// Useful for preventing blue highlights all over everything when dragging.\n// Note we're passing `document` b/c we could be iframed\n\n\nfunction addUserSelectStyles(doc\n/*: ?Document*/\n) {\n if (!doc) return;\n var styleEl = doc.getElementById('react-draggable-style-el');\n\n if (!styleEl) {\n styleEl = doc.createElement('style');\n styleEl.type = 'text/css';\n styleEl.id = 'react-draggable-style-el';\n styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {all: inherit;}\\n';\n styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {all: inherit;}\\n';\n doc.getElementsByTagName('head')[0].appendChild(styleEl);\n }\n\n if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection');\n}\n\nfunction removeUserSelectStyles(doc\n/*: ?Document*/\n) {\n if (!doc) return;\n\n try {\n if (doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection'); // $FlowIgnore: IE\n\n if (doc.selection) {\n // $FlowIgnore: IE\n doc.selection.empty();\n } else {\n // Remove selection caused by scroll, unless it's a focused input\n // (we use doc.defaultView in case we're in an iframe)\n var selection = (doc.defaultView || window).getSelection();\n\n if (selection && selection.type !== 'Caret') {\n selection.removeAllRanges();\n }\n }\n } catch (e) {// probably IE\n }\n}\n\nfunction addClassName(el\n/*: HTMLElement*/\n, className\n/*: string*/\n) {\n if (el.classList) {\n el.classList.add(className);\n } else {\n if (!el.className.match(new RegExp(\"(?:^|\\\\s)\".concat(className, \"(?!\\\\S)\")))) {\n el.className += \" \".concat(className);\n }\n }\n}\n\nfunction removeClassName(el\n/*: HTMLElement*/\n, className\n/*: string*/\n) {\n if (el.classList) {\n el.classList.remove(className);\n } else {\n el.className = el.className.replace(new RegExp(\"(?:^|\\\\s)\".concat(className, \"(?!\\\\S)\"), 'g'), '');\n }\n}\n\nvar domFns = /*#__PURE__*/Object.defineProperty({\n matchesSelector: matchesSelector_1,\n matchesSelectorAndParentsTo: matchesSelectorAndParentsTo_1,\n addEvent: addEvent_1,\n removeEvent: removeEvent_1,\n outerHeight: outerHeight_1,\n outerWidth: outerWidth_1,\n innerHeight: innerHeight_1,\n innerWidth: innerWidth_1,\n offsetXYFromParent: offsetXYFromParent_1,\n createCSSTransform: createCSSTransform_1,\n createSVGTransform: createSVGTransform_1,\n getTranslation: getTranslation_1,\n getTouch: getTouch_1,\n getTouchIdentifier: getTouchIdentifier_1,\n addUserSelectStyles: addUserSelectStyles_1,\n removeUserSelectStyles: removeUserSelectStyles_1,\n addClassName: addClassName_1,\n removeClassName: removeClassName_1\n}, '__esModule', {\n value: true\n});\nvar getBoundPosition_1 = getBoundPosition;\nvar snapToGrid_1 = snapToGrid;\nvar canDragX_1 = canDragX;\nvar canDragY_1 = canDragY;\nvar getControlPosition_1 = getControlPosition;\nvar createCoreData_1 = createCoreData;\nvar createDraggableData_1 = createDraggableData;\n\nfunction getBoundPosition(draggable\n/*: Draggable*/\n, x\n/*: number*/\n, y\n/*: number*/\n)\n/*: [number, number]*/\n{\n // If no bounds, short-circuit and move on\n if (!draggable.props.bounds) return [x, y]; // Clone new bounds\n\n var bounds = draggable.props.bounds;\n bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);\n var node = findDOMNode(draggable);\n\n if (typeof bounds === 'string') {\n var ownerDocument = node.ownerDocument;\n var ownerWindow = ownerDocument.defaultView;\n var boundNode;\n\n if (bounds === 'parent') {\n boundNode = node.parentNode;\n } else {\n boundNode = ownerDocument.querySelector(bounds);\n }\n\n if (!(boundNode instanceof ownerWindow.HTMLElement)) {\n throw new Error('Bounds selector \"' + bounds + '\" could not find an element.');\n }\n\n var nodeStyle = ownerWindow.getComputedStyle(node);\n var boundNodeStyle = ownerWindow.getComputedStyle(boundNode); // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.\n\n bounds = {\n left: -node.offsetLeft + (0, shims.int)(boundNodeStyle.paddingLeft) + (0, shims.int)(nodeStyle.marginLeft),\n top: -node.offsetTop + (0, shims.int)(boundNodeStyle.paddingTop) + (0, shims.int)(nodeStyle.marginTop),\n right: (0, domFns.innerWidth)(boundNode) - (0, domFns.outerWidth)(node) - node.offsetLeft + (0, shims.int)(boundNodeStyle.paddingRight) - (0, shims.int)(nodeStyle.marginRight),\n bottom: (0, domFns.innerHeight)(boundNode) - (0, domFns.outerHeight)(node) - node.offsetTop + (0, shims.int)(boundNodeStyle.paddingBottom) - (0, shims.int)(nodeStyle.marginBottom)\n };\n } // Keep x and y below right and bottom limits...\n\n\n if ((0, shims.isNum)(bounds.right)) x = Math.min(x, bounds.right);\n if ((0, shims.isNum)(bounds.bottom)) y = Math.min(y, bounds.bottom); // But above left and top limits.\n\n if ((0, shims.isNum)(bounds.left)) x = Math.max(x, bounds.left);\n if ((0, shims.isNum)(bounds.top)) y = Math.max(y, bounds.top);\n return [x, y];\n}\n\nfunction snapToGrid(grid\n/*: [number, number]*/\n, pendingX\n/*: number*/\n, pendingY\n/*: number*/\n)\n/*: [number, number]*/\n{\n var x = Math.round(pendingX / grid[0]) * grid[0];\n var y = Math.round(pendingY / grid[1]) * grid[1];\n return [x, y];\n}\n\nfunction canDragX(draggable\n/*: Draggable*/\n)\n/*: boolean*/\n{\n return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n}\n\nfunction canDragY(draggable\n/*: Draggable*/\n)\n/*: boolean*/\n{\n return draggable.props.axis === 'both' || draggable.props.axis === 'y';\n} // Get {x, y} positions from event.\n\n\nfunction getControlPosition(e\n/*: MouseTouchEvent*/\n, touchIdentifier\n/*: ?number*/\n, draggableCore\n/*: DraggableCore*/\n)\n/*: ?ControlPosition*/\n{\n var touchObj = typeof touchIdentifier === 'number' ? (0, domFns.getTouch)(e, touchIdentifier) : null;\n if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch\n\n var node = findDOMNode(draggableCore); // User can provide an offsetParent if desired.\n\n var offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body;\n return (0, domFns.offsetXYFromParent)(touchObj || e, offsetParent, draggableCore.props.scale);\n} // Create an data object exposed by 's events\n\n\nfunction createCoreData(draggable\n/*: DraggableCore*/\n, x\n/*: number*/\n, y\n/*: number*/\n)\n/*: DraggableData*/\n{\n var state = draggable.state;\n var isStart = !(0, shims.isNum)(state.lastX);\n var node = findDOMNode(draggable);\n\n if (isStart) {\n // If this is our first move, use the x and y as last coords.\n return {\n node: node,\n deltaX: 0,\n deltaY: 0,\n lastX: x,\n lastY: y,\n x: x,\n y: y\n };\n } else {\n // Otherwise calculate proper values.\n return {\n node: node,\n deltaX: x - state.lastX,\n deltaY: y - state.lastY,\n lastX: state.lastX,\n lastY: state.lastY,\n x: x,\n y: y\n };\n }\n} // Create an data exposed by 's events\n\n\nfunction createDraggableData(draggable\n/*: Draggable*/\n, coreData\n/*: DraggableData*/\n)\n/*: DraggableData*/\n{\n var scale = draggable.props.scale;\n return {\n node: coreData.node,\n x: draggable.state.x + coreData.deltaX / scale,\n y: draggable.state.y + coreData.deltaY / scale,\n deltaX: coreData.deltaX / scale,\n deltaY: coreData.deltaY / scale,\n lastX: draggable.state.x,\n lastY: draggable.state.y\n };\n} // A lot faster than stringify/parse\n\n\nfunction cloneBounds(bounds\n/*: Bounds*/\n)\n/*: Bounds*/\n{\n return {\n left: bounds.left,\n top: bounds.top,\n right: bounds.right,\n bottom: bounds.bottom\n };\n}\n\nfunction findDOMNode(draggable\n/*: Draggable | DraggableCore*/\n)\n/*: HTMLElement*/\n{\n var node = draggable.findDOMNode();\n\n if (!node) {\n throw new Error(': Unmounted during event!');\n } // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME\n\n\n return node;\n}\n\nvar positionFns = /*#__PURE__*/Object.defineProperty({\n getBoundPosition: getBoundPosition_1,\n snapToGrid: snapToGrid_1,\n canDragX: canDragX_1,\n canDragY: canDragY_1,\n getControlPosition: getControlPosition_1,\n createCoreData: createCoreData_1,\n createDraggableData: createDraggableData_1\n}, '__esModule', {\n value: true\n});\nvar _default = log;\n/*eslint no-console:0*/\n\nfunction log() {}\n\nvar log_1 = /*#__PURE__*/Object.defineProperty({\n default: _default\n}, '__esModule', {\n value: true\n});\nvar DraggableCore_1 = createCommonjsModule(function (module, exports) {\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.default = void 0;\n\n var React$1 = _interopRequireWildcard(React);\n\n var _propTypes = _interopRequireDefault(propTypes);\n\n var _reactDom = _interopRequireDefault(require$$2$1);\n\n var _log = _interopRequireDefault(log_1);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n\n return cache;\n }\n\n function _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n\n var cache = _getRequireWildcardCache();\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj.default = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n }\n\n function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n }\n\n function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n\n function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n }\n\n function _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function () {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n }\n\n function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n }\n\n function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n }\n\n function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n }\n\n function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n } // Simple abstraction for dragging events names.\n\n\n var eventsFor = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n stop: 'touchend'\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n stop: 'mouseup'\n }\n }; // Default to mouse events.\n\n var dragEventFor = eventsFor.mouse;\n /*:: type DraggableCoreState = {\n dragging: boolean,\n lastX: number,\n lastY: number,\n touchIdentifier: ?number\n };*/\n\n /*:: export type DraggableData = {\n node: HTMLElement,\n x: number, y: number,\n deltaX: number, deltaY: number,\n lastX: number, lastY: number,\n };*/\n\n /*:: export type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void;*/\n\n /*:: export type ControlPosition = {x: number, y: number};*/\n\n /*:: export type PositionOffsetControlPosition = {x: number|string, y: number|string};*/\n\n /*:: export type DraggableCoreProps = {\n allowAnyClick: boolean,\n cancel: string,\n children: ReactElement,\n disabled: boolean,\n enableUserSelectHack: boolean,\n offsetParent: HTMLElement,\n grid: [number, number],\n handle: string,\n nodeRef?: ?React.ElementRef,\n onStart: DraggableEventHandler,\n onDrag: DraggableEventHandler,\n onStop: DraggableEventHandler,\n onMouseDown: (e: MouseEvent) => void,\n scale: number,\n };*/\n //\n // Define .\n //\n // is for advanced usage of . It maintains minimal internal state so it can\n // work well with libraries that require more control over the element.\n //\n\n var DraggableCore = /*#__PURE__*/function (_React$Component) {\n _inherits(DraggableCore, _React$Component);\n\n var _super = _createSuper(DraggableCore);\n\n function DraggableCore() {\n var _this;\n\n _classCallCheck(this, DraggableCore);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n dragging: false,\n // Used while dragging to determine deltas.\n lastX: NaN,\n lastY: NaN,\n touchIdentifier: null\n });\n\n _defineProperty(_assertThisInitialized(_this), \"mounted\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"handleDragStart\", function (e) {\n // Make it possible to attach event handlers on top of this one.\n _this.props.onMouseDown(e); // Only accept left-clicks.\n\n\n if (!_this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false; // Get nodes. Be sure to grab relative document (could be iframed)\n\n var thisNode = _this.findDOMNode();\n\n if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) {\n throw new Error(' not mounted on DragStart!');\n }\n\n var ownerDocument = thisNode.ownerDocument; // Short circuit if handle or cancel prop was provided and selector doesn't match.\n\n if (_this.props.disabled || !(e.target instanceof ownerDocument.defaultView.Node) || _this.props.handle && !(0, domFns.matchesSelectorAndParentsTo)(e.target, _this.props.handle, thisNode) || _this.props.cancel && (0, domFns.matchesSelectorAndParentsTo)(e.target, _this.props.cancel, thisNode)) {\n return;\n } // Prevent scrolling on mobile devices, like ipad/iphone.\n // Important that this is after handle/cancel.\n\n\n if (e.type === 'touchstart') e.preventDefault(); // Set touch identifier in component state if this is a touch event. This allows us to\n // distinguish between individual touches on multitouch screens by identifying which\n // touchpoint was set to this element.\n\n var touchIdentifier = (0, domFns.getTouchIdentifier)(e);\n\n _this.setState({\n touchIdentifier: touchIdentifier\n }); // Get the current drag point from the event. This is used as the offset.\n\n\n var position = (0, positionFns.getControlPosition)(e, touchIdentifier, _assertThisInitialized(_this));\n if (position == null) return; // not possible but satisfies flow\n\n var x = position.x,\n y = position.y; // Create an event object with all the data parents need to make a decision here.\n\n var coreEvent = (0, positionFns.createCoreData)(_assertThisInitialized(_this), x, y);\n (0, _log.default)('DraggableCore: handleDragStart: %j', coreEvent); // Call event handler. If it returns explicit false, cancel.\n\n (0, _log.default)('calling', _this.props.onStart);\n\n var shouldUpdate = _this.props.onStart(e, coreEvent);\n\n if (shouldUpdate === false || _this.mounted === false) return; // Add a style to the body to disable user-select. This prevents text from\n // being selected all over the page.\n\n if (_this.props.enableUserSelectHack) (0, domFns.addUserSelectStyles)(ownerDocument); // Initiate dragging. Set the current x and y as offsets\n // so we know how much we've moved during the drag. This allows us\n // to drag elements around even if they have been moved, without issue.\n\n _this.setState({\n dragging: true,\n lastX: x,\n lastY: y\n }); // Add events to the document directly so we catch when the user's mouse/touch moves outside of\n // this element. We use different events depending on whether or not we have detected that this\n // is a touch-capable device.\n\n\n (0, domFns.addEvent)(ownerDocument, dragEventFor.move, _this.handleDrag);\n (0, domFns.addEvent)(ownerDocument, dragEventFor.stop, _this.handleDragStop);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleDrag\", function (e) {\n // Get the current drag point from the event. This is used as the offset.\n var position = (0, positionFns.getControlPosition)(e, _this.state.touchIdentifier, _assertThisInitialized(_this));\n if (position == null) return;\n var x = position.x,\n y = position.y; // Snap to grid if prop has been provided\n\n if (Array.isArray(_this.props.grid)) {\n var deltaX = x - _this.state.lastX,\n deltaY = y - _this.state.lastY;\n\n var _snapToGrid = (0, positionFns.snapToGrid)(_this.props.grid, deltaX, deltaY);\n\n var _snapToGrid2 = _slicedToArray(_snapToGrid, 2);\n\n deltaX = _snapToGrid2[0];\n deltaY = _snapToGrid2[1];\n if (!deltaX && !deltaY) return; // skip useless drag\n\n x = _this.state.lastX + deltaX, y = _this.state.lastY + deltaY;\n }\n\n var coreEvent = (0, positionFns.createCoreData)(_assertThisInitialized(_this), x, y);\n (0, _log.default)('DraggableCore: handleDrag: %j', coreEvent); // Call event handler. If it returns explicit false, trigger end.\n\n var shouldUpdate = _this.props.onDrag(e, coreEvent);\n\n if (shouldUpdate === false || _this.mounted === false) {\n try {\n // $FlowIgnore\n _this.handleDragStop(new MouseEvent('mouseup'));\n } catch (err) {\n // Old browsers\n var event = document.createEvent('MouseEvents')\n /*: any*/\n ; // I see why this insanity was deprecated\n // $FlowIgnore\n\n event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n\n _this.handleDragStop(event);\n }\n\n return;\n }\n\n _this.setState({\n lastX: x,\n lastY: y\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleDragStop\", function (e) {\n if (!_this.state.dragging) return;\n var position = (0, positionFns.getControlPosition)(e, _this.state.touchIdentifier, _assertThisInitialized(_this));\n if (position == null) return;\n var x = position.x,\n y = position.y;\n var coreEvent = (0, positionFns.createCoreData)(_assertThisInitialized(_this), x, y); // Call event handler\n\n var shouldContinue = _this.props.onStop(e, coreEvent);\n\n if (shouldContinue === false || _this.mounted === false) return false;\n\n var thisNode = _this.findDOMNode();\n\n if (thisNode) {\n // Remove user-select hack\n if (_this.props.enableUserSelectHack) (0, domFns.removeUserSelectStyles)(thisNode.ownerDocument);\n }\n\n (0, _log.default)('DraggableCore: handleDragStop: %j', coreEvent); // Reset the el.\n\n _this.setState({\n dragging: false,\n lastX: NaN,\n lastY: NaN\n });\n\n if (thisNode) {\n // Remove event handlers\n (0, _log.default)('DraggableCore: Removing handlers');\n (0, domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.move, _this.handleDrag);\n (0, domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.stop, _this.handleDragStop);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseDown\", function (e) {\n dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse\n\n return _this.handleDragStart(e);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseUp\", function (e) {\n dragEventFor = eventsFor.mouse;\n return _this.handleDragStop(e);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onTouchStart\", function (e) {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n return _this.handleDragStart(e);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onTouchEnd\", function (e) {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n return _this.handleDragStop(e);\n });\n\n return _this;\n }\n\n _createClass(DraggableCore, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.mounted = true; // Touch handlers must be added with {passive: false} to be cancelable.\n // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n\n var thisNode = this.findDOMNode();\n\n if (thisNode) {\n (0, domFns.addEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {\n passive: false\n });\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.mounted = false; // Remove any leftover event handlers. Remove both touch and mouse handlers in case\n // some browser quirk caused a touch event to fire during a mouse move, or vice versa.\n\n var thisNode = this.findDOMNode();\n\n if (thisNode) {\n var ownerDocument = thisNode.ownerDocument;\n (0, domFns.removeEvent)(ownerDocument, eventsFor.mouse.move, this.handleDrag);\n (0, domFns.removeEvent)(ownerDocument, eventsFor.touch.move, this.handleDrag);\n (0, domFns.removeEvent)(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);\n (0, domFns.removeEvent)(ownerDocument, eventsFor.touch.stop, this.handleDragStop);\n (0, domFns.removeEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {\n passive: false\n });\n if (this.props.enableUserSelectHack) (0, domFns.removeUserSelectStyles)(ownerDocument);\n }\n } // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find\n // the underlying DOM node ourselves. See the README for more information.\n\n }, {\n key: \"findDOMNode\",\n value: function findDOMNode()\n /*: ?HTMLElement*/\n {\n return this.props.nodeRef ? this.props.nodeRef.current : _reactDom.default.findDOMNode(this);\n }\n }, {\n key: \"render\",\n value: function render() {\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return React$1.cloneElement(React$1.Children.only(this.props.children), {\n // Note: mouseMove handler is attached to document so it will still function\n // when the user drags quickly and leaves the bounds of the element.\n onMouseDown: this.onMouseDown,\n onMouseUp: this.onMouseUp,\n // onTouchStart is added on `componentDidMount` so they can be added with\n // {passive: false}, which allows it to cancel. See \n // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n onTouchEnd: this.onTouchEnd\n });\n }\n }]);\n\n return DraggableCore;\n }(React$1.Component);\n\n exports.default = DraggableCore;\n\n _defineProperty(DraggableCore, \"displayName\", 'DraggableCore');\n\n _defineProperty(DraggableCore, \"propTypes\", {\n /**\n * `allowAnyClick` allows dragging using any mouse button.\n * By default, we only accept the left button.\n *\n * Defaults to `false`.\n */\n allowAnyClick: _propTypes.default.bool,\n\n /**\n * `disabled`, if true, stops the from dragging. All handlers,\n * with the exception of `onMouseDown`, will not fire.\n */\n disabled: _propTypes.default.bool,\n\n /**\n * By default, we add 'user-select:none' attributes to the document body\n * to prevent ugly text selection during drag. If this is causing problems\n * for your app, set this to `false`.\n */\n enableUserSelectHack: _propTypes.default.bool,\n\n /**\n * `offsetParent`, if set, uses the passed DOM node to compute drag offsets\n * instead of using the parent node.\n */\n offsetParent: function offsetParent(props\n /*: DraggableCoreProps*/\n , propName\n /*: $Keys*/\n ) {\n if (props[propName] && props[propName].nodeType !== 1) {\n throw new Error('Draggable\\'s offsetParent must be a DOM Node.');\n }\n },\n\n /**\n * `grid` specifies the x and y that dragging should snap to.\n */\n grid: _propTypes.default.arrayOf(_propTypes.default.number),\n\n /**\n * `handle` specifies a selector to be used as the handle that initiates drag.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
\n *
Click me to drag
\n *
This is some other content
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n handle: _propTypes.default.string,\n\n /**\n * `cancel` specifies a selector to be used to prevent drag initialization.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return(\n * \n *
\n *
You can't drag from here
\n *
Dragging here works fine
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n cancel: _propTypes.default.string,\n\n /* If running in React Strict mode, ReactDOM.findDOMNode() is deprecated.\n * Unfortunately, in order for to work properly, we need raw access\n * to the underlying DOM node. If you want to avoid the warning, pass a `nodeRef`\n * as in this example:\n *\n * function MyComponent() {\n * const nodeRef = React.useRef(null);\n * return (\n * \n *
Example Target
\n *
\n * );\n * }\n *\n * This can be used for arbitrarily nested components, so long as the ref ends up\n * pointing to the actual child DOM node and not a custom component.\n */\n nodeRef: _propTypes.default.object,\n\n /**\n * Called when dragging starts.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onStart: _propTypes.default.func,\n\n /**\n * Called while dragging.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onDrag: _propTypes.default.func,\n\n /**\n * Called when dragging stops.\n * If this function returns the boolean false, the drag will remain active.\n */\n onStop: _propTypes.default.func,\n\n /**\n * A workaround option which can be passed if onMouseDown needs to be accessed,\n * since it'll always be blocked (as there is internal use of onMouseDown)\n */\n onMouseDown: _propTypes.default.func,\n\n /**\n * `scale`, if set, applies scaling while dragging an element\n */\n scale: _propTypes.default.number,\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: shims.dontSetMe,\n style: shims.dontSetMe,\n transform: shims.dontSetMe\n });\n\n _defineProperty(DraggableCore, \"defaultProps\", {\n allowAnyClick: false,\n // by default only accept left click\n cancel: null,\n disabled: false,\n enableUserSelectHack: true,\n offsetParent: null,\n handle: null,\n grid: null,\n transform: null,\n onStart: function onStart() {},\n onDrag: function onDrag() {},\n onStop: function onStop() {},\n onMouseDown: function onMouseDown() {},\n scale: 1\n });\n});\nvar Draggable_1 = createCommonjsModule(function (module, exports) {\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n Object.defineProperty(exports, \"DraggableCore\", {\n enumerable: true,\n get: function get() {\n return _DraggableCore.default;\n }\n });\n exports.default = void 0;\n\n var React$1 = _interopRequireWildcard(React);\n\n var _propTypes = _interopRequireDefault(propTypes);\n\n var _reactDom = _interopRequireDefault(require$$2$1);\n\n var _classnames = _interopRequireDefault(classnames);\n\n var _DraggableCore = _interopRequireDefault(DraggableCore_1);\n\n var _log = _interopRequireDefault(log_1);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n\n return cache;\n }\n\n function _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n\n var cache = _getRequireWildcardCache();\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj.default = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n }\n\n function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n }\n\n function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n }\n\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n }\n\n function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n\n function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n\n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n }\n\n function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n }\n\n function _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function () {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n }\n\n function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n }\n\n function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n }\n\n function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n }\n\n function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n } //\n // Define \n //\n\n\n var Draggable = /*#__PURE__*/function (_React$Component) {\n _inherits(Draggable, _React$Component);\n\n var _super = _createSuper(Draggable);\n\n _createClass(Draggable, null, [{\n key: \"getDerivedStateFromProps\",\n // React 16.3+\n // Arity (props, state)\n value: function getDerivedStateFromProps(_ref, _ref2) {\n var position = _ref.position;\n var prevPropsPosition = _ref2.prevPropsPosition; // Set x/y if a new position is provided in props that is different than the previous.\n\n if (position && (!prevPropsPosition || position.x !== prevPropsPosition.x || position.y !== prevPropsPosition.y)) {\n (0, _log.default)('Draggable: getDerivedStateFromProps %j', {\n position: position,\n prevPropsPosition: prevPropsPosition\n });\n return {\n x: position.x,\n y: position.y,\n prevPropsPosition: _objectSpread({}, position)\n };\n }\n\n return null;\n }\n }]);\n\n function Draggable(props\n /*: DraggableProps*/\n ) {\n var _this;\n\n _classCallCheck(this, Draggable);\n\n _this = _super.call(this, props);\n\n _defineProperty(_assertThisInitialized(_this), \"onDragStart\", function (e, coreData) {\n (0, _log.default)('Draggable: onDragStart: %j', coreData); // Short-circuit if user's callback killed it.\n\n var shouldStart = _this.props.onStart(e, (0, positionFns.createDraggableData)(_assertThisInitialized(_this), coreData)); // Kills start event on core as well, so move handlers are never bound.\n\n\n if (shouldStart === false) return false;\n\n _this.setState({\n dragging: true,\n dragged: true\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDrag\", function (e, coreData) {\n if (!_this.state.dragging) return false;\n (0, _log.default)('Draggable: onDrag: %j', coreData);\n var uiData = (0, positionFns.createDraggableData)(_assertThisInitialized(_this), coreData);\n var newState\n /*: $Shape*/\n = {\n x: uiData.x,\n y: uiData.y\n }; // Keep within bounds.\n\n if (_this.props.bounds) {\n // Save original x and y.\n var x = newState.x,\n y = newState.y; // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n\n newState.x += _this.state.slackX;\n newState.y += _this.state.slackY; // Get bound position. This will ceil/floor the x and y within the boundaries.\n\n var _getBoundPosition = (0, positionFns.getBoundPosition)(_assertThisInitialized(_this), newState.x, newState.y),\n _getBoundPosition2 = _slicedToArray(_getBoundPosition, 2),\n newStateX = _getBoundPosition2[0],\n newStateY = _getBoundPosition2[1];\n\n newState.x = newStateX;\n newState.y = newStateY; // Recalculate slack by noting how much was shaved by the boundPosition handler.\n\n newState.slackX = _this.state.slackX + (x - newState.x);\n newState.slackY = _this.state.slackY + (y - newState.y); // Update the event we fire to reflect what really happened after bounds took effect.\n\n uiData.x = newState.x;\n uiData.y = newState.y;\n uiData.deltaX = newState.x - _this.state.x;\n uiData.deltaY = newState.y - _this.state.y;\n } // Short-circuit if user's callback killed it.\n\n\n var shouldUpdate = _this.props.onDrag(e, uiData);\n\n if (shouldUpdate === false) return false;\n\n _this.setState(newState);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDragStop\", function (e, coreData) {\n if (!_this.state.dragging) return false; // Short-circuit if user's callback killed it.\n\n var shouldContinue = _this.props.onStop(e, (0, positionFns.createDraggableData)(_assertThisInitialized(_this), coreData));\n\n if (shouldContinue === false) return false;\n (0, _log.default)('Draggable: onDragStop: %j', coreData);\n var newState\n /*: $Shape*/\n = {\n dragging: false,\n slackX: 0,\n slackY: 0\n }; // If this is a controlled component, the result of this operation will be to\n // revert back to the old position. We expect a handler on `onDragStop`, at the least.\n\n var controlled = Boolean(_this.props.position);\n\n if (controlled) {\n var _this$props$position = _this.props.position,\n x = _this$props$position.x,\n y = _this$props$position.y;\n newState.x = x;\n newState.y = y;\n }\n\n _this.setState(newState);\n });\n\n _this.state = {\n // Whether or not we are currently dragging.\n dragging: false,\n // Whether or not we have been dragged before.\n dragged: false,\n // Current transform x and y.\n x: props.position ? props.position.x : props.defaultPosition.x,\n y: props.position ? props.position.y : props.defaultPosition.y,\n prevPropsPosition: _objectSpread({}, props.position),\n // Used for compensating for out-of-bounds drags\n slackX: 0,\n slackY: 0,\n // Can only determine if SVG after mounting\n isElementSVG: false\n };\n\n if (props.position && !(props.onDrag || props.onStop)) {\n // eslint-disable-next-line no-console\n console.warn('A `position` was applied to this , without drag handlers. This will make this ' + 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' + '`position` of this element.');\n }\n\n return _this;\n }\n\n _createClass(Draggable, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n // Check to see if the element passed is an instanceof SVGElement\n if (typeof window.SVGElement !== 'undefined' && this.findDOMNode() instanceof window.SVGElement) {\n this.setState({\n isElementSVG: true\n });\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.setState({\n dragging: false\n }); // prevents invariant if unmounted while dragging\n } // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find\n // the underlying DOM node ourselves. See the README for more information.\n\n }, {\n key: \"findDOMNode\",\n value: function findDOMNode()\n /*: ?HTMLElement*/\n {\n return this.props.nodeRef ? this.props.nodeRef.current : _reactDom.default.findDOMNode(this);\n }\n }, {\n key: \"render\",\n value: function render()\n /*: ReactElement*/\n {\n var _classNames;\n\n var _this$props = this.props;\n _this$props.axis;\n _this$props.bounds;\n var children = _this$props.children,\n defaultPosition = _this$props.defaultPosition,\n defaultClassName = _this$props.defaultClassName,\n defaultClassNameDragging = _this$props.defaultClassNameDragging,\n defaultClassNameDragged = _this$props.defaultClassNameDragged,\n position = _this$props.position,\n positionOffset = _this$props.positionOffset;\n _this$props.scale;\n\n var draggableCoreProps = _objectWithoutProperties(_this$props, [\"axis\", \"bounds\", \"children\", \"defaultPosition\", \"defaultClassName\", \"defaultClassNameDragging\", \"defaultClassNameDragged\", \"position\", \"positionOffset\", \"scale\"]);\n\n var style = {};\n var svgTransform = null; // If this is controlled, we don't want to move it - unless it's dragging.\n\n var controlled = Boolean(position);\n var draggable = !controlled || this.state.dragging;\n var validPosition = position || defaultPosition;\n var transformOpts = {\n // Set left if horizontal drag is enabled\n x: (0, positionFns.canDragX)(this) && draggable ? this.state.x : validPosition.x,\n // Set top if vertical drag is enabled\n y: (0, positionFns.canDragY)(this) && draggable ? this.state.y : validPosition.y\n }; // If this element was SVG, we use the `transform` attribute.\n\n if (this.state.isElementSVG) {\n svgTransform = (0, domFns.createSVGTransform)(transformOpts, positionOffset);\n } else {\n // Add a CSS transform to move the element around. This allows us to move the element around\n // without worrying about whether or not it is relatively or absolutely positioned.\n // If the item you are dragging already has a transform set, wrap it in a so \n // has a clean slate.\n style = (0, domFns.createCSSTransform)(transformOpts, positionOffset);\n } // Mark with class while dragging\n\n\n var className = (0, _classnames.default)(children.props.className || '', defaultClassName, (_classNames = {}, _defineProperty(_classNames, defaultClassNameDragging, this.state.dragging), _defineProperty(_classNames, defaultClassNameDragged, this.state.dragged), _classNames)); // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n\n return /*#__PURE__*/React$1.createElement(_DraggableCore.default, _extends({}, draggableCoreProps, {\n onStart: this.onDragStart,\n onDrag: this.onDrag,\n onStop: this.onDragStop\n }), React$1.cloneElement(React$1.Children.only(children), {\n className: className,\n style: _objectSpread(_objectSpread({}, children.props.style), style),\n transform: svgTransform\n }));\n }\n }]);\n\n return Draggable;\n }(React$1.Component);\n\n exports.default = Draggable;\n\n _defineProperty(Draggable, \"displayName\", 'Draggable');\n\n _defineProperty(Draggable, \"propTypes\", _objectSpread(_objectSpread({}, _DraggableCore.default.propTypes), {}, {\n /**\n * `axis` determines which axis the draggable can move.\n *\n * Note that all callbacks will still return data as normal. This only\n * controls flushing to the DOM.\n *\n * 'both' allows movement horizontally and vertically.\n * 'x' limits movement to horizontal axis.\n * 'y' limits movement to vertical axis.\n * 'none' limits all movement.\n *\n * Defaults to 'both'.\n */\n axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n\n /**\n * `bounds` determines the range of movement available to the element.\n * Available values are:\n *\n * 'parent' restricts movement within the Draggable's parent node.\n *\n * Alternatively, pass an object with the following properties, all of which are optional:\n *\n * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}\n *\n * All values are in px.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
Content
\n *
\n * );\n * }\n * });\n * ```\n */\n bounds: _propTypes.default.oneOfType([_propTypes.default.shape({\n left: _propTypes.default.number,\n right: _propTypes.default.number,\n top: _propTypes.default.number,\n bottom: _propTypes.default.number\n }), _propTypes.default.string, _propTypes.default.oneOf([false])]),\n defaultClassName: _propTypes.default.string,\n defaultClassNameDragging: _propTypes.default.string,\n defaultClassNameDragged: _propTypes.default.string,\n\n /**\n * `defaultPosition` specifies the x and y that the dragged item should start at\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n defaultPosition: _propTypes.default.shape({\n x: _propTypes.default.number,\n y: _propTypes.default.number\n }),\n positionOffset: _propTypes.default.shape({\n x: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),\n y: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])\n }),\n\n /**\n * `position`, if present, defines the current position of the element.\n *\n * This is similar to how form elements in React work - if no `position` is supplied, the component\n * is uncontrolled.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n position: _propTypes.default.shape({\n x: _propTypes.default.number,\n y: _propTypes.default.number\n }),\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: shims.dontSetMe,\n style: shims.dontSetMe,\n transform: shims.dontSetMe\n }));\n\n _defineProperty(Draggable, \"defaultProps\", _objectSpread(_objectSpread({}, _DraggableCore.default.defaultProps), {}, {\n axis: 'both',\n bounds: false,\n defaultClassName: 'react-draggable',\n defaultClassNameDragging: 'react-draggable-dragging',\n defaultClassNameDragged: 'react-draggable-dragged',\n defaultPosition: {\n x: 0,\n y: 0\n },\n position: null,\n scale: 1\n }));\n});\nvar Draggable = Draggable_1.default,\n DraggableCore = Draggable_1.DraggableCore; // Previous versions of this lib exported as the root export. As to no-// them, or TypeScript, we export *both* as the root and as 'default'.\n// See https://github.com/mzabriskie/react-draggable/pull/254\n// and https://github.com/mzabriskie/react-draggable/issues/266\n\nvar cjs = Draggable;\nvar _default$1 = Draggable;\nvar DraggableCore_1$1 = DraggableCore;\ncjs.default = _default$1;\ncjs.DraggableCore = DraggableCore_1$1;\n/**\r\n * The nodes selection rectangle gets displayed when a user\r\n * made a selectio with on or several nodes\r\n */\n\nvar NodesSelection = function (_a) {\n var onSelectionDragStart = _a.onSelectionDragStart,\n onSelectionDrag = _a.onSelectionDrag,\n onSelectionDragStop = _a.onSelectionDragStop,\n onSelectionContextMenu = _a.onSelectionContextMenu;\n\n var _b = useStoreState(function (state) {\n return state.transform;\n }),\n tX = _b[0],\n tY = _b[1],\n tScale = _b[2];\n\n var selectedNodesBbox = useStoreState(function (state) {\n return state.selectedNodesBbox;\n });\n var selectionActive = useStoreState(function (state) {\n return state.selectionActive;\n });\n var selectedElements = useStoreState(function (state) {\n return state.selectedElements;\n });\n var snapToGrid = useStoreState(function (state) {\n return state.snapToGrid;\n });\n var snapGrid = useStoreState(function (state) {\n return state.snapGrid;\n });\n var nodes = useStoreState(function (state) {\n return state.nodes;\n });\n var updateNodePosDiff = useStoreActions(function (actions) {\n return actions.updateNodePosDiff;\n });\n var nodeRef = useRef(null);\n var grid = useMemo$1(function () {\n return snapToGrid ? snapGrid : [1, 1];\n }, [snapToGrid, snapGrid]);\n var selectedNodes = useMemo$1(function () {\n return selectedElements ? selectedElements.filter(isNode).map(function (selectedNode) {\n var matchingNode = nodes.find(function (node) {\n return node.id === selectedNode.id;\n });\n return __assign(__assign({}, matchingNode), {\n position: matchingNode === null || matchingNode === void 0 ? void 0 : matchingNode.__rf.position\n });\n }) : [];\n }, [selectedElements, nodes]);\n var style = useMemo$1(function () {\n return {\n transform: \"translate(\" + tX + \"px,\" + tY + \"px) scale(\" + tScale + \")\"\n };\n }, [tX, tY, tScale]);\n var innerStyle = useMemo$1(function () {\n return {\n width: selectedNodesBbox.width,\n height: selectedNodesBbox.height,\n top: selectedNodesBbox.y,\n left: selectedNodesBbox.x\n };\n }, [selectedNodesBbox]);\n var onStart = useCallback$1(function (event) {\n onSelectionDragStart === null || onSelectionDragStart === void 0 ? void 0 : onSelectionDragStart(event, selectedNodes);\n }, [onSelectionDragStart, selectedNodes]);\n var onDrag = useCallback$1(function (event, data) {\n if (onSelectionDrag) {\n onSelectionDrag(event, selectedNodes);\n }\n\n updateNodePosDiff({\n diff: {\n x: data.deltaX,\n y: data.deltaY\n }\n });\n }, [onSelectionDrag, selectedNodes, updateNodePosDiff]);\n var onStop = useCallback$1(function (event) {\n updateNodePosDiff({\n isDragging: false\n });\n onSelectionDragStop === null || onSelectionDragStop === void 0 ? void 0 : onSelectionDragStop(event, selectedNodes);\n }, [selectedNodes, onSelectionDragStop]);\n var onContextMenu = useCallback$1(function (event) {\n var selectedNodes = selectedElements ? selectedElements.filter(isNode).map(function (selectedNode) {\n return nodes.find(function (node) {\n return node.id === selectedNode.id;\n });\n }) : [];\n onSelectionContextMenu === null || onSelectionContextMenu === void 0 ? void 0 : onSelectionContextMenu(event, selectedNodes);\n }, [onSelectionContextMenu]);\n\n if (!selectedElements || selectionActive) {\n return null;\n }\n\n return React.createElement(\"div\", {\n className: \"react-flow__nodesselection\",\n style: style\n }, React.createElement(cjs, {\n scale: tScale,\n grid: grid,\n onStart: function (event) {\n return onStart(event);\n },\n onDrag: function (event, data) {\n return onDrag(event, data);\n },\n onStop: function (event) {\n return onStop(event);\n },\n nodeRef: nodeRef\n }, React.createElement(\"div\", {\n ref: nodeRef,\n className: \"react-flow__nodesselection-rect\",\n onContextMenu: onContextMenu,\n style: innerStyle\n })));\n};\n\nvar FlowRenderer = function (_a) {\n var children = _a.children,\n onPaneClick = _a.onPaneClick,\n onPaneContextMenu = _a.onPaneContextMenu,\n onPaneScroll = _a.onPaneScroll,\n onElementsRemove = _a.onElementsRemove,\n deleteKeyCode = _a.deleteKeyCode,\n onMove = _a.onMove,\n onMoveStart = _a.onMoveStart,\n onMoveEnd = _a.onMoveEnd,\n selectionKeyCode = _a.selectionKeyCode,\n multiSelectionKeyCode = _a.multiSelectionKeyCode,\n zoomActivationKeyCode = _a.zoomActivationKeyCode,\n elementsSelectable = _a.elementsSelectable,\n zoomOnScroll = _a.zoomOnScroll,\n zoomOnPinch = _a.zoomOnPinch,\n panOnScroll = _a.panOnScroll,\n panOnScrollSpeed = _a.panOnScrollSpeed,\n panOnScrollMode = _a.panOnScrollMode,\n zoomOnDoubleClick = _a.zoomOnDoubleClick,\n paneMoveable = _a.paneMoveable,\n defaultPosition = _a.defaultPosition,\n defaultZoom = _a.defaultZoom,\n translateExtent = _a.translateExtent,\n onSelectionDragStart = _a.onSelectionDragStart,\n onSelectionDrag = _a.onSelectionDrag,\n onSelectionDragStop = _a.onSelectionDragStop,\n onSelectionContextMenu = _a.onSelectionContextMenu;\n var unsetNodesSelection = useStoreActions(function (actions) {\n return actions.unsetNodesSelection;\n });\n var resetSelectedElements = useStoreActions(function (actions) {\n return actions.resetSelectedElements;\n });\n var nodesSelectionActive = useStoreState(function (state) {\n return state.nodesSelectionActive;\n });\n var selectionKeyPressed = useKeyPress(selectionKeyCode);\n useGlobalKeyHandler({\n onElementsRemove: onElementsRemove,\n deleteKeyCode: deleteKeyCode,\n multiSelectionKeyCode: multiSelectionKeyCode\n });\n var onClick = useCallback$1(function (event) {\n onPaneClick === null || onPaneClick === void 0 ? void 0 : onPaneClick(event);\n unsetNodesSelection();\n resetSelectedElements();\n }, [onPaneClick]);\n var onContextMenu = useCallback$1(function (event) {\n onPaneContextMenu === null || onPaneContextMenu === void 0 ? void 0 : onPaneContextMenu(event);\n }, [onPaneContextMenu]);\n var onWheel = useCallback$1(function (event) {\n onPaneScroll === null || onPaneScroll === void 0 ? void 0 : onPaneScroll(event);\n }, [onPaneScroll]);\n return React.createElement(ZoomPane, {\n onMove: onMove,\n onMoveStart: onMoveStart,\n onMoveEnd: onMoveEnd,\n selectionKeyPressed: selectionKeyPressed,\n elementsSelectable: elementsSelectable,\n zoomOnScroll: zoomOnScroll,\n zoomOnPinch: zoomOnPinch,\n panOnScroll: panOnScroll,\n panOnScrollSpeed: panOnScrollSpeed,\n panOnScrollMode: panOnScrollMode,\n zoomOnDoubleClick: zoomOnDoubleClick,\n paneMoveable: paneMoveable,\n defaultPosition: defaultPosition,\n defaultZoom: defaultZoom,\n translateExtent: translateExtent,\n zoomActivationKeyCode: zoomActivationKeyCode\n }, children, React.createElement(UserSelection, {\n selectionKeyPressed: selectionKeyPressed\n }), nodesSelectionActive && React.createElement(NodesSelection, {\n onSelectionDragStart: onSelectionDragStart,\n onSelectionDrag: onSelectionDrag,\n onSelectionDragStop: onSelectionDragStop,\n onSelectionContextMenu: onSelectionContextMenu\n }), React.createElement(\"div\", {\n className: \"react-flow__pane\",\n onClick: onClick,\n onContextMenu: onContextMenu,\n onWheel: onWheel\n }));\n};\n\nFlowRenderer.displayName = 'FlowRenderer';\nvar FlowRenderer$1 = memo(FlowRenderer);\n\nvar NodeRenderer = function (props) {\n var transform = useStoreState(function (state) {\n return state.transform;\n });\n var selectedElements = useStoreState(function (state) {\n return state.selectedElements;\n });\n var nodesDraggable = useStoreState(function (state) {\n return state.nodesDraggable;\n });\n var nodesConnectable = useStoreState(function (state) {\n return state.nodesConnectable;\n });\n var elementsSelectable = useStoreState(function (state) {\n return state.elementsSelectable;\n });\n var viewportBox = useStoreState(function (state) {\n return state.viewportBox;\n });\n var nodes = useStoreState(function (state) {\n return state.nodes;\n });\n var batchUpdateNodeDimensions = useStoreActions(function (actions) {\n return actions.batchUpdateNodeDimensions;\n });\n var visibleNodes = props.onlyRenderVisibleElements ? getNodesInside(nodes, viewportBox, transform, true) : nodes;\n var transformStyle = useMemo$1(function () {\n return {\n transform: \"translate(\" + transform[0] + \"px,\" + transform[1] + \"px) scale(\" + transform[2] + \")\"\n };\n }, [transform[0], transform[1], transform[2]]);\n var resizeObserver = useMemo$1(function () {\n if (typeof ResizeObserver === 'undefined') {\n return null;\n }\n\n return new ResizeObserver(function (entries) {\n var updates = entries.map(function (entry) {\n return {\n id: entry.target.getAttribute('data-id'),\n nodeElement: entry.target\n };\n });\n batchUpdateNodeDimensions({\n updates: updates\n });\n });\n }, []);\n return React.createElement(\"div\", {\n className: \"react-flow__nodes\",\n style: transformStyle\n }, visibleNodes.map(function (node) {\n var nodeType = node.type || 'default';\n var NodeComponent = props.nodeTypes[nodeType] || props.nodeTypes.default;\n\n if (!props.nodeTypes[nodeType]) {\n console.warn(\"Node type \\\"\" + nodeType + \"\\\" not found. Using fallback type \\\"default\\\".\");\n }\n\n var isDraggable = !!(node.draggable || nodesDraggable && typeof node.draggable === 'undefined');\n var isSelectable = !!(node.selectable || elementsSelectable && typeof node.selectable === 'undefined');\n var isConnectable = !!(node.connectable || nodesConnectable && typeof node.connectable === 'undefined');\n return React.createElement(NodeComponent, {\n key: node.id,\n id: node.id,\n className: node.className,\n style: node.style,\n type: nodeType,\n data: node.data,\n sourcePosition: node.sourcePosition,\n targetPosition: node.targetPosition,\n isHidden: node.isHidden,\n xPos: node.__rf.position.x,\n yPos: node.__rf.position.y,\n isDragging: node.__rf.isDragging,\n isInitialized: node.__rf.width !== null && node.__rf.height !== null,\n snapGrid: props.snapGrid,\n snapToGrid: props.snapToGrid,\n selectNodesOnDrag: props.selectNodesOnDrag,\n onClick: props.onElementClick,\n onMouseEnter: props.onNodeMouseEnter,\n onMouseMove: props.onNodeMouseMove,\n onMouseLeave: props.onNodeMouseLeave,\n onContextMenu: props.onNodeContextMenu,\n onNodeDragStart: props.onNodeDragStart,\n onNodeDrag: props.onNodeDrag,\n onNodeDragStop: props.onNodeDragStop,\n scale: transform[2],\n selected: (selectedElements === null || selectedElements === void 0 ? void 0 : selectedElements.some(function (_a) {\n var id = _a.id;\n return id === node.id;\n })) || false,\n isDraggable: isDraggable,\n isSelectable: isSelectable,\n isConnectable: isConnectable,\n resizeObserver: resizeObserver\n });\n }));\n};\n\nNodeRenderer.displayName = 'NodeRenderer';\nvar NodeRenderer$1 = memo(NodeRenderer);\nvar EdgeText = memo(function (_a) {\n var x = _a.x,\n y = _a.y,\n label = _a.label,\n _b = _a.labelStyle,\n labelStyle = _b === void 0 ? {} : _b,\n _c = _a.labelShowBg,\n labelShowBg = _c === void 0 ? true : _c,\n _d = _a.labelBgStyle,\n labelBgStyle = _d === void 0 ? {} : _d,\n _e = _a.labelBgPadding,\n labelBgPadding = _e === void 0 ? [2, 4] : _e,\n _f = _a.labelBgBorderRadius,\n labelBgBorderRadius = _f === void 0 ? 2 : _f;\n var edgeRef = useRef(null);\n\n var _g = useState({\n x: 0,\n y: 0,\n width: 0,\n height: 0\n }),\n edgeTextBbox = _g[0],\n setEdgeTextBbox = _g[1];\n\n useEffect(function () {\n if (edgeRef.current) {\n var textBbox = edgeRef.current.getBBox();\n setEdgeTextBbox({\n x: textBbox.x,\n y: textBbox.y,\n width: textBbox.width,\n height: textBbox.height\n });\n }\n }, []);\n\n if (typeof label === 'undefined' || !label) {\n return null;\n }\n\n return React.createElement(\"g\", {\n transform: \"translate(\" + (x - edgeTextBbox.width / 2) + \" \" + (y - edgeTextBbox.height / 2) + \")\"\n }, labelShowBg && React.createElement(\"rect\", {\n width: edgeTextBbox.width + 2 * labelBgPadding[0],\n x: -labelBgPadding[0],\n y: -labelBgPadding[1],\n height: edgeTextBbox.height + 2 * labelBgPadding[1],\n className: \"react-flow__edge-textbg\",\n style: labelBgStyle,\n rx: labelBgBorderRadius,\n ry: labelBgBorderRadius\n }), React.createElement(\"text\", {\n className: \"react-flow__edge-text\",\n y: edgeTextBbox.height / 2,\n dy: \"0.3em\",\n ref: edgeRef,\n style: labelStyle\n }, label));\n});\n\nvar getMarkerEnd = function (arrowHeadType, markerEndId) {\n if (typeof markerEndId !== 'undefined' && markerEndId) {\n return \"url(#\" + markerEndId + \")\";\n }\n\n return typeof arrowHeadType !== 'undefined' ? \"url(#react-flow__\" + arrowHeadType + \")\" : 'none';\n};\n\nvar getCenter = function (_a) {\n var sourceX = _a.sourceX,\n sourceY = _a.sourceY,\n targetX = _a.targetX,\n targetY = _a.targetY;\n var xOffset = Math.abs(targetX - sourceX) / 2;\n var centerX = targetX < sourceX ? targetX + xOffset : targetX - xOffset;\n var yOffset = Math.abs(targetY - sourceY) / 2;\n var centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset;\n return [centerX, centerY, xOffset, yOffset];\n};\n\nfunction getBezierPath(_a) {\n var sourceX = _a.sourceX,\n sourceY = _a.sourceY,\n _b = _a.sourcePosition,\n sourcePosition = _b === void 0 ? Position.Bottom : _b,\n targetX = _a.targetX,\n targetY = _a.targetY,\n _c = _a.targetPosition,\n targetPosition = _c === void 0 ? Position.Top : _c,\n centerX = _a.centerX,\n centerY = _a.centerY;\n\n var _d = getCenter({\n sourceX: sourceX,\n sourceY: sourceY,\n targetX: targetX,\n targetY: targetY\n }),\n _centerX = _d[0],\n _centerY = _d[1];\n\n var leftAndRight = [Position.Left, Position.Right];\n var cX = typeof centerX !== 'undefined' ? centerX : _centerX;\n var cY = typeof centerY !== 'undefined' ? centerY : _centerY;\n var path = \"M\" + sourceX + \",\" + sourceY + \" C\" + sourceX + \",\" + cY + \" \" + targetX + \",\" + cY + \" \" + targetX + \",\" + targetY;\n\n if (leftAndRight.includes(sourcePosition) && leftAndRight.includes(targetPosition)) {\n path = \"M\" + sourceX + \",\" + sourceY + \" C\" + cX + \",\" + sourceY + \" \" + cX + \",\" + targetY + \" \" + targetX + \",\" + targetY;\n } else if (leftAndRight.includes(targetPosition)) {\n path = \"M\" + sourceX + \",\" + sourceY + \" C\" + sourceX + \",\" + targetY + \" \" + sourceX + \",\" + targetY + \" \" + targetX + \",\" + targetY;\n } else if (leftAndRight.includes(sourcePosition)) {\n path = \"M\" + sourceX + \",\" + sourceY + \" C\" + targetX + \",\" + sourceY + \" \" + targetX + \",\" + sourceY + \" \" + targetX + \",\" + targetY;\n }\n\n return path;\n}\n\nvar BezierEdge = memo(function (_a) {\n var sourceX = _a.sourceX,\n sourceY = _a.sourceY,\n targetX = _a.targetX,\n targetY = _a.targetY,\n _b = _a.sourcePosition,\n sourcePosition = _b === void 0 ? Position.Bottom : _b,\n _c = _a.targetPosition,\n targetPosition = _c === void 0 ? Position.Top : _c,\n label = _a.label,\n labelStyle = _a.labelStyle,\n labelShowBg = _a.labelShowBg,\n labelBgStyle = _a.labelBgStyle,\n labelBgPadding = _a.labelBgPadding,\n labelBgBorderRadius = _a.labelBgBorderRadius,\n style = _a.style,\n arrowHeadType = _a.arrowHeadType,\n markerEndId = _a.markerEndId;\n\n var _d = getCenter({\n sourceX: sourceX,\n sourceY: sourceY,\n targetX: targetX,\n targetY: targetY\n }),\n centerX = _d[0],\n centerY = _d[1];\n\n var path = getBezierPath({\n sourceX: sourceX,\n sourceY: sourceY,\n sourcePosition: sourcePosition,\n targetX: targetX,\n targetY: targetY,\n targetPosition: targetPosition\n });\n var text = label ? React.createElement(EdgeText, {\n x: centerX,\n y: centerY,\n label: label,\n labelStyle: labelStyle,\n labelShowBg: labelShowBg,\n labelBgStyle: labelBgStyle,\n labelBgPadding: labelBgPadding,\n labelBgBorderRadius: labelBgBorderRadius\n }) : null;\n var markerEnd = getMarkerEnd(arrowHeadType, markerEndId);\n return React.createElement(React.Fragment, null, React.createElement(\"path\", {\n style: style,\n d: path,\n className: \"react-flow__edge-path\",\n markerEnd: markerEnd\n }), text);\n}); // These are some helper methods for drawing the round corners\n// The name indicates the direction of the path. \"bottomLeftCorner\" goes\n// from bottom to the left and \"leftBottomCorner\" goes from left to the bottom.\n// We have to consider the direction of the paths because of the animated lines.\n\nvar bottomLeftCorner = function (x, y, size) {\n return \"L \" + x + \",\" + (y - size) + \"Q \" + x + \",\" + y + \" \" + (x + size) + \",\" + y;\n};\n\nvar leftBottomCorner = function (x, y, size) {\n return \"L \" + (x + size) + \",\" + y + \"Q \" + x + \",\" + y + \" \" + x + \",\" + (y - size);\n};\n\nvar bottomRightCorner = function (x, y, size) {\n return \"L \" + x + \",\" + (y - size) + \"Q \" + x + \",\" + y + \" \" + (x - size) + \",\" + y;\n};\n\nvar rightBottomCorner = function (x, y, size) {\n return \"L \" + (x - size) + \",\" + y + \"Q \" + x + \",\" + y + \" \" + x + \",\" + (y - size);\n};\n\nvar leftTopCorner = function (x, y, size) {\n return \"L \" + (x + size) + \",\" + y + \"Q \" + x + \",\" + y + \" \" + x + \",\" + (y + size);\n};\n\nvar topLeftCorner = function (x, y, size) {\n return \"L \" + x + \",\" + (y + size) + \"Q \" + x + \",\" + y + \" \" + (x + size) + \",\" + y;\n};\n\nvar topRightCorner = function (x, y, size) {\n return \"L \" + x + \",\" + (y + size) + \"Q \" + x + \",\" + y + \" \" + (x - size) + \",\" + y;\n};\n\nvar rightTopCorner = function (x, y, size) {\n return \"L \" + (x - size) + \",\" + y + \"Q \" + x + \",\" + y + \" \" + x + \",\" + (y + size);\n};\n\nfunction getSmoothStepPath(_a) {\n var sourceX = _a.sourceX,\n sourceY = _a.sourceY,\n _b = _a.sourcePosition,\n sourcePosition = _b === void 0 ? Position.Bottom : _b,\n targetX = _a.targetX,\n targetY = _a.targetY,\n _c = _a.targetPosition,\n targetPosition = _c === void 0 ? Position.Top : _c,\n _d = _a.borderRadius,\n borderRadius = _d === void 0 ? 5 : _d,\n centerX = _a.centerX,\n centerY = _a.centerY;\n\n var _e = getCenter({\n sourceX: sourceX,\n sourceY: sourceY,\n targetX: targetX,\n targetY: targetY\n }),\n _centerX = _e[0],\n _centerY = _e[1],\n offsetX = _e[2],\n offsetY = _e[3];\n\n var cornerWidth = Math.min(borderRadius, Math.abs(targetX - sourceX));\n var cornerHeight = Math.min(borderRadius, Math.abs(targetY - sourceY));\n var cornerSize = Math.min(cornerWidth, cornerHeight, offsetX, offsetY);\n var leftAndRight = [Position.Left, Position.Right];\n var cX = typeof centerX !== 'undefined' ? centerX : _centerX;\n var cY = typeof centerY !== 'undefined' ? centerY : _centerY;\n var firstCornerPath = null;\n var secondCornerPath = null;\n\n if (sourceX <= targetX) {\n firstCornerPath = sourceY <= targetY ? bottomLeftCorner(sourceX, cY, cornerSize) : topLeftCorner(sourceX, cY, cornerSize);\n secondCornerPath = sourceY <= targetY ? rightTopCorner(targetX, cY, cornerSize) : rightBottomCorner(targetX, cY, cornerSize);\n } else {\n firstCornerPath = sourceY < targetY ? bottomRightCorner(sourceX, cY, cornerSize) : topRightCorner(sourceX, cY, cornerSize);\n secondCornerPath = sourceY < targetY ? leftTopCorner(targetX, cY, cornerSize) : leftBottomCorner(targetX, cY, cornerSize);\n }\n\n if (leftAndRight.includes(sourcePosition) && leftAndRight.includes(targetPosition)) {\n if (sourceX <= targetX) {\n firstCornerPath = sourceY <= targetY ? rightTopCorner(cX, sourceY, cornerSize) : rightBottomCorner(cX, sourceY, cornerSize);\n secondCornerPath = sourceY <= targetY ? bottomLeftCorner(cX, targetY, cornerSize) : topLeftCorner(cX, targetY, cornerSize);\n }\n } else if (leftAndRight.includes(sourcePosition) && !leftAndRight.includes(targetPosition)) {\n if (sourceX <= targetX) {\n firstCornerPath = sourceY <= targetY ? rightTopCorner(targetX, sourceY, cornerSize) : rightBottomCorner(targetX, sourceY, cornerSize);\n } else {\n firstCornerPath = sourceY <= targetY ? bottomRightCorner(sourceX, targetY, cornerSize) : topRightCorner(sourceX, targetY, cornerSize);\n }\n\n secondCornerPath = '';\n } else if (!leftAndRight.includes(sourcePosition) && leftAndRight.includes(targetPosition)) {\n if (sourceX <= targetX) {\n firstCornerPath = sourceY <= targetY ? bottomLeftCorner(sourceX, targetY, cornerSize) : topLeftCorner(sourceX, targetY, cornerSize);\n } else {\n firstCornerPath = sourceY <= targetY ? bottomRightCorner(sourceX, targetY, cornerSize) : topRightCorner(sourceX, targetY, cornerSize);\n }\n\n secondCornerPath = '';\n }\n\n return \"M \" + sourceX + \",\" + sourceY + firstCornerPath + secondCornerPath + \"L \" + targetX + \",\" + targetY;\n}\n\nvar SmoothStepEdge = memo(function (_a) {\n var sourceX = _a.sourceX,\n sourceY = _a.sourceY,\n targetX = _a.targetX,\n targetY = _a.targetY,\n label = _a.label,\n labelStyle = _a.labelStyle,\n labelShowBg = _a.labelShowBg,\n labelBgStyle = _a.labelBgStyle,\n labelBgPadding = _a.labelBgPadding,\n labelBgBorderRadius = _a.labelBgBorderRadius,\n style = _a.style,\n _b = _a.sourcePosition,\n sourcePosition = _b === void 0 ? Position.Bottom : _b,\n _c = _a.targetPosition,\n targetPosition = _c === void 0 ? Position.Top : _c,\n arrowHeadType = _a.arrowHeadType,\n markerEndId = _a.markerEndId,\n _d = _a.borderRadius,\n borderRadius = _d === void 0 ? 5 : _d;\n\n var _e = getCenter({\n sourceX: sourceX,\n sourceY: sourceY,\n targetX: targetX,\n targetY: targetY\n }),\n centerX = _e[0],\n centerY = _e[1];\n\n var path = getSmoothStepPath({\n sourceX: sourceX,\n sourceY: sourceY,\n sourcePosition: sourcePosition,\n targetX: targetX,\n targetY: targetY,\n targetPosition: targetPosition,\n borderRadius: borderRadius\n });\n var markerEnd = getMarkerEnd(arrowHeadType, markerEndId);\n var text = label ? React.createElement(EdgeText, {\n x: centerX,\n y: centerY,\n label: label,\n labelStyle: labelStyle,\n labelShowBg: labelShowBg,\n labelBgStyle: labelBgStyle,\n labelBgPadding: labelBgPadding,\n labelBgBorderRadius: labelBgBorderRadius\n }) : null;\n return React.createElement(React.Fragment, null, React.createElement(\"path\", {\n style: style,\n className: \"react-flow__edge-path\",\n d: path,\n markerEnd: markerEnd\n }), text);\n});\n\nvar ConnectionLine = function (_a) {\n var connectionNodeId = _a.connectionNodeId,\n connectionHandleId = _a.connectionHandleId,\n connectionHandleType = _a.connectionHandleType,\n connectionLineStyle = _a.connectionLineStyle,\n connectionPositionX = _a.connectionPositionX,\n connectionPositionY = _a.connectionPositionY,\n _b = _a.connectionLineType,\n connectionLineType = _b === void 0 ? ConnectionLineType.Bezier : _b,\n _c = _a.nodes,\n nodes = _c === void 0 ? [] : _c,\n transform = _a.transform,\n isConnectable = _a.isConnectable,\n CustomConnectionLineComponent = _a.CustomConnectionLineComponent;\n\n var _d = useState(null),\n sourceNode = _d[0],\n setSourceNode = _d[1];\n\n var nodeId = connectionNodeId;\n var handleId = connectionHandleId;\n useEffect(function () {\n var nextSourceNode = nodes.find(function (n) {\n return n.id === nodeId;\n }) || null;\n setSourceNode(nextSourceNode);\n }, []);\n\n if (!sourceNode || !isConnectable) {\n return null;\n }\n\n var sourceHandle = handleId ? sourceNode.__rf.handleBounds[connectionHandleType].find(function (d) {\n return d.id === handleId;\n }) : sourceNode.__rf.handleBounds[connectionHandleType][0];\n var sourceHandleX = sourceHandle ? sourceHandle.x + sourceHandle.width / 2 : sourceNode.__rf.width / 2;\n var sourceHandleY = sourceHandle ? sourceHandle.y + sourceHandle.height / 2 : sourceNode.__rf.height;\n var sourceX = sourceNode.__rf.position.x + sourceHandleX;\n var sourceY = sourceNode.__rf.position.y + sourceHandleY;\n var targetX = (connectionPositionX - transform[0]) / transform[2];\n var targetY = (connectionPositionY - transform[1]) / transform[2];\n var isRightOrLeft = (sourceHandle === null || sourceHandle === void 0 ? void 0 : sourceHandle.position) === Position.Left || (sourceHandle === null || sourceHandle === void 0 ? void 0 : sourceHandle.position) === Position.Right;\n var targetPosition = isRightOrLeft ? Position.Left : Position.Top;\n\n if (CustomConnectionLineComponent) {\n return React.createElement(\"g\", {\n className: \"react-flow__connection\"\n }, React.createElement(CustomConnectionLineComponent, {\n sourceX: sourceX,\n sourceY: sourceY,\n sourcePosition: sourceHandle === null || sourceHandle === void 0 ? void 0 : sourceHandle.position,\n targetX: targetX,\n targetY: targetY,\n targetPosition: targetPosition,\n connectionLineType: connectionLineType,\n connectionLineStyle: connectionLineStyle\n }));\n }\n\n var dAttr = '';\n\n if (connectionLineType === ConnectionLineType.Bezier) {\n dAttr = getBezierPath({\n sourceX: sourceX,\n sourceY: sourceY,\n sourcePosition: sourceHandle === null || sourceHandle === void 0 ? void 0 : sourceHandle.position,\n targetX: targetX,\n targetY: targetY,\n targetPosition: targetPosition\n });\n } else if (connectionLineType === ConnectionLineType.Step) {\n dAttr = getSmoothStepPath({\n sourceX: sourceX,\n sourceY: sourceY,\n sourcePosition: sourceHandle === null || sourceHandle === void 0 ? void 0 : sourceHandle.position,\n targetX: targetX,\n targetY: targetY,\n targetPosition: targetPosition,\n borderRadius: 0\n });\n } else if (connectionLineType === ConnectionLineType.SmoothStep) {\n dAttr = getSmoothStepPath({\n sourceX: sourceX,\n sourceY: sourceY,\n sourcePosition: sourceHandle === null || sourceHandle === void 0 ? void 0 : sourceHandle.position,\n targetX: targetX,\n targetY: targetY,\n targetPosition: targetPosition\n });\n } else {\n dAttr = \"M\" + sourceX + \",\" + sourceY + \" \" + targetX + \",\" + targetY;\n }\n\n return React.createElement(\"g\", {\n className: \"react-flow__connection\"\n }, React.createElement(\"path\", {\n d: dAttr,\n className: \"react-flow__connection-path\",\n style: connectionLineStyle\n }));\n};\n\nvar Marker = function (_a) {\n var id = _a.id,\n children = _a.children;\n return React.createElement(\"marker\", {\n className: \"react-flow__arrowhead\",\n id: id,\n markerWidth: \"12.5\",\n markerHeight: \"12.5\",\n viewBox: \"-10 -10 20 20\",\n orient: \"auto\",\n refX: \"0\",\n refY: \"0\"\n }, children);\n};\n\nvar MarkerDefinitions = function (_a) {\n var color = _a.color;\n return React.createElement(\"defs\", null, React.createElement(Marker, {\n id: \"react-flow__arrowclosed\"\n }, React.createElement(\"polyline\", {\n stroke: color,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: \"1\",\n fill: color,\n points: \"-5,-4 0,0 -5,4 -5,-4\"\n })), React.createElement(Marker, {\n id: \"react-flow__arrow\"\n }, React.createElement(\"polyline\", {\n stroke: color,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: \"1.5\",\n fill: \"none\",\n points: \"-5,-4 0,0 -5,4\"\n })));\n};\n\nMarkerDefinitions.displayName = 'MarkerDefinitions';\nvar StepEdge = memo(function (props) {\n return React.createElement(SmoothStepEdge, __assign({}, props, {\n borderRadius: 0\n }));\n});\nvar StraightEdge = memo(function (_a) {\n var sourceX = _a.sourceX,\n sourceY = _a.sourceY,\n targetX = _a.targetX,\n targetY = _a.targetY,\n label = _a.label,\n labelStyle = _a.labelStyle,\n labelShowBg = _a.labelShowBg,\n labelBgStyle = _a.labelBgStyle,\n labelBgPadding = _a.labelBgPadding,\n labelBgBorderRadius = _a.labelBgBorderRadius,\n style = _a.style,\n arrowHeadType = _a.arrowHeadType,\n markerEndId = _a.markerEndId;\n var yOffset = Math.abs(targetY - sourceY) / 2;\n var centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset;\n var xOffset = Math.abs(targetX - sourceX) / 2;\n var centerX = targetX < sourceX ? targetX + xOffset : targetX - xOffset;\n var markerEnd = getMarkerEnd(arrowHeadType, markerEndId);\n var text = label ? React.createElement(EdgeText, {\n x: centerX,\n y: centerY,\n label: label,\n labelStyle: labelStyle,\n labelShowBg: labelShowBg,\n labelBgStyle: labelBgStyle,\n labelBgPadding: labelBgPadding,\n labelBgBorderRadius: labelBgBorderRadius\n }) : null;\n return React.createElement(React.Fragment, null, React.createElement(\"path\", {\n style: style,\n className: \"react-flow__edge-path\",\n d: \"M \" + sourceX + \",\" + sourceY + \"L \" + targetX + \",\" + targetY,\n markerEnd: markerEnd\n }), text);\n}); // checks if element below mouse is a handle and returns connection in form of an object { source: 123, target: 312 }\n\nfunction checkElementBelowIsValid(event, connectionMode, isTarget, nodeId, handleId, isValidConnection) {\n var elementBelow = document.elementFromPoint(event.clientX, event.clientY);\n var elementBelowIsTarget = (elementBelow === null || elementBelow === void 0 ? void 0 : elementBelow.classList.contains('target')) || false;\n var elementBelowIsSource = (elementBelow === null || elementBelow === void 0 ? void 0 : elementBelow.classList.contains('source')) || false;\n var result = {\n elementBelow: elementBelow,\n isValid: false,\n connection: {\n source: null,\n target: null,\n sourceHandle: null,\n targetHandle: null\n },\n isHoveringHandle: false\n };\n\n if (elementBelow && (elementBelowIsTarget || elementBelowIsSource)) {\n result.isHoveringHandle = true; // in strict mode we don't allow target to target or source to source connections\n\n var isValid = connectionMode === ConnectionMode.Strict ? isTarget && elementBelowIsSource || !isTarget && elementBelowIsTarget : true;\n\n if (isValid) {\n var elementBelowNodeId = elementBelow.getAttribute('data-nodeid');\n var elementBelowHandleId = elementBelow.getAttribute('data-handleid');\n var connection = isTarget ? {\n source: elementBelowNodeId,\n sourceHandle: elementBelowHandleId,\n target: nodeId,\n targetHandle: handleId\n } : {\n source: nodeId,\n sourceHandle: handleId,\n target: elementBelowNodeId,\n targetHandle: elementBelowHandleId\n };\n result.connection = connection;\n result.isValid = isValidConnection(connection);\n }\n }\n\n return result;\n}\n\nfunction resetRecentHandle(hoveredHandle) {\n hoveredHandle === null || hoveredHandle === void 0 ? void 0 : hoveredHandle.classList.remove('react-flow__handle-valid');\n hoveredHandle === null || hoveredHandle === void 0 ? void 0 : hoveredHandle.classList.remove('react-flow__handle-connecting');\n}\n\nfunction onMouseDown(event, handleId, nodeId, setConnectionNodeId, setPosition, onConnect, isTarget, isValidConnection, connectionMode, onConnectStart, onConnectStop, onConnectEnd) {\n var reactFlowNode = event.target.closest('.react-flow');\n\n if (!reactFlowNode) {\n return;\n }\n\n var handleType = isTarget ? 'target' : 'source';\n var containerBounds = reactFlowNode.getBoundingClientRect();\n var recentHoveredHandle;\n setPosition({\n x: event.clientX - containerBounds.left,\n y: event.clientY - containerBounds.top\n });\n setConnectionNodeId({\n connectionNodeId: nodeId,\n connectionHandleId: handleId,\n connectionHandleType: handleType\n });\n onConnectStart === null || onConnectStart === void 0 ? void 0 : onConnectStart(event, {\n nodeId: nodeId,\n handleId: handleId,\n handleType: handleType\n });\n\n function onMouseMove(event) {\n setPosition({\n x: event.clientX - containerBounds.left,\n y: event.clientY - containerBounds.top\n });\n\n var _a = checkElementBelowIsValid(event, connectionMode, isTarget, nodeId, handleId, isValidConnection),\n connection = _a.connection,\n elementBelow = _a.elementBelow,\n isValid = _a.isValid,\n isHoveringHandle = _a.isHoveringHandle;\n\n if (!isHoveringHandle) {\n return resetRecentHandle(recentHoveredHandle);\n }\n\n var isOwnHandle = connection.source === connection.target;\n\n if (!isOwnHandle && elementBelow) {\n recentHoveredHandle = elementBelow;\n elementBelow.classList.add('react-flow__handle-connecting');\n elementBelow.classList.toggle('react-flow__handle-valid', isValid);\n }\n }\n\n function onMouseUp(event) {\n var _a = checkElementBelowIsValid(event, connectionMode, isTarget, nodeId, handleId, isValidConnection),\n connection = _a.connection,\n isValid = _a.isValid;\n\n onConnectStop === null || onConnectStop === void 0 ? void 0 : onConnectStop(event);\n\n if (isValid) {\n onConnect === null || onConnect === void 0 ? void 0 : onConnect(connection);\n }\n\n onConnectEnd === null || onConnectEnd === void 0 ? void 0 : onConnectEnd(event);\n resetRecentHandle(recentHoveredHandle);\n setConnectionNodeId({\n connectionNodeId: null,\n connectionHandleId: null,\n connectionHandleType: null\n });\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n }\n\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp);\n}\n\nvar wrapEdge = function (EdgeComponent) {\n var EdgeWrapper = function (_a) {\n var id = _a.id,\n className = _a.className,\n type = _a.type,\n data = _a.data,\n onClick = _a.onClick,\n selected = _a.selected,\n animated = _a.animated,\n label = _a.label,\n labelStyle = _a.labelStyle,\n labelShowBg = _a.labelShowBg,\n labelBgStyle = _a.labelBgStyle,\n labelBgPadding = _a.labelBgPadding,\n labelBgBorderRadius = _a.labelBgBorderRadius,\n style = _a.style,\n arrowHeadType = _a.arrowHeadType,\n source = _a.source,\n target = _a.target,\n sourceX = _a.sourceX,\n sourceY = _a.sourceY,\n targetX = _a.targetX,\n targetY = _a.targetY,\n sourcePosition = _a.sourcePosition,\n targetPosition = _a.targetPosition,\n elementsSelectable = _a.elementsSelectable,\n markerEndId = _a.markerEndId,\n isHidden = _a.isHidden,\n sourceHandleId = _a.sourceHandleId,\n targetHandleId = _a.targetHandleId,\n handleEdgeUpdate = _a.handleEdgeUpdate,\n onConnectEdge = _a.onConnectEdge;\n var addSelectedElements = useStoreActions(function (actions) {\n return actions.addSelectedElements;\n });\n var setConnectionNodeId = useStoreActions(function (actions) {\n return actions.setConnectionNodeId;\n });\n var setPosition = useStoreActions(function (actions) {\n return actions.setConnectionPosition;\n });\n var connectionMode = useStoreState(function (state) {\n return state.connectionMode;\n });\n\n var _b = useState(false),\n updating = _b[0],\n setUpdating = _b[1];\n\n var inactive = !elementsSelectable && !onClick;\n var edgeClasses = cc(['react-flow__edge', \"react-flow__edge-\" + type, className, {\n selected: selected,\n animated: animated,\n inactive: inactive,\n updating: updating\n }]);\n var onEdgeClick = useCallback$1(function (event) {\n var edgeElement = {\n id: id,\n source: source,\n target: target,\n type: type\n };\n\n if (sourceHandleId) {\n edgeElement.sourceHandle = sourceHandleId;\n }\n\n if (targetHandleId) {\n edgeElement.targetHandle = targetHandleId;\n }\n\n if (typeof data !== 'undefined') {\n edgeElement.data = data;\n }\n\n if (elementsSelectable) {\n addSelectedElements(edgeElement);\n }\n\n onClick === null || onClick === void 0 ? void 0 : onClick(event, edgeElement);\n }, [elementsSelectable, id, source, target, type, data, sourceHandleId, targetHandleId, onClick]);\n var handleEdgeUpdater = useCallback$1(function (event, isSourceHandle) {\n var nodeId = isSourceHandle ? target : source;\n var handleId = isSourceHandle ? targetHandleId : sourceHandleId;\n\n var isValidConnection = function () {\n return true;\n };\n\n var isTarget = isSourceHandle;\n onMouseDown(event, handleId, nodeId, setConnectionNodeId, setPosition, onConnectEdge, isTarget, isValidConnection, connectionMode);\n }, [id, source, target, type, sourceHandleId, targetHandleId, setConnectionNodeId, setPosition]);\n var onEdgeUpdaterSourceMouseDown = useCallback$1(function (event) {\n handleEdgeUpdater(event, true);\n }, [id, source, sourceHandleId, handleEdgeUpdater]);\n var onEdgeUpdaterTargetMouseDown = useCallback$1(function (event) {\n handleEdgeUpdater(event, false);\n }, [id, target, targetHandleId, handleEdgeUpdater]);\n var onEdgeUpdaterMouseEnter = useCallback$1(function () {\n return setUpdating(true);\n }, [setUpdating]);\n var onEdgeUpdaterMouseOut = useCallback$1(function () {\n return setUpdating(false);\n }, [setUpdating]);\n\n if (isHidden) {\n return null;\n }\n\n return React.createElement(\"g\", {\n className: edgeClasses,\n onClick: onEdgeClick\n }, handleEdgeUpdate && React.createElement(\"g\", {\n onMouseDown: onEdgeUpdaterSourceMouseDown,\n onMouseEnter: onEdgeUpdaterMouseEnter,\n onMouseOut: onEdgeUpdaterMouseOut\n }, React.createElement(\"circle\", {\n className: \"react-flow__edgeupdater\",\n cx: sourceX,\n cy: sourceY,\n r: 10,\n stroke: \"transparent\",\n fill: \"transparent\"\n })), React.createElement(EdgeComponent, {\n id: id,\n source: source,\n target: target,\n selected: selected,\n animated: animated,\n label: label,\n labelStyle: labelStyle,\n labelShowBg: labelShowBg,\n labelBgStyle: labelBgStyle,\n labelBgPadding: labelBgPadding,\n labelBgBorderRadius: labelBgBorderRadius,\n data: data,\n style: style,\n arrowHeadType: arrowHeadType,\n sourceX: sourceX,\n sourceY: sourceY,\n targetX: targetX,\n targetY: targetY,\n sourcePosition: sourcePosition,\n targetPosition: targetPosition,\n markerEndId: markerEndId,\n sourceHandleId: sourceHandleId,\n targetHandleId: targetHandleId\n }), handleEdgeUpdate && React.createElement(\"g\", {\n onMouseDown: onEdgeUpdaterTargetMouseDown,\n onMouseEnter: onEdgeUpdaterMouseEnter,\n onMouseOut: onEdgeUpdaterMouseOut\n }, React.createElement(\"circle\", {\n className: \"react-flow__edgeupdater\",\n cx: targetX,\n cy: targetY,\n r: 10,\n stroke: \"transparent\",\n fill: \"transparent\"\n })));\n };\n\n EdgeWrapper.displayName = 'EdgeWrapper';\n return memo(EdgeWrapper);\n};\n\nfunction createEdgeTypes(edgeTypes) {\n var standardTypes = {\n default: wrapEdge(edgeTypes.default || BezierEdge),\n straight: wrapEdge(edgeTypes.bezier || StraightEdge),\n step: wrapEdge(edgeTypes.step || StepEdge),\n smoothstep: wrapEdge(edgeTypes.step || SmoothStepEdge)\n };\n var wrappedTypes = {};\n var specialTypes = Object.keys(edgeTypes).filter(function (k) {\n return !['default', 'bezier'].includes(k);\n }).reduce(function (res, key) {\n res[key] = wrapEdge(edgeTypes[key] || BezierEdge);\n return res;\n }, wrappedTypes);\n return __assign(__assign({}, standardTypes), specialTypes);\n}\n\nfunction getHandlePosition(position, node, handle) {\n if (handle === void 0) {\n handle = null;\n }\n\n var x = ((handle === null || handle === void 0 ? void 0 : handle.x) || 0) + node.__rf.position.x;\n var y = ((handle === null || handle === void 0 ? void 0 : handle.y) || 0) + node.__rf.position.y;\n var width = (handle === null || handle === void 0 ? void 0 : handle.width) || node.__rf.width;\n var height = (handle === null || handle === void 0 ? void 0 : handle.height) || node.__rf.height;\n\n switch (position) {\n case Position.Top:\n return {\n x: x + width / 2,\n y: y\n };\n\n case Position.Right:\n return {\n x: x + width,\n y: y + height / 2\n };\n\n case Position.Bottom:\n return {\n x: x + width / 2,\n y: y + height\n };\n\n case Position.Left:\n return {\n x: x,\n y: y + height / 2\n };\n }\n}\n\nfunction getHandle(bounds, handleId) {\n if (!bounds) {\n return null;\n } // there is no handleId when there are no multiple handles/ handles with ids\n // so we just pick the first one\n\n\n var handle = null;\n\n if (bounds.length === 1 || !handleId) {\n handle = bounds[0];\n } else if (handleId) {\n handle = bounds.find(function (d) {\n return d.id === handleId;\n });\n }\n\n return typeof handle === 'undefined' ? null : handle;\n}\n\nvar getEdgePositions = function (sourceNode, sourceHandle, sourcePosition, targetNode, targetHandle, targetPosition) {\n var sourceHandlePos = getHandlePosition(sourcePosition, sourceNode, sourceHandle);\n var targetHandlePos = getHandlePosition(targetPosition, targetNode, targetHandle);\n return {\n sourceX: sourceHandlePos.x,\n sourceY: sourceHandlePos.y,\n targetX: targetHandlePos.x,\n targetY: targetHandlePos.y\n };\n};\n\nfunction isEdgeVisible(_a) {\n var sourcePos = _a.sourcePos,\n targetPos = _a.targetPos,\n width = _a.width,\n height = _a.height,\n transform = _a.transform;\n var edgeBox = {\n x: Math.min(sourcePos.x, targetPos.x),\n y: Math.min(sourcePos.y, targetPos.y),\n x2: Math.max(sourcePos.x, targetPos.x),\n y2: Math.max(sourcePos.y, targetPos.y)\n };\n\n if (edgeBox.x === edgeBox.x2) {\n edgeBox.x2 += 1;\n }\n\n if (edgeBox.y === edgeBox.y2) {\n edgeBox.y2 += 1;\n }\n\n var viewBox = rectToBox({\n x: (0 - transform[0]) / transform[2],\n y: (0 - transform[1]) / transform[2],\n width: width / transform[2],\n height: height / transform[2]\n });\n var xOverlap = Math.max(0, Math.min(viewBox.x2, edgeBox.x2) - Math.max(viewBox.x, edgeBox.x));\n var yOverlap = Math.max(0, Math.min(viewBox.y2, edgeBox.y2) - Math.max(viewBox.y, edgeBox.y));\n var overlappingArea = Math.ceil(xOverlap * yOverlap);\n return overlappingArea > 0;\n}\n\nvar getSourceTargetNodes = function (edge, nodes) {\n return nodes.reduce(function (res, node) {\n if (node.id === edge.source) {\n res.sourceNode = node;\n }\n\n if (node.id === edge.target) {\n res.targetNode = node;\n }\n\n return res;\n }, {\n sourceNode: null,\n targetNode: null\n });\n};\n\nvar Edge = function (_a) {\n var edge = _a.edge,\n props = _a.props,\n nodes = _a.nodes,\n selectedElements = _a.selectedElements,\n elementsSelectable = _a.elementsSelectable,\n transform = _a.transform,\n width = _a.width,\n height = _a.height,\n onlyRenderVisibleElements = _a.onlyRenderVisibleElements,\n connectionMode = _a.connectionMode;\n var sourceHandleId = edge.sourceHandle || null;\n var targetHandleId = edge.targetHandle || null;\n\n var _b = getSourceTargetNodes(edge, nodes),\n sourceNode = _b.sourceNode,\n targetNode = _b.targetNode;\n\n var onConnectEdge = useCallback$1(function (connection) {\n var _a;\n\n (_a = props.onEdgeUpdate) === null || _a === void 0 ? void 0 : _a.call(props, edge, connection);\n }, [edge]);\n\n if (!sourceNode) {\n console.warn(\"couldn't create edge for source id: \" + edge.source + \"; edge id: \" + edge.id);\n return null;\n }\n\n if (!targetNode) {\n console.warn(\"couldn't create edge for target id: \" + edge.target + \"; edge id: \" + edge.id);\n return null;\n } // source and target node need to be initialized\n\n\n if (!sourceNode.__rf.width || !targetNode.__rf.width) {\n return null;\n }\n\n var edgeType = edge.type || 'default';\n var EdgeComponent = props.edgeTypes[edgeType] || props.edgeTypes.default;\n var targetNodeBounds = targetNode.__rf.handleBounds; // when connection type is loose we can define all handles as sources\n\n var targetNodeHandles = connectionMode === ConnectionMode.Strict ? targetNodeBounds.target : targetNodeBounds.target || targetNodeBounds.source;\n var sourceHandle = getHandle(sourceNode.__rf.handleBounds.source, sourceHandleId);\n var targetHandle = getHandle(targetNodeHandles, targetHandleId);\n var sourcePosition = sourceHandle ? sourceHandle.position : Position.Bottom;\n var targetPosition = targetHandle ? targetHandle.position : Position.Top;\n\n if (!sourceHandle) {\n console.warn(\"couldn't create edge for source handle id: \" + sourceHandleId + \"; edge id: \" + edge.id);\n return null;\n }\n\n if (!targetHandle) {\n console.warn(\"couldn't create edge for target handle id: \" + targetHandleId + \"; edge id: \" + edge.id);\n return null;\n }\n\n var _c = getEdgePositions(sourceNode, sourceHandle, sourcePosition, targetNode, targetHandle, targetPosition),\n sourceX = _c.sourceX,\n sourceY = _c.sourceY,\n targetX = _c.targetX,\n targetY = _c.targetY;\n\n var isVisible = onlyRenderVisibleElements ? isEdgeVisible({\n sourcePos: {\n x: sourceX,\n y: sourceY\n },\n targetPos: {\n x: targetX,\n y: targetY\n },\n width: width,\n height: height,\n transform: transform\n }) : true;\n\n if (!isVisible) {\n return null;\n }\n\n var isSelected = (selectedElements === null || selectedElements === void 0 ? void 0 : selectedElements.some(function (elm) {\n return isEdge(elm) && elm.id === edge.id;\n })) || false;\n return React.createElement(EdgeComponent, {\n key: edge.id,\n id: edge.id,\n className: edge.className,\n type: edge.type,\n data: edge.data,\n onClick: props.onElementClick,\n selected: isSelected,\n animated: edge.animated,\n label: edge.label,\n labelStyle: edge.labelStyle,\n labelShowBg: edge.labelShowBg,\n labelBgStyle: edge.labelBgStyle,\n labelBgPadding: edge.labelBgPadding,\n labelBgBorderRadius: edge.labelBgBorderRadius,\n style: edge.style,\n arrowHeadType: edge.arrowHeadType,\n source: edge.source,\n target: edge.target,\n sourceHandleId: sourceHandleId,\n targetHandleId: targetHandleId,\n sourceX: sourceX,\n sourceY: sourceY,\n targetX: targetX,\n targetY: targetY,\n sourcePosition: sourcePosition,\n targetPosition: targetPosition,\n elementsSelectable: elementsSelectable,\n markerEndId: props.markerEndId,\n isHidden: edge.isHidden,\n onConnectEdge: onConnectEdge,\n handleEdgeUpdate: typeof props.onEdgeUpdate !== 'undefined'\n });\n};\n\nvar EdgeRenderer = function (props) {\n var transform = useStoreState(function (state) {\n return state.transform;\n });\n var edges = useStoreState(function (state) {\n return state.edges;\n });\n var connectionNodeId = useStoreState(function (state) {\n return state.connectionNodeId;\n });\n var connectionHandleId = useStoreState(function (state) {\n return state.connectionHandleId;\n });\n var connectionHandleType = useStoreState(function (state) {\n return state.connectionHandleType;\n });\n var connectionPosition = useStoreState(function (state) {\n return state.connectionPosition;\n });\n var selectedElements = useStoreState(function (state) {\n return state.selectedElements;\n });\n var nodesConnectable = useStoreState(function (state) {\n return state.nodesConnectable;\n });\n var elementsSelectable = useStoreState(function (state) {\n return state.elementsSelectable;\n });\n var width = useStoreState(function (state) {\n return state.width;\n });\n var height = useStoreState(function (state) {\n return state.height;\n });\n var nodes = useStoreState(function (state) {\n return state.nodes;\n });\n\n if (!width) {\n return null;\n }\n\n var connectionLineType = props.connectionLineType,\n arrowHeadColor = props.arrowHeadColor,\n connectionLineStyle = props.connectionLineStyle,\n connectionLineComponent = props.connectionLineComponent,\n onlyRenderVisibleElements = props.onlyRenderVisibleElements;\n var transformStyle = \"translate(\" + transform[0] + \",\" + transform[1] + \") scale(\" + transform[2] + \")\";\n var renderConnectionLine = connectionNodeId && connectionHandleType;\n return React.createElement(\"svg\", {\n width: width,\n height: height,\n className: \"react-flow__edges\"\n }, React.createElement(MarkerDefinitions, {\n color: arrowHeadColor\n }), React.createElement(\"g\", {\n transform: transformStyle\n }, edges.map(function (edge) {\n return React.createElement(Edge, {\n key: edge.id,\n edge: edge,\n props: props,\n nodes: nodes,\n selectedElements: selectedElements,\n elementsSelectable: elementsSelectable,\n transform: transform,\n width: width,\n height: height,\n onlyRenderVisibleElements: onlyRenderVisibleElements\n });\n }), renderConnectionLine && React.createElement(ConnectionLine, {\n nodes: nodes,\n connectionNodeId: connectionNodeId,\n connectionHandleId: connectionHandleId,\n connectionHandleType: connectionHandleType,\n connectionPositionX: connectionPosition.x,\n connectionPositionY: connectionPosition.y,\n transform: transform,\n connectionLineStyle: connectionLineStyle,\n connectionLineType: connectionLineType,\n isConnectable: nodesConnectable,\n CustomConnectionLineComponent: connectionLineComponent\n })));\n};\n\nEdgeRenderer.displayName = 'EdgeRenderer';\nvar EdgeRenderer$1 = memo(EdgeRenderer);\nvar DEFAULT_PADDING = 0.1;\nvar initialZoomPanHelper = {\n zoomIn: function () {},\n zoomOut: function () {},\n zoomTo: function (_) {},\n transform: function (_) {},\n fitView: function (_) {},\n setCenter: function (_, __) {},\n fitBounds: function (_) {},\n initialized: false\n};\n\nvar getTransformForBounds = function (bounds, width, height, minZoom, maxZoom, padding) {\n if (padding === void 0) {\n padding = DEFAULT_PADDING;\n }\n\n var xZoom = width / (bounds.width * (1 + padding));\n var yZoom = height / (bounds.height * (1 + padding));\n var zoom = Math.min(xZoom, yZoom);\n var clampedZoom = clamp(zoom, minZoom, maxZoom);\n var boundsCenterX = bounds.x + bounds.width / 2;\n var boundsCenterY = bounds.y + bounds.height / 2;\n var x = width / 2 - boundsCenterX * clampedZoom;\n var y = height / 2 - boundsCenterY * clampedZoom;\n return [x, y, clampedZoom];\n};\n\nvar useZoomPanHelper = function () {\n var store = useStore();\n var d3Zoom = useStoreState(function (s) {\n return s.d3Zoom;\n });\n var d3Selection = useStoreState(function (s) {\n return s.d3Selection;\n });\n var zoomPanHelperFunctions = useMemo$1(function () {\n if (d3Selection && d3Zoom) {\n return {\n zoomIn: function () {\n return d3Zoom.scaleBy(d3Selection, 1.2);\n },\n zoomOut: function () {\n return d3Zoom.scaleBy(d3Selection, 1 / 1.2);\n },\n zoomTo: function (zoomLevel) {\n return d3Zoom.scaleTo(d3Selection, zoomLevel);\n },\n transform: function (transform) {\n var nextTransform = identity$1.translate(transform.x, transform.y).scale(transform.zoom);\n d3Zoom.transform(d3Selection, nextTransform);\n },\n fitView: function (options) {\n var _a;\n\n if (options === void 0) {\n options = {\n padding: DEFAULT_PADDING,\n includeHiddenNodes: false\n };\n }\n\n var _b = store.getState(),\n nodes = _b.nodes,\n width = _b.width,\n height = _b.height,\n minZoom = _b.minZoom,\n maxZoom = _b.maxZoom;\n\n if (!nodes.length) {\n return;\n }\n\n var bounds = getRectOfNodes(options.includeHiddenNodes ? nodes : nodes.filter(function (node) {\n return !node.isHidden;\n }));\n var padding = (_a = options.padding) !== null && _a !== void 0 ? _a : DEFAULT_PADDING;\n\n var _c = getTransformForBounds(bounds, width, height, minZoom, maxZoom, padding),\n x = _c[0],\n y = _c[1],\n zoom = _c[2];\n\n var transform = identity$1.translate(x, y).scale(zoom);\n d3Zoom.transform(d3Selection, transform);\n },\n setCenter: function (x, y, zoom) {\n var _a = store.getState(),\n width = _a.width,\n height = _a.height,\n maxZoom = _a.maxZoom;\n\n var nextZoom = typeof zoom !== 'undefined' ? zoom : maxZoom;\n var centerX = width / 2 - x * nextZoom;\n var centerY = height / 2 - y * nextZoom;\n var transform = identity$1.translate(centerX, centerY).scale(nextZoom);\n d3Zoom.transform(d3Selection, transform);\n },\n fitBounds: function (bounds, padding) {\n if (padding === void 0) {\n padding = DEFAULT_PADDING;\n }\n\n var _a = store.getState(),\n width = _a.width,\n height = _a.height,\n minZoom = _a.minZoom,\n maxZoom = _a.maxZoom;\n\n var _b = getTransformForBounds(bounds, width, height, minZoom, maxZoom, padding),\n x = _b[0],\n y = _b[1],\n zoom = _b[2];\n\n var transform = identity$1.translate(x, y).scale(zoom);\n d3Zoom.transform(d3Selection, transform);\n },\n initialized: true\n };\n }\n\n return initialZoomPanHelper;\n }, [d3Zoom, d3Selection]);\n return zoomPanHelperFunctions;\n};\n\nvar GraphView = function (_a) {\n var nodeTypes = _a.nodeTypes,\n edgeTypes = _a.edgeTypes,\n onMove = _a.onMove,\n onMoveStart = _a.onMoveStart,\n onMoveEnd = _a.onMoveEnd,\n onLoad = _a.onLoad,\n onElementClick = _a.onElementClick,\n onNodeMouseEnter = _a.onNodeMouseEnter,\n onNodeMouseMove = _a.onNodeMouseMove,\n onNodeMouseLeave = _a.onNodeMouseLeave,\n onNodeContextMenu = _a.onNodeContextMenu,\n onNodeDragStart = _a.onNodeDragStart,\n onNodeDrag = _a.onNodeDrag,\n onNodeDragStop = _a.onNodeDragStop,\n onSelectionDragStart = _a.onSelectionDragStart,\n onSelectionDrag = _a.onSelectionDrag,\n onSelectionDragStop = _a.onSelectionDragStop,\n onSelectionContextMenu = _a.onSelectionContextMenu,\n connectionMode = _a.connectionMode,\n connectionLineType = _a.connectionLineType,\n connectionLineStyle = _a.connectionLineStyle,\n connectionLineComponent = _a.connectionLineComponent,\n selectionKeyCode = _a.selectionKeyCode,\n multiSelectionKeyCode = _a.multiSelectionKeyCode,\n zoomActivationKeyCode = _a.zoomActivationKeyCode,\n onElementsRemove = _a.onElementsRemove,\n deleteKeyCode = _a.deleteKeyCode,\n onConnect = _a.onConnect,\n onConnectStart = _a.onConnectStart,\n onConnectStop = _a.onConnectStop,\n onConnectEnd = _a.onConnectEnd,\n snapToGrid = _a.snapToGrid,\n snapGrid = _a.snapGrid,\n onlyRenderVisibleElements = _a.onlyRenderVisibleElements,\n nodesDraggable = _a.nodesDraggable,\n nodesConnectable = _a.nodesConnectable,\n elementsSelectable = _a.elementsSelectable,\n selectNodesOnDrag = _a.selectNodesOnDrag,\n minZoom = _a.minZoom,\n maxZoom = _a.maxZoom,\n defaultZoom = _a.defaultZoom,\n defaultPosition = _a.defaultPosition,\n translateExtent = _a.translateExtent,\n nodeExtent = _a.nodeExtent,\n arrowHeadColor = _a.arrowHeadColor,\n markerEndId = _a.markerEndId,\n zoomOnScroll = _a.zoomOnScroll,\n zoomOnPinch = _a.zoomOnPinch,\n panOnScroll = _a.panOnScroll,\n panOnScrollSpeed = _a.panOnScrollSpeed,\n panOnScrollMode = _a.panOnScrollMode,\n zoomOnDoubleClick = _a.zoomOnDoubleClick,\n paneMoveable = _a.paneMoveable,\n onPaneClick = _a.onPaneClick,\n onPaneScroll = _a.onPaneScroll,\n onPaneContextMenu = _a.onPaneContextMenu,\n onEdgeUpdate = _a.onEdgeUpdate;\n var isInitialised = useRef(false);\n var setOnConnect = useStoreActions(function (actions) {\n return actions.setOnConnect;\n });\n var setOnConnectStart = useStoreActions(function (actions) {\n return actions.setOnConnectStart;\n });\n var setOnConnectStop = useStoreActions(function (actions) {\n return actions.setOnConnectStop;\n });\n var setOnConnectEnd = useStoreActions(function (actions) {\n return actions.setOnConnectEnd;\n });\n var setSnapGrid = useStoreActions(function (actions) {\n return actions.setSnapGrid;\n });\n var setSnapToGrid = useStoreActions(function (actions) {\n return actions.setSnapToGrid;\n });\n var setNodesDraggable = useStoreActions(function (actions) {\n return actions.setNodesDraggable;\n });\n var setNodesConnectable = useStoreActions(function (actions) {\n return actions.setNodesConnectable;\n });\n var setElementsSelectable = useStoreActions(function (actions) {\n return actions.setElementsSelectable;\n });\n var setMinZoom = useStoreActions(function (actions) {\n return actions.setMinZoom;\n });\n var setMaxZoom = useStoreActions(function (actions) {\n return actions.setMaxZoom;\n });\n var setTranslateExtent = useStoreActions(function (actions) {\n return actions.setTranslateExtent;\n });\n var setNodeExtent = useStoreActions(function (actions) {\n return actions.setNodeExtent;\n });\n var setConnectionMode = useStoreActions(function (actions) {\n return actions.setConnectionMode;\n });\n var currentStore = useStore();\n\n var _b = useZoomPanHelper(),\n zoomIn = _b.zoomIn,\n zoomOut = _b.zoomOut,\n zoomTo = _b.zoomTo,\n transform = _b.transform,\n fitView = _b.fitView,\n initialized = _b.initialized;\n\n useEffect(function () {\n if (!isInitialised.current && initialized) {\n if (onLoad) {\n onLoad({\n fitView: function (params) {\n if (params === void 0) {\n params = {\n padding: 0.1\n };\n }\n\n return fitView(params);\n },\n zoomIn: zoomIn,\n zoomOut: zoomOut,\n zoomTo: zoomTo,\n setTransform: transform,\n project: onLoadProject(currentStore),\n getElements: onLoadGetElements(currentStore),\n toObject: onLoadToObject(currentStore)\n });\n }\n\n isInitialised.current = true;\n }\n }, [onLoad, zoomIn, zoomOut, zoomTo, transform, fitView, initialized]);\n useEffect(function () {\n if (onConnect) {\n setOnConnect(onConnect);\n }\n }, [onConnect]);\n useEffect(function () {\n if (onConnectStart) {\n setOnConnectStart(onConnectStart);\n }\n }, [onConnectStart]);\n useEffect(function () {\n if (onConnectStop) {\n setOnConnectStop(onConnectStop);\n }\n }, [onConnectStop]);\n useEffect(function () {\n if (onConnectEnd) {\n setOnConnectEnd(onConnectEnd);\n }\n }, [onConnectEnd]);\n useEffect(function () {\n if (typeof snapToGrid !== 'undefined') {\n setSnapToGrid(snapToGrid);\n }\n }, [snapToGrid]);\n useEffect(function () {\n if (typeof snapGrid !== 'undefined') {\n setSnapGrid(snapGrid);\n }\n }, [snapGrid]);\n useEffect(function () {\n if (typeof nodesDraggable !== 'undefined') {\n setNodesDraggable(nodesDraggable);\n }\n }, [nodesDraggable]);\n useEffect(function () {\n if (typeof nodesConnectable !== 'undefined') {\n setNodesConnectable(nodesConnectable);\n }\n }, [nodesConnectable]);\n useEffect(function () {\n if (typeof elementsSelectable !== 'undefined') {\n setElementsSelectable(elementsSelectable);\n }\n }, [elementsSelectable]);\n useEffect(function () {\n if (typeof minZoom !== 'undefined') {\n setMinZoom(minZoom);\n }\n }, [minZoom]);\n useEffect(function () {\n if (typeof maxZoom !== 'undefined') {\n setMaxZoom(maxZoom);\n }\n }, [maxZoom]);\n useEffect(function () {\n if (typeof translateExtent !== 'undefined') {\n setTranslateExtent(translateExtent);\n }\n }, [translateExtent]);\n useEffect(function () {\n if (typeof nodeExtent !== 'undefined') {\n setNodeExtent(nodeExtent);\n }\n }, [nodeExtent]);\n useEffect(function () {\n if (typeof connectionMode !== 'undefined') {\n setConnectionMode(connectionMode);\n }\n }, [connectionMode]);\n return React.createElement(FlowRenderer$1, {\n onPaneClick: onPaneClick,\n onPaneContextMenu: onPaneContextMenu,\n onPaneScroll: onPaneScroll,\n onElementsRemove: onElementsRemove,\n deleteKeyCode: deleteKeyCode,\n selectionKeyCode: selectionKeyCode,\n multiSelectionKeyCode: multiSelectionKeyCode,\n zoomActivationKeyCode: zoomActivationKeyCode,\n elementsSelectable: elementsSelectable,\n onMove: onMove,\n onMoveStart: onMoveStart,\n onMoveEnd: onMoveEnd,\n zoomOnScroll: zoomOnScroll,\n zoomOnPinch: zoomOnPinch,\n zoomOnDoubleClick: zoomOnDoubleClick,\n panOnScroll: panOnScroll,\n panOnScrollSpeed: panOnScrollSpeed,\n panOnScrollMode: panOnScrollMode,\n paneMoveable: paneMoveable,\n defaultPosition: defaultPosition,\n defaultZoom: defaultZoom,\n translateExtent: translateExtent,\n onSelectionDragStart: onSelectionDragStart,\n onSelectionDrag: onSelectionDrag,\n onSelectionDragStop: onSelectionDragStop,\n onSelectionContextMenu: onSelectionContextMenu\n }, React.createElement(NodeRenderer$1, {\n nodeTypes: nodeTypes,\n onElementClick: onElementClick,\n onNodeMouseEnter: onNodeMouseEnter,\n onNodeMouseMove: onNodeMouseMove,\n onNodeMouseLeave: onNodeMouseLeave,\n onNodeContextMenu: onNodeContextMenu,\n onNodeDragStop: onNodeDragStop,\n onNodeDrag: onNodeDrag,\n onNodeDragStart: onNodeDragStart,\n selectNodesOnDrag: selectNodesOnDrag,\n snapToGrid: snapToGrid,\n snapGrid: snapGrid,\n onlyRenderVisibleElements: onlyRenderVisibleElements\n }), React.createElement(EdgeRenderer$1, {\n edgeTypes: edgeTypes,\n onElementClick: onElementClick,\n connectionLineType: connectionLineType,\n connectionLineStyle: connectionLineStyle,\n connectionLineComponent: connectionLineComponent,\n connectionMode: connectionMode,\n arrowHeadColor: arrowHeadColor,\n markerEndId: markerEndId,\n onEdgeUpdate: onEdgeUpdate,\n onlyRenderVisibleElements: onlyRenderVisibleElements\n }));\n};\n\nGraphView.displayName = 'GraphView';\nvar GraphView$1 = memo(GraphView);\n\nvar ElementUpdater = function (_a) {\n var elements = _a.elements;\n var setElements = useStoreActions(function (actions) {\n return actions.setElements;\n });\n useEffect(function () {\n setElements(elements);\n }, [elements]);\n return null;\n};\n\nvar NodeIdContext = createContext(null);\nvar Provider = NodeIdContext.Provider;\nNodeIdContext.Consumer;\n\nvar alwaysValid = function () {\n return true;\n};\n\nvar Handle = function (_a) {\n var _b = _a.type,\n type = _b === void 0 ? 'source' : _b,\n _c = _a.position,\n position = _c === void 0 ? Position.Top : _c,\n _d = _a.isValidConnection,\n isValidConnection = _d === void 0 ? alwaysValid : _d,\n _e = _a.isConnectable,\n isConnectable = _e === void 0 ? true : _e,\n id = _a.id,\n onConnect = _a.onConnect,\n children = _a.children,\n className = _a.className,\n rest = __rest(_a, [\"type\", \"position\", \"isValidConnection\", \"isConnectable\", \"id\", \"onConnect\", \"children\", \"className\"]);\n\n var nodeId = useContext(NodeIdContext);\n var setPosition = useStoreActions(function (actions) {\n return actions.setConnectionPosition;\n });\n var setConnectionNodeId = useStoreActions(function (actions) {\n return actions.setConnectionNodeId;\n });\n var onConnectAction = useStoreState(function (state) {\n return state.onConnect;\n });\n var onConnectStart = useStoreState(function (state) {\n return state.onConnectStart;\n });\n var onConnectStop = useStoreState(function (state) {\n return state.onConnectStop;\n });\n var onConnectEnd = useStoreState(function (state) {\n return state.onConnectEnd;\n });\n var connectionMode = useStoreState(function (state) {\n return state.connectionMode;\n });\n var handleId = id || null;\n var isTarget = type === 'target';\n var onConnectExtended = useCallback$1(function (params) {\n onConnectAction === null || onConnectAction === void 0 ? void 0 : onConnectAction(params);\n onConnect === null || onConnect === void 0 ? void 0 : onConnect(params);\n }, [onConnectAction, onConnect]);\n var onMouseDownHandler = useCallback$1(function (event) {\n onMouseDown(event, handleId, nodeId, setConnectionNodeId, setPosition, onConnectExtended, isTarget, isValidConnection, connectionMode, onConnectStart, onConnectStop, onConnectEnd);\n }, [handleId, nodeId, setConnectionNodeId, setPosition, onConnectExtended, isTarget, isValidConnection, connectionMode, onConnectStart, onConnectStop, onConnectEnd]);\n var handleClasses = cc(['react-flow__handle', \"react-flow__handle-\" + position, 'nodrag', className, {\n source: !isTarget,\n target: isTarget,\n connectable: isConnectable\n }]);\n return React.createElement(\"div\", __assign({\n \"data-handleid\": handleId,\n \"data-nodeid\": nodeId,\n \"data-handlepos\": position,\n className: handleClasses,\n onMouseDown: onMouseDownHandler\n }, rest), children);\n};\n\nHandle.displayName = 'Handle';\nvar Handle$1 = memo(Handle);\n\nvar DefaultNode = function (_a) {\n var data = _a.data,\n isConnectable = _a.isConnectable,\n _b = _a.targetPosition,\n targetPosition = _b === void 0 ? Position.Top : _b,\n _c = _a.sourcePosition,\n sourcePosition = _c === void 0 ? Position.Bottom : _c;\n return React.createElement(React.Fragment, null, React.createElement(Handle$1, {\n type: \"target\",\n position: targetPosition,\n isConnectable: isConnectable\n }), data.label, React.createElement(Handle$1, {\n type: \"source\",\n position: sourcePosition,\n isConnectable: isConnectable\n }));\n};\n\nDefaultNode.displayName = 'DefaultNode';\nvar DefaultNode$1 = memo(DefaultNode);\n\nvar InputNode = function (_a) {\n var data = _a.data,\n isConnectable = _a.isConnectable,\n _b = _a.sourcePosition,\n sourcePosition = _b === void 0 ? Position.Bottom : _b;\n return React.createElement(React.Fragment, null, data.label, React.createElement(Handle$1, {\n type: \"source\",\n position: sourcePosition,\n isConnectable: isConnectable\n }));\n};\n\nInputNode.displayName = 'InputNode';\nvar InputNode$1 = memo(InputNode);\n\nvar OutputNode = function (_a) {\n var data = _a.data,\n isConnectable = _a.isConnectable,\n _b = _a.targetPosition,\n targetPosition = _b === void 0 ? Position.Top : _b;\n return React.createElement(React.Fragment, null, React.createElement(Handle$1, {\n type: \"target\",\n position: targetPosition,\n isConnectable: isConnectable\n }), data.label);\n};\n\nOutputNode.displayName = 'OutputNode';\nvar OutputNode$1 = memo(OutputNode);\n\nvar wrapNode = function (NodeComponent) {\n var NodeWrapper = function (_a) {\n var id = _a.id,\n type = _a.type,\n data = _a.data,\n scale = _a.scale,\n xPos = _a.xPos,\n yPos = _a.yPos,\n selected = _a.selected,\n onClick = _a.onClick,\n onMouseEnter = _a.onMouseEnter,\n onMouseMove = _a.onMouseMove,\n onMouseLeave = _a.onMouseLeave,\n onContextMenu = _a.onContextMenu,\n onNodeDragStart = _a.onNodeDragStart,\n onNodeDrag = _a.onNodeDrag,\n onNodeDragStop = _a.onNodeDragStop,\n style = _a.style,\n className = _a.className,\n isDraggable = _a.isDraggable,\n isSelectable = _a.isSelectable,\n isConnectable = _a.isConnectable,\n selectNodesOnDrag = _a.selectNodesOnDrag,\n sourcePosition = _a.sourcePosition,\n targetPosition = _a.targetPosition,\n isHidden = _a.isHidden,\n isInitialized = _a.isInitialized,\n snapToGrid = _a.snapToGrid,\n snapGrid = _a.snapGrid,\n isDragging = _a.isDragging,\n resizeObserver = _a.resizeObserver;\n var updateNodeDimensions = useStoreActions(function (actions) {\n return actions.updateNodeDimensions;\n });\n var addSelectedElements = useStoreActions(function (actions) {\n return actions.addSelectedElements;\n });\n var updateNodePosDiff = useStoreActions(function (actions) {\n return actions.updateNodePosDiff;\n });\n var unsetNodesSelection = useStoreActions(function (actions) {\n return actions.unsetNodesSelection;\n });\n var nodeElement = useRef(null);\n var node = useMemo$1(function () {\n return {\n id: id,\n type: type,\n position: {\n x: xPos,\n y: yPos\n },\n data: data\n };\n }, [id, type, xPos, yPos, data]);\n var grid = useMemo$1(function () {\n return snapToGrid ? snapGrid : [1, 1];\n }, [snapToGrid, snapGrid]);\n var nodeStyle = useMemo$1(function () {\n return __assign({\n zIndex: selected ? 10 : 3,\n transform: \"translate(\" + xPos + \"px,\" + yPos + \"px)\",\n pointerEvents: isSelectable || isDraggable || onClick ? 'all' : 'none',\n opacity: isInitialized ? 1 : 0\n }, style);\n }, [selected, xPos, yPos, isSelectable, isDraggable, onClick, isInitialized, style]);\n var onMouseEnterHandler = useMemo$1(function () {\n if (!onMouseEnter || isDragging) {\n return;\n }\n\n return function (event) {\n return onMouseEnter(event, node);\n };\n }, [onMouseEnter, isDragging, node]);\n var onMouseMoveHandler = useMemo$1(function () {\n if (!onMouseMove || isDragging) {\n return;\n }\n\n return function (event) {\n return onMouseMove(event, node);\n };\n }, [onMouseMove, isDragging, node]);\n var onMouseLeaveHandler = useMemo$1(function () {\n if (!onMouseLeave || isDragging) {\n return;\n }\n\n return function (event) {\n return onMouseLeave(event, node);\n };\n }, [onMouseLeave, isDragging, node]);\n var onContextMenuHandler = useMemo$1(function () {\n if (!onContextMenu) {\n return;\n }\n\n return function (event) {\n return onContextMenu(event, node);\n };\n }, [onContextMenu, node]);\n var onSelectNodeHandler = useCallback$1(function (event) {\n if (!isDraggable) {\n if (isSelectable) {\n unsetNodesSelection();\n\n if (!selected) {\n addSelectedElements(node);\n }\n }\n\n onClick === null || onClick === void 0 ? void 0 : onClick(event, node);\n }\n }, [isSelectable, selected, isDraggable, onClick, node]);\n var onDragStart = useCallback$1(function (event) {\n onNodeDragStart === null || onNodeDragStart === void 0 ? void 0 : onNodeDragStart(event, node);\n\n if (selectNodesOnDrag && isSelectable) {\n unsetNodesSelection();\n\n if (!selected) {\n addSelectedElements(node);\n }\n } else if (!selectNodesOnDrag && !selected && isSelectable) {\n unsetNodesSelection();\n addSelectedElements([]);\n }\n }, [node, selected, selectNodesOnDrag, isSelectable, onNodeDragStart]);\n var onDrag = useCallback$1(function (event, draggableData) {\n if (onNodeDrag) {\n node.position.x += draggableData.deltaX;\n node.position.y += draggableData.deltaY;\n onNodeDrag(event, node);\n }\n\n updateNodePosDiff({\n id: id,\n diff: {\n x: draggableData.deltaX,\n y: draggableData.deltaY\n }\n });\n }, [id, node, onNodeDrag]);\n var onDragStop = useCallback$1(function (event) {\n // onDragStop also gets called when user just clicks on a node.\n // Because of that we set dragging to true inside the onDrag handler and handle the click here\n if (!isDragging) {\n if (isSelectable && !selectNodesOnDrag && !selected) {\n addSelectedElements(node);\n }\n\n onClick === null || onClick === void 0 ? void 0 : onClick(event, node);\n return;\n }\n\n updateNodePosDiff({\n id: node.id,\n isDragging: false\n });\n onNodeDragStop === null || onNodeDragStop === void 0 ? void 0 : onNodeDragStop(event, node);\n }, [node, isSelectable, selectNodesOnDrag, onClick, onNodeDragStop, isDragging, selected]);\n useEffect(function () {\n if (nodeElement.current && !isHidden) {\n updateNodeDimensions({\n id: id,\n nodeElement: nodeElement.current\n });\n }\n }, [id, isHidden, sourcePosition, targetPosition]);\n useEffect(function () {\n if (nodeElement.current) {\n var currNode_1 = nodeElement.current;\n resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.observe(currNode_1);\n return function () {\n return resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.unobserve(currNode_1);\n };\n }\n\n return;\n }, []);\n\n if (isHidden) {\n return null;\n }\n\n var nodeClasses = cc(['react-flow__node', \"react-flow__node-\" + type, className, {\n selected: selected,\n selectable: isSelectable\n }]);\n return React.createElement(DraggableCore_1$1, {\n onStart: onDragStart,\n onDrag: onDrag,\n onStop: onDragStop,\n scale: scale,\n disabled: !isDraggable,\n cancel: \".nodrag\",\n nodeRef: nodeElement,\n grid: grid\n }, React.createElement(\"div\", {\n className: nodeClasses,\n ref: nodeElement,\n style: nodeStyle,\n onMouseEnter: onMouseEnterHandler,\n onMouseMove: onMouseMoveHandler,\n onMouseLeave: onMouseLeaveHandler,\n onContextMenu: onContextMenuHandler,\n onClick: onSelectNodeHandler,\n \"data-id\": id\n }, React.createElement(Provider, {\n value: id\n }, React.createElement(NodeComponent, {\n id: id,\n data: data,\n type: type,\n xPos: xPos,\n yPos: yPos,\n selected: selected,\n isConnectable: isConnectable,\n sourcePosition: sourcePosition,\n targetPosition: targetPosition,\n isDragging: isDragging\n }))));\n };\n\n NodeWrapper.displayName = 'NodeWrapper';\n return memo(NodeWrapper);\n};\n\nfunction createNodeTypes(nodeTypes) {\n var standardTypes = {\n input: wrapNode(nodeTypes.input || InputNode$1),\n default: wrapNode(nodeTypes.default || DefaultNode$1),\n output: wrapNode(nodeTypes.output || OutputNode$1)\n };\n var wrappedTypes = {};\n var specialTypes = Object.keys(nodeTypes).filter(function (k) {\n return !['input', 'default', 'output'].includes(k);\n }).reduce(function (res, key) {\n res[key] = wrapNode(nodeTypes[key] || DefaultNode$1);\n return res;\n }, wrappedTypes);\n return __assign(__assign({}, standardTypes), specialTypes);\n} // This is just a helper component for calling the onSelectionChange listener.\n// As soon as easy-peasy has implemented the effectOn hook, we can remove this component\n// and use the hook instead. https://github.com/ctrlplusb/easy-peasy/pull/459\n\n\nvar SelectionListener = function (_a) {\n var onSelectionChange = _a.onSelectionChange;\n var selectedElements = useStoreState(function (s) {\n return s.selectedElements;\n });\n useEffect(function () {\n onSelectionChange(selectedElements);\n }, [selectedElements]);\n return null;\n}; // do not edit .js files directly - edit src/index.jst\n\n\nvar fastDeepEqual = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n var length, i, keys;\n\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n\n for (i = length; i-- !== 0;) if (!equal(a[i], b[i])) return false;\n\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n } // true if both NaN, false otherwise\n\n\n return a !== a && b !== b;\n};\n\nvar getHandleBounds = function (nodeElement, scale) {\n var bounds = nodeElement.getBoundingClientRect();\n return {\n source: getHandleBoundsByHandleType('.source', nodeElement, bounds, scale),\n target: getHandleBoundsByHandleType('.target', nodeElement, bounds, scale)\n };\n};\n\nvar getHandleBoundsByHandleType = function (selector, nodeElement, parentBounds, k) {\n var handles = nodeElement.querySelectorAll(selector);\n\n if (!handles || !handles.length) {\n return null;\n }\n\n var handlesArray = Array.from(handles);\n return handlesArray.map(function (handle) {\n var bounds = handle.getBoundingClientRect();\n var dimensions = getDimensions(handle);\n var handleId = handle.getAttribute('data-handleid');\n var handlePosition = handle.getAttribute('data-handlepos');\n return __assign({\n id: handleId,\n position: handlePosition,\n x: (bounds.left - parentBounds.left) / k,\n y: (bounds.top - parentBounds.top) / k\n }, dimensions);\n });\n};\n\nvar storeModel = {\n width: 0,\n height: 0,\n transform: [0, 0, 1],\n elements: [],\n nodes: easyPeasy.computed(function (state) {\n return state.elements.filter(isNode);\n }),\n edges: easyPeasy.computed(function (state) {\n return state.elements.filter(isEdge);\n }),\n selectedElements: null,\n selectedNodesBbox: {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n viewportBox: easyPeasy.computed(function (state) {\n return {\n x: 0,\n y: 0,\n width: state.width,\n height: state.height\n };\n }),\n d3Zoom: null,\n d3Selection: null,\n d3ZoomHandler: undefined,\n minZoom: 0.5,\n maxZoom: 2,\n translateExtent: [[Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY], [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY]],\n nodeExtent: [[Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY], [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY]],\n nodesSelectionActive: false,\n selectionActive: false,\n userSelectionRect: {\n startX: 0,\n startY: 0,\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n draw: false\n },\n connectionNodeId: null,\n connectionHandleId: null,\n connectionHandleType: 'source',\n connectionPosition: {\n x: 0,\n y: 0\n },\n connectionMode: ConnectionMode.Strict,\n snapGrid: [15, 15],\n snapToGrid: false,\n nodesDraggable: true,\n nodesConnectable: true,\n elementsSelectable: true,\n multiSelectionActive: false,\n reactFlowVersion: \"8.8.0\",\n setOnConnect: easyPeasy.action(function (state, onConnect) {\n state.onConnect = onConnect;\n }),\n setOnConnectStart: easyPeasy.action(function (state, onConnectStart) {\n state.onConnectStart = onConnectStart;\n }),\n setOnConnectStop: easyPeasy.action(function (state, onConnectStop) {\n state.onConnectStop = onConnectStop;\n }),\n setOnConnectEnd: easyPeasy.action(function (state, onConnectEnd) {\n state.onConnectEnd = onConnectEnd;\n }),\n setElements: easyPeasy.action(function (state, propElements) {\n var _loop_1 = function (i) {\n var se = state.elements[i];\n var elementExistsInProps = propElements.find(function (pe) {\n return pe.id === se.id;\n });\n\n if (!elementExistsInProps) {\n state.elements.splice(i, 1);\n i--;\n }\n\n out_i_1 = i;\n };\n\n var out_i_1; // remove deleted elements\n\n for (var i = 0; i < state.elements.length; i++) {\n _loop_1(i);\n\n i = out_i_1;\n }\n\n propElements.forEach(function (el) {\n var storeElementIndex = state.elements.findIndex(function (se) {\n return se.id === el.id;\n }); // update existing element\n\n if (storeElementIndex !== -1) {\n var storeElement = state.elements[storeElementIndex];\n\n if (isNode(storeElement)) {\n var propNode = el;\n var positionChanged = storeElement.position.x !== propNode.position.x || storeElement.position.y !== propNode.position.y;\n var typeChanged = typeof propNode.type !== 'undefined' && propNode.type !== storeElement.type;\n state.elements[storeElementIndex] = __assign(__assign({}, storeElement), propNode);\n\n if (positionChanged) {\n state.elements[storeElementIndex].__rf.position = clampPosition(propNode.position, state.nodeExtent);\n }\n\n if (typeChanged) {\n // we reset the elements dimensions here in order to force a re-calculation of the bounds.\n // When the type of a node changes it is possible that the number or positions of handles changes too.\n state.elements[storeElementIndex].__rf.width = null;\n }\n } else {\n state.elements[storeElementIndex] = __assign(__assign({}, storeElement), el);\n }\n } else {\n // add new element\n state.elements.push(parseElement(el, state.nodeExtent));\n }\n });\n }),\n batchUpdateNodeDimensions: easyPeasy.action(function (state, _a) {\n var updates = _a.updates;\n updates.forEach(function (update) {\n var dimensions = getDimensions(update.nodeElement);\n var matchingIndex = state.elements.findIndex(function (n) {\n return n.id === update.id;\n });\n var matchingNode = state.elements[matchingIndex];\n\n if (matchingIndex !== -1 && dimensions.width && dimensions.height && (matchingNode.__rf.width !== dimensions.width || matchingNode.__rf.height !== dimensions.height)) {\n var handleBounds = getHandleBounds(update.nodeElement, state.transform[2]);\n state.elements[matchingIndex].__rf.width = dimensions.width;\n state.elements[matchingIndex].__rf.height = dimensions.height;\n state.elements[matchingIndex].__rf.handleBounds = handleBounds;\n }\n });\n }),\n updateNodeDimensions: easyPeasy.action(function (state, _a) {\n var id = _a.id,\n nodeElement = _a.nodeElement;\n var dimensions = getDimensions(nodeElement);\n var matchingIndex = state.elements.findIndex(function (n) {\n return n.id === id;\n });\n\n if (matchingIndex !== -1 && dimensions.width && dimensions.height) {\n var handleBounds = getHandleBounds(nodeElement, state.transform[2]);\n state.elements[matchingIndex].__rf.width = dimensions.width;\n state.elements[matchingIndex].__rf.height = dimensions.height;\n state.elements[matchingIndex].__rf.handleBounds = handleBounds;\n }\n }),\n updateNodePos: easyPeasy.action(function (state, _a) {\n var id = _a.id,\n pos = _a.pos;\n var position = pos;\n\n if (state.snapToGrid) {\n var _b = state.snapGrid,\n gridSizeX = _b[0],\n gridSizeY = _b[1];\n position = {\n x: gridSizeX * Math.round(pos.x / gridSizeX),\n y: gridSizeY * Math.round(pos.y / gridSizeY)\n };\n }\n\n state.elements.forEach(function (n) {\n if (n.id === id && isNode(n)) {\n n.__rf.position = clampPosition(position, state.nodeExtent);\n }\n });\n }),\n updateNodePosDiff: easyPeasy.action(function (state, _a) {\n var _b = _a.id,\n id = _b === void 0 ? null : _b,\n _c = _a.diff,\n diff = _c === void 0 ? null : _c,\n _d = _a.isDragging,\n isDragging = _d === void 0 ? true : _d;\n state.elements.forEach(function (n) {\n var _a;\n\n if (isNode(n) && (id === n.id || ((_a = state.selectedElements) === null || _a === void 0 ? void 0 : _a.find(function (sNode) {\n return sNode.id === n.id;\n })))) {\n if (diff) {\n var position = {\n x: n.__rf.position.x + diff.x,\n y: n.__rf.position.y + diff.y\n };\n n.__rf.position = clampPosition(position, state.nodeExtent);\n }\n\n n.__rf.isDragging = isDragging;\n }\n });\n }),\n setUserSelection: easyPeasy.action(function (state, mousePos) {\n state.userSelectionRect = {\n width: 0,\n height: 0,\n startX: mousePos.x,\n startY: mousePos.y,\n x: mousePos.x,\n y: mousePos.y,\n draw: true\n };\n state.selectionActive = true;\n }),\n updateUserSelection: easyPeasy.action(function (state, mousePos) {\n var startX = state.userSelectionRect.startX || 0;\n var startY = state.userSelectionRect.startY || 0;\n var negativeX = mousePos.x < startX;\n var negativeY = mousePos.y < startY;\n\n var nextRect = __assign(__assign({}, state.userSelectionRect), {\n x: negativeX ? mousePos.x : state.userSelectionRect.x,\n y: negativeY ? mousePos.y : state.userSelectionRect.y,\n width: Math.abs(mousePos.x - startX),\n height: Math.abs(mousePos.y - startY)\n });\n\n var selectedNodes = getNodesInside(state.nodes, nextRect, state.transform);\n var selectedEdges = getConnectedEdges(selectedNodes, state.edges);\n\n var nextSelectedElements = __spreadArrays(selectedNodes, selectedEdges);\n\n var selectedElementsUpdated = !fastDeepEqual(nextSelectedElements, state.selectedElements);\n state.userSelectionRect = nextRect;\n\n if (selectedElementsUpdated) {\n state.selectedElements = nextSelectedElements.length > 0 ? nextSelectedElements : null;\n }\n }),\n unsetUserSelection: easyPeasy.action(function (state) {\n var _a;\n\n var selectedNodes = (_a = state.selectedElements) === null || _a === void 0 ? void 0 : _a.filter(function (node) {\n return isNode(node) && node.__rf;\n });\n\n if (!selectedNodes || selectedNodes.length === 0) {\n state.selectionActive = false;\n state.userSelectionRect.draw = false;\n state.nodesSelectionActive = false;\n state.selectedElements = null;\n return;\n }\n\n var selectedNodesBbox = getRectOfNodes(selectedNodes);\n state.nodesSelectionActive = true;\n state.selectedNodesBbox = selectedNodesBbox;\n state.userSelectionRect.draw = false;\n state.selectionActive = false;\n }),\n setSelection: easyPeasy.action(function (state, isActive) {\n state.selectionActive = isActive;\n }),\n unsetNodesSelection: easyPeasy.action(function (state) {\n state.nodesSelectionActive = false;\n }),\n resetSelectedElements: easyPeasy.action(function (state) {\n state.selectedElements = null;\n }),\n setSelectedElements: easyPeasy.action(function (state, elements) {\n var selectedElementsArr = Array.isArray(elements) ? elements : [elements];\n var selectedElementsUpdated = !fastDeepEqual(selectedElementsArr, state.selectedElements);\n var selectedElements = selectedElementsUpdated ? selectedElementsArr : state.selectedElements;\n state.selectedElements = selectedElements;\n }),\n addSelectedElements: easyPeasy.thunk(function (actions, elements, helpers) {\n var _a = helpers.getState(),\n multiSelectionActive = _a.multiSelectionActive,\n selectedElements = _a.selectedElements;\n\n var selectedElementsArr = Array.isArray(elements) ? elements : [elements];\n\n if (multiSelectionActive) {\n var nextElements = selectedElements ? __spreadArrays(selectedElements, selectedElementsArr) : selectedElementsArr;\n actions.setSelectedElements(nextElements);\n return;\n }\n\n actions.setSelectedElements(elements);\n }),\n updateTransform: easyPeasy.action(function (state, transform) {\n state.transform[0] = transform[0];\n state.transform[1] = transform[1];\n state.transform[2] = transform[2];\n }),\n updateSize: easyPeasy.action(function (state, size) {\n // when parent has no size we use these default values\n // so that the calculations don't throw any errors\n state.width = size.width || 500;\n state.height = size.height || 500;\n }),\n initD3Zoom: easyPeasy.action(function (state, _a) {\n var d3Zoom = _a.d3Zoom,\n d3Selection = _a.d3Selection,\n d3ZoomHandler = _a.d3ZoomHandler,\n transform = _a.transform;\n state.d3Zoom = d3Zoom;\n state.d3Selection = d3Selection;\n state.d3ZoomHandler = d3ZoomHandler;\n state.transform[0] = transform[0];\n state.transform[1] = transform[1];\n state.transform[2] = transform[2];\n }),\n setMinZoom: easyPeasy.action(function (state, minZoom) {\n state.minZoom = minZoom;\n\n if (state.d3Zoom) {\n state.d3Zoom.scaleExtent([minZoom, state.maxZoom]);\n }\n }),\n setMaxZoom: easyPeasy.action(function (state, maxZoom) {\n state.maxZoom = maxZoom;\n\n if (state.d3Zoom) {\n state.d3Zoom.scaleExtent([state.minZoom, maxZoom]);\n }\n }),\n setTranslateExtent: easyPeasy.action(function (state, translateExtent) {\n state.translateExtent = translateExtent;\n\n if (state.d3Zoom) {\n state.d3Zoom.translateExtent(translateExtent);\n }\n }),\n setNodeExtent: easyPeasy.action(function (state, nodeExtent) {\n state.nodeExtent = nodeExtent;\n state.elements.forEach(function (el) {\n if (isNode(el)) {\n el.__rf.position = clampPosition(el.__rf.position, nodeExtent);\n }\n });\n }),\n setConnectionPosition: easyPeasy.action(function (state, position) {\n state.connectionPosition = position;\n }),\n setConnectionNodeId: easyPeasy.action(function (state, _a) {\n var connectionNodeId = _a.connectionNodeId,\n connectionHandleId = _a.connectionHandleId,\n connectionHandleType = _a.connectionHandleType;\n state.connectionNodeId = connectionNodeId;\n state.connectionHandleId = connectionHandleId;\n state.connectionHandleType = connectionHandleType;\n }),\n setSnapToGrid: easyPeasy.action(function (state, snapToGrid) {\n state.snapToGrid = snapToGrid;\n }),\n setSnapGrid: easyPeasy.action(function (state, snapGrid) {\n state.snapGrid[0] = snapGrid[0];\n state.snapGrid[1] = snapGrid[1];\n }),\n setInteractive: easyPeasy.action(function (state, isInteractive) {\n state.nodesDraggable = isInteractive;\n state.nodesConnectable = isInteractive;\n state.elementsSelectable = isInteractive;\n }),\n setNodesDraggable: easyPeasy.action(function (state, nodesDraggable) {\n state.nodesDraggable = nodesDraggable;\n }),\n setNodesConnectable: easyPeasy.action(function (state, nodesConnectable) {\n state.nodesConnectable = nodesConnectable;\n }),\n setElementsSelectable: easyPeasy.action(function (state, elementsSelectable) {\n state.elementsSelectable = elementsSelectable;\n }),\n setMultiSelectionActive: easyPeasy.action(function (state, isActive) {\n state.multiSelectionActive = isActive;\n }),\n setConnectionMode: easyPeasy.action(function (state, connectionMode) {\n state.connectionMode = connectionMode;\n })\n};\nvar nodeEnv = \"production\";\nvar store = easyPeasy.createStore(storeModel, {\n devTools: nodeEnv === 'development'\n});\n\nvar Wrapper = function (_a) {\n var _b;\n\n var children = _a.children;\n var easyPeasyStore = useStore();\n var isWrapepdWithReactFlowProvider = (_b = easyPeasyStore === null || easyPeasyStore === void 0 ? void 0 : easyPeasyStore.getState()) === null || _b === void 0 ? void 0 : _b.reactFlowVersion;\n\n if (isWrapepdWithReactFlowProvider) {\n // we need to wrap it with a fragment because t's not allowed for children to be a ReactNode\n // https://github.com/DefinitelyTyped/DefinitelyTyped/issues/18051\n return React.createElement(React.Fragment, null, children);\n }\n\n return React.createElement(easyPeasy.StoreProvider, {\n store: store\n }, children);\n};\n\nWrapper.displayName = 'ReactFlowWrapper';\n\nfunction styleInject(css, ref) {\n if (ref === void 0) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') {\n return;\n }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css_248z = \".react-flow{width:100%;height:100%;position:relative;overflow:hidden}.react-flow__pane,.react-flow__renderer,.react-flow__selectionpane{width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__pane{z-index:1}.react-flow__renderer{z-index:4}.react-flow__selectionpane{z-index:5}.react-flow__edges,.react-flow__selection{position:absolute;top:0;left:0}.react-flow__edges{pointer-events:none;z-index:2}.react-flow__edge{pointer-events:all;}.react-flow__edge.inactive{pointer-events:none}@-webkit-keyframes dashdraw{0%{stroke-dashoffset:10}}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edge-path{fill:none}.react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.react-flow__connection{pointer-events:none;}.react-flow__connection .animated{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__connection-path{fill:none}.react-flow__nodes{width:100%;height:100%;pointer-events:none;z-index:3}.react-flow__node,.react-flow__nodes{position:absolute;transform-origin:0 0}.react-flow__node{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:all}.react-flow__nodesselection{z-index:3;position:absolute;width:100%;height:100%;top:0;left:0;transform-origin:left top;pointer-events:none;}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:-webkit-grab;cursor:grab}.react-flow__handle{pointer-events:none;}.react-flow__handle.connectable{pointer-events:all}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move}.react-flow__background{position:absolute;top:0;left:0;width:100%;height:100%}.react-flow__controls{position:absolute;z-index:5;bottom:10px;left:10px;}.react-flow__controls-button{width:24px;height:24px;}.react-flow__controls-button svg{width:100%}.react-flow__minimap{position:absolute;z-index:5;bottom:10px;right:10px;}.react-flow__minimap-node{shape-rendering:crispedges}\";\nstyleInject(css_248z);\nvar css_248z$1 = \".react-flow__selection{background:rgba(0,89,220,.08);border:1px dotted rgba(0,89,220,.8)}.react-flow__edge.selected .react-flow__edge-path{stroke:#555}.react-flow__edge.animated path{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-path{stroke:#b1b1b7;stroke-width:1}.react-flow__edge-text{font-size:10px}.react-flow__edge-textbg{fill:#fff}.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1}.react-flow__node{cursor:-webkit-grab;cursor:grab}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover{box-shadow:0 1px 4px 1px rgba(0,0,0,.08)}.react-flow__node-input{background:#fff;border-color:#0041d0;}.react-flow__node-input.selected,.react-flow__node-input.selected:hover{box-shadow:0 0 0 .5px #0041d0}.react-flow__node-input .react-flow__handle{background:#0041d0}.react-flow__node-default{background:#fff;border-color:#1a192b;}.react-flow__node-default.selected,.react-flow__node-default.selected:hover{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-default .react-flow__handle{background:#1a192b}.react-flow__node-output{background:#fff;border-color:#ff0072;}.react-flow__node-output.selected,.react-flow__node-output.selected:hover{box-shadow:0 0 0 .5px #ff0072}.react-flow__node-output .react-flow__handle{background:#ff0072}.react-flow__nodesselection-rect{background:rgba(0,89,220,.08);border:1px dotted rgba(0,89,220,.8)}.react-flow__handle{position:absolute;width:6px;height:6px;background:#555;border:1px solid #fff;border-radius:100%;}.react-flow__handle.connectable{cursor:crosshair}.react-flow__minimap{background-color:#fff}.react-flow__controls{box-shadow:0 0 2px 1px rgba(0,0,0,.08);}.react-flow__controls-button{background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding:5px;}.react-flow__controls-button svg{max-width:12px;max-height:12px}.react-flow__controls-button:hover{background:#f4f4f4}\";\nstyleInject(css_248z$1);\nvar defaultNodeTypes = {\n input: InputNode$1,\n default: DefaultNode$1,\n output: OutputNode$1\n};\nvar defaultEdgeTypes = {\n default: BezierEdge,\n straight: StraightEdge,\n step: StepEdge,\n smoothstep: SmoothStepEdge\n};\n\nvar ReactFlow = function (_a) {\n var _b = _a.elements,\n elements = _b === void 0 ? [] : _b,\n className = _a.className,\n _c = _a.nodeTypes,\n nodeTypes = _c === void 0 ? defaultNodeTypes : _c,\n _d = _a.edgeTypes,\n edgeTypes = _d === void 0 ? defaultEdgeTypes : _d,\n onElementClick = _a.onElementClick,\n onLoad = _a.onLoad,\n onMove = _a.onMove,\n onMoveStart = _a.onMoveStart,\n onMoveEnd = _a.onMoveEnd,\n onElementsRemove = _a.onElementsRemove,\n onConnect = _a.onConnect,\n onConnectStart = _a.onConnectStart,\n onConnectStop = _a.onConnectStop,\n onConnectEnd = _a.onConnectEnd,\n onNodeMouseEnter = _a.onNodeMouseEnter,\n onNodeMouseMove = _a.onNodeMouseMove,\n onNodeMouseLeave = _a.onNodeMouseLeave,\n onNodeContextMenu = _a.onNodeContextMenu,\n onNodeDragStart = _a.onNodeDragStart,\n onNodeDrag = _a.onNodeDrag,\n onNodeDragStop = _a.onNodeDragStop,\n onSelectionChange = _a.onSelectionChange,\n onSelectionDragStart = _a.onSelectionDragStart,\n onSelectionDrag = _a.onSelectionDrag,\n onSelectionDragStop = _a.onSelectionDragStop,\n onSelectionContextMenu = _a.onSelectionContextMenu,\n _e = _a.connectionMode,\n connectionMode = _e === void 0 ? ConnectionMode.Strict : _e,\n _f = _a.connectionLineType,\n connectionLineType = _f === void 0 ? ConnectionLineType.Bezier : _f,\n connectionLineStyle = _a.connectionLineStyle,\n connectionLineComponent = _a.connectionLineComponent,\n _g = _a.deleteKeyCode,\n deleteKeyCode = _g === void 0 ? 'Backspace' : _g,\n _h = _a.selectionKeyCode,\n selectionKeyCode = _h === void 0 ? 'Shift' : _h,\n _j = _a.multiSelectionKeyCode,\n multiSelectionKeyCode = _j === void 0 ? 'Meta' : _j,\n _k = _a.zoomActivationKeyCode,\n zoomActivationKeyCode = _k === void 0 ? 'Meta' : _k,\n _l = _a.snapToGrid,\n snapToGrid = _l === void 0 ? false : _l,\n _m = _a.snapGrid,\n snapGrid = _m === void 0 ? [15, 15] : _m,\n _o = _a.onlyRenderVisibleElements,\n onlyRenderVisibleElements = _o === void 0 ? true : _o,\n _p = _a.selectNodesOnDrag,\n selectNodesOnDrag = _p === void 0 ? true : _p,\n nodesDraggable = _a.nodesDraggable,\n nodesConnectable = _a.nodesConnectable,\n elementsSelectable = _a.elementsSelectable,\n minZoom = _a.minZoom,\n maxZoom = _a.maxZoom,\n _q = _a.defaultZoom,\n defaultZoom = _q === void 0 ? 1 : _q,\n _r = _a.defaultPosition,\n defaultPosition = _r === void 0 ? [0, 0] : _r,\n translateExtent = _a.translateExtent,\n nodeExtent = _a.nodeExtent,\n _s = _a.arrowHeadColor,\n arrowHeadColor = _s === void 0 ? '#b1b1b7' : _s,\n markerEndId = _a.markerEndId,\n _t = _a.zoomOnScroll,\n zoomOnScroll = _t === void 0 ? true : _t,\n _u = _a.zoomOnPinch,\n zoomOnPinch = _u === void 0 ? true : _u,\n _v = _a.panOnScroll,\n panOnScroll = _v === void 0 ? false : _v,\n _w = _a.panOnScrollSpeed,\n panOnScrollSpeed = _w === void 0 ? 0.5 : _w,\n _x = _a.panOnScrollMode,\n panOnScrollMode = _x === void 0 ? PanOnScrollMode.Free : _x,\n _y = _a.zoomOnDoubleClick,\n zoomOnDoubleClick = _y === void 0 ? true : _y,\n _z = _a.paneMoveable,\n paneMoveable = _z === void 0 ? true : _z,\n onPaneClick = _a.onPaneClick,\n onPaneScroll = _a.onPaneScroll,\n onPaneContextMenu = _a.onPaneContextMenu,\n children = _a.children,\n onEdgeUpdate = _a.onEdgeUpdate,\n rest = __rest(_a, [\"elements\", \"className\", \"nodeTypes\", \"edgeTypes\", \"onElementClick\", \"onLoad\", \"onMove\", \"onMoveStart\", \"onMoveEnd\", \"onElementsRemove\", \"onConnect\", \"onConnectStart\", \"onConnectStop\", \"onConnectEnd\", \"onNodeMouseEnter\", \"onNodeMouseMove\", \"onNodeMouseLeave\", \"onNodeContextMenu\", \"onNodeDragStart\", \"onNodeDrag\", \"onNodeDragStop\", \"onSelectionChange\", \"onSelectionDragStart\", \"onSelectionDrag\", \"onSelectionDragStop\", \"onSelectionContextMenu\", \"connectionMode\", \"connectionLineType\", \"connectionLineStyle\", \"connectionLineComponent\", \"deleteKeyCode\", \"selectionKeyCode\", \"multiSelectionKeyCode\", \"zoomActivationKeyCode\", \"snapToGrid\", \"snapGrid\", \"onlyRenderVisibleElements\", \"selectNodesOnDrag\", \"nodesDraggable\", \"nodesConnectable\", \"elementsSelectable\", \"minZoom\", \"maxZoom\", \"defaultZoom\", \"defaultPosition\", \"translateExtent\", \"nodeExtent\", \"arrowHeadColor\", \"markerEndId\", \"zoomOnScroll\", \"zoomOnPinch\", \"panOnScroll\", \"panOnScrollSpeed\", \"panOnScrollMode\", \"zoomOnDoubleClick\", \"paneMoveable\", \"onPaneClick\", \"onPaneScroll\", \"onPaneContextMenu\", \"children\", \"onEdgeUpdate\"]);\n\n var nodeTypesParsed = useMemo$1(function () {\n return createNodeTypes(nodeTypes);\n }, []);\n var edgeTypesParsed = useMemo$1(function () {\n return createEdgeTypes(edgeTypes);\n }, []);\n var reactFlowClasses = cc(['react-flow', className]);\n return React.createElement(\"div\", __assign({}, rest, {\n className: reactFlowClasses\n }), React.createElement(Wrapper, null, React.createElement(GraphView$1, {\n onLoad: onLoad,\n onMove: onMove,\n onMoveStart: onMoveStart,\n onMoveEnd: onMoveEnd,\n onElementClick: onElementClick,\n onNodeMouseEnter: onNodeMouseEnter,\n onNodeMouseMove: onNodeMouseMove,\n onNodeMouseLeave: onNodeMouseLeave,\n onNodeContextMenu: onNodeContextMenu,\n onNodeDragStart: onNodeDragStart,\n onNodeDrag: onNodeDrag,\n onNodeDragStop: onNodeDragStop,\n nodeTypes: nodeTypesParsed,\n edgeTypes: edgeTypesParsed,\n connectionMode: connectionMode,\n connectionLineType: connectionLineType,\n connectionLineStyle: connectionLineStyle,\n connectionLineComponent: connectionLineComponent,\n selectionKeyCode: selectionKeyCode,\n onElementsRemove: onElementsRemove,\n deleteKeyCode: deleteKeyCode,\n multiSelectionKeyCode: multiSelectionKeyCode,\n zoomActivationKeyCode: zoomActivationKeyCode,\n onConnect: onConnect,\n onConnectStart: onConnectStart,\n onConnectStop: onConnectStop,\n onConnectEnd: onConnectEnd,\n snapToGrid: snapToGrid,\n snapGrid: snapGrid,\n onlyRenderVisibleElements: onlyRenderVisibleElements,\n nodesDraggable: nodesDraggable,\n nodesConnectable: nodesConnectable,\n elementsSelectable: elementsSelectable,\n selectNodesOnDrag: selectNodesOnDrag,\n minZoom: minZoom,\n maxZoom: maxZoom,\n defaultZoom: defaultZoom,\n defaultPosition: defaultPosition,\n translateExtent: translateExtent,\n nodeExtent: nodeExtent,\n arrowHeadColor: arrowHeadColor,\n markerEndId: markerEndId,\n zoomOnScroll: zoomOnScroll,\n zoomOnPinch: zoomOnPinch,\n zoomOnDoubleClick: zoomOnDoubleClick,\n panOnScroll: panOnScroll,\n panOnScrollSpeed: panOnScrollSpeed,\n panOnScrollMode: panOnScrollMode,\n paneMoveable: paneMoveable,\n onPaneClick: onPaneClick,\n onPaneScroll: onPaneScroll,\n onPaneContextMenu: onPaneContextMenu,\n onSelectionDragStart: onSelectionDragStart,\n onSelectionDrag: onSelectionDrag,\n onSelectionDragStop: onSelectionDragStop,\n onSelectionContextMenu: onSelectionContextMenu,\n onEdgeUpdate: onEdgeUpdate\n }), React.createElement(ElementUpdater, {\n elements: elements\n }), onSelectionChange && React.createElement(SelectionListener, {\n onSelectionChange: onSelectionChange\n }), children));\n};\n\nReactFlow.displayName = 'ReactFlow';\n\nvar MiniMapNode = function (_a) {\n var x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height,\n style = _a.style,\n color = _a.color,\n strokeColor = _a.strokeColor,\n strokeWidth = _a.strokeWidth,\n className = _a.className,\n borderRadius = _a.borderRadius;\n\n var _b = style || {},\n background = _b.background,\n backgroundColor = _b.backgroundColor;\n\n var fill = color || background || backgroundColor;\n return React.createElement(\"rect\", {\n className: cc(['react-flow__minimap-node', className]),\n x: x,\n y: y,\n rx: borderRadius,\n ry: borderRadius,\n width: width,\n height: height,\n fill: fill,\n stroke: strokeColor,\n strokeWidth: strokeWidth\n });\n};\n\nMiniMapNode.displayName = 'MiniMapNode';\nvar MiniMapNode$1 = memo(MiniMapNode);\nvar defaultWidth = 200;\nvar defaultHeight = 150;\n\nvar MiniMap = function (_a) {\n var style = _a.style,\n className = _a.className,\n _b = _a.nodeStrokeColor,\n nodeStrokeColor = _b === void 0 ? '#555' : _b,\n _c = _a.nodeColor,\n nodeColor = _c === void 0 ? '#fff' : _c,\n _d = _a.nodeClassName,\n nodeClassName = _d === void 0 ? '' : _d,\n _e = _a.nodeBorderRadius,\n nodeBorderRadius = _e === void 0 ? 5 : _e,\n _f = _a.nodeStrokeWidth,\n nodeStrokeWidth = _f === void 0 ? 2 : _f,\n _g = _a.maskColor,\n maskColor = _g === void 0 ? 'rgb(240, 242, 243, 0.7)' : _g;\n var containerWidth = useStoreState(function (s) {\n return s.width;\n });\n var containerHeight = useStoreState(function (s) {\n return s.height;\n });\n\n var _h = useStoreState(function (s) {\n return s.transform;\n }),\n tX = _h[0],\n tY = _h[1],\n tScale = _h[2];\n\n var nodes = useStoreState(function (s) {\n return s.nodes;\n });\n var mapClasses = cc(['react-flow__minimap', className]);\n var elementWidth = (style === null || style === void 0 ? void 0 : style.width) || defaultWidth;\n var elementHeight = (style === null || style === void 0 ? void 0 : style.height) || defaultHeight;\n var nodeColorFunc = nodeColor instanceof Function ? nodeColor : function () {\n return nodeColor;\n };\n var nodeStrokeColorFunc = nodeStrokeColor instanceof Function ? nodeStrokeColor : function () {\n return nodeStrokeColor;\n };\n var nodeClassNameFunc = nodeClassName instanceof Function ? nodeClassName : function () {\n return nodeClassName;\n };\n var hasNodes = nodes && nodes.length;\n var bb = getRectOfNodes(nodes);\n var viewBB = {\n x: -tX / tScale,\n y: -tY / tScale,\n width: containerWidth / tScale,\n height: containerHeight / tScale\n };\n var boundingRect = hasNodes ? getBoundsofRects(bb, viewBB) : viewBB;\n var scaledWidth = boundingRect.width / elementWidth;\n var scaledHeight = boundingRect.height / elementHeight;\n var viewScale = Math.max(scaledWidth, scaledHeight);\n var viewWidth = viewScale * elementWidth;\n var viewHeight = viewScale * elementHeight;\n var offset = 5 * viewScale;\n var x = boundingRect.x - (viewWidth - boundingRect.width) / 2 - offset;\n var y = boundingRect.y - (viewHeight - boundingRect.height) / 2 - offset;\n var width = viewWidth + offset * 2;\n var height = viewHeight + offset * 2;\n return React.createElement(\"svg\", {\n width: elementWidth,\n height: elementHeight,\n viewBox: x + \" \" + y + \" \" + width + \" \" + height,\n style: style,\n className: mapClasses\n }, nodes.filter(function (node) {\n return !node.isHidden;\n }).map(function (node) {\n return React.createElement(MiniMapNode$1, {\n key: node.id,\n x: node.__rf.position.x,\n y: node.__rf.position.y,\n width: node.__rf.width,\n height: node.__rf.height,\n style: node.style,\n className: nodeClassNameFunc(node),\n color: nodeColorFunc(node),\n borderRadius: nodeBorderRadius,\n strokeColor: nodeStrokeColorFunc(node),\n strokeWidth: nodeStrokeWidth\n });\n }), React.createElement(\"path\", {\n className: \"react-flow__minimap-mask\",\n d: \"M\" + (x - offset) + \",\" + (y - offset) + \"h\" + (width + offset * 2) + \"v\" + (height + offset * 2) + \"h\" + (-width - offset * 2) + \"z\\n M\" + viewBB.x + \",\" + viewBB.y + \"h\" + viewBB.width + \"v\" + viewBB.height + \"h\" + -viewBB.width + \"z\",\n fill: maskColor,\n fillRule: \"evenodd\"\n }));\n};\n\nMiniMap.displayName = 'MiniMap';\nvar index = memo(MiniMap);\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nvar _ref = /*#__PURE__*/createElement(\"path\", {\n d: \"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z\"\n});\n\nfunction SvgPlus(props) {\n return /*#__PURE__*/createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\"\n }, props), _ref);\n}\n\nfunction _extends$1() {\n _extends$1 = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends$1.apply(this, arguments);\n}\n\nvar _ref$1 = /*#__PURE__*/createElement(\"path\", {\n d: \"M0 0h32v4.2H0z\"\n});\n\nfunction SvgMinus(props) {\n return /*#__PURE__*/createElement(\"svg\", _extends$1({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 5\"\n }, props), _ref$1);\n}\n\nfunction _extends$2() {\n _extends$2 = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends$2.apply(this, arguments);\n}\n\nvar _ref$2 = /*#__PURE__*/createElement(\"path\", {\n d: \"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94a.919.919 0 01-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z\"\n});\n\nfunction SvgFitview(props) {\n return /*#__PURE__*/createElement(\"svg\", _extends$2({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 30\"\n }, props), _ref$2);\n}\n\nfunction _extends$3() {\n _extends$3 = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends$3.apply(this, arguments);\n}\n\nvar _ref$3 = /*#__PURE__*/createElement(\"path\", {\n d: \"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z\"\n});\n\nfunction SvgLock(props) {\n return /*#__PURE__*/createElement(\"svg\", _extends$3({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 25 32\"\n }, props), _ref$3);\n}\n\nfunction _extends$4() {\n _extends$4 = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends$4.apply(this, arguments);\n}\n\nvar _ref$4 = /*#__PURE__*/createElement(\"path\", {\n d: \"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z\"\n});\n\nfunction SvgUnlock(props) {\n return /*#__PURE__*/createElement(\"svg\", _extends$4({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 25 32\"\n }, props), _ref$4);\n}\n\nvar Controls = function (_a) {\n var style = _a.style,\n _b = _a.showZoom,\n showZoom = _b === void 0 ? true : _b,\n _c = _a.showFitView,\n showFitView = _c === void 0 ? true : _c,\n _d = _a.showInteractive,\n showInteractive = _d === void 0 ? true : _d,\n fitViewParams = _a.fitViewParams,\n onZoomIn = _a.onZoomIn,\n onZoomOut = _a.onZoomOut,\n onFitView = _a.onFitView,\n onInteractiveChange = _a.onInteractiveChange,\n className = _a.className;\n var setInteractive = useStoreActions(function (actions) {\n return actions.setInteractive;\n });\n\n var _e = useZoomPanHelper(),\n zoomIn = _e.zoomIn,\n zoomOut = _e.zoomOut,\n fitView = _e.fitView;\n\n var isInteractive = useStoreState(function (s) {\n return s.nodesDraggable && s.nodesConnectable && s.elementsSelectable;\n });\n var mapClasses = cc(['react-flow__controls', className]);\n var onZoomInHandler = useCallback$1(function () {\n zoomIn === null || zoomIn === void 0 ? void 0 : zoomIn();\n onZoomIn === null || onZoomIn === void 0 ? void 0 : onZoomIn();\n }, [zoomIn, onZoomIn]);\n var onZoomOutHandler = useCallback$1(function () {\n zoomOut === null || zoomOut === void 0 ? void 0 : zoomOut();\n onZoomOut === null || onZoomOut === void 0 ? void 0 : onZoomOut();\n }, [zoomOut, onZoomOut]);\n var onFitViewHandler = useCallback$1(function () {\n fitView === null || fitView === void 0 ? void 0 : fitView(fitViewParams);\n onFitView === null || onFitView === void 0 ? void 0 : onFitView();\n }, [fitView, fitViewParams, onFitView]);\n var onInteractiveChangeHandler = useCallback$1(function () {\n setInteractive === null || setInteractive === void 0 ? void 0 : setInteractive(!isInteractive);\n onInteractiveChange === null || onInteractiveChange === void 0 ? void 0 : onInteractiveChange(!isInteractive);\n }, [isInteractive, setInteractive, onInteractiveChange]);\n return React.createElement(\"div\", {\n className: mapClasses,\n style: style\n }, showZoom && React.createElement(React.Fragment, null, React.createElement(\"div\", {\n className: \"react-flow__controls-button react-flow__controls-zoomin\",\n onClick: onZoomInHandler\n }, React.createElement(SvgPlus, null)), React.createElement(\"div\", {\n className: \"react-flow__controls-button react-flow__controls-zoomout\",\n onClick: onZoomOutHandler\n }, React.createElement(SvgMinus, null))), showFitView && React.createElement(\"div\", {\n className: \"react-flow__controls-button react-flow__controls-fitview\",\n onClick: onFitViewHandler\n }, React.createElement(SvgFitview, null)), showInteractive && React.createElement(\"div\", {\n className: \"react-flow__controls-button react-flow__controls-interactive\",\n onClick: onInteractiveChangeHandler\n }, isInteractive ? React.createElement(SvgUnlock, null) : React.createElement(SvgLock, null)));\n};\n\nControls.displayName = 'Controls';\nvar index$1 = memo(Controls);\n\nvar createGridLinesPath = function (size, strokeWidth, stroke) {\n return React.createElement(\"path\", {\n stroke: stroke,\n strokeWidth: strokeWidth,\n d: \"M\" + size / 2 + \" 0 V\" + size + \" M0 \" + size / 2 + \" H\" + size\n });\n};\n\nvar createGridDotsPath = function (size, fill) {\n return React.createElement(\"circle\", {\n cx: size / 2,\n cy: size / 2,\n r: size,\n fill: fill\n });\n};\n\nvar _a;\n\nvar defaultColors = (_a = {}, _a[BackgroundVariant.Dots] = '#81818a', _a[BackgroundVariant.Lines] = '#eee', _a);\n\nvar Background = function (_a) {\n var _b = _a.variant,\n variant = _b === void 0 ? BackgroundVariant.Dots : _b,\n _c = _a.gap,\n gap = _c === void 0 ? 15 : _c,\n _d = _a.size,\n size = _d === void 0 ? 0.5 : _d,\n color = _a.color,\n style = _a.style,\n className = _a.className;\n\n var _e = useStoreState(function (s) {\n return s.transform;\n }),\n x = _e[0],\n y = _e[1],\n scale = _e[2];\n\n var bgClasses = cc(['react-flow__background', className]);\n var scaledGap = gap * scale;\n var xOffset = x % scaledGap;\n var yOffset = y % scaledGap;\n var isLines = variant === BackgroundVariant.Lines;\n var bgColor = color ? color : defaultColors[variant];\n var path = isLines ? createGridLinesPath(scaledGap, size, bgColor) : createGridDotsPath(size, bgColor);\n return React.createElement(\"svg\", {\n className: bgClasses,\n style: __assign(__assign({}, style), {\n width: '100%',\n height: '100%'\n })\n }, React.createElement(\"pattern\", {\n id: \"pattern\",\n x: xOffset,\n y: yOffset,\n width: scaledGap,\n height: scaledGap,\n patternUnits: \"userSpaceOnUse\"\n }, path), React.createElement(\"rect\", {\n x: \"0\",\n y: \"0\",\n width: \"100%\",\n height: \"100%\",\n fill: \"url(#pattern)\"\n }));\n};\n\nBackground.displayName = 'Background';\nvar index$2 = memo(Background);\n\nvar ReactFlowProvider = function (_a) {\n var children = _a.children;\n var store = useMemo$1(function () {\n return easyPeasy.createStore(storeModel);\n }, []);\n return React.createElement(easyPeasy.StoreProvider, {\n store: store\n }, children);\n};\n\nReactFlowProvider.displayName = 'ReactFlowProvider';\nexport default ReactFlow;\nexport { ArrowHeadType, index$2 as Background, BackgroundVariant, ConnectionLineType, ConnectionMode, index$1 as Controls, EdgeText, Handle$1 as Handle, index as MiniMap, PanOnScrollMode, Position, ReactFlowProvider, addEdge, getBezierPath, getConnectedEdges, getCenter as getEdgeCenter, getIncomers, getMarkerEnd, getOutgoers, getSmoothStepPath, isEdge, isNode, removeElements, updateEdge, useStore, useStoreActions, useStoreDispatch, useStoreState, useZoomPanHelper };"],"sourceRoot":""}