{"version":3,"sources":["../node_modules/tslib/tslib.js","../node_modules/@emotion/memoize/dist/memoize.esm.js","../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.esm.js","../node_modules/debounce/index.js","../node_modules/fast-deep-equal/index.js","../src/SandpackFilesProvider.tsx","../src/utils/arrayToObject.tsx","../src/utils/deepMerge.tsx","../src/utils/deleteKeys.tsx","../src/utils/directoryFileMap.tsx","../src/utils/buildPath.tsx","../src/utils/toHierarchicalArray.tsx","../src/utils/getEntryFile.tsx","../src/utils/getRemovedKeys.tsx","../src/utils/mergeHierarchicalArray.tsx","../src/FileTreeExplorer.tsx","../node_modules/@minoru/react-dnd-treeview/dist/index.js","../node_modules/react-dnd-html5-backend/src/utils/js_utils.ts","../node_modules/react-dnd-html5-backend/src/EnterLeaveCounter.ts","../node_modules/react-dnd-html5-backend/src/NativeDragSources/NativeDragSource.ts","../node_modules/react-dnd-html5-backend/src/NativeTypes.ts","../node_modules/react-dnd-html5-backend/src/NativeDragSources/getDataFromDataTransfer.ts","../node_modules/react-dnd-html5-backend/src/NativeDragSources/nativeTypesConfig.ts","../node_modules/react-dnd-html5-backend/src/NativeDragSources/index.ts","../node_modules/react-dnd-html5-backend/src/BrowserDetector.ts","../node_modules/react-dnd-html5-backend/src/MonotonicInterpolant.ts","../node_modules/react-dnd-html5-backend/src/OffsetUtils.ts","../node_modules/react-dnd-html5-backend/src/OptionsReader.ts","../node_modules/react-dnd-html5-backend/src/HTML5BackendImpl.ts","../node_modules/react-dnd-html5-backend/src/getEmptyImage.ts","../node_modules/react-dnd-html5-backend/src/index.ts","../node_modules/@juggle/resize-observer/lib/utils/resizeObservers.js","../node_modules/@juggle/resize-observer/lib/algorithms/hasActiveObservations.js","../node_modules/@juggle/resize-observer/lib/algorithms/hasSkippedObservations.js","../node_modules/@juggle/resize-observer/lib/algorithms/deliverResizeLoopError.js","../node_modules/@juggle/resize-observer/lib/ResizeObserverBoxOptions.js","../node_modules/@juggle/resize-observer/lib/utils/freeze.js","../node_modules/@juggle/resize-observer/lib/ResizeObserverSize.js","../node_modules/@juggle/resize-observer/lib/DOMRectReadOnly.js","../node_modules/@juggle/resize-observer/lib/utils/element.js","../node_modules/@juggle/resize-observer/lib/utils/global.js","../node_modules/@juggle/resize-observer/lib/algorithms/calculateBoxSize.js","../node_modules/@juggle/resize-observer/lib/ResizeObserverEntry.js","../node_modules/@juggle/resize-observer/lib/algorithms/calculateDepthForNode.js","../node_modules/@juggle/resize-observer/lib/algorithms/broadcastActiveObservations.js","../node_modules/@juggle/resize-observer/lib/algorithms/gatherActiveObservationsAtDepth.js","../node_modules/@juggle/resize-observer/lib/utils/process.js","../node_modules/@juggle/resize-observer/lib/utils/queueMicroTask.js","../node_modules/@juggle/resize-observer/lib/utils/queueResizeObserver.js","../node_modules/@juggle/resize-observer/lib/utils/scheduler.js","../node_modules/@juggle/resize-observer/lib/ResizeObservation.js","../node_modules/@juggle/resize-observer/lib/ResizeObserverDetail.js","../node_modules/@juggle/resize-observer/lib/ResizeObserverController.js","../node_modules/@juggle/resize-observer/lib/ResizeObserver.js","../node_modules/tslib/modules/index.js","../node_modules/framer-motion/dist/es/motion/index.mjs","../node_modules/framer-motion/dist/es/motion/features/use-features.mjs","../node_modules/framer-motion/dist/es/utils/process.mjs","../node_modules/framer-motion/dist/es/motion/features/definitions.mjs","../node_modules/hey-listen/dist/hey-listen.es.js","../node_modules/framer-motion/dist/es/context/LazyContext.mjs","../node_modules/framer-motion/dist/es/context/MotionConfigContext.mjs","../node_modules/framer-motion/dist/es/context/MotionContext/index.mjs","../node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs","../node_modules/framer-motion/dist/es/context/PresenceContext.mjs","../node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.mjs","../node_modules/framer-motion/dist/es/utils/is-browser.mjs","../node_modules/framer-motion/dist/es/utils/use-reduced-motion.mjs","../node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.mjs","../node_modules/framer-motion/dist/es/utils/is-ref-object.mjs","../node_modules/framer-motion/dist/es/context/MotionContext/create.mjs","../node_modules/framer-motion/dist/es/render/utils/variants.mjs","../node_modules/framer-motion/dist/es/context/MotionContext/utils.mjs","../node_modules/framer-motion/dist/es/utils/use-constant.mjs","../node_modules/framer-motion/dist/es/projection/node/state.mjs","../node_modules/framer-motion/dist/es/projection/node/id.mjs","../node_modules/framer-motion/dist/es/context/LayoutGroupContext.mjs","../node_modules/framer-motion/dist/es/motion/features/use-projection.mjs","../node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.mjs","../node_modules/framer-motion/dist/es/motion/utils/VisualElementHandler.mjs","../node_modules/framer-motion/dist/es/render/dom/motion-proxy.mjs","../node_modules/framer-motion/dist/es/render/svg/lowercase-elements.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.mjs","../node_modules/framer-motion/dist/es/render/dom/use-render.mjs","../node_modules/framer-motion/dist/es/render/html/use-props.mjs","../node_modules/framer-motion/dist/es/projection/styles/scale-correction.mjs","../node_modules/framer-motion/dist/es/render/html/utils/transform.mjs","../node_modules/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs","../node_modules/framer-motion/dist/es/value/utils/is-motion-value.mjs","../node_modules/framer-motion/dist/es/render/html/utils/build-transform.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/is-css-variable.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/get-as-type.mjs","../node_modules/style-value-types/dist/es/utils.mjs","../node_modules/style-value-types/dist/es/numbers/index.mjs","../node_modules/style-value-types/dist/es/numbers/units.mjs","../node_modules/style-value-types/dist/es/color/utils.mjs","../node_modules/style-value-types/dist/es/color/hsla.mjs","../node_modules/style-value-types/dist/es/color/rgba.mjs","../node_modules/style-value-types/dist/es/color/hex.mjs","../node_modules/style-value-types/dist/es/color/index.mjs","../node_modules/style-value-types/dist/es/complex/index.mjs","../node_modules/style-value-types/dist/es/complex/filter.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/type-int.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/number.mjs","../node_modules/framer-motion/dist/es/render/html/utils/build-styles.mjs","../node_modules/framer-motion/dist/es/render/html/utils/create-render-state.mjs","../node_modules/framer-motion/dist/es/motion/utils/valid-prop.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/filter-props.mjs","../node_modules/framer-motion/dist/es/render/svg/use-props.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/transform-origin.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/path.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/build-attrs.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs","../node_modules/framer-motion/dist/es/render/html/utils/render.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/render.mjs","../node_modules/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs","../node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs","../node_modules/framer-motion/dist/es/animation/utils/is-animation-controls.mjs","../node_modules/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs","../node_modules/framer-motion/dist/es/utils/resolve-value.mjs","../node_modules/framer-motion/dist/es/value/utils/resolve-motion-value.mjs","../node_modules/framer-motion/dist/es/render/svg/config-motion.mjs","../node_modules/framer-motion/dist/es/render/html/config-motion.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/create-config.mjs","../node_modules/framer-motion/dist/es/render/utils/types.mjs","../node_modules/framer-motion/dist/es/events/use-dom-event.mjs","../node_modules/framer-motion/dist/es/gestures/use-focus-gesture.mjs","../node_modules/framer-motion/dist/es/gestures/utils/event-type.mjs","../node_modules/framer-motion/dist/es/events/event-info.mjs","../node_modules/framer-motion/dist/es/events/utils.mjs","../node_modules/framer-motion/dist/es/events/use-pointer-event.mjs","../node_modules/framer-motion/dist/es/gestures/drag/utils/lock.mjs","../node_modules/framer-motion/dist/es/gestures/use-hover-gesture.mjs","../node_modules/framer-motion/dist/es/gestures/use-tap-gesture.mjs","../node_modules/framer-motion/dist/es/gestures/utils/is-node-or-child.mjs","../node_modules/framer-motion/dist/es/utils/use-unmount-effect.mjs","../node_modules/popmotion/dist/es/utils/clamp.mjs","../node_modules/popmotion/dist/es/animations/utils/find-spring.mjs","../node_modules/popmotion/dist/es/animations/generators/spring.mjs","../node_modules/popmotion/dist/es/utils/progress.mjs","../node_modules/popmotion/dist/es/utils/mix.mjs","../node_modules/popmotion/dist/es/utils/hsla-to-rgba.mjs","../node_modules/popmotion/dist/es/utils/mix-color.mjs","../node_modules/popmotion/dist/es/utils/inc.mjs","../node_modules/popmotion/dist/es/utils/pipe.mjs","../node_modules/popmotion/dist/es/utils/mix-complex.mjs","../node_modules/popmotion/dist/es/utils/interpolate.mjs","../node_modules/popmotion/dist/es/easing/utils.mjs","../node_modules/popmotion/dist/es/easing/index.mjs","../node_modules/popmotion/dist/es/animations/generators/keyframes.mjs","../node_modules/popmotion/dist/es/animations/generators/decay.mjs","../node_modules/popmotion/dist/es/animations/utils/detect-animation-from-options.mjs","../node_modules/framesync/dist/es/on-next-frame.mjs","../node_modules/framesync/dist/es/create-render-step.mjs","../node_modules/framesync/dist/es/index.mjs","../node_modules/popmotion/dist/es/animations/utils/elapsed.mjs","../node_modules/popmotion/dist/es/animations/index.mjs","../node_modules/popmotion/dist/es/utils/velocity-per-second.mjs","../node_modules/popmotion/dist/es/animations/inertia.mjs","../node_modules/popmotion/dist/es/utils/is-point.mjs","../node_modules/popmotion/dist/es/utils/is-point-3d.mjs","../node_modules/popmotion/dist/es/utils/distance.mjs","../node_modules/popmotion/dist/es/easing/cubic-bezier.mjs","../node_modules/framer-motion/dist/es/motion/features/viewport/use-viewport.mjs","../node_modules/framer-motion/dist/es/utils/warn-once.mjs","../node_modules/framer-motion/dist/es/motion/features/viewport/observers.mjs","../node_modules/framer-motion/dist/es/motion/utils/make-renderless-component.mjs","../node_modules/framer-motion/dist/es/motion/features/gestures.mjs","../node_modules/framer-motion/dist/es/motion/features/animations.mjs","../node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs","../node_modules/framer-motion/dist/es/utils/use-id.mjs","../node_modules/framer-motion/dist/es/utils/shallow-compare.mjs","../node_modules/framer-motion/dist/es/utils/time-conversion.mjs","../node_modules/framer-motion/dist/es/animation/utils/easing.mjs","../node_modules/framer-motion/dist/es/animation/utils/is-animatable.mjs","../node_modules/framer-motion/dist/es/animation/utils/default-transitions.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/defaults.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/animatable-none.mjs","../node_modules/framer-motion/dist/es/utils/use-instant-transition-state.mjs","../node_modules/framer-motion/dist/es/animation/utils/transitions.mjs","../node_modules/framer-motion/dist/es/utils/is-numerical-string.mjs","../node_modules/framer-motion/dist/es/utils/is-zero-value-string.mjs","../node_modules/framer-motion/dist/es/utils/array.mjs","../node_modules/framer-motion/dist/es/utils/subscription-manager.mjs","../node_modules/framer-motion/dist/es/value/index.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/test.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/type-auto.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/dimensions.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/find.mjs","../node_modules/framer-motion/dist/es/render/utils/setters.mjs","../node_modules/framer-motion/dist/es/render/utils/animation.mjs","../node_modules/framer-motion/dist/es/render/utils/animation-state.mjs","../node_modules/framer-motion/dist/es/gestures/drag/use-drag.mjs","../node_modules/framer-motion/dist/es/gestures/PanSession.mjs","../node_modules/framer-motion/dist/es/projection/geometry/delta-calc.mjs","../node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.mjs","../node_modules/framer-motion/dist/es/projection/geometry/models.mjs","../node_modules/framer-motion/dist/es/projection/utils/each-axis.mjs","../node_modules/framer-motion/dist/es/projection/geometry/conversion.mjs","../node_modules/framer-motion/dist/es/projection/utils/has-transform.mjs","../node_modules/framer-motion/dist/es/projection/geometry/delta-apply.mjs","../node_modules/framer-motion/dist/es/projection/utils/measure.mjs","../node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs","../node_modules/framer-motion/dist/es/gestures/use-pan-gesture.mjs","../node_modules/framer-motion/dist/es/motion/features/drag.mjs","../node_modules/framer-motion/dist/es/render/utils/lifecycles.mjs","../node_modules/framer-motion/dist/es/render/utils/motion-values.mjs","../node_modules/framer-motion/dist/es/render/index.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/css-variables-conversion.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/unit-conversion.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/parse-dom-variant.mjs","../node_modules/framer-motion/dist/es/render/html/visual-element.mjs","../node_modules/framer-motion/dist/es/render/svg/visual-element.mjs","../node_modules/framer-motion/dist/es/render/dom/create-visual-element.mjs","../node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs","../node_modules/framer-motion/dist/es/projection/styles/scale-border-radius.mjs","../node_modules/framer-motion/dist/es/projection/styles/scale-box-shadow.mjs","../node_modules/framer-motion/dist/es/motion/features/layout/index.mjs","../node_modules/framer-motion/dist/es/animation/animate.mjs","../node_modules/framer-motion/dist/es/projection/animation/mix-values.mjs","../node_modules/framer-motion/dist/es/projection/geometry/copy.mjs","../node_modules/framer-motion/dist/es/projection/geometry/delta-remove.mjs","../node_modules/framer-motion/dist/es/projection/geometry/utils.mjs","../node_modules/framer-motion/dist/es/projection/shared/stack.mjs","../node_modules/framer-motion/dist/es/projection/styles/transform.mjs","../node_modules/framer-motion/dist/es/render/utils/compare-by-depth.mjs","../node_modules/framer-motion/dist/es/render/utils/flat-tree.mjs","../node_modules/framer-motion/dist/es/projection/node/create-projection-node.mjs","../node_modules/framer-motion/dist/es/projection/node/DocumentProjectionNode.mjs","../node_modules/framer-motion/dist/es/projection/node/HTMLProjectionNode.mjs","../node_modules/framer-motion/dist/es/render/dom/motion.mjs","../node_modules/react-use-measure/dist/web.js","../node_modules/react-dnd/src/core/DndContext.ts","../node_modules/redux/es/redux.js","../node_modules/@react-dnd/invariant/src/index.ts","../node_modules/dnd-core/src/utils/js_utils.ts","../node_modules/dnd-core/src/actions/dragDrop/types.ts","../node_modules/dnd-core/src/actions/dragDrop/local/setClientOffset.ts","../node_modules/dnd-core/src/actions/dragDrop/beginDrag.ts","../node_modules/dnd-core/src/actions/dragDrop/drop.ts","../node_modules/dnd-core/src/actions/dragDrop/endDrag.ts","../node_modules/dnd-core/src/utils/matchesType.ts","../node_modules/dnd-core/src/actions/dragDrop/hover.ts","../node_modules/dnd-core/src/actions/dragDrop/publishDragSource.ts","../node_modules/dnd-core/src/actions/dragDrop/index.ts","../node_modules/dnd-core/src/classes/DragDropManagerImpl.ts","../node_modules/dnd-core/src/utils/coords.ts","../node_modules/dnd-core/src/utils/dirtiness.ts","../node_modules/dnd-core/src/classes/DragDropMonitorImpl.ts","../node_modules/@react-dnd/asap/src/makeRequestCall.ts","../node_modules/@react-dnd/asap/src/AsapQueue.ts","../node_modules/@react-dnd/asap/src/RawTask.ts","../node_modules/@react-dnd/asap/src/TaskFactory.ts","../node_modules/@react-dnd/asap/src/asap.ts","../node_modules/dnd-core/src/actions/registry.ts","../node_modules/dnd-core/src/contracts.ts","../node_modules/dnd-core/src/interfaces.ts","../node_modules/dnd-core/src/utils/getNextUniqueId.ts","../node_modules/dnd-core/src/classes/HandlerRegistryImpl.ts","../node_modules/dnd-core/src/utils/equality.ts","../node_modules/dnd-core/src/reducers/dirtyHandlerIds.ts","../node_modules/dnd-core/src/reducers/dragOffset.ts","../node_modules/dnd-core/src/reducers/dragOperation.ts","../node_modules/dnd-core/src/reducers/refCount.ts","../node_modules/dnd-core/src/reducers/stateId.ts","../node_modules/dnd-core/src/reducers/index.ts","../node_modules/dnd-core/src/createDragDropManager.ts","../node_modules/react-dnd/src/core/DndProvider.tsx","../node_modules/react-dnd/src/hooks/useCollector.ts","../node_modules/react-dnd/src/hooks/useIsomorphicLayoutEffect.ts","../node_modules/react-dnd/src/hooks/useMonitorOutput.ts","../node_modules/react-dnd/src/hooks/useCollectedProps.ts","../node_modules/react-dnd/src/hooks/useOptionalFactory.ts","../node_modules/react-dnd/src/hooks/useDrag/connectors.ts","../node_modules/react-dnd/src/hooks/useDrag/useDragSourceConnector.ts","../node_modules/react-dnd/src/internals/DragSourceMonitorImpl.ts","../node_modules/react-dnd/src/internals/DropTargetMonitorImpl.ts","../node_modules/react-dnd/src/internals/registration.ts","../node_modules/@react-dnd/shallowequal/src/index.ts","../node_modules/react-dnd/src/internals/isRef.ts","../node_modules/react-dnd/src/internals/wrapConnectorHooks.ts","../node_modules/react-dnd/src/internals/SourceConnector.ts","../node_modules/react-dnd/src/internals/TargetConnector.ts","../node_modules/react-dnd/src/hooks/useDragDropManager.ts","../node_modules/react-dnd/src/hooks/useDrag/useDragSourceMonitor.ts","../node_modules/react-dnd/src/hooks/useDrag/useDragSource.ts","../node_modules/react-dnd/src/hooks/useDrag/DragSourceImpl.ts","../node_modules/react-dnd/src/hooks/useDrag/useDragType.ts","../node_modules/react-dnd/src/hooks/useDrag/useRegisteredDragSource.ts","../node_modules/react-dnd/src/hooks/useDrag/useDrag.ts","../node_modules/react-dnd/src/hooks/useDragLayer.ts","../node_modules/react-dnd/src/hooks/useDrop/connectors.ts","../node_modules/react-dnd/src/hooks/useDrop/useDropTargetConnector.ts","../node_modules/react-dnd/src/hooks/useDrop/useDropTargetMonitor.ts","../node_modules/react-dnd/src/hooks/useDrop/useAccept.ts","../node_modules/react-dnd/src/hooks/useDrop/useDropTarget.ts","../node_modules/react-dnd/src/hooks/useDrop/DropTargetImpl.ts","../node_modules/react-dnd/src/hooks/useDrop/useRegisteredDropTarget.ts","../node_modules/react-dnd/src/hooks/useDrop/useDrop.ts","../node_modules/dnd-multi-backend/dist/esm/PreviewListImpl.js","../node_modules/dnd-multi-backend/dist/esm/MultiBackendImpl.js","../node_modules/dnd-multi-backend/dist/esm/MultiFactory.js","../node_modules/dnd-multi-backend/dist/esm/createTransition.js","../node_modules/dnd-multi-backend/dist/esm/transitions.js","../node_modules/react-dnd-touch-backend/src/interfaces.ts","../node_modules/react-dnd-touch-backend/src/OptionsReader.ts","../node_modules/react-dnd-touch-backend/src/utils/math.ts","../node_modules/react-dnd-touch-backend/src/utils/predicates.ts","../node_modules/react-dnd-touch-backend/src/utils/offsets.ts","../node_modules/react-dnd-touch-backend/src/utils/supportsPassive.ts","../node_modules/react-dnd-touch-backend/src/TouchBackendImpl.ts","../node_modules/react-dnd-touch-backend/src/index.ts","../src/SingleInputForm.tsx","../src/CreateNewNode.tsx","../src/index.tsx"],"names":["__extends","__assign","__rest","__decorate","__param","__metadata","__awaiter","__generator","__exportStar","__values","__read","__spread","__spreadArrays","__spreadArray","__await","__asyncGenerator","__asyncDelegator","__asyncValues","__makeTemplateObject","__importStar","__importDefault","__classPrivateFieldGet","__classPrivateFieldSet","__classPrivateFieldIn","__createBinding","exports","id","b","c","a","v","memoize","cache","equal","keys","_a","children","useSandpack","FileIcon","DirectoryIconOpen","React","useState","createContext","useContext","useEffect","useRef","useMemo","forwardRef","fn","result","memoized","without","items","item","filter","i","union","itemsA","itemsB","set","Set","insertItem","add","forEach","key","push","EnterLeaveCounter","enter","enteringNode","previousLength","entered","length","isNodeEntered","node","isNodeInDocument","contains","leave","leavingNode","reset","NativeDragSource","initializeExposedProperties","Object","config","exposeProperties","property","defineProperty","configurable","enumerable","get","console","warn","loadDataTransfer","dataTransfer","newProperties","propertyFn","value","matchesTypes","defineProperties","canDrag","beginDrag","isDragging","monitor","handle","getSourceId","endDrag","FILE","URL","TEXT","HTML","getDataFromDataTransfer","typesToTry","defaultValue","reduce","resultSoFar","typeToTry","getData","nativeTypesConfig","files","Array","prototype","slice","call","html","urls","split","text","createNativeDragSource","type","Error","matchNativeItemType","dataTransferTypes","types","nativeItemType","typeConfig","some","t","indexOf","isFirefox","test","navigator","userAgent","isSafari","Boolean","window","safari","MonotonicInterpolant","interpolate","x","xs","ys","c1s","c2s","c3s","low","high","mid","Math","floor","xHere","max","diff","diffSq","indexes","sort","dys","dxs","ms","dx","dy","m2","mNext","dxNext","common","m","c1","invDx","ELEMENT_NODE","getNodeClientOffset","el","nodeType","parentElement","top","left","getBoundingClientRect","y","getEventClientOffset","e","clientX","clientY","isImageNode","document","nodeName","documentElement","getDragPreviewSize","isImage","dragPreview","sourceWidth","sourceHeight","dragPreviewWidth","width","dragPreviewHeight","height","devicePixelRatio","getDragPreviewOffset","sourceNode","clientOffset","anchorPoint","offsetPoint","dragPreviewNode","dragPreviewNodeOffsetFromClient","offsetFromDragPreview","offsetWidth","offsetHeight","anchorX","anchorY","calculateYOffset","interpolantY","calculateXOffset","interpolantX","offsetX","offsetY","isManualOffsetX","isManualOffsetY","OptionsReader","globalContext","undefined","rootElement","optionsArgs","options","ownerDocument","HTML5BackendImpl","profile","sourcePreviewNodes","size","sourcePreviewNodeOptions","sourceNodeOptions","sourceNodes","dragStartSourceIds","dropTargetIds","dragEnterTargetIds","dragOverTargetIds","setup","root","__isReactDndBackendSetUp","addEventListeners","teardown","removeEventListeners","clearCurrentDragSourceNode","asyncEndDragFrameId","cancelAnimationFrame","connectDragPreview","sourceId","delete","connectDragSource","handleDragStart","handleSelectStart","setAttribute","addEventListener","removeEventListener","connectDropTarget","targetId","handleDragEnter","handleDragOver","handleDrop","target","handleTopDragStart","handleTopDragStartCapture","handleTopDragEndCapture","handleTopDragEnter","handleTopDragEnterCapture","handleTopDragLeaveCapture","handleTopDragOver","handleTopDragOverCapture","handleTopDrop","handleTopDropCapture","getCurrentSourceNodeOptions","dropEffect","altKeyPressed","getCurrentDropEffect","isDraggingNativeItem","getCurrentSourcePreviewNodeOptions","captureDraggingState","itemType","getItemType","NativeTypes","beginDragNativeItem","currentNativeSource","currentNativeHandle","registry","addSource","actions","setCurrentDragSourceNode","currentDragSourceNode","MOUSE_MOVE_TIMEOUT","mouseMoveTimeoutTimer","setTimeout","endDragIfSourceWasRemovedFromDOM","clearTimeout","defaultPrevented","unshift","_e","manager","Map","lastClientOffset","hoverRafId","getSourceClientOffset","source","endDragNativeItem","removeSource","body","cancelHover","scheduleHover","requestAnimationFrame","hover","publishSource","nativeType","setDragImage","dragPreviewOffset","setData","err","publishDragSource","hasAttribute","preventDefault","isFirstEnter","enterLeaveCounter","altKey","canDrop","canDropOnTarget","isLastLeave","drop","dragDrop","tagName","isContentEditable","getActions","getMonitor","getRegistry","emptyImage","getEmptyImage","Image","src","HTML5Backend","createBackend","context","ResizeObserverBoxOptions","ResizeObserverSize","DOMRectReadOnly","scope","global","ResizeObserverEntry","callbacks","process","cb","ResizeObserver","Scheduler","ResizeObservation","ResizeObserverDetail","ResizeObserverController","index","tslib","visualElement","animate","drag","VisualElementHandler","createElement","transformKeys","alpha","number","hasTransform","scrapeMotionValuesFromProps","AnimationType","isMouseEvent","clamp","undampedFreq","progress","color","analyse","runNextFrame","isProcessing","startAnimation","register","keyframes","getAnimatableNone","SubscriptionManager","MotionValue","animations","getAnimation","PanSession","info","point","timestamp","event","getVelocity","time","calcOrigin","transformPoint","scale","distance","rootProjectionNode","VisualElementDragControls","_b","inertia","motionValue","measureViewportBox","isCSSVariable","current","resolved","BoundingBoxDimension","getComputedStyle","React__default","MeasureLayoutWithContext","xKeys","yKeys","NodeStack","member","FlatTree","notify","createDebounce","DndContext","dragDropManager","randomString","subscribe","warning","invariant","condition","format","args","isProduction","error","argIndex","replace","name","framesToPop","env","obj","path","isObject","input","xor","map","has","count","intersection","INIT_COORDS","BEGIN_DRAG","PUBLISH_DRAG_SOURCE","HOVER","DROP","END_DRAG","setClientOffset","sourceClientOffset","payload","ResetCoordinatesAction","createBeginDrag","sourceIds","dispatch","verifyInvariants","getDraggableSource","verifyGetSourceClientOffsetIsFunction","getSource","verifyItemIsObject","pinSource","getSourceType","isSourcePublic","canDragSource","_defineProperty","createDrop","targetIds","getDroppableTargets","dropResult","determineDropResult","action","_objectSpread","didDrop","getTarget","verifyDropResultType","getDropResult","getTargetIds","reverse","createEndDrag","verifyIsDragging","unpinSource","matchesType","targetType","draggedItemType","isArray","createHover","targetIdsArg","verifyTargetIdsIsArray","removeNonMatchingTargetIds","checkInvariants","hoverAllTargets","lastIndexOf","getTargetType","splice","createPublishDragSource","createDragDropActions","DragDropManagerImpl","receiveBackend","backend","getBackend","store","bindActionCreator","actionCreator","apply","boundActions","isSetUp","handleRefCountChange","shouldSetUp","getState","refCount","subtract","state","initialClientOffset","initialSourceClientOffset","getDifferenceFromInitialOffset","NONE","ALL","__IS_NONE__","__IS_ALL__","areDirty","dirtyIds","handlerIds","commonIds","DragDropMonitorImpl","subscribeToStateChange","listener","prevStateId","stateId","handleChange","currentStateId","canSkipListener","dirtyHandlerIds","subscribeToOffsetChange","previousState","dragOffset","nextState","isDraggingSource","sourceType","isOverTarget","shallow","dragOperation","getItem","getInitialClientOffset","getInitialSourceClientOffset","getClientOffset","self","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","makeRequestCallFromTimer","callback","requestCall","timeoutHandle","handleTimer","intervalHandle","setInterval","clearInterval","makeRequestCallFromMutationObserver","toggle","observer","createTextNode","observe","characterData","data","makeRequestCall","AsapQueue","enqueueTask","task","queue","q","requestFlush","flushing","pendingErrors","capacity","flush","currentIndex","scan","newLength","registerPendingError","requestErrorThrow","shift","RawTask","onError","release","TaskFactory","create","tasks","freeTasks","pop","asapQueue","taskFactory","asap","ADD_SOURCE","ADD_TARGET","REMOVE_SOURCE","REMOVE_TARGET","addTarget","removeTarget","validateSourceContract","validateTargetContract","validateType","allowArray","HandlerRole","SOURCE","TARGET","nextUniqueId","getNextUniqueId","getNextHandlerId","role","toString","parseRoleFromHandlerId","handlerId","mapContainsValue","searchValue","entries","isDone","done","next","HandlerRegistryImpl","addHandler","containsHandler","handler","dragSources","dropTargets","includePinned","isSourceId","isPinned","pinnedSourceId","pinnedSource","isTargetId","strictEquality","areCoordsEqual","offsetA","offsetB","areArraysEqual","isEqual","_state","prevTargetIds","didChange","prevInnermostTargetId","innermostTargetId","initialState","createDragDropManager","backendFactory","backendOptions","debugMode","makeStoreInstance","reduxDevTools","__REDUX_DEVTOOLS_EXTENSION__","createStore","instanceId","memo","INSTANCE_SYM","Symbol","for","DndProvider","props","isGlobalInstance","getDndContextValue","getGlobalContext","Provider","createSingletonDndContext","ctx","useCallback","useLayoutEffect","useIsomorphicLayoutEffect","useCollector","collect","onUpdate","collected","setCollected","updateCollected","nextValue","useMonitorOutput","onCollect","subscribeToMonitorStateChange","getHandlerId","useCollectedProps","collector","connector","reconnect","useOptionalFactory","arg","deps","memoDeps","useConnectDragSource","hooks","dragSource","useConnectDragPreview","isCallingCanDrag","isCallingIsDragging","DragSourceMonitorImpl","receiveHandlerId","internalMonitor","isCallingCanDrop","DropTargetMonitorImpl","isOver","registerTarget","registerSource","shallowEqual","objA","objB","compare","compareContext","compareResult","keysA","keysB","bHasOwnProperty","hasOwnProperty","bind","idx","valueA","valueB","isRef","cloneElement","isValidElement","throwIfCompositeComponentElement","element","displayName","wrapHookToRecognizeElement","hook","elementOrNode","ref","cloneWithRef","wrapConnectorHooks","wrappedHooks","endsWith","wrappedHook","setRef","newRef","previousRef","SourceConnector","newHandlerId","connectTarget","dragSourceOptions","dragSourceOptionsInternal","dragPreviewOptions","dragPreviewOptionsInternal","reconnectDragSource","reconnectDragPreview","didHandlerIdChange","didConnectedDragSourceChange","didDragSourceOptionsChange","disconnectDragSource","lastConnectedDragSource","lastConnectedHandlerId","lastConnectedDragSourceOptions","dragSourceUnsubscribe","forceDidChange","didConnectedDragPreviewChange","didDragPreviewOptionsChange","disconnectDragPreview","lastConnectedDragPreview","lastConnectedDragPreviewOptions","dragPreviewUnsubscribe","dragPreviewRef","dragSourceNode","dragSourceRef","clearDragSource","clearDragPreview","TargetConnector","dropTarget","didDropTargetChange","didOptionsChange","disconnectDropTarget","lastConnectedDropTarget","lastConnectedDropTargetOptions","dropTargetOptions","unsubscribeDropTarget","dropTargetOptionsInternal","dropTargetNode","dropTargetRef","clearDropTarget","useDragDropManager","useDragSourceConnector","useDragSourceMonitor","DragSourceImpl","spec","globalMonitor","end","useDragSource","useDragType","useRegisteredDragSource","registerDragSource","unregister","useDrag","specArg","begin","previewOptions","useDragLayer","useConnectDropTarget","useDropTargetConnector","useDropTargetMonitor","useAccept","accept","DropTargetImpl","useDropTarget","useRegisteredDropTarget","registerDropTarget","join","useDrop","_classPrivateFieldInitSpec","_checkPrivateRedeclaration","_classPrivateFieldGet","_classExtractFieldDescriptor","_classApplyDescriptorGet","_classPrivateFieldSet","_classApplyDescriptorSet","_previews","ListenerType","mouse","touch","keyboard","delay","scrollAngleRanges","getDropTargetElementsAtPoint","ignoreContextMenu","enableHoverOutsideTarget","enableKeyboardEvents","enableMouseEvents","enableTouchEvents","touchSlop","delayTouchStart","delayMouseStart","x1","y1","x2","y2","sqrt","pow","abs","inAngleRanges","angleRanges","angle","atan2","PI","ar","start","MouseButtons","Left","Right","Center","MouseButton","eventShouldStartDrag","button","eventShouldEndDrag","buttons","isTouchEvent","targetTouches","getEventClientTouchOffset","lastTargetTouchFallback","touches","supportsPassive","supported","eventNames","move","contextmenu","keydown","TouchBackendImpl","targetNodes","getTopMoveStartHandler","handleTopMoveStartCapture","handleTopMove","handleTopMoveCapture","handleTopMoveEndCapture","handleCancelOnEscape","_mouseClientOffset","handleTopMoveStart","uninstallSourceNodeRemovalObserver","subject","capture","passive","listenerTypes","listenerType","evt","handleMoveStart","handleMove","coords","droppedOn","elementFromPoint","childMatch","handleTopMoveStartDelay","installSourceNodeRemovalObserver","draggedSourceNode","draggedSourceNodeRemovalObserver","resurrectSourceNode","childList","style","display","removeAttribute","appendChild","disconnect","moveStartSourceIds","waitingForDelay","timeout","_evt","_isScrolling","cancelable","dragOverTargetNodes","elementsAtPoint","elementsFromPoint","elementsAtPointExtended","nodeId","currentNode","orderedDragOverTargetIds","_getDropTargetId","ids","targetNode","TouchBackend","dropTargetId","jsx","jsxs","entryFile"],"mappings":"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","sourcesContent":["/******************************************************************************\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***************************************************************************** */\r\n/* global global, define, System, Reflect, Promise */\r\nvar __extends;\r\nvar __assign;\r\nvar __rest;\r\nvar __decorate;\r\nvar __param;\r\nvar __metadata;\r\nvar __awaiter;\r\nvar __generator;\r\nvar __exportStar;\r\nvar __values;\r\nvar __read;\r\nvar __spread;\r\nvar __spreadArrays;\r\nvar __spreadArray;\r\nvar __await;\r\nvar __asyncGenerator;\r\nvar __asyncDelegator;\r\nvar __asyncValues;\r\nvar __makeTemplateObject;\r\nvar __importStar;\r\nvar __importDefault;\r\nvar __classPrivateFieldGet;\r\nvar __classPrivateFieldSet;\r\nvar __classPrivateFieldIn;\r\nvar __createBinding;\r\n(function (factory) {\r\n    var root = typeof global === \"object\" ? global : typeof self === \"object\" ? self : typeof this === \"object\" ? this : {};\r\n    if (typeof define === \"function\" && define.amd) {\r\n        define(\"tslib\", [\"exports\"], function (exports) { factory(createExporter(root, createExporter(exports))); });\r\n    }\r\n    else if (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n        factory(createExporter(root, createExporter(module.exports)));\r\n    }\r\n    else {\r\n        factory(createExporter(root));\r\n    }\r\n    function createExporter(exports, previous) {\r\n        if (exports !== root) {\r\n            if (typeof Object.create === \"function\") {\r\n                Object.defineProperty(exports, \"__esModule\", { value: true });\r\n            }\r\n            else {\r\n                exports.__esModule = true;\r\n            }\r\n        }\r\n        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };\r\n    }\r\n})\r\n(function (exporter) {\r\n    var extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n\r\n    __extends = function (d, b) {\r\n        if (typeof b !== \"function\" && b !== null)\r\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    };\r\n\r\n    __assign = Object.assign || function (t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    };\r\n\r\n    __rest = function (s, e) {\r\n        var t = {};\r\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n            t[p] = s[p];\r\n        if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                    t[p[i]] = s[p[i]];\r\n            }\r\n        return t;\r\n    };\r\n\r\n    __decorate = function (decorators, target, key, desc) {\r\n        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n        if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n        return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n    };\r\n\r\n    __param = function (paramIndex, decorator) {\r\n        return function (target, key) { decorator(target, key, paramIndex); }\r\n    };\r\n\r\n    __metadata = function (metadataKey, metadataValue) {\r\n        if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n    };\r\n\r\n    __awaiter = function (thisArg, _arguments, P, generator) {\r\n        function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n        return new (P || (P = Promise))(function (resolve, reject) {\r\n            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n            function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n            function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n            step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n        });\r\n    };\r\n\r\n    __generator = function (thisArg, body) {\r\n        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n        return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n        function verb(n) { return function (v) { return step([n, v]); }; }\r\n        function step(op) {\r\n            if (f) throw new TypeError(\"Generator is already executing.\");\r\n            while (_) try {\r\n                if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n                if (y = 0, t) op = [op[0] & 2, t.value];\r\n                switch (op[0]) {\r\n                    case 0: case 1: t = op; break;\r\n                    case 4: _.label++; return { value: op[1], done: false };\r\n                    case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                    case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                    default:\r\n                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                        if (t[2]) _.ops.pop();\r\n                        _.trys.pop(); continue;\r\n                }\r\n                op = body.call(thisArg, _);\r\n            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n        }\r\n    };\r\n\r\n    __exportStar = function(m, o) {\r\n        for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n    };\r\n\r\n    __createBinding = Object.create ? (function(o, m, k, k2) {\r\n        if (k2 === undefined) k2 = k;\r\n        var desc = Object.getOwnPropertyDescriptor(m, k);\r\n        if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n            desc = { enumerable: true, get: function() { return m[k]; } };\r\n        }\r\n        Object.defineProperty(o, k2, desc);\r\n    }) : (function(o, m, k, k2) {\r\n        if (k2 === undefined) k2 = k;\r\n        o[k2] = m[k];\r\n    });\r\n\r\n    __values = function (o) {\r\n        var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n        if (m) return m.call(o);\r\n        if (o && typeof o.length === \"number\") return {\r\n            next: function () {\r\n                if (o && i >= o.length) o = void 0;\r\n                return { value: o && o[i++], done: !o };\r\n            }\r\n        };\r\n        throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n    };\r\n\r\n    __read = function (o, n) {\r\n        var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n        if (!m) return o;\r\n        var i = m.call(o), r, ar = [], e;\r\n        try {\r\n            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n        }\r\n        catch (error) { e = { error: error }; }\r\n        finally {\r\n            try {\r\n                if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n            }\r\n            finally { if (e) throw e.error; }\r\n        }\r\n        return ar;\r\n    };\r\n\r\n    /** @deprecated */\r\n    __spread = function () {\r\n        for (var ar = [], i = 0; i < arguments.length; i++)\r\n            ar = ar.concat(__read(arguments[i]));\r\n        return ar;\r\n    };\r\n\r\n    /** @deprecated */\r\n    __spreadArrays = function () {\r\n        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n        for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n                r[k] = a[j];\r\n        return r;\r\n    };\r\n\r\n    __spreadArray = function (to, from, pack) {\r\n        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n            if (ar || !(i in from)) {\r\n                if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n                ar[i] = from[i];\r\n            }\r\n        }\r\n        return to.concat(ar || Array.prototype.slice.call(from));\r\n    };\r\n\r\n    __await = function (v) {\r\n        return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n    };\r\n\r\n    __asyncGenerator = function (thisArg, _arguments, generator) {\r\n        if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n        var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n        return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }\r\n        function fulfill(value) { resume(\"next\", value); }\r\n        function reject(value) { resume(\"throw\", value); }\r\n        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n    };\r\n\r\n    __asyncDelegator = function (o) {\r\n        var i, p;\r\n        return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n    };\r\n\r\n    __asyncValues = function (o) {\r\n        if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n        var m = o[Symbol.asyncIterator], i;\r\n        return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n    };\r\n\r\n    __makeTemplateObject = function (cooked, raw) {\r\n        if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n        return cooked;\r\n    };\r\n\r\n    var __setModuleDefault = Object.create ? (function(o, v) {\r\n        Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n    }) : function(o, v) {\r\n        o[\"default\"] = v;\r\n    };\r\n\r\n    __importStar = function (mod) {\r\n        if (mod && mod.__esModule) return mod;\r\n        var result = {};\r\n        if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n        __setModuleDefault(result, mod);\r\n        return result;\r\n    };\r\n\r\n    __importDefault = function (mod) {\r\n        return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n    };\r\n\r\n    __classPrivateFieldGet = function (receiver, state, kind, f) {\r\n        if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n        if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n        return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n    };\r\n\r\n    __classPrivateFieldSet = function (receiver, state, value, kind, f) {\r\n        if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n        if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n        if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n        return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n    };\r\n\r\n    __classPrivateFieldIn = function (state, receiver) {\r\n        if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n        return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n    };\r\n\r\n    exporter(\"__extends\", __extends);\r\n    exporter(\"__assign\", __assign);\r\n    exporter(\"__rest\", __rest);\r\n    exporter(\"__decorate\", __decorate);\r\n    exporter(\"__param\", __param);\r\n    exporter(\"__metadata\", __metadata);\r\n    exporter(\"__awaiter\", __awaiter);\r\n    exporter(\"__generator\", __generator);\r\n    exporter(\"__exportStar\", __exportStar);\r\n    exporter(\"__createBinding\", __createBinding);\r\n    exporter(\"__values\", __values);\r\n    exporter(\"__read\", __read);\r\n    exporter(\"__spread\", __spread);\r\n    exporter(\"__spreadArrays\", __spreadArrays);\r\n    exporter(\"__spreadArray\", __spreadArray);\r\n    exporter(\"__await\", __await);\r\n    exporter(\"__asyncGenerator\", __asyncGenerator);\r\n    exporter(\"__asyncDelegator\", __asyncDelegator);\r\n    exporter(\"__asyncValues\", __asyncValues);\r\n    exporter(\"__makeTemplateObject\", __makeTemplateObject);\r\n    exporter(\"__importStar\", __importStar);\r\n    exporter(\"__importDefault\", __importDefault);\r\n    exporter(\"__classPrivateFieldGet\", __classPrivateFieldGet);\r\n    exporter(\"__classPrivateFieldSet\", __classPrivateFieldSet);\r\n    exporter(\"__classPrivateFieldIn\", __classPrivateFieldIn);\r\n});\r\n","function memoize(fn) {\n  var cache = {};\n  return function (arg) {\n    if (cache[arg] === undefined) cache[arg] = fn(arg);\n    return cache[arg];\n  };\n}\n\nexport default memoize;\n","import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar index = memoize(function (prop) {\n  return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n  /* o */\n  && prop.charCodeAt(1) === 110\n  /* n */\n  && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport default index;\n","/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing. The function also has a property 'clear' \n * that is a function which will clear the timer to prevent previously scheduled executions. \n *\n * @source underscore.js\n * @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/\n * @param {Function} function to wrap\n * @param {Number} timeout in ms (`100`)\n * @param {Boolean} whether to execute at the beginning (`false`)\n * @api public\n */\nfunction debounce(func, wait, immediate){\n  var timeout, args, context, timestamp, result;\n  if (null == wait) wait = 100;\n\n  function later() {\n    var last = Date.now() - timestamp;\n\n    if (last < wait && last >= 0) {\n      timeout = setTimeout(later, wait - last);\n    } else {\n      timeout = null;\n      if (!immediate) {\n        result = func.apply(context, args);\n        context = args = null;\n      }\n    }\n  };\n\n  var debounced = function(){\n    context = this;\n    args = arguments;\n    timestamp = Date.now();\n    var callNow = immediate && !timeout;\n    if (!timeout) timeout = setTimeout(later, wait);\n    if (callNow) {\n      result = func.apply(context, args);\n      context = args = null;\n    }\n\n    return result;\n  };\n\n  debounced.clear = function() {\n    if (timeout) {\n      clearTimeout(timeout);\n      timeout = null;\n    }\n  };\n  \n  debounced.flush = function() {\n    if (timeout) {\n      result = func.apply(context, args);\n      context = args = null;\n      \n      clearTimeout(timeout);\n      timeout = null;\n    }\n  };\n\n  return debounced;\n};\n\n// Adds compatibility for ES modules\ndebounce.debounce = debounce;\n\nmodule.exports = debounce;\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = 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\n    var length, i, keys;\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n\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\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;)\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n    for (i = length; i-- !== 0;) {\n      var key = keys[i];\n\n      if (!equal(a[key], b[key])) return false;\n    }\n\n    return true;\n  }\n\n  // true if both NaN, false otherwise\n  return a!==a && b!==b;\n};\n","import { SandpackFiles, useSandpack } from '@codesandbox/sandpack-react';\nimport { DropOptions } from '@minoru/react-dnd-treeview';\nimport type { FC, PropsWithChildren } from 'react';\nimport React, { createContext, useContext, useState } from 'react';\nimport type { Item } from './types';\nimport {\n  buildPath,\n  deleteKeys,\n  directoryFileMap,\n  getRemovedKeys,\n  mergeHierarchicalArray,\n  toHierarchicalArray,\n} from './utils';\n// function swapKeysAndValues(obj: any) {\n//   // Get an array of the object's key-value pairs\n//   const entries = Object.entries(obj);\n\n//   // Create a new array of swapped key-value pairs\n//   const swappedEntries = entries.map(([key, value]) => [value, key]);\n\n//   // Convert the array of swapped key-value pairs back into an object\n//   return Object.fromEntries(swappedEntries);\n// }\nconst CustomSandpackContext = createContext<{\n  addFile: (\n    pathOrFiles: Record<string, string> | SandpackFiles,\n    code?: string | undefined\n  ) => Promise<void>;\n\n  buildPath: (item: Item, arr: Item[]) => string;\n  deleteFile: (file: string | string[]) => Promise<void>;\n  moveFiles: (fileMap: Record<string, string>) => void;\n  onFileMoved: ({\n    node,\n    newTree,\n  }: {\n    newTree: Item[];\n    node: DropOptions<{\n      path: string;\n    }>;\n  }) => Promise<void>;\n  openDirs: string[];\n  setOpenDirs: React.Dispatch<React.SetStateAction<string[]>>;\n  setTreeData: React.Dispatch<React.SetStateAction<any[]>>;\n  treeData: any[];\n}>(null!);\n\nexport const useSandpackFiles = () => {\n  const context = useContext(CustomSandpackContext);\n  if (!context) {\n    throw Error(\n      '<SandpackFileTree/> must be used inside a <SandpackFilesProvider>, you may be looking for <SandpackFileExplorer/>?'\n    );\n  }\n  return context;\n};\n\nexport const SandpackFilesProvider: FC<\n  PropsWithChildren & { onMoveFile?: (fileMap: Record<string, string>) => void }\n> = ({ children, onMoveFile }) => {\n  const { sandpack } = useSandpack();\n  const [treeData, setTreeData] = useState<Item[]>(() =>\n    toHierarchicalArray(directoryFileMap({ ...sandpack.files }))\n  );\n  const [openDirs, setOpenDirs] = useState<string[]>([]);\n\n  const deleteFile = async (file: string[] | string) => {\n    const entryFile = JSON.parse(sandpack.files['/package.json']?.code)?.main;\n    const files = typeof file === 'string' ? [file] : file;\n    if (files.includes(entryFile)) {\n      return;\n    }\n    const sandpackFilesCopy = { ...sandpack.files };\n    // The below code is being added to sandpack and can be removed when complete\n    // https://github.com/codesandbox/sandpack/pull/661\n    // if (\n    //   (!sandpack.visibleFiles.filter((path) => !files.includes(path))?.length ||\n    //     0) > 0\n    // ) {\n    //   sandpack.openFile(entryFile);\n    // }\n\n    const getAllChildrenOfDir = (dir: string, arr: Item[]) => {\n      // const dirId = dir.substring(1);\n\n      const children: string[] = [];\n      const childrenOfDir = arr?.filter(({ parent }) => parent === dir);\n\n      // ?.map(({ id }) =>\n      //   treeData.find(({ parent }) => parent === id) ? `${id}/` : `/${id}`\n      // );\n\n      childrenOfDir.forEach((child) => {\n        children.push(buildPath(child, arr));\n        if (child.id !== '/' && child.id !== dir) {\n          // Only call the function recursively if the child has a parent\n          children.push(...getAllChildrenOfDir(child.id, arr));\n        }\n      });\n      return children;\n    };\n\n    const deleteFilePromises = files.map(async (key) => {\n      const isDir = key.endsWith('/');\n      if (isDir) {\n        const dirId = key.substring(0, key.length - 1);\n        const parentId = dirId.substring(1);\n        sandpack.deleteFile(`${dirId}`);\n        delete sandpackFilesCopy[dirId];\n        // delete all children of dir\n\n        const childrenOfDir = getAllChildrenOfDir(parentId, treeData);\n\n        childrenOfDir.forEach((child) => {\n          sandpack.deleteFile(`/${child}`);\n          delete sandpackFilesCopy[`/${child}`];\n        });\n      }\n      sandpack.deleteFile(key);\n      delete sandpackFilesCopy[key];\n    });\n    await Promise.all(deleteFilePromises);\n    const newFiles = deleteKeys(sandpackFilesCopy, files);\n\n    setTreeData(toHierarchicalArray(directoryFileMap(newFiles)));\n  };\n\n  const addFile = async (files: SandpackFiles) => {\n    for (let id in files) {\n      if (\n        sandpack.files[id] ||\n        sandpack.files[\n          id.endsWith('/') ? id.substring(0, id.length - 1) : `${id}/`\n        ]\n      ) {\n        // a file or dir with \"id\" already exists, do not add it\n        delete files[id];\n      }\n    }\n    sandpack.addFile(files);\n    const tempAddNodes = Object.keys(sandpack.files).filter(\n      (key) => key.includes('addDir') || key.includes('addFile')\n    );\n    const fileKeys = Object.keys(files);\n    const isAnInputNode = fileKeys.filter(\n      (id) => id.includes('addDir') || id.includes('addFile')\n    ).length;\n    if (!isAnInputNode) {\n      await deleteFile(tempAddNodes);\n      const newFiles = deleteKeys({ ...sandpack.files }, tempAddNodes);\n      setTreeData(toHierarchicalArray(directoryFileMap(newFiles, files)));\n      fileKeys.forEach((id) => {\n        if (!id.endsWith('/')) sandpack.openFile(id);\n      });\n    } else {\n      const newTree = toHierarchicalArray(\n        directoryFileMap({ ...sandpack.files }, files as Record<string, string>)\n      );\n      // Just add temp nodes to display input fields in tree\n      setTreeData(newTree);\n\n      const key = Object.keys(files)[0].substring(1);\n      const directoryIds = getAllParentDirs({ childId: key, tree: newTree });\n\n      setOpenDirs((prev) => Array.from(new Set([...prev, ...directoryIds])));\n    }\n  };\n\n  const getAllParentDirs = ({\n    childId,\n    tree,\n  }: {\n    childId: string;\n    tree: Item[];\n  }) => {\n    const ids: string[] = [];\n    const itemParent = tree.find(({ id }) => id === childId)?.parent;\n\n    if (!itemParent || itemParent === '/') {\n      return ids;\n    }\n    ids.push(`${itemParent}`);\n    ids.push(...getAllParentDirs({ childId: itemParent, tree }));\n    return ids;\n  };\n  const onFileMoved = async ({\n    node,\n    newTree,\n  }: {\n    newTree: Item[];\n    node: DropOptions<{ path: string }>;\n  }) => {\n    const filesCopy = { ...sandpack.files };\n    const prev = mergeHierarchicalArray(filesCopy, treeData);\n    const neww = mergeHierarchicalArray(filesCopy, newTree);\n    const removedKeys = getRemovedKeys(prev, neww);\n\n    const deleteFilePromises = removedKeys.map((key) => {\n      deleteFile(key);\n    });\n    await Promise.all(deleteFilePromises);\n\n    sandpack.addFile(neww);\n    const movedFileMap = removedKeys.reduce((acc, id) => {\n      const newPath = `/${buildPath(\n        {\n          parent: (node.dropTarget?.id as string) ?? '/',\n          text: node?.dragSource?.text,\n        },\n        newTree\n      )}`;\n\n      acc[id] = `${newPath}${id.substring(\n        id.indexOf(node?.dragSource?.id as string) +\n          (node?.dragSource?.id as string)?.length\n      )}`;\n      return acc;\n    }, {} as Record<string, string>);\n\n    onMoveFile?.(movedFileMap);\n\n    const currentActiveFile = sandpack.activeFile;\n    let newActiveFile = sandpack.activeFile;\n    sandpack.visibleFiles.forEach((file) => {\n      if (movedFileMap[file]) {\n        sandpack.openFile(movedFileMap[file]);\n        if (currentActiveFile === file) {\n          newActiveFile = movedFileMap[file];\n        }\n      }\n    });\n\n    sandpack.setActiveFile(newActiveFile);\n  };\n\n  const moveFiles = async (fileMap: Record<string, string>) => {\n    const filesCopy = { ...sandpack.files };\n    for (let file in fileMap) {\n      if (filesCopy[file]) {\n        filesCopy[fileMap[file]] = filesCopy[file];\n      }\n    }\n\n    const deleteFilePromises = Object.keys(fileMap).map((key) => {\n      if (filesCopy[key]) {\n        delete filesCopy[key];\n        deleteFile(key);\n      }\n    });\n    await Promise.all(deleteFilePromises);\n\n    sandpack.addFile(filesCopy);\n\n    const currentActiveFile = sandpack.activeFile;\n    let newActiveFile = sandpack.activeFile;\n    sandpack.visibleFiles.forEach((file) => {\n      if (fileMap[file]) {\n        sandpack.openFile(fileMap[file]);\n        if (currentActiveFile === file) {\n          newActiveFile = file;\n        }\n      }\n    });\n    sandpack.setActiveFile(newActiveFile);\n    const array = toHierarchicalArray(directoryFileMap({ ...filesCopy }));\n    setTreeData(array);\n  };\n\n  const value = {\n    addFile,\n    treeData,\n    setTreeData,\n    buildPath,\n    deleteFile,\n    onFileMoved,\n    moveFiles,\n    openDirs,\n    setOpenDirs,\n  };\n\n  return (\n    <CustomSandpackContext.Provider value={value}>\n      {children}\n    </CustomSandpackContext.Provider>\n  );\n};\n","export function arrayToObject(arr: any[]): any {\n  return arr.reduceRight(\n    (prev: any, current: any) => ({ [current]: prev }),\n    null\n  );\n}\n","import type { SandpackBundlerFiles } from '../types';\n\nexport function deepMerge(\n  files: SandpackBundlerFiles,\n  obj1: any,\n  obj2: any,\n  path: string\n) {\n  // Create a new object by copying the properties of obj1\n  const result = Object.assign({}, obj1);\n\n  for (const prop in obj2) {\n    // If the property is also an object, recursively merge the objects\n    if (!result[prop]) {\n      result[prop] = {};\n    }\n    if (typeof obj2[prop] === 'object') {\n      // If the objects being merged are empty, return null instead of calling deepMerge()\n      if (\n        Object.keys(obj1?.[prop] || {})?.length === 0 &&\n        Object.keys(obj2?.[prop] || {})?.length === 0\n      ) {\n        result[prop] = files[`${prop}`]?.code;\n      } else {\n        // Check if either of the objects being merged is empty and return the non-empty object instead of calling deepMerge()\n        if (Object.keys(obj1?.[prop] || {})?.length === 0) {\n          result[prop] = Object.entries(obj2[prop]).reduce(\n            (acc, [key, value]) => {\n              if (value !== null) {\n                acc[key] = deepMerge(files, result[prop], value, path);\n              } else {\n                acc[key] = files[`${prop}/${key}`]?.code;\n              }\n              return acc;\n            },\n            {} as Record<string, unknown>\n          );\n        } else if (Object.keys(obj2?.[prop] || {})?.length === 0) {\n          result[prop] = obj1[prop];\n        } else {\n          result[prop] = deepMerge(files, result[prop], obj2[prop], path);\n        }\n      }\n    } else {\n      result[prop] = files[`${path}`]?.code;\n    }\n  }\n\n  return result;\n}\n","import type { SandpackBundlerFiles } from '../types';\n\nexport const deleteKeys = (\n  obj: Record<string, string> | SandpackBundlerFiles,\n  keysToDelete: string[]\n) => {\n  return Object.fromEntries(\n    Object.entries(obj).filter(([key]) => !keysToDelete.includes(key))\n  );\n};\n","import { SandpackFiles } from '@codesandbox/sandpack-react';\nimport { arrayToObject, deepMerge } from '.';\nimport type { SandpackBundlerFiles } from '../types';\n\nexport const directoryFileMap = (\n  files: SandpackBundlerFiles | Record<string, string> | SandpackFiles,\n  overrides: Record<string, string> | string | SandpackFiles = {}\n) => {\n  const _overrides =\n    typeof overrides === 'string' ? { [overrides]: '' } : overrides ?? {};\n\n  const _files = Object.keys({ ...files, ..._overrides }).reduce(\n    (acc, current) => {\n      const split = current.split('/').splice(1);\n\n      const dirTree = arrayToObject(split);\n\n      acc = deepMerge(files as SandpackBundlerFiles, acc, dirTree, current);\n      return acc;\n    },\n    {}\n  );\n\n  return _files;\n};\n","import type { Item } from '../types';\n\nexport const buildPath = (item: Partial<Item>, arr: Item[]) => {\n  let path = '';\n\n  // Recursively build the path by looking for the parent of the current item\n  let parent = arr.find(({ id }) => id === item.parent);\n  if (parent) {\n    path = `${buildPath(parent, arr)}/${path}`;\n  }\n\n  // Add the current item's text to the path\n  path += `${item.text}`;\n\n  return path;\n};\n","import { buildPath } from './buildPath';\n\nexport const toHierarchicalArray = (\n  obj: { [key: string]: any },\n  parentId = '/',\n  arr: any[] = []\n): any[] => {\n  for (let key in obj) {\n    if (obj.hasOwnProperty(key)) {\n      const text = key;\n      let builtPath = buildPath(\n        {\n          id: '',\n          parent: parentId,\n          text: text,\n          droppable: false,\n          data: {\n            path: '',\n          },\n        },\n        arr\n      );\n      const item = {\n        id: builtPath,\n        parent: parentId,\n        text: text,\n        data: {\n          path: `/${builtPath}`,\n        },\n        droppable: false,\n      };\n\n      if (typeof obj[key] === 'object' && obj[key] !== null) {\n        item.droppable = true;\n        arr.push(item);\n        toHierarchicalArray(obj[key], builtPath, arr);\n      } else {\n        arr.push(item);\n      }\n    }\n  }\n  return arr;\n};\n","import type { SandpackBundlerFiles } from '../types';\n\nexport const getEntryFile = (files: SandpackBundlerFiles) => {\n  let entryFile = '';\n  try {\n    entryFile = JSON.parse(files['/package.json']?.code)?.main;\n  } catch {\n    const entryRegex = /\\\"main\\\"\\s*:\\s*\\\"([^\"]+)\\\"/;\n    const match = entryRegex.exec(files['/package.json']?.code);\n    const mainValue = match?.[1] ?? '';\n    entryFile = mainValue;\n  }\n  return entryFile;\n};\n","export function getRemovedKeys(\n  original: { [key: string]: any },\n  updated: { [key: string]: any }\n): string[] {\n  const removedKeys: string[] = [];\n  for (let key in original) {\n    if (original.hasOwnProperty(key) && !updated.hasOwnProperty(key)) {\n      removedKeys.push(key);\n    }\n  }\n  return removedKeys;\n}\n","import { buildPath } from '.';\nimport type { Item, SandpackBundlerFiles } from '../types';\n\nexport function mergeHierarchicalArray(\n  sandpackFiles: SandpackBundlerFiles,\n  arr: Item[]\n): SandpackBundlerFiles {\n  // create an empty object to store the hierarchical data\n  let obj: SandpackBundlerFiles = {};\n\n  // iterate through the array of items\n  for (let i = 0; i < arr?.length; i++) {\n    let item: Item = arr[i];\n\n    // add the item to the object\n\n    // find the parent node in the object and add the item as a child\n    let builtPath = buildPath(item, arr);\n\n    obj[`/${builtPath}`] = sandpackFiles[`${item.data.path}`];\n    if (item.droppable && !obj[`/${builtPath}`]) {\n      obj[`/${builtPath}`] = { code: '.emptyDir', hidden: true };\n      obj[`/${builtPath}/`] = { code: '.emptyDir', hidden: true };\n    }\n    item.data.path = `/${builtPath}`;\n  }\n\n  // removeHiddenEntries(obj);\n  // flatten the object by merging all nested objects into the root object\n  // flattenObject(obj);\n\n  return obj;\n}\n","import {\n  useSandpack,\n  FileIcon,\n  CloseIcon,\n  DirectoryIconClosed,\n  DirectoryIconOpen,\n} from '@codesandbox/sandpack-react';\nimport {\n  Tree,\n  getBackendOptions,\n  MultiBackend,\n  DropOptions,\n  NodeModel,\n} from '@minoru/react-dnd-treeview';\nimport { DndProvider } from 'react-dnd';\nimport { SingleInputForm } from './SingleInputForm';\nimport { CreateNewNode } from './CreateNewNode';\nimport { useSandpackFiles } from './SandpackFilesProvider';\nimport { buildPath, getEntryFile } from './utils';\nimport React from 'react';\nimport { Item } from './types';\n\nexport const FileTreeExplorer = () => {\n  const {\n    treeData,\n    addFile,\n    deleteFile,\n    onFileMoved,\n    setTreeData,\n    openDirs,\n    setOpenDirs,\n  } = useSandpackFiles();\n  const { sandpack } = useSandpack();\n\n  const immoveablePaths = ['/package.json'];\n  const handleDrop = async (\n    newTreeData: NodeModel<{\n      path: string;\n    }>[],\n    node: DropOptions<{ path: string }>\n  ) => {\n    const entryFile = getEntryFile(sandpack.files);\n\n    const path = `/${buildPath(\n      {\n        parent: node.dropTargetId as string,\n        text: (node?.dragSource?.text || node.dragSourceId) as string,\n      },\n      newTreeData as Item[]\n    )}`;\n\n    if (sandpack.files[path]) {\n    }\n    if (\n      [...immoveablePaths, entryFile].includes(\n        node?.dragSource?.data?.path || ''\n      ) ||\n      node.dragSource?.parent === node.dropTargetId ||\n      sandpack.files[path]\n    ) {\n      return;\n    }\n\n    await onFileMoved({ newTree: newTreeData as Item[], node });\n    // const prev = mergeHierarchicalArray(sandpack.files, treeData);\n    // const neww = mergeHierarchicalArray(sandpack.files, newTreeData);\n\n    // const deleteFilePromises = getRemovedKeys(prev, neww).map((key) =>\n    //   sandpack.deleteFile(key)\n    // );\n    // await Promise.all(deleteFilePromises);\n\n    // addFile(neww);\n    setTreeData(newTreeData);\n  };\n\n  const entryFile = getEntryFile(sandpack.files);\n\n  return (\n    <>\n      <DndProvider backend={MultiBackend} options={getBackendOptions()}>\n        <div\n          style={{\n            minHeight: '100%',\n            maxHeight: '100%',\n            height: `var(--sp-layout-height)`,\n            minWidth: '200px',\n            overflowY: 'auto',\n            overflowX: 'hidden',\n            position: 'relative',\n            display: 'flex',\n            flexDirection: 'column',\n            padding: `var(--sp-space-1) var(--sp-space-3)`,\n            backgroundColor: `var(--sp-colors-surface1, #011627)`,\n          }}\n        >\n          <div\n            style={{\n              width: '100%',\n              display: 'flex',\n              justifyContent: 'space-between',\n              alignItems: 'center',\n              minHeight: '40px',\n            }}\n          >\n            <span>Files</span>\n            <div style={{ display: 'flex' }}>\n              <CreateNewNode />\n              <CreateNewNode dir={true} />\n            </div>\n          </div>\n          <Tree<{ path: string }>\n            tree={treeData.filter(({ text }) => Boolean(text))}\n            rootId={'/'}\n            onDrop={handleDrop}\n            rootProps={{\n              style: { listStyle: 'none', padding: '0', height: '100%' },\n            }}\n            classes={{ root: 'test' }}\n            enableAnimateExpand={true}\n            insertDroppableFirst={true}\n            sort={true}\n            initialOpen={openDirs}\n            // onChangeOpen={(e) => setOpenDirs(e as string[])}\n            // initialOpen={openDirs} //treeData.map(({ id }) => id)}\n            render={(node, { depth, isOpen }) =>\n              !node.text ? (\n                <></>\n              ) : (\n                <div\n                  key={node.id}\n                  style={{\n                    marginLeft: depth * 10,\n                    display: 'flex',\n                    justifyContent: 'space-between',\n                    maxWidth: '300px',\n                    overflow: 'hidden',\n                    padding: `var(--sp-space-1) 0`,\n                    transition: `color var(--sp-transitions-default), background var(--sp-transitions-default)`,\n                  }}\n                >\n                  {node.text.includes('addFile') ||\n                  node.text.includes('addDir') ? (\n                    <SingleInputForm\n                      files={sandpack.files}\n                      onBlur={() => deleteFile(`${node?.data?.path}`)}\n                      isDirectory={node.text.includes('addDir')}\n                      currentPath={node?.data?.path\n                        .split('/')\n                        .slice(0, -1)\n                        .join('/')}\n                      onSubmit={async (fileName) => {\n                        const newPath = node?.data?.path\n                          .split('/')\n                          .slice(0, -1)\n                          .join('/');\n\n                        const path = `${newPath}/${fileName}`;\n                        await addFile({\n                          [path]: {\n                            code: node.text.includes('addDir')\n                              ? '.emptyDir'\n                              : `// ${fileName}`,\n                            hidden: node.text.includes('addDir'),\n                          },\n                        });\n                      }}\n                    />\n                  ) : null}\n                  {node.text &&\n                  !node.text.includes('addFile') &&\n                  !node.text.includes('addDir') ? (\n                    <>\n                      {node.droppable ? (\n                        <span\n                          style={{\n                            color: `var(--sp-colors-clickable)`,\n                            display: 'flex',\n                            cursor: 'pointer',\n                          }}\n                          onClick={() => {\n                            if (isOpen) {\n                              setOpenDirs((prev) =>\n                                prev.filter((id) => id !== node.id)\n                              );\n                            } else {\n                              setOpenDirs((prev) => [\n                                ...prev,\n                                node.id as string,\n                              ]);\n                            }\n                          }}\n                        >\n                          {isOpen ? (\n                            <DirectoryIconOpen />\n                          ) : (\n                            <DirectoryIconClosed />\n                          )}\n                          {node.text}\n                          {isOpen ? '[-] ' : '[+] '}\n                        </span>\n                      ) : (\n                        <span style={{ display: 'flex' }}>\n                          <span\n                            style={{\n                              minWidth: '16px',\n                              minHeight: '16px',\n                            }}\n                          >\n                            <FileIcon />\n                          </span>\n                          <span\n                            style={{\n                              textOverflow: 'ellipsis',\n                              maxWidth: '200px',\n                              overflow: 'hidden',\n                              cursor: 'pointer',\n                              color: `${\n                                node?.data?.path === sandpack.activeFile\n                                  ? `var(--sp-colors-accent)`\n                                  : `var(--sp-colors-clickable)`\n                              }`,\n                              display: 'flex',\n                            }}\n                            onClick={() =>\n                              sandpack.openFile(node?.data?.path as string)\n                            }\n                          >\n                            {node.text}\n                          </span>\n                        </span>\n                      )}\n                      {![entryFile, '/package.json'].includes(\n                        node?.data?.path ?? ''\n                      ) ? (\n                        <button\n                          style={{\n                            background: 'none',\n                            border: 'none',\n                            cursor: 'pointer',\n                          }}\n                          onClick={async () => {\n                            await deleteFile(\n                              `${node?.data?.path as string}${\n                                node.droppable ? '/' : ''\n                              }`\n                            );\n                          }}\n                        >\n                          <CloseIcon />\n                        </button>\n                      ) : (\n                        <span\n                          style={{\n                            color: `var(--sp-colors-warning)`,\n                          }}\n                        >\n                          {node?.data?.path === entryFile ? 'entry' : ''}\n                        </span>\n                      )}\n                    </>\n                  ) : null}\n                </div>\n              )\n            }\n          />\n        </div>\n      </DndProvider>\n    </>\n  );\n};\n","import React, { useState, createContext, useImperativeHandle, useContext, useEffect, useRef, useMemo, forwardRef } from 'react';\nimport { HTML5Backend, getEmptyImage } from 'react-dnd-html5-backend';\nimport { ResizeObserver } from '@juggle/resize-observer';\nimport { motion } from 'framer-motion';\nimport useMeasure from 'react-use-measure';\nimport { useDragDropManager, useDrag, useDrop, useDragLayer } from 'react-dnd';\nexport { DndProvider } from 'react-dnd';\nimport { PointerTransition, TouchTransition } from 'dnd-multi-backend';\nexport { MultiBackend } from 'dnd-multi-backend';\nimport { TouchBackend } from 'react-dnd-touch-backend';\n\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***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    };\r\n    return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || Array.prototype.slice.call(from));\r\n}\n\nfunction AnimateHeight(props) {\n    var isVisible = props.isVisible, _a = props.ease, ease = _a === void 0 ? \"easeIn\" : _a, duration = props.duration, _b = props.variants, variants = _b === void 0 ? {\n        open: { opacity: 1, height: \"auto\" },\n        close: { opacity: 0, height: 0 },\n    } : _b, children = props.children;\n    var _c = useMeasure({ polyfill: ResizeObserver }), ref = _c[0], height = _c[1].height;\n    var _d = useState(false), animating = _d[0], setAnimating = _d[1];\n    var onAnimationStart = function () {\n        setAnimating(true);\n    };\n    var onAnimationComplete = function () {\n        setAnimating(false);\n    };\n    return (React.createElement(motion.div, { style: isVisible && !animating ? {} : { overflow: \"hidden\" }, onAnimationComplete: onAnimationComplete, onAnimationStart: onAnimationStart, initial: isVisible ? \"open\" : \"close\", animate: isVisible ? \"open\" : \"close\", inherit: false, variants: variants, transition: { ease: ease, duration: computeDuration(height, duration) } },\n        React.createElement(\"div\", { ref: ref }, children)));\n}\n/** Auto compute the duration by dynamic height.  */\nfunction computeDuration(height, fixedDuration) {\n    if (fixedDuration)\n        return fixedDuration;\n    if (!height)\n        return 0;\n    var constant = height / 36;\n    // ??? don't know why use below computed expression (just copy it from somewhere)\n    return Math.round((4 + 10 * Math.pow(constant, 0.25) + constant / 5) * 10) / 1500;\n}\n\nvar compareItems = function (a, b) {\n    if (a.text > b.text) {\n        return 1;\n    }\n    else if (a.text < b.text) {\n        return -1;\n    }\n    return 0;\n};\n\nvar getTreeItem = function (tree, id) { return tree.find(function (n) { return n.id === id; }); };\n\nvar isAncestor = function (tree, sourceId, targetId) {\n    if (targetId === 0) {\n        return false;\n    }\n    var targetNode = tree.find(function (node) { return node.id === targetId; });\n    if (targetNode === undefined) {\n        return false;\n    }\n    if (targetNode.parent === sourceId) {\n        return true;\n    }\n    return isAncestor(tree, sourceId, targetNode.parent);\n};\n\nvar isDroppable = function (dragSourceId, dropTargetId, treeContext) {\n    var tree = treeContext.tree, rootId = treeContext.rootId, canDrop = treeContext.canDrop;\n    if (dragSourceId === undefined) {\n        // Dropability judgment of each node in the undragged state.\n        // Without this process, the newly mounted node will not be able to be dropped unless it is re-rendered\n        if (dropTargetId === rootId) {\n            return true;\n        }\n        var dropTargetNode = tree.find(function (node) { return node.id === dropTargetId; });\n        if (dropTargetNode && dropTargetNode.droppable) {\n            return true;\n        }\n        return false;\n    }\n    else {\n        if (canDrop) {\n            var result = canDrop(dragSourceId, dropTargetId);\n            if (result !== undefined) {\n                return result;\n            }\n        }\n        if (dragSourceId === dropTargetId) {\n            return false;\n        }\n        var dragSourceNode = tree.find(function (node) { return node.id === dragSourceId; });\n        var dropTargetNode = tree.find(function (node) { return node.id === dropTargetId; });\n        // dragSource is external node\n        if (dragSourceNode === undefined) {\n            return dropTargetId === rootId || !!(dropTargetNode === null || dropTargetNode === void 0 ? void 0 : dropTargetNode.droppable);\n        }\n        // dropTarget is root node\n        if (dropTargetNode === undefined) {\n            return dragSourceNode.parent !== 0;\n        }\n        if (dragSourceNode.parent === dropTargetId || !dropTargetNode.droppable) {\n            return false;\n        }\n        return !isAncestor(tree, dragSourceId, dropTargetId);\n    }\n};\n\nvar mutateTree = function (tree, dragSourceId, dropTargetId) {\n    return tree.map(function (node) {\n        if (node.id === dragSourceId) {\n            return __assign(__assign({}, node), { parent: dropTargetId });\n        }\n        return node;\n    });\n};\n\nvar getDestIndex = function (tree, dropTargetId, index) {\n    if (index === 0) {\n        return 0;\n    }\n    var siblings = tree.filter(function (node) { return node.parent === dropTargetId; });\n    if (siblings[index]) {\n        return tree.findIndex(function (node) { return node.id === siblings[index].id; });\n    }\n    return tree.findIndex(function (node) { return node.id === siblings[index - 1].id; }) + 1;\n};\n\nvar getSrcIndex = function (tree, dragSourceId) {\n    return tree.findIndex(function (node) { return node.id === dragSourceId; });\n};\nvar getModifiedIndex = function (tree, dragSourceId, dropTargetId, index) {\n    var srcIndex = getSrcIndex(tree, dragSourceId);\n    var destIndex = getDestIndex(tree, dropTargetId, index);\n    destIndex = destIndex > srcIndex ? destIndex - 1 : destIndex;\n    return [srcIndex, destIndex];\n};\n\nvar arrayMoveMutable = function (array, fromIndex, toIndex) {\n    var startIndex = fromIndex < 0 ? array.length + fromIndex : fromIndex;\n    if (startIndex >= 0 && startIndex < array.length) {\n        var endIndex = toIndex < 0 ? array.length + toIndex : toIndex;\n        var item = array.splice(fromIndex, 1)[0];\n        array.splice(endIndex, 0, item);\n    }\n};\nvar mutateTreeWithIndex = function (tree, dragSourceId, dropTargetId, index) {\n    var _a = getModifiedIndex(tree, dragSourceId, dropTargetId, index), srcIndex = _a[0], destIndex = _a[1];\n    var newTree = __spreadArray([], tree, true);\n    arrayMoveMutable(newTree, srcIndex, destIndex);\n    return newTree.map(function (node) {\n        if (node.id === dragSourceId) {\n            return __assign(__assign({}, node), { parent: dropTargetId });\n        }\n        return node;\n    });\n};\n\nvar compareYCoord = function (el, pointerY) {\n    var bbox = el.getBoundingClientRect();\n    var centerY = bbox.top + bbox.height / 2;\n    return pointerY > centerY ? \"down\" : \"up\";\n};\nvar getInnerIndex = function (listItems, monitor) {\n    var pos = \"\";\n    var index = 0;\n    listItems.forEach(function (el, key) {\n        var _a;\n        var flag = compareYCoord(el, ((_a = monitor.getClientOffset()) === null || _a === void 0 ? void 0 : _a.y) || 0);\n        if (pos === \"\") {\n            pos = flag;\n        }\n        else if (pos !== flag) {\n            pos = flag;\n            index = key;\n        }\n        if (key === listItems.length - 1 && flag === \"down\") {\n            index = key + 1;\n        }\n    });\n    return index;\n};\nvar getOuterIndex = function (node, nodeEl, monitor) {\n    var parentList = nodeEl.closest('[role=\"list\"]');\n    var parentListItems = parentList === null || parentList === void 0 ? void 0 : parentList.querySelectorAll(':scope > [role=\"listitem\"]');\n    if (!parentListItems) {\n        return null;\n    }\n    return getInnerIndex(parentListItems, monitor);\n};\nvar getHoverPosition = function (el, pointerY, context) {\n    var bbox = el.getBoundingClientRect();\n    var offsetY = context.dropTargetOffset;\n    var upSideY = bbox.top + offsetY;\n    var lowerSideY = bbox.bottom - offsetY;\n    if (pointerY > lowerSideY) {\n        return \"lower\";\n    }\n    else if (pointerY < upSideY) {\n        return \"upper\";\n    }\n    return \"middle\";\n};\nvar getDropTarget = function (node, nodeEl, monitor, context) {\n    var _a;\n    if (!nodeEl) {\n        return null;\n    }\n    if (node === null) {\n        var listItems = nodeEl.querySelectorAll(':scope > [role=\"listitem\"]');\n        return {\n            id: context.rootId,\n            index: getInnerIndex(listItems, monitor),\n        };\n    }\n    var dragSource = monitor.getItem();\n    var list = nodeEl.querySelector('[role=\"list\"]');\n    var hoverPosition = getHoverPosition(nodeEl, ((_a = monitor.getClientOffset()) === null || _a === void 0 ? void 0 : _a.y) || 0, context);\n    if (!list) {\n        if (hoverPosition === \"middle\") {\n            return {\n                id: node.id,\n                index: 0,\n            };\n        }\n        if (isDroppable(dragSource.id, node.parent, context)) {\n            var outerIndex = getOuterIndex(node, nodeEl, monitor);\n            if (outerIndex === null) {\n                return null;\n            }\n            return {\n                id: node.parent,\n                index: outerIndex,\n            };\n        }\n        return null;\n    }\n    else {\n        if (hoverPosition === \"upper\") {\n            if (isDroppable(dragSource.id, node.parent, context)) {\n                var outerIndex = getOuterIndex(node, nodeEl, monitor);\n                if (outerIndex === null) {\n                    return null;\n                }\n                return {\n                    id: node.parent,\n                    index: outerIndex,\n                };\n            }\n            else {\n                return {\n                    id: node.id,\n                    index: 0,\n                };\n            }\n        }\n        var listItems = list.querySelectorAll(':scope > [role=\"listitem\"]');\n        return {\n            id: node.id,\n            index: getInnerIndex(listItems, monitor),\n        };\n    }\n};\n\nvar getDescendants = function (treeData, id) {\n    var descendants = [];\n    var search = function (tree, ids) {\n        var children = tree.filter(function (node) { return ids.includes(node.parent); });\n        if (children.length > 0) {\n            descendants = __spreadArray(__spreadArray([], descendants, true), children, true);\n            search(tree, children.map(function (node) { return node.id; }));\n        }\n    };\n    search(treeData, [id]);\n    return descendants;\n};\n\n/** Get all parental nodes of the given node id. */\nfunction getParents(treeData, id) {\n    var parents = [];\n    var node = treeData.find(function (el) { return el.id === id; });\n    while (node) {\n        node = treeData.find(function (el) { return el.id === node.parent; });\n        if (node)\n            parents.push(node);\n    }\n    return parents;\n}\n\nvar getBackendOptions = function (options) {\n    if (options === void 0) { options = {}; }\n    return {\n        backends: [\n            {\n                id: \"html5\",\n                backend: HTML5Backend,\n                options: options.html5,\n                transition: PointerTransition,\n            },\n            {\n                id: \"touch\",\n                backend: TouchBackend,\n                options: options.touch || { enableMouseEvents: true },\n                preview: true,\n                transition: TouchTransition,\n            },\n        ],\n    };\n};\n\nvar isNodeModel = function (arg) {\n    return (arg.id !== undefined && arg.parent !== undefined && arg.text !== undefined);\n};\n\nvar TreeContext = createContext({});\nvar TreeProvider = function (props) {\n    var _a = useOpenIdsHelper(props.tree, props.initialOpen), openIds = _a[0], _b = _a[1], handleToggle = _b.handleToggle, handleCloseAll = _b.handleCloseAll, handleOpenAll = _b.handleOpenAll, handleOpen = _b.handleOpen, handleClose = _b.handleClose;\n    useImperativeHandle(props.treeRef, function () { return ({\n        open: function (targetIds) { return handleOpen(targetIds, props.onChangeOpen); },\n        close: function (targetIds) { return handleClose(targetIds, props.onChangeOpen); },\n        openAll: function () { return handleOpenAll(props.onChangeOpen); },\n        closeAll: function () { return handleCloseAll(props.onChangeOpen); },\n    }); });\n    var monitor = useDragDropManager().getMonitor();\n    var canDropCallback = props.canDrop;\n    var canDragCallback = props.canDrag;\n    var value = __assign(__assign({ extraAcceptTypes: [], listComponent: \"ul\", listItemComponent: \"li\", placeholderComponent: \"li\", sort: true, insertDroppableFirst: true, enableAnimateExpand: false, dropTargetOffset: 0, initialOpen: false }, props), { openIds: openIds, onDrop: function (dragSource, dropTargetId, placeholderIndex) {\n            // if dragSource is null,\n            // it means that the drop is from the outside of the react-dnd.\n            if (!dragSource) {\n                var options = {\n                    dropTargetId: dropTargetId,\n                    dropTarget: getTreeItem(props.tree, dropTargetId),\n                    monitor: monitor,\n                };\n                if (props.sort === false) {\n                    options.destinationIndex = getDestIndex(props.tree, dropTargetId, placeholderIndex);\n                    options.relativeIndex = placeholderIndex;\n                }\n                props.onDrop(props.tree, options);\n            }\n            else {\n                var options = {\n                    dragSourceId: dragSource.id,\n                    dropTargetId: dropTargetId,\n                    dragSource: dragSource,\n                    dropTarget: getTreeItem(props.tree, dropTargetId),\n                    monitor: monitor,\n                };\n                var tree = props.tree;\n                // If the dragSource does not exist in the tree,\n                // it is an external node, so add it to the tree\n                if (!getTreeItem(tree, dragSource.id)) {\n                    tree = __spreadArray(__spreadArray([], tree, true), [dragSource], false);\n                }\n                if (props.sort === false) {\n                    var _a = getModifiedIndex(tree, dragSource.id, dropTargetId, placeholderIndex), destIndex = _a[1];\n                    options.destinationIndex = destIndex;\n                    options.relativeIndex = placeholderIndex;\n                    props.onDrop(mutateTreeWithIndex(tree, dragSource.id, dropTargetId, placeholderIndex), options);\n                    return;\n                }\n                props.onDrop(mutateTree(tree, dragSource.id, dropTargetId), options);\n            }\n        }, canDrop: canDropCallback\n            ? function (dragSourceId, dropTargetId) {\n                return canDropCallback(props.tree, {\n                    dragSourceId: dragSourceId,\n                    dropTargetId: dropTargetId,\n                    dragSource: monitor.getItem(),\n                    dropTarget: getTreeItem(props.tree, dropTargetId),\n                    monitor: monitor,\n                });\n            }\n            : undefined, canDrag: canDragCallback\n            ? function (id) { return canDragCallback(getTreeItem(props.tree, id)); }\n            : undefined, onToggle: function (id) { return handleToggle(id, props.onChangeOpen); } });\n    return (React.createElement(TreeContext.Provider, { value: value }, props.children));\n};\n\nvar DragControlContext = createContext({});\nvar initialState$1 = {\n    isLock: false,\n};\nvar DragControlProvider = function (props) {\n    var _a = useState(initialState$1.isLock), isLock = _a[0], setIsLock = _a[1];\n    return (React.createElement(DragControlContext.Provider, { value: {\n            isLock: isLock,\n            lock: function () { return setIsLock(true); },\n            unlock: function () { return setIsLock(false); },\n        } }, props.children));\n};\n\nvar PlaceholderContext = createContext({});\nvar initialState = {\n    dropTargetId: undefined,\n    index: undefined,\n};\nvar PlaceholderProvider = function (props) {\n    var _a = useState(initialState.dropTargetId), dropTargetId = _a[0], setDropTargetId = _a[1];\n    var _b = useState(initialState.index), index = _b[0], setIndex = _b[1];\n    var showPlaceholder = function (dropTargetId, index) {\n        setDropTargetId(dropTargetId);\n        setIndex(index);\n    };\n    var hidePlaceholder = function () {\n        setDropTargetId(initialState.dropTargetId);\n        setIndex(initialState.index);\n    };\n    return (React.createElement(PlaceholderContext.Provider, { value: {\n            dropTargetId: dropTargetId,\n            index: index,\n            showPlaceholder: showPlaceholder,\n            hidePlaceholder: hidePlaceholder,\n        } }, props.children));\n};\n\nvar Providers = function (props) { return (React.createElement(TreeProvider, __assign({}, props),\n    React.createElement(DragControlProvider, null,\n        React.createElement(PlaceholderProvider, null, props.children)))); };\n\n/**\n * This is a hook to allow text selection by mouse in the text input area in a node.\n * Temporarily disables node dragging while the pointer is over the text input area.\n */\nvar useDragControl = function (ref) {\n    var dragControlContext = useContext(DragControlContext);\n    useEffect(function () {\n        if (!ref.current)\n            return;\n        var node = ref.current;\n        var lock = function (e) {\n            var target = e.target;\n            if (target instanceof HTMLInputElement ||\n                target instanceof HTMLTextAreaElement) {\n                dragControlContext.lock();\n            }\n        };\n        var unlock = function (e) {\n            var target = e.target;\n            if (target instanceof HTMLInputElement ||\n                target instanceof HTMLTextAreaElement) {\n                dragControlContext.unlock();\n            }\n        };\n        var handleMouseOver = function (e) { return lock(e); };\n        var handleMouseOut = function (e) { return unlock(e); };\n        var handleFocusIn = function (e) { return lock(e); };\n        var handleFocusOut = function (e) { return unlock(e); };\n        // In Firefox or Safari,\n        // the focusout event is not fired when the focused element is unmounted.\n        // Therefore, it detects the unmounting of a child element\n        // and unlocks tree if the focus is on the body element after unmounting.\n        var observer = new MutationObserver(function () {\n            if (document.activeElement === document.body) {\n                dragControlContext.unlock();\n            }\n        });\n        observer.observe(node, {\n            subtree: true,\n            childList: true,\n        });\n        node.addEventListener(\"mouseover\", handleMouseOver);\n        node.addEventListener(\"mouseout\", handleMouseOut);\n        node.addEventListener(\"focusin\", handleFocusIn);\n        node.addEventListener(\"focusout\", handleFocusOut);\n        return function () {\n            observer.disconnect();\n            node.removeEventListener(\"mouseover\", handleMouseOver);\n            node.removeEventListener(\"mouseout\", handleMouseOut);\n            node.removeEventListener(\"focusin\", handleFocusIn);\n            node.removeEventListener(\"focusout\", handleFocusOut);\n        };\n    }, [ref, dragControlContext]);\n    useEffect(function () {\n        var _a;\n        (_a = ref.current) === null || _a === void 0 ? void 0 : _a.setAttribute(\"draggable\", dragControlContext.isLock ? \"false\" : \"true\");\n    }, [ref, dragControlContext.isLock]);\n};\n\nvar ItemTypes = {\n    TREE_ITEM: Symbol(),\n};\n\nvar dragSourceElement = null;\nvar register = function (e) {\n    var target = e.target;\n    if (target instanceof HTMLElement) {\n        var source = target.closest('[role=\"listitem\"]');\n        if (e.currentTarget === source) {\n            dragSourceElement = source;\n        }\n    }\n};\nvar handleDragStart = function (e) { return register(e); };\nvar handleTouchStart = function (e) { return register(e); };\nvar useDragNode = function (item, ref) {\n    var treeContext = useTreeContext();\n    useEffect(function () {\n        var node = ref.current;\n        node === null || node === void 0 ? void 0 : node.addEventListener(\"dragstart\", handleDragStart);\n        node === null || node === void 0 ? void 0 : node.addEventListener(\"touchstart\", handleTouchStart, {\n            passive: true,\n        });\n        return function () {\n            node === null || node === void 0 ? void 0 : node.removeEventListener(\"dragstart\", handleDragStart);\n            node === null || node === void 0 ? void 0 : node.removeEventListener(\"touchstart\", handleTouchStart);\n        };\n    }, [ref]);\n    var _a = useDrag({\n        type: ItemTypes.TREE_ITEM,\n        item: function (monitor) {\n            var dragItem = __assign({ ref: ref }, item);\n            if (treeContext.onDragStart) {\n                treeContext.onDragStart(dragItem, monitor);\n            }\n            return dragItem;\n        },\n        end: function (item, monitor) {\n            var dragItem = item;\n            if (treeContext.onDragEnd) {\n                treeContext.onDragEnd(dragItem, monitor);\n            }\n        },\n        canDrag: function () {\n            var canDrag = treeContext.canDrag;\n            if (dragSourceElement !== ref.current) {\n                return false;\n            }\n            if (canDrag) {\n                return canDrag(item.id);\n            }\n            return true;\n        },\n        collect: function (monitor) { return ({\n            isDragging: monitor.isDragging(),\n        }); },\n    }), isDragging = _a[0].isDragging, drag = _a[1], preview = _a[2];\n    return [isDragging, drag, preview];\n};\n\nvar useDragOver = function (id, isOpen, dragOverHandler) {\n    var stack = useRef(0);\n    var timer = useRef(0);\n    var onDragEnter = function () {\n        stack.current += 1;\n        if (stack.current === 1 && !isOpen) {\n            timer.current = window.setTimeout(function () { return dragOverHandler(id); }, 500);\n        }\n    };\n    var onDragLeave = function () {\n        stack.current -= 1;\n        if (stack.current === 0) {\n            window.clearTimeout(timer.current);\n        }\n    };\n    var onDrop = function () {\n        if (timer.current > 0) {\n            window.clearTimeout(timer.current);\n        }\n        stack.current = 0;\n        timer.current = 0;\n    };\n    return {\n        onDragEnter: onDragEnter,\n        onDragLeave: onDragLeave,\n        onDrop: onDrop,\n    };\n};\n\nvar useDropRoot = function (ref) {\n    var treeContext = useTreeContext();\n    var placeholderContext = useContext(PlaceholderContext);\n    var _a = useDrop({\n        accept: __spreadArray([ItemTypes.TREE_ITEM], treeContext.extraAcceptTypes, true),\n        drop: function (dragItem, monitor) {\n            var rootId = treeContext.rootId, onDrop = treeContext.onDrop;\n            var dropTargetId = placeholderContext.dropTargetId, index = placeholderContext.index;\n            if (monitor.isOver({ shallow: true }) &&\n                dropTargetId !== undefined &&\n                index !== undefined) {\n                // If the drag source is outside the react-dnd,\n                // a different object is passed than the NodeModel.\n                onDrop(isNodeModel(dragItem) ? dragItem : null, rootId, index);\n            }\n            placeholderContext.hidePlaceholder();\n        },\n        canDrop: function (dragItem, monitor) {\n            var rootId = treeContext.rootId;\n            if (monitor.isOver({ shallow: true })) {\n                if (dragItem === undefined) {\n                    return false;\n                }\n                return isDroppable(isNodeModel(dragItem) ? dragItem.id : undefined, rootId, treeContext);\n            }\n            return false;\n        },\n        hover: function (dragItem, monitor) {\n            if (monitor.isOver({ shallow: true })) {\n                var rootId = treeContext.rootId;\n                var dropTargetId = placeholderContext.dropTargetId, index = placeholderContext.index, showPlaceholder = placeholderContext.showPlaceholder, hidePlaceholder = placeholderContext.hidePlaceholder;\n                var dropTarget = getDropTarget(null, ref.current, monitor, treeContext);\n                if (dropTarget === null ||\n                    !isDroppable(isNodeModel(dragItem) ? dragItem.id : undefined, rootId, treeContext)) {\n                    hidePlaceholder();\n                    return;\n                }\n                if (dropTarget.id !== dropTargetId || dropTarget.index !== index) {\n                    showPlaceholder(dropTarget.id, dropTarget.index);\n                }\n            }\n        },\n        collect: function (monitor) {\n            var dragSource = monitor.getItem();\n            return {\n                isOver: monitor.isOver({ shallow: true }) && monitor.canDrop(),\n                dragSource: dragSource,\n            };\n        },\n    }), _b = _a[0], isOver = _b.isOver, dragSource = _b.dragSource, drop = _a[1];\n    return [isOver, dragSource, drop];\n};\n\nvar useDropNode = function (item, ref) {\n    var treeContext = useTreeContext();\n    var placeholderContext = useContext(PlaceholderContext);\n    var _a = useDrop({\n        accept: __spreadArray([ItemTypes.TREE_ITEM], treeContext.extraAcceptTypes, true),\n        drop: function (dragItem, monitor) {\n            var dropTargetId = placeholderContext.dropTargetId, index = placeholderContext.index;\n            if (monitor.isOver({ shallow: true }) &&\n                dropTargetId !== undefined &&\n                index !== undefined) {\n                // If the drag source is outside the react-dnd,\n                // a different object is passed than the NodeModel.\n                treeContext.onDrop(isNodeModel(dragItem) ? dragItem : null, dropTargetId, index);\n            }\n            placeholderContext.hidePlaceholder();\n        },\n        canDrop: function (dragItem, monitor) {\n            if (monitor.isOver({ shallow: true })) {\n                var dropTarget = getDropTarget(item, ref.current, monitor, treeContext);\n                if (dropTarget === null) {\n                    return false;\n                }\n                return isDroppable(isNodeModel(dragItem) ? dragItem.id : undefined, dropTarget.id, treeContext);\n            }\n            return false;\n        },\n        hover: function (dragItem, monitor) {\n            if (monitor.isOver({ shallow: true })) {\n                var dropTargetId = placeholderContext.dropTargetId, index = placeholderContext.index, showPlaceholder = placeholderContext.showPlaceholder, hidePlaceholder = placeholderContext.hidePlaceholder;\n                var dropTarget = getDropTarget(item, ref.current, monitor, treeContext);\n                if (dropTarget === null ||\n                    !isDroppable(isNodeModel(dragItem) ? dragItem.id : undefined, dropTarget.id, treeContext)) {\n                    hidePlaceholder();\n                    return;\n                }\n                if (dropTarget.id !== dropTargetId || dropTarget.index !== index) {\n                    showPlaceholder(dropTarget.id, dropTarget.index);\n                }\n            }\n        },\n        collect: function (monitor) {\n            var dragSource = monitor.getItem();\n            return {\n                isOver: monitor.isOver({ shallow: true }) && monitor.canDrop(),\n                dragSource: dragSource,\n            };\n        },\n    }), _b = _a[0], isOver = _b.isOver, dragSource = _b.dragSource, drop = _a[1];\n    return [isOver, dragSource, drop];\n};\n\nvar useOpenIdsHelper = function (tree, initialOpen) {\n    var initialOpenIds = useMemo(function () {\n        if (initialOpen === true) {\n            return initialOpenIds = tree\n                .filter(function (node) { return node.droppable; })\n                .map(function (node) { return node.id; });\n        }\n        else if (Array.isArray(initialOpen)) {\n            return initialOpen;\n        }\n        return [];\n    }, [initialOpen]);\n    var _a = useState(initialOpenIds), openIds = _a[0], setOpenIds = _a[1];\n    useEffect(function () { return setOpenIds(initialOpenIds); }, [initialOpen]);\n    var handleToggle = function (targetId, callback) {\n        var newOpenIds = openIds.includes(targetId)\n            ? openIds.filter(function (id) { return id !== targetId; })\n            : __spreadArray(__spreadArray([], openIds, true), [targetId], false);\n        setOpenIds(newOpenIds);\n        if (callback) {\n            callback(newOpenIds);\n        }\n    };\n    var handleCloseAll = function (callback) {\n        setOpenIds([]);\n        if (callback) {\n            callback([]);\n        }\n    };\n    var handleOpenAll = function (callback) {\n        var newOpenIds = tree\n            .filter(function (node) { return node.droppable; })\n            .map(function (node) { return node.id; });\n        setOpenIds(newOpenIds);\n        if (callback) {\n            callback(newOpenIds);\n        }\n    };\n    var handleOpen = function (targetIds, callback) {\n        var newOpenIds = __spreadArray(__spreadArray([], openIds, true), tree\n            .filter(function (node) {\n            return node.droppable &&\n                (Array.isArray(targetIds)\n                    ? targetIds.includes(node.id)\n                    : node.id === targetIds);\n        })\n            .map(function (node) { return node.id; }), true).filter(function (value, index, self) { return self.indexOf(value) === index; });\n        setOpenIds(newOpenIds);\n        if (callback) {\n            callback(newOpenIds);\n        }\n    };\n    var handleClose = function (targetIds, callback) {\n        var newOpenIds = openIds.filter(function (id) {\n            return Array.isArray(targetIds) ? !targetIds.includes(id) : id !== targetIds;\n        });\n        setOpenIds(newOpenIds);\n        if (callback) {\n            callback(newOpenIds);\n        }\n    };\n    return [\n        openIds,\n        { handleToggle: handleToggle, handleCloseAll: handleCloseAll, handleOpenAll: handleOpenAll, handleOpen: handleOpen, handleClose: handleClose },\n    ];\n};\n\nvar useTreeDragLayer = function () {\n    return useDragLayer(function (monitor) {\n        var itemType = monitor.getItemType();\n        return {\n            item: monitor.getItem(),\n            clientOffset: monitor.getClientOffset(),\n            isDragging: monitor.isDragging() && itemType === ItemTypes.TREE_ITEM,\n        };\n    });\n};\n\nvar useTreeContext = function () {\n    var treeContext = useContext(TreeContext);\n    if (!treeContext) {\n        throw new Error(\"useTreeContext must be used under TreeProvider\");\n    }\n    return treeContext;\n};\n\nvar useContainerClassName = function (parentId, isOver) {\n    var _a = useTreeContext(), rootId = _a.rootId, rootProps = _a.rootProps, classes = _a.classes;\n    var className = (classes === null || classes === void 0 ? void 0 : classes.container) || \"\";\n    if (isOver && (classes === null || classes === void 0 ? void 0 : classes.dropTarget)) {\n        className = \"\".concat(className, \" \").concat(classes.dropTarget);\n    }\n    if (parentId === rootId && (classes === null || classes === void 0 ? void 0 : classes.root)) {\n        className = \"\".concat(className, \" \").concat(classes.root);\n    }\n    if (parentId === rootId && (rootProps === null || rootProps === void 0 ? void 0 : rootProps.className)) {\n        className = \"\".concat(className, \" \").concat(rootProps.className);\n    }\n    className = className.trim();\n    return className;\n};\n\nvar useDragHandle = function (containerRef, handleRef, drag) {\n    if (handleRef.current) {\n        drag(handleRef);\n    }\n    else {\n        drag(containerRef);\n    }\n    useEffect(function () {\n        if (handleRef.current) {\n            drag(handleRef);\n        }\n        else {\n            drag(containerRef);\n        }\n    }, [handleRef.current]);\n};\n\nvar Node = function (props) {\n    var treeContext = useTreeContext();\n    var placeholderContext = useContext(PlaceholderContext);\n    var containerRef = useRef(null);\n    var handleRef = useRef(null);\n    var item = treeContext.tree.find(function (node) { return node.id === props.id; });\n    var openIds = treeContext.openIds, classes = treeContext.classes, enableAnimateExpand = treeContext.enableAnimateExpand;\n    var open = openIds.includes(props.id);\n    var _a = useDragNode(item, containerRef), isDragging = _a[0], drag = _a[1], preview = _a[2];\n    var _b = useDropNode(item, containerRef), isOver = _b[0], dragSource = _b[1], drop = _b[2];\n    useDragHandle(containerRef, handleRef, drag);\n    if (isDroppable(dragSource === null || dragSource === void 0 ? void 0 : dragSource.id, props.id, treeContext)) {\n        drop(containerRef);\n    }\n    useEffect(function () {\n        if (treeContext.dragPreviewRender) {\n            preview(getEmptyImage(), { captureDraggingState: true });\n        }\n        else if (handleRef.current) {\n            preview(containerRef);\n        }\n    }, [preview, treeContext.dragPreviewRender]);\n    useDragControl(containerRef);\n    var handleToggle = function () { return treeContext.onToggle(item.id); };\n    var Component = treeContext.listItemComponent;\n    var className = (classes === null || classes === void 0 ? void 0 : classes.listItem) || \"\";\n    if (isOver && (classes === null || classes === void 0 ? void 0 : classes.dropTarget)) {\n        className = \"\".concat(className, \" \").concat(classes.dropTarget);\n    }\n    if (isDragging && (classes === null || classes === void 0 ? void 0 : classes.draggingSource)) {\n        className = \"\".concat(className, \" \").concat(classes.draggingSource);\n    }\n    var draggable = treeContext.canDrag ? treeContext.canDrag(props.id) : true;\n    var isDropTarget = placeholderContext.dropTargetId === props.id;\n    var hasChild = !!treeContext.tree.find(function (node) { return node.parent === props.id; });\n    var params = {\n        depth: props.depth,\n        isOpen: open,\n        isDragging: isDragging,\n        isDropTarget: isDropTarget,\n        draggable: draggable,\n        hasChild: hasChild,\n        containerRef: containerRef,\n        handleRef: handleRef,\n        onToggle: handleToggle,\n    };\n    return (React.createElement(Component, { ref: containerRef, className: className, role: \"listitem\" },\n        treeContext.render(item, params),\n        enableAnimateExpand ? (React.createElement(AnimateHeight, { isVisible: open && hasChild },\n            React.createElement(Container, { parentId: props.id, depth: props.depth + 1 }))) : (open &&\n            hasChild && React.createElement(Container, { parentId: props.id, depth: props.depth + 1 }))));\n};\n\nvar Placeholder = function (props) {\n    var _a = useTreeContext(), placeholderRender = _a.placeholderRender, Component = _a.placeholderComponent, classes = _a.classes;\n    var placeholderContext = useContext(PlaceholderContext);\n    var manager = useDragDropManager();\n    var monitor = manager.getMonitor();\n    var dragSource = monitor.getItem();\n    if (!placeholderRender || !dragSource) {\n        return null;\n    }\n    var visible = props.dropTargetId === placeholderContext.dropTargetId &&\n        (props.index === placeholderContext.index ||\n            (props.index === undefined &&\n                props.listCount === placeholderContext.index));\n    if (!visible) {\n        return null;\n    }\n    return (React.createElement(Component, { className: (classes === null || classes === void 0 ? void 0 : classes.placeholder) || \"\" }, placeholderRender(dragSource, { depth: props.depth })));\n};\n\nvar Container = function (props) {\n    var treeContext = useTreeContext();\n    var ref = useRef(null);\n    var nodes = treeContext.tree.filter(function (l) { return l.parent === props.parentId; });\n    var view = nodes;\n    var sortCallback = typeof treeContext.sort === \"function\" ? treeContext.sort : compareItems;\n    if (treeContext.insertDroppableFirst) {\n        var droppableNodes = nodes.filter(function (n) { return n.droppable; });\n        var nonDroppableNodes = nodes.filter(function (n) { return !n.droppable; });\n        if (treeContext.sort === false) {\n            view = __spreadArray(__spreadArray([], droppableNodes, true), nonDroppableNodes, true);\n        }\n        else {\n            droppableNodes = droppableNodes.sort(sortCallback);\n            nonDroppableNodes = nonDroppableNodes.sort(sortCallback);\n            view = __spreadArray(__spreadArray([], droppableNodes, true), nonDroppableNodes, true);\n        }\n    }\n    else {\n        if (treeContext.sort !== false) {\n            view = nodes.sort(sortCallback);\n        }\n    }\n    var _a = useDropRoot(ref), isOver = _a[0], dragSource = _a[1], drop = _a[2];\n    if (props.parentId === treeContext.rootId &&\n        isDroppable(dragSource === null || dragSource === void 0 ? void 0 : dragSource.id, treeContext.rootId, treeContext)) {\n        drop(ref);\n    }\n    var className = useContainerClassName(props.parentId, isOver);\n    var rootProps = treeContext.rootProps || {};\n    var Component = treeContext.listComponent;\n    return (React.createElement(Component, __assign({ ref: ref, role: \"list\" }, rootProps, { className: className }),\n        view.map(function (node, index) { return (React.createElement(React.Fragment, { key: node.id },\n            React.createElement(Placeholder, { depth: props.depth, listCount: view.length, dropTargetId: props.parentId, index: index }),\n            React.createElement(Node, { id: node.id, depth: props.depth }))); }),\n        React.createElement(Placeholder, { depth: props.depth, listCount: view.length, dropTargetId: props.parentId })));\n};\n\nvar rootStyle = {\n    height: \"100%\",\n    left: 0,\n    pointerEvents: \"none\",\n    position: \"fixed\",\n    top: 0,\n    width: \"100%\",\n    zIndex: 100,\n};\nvar getItemStyles = function (monitorProps) {\n    var offset = monitorProps.clientOffset;\n    if (!offset) {\n        return {};\n    }\n    var x = offset.x, y = offset.y;\n    var transform = \"translate(\".concat(x, \"px, \").concat(y, \"px)\");\n    return {\n        pointerEvents: \"none\",\n        transform: transform,\n    };\n};\nvar DragLayer = function () {\n    var context = useTreeContext();\n    var monitorProps = useTreeDragLayer();\n    var isDragging = monitorProps.isDragging, clientOffset = monitorProps.clientOffset;\n    if (!isDragging || !clientOffset) {\n        return null;\n    }\n    return (React.createElement(\"div\", { style: rootStyle },\n        React.createElement(\"div\", { style: getItemStyles(monitorProps) }, context.dragPreviewRender && context.dragPreviewRender(monitorProps))));\n};\n\nfunction TreeInner(props, ref) {\n    return (React.createElement(Providers, __assign({}, props, { treeRef: ref }),\n        props.dragPreviewRender && React.createElement(DragLayer, null),\n        React.createElement(Container, { parentId: props.rootId, depth: 0 })));\n}\nvar Tree = forwardRef(TreeInner);\n\nexport { Container, DragLayer, ItemTypes, Node, Tree, compareItems, getBackendOptions, getDescendants, getDestIndex, getDropTarget, getModifiedIndex, getParents, getTreeItem, isAncestor, isDroppable, isNodeModel, mutateTree, mutateTreeWithIndex, useContainerClassName, useDragControl, useDragHandle, useDragNode, useDragOver, useDropNode, useDropRoot, useOpenIdsHelper, useTreeContext, useTreeDragLayer };\n//# sourceMappingURL=index.js.map\n","// cheap lodash replacements\n\nexport function memoize<T>(fn: () => T): () => T {\n\tlet result: T | null = null\n\tconst memoized = () => {\n\t\tif (result == null) {\n\t\t\tresult = fn()\n\t\t}\n\t\treturn result\n\t}\n\treturn memoized\n}\n\n/**\n * drop-in replacement for _.without\n */\nexport function without<T>(items: T[], item: T) {\n\treturn items.filter((i) => i !== item)\n}\n\nexport function union<T extends string | number>(itemsA: T[], itemsB: T[]) {\n\tconst set = new Set<T>()\n\tconst insertItem = (item: T) => set.add(item)\n\titemsA.forEach(insertItem)\n\titemsB.forEach(insertItem)\n\n\tconst result: T[] = []\n\tset.forEach((key) => result.push(key))\n\treturn result\n}\n","import { union, without } from './utils/js_utils.js'\n\ntype NodePredicate = (node: Node | null | undefined) => boolean\n\nexport class EnterLeaveCounter {\n\tprivate entered: any[] = []\n\tprivate isNodeInDocument: NodePredicate\n\n\tpublic constructor(isNodeInDocument: NodePredicate) {\n\t\tthis.isNodeInDocument = isNodeInDocument\n\t}\n\n\tpublic enter(enteringNode: EventTarget | null): boolean {\n\t\tconst previousLength = this.entered.length\n\n\t\tconst isNodeEntered = (node: Node): boolean =>\n\t\t\tthis.isNodeInDocument(node) &&\n\t\t\t(!node.contains || node.contains(enteringNode as Node))\n\n\t\tthis.entered = union(this.entered.filter(isNodeEntered), [enteringNode])\n\n\t\treturn previousLength === 0 && this.entered.length > 0\n\t}\n\n\tpublic leave(leavingNode: EventTarget | null): boolean {\n\t\tconst previousLength = this.entered.length\n\n\t\tthis.entered = without(\n\t\t\tthis.entered.filter(this.isNodeInDocument),\n\t\t\tleavingNode,\n\t\t)\n\n\t\treturn previousLength > 0 && this.entered.length === 0\n\t}\n\n\tpublic reset(): void {\n\t\tthis.entered = []\n\t}\n}\n","import type { DragDropMonitor } from 'dnd-core'\n\nimport type { NativeItemConfig } from './nativeTypesConfig.js'\n\nexport class NativeDragSource {\n\tpublic item: any\n\tprivate config: NativeItemConfig\n\n\tpublic constructor(config: NativeItemConfig) {\n\t\tthis.config = config\n\t\tthis.item = {}\n\t\tthis.initializeExposedProperties()\n\t}\n\n\tprivate initializeExposedProperties() {\n\t\tObject.keys(this.config.exposeProperties).forEach((property) => {\n\t\t\tObject.defineProperty(this.item, property, {\n\t\t\t\tconfigurable: true, // This is needed to allow redefining it later\n\t\t\t\tenumerable: true,\n\t\t\t\tget() {\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t`Browser doesn't allow reading \"${property}\" until the drop event.`,\n\t\t\t\t\t)\n\t\t\t\t\treturn null\n\t\t\t\t},\n\t\t\t})\n\t\t})\n\t}\n\n\tpublic loadDataTransfer(dataTransfer: DataTransfer | null | undefined): void {\n\t\tif (dataTransfer) {\n\t\t\tconst newProperties: PropertyDescriptorMap = {}\n\t\t\tObject.keys(this.config.exposeProperties).forEach((property) => {\n\t\t\t\tconst propertyFn = this.config.exposeProperties[property]\n\t\t\t\tif (propertyFn != null) {\n\t\t\t\t\tnewProperties[property] = {\n\t\t\t\t\t\tvalue: propertyFn(dataTransfer, this.config.matchesTypes),\n\t\t\t\t\t\tconfigurable: true,\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\tObject.defineProperties(this.item, newProperties)\n\t\t}\n\t}\n\n\tpublic canDrag(): boolean {\n\t\treturn true\n\t}\n\n\tpublic beginDrag(): any {\n\t\treturn this.item\n\t}\n\n\tpublic isDragging(monitor: DragDropMonitor, handle: string): boolean {\n\t\treturn handle === monitor.getSourceId()\n\t}\n\n\tpublic endDrag(): void {\n\t\t// empty\n\t}\n}\n","export const FILE = '__NATIVE_FILE__'\nexport const URL = '__NATIVE_URL__'\nexport const TEXT = '__NATIVE_TEXT__'\nexport const HTML = '__NATIVE_HTML__'\n","export function getDataFromDataTransfer(\n\tdataTransfer: DataTransfer,\n\ttypesToTry: string[],\n\tdefaultValue: string,\n): string {\n\tconst result = typesToTry.reduce(\n\t\t(resultSoFar, typeToTry) => resultSoFar || dataTransfer.getData(typeToTry),\n\t\t'',\n\t)\n\n\treturn result != null ? result : defaultValue\n}\n","import * as NativeTypes from '../NativeTypes.js'\nimport { getDataFromDataTransfer } from './getDataFromDataTransfer.js'\n\nexport interface NativeItemConfigExposePropreties {\n\t[property: string]: (\n\t\tdataTransfer: DataTransfer,\n\t\tmatchesTypes: string[],\n\t) => any\n}\n\nexport interface NativeItemConfig {\n\texposeProperties: NativeItemConfigExposePropreties\n\tmatchesTypes: string[]\n}\n\nexport const nativeTypesConfig: {\n\t[key: string]: NativeItemConfig\n} = {\n\t[NativeTypes.FILE]: {\n\t\texposeProperties: {\n\t\t\tfiles: (dataTransfer: DataTransfer): File[] =>\n\t\t\t\tArray.prototype.slice.call(dataTransfer.files),\n\t\t\titems: (dataTransfer: DataTransfer): DataTransferItemList =>\n\t\t\t\tdataTransfer.items,\n\t\t\tdataTransfer: (dataTransfer: DataTransfer): DataTransfer => dataTransfer,\n\t\t},\n\t\tmatchesTypes: ['Files'],\n\t},\n\t[NativeTypes.HTML]: {\n\t\texposeProperties: {\n\t\t\thtml: (dataTransfer: DataTransfer, matchesTypes: string[]): string =>\n\t\t\t\tgetDataFromDataTransfer(dataTransfer, matchesTypes, ''),\n\t\t\tdataTransfer: (dataTransfer: DataTransfer): DataTransfer => dataTransfer,\n\t\t},\n\t\tmatchesTypes: ['Html', 'text/html'],\n\t},\n\t[NativeTypes.URL]: {\n\t\texposeProperties: {\n\t\t\turls: (dataTransfer: DataTransfer, matchesTypes: string[]): string[] =>\n\t\t\t\tgetDataFromDataTransfer(dataTransfer, matchesTypes, '').split('\\n'),\n\t\t\tdataTransfer: (dataTransfer: DataTransfer): DataTransfer => dataTransfer,\n\t\t},\n\t\tmatchesTypes: ['Url', 'text/uri-list'],\n\t},\n\t[NativeTypes.TEXT]: {\n\t\texposeProperties: {\n\t\t\ttext: (dataTransfer: DataTransfer, matchesTypes: string[]): string =>\n\t\t\t\tgetDataFromDataTransfer(dataTransfer, matchesTypes, ''),\n\t\t\tdataTransfer: (dataTransfer: DataTransfer): DataTransfer => dataTransfer,\n\t\t},\n\t\tmatchesTypes: ['Text', 'text/plain'],\n\t},\n}\n","import { NativeDragSource } from './NativeDragSource.js'\nimport { nativeTypesConfig } from './nativeTypesConfig.js'\n\nexport function createNativeDragSource(\n\ttype: string,\n\tdataTransfer?: DataTransfer,\n): NativeDragSource {\n\tconst config = nativeTypesConfig[type]\n\tif (!config) {\n\t\tthrow new Error(`native type ${type} has no configuration`)\n\t}\n\tconst result = new NativeDragSource(config)\n\tresult.loadDataTransfer(dataTransfer)\n\treturn result\n}\n\nexport function matchNativeItemType(\n\tdataTransfer: DataTransfer | null,\n): string | null {\n\tif (!dataTransfer) {\n\t\treturn null\n\t}\n\n\tconst dataTransferTypes = Array.prototype.slice.call(dataTransfer.types || [])\n\treturn (\n\t\tObject.keys(nativeTypesConfig).filter((nativeItemType) => {\n\t\t\tconst typeConfig = nativeTypesConfig[nativeItemType]\n\t\t\tif (!typeConfig?.matchesTypes) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn typeConfig.matchesTypes.some(\n\t\t\t\t(t) => dataTransferTypes.indexOf(t) > -1,\n\t\t\t)\n\t\t})[0] || null\n\t)\n}\n","import { memoize } from './utils/js_utils.js'\n\ndeclare global {\n\tinterface Window extends HTMLElement {\n\t\tsafari: any\n\t}\n}\n\nexport type Predicate = () => boolean\nexport const isFirefox: Predicate = memoize(() =>\n\t/firefox/i.test(navigator.userAgent),\n)\nexport const isSafari: Predicate = memoize(() => Boolean(window.safari))\n","export class MonotonicInterpolant {\n\tprivate xs: any\n\tprivate ys: any\n\tprivate c1s: any\n\tprivate c2s: any\n\tprivate c3s: any\n\n\tpublic constructor(xs: number[], ys: number[]) {\n\t\tconst { length } = xs\n\n\t\t// Rearrange xs and ys so that xs is sorted\n\t\tconst indexes = []\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tindexes.push(i)\n\t\t}\n\t\tindexes.sort((a, b) => ((xs[a] as number) < (xs[b] as number) ? -1 : 1))\n\n\t\t// Get consecutive differences and slopes\n\t\tconst dys = []\n\t\tconst dxs = []\n\t\tconst ms = []\n\t\tlet dx\n\t\tlet dy\n\t\tfor (let i = 0; i < length - 1; i++) {\n\t\t\tdx = (xs[i + 1] as number) - (xs[i] as number)\n\t\t\tdy = (ys[i + 1] as number) - (ys[i] as number)\n\t\t\tdxs.push(dx)\n\t\t\tdys.push(dy)\n\t\t\tms.push(dy / dx)\n\t\t}\n\n\t\t// Get degree-1 coefficients\n\t\tconst c1s = [ms[0]]\n\t\tfor (let i = 0; i < dxs.length - 1; i++) {\n\t\t\tconst m2 = ms[i] as number\n\t\t\tconst mNext = ms[i + 1] as number\n\t\t\tif (m2 * mNext <= 0) {\n\t\t\t\tc1s.push(0)\n\t\t\t} else {\n\t\t\t\tdx = dxs[i] as number\n\t\t\t\tconst dxNext = dxs[i + 1] as number\n\t\t\t\tconst common = dx + dxNext\n\t\t\t\tc1s.push(\n\t\t\t\t\t(3 * common) / ((common + dxNext) / m2 + (common + dx) / mNext),\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\tc1s.push(ms[ms.length - 1])\n\n\t\t// Get degree-2 and degree-3 coefficients\n\t\tconst c2s = []\n\t\tconst c3s = []\n\t\tlet m\n\t\tfor (let i = 0; i < c1s.length - 1; i++) {\n\t\t\tm = ms[i] as number\n\t\t\tconst c1 = c1s[i] as number\n\t\t\tconst invDx = 1 / (dxs[i] as number)\n\t\t\tconst common = c1 + (c1s[i + 1] as number) - m - m\n\t\t\tc2s.push((m - c1 - common) * invDx)\n\t\t\tc3s.push(common * invDx * invDx)\n\t\t}\n\n\t\tthis.xs = xs\n\t\tthis.ys = ys\n\t\tthis.c1s = c1s\n\t\tthis.c2s = c2s\n\t\tthis.c3s = c3s\n\t}\n\n\tpublic interpolate(x: number): number {\n\t\tconst { xs, ys, c1s, c2s, c3s } = this\n\n\t\t// The rightmost point in the dataset should give an exact result\n\t\tlet i = xs.length - 1\n\t\tif (x === xs[i]) {\n\t\t\treturn ys[i]\n\t\t}\n\n\t\t// Search for the interval x is in, returning the corresponding y if x is one of the original xs\n\t\tlet low = 0\n\t\tlet high = c3s.length - 1\n\t\tlet mid\n\t\twhile (low <= high) {\n\t\t\tmid = Math.floor(0.5 * (low + high))\n\t\t\tconst xHere = xs[mid]\n\t\t\tif (xHere < x) {\n\t\t\t\tlow = mid + 1\n\t\t\t} else if (xHere > x) {\n\t\t\t\thigh = mid - 1\n\t\t\t} else {\n\t\t\t\treturn ys[mid]\n\t\t\t}\n\t\t}\n\t\ti = Math.max(0, high)\n\n\t\t// Interpolate\n\t\tconst diff = x - xs[i]\n\t\tconst diffSq = diff * diff\n\t\treturn ys[i] + c1s[i] * diff + c2s[i] * diffSq + c3s[i] * diff * diffSq\n\t}\n}\n","import type { XYCoord } from 'dnd-core'\n\nimport { isFirefox, isSafari } from './BrowserDetector.js'\nimport { MonotonicInterpolant } from './MonotonicInterpolant.js'\n\nconst ELEMENT_NODE = 1\n\nexport function getNodeClientOffset(node: Node): XYCoord | null {\n\tconst el = node.nodeType === ELEMENT_NODE ? node : node.parentElement\n\n\tif (!el) {\n\t\treturn null\n\t}\n\n\tconst { top, left } = (el as HTMLElement).getBoundingClientRect()\n\treturn { x: left, y: top }\n}\n\nexport function getEventClientOffset(e: MouseEvent): XYCoord {\n\treturn {\n\t\tx: e.clientX,\n\t\ty: e.clientY,\n\t}\n}\n\nfunction isImageNode(node: any) {\n\treturn (\n\t\tnode.nodeName === 'IMG' &&\n\t\t(isFirefox() || !document.documentElement?.contains(node))\n\t)\n}\n\nfunction getDragPreviewSize(\n\tisImage: boolean,\n\tdragPreview: any,\n\tsourceWidth: number,\n\tsourceHeight: number,\n) {\n\tlet dragPreviewWidth = isImage ? dragPreview.width : sourceWidth\n\tlet dragPreviewHeight = isImage ? dragPreview.height : sourceHeight\n\n\t// Work around @2x coordinate discrepancies in browsers\n\tif (isSafari() && isImage) {\n\t\tdragPreviewHeight /= window.devicePixelRatio\n\t\tdragPreviewWidth /= window.devicePixelRatio\n\t}\n\treturn { dragPreviewWidth, dragPreviewHeight }\n}\n\nexport function getDragPreviewOffset(\n\tsourceNode: HTMLElement,\n\tdragPreview: HTMLElement,\n\tclientOffset: XYCoord,\n\tanchorPoint: { anchorX: number; anchorY: number },\n\toffsetPoint: { offsetX: number; offsetY: number },\n): XYCoord {\n\t// The browsers will use the image intrinsic size under different conditions.\n\t// Firefox only cares if it's an image, but WebKit also wants it to be detached.\n\tconst isImage = isImageNode(dragPreview)\n\tconst dragPreviewNode = isImage ? sourceNode : dragPreview\n\tconst dragPreviewNodeOffsetFromClient = getNodeClientOffset(\n\t\tdragPreviewNode,\n\t) as XYCoord\n\tconst offsetFromDragPreview = {\n\t\tx: clientOffset.x - dragPreviewNodeOffsetFromClient.x,\n\t\ty: clientOffset.y - dragPreviewNodeOffsetFromClient.y,\n\t}\n\tconst { offsetWidth: sourceWidth, offsetHeight: sourceHeight } = sourceNode\n\tconst { anchorX, anchorY } = anchorPoint\n\tconst { dragPreviewWidth, dragPreviewHeight } = getDragPreviewSize(\n\t\tisImage,\n\t\tdragPreview,\n\t\tsourceWidth,\n\t\tsourceHeight,\n\t)\n\n\tconst calculateYOffset = () => {\n\t\tconst interpolantY = new MonotonicInterpolant(\n\t\t\t[0, 0.5, 1],\n\t\t\t[\n\t\t\t\t// Dock to the top\n\t\t\t\toffsetFromDragPreview.y,\n\t\t\t\t// Align at the center\n\t\t\t\t(offsetFromDragPreview.y / sourceHeight) * dragPreviewHeight,\n\t\t\t\t// Dock to the bottom\n\t\t\t\toffsetFromDragPreview.y + dragPreviewHeight - sourceHeight,\n\t\t\t],\n\t\t)\n\t\tlet y = interpolantY.interpolate(anchorY)\n\t\t// Work around Safari 8 positioning bug\n\t\tif (isSafari() && isImage) {\n\t\t\t// We'll have to wait for @3x to see if this is entirely correct\n\t\t\ty += (window.devicePixelRatio - 1) * dragPreviewHeight\n\t\t}\n\t\treturn y\n\t}\n\n\tconst calculateXOffset = () => {\n\t\t// Interpolate coordinates depending on anchor point\n\t\t// If you know a simpler way to do this, let me know\n\t\tconst interpolantX = new MonotonicInterpolant(\n\t\t\t[0, 0.5, 1],\n\t\t\t[\n\t\t\t\t// Dock to the left\n\t\t\t\toffsetFromDragPreview.x,\n\t\t\t\t// Align at the center\n\t\t\t\t(offsetFromDragPreview.x / sourceWidth) * dragPreviewWidth,\n\t\t\t\t// Dock to the right\n\t\t\t\toffsetFromDragPreview.x + dragPreviewWidth - sourceWidth,\n\t\t\t],\n\t\t)\n\t\treturn interpolantX.interpolate(anchorX)\n\t}\n\n\t// Force offsets if specified in the options.\n\tconst { offsetX, offsetY } = offsetPoint\n\tconst isManualOffsetX = offsetX === 0 || offsetX\n\tconst isManualOffsetY = offsetY === 0 || offsetY\n\treturn {\n\t\tx: isManualOffsetX ? offsetX : calculateXOffset(),\n\t\ty: isManualOffsetY ? offsetY : calculateYOffset(),\n\t}\n}\n","import type { HTML5BackendContext, HTML5BackendOptions } from './types.js'\n\nexport class OptionsReader {\n\tpublic ownerDocument: Document | null = null\n\tprivate globalContext: HTML5BackendContext\n\tprivate optionsArgs: HTML5BackendOptions | undefined\n\n\tpublic constructor(\n\t\tglobalContext: HTML5BackendContext,\n\t\toptions?: HTML5BackendOptions,\n\t) {\n\t\tthis.globalContext = globalContext\n\t\tthis.optionsArgs = options\n\t}\n\n\tpublic get window(): Window | undefined {\n\t\tif (this.globalContext) {\n\t\t\treturn this.globalContext\n\t\t} else if (typeof window !== 'undefined') {\n\t\t\treturn window\n\t\t}\n\t\treturn undefined\n\t}\n\n\tpublic get document(): Document | undefined {\n\t\tif (this.globalContext?.document) {\n\t\t\treturn this.globalContext.document\n\t\t} else if (this.window) {\n\t\t\treturn this.window.document\n\t\t} else {\n\t\t\treturn undefined\n\t\t}\n\t}\n\n\tpublic get rootElement(): Node | undefined {\n\t\treturn this.optionsArgs?.rootElement || this.window\n\t}\n}\n","import type {\n\tBackend,\n\tDragDropActions,\n\tDragDropManager,\n\tDragDropMonitor,\n\tHandlerRegistry,\n\tIdentifier,\n\tUnsubscribe,\n\tXYCoord,\n} from 'dnd-core'\n\nimport { EnterLeaveCounter } from './EnterLeaveCounter.js'\nimport {\n\tcreateNativeDragSource,\n\tmatchNativeItemType,\n} from './NativeDragSources/index.js'\nimport type { NativeDragSource } from './NativeDragSources/NativeDragSource.js'\nimport * as NativeTypes from './NativeTypes.js'\nimport {\n\tgetDragPreviewOffset,\n\tgetEventClientOffset,\n\tgetNodeClientOffset,\n} from './OffsetUtils.js'\nimport { OptionsReader } from './OptionsReader.js'\nimport type { HTML5BackendContext, HTML5BackendOptions } from './types.js'\n\ntype RootNode = Node & { __isReactDndBackendSetUp: boolean | undefined }\n\nexport class HTML5BackendImpl implements Backend {\n\tprivate options: OptionsReader\n\n\t// React-Dnd Components\n\tprivate actions: DragDropActions\n\tprivate monitor: DragDropMonitor\n\tprivate registry: HandlerRegistry\n\n\t// Internal State\n\tprivate enterLeaveCounter: EnterLeaveCounter\n\n\tprivate sourcePreviewNodes: Map<string, Element> = new Map()\n\tprivate sourcePreviewNodeOptions: Map<string, any> = new Map()\n\tprivate sourceNodes: Map<string, Element> = new Map()\n\tprivate sourceNodeOptions: Map<string, any> = new Map()\n\n\tprivate dragStartSourceIds: string[] | null = null\n\tprivate dropTargetIds: string[] = []\n\tprivate dragEnterTargetIds: string[] = []\n\tprivate currentNativeSource: NativeDragSource | null = null\n\tprivate currentNativeHandle: Identifier | null = null\n\tprivate currentDragSourceNode: Element | null = null\n\tprivate altKeyPressed = false\n\tprivate mouseMoveTimeoutTimer: number | null = null\n\tprivate asyncEndDragFrameId: number | null = null\n\tprivate dragOverTargetIds: string[] | null = null\n\n\tprivate lastClientOffset: XYCoord | null = null\n\tprivate hoverRafId: number | null = null\n\n\tpublic constructor(\n\t\tmanager: DragDropManager,\n\t\tglobalContext?: HTML5BackendContext,\n\t\toptions?: HTML5BackendOptions,\n\t) {\n\t\tthis.options = new OptionsReader(globalContext, options)\n\t\tthis.actions = manager.getActions()\n\t\tthis.monitor = manager.getMonitor()\n\t\tthis.registry = manager.getRegistry()\n\t\tthis.enterLeaveCounter = new EnterLeaveCounter(this.isNodeInDocument)\n\t}\n\n\t/**\n\t * Generate profiling statistics for the HTML5Backend.\n\t */\n\tpublic profile(): Record<string, number> {\n\t\treturn {\n\t\t\tsourcePreviewNodes: this.sourcePreviewNodes.size,\n\t\t\tsourcePreviewNodeOptions: this.sourcePreviewNodeOptions.size,\n\t\t\tsourceNodeOptions: this.sourceNodeOptions.size,\n\t\t\tsourceNodes: this.sourceNodes.size,\n\t\t\tdragStartSourceIds: this.dragStartSourceIds?.length || 0,\n\t\t\tdropTargetIds: this.dropTargetIds.length,\n\t\t\tdragEnterTargetIds: this.dragEnterTargetIds.length,\n\t\t\tdragOverTargetIds: this.dragOverTargetIds?.length || 0,\n\t\t}\n\t}\n\n\t// public for test\n\tpublic get window(): Window | undefined {\n\t\treturn this.options.window\n\t}\n\tpublic get document(): Document | undefined {\n\t\treturn this.options.document\n\t}\n\t/**\n\t * Get the root element to use for event subscriptions\n\t */\n\tprivate get rootElement(): Node | undefined {\n\t\treturn this.options.rootElement as Node\n\t}\n\n\tpublic setup(): void {\n\t\tconst root = this.rootElement as RootNode | undefined\n\t\tif (root === undefined) {\n\t\t\treturn\n\t\t}\n\n\t\tif (root.__isReactDndBackendSetUp) {\n\t\t\tthrow new Error('Cannot have two HTML5 backends at the same time.')\n\t\t}\n\t\troot.__isReactDndBackendSetUp = true\n\t\tthis.addEventListeners(root)\n\t}\n\n\tpublic teardown(): void {\n\t\tconst root = this.rootElement as RootNode\n\t\tif (root === undefined) {\n\t\t\treturn\n\t\t}\n\n\t\troot.__isReactDndBackendSetUp = false\n\t\tthis.removeEventListeners(this.rootElement as Element)\n\t\tthis.clearCurrentDragSourceNode()\n\t\tif (this.asyncEndDragFrameId) {\n\t\t\tthis.window?.cancelAnimationFrame(this.asyncEndDragFrameId)\n\t\t}\n\t}\n\n\tpublic connectDragPreview(\n\t\tsourceId: string,\n\t\tnode: Element,\n\t\toptions: any,\n\t): Unsubscribe {\n\t\tthis.sourcePreviewNodeOptions.set(sourceId, options)\n\t\tthis.sourcePreviewNodes.set(sourceId, node)\n\n\t\treturn (): void => {\n\t\t\tthis.sourcePreviewNodes.delete(sourceId)\n\t\t\tthis.sourcePreviewNodeOptions.delete(sourceId)\n\t\t}\n\t}\n\n\tpublic connectDragSource(\n\t\tsourceId: string,\n\t\tnode: Element,\n\t\toptions: any,\n\t): Unsubscribe {\n\t\tthis.sourceNodes.set(sourceId, node)\n\t\tthis.sourceNodeOptions.set(sourceId, options)\n\n\t\tconst handleDragStart = (e: any) => this.handleDragStart(e, sourceId)\n\t\tconst handleSelectStart = (e: any) => this.handleSelectStart(e)\n\n\t\tnode.setAttribute('draggable', 'true')\n\t\tnode.addEventListener('dragstart', handleDragStart)\n\t\tnode.addEventListener('selectstart', handleSelectStart)\n\n\t\treturn (): void => {\n\t\t\tthis.sourceNodes.delete(sourceId)\n\t\t\tthis.sourceNodeOptions.delete(sourceId)\n\n\t\t\tnode.removeEventListener('dragstart', handleDragStart)\n\t\t\tnode.removeEventListener('selectstart', handleSelectStart)\n\t\t\tnode.setAttribute('draggable', 'false')\n\t\t}\n\t}\n\n\tpublic connectDropTarget(targetId: string, node: HTMLElement): Unsubscribe {\n\t\tconst handleDragEnter = (e: DragEvent) => this.handleDragEnter(e, targetId)\n\t\tconst handleDragOver = (e: DragEvent) => this.handleDragOver(e, targetId)\n\t\tconst handleDrop = (e: DragEvent) => this.handleDrop(e, targetId)\n\n\t\tnode.addEventListener('dragenter', handleDragEnter)\n\t\tnode.addEventListener('dragover', handleDragOver)\n\t\tnode.addEventListener('drop', handleDrop)\n\n\t\treturn (): void => {\n\t\t\tnode.removeEventListener('dragenter', handleDragEnter)\n\t\t\tnode.removeEventListener('dragover', handleDragOver)\n\t\t\tnode.removeEventListener('drop', handleDrop)\n\t\t}\n\t}\n\n\tprivate addEventListeners(target: Node) {\n\t\t// SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n\t\tif (!target.addEventListener) {\n\t\t\treturn\n\t\t}\n\t\ttarget.addEventListener(\n\t\t\t'dragstart',\n\t\t\tthis.handleTopDragStart as EventListener,\n\t\t)\n\t\ttarget.addEventListener('dragstart', this.handleTopDragStartCapture, true)\n\t\ttarget.addEventListener('dragend', this.handleTopDragEndCapture, true)\n\t\ttarget.addEventListener(\n\t\t\t'dragenter',\n\t\t\tthis.handleTopDragEnter as EventListener,\n\t\t)\n\t\ttarget.addEventListener(\n\t\t\t'dragenter',\n\t\t\tthis.handleTopDragEnterCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.addEventListener(\n\t\t\t'dragleave',\n\t\t\tthis.handleTopDragLeaveCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.addEventListener('dragover', this.handleTopDragOver as EventListener)\n\t\ttarget.addEventListener(\n\t\t\t'dragover',\n\t\t\tthis.handleTopDragOverCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.addEventListener('drop', this.handleTopDrop as EventListener)\n\t\ttarget.addEventListener(\n\t\t\t'drop',\n\t\t\tthis.handleTopDropCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t}\n\n\tprivate removeEventListeners(target: Node) {\n\t\t// SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n\t\tif (!target.removeEventListener) {\n\t\t\treturn\n\t\t}\n\t\ttarget.removeEventListener('dragstart', this.handleTopDragStart as any)\n\t\ttarget.removeEventListener(\n\t\t\t'dragstart',\n\t\t\tthis.handleTopDragStartCapture,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.removeEventListener('dragend', this.handleTopDragEndCapture, true)\n\t\ttarget.removeEventListener(\n\t\t\t'dragenter',\n\t\t\tthis.handleTopDragEnter as EventListener,\n\t\t)\n\t\ttarget.removeEventListener(\n\t\t\t'dragenter',\n\t\t\tthis.handleTopDragEnterCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.removeEventListener(\n\t\t\t'dragleave',\n\t\t\tthis.handleTopDragLeaveCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.removeEventListener(\n\t\t\t'dragover',\n\t\t\tthis.handleTopDragOver as EventListener,\n\t\t)\n\t\ttarget.removeEventListener(\n\t\t\t'dragover',\n\t\t\tthis.handleTopDragOverCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.removeEventListener('drop', this.handleTopDrop as EventListener)\n\t\ttarget.removeEventListener(\n\t\t\t'drop',\n\t\t\tthis.handleTopDropCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t}\n\n\tprivate getCurrentSourceNodeOptions() {\n\t\tconst sourceId = this.monitor.getSourceId() as string\n\t\tconst sourceNodeOptions = this.sourceNodeOptions.get(sourceId)\n\n\t\treturn {\n\t\t\tdropEffect: this.altKeyPressed ? 'copy' : 'move',\n\t\t\t...(sourceNodeOptions || {}),\n\t\t}\n\t}\n\n\tprivate getCurrentDropEffect() {\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\t// It makes more sense to default to 'copy' for native resources\n\t\t\treturn 'copy'\n\t\t}\n\n\t\treturn this.getCurrentSourceNodeOptions().dropEffect\n\t}\n\n\tprivate getCurrentSourcePreviewNodeOptions() {\n\t\tconst sourceId = this.monitor.getSourceId() as string\n\t\tconst sourcePreviewNodeOptions = this.sourcePreviewNodeOptions.get(sourceId)\n\n\t\treturn {\n\t\t\tanchorX: 0.5,\n\t\t\tanchorY: 0.5,\n\t\t\tcaptureDraggingState: false,\n\t\t\t...(sourcePreviewNodeOptions || {}),\n\t\t}\n\t}\n\n\tprivate getSourceClientOffset = (sourceId: string): XYCoord | null => {\n\t\tconst source = this.sourceNodes.get(sourceId)\n\t\treturn (source && getNodeClientOffset(source as HTMLElement)) || null\n\t}\n\n\tprivate isDraggingNativeItem() {\n\t\tconst itemType = this.monitor.getItemType()\n\t\treturn Object.keys(NativeTypes).some(\n\t\t\t(key: string) => (NativeTypes as any)[key] === itemType,\n\t\t)\n\t}\n\n\tprivate beginDragNativeItem(type: string, dataTransfer?: DataTransfer) {\n\t\tthis.clearCurrentDragSourceNode()\n\n\t\tthis.currentNativeSource = createNativeDragSource(type, dataTransfer)\n\t\tthis.currentNativeHandle = this.registry.addSource(\n\t\t\ttype,\n\t\t\tthis.currentNativeSource,\n\t\t)\n\t\tthis.actions.beginDrag([this.currentNativeHandle])\n\t}\n\n\tprivate endDragNativeItem = (): void => {\n\t\tif (!this.isDraggingNativeItem()) {\n\t\t\treturn\n\t\t}\n\n\t\tthis.actions.endDrag()\n\t\tif (this.currentNativeHandle) {\n\t\t\tthis.registry.removeSource(this.currentNativeHandle)\n\t\t}\n\t\tthis.currentNativeHandle = null\n\t\tthis.currentNativeSource = null\n\t}\n\n\tprivate isNodeInDocument = (node: Node | null | undefined): boolean => {\n\t\t// Check the node either in the main document or in the current context\n\t\treturn Boolean(\n\t\t\tnode &&\n\t\t\t\tthis.document &&\n\t\t\t\tthis.document.body &&\n\t\t\t\tthis.document.body.contains(node),\n\t\t)\n\t}\n\n\tprivate endDragIfSourceWasRemovedFromDOM = (): void => {\n\t\tconst node = this.currentDragSourceNode\n\t\tif (node == null || this.isNodeInDocument(node)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (this.clearCurrentDragSourceNode() && this.monitor.isDragging()) {\n\t\t\tthis.actions.endDrag()\n\t\t}\n\t\tthis.cancelHover()\n\t}\n\n\tprivate setCurrentDragSourceNode(node: Element | null) {\n\t\tthis.clearCurrentDragSourceNode()\n\t\tthis.currentDragSourceNode = node\n\n\t\t// A timeout of > 0 is necessary to resolve Firefox issue referenced\n\t\t// See:\n\t\t//   * https://github.com/react-dnd/react-dnd/pull/928\n\t\t//   * https://github.com/react-dnd/react-dnd/issues/869\n\t\tconst MOUSE_MOVE_TIMEOUT = 1000\n\n\t\t// Receiving a mouse event in the middle of a dragging operation\n\t\t// means it has ended and the drag source node disappeared from DOM,\n\t\t// so the browser didn't dispatch the dragend event.\n\t\t//\n\t\t// We need to wait before we start listening for mousemove events.\n\t\t// This is needed because the drag preview needs to be drawn or else it fires an 'mousemove' event\n\t\t// immediately in some browsers.\n\t\t//\n\t\t// See:\n\t\t//   * https://github.com/react-dnd/react-dnd/pull/928\n\t\t//   * https://github.com/react-dnd/react-dnd/issues/869\n\t\t//\n\t\tthis.mouseMoveTimeoutTimer = setTimeout(() => {\n\t\t\treturn this.rootElement?.addEventListener(\n\t\t\t\t'mousemove',\n\t\t\t\tthis.endDragIfSourceWasRemovedFromDOM,\n\t\t\t\ttrue,\n\t\t\t)\n\t\t}, MOUSE_MOVE_TIMEOUT) as any as number\n\t}\n\n\tprivate clearCurrentDragSourceNode() {\n\t\tif (this.currentDragSourceNode) {\n\t\t\tthis.currentDragSourceNode = null\n\n\t\t\tif (this.rootElement) {\n\t\t\t\tthis.window?.clearTimeout(this.mouseMoveTimeoutTimer || undefined)\n\t\t\t\tthis.rootElement.removeEventListener(\n\t\t\t\t\t'mousemove',\n\t\t\t\t\tthis.endDragIfSourceWasRemovedFromDOM,\n\t\t\t\t\ttrue,\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tthis.mouseMoveTimeoutTimer = null\n\t\t\treturn true\n\t\t}\n\n\t\treturn false\n\t}\n\n\tprivate scheduleHover = (dragOverTargetIds: string[] | null) => {\n\t\tif (\n\t\t\tthis.hoverRafId === null &&\n\t\t\ttypeof requestAnimationFrame !== 'undefined'\n\t\t) {\n\t\t\tthis.hoverRafId = requestAnimationFrame(() => {\n\t\t\t\tif (this.monitor.isDragging()) {\n\t\t\t\t\tthis.actions.hover(dragOverTargetIds || [], {\n\t\t\t\t\t\tclientOffset: this.lastClientOffset,\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tthis.hoverRafId = null\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate cancelHover = () => {\n\t\tif (\n\t\t\tthis.hoverRafId !== null &&\n\t\t\ttypeof cancelAnimationFrame !== 'undefined'\n\t\t) {\n\t\t\tcancelAnimationFrame(this.hoverRafId)\n\t\t\tthis.hoverRafId = null\n\t\t}\n\t}\n\n\tpublic handleTopDragStartCapture = (): void => {\n\t\tthis.clearCurrentDragSourceNode()\n\t\tthis.dragStartSourceIds = []\n\t}\n\n\tpublic handleDragStart(e: DragEvent, sourceId: string): void {\n\t\tif (e.defaultPrevented) {\n\t\t\treturn\n\t\t}\n\n\t\tif (!this.dragStartSourceIds) {\n\t\t\tthis.dragStartSourceIds = []\n\t\t}\n\t\tthis.dragStartSourceIds.unshift(sourceId)\n\t}\n\n\tpublic handleTopDragStart = (e: DragEvent): void => {\n\t\tif (e.defaultPrevented) {\n\t\t\treturn\n\t\t}\n\n\t\tconst { dragStartSourceIds } = this\n\t\tthis.dragStartSourceIds = null\n\n\t\tconst clientOffset = getEventClientOffset(e)\n\n\t\t// Avoid crashing if we missed a drop event or our previous drag died\n\t\tif (this.monitor.isDragging()) {\n\t\t\tthis.actions.endDrag()\n\t\t\tthis.cancelHover()\n\t\t}\n\n\t\t// Don't publish the source just yet (see why below)\n\t\tthis.actions.beginDrag(dragStartSourceIds || [], {\n\t\t\tpublishSource: false,\n\t\t\tgetSourceClientOffset: this.getSourceClientOffset,\n\t\t\tclientOffset,\n\t\t})\n\n\t\tconst { dataTransfer } = e\n\t\tconst nativeType = matchNativeItemType(dataTransfer)\n\n\t\tif (this.monitor.isDragging()) {\n\t\t\tif (dataTransfer && typeof dataTransfer.setDragImage === 'function') {\n\t\t\t\t// Use custom drag image if user specifies it.\n\t\t\t\t// If child drag source refuses drag but parent agrees,\n\t\t\t\t// use parent's node as drag image. Neither works in IE though.\n\t\t\t\tconst sourceId: string = this.monitor.getSourceId() as string\n\t\t\t\tconst sourceNode = this.sourceNodes.get(sourceId)\n\t\t\t\tconst dragPreview = this.sourcePreviewNodes.get(sourceId) || sourceNode\n\n\t\t\t\tif (dragPreview) {\n\t\t\t\t\tconst { anchorX, anchorY, offsetX, offsetY } =\n\t\t\t\t\t\tthis.getCurrentSourcePreviewNodeOptions()\n\t\t\t\t\tconst anchorPoint = { anchorX, anchorY }\n\t\t\t\t\tconst offsetPoint = { offsetX, offsetY }\n\t\t\t\t\tconst dragPreviewOffset = getDragPreviewOffset(\n\t\t\t\t\t\tsourceNode as HTMLElement,\n\t\t\t\t\t\tdragPreview as HTMLElement,\n\t\t\t\t\t\tclientOffset,\n\t\t\t\t\t\tanchorPoint,\n\t\t\t\t\t\toffsetPoint,\n\t\t\t\t\t)\n\n\t\t\t\t\tdataTransfer.setDragImage(\n\t\t\t\t\t\tdragPreview,\n\t\t\t\t\t\tdragPreviewOffset.x,\n\t\t\t\t\t\tdragPreviewOffset.y,\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\t// Firefox won't drag without setting data\n\t\t\t\tdataTransfer?.setData('application/json', {} as any)\n\t\t\t} catch (err) {\n\t\t\t\t// IE doesn't support MIME types in setData\n\t\t\t}\n\n\t\t\t// Store drag source node so we can check whether\n\t\t\t// it is removed from DOM and trigger endDrag manually.\n\t\t\tthis.setCurrentDragSourceNode(e.target as Element)\n\n\t\t\t// Now we are ready to publish the drag source.. or are we not?\n\t\t\tconst { captureDraggingState } = this.getCurrentSourcePreviewNodeOptions()\n\t\t\tif (!captureDraggingState) {\n\t\t\t\t// Usually we want to publish it in the next tick so that browser\n\t\t\t\t// is able to screenshot the current (not yet dragging) state.\n\t\t\t\t//\n\t\t\t\t// It also neatly avoids a situation where render() returns null\n\t\t\t\t// in the same tick for the source element, and browser freaks out.\n\t\t\t\tsetTimeout(() => this.actions.publishDragSource(), 0)\n\t\t\t} else {\n\t\t\t\t// In some cases the user may want to override this behavior, e.g.\n\t\t\t\t// to work around IE not supporting custom drag previews.\n\t\t\t\t//\n\t\t\t\t// When using a custom drag layer, the only way to prevent\n\t\t\t\t// the default drag preview from drawing in IE is to screenshot\n\t\t\t\t// the dragging state in which the node itself has zero opacity\n\t\t\t\t// and height. In this case, though, returning null from render()\n\t\t\t\t// will abruptly end the dragging, which is not obvious.\n\t\t\t\t//\n\t\t\t\t// This is the reason such behavior is strictly opt-in.\n\t\t\t\tthis.actions.publishDragSource()\n\t\t\t}\n\t\t} else if (nativeType) {\n\t\t\t// A native item (such as URL) dragged from inside the document\n\t\t\tthis.beginDragNativeItem(nativeType)\n\t\t} else if (\n\t\t\tdataTransfer &&\n\t\t\t!dataTransfer.types &&\n\t\t\t((e.target && !(e.target as Element).hasAttribute) ||\n\t\t\t\t!(e.target as Element).hasAttribute('draggable'))\n\t\t) {\n\t\t\t// Looks like a Safari bug: dataTransfer.types is null, but there was no draggable.\n\t\t\t// Just let it drag. It's a native type (URL or text) and will be picked up in\n\t\t\t// dragenter handler.\n\t\t\treturn\n\t\t} else {\n\t\t\t// If by this time no drag source reacted, tell browser not to drag.\n\t\t\te.preventDefault()\n\t\t}\n\t}\n\n\tpublic handleTopDragEndCapture = (): void => {\n\t\tif (this.clearCurrentDragSourceNode() && this.monitor.isDragging()) {\n\t\t\t// Firefox can dispatch this event in an infinite loop\n\t\t\t// if dragend handler does something like showing an alert.\n\t\t\t// Only proceed if we have not handled it already.\n\t\t\tthis.actions.endDrag()\n\t\t}\n\t\tthis.cancelHover()\n\t}\n\n\tpublic handleTopDragEnterCapture = (e: DragEvent): void => {\n\t\tthis.dragEnterTargetIds = []\n\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\tthis.currentNativeSource?.loadDataTransfer(e.dataTransfer)\n\t\t}\n\n\t\tconst isFirstEnter = this.enterLeaveCounter.enter(e.target)\n\t\tif (!isFirstEnter || this.monitor.isDragging()) {\n\t\t\treturn\n\t\t}\n\n\t\tconst { dataTransfer } = e\n\t\tconst nativeType = matchNativeItemType(dataTransfer)\n\n\t\tif (nativeType) {\n\t\t\t// A native item (such as file or URL) dragged from outside the document\n\t\t\tthis.beginDragNativeItem(nativeType, dataTransfer as DataTransfer)\n\t\t}\n\t}\n\n\tpublic handleDragEnter(_e: DragEvent, targetId: string): void {\n\t\tthis.dragEnterTargetIds.unshift(targetId)\n\t}\n\n\tpublic handleTopDragEnter = (e: DragEvent): void => {\n\t\tconst { dragEnterTargetIds } = this\n\t\tthis.dragEnterTargetIds = []\n\n\t\tif (!this.monitor.isDragging()) {\n\t\t\t// This is probably a native item type we don't understand.\n\t\t\treturn\n\t\t}\n\n\t\tthis.altKeyPressed = e.altKey\n\n\t\t// If the target changes position as the result of `dragenter`, `dragover` might still\n\t\t// get dispatched despite target being no longer there. The easy solution is to check\n\t\t// whether there actually is a target before firing `hover`.\n\t\tif (dragEnterTargetIds.length > 0) {\n\t\t\tthis.actions.hover(dragEnterTargetIds, {\n\t\t\t\tclientOffset: getEventClientOffset(e),\n\t\t\t})\n\t\t}\n\n\t\tconst canDrop = dragEnterTargetIds.some((targetId) =>\n\t\t\tthis.monitor.canDropOnTarget(targetId),\n\t\t)\n\n\t\tif (canDrop) {\n\t\t\t// IE requires this to fire dragover events\n\t\t\te.preventDefault()\n\t\t\tif (e.dataTransfer) {\n\t\t\t\te.dataTransfer.dropEffect = this.getCurrentDropEffect()\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic handleTopDragOverCapture = (e: DragEvent): void => {\n\t\tthis.dragOverTargetIds = []\n\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\tthis.currentNativeSource?.loadDataTransfer(e.dataTransfer)\n\t\t}\n\t}\n\n\tpublic handleDragOver(_e: DragEvent, targetId: string): void {\n\t\tif (this.dragOverTargetIds === null) {\n\t\t\tthis.dragOverTargetIds = []\n\t\t}\n\t\tthis.dragOverTargetIds.unshift(targetId)\n\t}\n\n\tpublic handleTopDragOver = (e: DragEvent): void => {\n\t\tconst { dragOverTargetIds } = this\n\t\tthis.dragOverTargetIds = []\n\n\t\tif (!this.monitor.isDragging()) {\n\t\t\t// This is probably a native item type we don't understand.\n\t\t\t// Prevent default \"drop and blow away the whole document\" action.\n\t\t\te.preventDefault()\n\t\t\tif (e.dataTransfer) {\n\t\t\t\te.dataTransfer.dropEffect = 'none'\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tthis.altKeyPressed = e.altKey\n\t\tthis.lastClientOffset = getEventClientOffset(e)\n\n\t\tthis.scheduleHover(dragOverTargetIds)\n\n\t\tconst canDrop = (dragOverTargetIds || []).some((targetId) =>\n\t\t\tthis.monitor.canDropOnTarget(targetId),\n\t\t)\n\n\t\tif (canDrop) {\n\t\t\t// Show user-specified drop effect.\n\t\t\te.preventDefault()\n\t\t\tif (e.dataTransfer) {\n\t\t\t\te.dataTransfer.dropEffect = this.getCurrentDropEffect()\n\t\t\t}\n\t\t} else if (this.isDraggingNativeItem()) {\n\t\t\t// Don't show a nice cursor but still prevent default\n\t\t\t// \"drop and blow away the whole document\" action.\n\t\t\te.preventDefault()\n\t\t} else {\n\t\t\te.preventDefault()\n\t\t\tif (e.dataTransfer) {\n\t\t\t\te.dataTransfer.dropEffect = 'none'\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic handleTopDragLeaveCapture = (e: DragEvent): void => {\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\te.preventDefault()\n\t\t}\n\n\t\tconst isLastLeave = this.enterLeaveCounter.leave(e.target)\n\t\tif (!isLastLeave) {\n\t\t\treturn\n\t\t}\n\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\tsetTimeout(() => this.endDragNativeItem(), 0)\n\t\t}\n\t\tthis.cancelHover()\n\t}\n\n\tpublic handleTopDropCapture = (e: DragEvent): void => {\n\t\tthis.dropTargetIds = []\n\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\te.preventDefault()\n\t\t\tthis.currentNativeSource?.loadDataTransfer(e.dataTransfer)\n\t\t} else if (matchNativeItemType(e.dataTransfer)) {\n\t\t\t// Dragging some elements, like <a> and <img> may still behave like a native drag event,\n\t\t\t// even if the current drag event matches a user-defined type.\n\t\t\t// Stop the default behavior when we're not expecting a native item to be dropped.\n\n\t\t\te.preventDefault()\n\t\t}\n\n\t\tthis.enterLeaveCounter.reset()\n\t}\n\n\tpublic handleDrop(_e: DragEvent, targetId: string): void {\n\t\tthis.dropTargetIds.unshift(targetId)\n\t}\n\n\tpublic handleTopDrop = (e: DragEvent): void => {\n\t\tconst { dropTargetIds } = this\n\t\tthis.dropTargetIds = []\n\n\t\tthis.actions.hover(dropTargetIds, {\n\t\t\tclientOffset: getEventClientOffset(e),\n\t\t})\n\t\tthis.actions.drop({ dropEffect: this.getCurrentDropEffect() })\n\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\tthis.endDragNativeItem()\n\t\t} else if (this.monitor.isDragging()) {\n\t\t\tthis.actions.endDrag()\n\t\t}\n\t\tthis.cancelHover()\n\t}\n\n\tpublic handleSelectStart = (e: DragEvent): void => {\n\t\tconst target = e.target as HTMLElement & { dragDrop: () => void }\n\n\t\t// Only IE requires us to explicitly say\n\t\t// we want drag drop operation to start\n\t\tif (typeof target.dragDrop !== 'function') {\n\t\t\treturn\n\t\t}\n\n\t\t// Inputs and textareas should be selectable\n\t\tif (\n\t\t\ttarget.tagName === 'INPUT' ||\n\t\t\ttarget.tagName === 'SELECT' ||\n\t\t\ttarget.tagName === 'TEXTAREA' ||\n\t\t\ttarget.isContentEditable\n\t\t) {\n\t\t\treturn\n\t\t}\n\n\t\t// For other targets, ask IE\n\t\t// to enable drag and drop\n\t\te.preventDefault()\n\t\ttarget.dragDrop()\n\t}\n}\n","let emptyImage: HTMLImageElement | undefined\n\nexport function getEmptyImage(): HTMLImageElement {\n\tif (!emptyImage) {\n\t\temptyImage = new Image()\n\t\temptyImage.src =\n\t\t\t'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=='\n\t}\n\n\treturn emptyImage\n}\n","import type { BackendFactory, DragDropManager } from 'dnd-core'\n\nimport { HTML5BackendImpl } from './HTML5BackendImpl.js'\nimport type { HTML5BackendContext, HTML5BackendOptions } from './types.js'\nexport { getEmptyImage } from './getEmptyImage.js'\nexport * as NativeTypes from './NativeTypes.js'\nexport type { HTML5BackendContext, HTML5BackendOptions } from './types.js'\n\nexport const HTML5Backend: BackendFactory = function createBackend(\n\tmanager: DragDropManager,\n\tcontext?: HTML5BackendContext,\n\toptions?: HTML5BackendOptions,\n): HTML5BackendImpl {\n\treturn new HTML5BackendImpl(manager, context, options)\n}\n","var resizeObservers = [];\nexport { resizeObservers };\n","import { resizeObservers } from '../utils/resizeObservers';\nvar hasActiveObservations = function () {\n    return resizeObservers.some(function (ro) { return ro.activeTargets.length > 0; });\n};\nexport { hasActiveObservations };\n","import { resizeObservers } from '../utils/resizeObservers';\nvar hasSkippedObservations = function () {\n    return resizeObservers.some(function (ro) { return ro.skippedTargets.length > 0; });\n};\nexport { hasSkippedObservations };\n","var msg = 'ResizeObserver loop completed with undelivered notifications.';\nvar deliverResizeLoopError = function () {\n    var event;\n    if (typeof ErrorEvent === 'function') {\n        event = new ErrorEvent('error', {\n            message: msg\n        });\n    }\n    else {\n        event = document.createEvent('Event');\n        event.initEvent('error', false, false);\n        event.message = msg;\n    }\n    window.dispatchEvent(event);\n};\nexport { deliverResizeLoopError };\n","var ResizeObserverBoxOptions;\n(function (ResizeObserverBoxOptions) {\n    ResizeObserverBoxOptions[\"BORDER_BOX\"] = \"border-box\";\n    ResizeObserverBoxOptions[\"CONTENT_BOX\"] = \"content-box\";\n    ResizeObserverBoxOptions[\"DEVICE_PIXEL_CONTENT_BOX\"] = \"device-pixel-content-box\";\n})(ResizeObserverBoxOptions || (ResizeObserverBoxOptions = {}));\nexport { ResizeObserverBoxOptions };\n","export var freeze = function (obj) { return Object.freeze(obj); };\n","import { freeze } from './utils/freeze';\nvar ResizeObserverSize = (function () {\n    function ResizeObserverSize(inlineSize, blockSize) {\n        this.inlineSize = inlineSize;\n        this.blockSize = blockSize;\n        freeze(this);\n    }\n    return ResizeObserverSize;\n}());\nexport { ResizeObserverSize };\n","import { freeze } from './utils/freeze';\nvar DOMRectReadOnly = (function () {\n    function DOMRectReadOnly(x, y, width, height) {\n        this.x = x;\n        this.y = y;\n        this.width = width;\n        this.height = height;\n        this.top = this.y;\n        this.left = this.x;\n        this.bottom = this.top + this.height;\n        this.right = this.left + this.width;\n        return freeze(this);\n    }\n    DOMRectReadOnly.prototype.toJSON = function () {\n        var _a = this, x = _a.x, y = _a.y, top = _a.top, right = _a.right, bottom = _a.bottom, left = _a.left, width = _a.width, height = _a.height;\n        return { x: x, y: y, top: top, right: right, bottom: bottom, left: left, width: width, height: height };\n    };\n    DOMRectReadOnly.fromRect = function (rectangle) {\n        return new DOMRectReadOnly(rectangle.x, rectangle.y, rectangle.width, rectangle.height);\n    };\n    return DOMRectReadOnly;\n}());\nexport { DOMRectReadOnly };\n","var isSVG = function (target) { return target instanceof SVGElement && 'getBBox' in target; };\nvar isHidden = function (target) {\n    if (isSVG(target)) {\n        var _a = target.getBBox(), width = _a.width, height = _a.height;\n        return !width && !height;\n    }\n    var _b = target, offsetWidth = _b.offsetWidth, offsetHeight = _b.offsetHeight;\n    return !(offsetWidth || offsetHeight || target.getClientRects().length);\n};\nvar isElement = function (obj) {\n    var _a;\n    if (obj instanceof Element) {\n        return true;\n    }\n    var scope = (_a = obj === null || obj === void 0 ? void 0 : obj.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView;\n    return !!(scope && obj instanceof scope.Element);\n};\nvar isReplacedElement = function (target) {\n    switch (target.tagName) {\n        case 'INPUT':\n            if (target.type !== 'image') {\n                break;\n            }\n        case 'VIDEO':\n        case 'AUDIO':\n        case 'EMBED':\n        case 'OBJECT':\n        case 'CANVAS':\n        case 'IFRAME':\n        case 'IMG':\n            return true;\n    }\n    return false;\n};\nexport { isSVG, isHidden, isElement, isReplacedElement };\n","export var global = typeof window !== 'undefined' ? window : {};\n","import { ResizeObserverBoxOptions } from '../ResizeObserverBoxOptions';\nimport { ResizeObserverSize } from '../ResizeObserverSize';\nimport { DOMRectReadOnly } from '../DOMRectReadOnly';\nimport { isSVG, isHidden } from '../utils/element';\nimport { freeze } from '../utils/freeze';\nimport { global } from '../utils/global';\nvar cache = new WeakMap();\nvar scrollRegexp = /auto|scroll/;\nvar verticalRegexp = /^tb|vertical/;\nvar IE = (/msie|trident/i).test(global.navigator && global.navigator.userAgent);\nvar parseDimension = function (pixel) { return parseFloat(pixel || '0'); };\nvar size = function (inlineSize, blockSize, switchSizes) {\n    if (inlineSize === void 0) { inlineSize = 0; }\n    if (blockSize === void 0) { blockSize = 0; }\n    if (switchSizes === void 0) { switchSizes = false; }\n    return new ResizeObserverSize((switchSizes ? blockSize : inlineSize) || 0, (switchSizes ? inlineSize : blockSize) || 0);\n};\nvar zeroBoxes = freeze({\n    devicePixelContentBoxSize: size(),\n    borderBoxSize: size(),\n    contentBoxSize: size(),\n    contentRect: new DOMRectReadOnly(0, 0, 0, 0)\n});\nvar calculateBoxSizes = function (target, forceRecalculation) {\n    if (forceRecalculation === void 0) { forceRecalculation = false; }\n    if (cache.has(target) && !forceRecalculation) {\n        return cache.get(target);\n    }\n    if (isHidden(target)) {\n        cache.set(target, zeroBoxes);\n        return zeroBoxes;\n    }\n    var cs = getComputedStyle(target);\n    var svg = isSVG(target) && target.ownerSVGElement && target.getBBox();\n    var removePadding = !IE && cs.boxSizing === 'border-box';\n    var switchSizes = verticalRegexp.test(cs.writingMode || '');\n    var canScrollVertically = !svg && scrollRegexp.test(cs.overflowY || '');\n    var canScrollHorizontally = !svg && scrollRegexp.test(cs.overflowX || '');\n    var paddingTop = svg ? 0 : parseDimension(cs.paddingTop);\n    var paddingRight = svg ? 0 : parseDimension(cs.paddingRight);\n    var paddingBottom = svg ? 0 : parseDimension(cs.paddingBottom);\n    var paddingLeft = svg ? 0 : parseDimension(cs.paddingLeft);\n    var borderTop = svg ? 0 : parseDimension(cs.borderTopWidth);\n    var borderRight = svg ? 0 : parseDimension(cs.borderRightWidth);\n    var borderBottom = svg ? 0 : parseDimension(cs.borderBottomWidth);\n    var borderLeft = svg ? 0 : parseDimension(cs.borderLeftWidth);\n    var horizontalPadding = paddingLeft + paddingRight;\n    var verticalPadding = paddingTop + paddingBottom;\n    var horizontalBorderArea = borderLeft + borderRight;\n    var verticalBorderArea = borderTop + borderBottom;\n    var horizontalScrollbarThickness = !canScrollHorizontally ? 0 : target.offsetHeight - verticalBorderArea - target.clientHeight;\n    var verticalScrollbarThickness = !canScrollVertically ? 0 : target.offsetWidth - horizontalBorderArea - target.clientWidth;\n    var widthReduction = removePadding ? horizontalPadding + horizontalBorderArea : 0;\n    var heightReduction = removePadding ? verticalPadding + verticalBorderArea : 0;\n    var contentWidth = svg ? svg.width : parseDimension(cs.width) - widthReduction - verticalScrollbarThickness;\n    var contentHeight = svg ? svg.height : parseDimension(cs.height) - heightReduction - horizontalScrollbarThickness;\n    var borderBoxWidth = contentWidth + horizontalPadding + verticalScrollbarThickness + horizontalBorderArea;\n    var borderBoxHeight = contentHeight + verticalPadding + horizontalScrollbarThickness + verticalBorderArea;\n    var boxes = freeze({\n        devicePixelContentBoxSize: size(Math.round(contentWidth * devicePixelRatio), Math.round(contentHeight * devicePixelRatio), switchSizes),\n        borderBoxSize: size(borderBoxWidth, borderBoxHeight, switchSizes),\n        contentBoxSize: size(contentWidth, contentHeight, switchSizes),\n        contentRect: new DOMRectReadOnly(paddingLeft, paddingTop, contentWidth, contentHeight)\n    });\n    cache.set(target, boxes);\n    return boxes;\n};\nvar calculateBoxSize = function (target, observedBox, forceRecalculation) {\n    var _a = calculateBoxSizes(target, forceRecalculation), borderBoxSize = _a.borderBoxSize, contentBoxSize = _a.contentBoxSize, devicePixelContentBoxSize = _a.devicePixelContentBoxSize;\n    switch (observedBox) {\n        case ResizeObserverBoxOptions.DEVICE_PIXEL_CONTENT_BOX:\n            return devicePixelContentBoxSize;\n        case ResizeObserverBoxOptions.BORDER_BOX:\n            return borderBoxSize;\n        default:\n            return contentBoxSize;\n    }\n};\nexport { calculateBoxSize, calculateBoxSizes };\n","import { calculateBoxSizes } from './algorithms/calculateBoxSize';\nimport { freeze } from './utils/freeze';\nvar ResizeObserverEntry = (function () {\n    function ResizeObserverEntry(target) {\n        var boxes = calculateBoxSizes(target);\n        this.target = target;\n        this.contentRect = boxes.contentRect;\n        this.borderBoxSize = freeze([boxes.borderBoxSize]);\n        this.contentBoxSize = freeze([boxes.contentBoxSize]);\n        this.devicePixelContentBoxSize = freeze([boxes.devicePixelContentBoxSize]);\n    }\n    return ResizeObserverEntry;\n}());\nexport { ResizeObserverEntry };\n","import { isHidden } from '../utils/element';\nvar calculateDepthForNode = function (node) {\n    if (isHidden(node)) {\n        return Infinity;\n    }\n    var depth = 0;\n    var parent = node.parentNode;\n    while (parent) {\n        depth += 1;\n        parent = parent.parentNode;\n    }\n    return depth;\n};\nexport { calculateDepthForNode };\n","import { resizeObservers } from '../utils/resizeObservers';\nimport { ResizeObserverEntry } from '../ResizeObserverEntry';\nimport { calculateDepthForNode } from './calculateDepthForNode';\nimport { calculateBoxSize } from './calculateBoxSize';\nvar broadcastActiveObservations = function () {\n    var shallowestDepth = Infinity;\n    var callbacks = [];\n    resizeObservers.forEach(function processObserver(ro) {\n        if (ro.activeTargets.length === 0) {\n            return;\n        }\n        var entries = [];\n        ro.activeTargets.forEach(function processTarget(ot) {\n            var entry = new ResizeObserverEntry(ot.target);\n            var targetDepth = calculateDepthForNode(ot.target);\n            entries.push(entry);\n            ot.lastReportedSize = calculateBoxSize(ot.target, ot.observedBox);\n            if (targetDepth < shallowestDepth) {\n                shallowestDepth = targetDepth;\n            }\n        });\n        callbacks.push(function resizeObserverCallback() {\n            ro.callback.call(ro.observer, entries, ro.observer);\n        });\n        ro.activeTargets.splice(0, ro.activeTargets.length);\n    });\n    for (var _i = 0, callbacks_1 = callbacks; _i < callbacks_1.length; _i++) {\n        var callback = callbacks_1[_i];\n        callback();\n    }\n    return shallowestDepth;\n};\nexport { broadcastActiveObservations };\n","import { resizeObservers } from '../utils/resizeObservers';\nimport { calculateDepthForNode } from './calculateDepthForNode';\nvar gatherActiveObservationsAtDepth = function (depth) {\n    resizeObservers.forEach(function processObserver(ro) {\n        ro.activeTargets.splice(0, ro.activeTargets.length);\n        ro.skippedTargets.splice(0, ro.skippedTargets.length);\n        ro.observationTargets.forEach(function processTarget(ot) {\n            if (ot.isActive()) {\n                if (calculateDepthForNode(ot.target) > depth) {\n                    ro.activeTargets.push(ot);\n                }\n                else {\n                    ro.skippedTargets.push(ot);\n                }\n            }\n        });\n    });\n};\nexport { gatherActiveObservationsAtDepth };\n","import { hasActiveObservations } from '../algorithms/hasActiveObservations';\nimport { hasSkippedObservations } from '../algorithms/hasSkippedObservations';\nimport { deliverResizeLoopError } from '../algorithms/deliverResizeLoopError';\nimport { broadcastActiveObservations } from '../algorithms/broadcastActiveObservations';\nimport { gatherActiveObservationsAtDepth } from '../algorithms/gatherActiveObservationsAtDepth';\nvar process = function () {\n    var depth = 0;\n    gatherActiveObservationsAtDepth(depth);\n    while (hasActiveObservations()) {\n        depth = broadcastActiveObservations();\n        gatherActiveObservationsAtDepth(depth);\n    }\n    if (hasSkippedObservations()) {\n        deliverResizeLoopError();\n    }\n    return depth > 0;\n};\nexport { process };\n","var trigger;\nvar callbacks = [];\nvar notify = function () { return callbacks.splice(0).forEach(function (cb) { return cb(); }); };\nvar queueMicroTask = function (callback) {\n    if (!trigger) {\n        var toggle_1 = 0;\n        var el_1 = document.createTextNode('');\n        var config = { characterData: true };\n        new MutationObserver(function () { return notify(); }).observe(el_1, config);\n        trigger = function () { el_1.textContent = \"\".concat(toggle_1 ? toggle_1-- : toggle_1++); };\n    }\n    callbacks.push(callback);\n    trigger();\n};\nexport { queueMicroTask };\n","import { queueMicroTask } from './queueMicroTask';\nvar queueResizeObserver = function (cb) {\n    queueMicroTask(function ResizeObserver() {\n        requestAnimationFrame(cb);\n    });\n};\nexport { queueResizeObserver };\n","import { process } from './process';\nimport { global } from './global';\nimport { queueResizeObserver } from './queueResizeObserver';\nvar watching = 0;\nvar isWatching = function () { return !!watching; };\nvar CATCH_PERIOD = 250;\nvar observerConfig = { attributes: true, characterData: true, childList: true, subtree: true };\nvar events = [\n    'resize',\n    'load',\n    'transitionend',\n    'animationend',\n    'animationstart',\n    'animationiteration',\n    'keyup',\n    'keydown',\n    'mouseup',\n    'mousedown',\n    'mouseover',\n    'mouseout',\n    'blur',\n    'focus'\n];\nvar time = function (timeout) {\n    if (timeout === void 0) { timeout = 0; }\n    return Date.now() + timeout;\n};\nvar scheduled = false;\nvar Scheduler = (function () {\n    function Scheduler() {\n        var _this = this;\n        this.stopped = true;\n        this.listener = function () { return _this.schedule(); };\n    }\n    Scheduler.prototype.run = function (timeout) {\n        var _this = this;\n        if (timeout === void 0) { timeout = CATCH_PERIOD; }\n        if (scheduled) {\n            return;\n        }\n        scheduled = true;\n        var until = time(timeout);\n        queueResizeObserver(function () {\n            var elementsHaveResized = false;\n            try {\n                elementsHaveResized = process();\n            }\n            finally {\n                scheduled = false;\n                timeout = until - time();\n                if (!isWatching()) {\n                    return;\n                }\n                if (elementsHaveResized) {\n                    _this.run(1000);\n                }\n                else if (timeout > 0) {\n                    _this.run(timeout);\n                }\n                else {\n                    _this.start();\n                }\n            }\n        });\n    };\n    Scheduler.prototype.schedule = function () {\n        this.stop();\n        this.run();\n    };\n    Scheduler.prototype.observe = function () {\n        var _this = this;\n        var cb = function () { return _this.observer && _this.observer.observe(document.body, observerConfig); };\n        document.body ? cb() : global.addEventListener('DOMContentLoaded', cb);\n    };\n    Scheduler.prototype.start = function () {\n        var _this = this;\n        if (this.stopped) {\n            this.stopped = false;\n            this.observer = new MutationObserver(this.listener);\n            this.observe();\n            events.forEach(function (name) { return global.addEventListener(name, _this.listener, true); });\n        }\n    };\n    Scheduler.prototype.stop = function () {\n        var _this = this;\n        if (!this.stopped) {\n            this.observer && this.observer.disconnect();\n            events.forEach(function (name) { return global.removeEventListener(name, _this.listener, true); });\n            this.stopped = true;\n        }\n    };\n    return Scheduler;\n}());\nvar scheduler = new Scheduler();\nvar updateCount = function (n) {\n    !watching && n > 0 && scheduler.start();\n    watching += n;\n    !watching && scheduler.stop();\n};\nexport { scheduler, updateCount };\n","import { ResizeObserverBoxOptions } from './ResizeObserverBoxOptions';\nimport { calculateBoxSize } from './algorithms/calculateBoxSize';\nimport { isSVG, isReplacedElement } from './utils/element';\nvar skipNotifyOnElement = function (target) {\n    return !isSVG(target)\n        && !isReplacedElement(target)\n        && getComputedStyle(target).display === 'inline';\n};\nvar ResizeObservation = (function () {\n    function ResizeObservation(target, observedBox) {\n        this.target = target;\n        this.observedBox = observedBox || ResizeObserverBoxOptions.CONTENT_BOX;\n        this.lastReportedSize = {\n            inlineSize: 0,\n            blockSize: 0\n        };\n    }\n    ResizeObservation.prototype.isActive = function () {\n        var size = calculateBoxSize(this.target, this.observedBox, true);\n        if (skipNotifyOnElement(this.target)) {\n            this.lastReportedSize = size;\n        }\n        if (this.lastReportedSize.inlineSize !== size.inlineSize\n            || this.lastReportedSize.blockSize !== size.blockSize) {\n            return true;\n        }\n        return false;\n    };\n    return ResizeObservation;\n}());\nexport { ResizeObservation };\n","var ResizeObserverDetail = (function () {\n    function ResizeObserverDetail(resizeObserver, callback) {\n        this.activeTargets = [];\n        this.skippedTargets = [];\n        this.observationTargets = [];\n        this.observer = resizeObserver;\n        this.callback = callback;\n    }\n    return ResizeObserverDetail;\n}());\nexport { ResizeObserverDetail };\n","import { scheduler, updateCount } from './utils/scheduler';\nimport { ResizeObservation } from './ResizeObservation';\nimport { ResizeObserverDetail } from './ResizeObserverDetail';\nimport { resizeObservers } from './utils/resizeObservers';\nvar observerMap = new WeakMap();\nvar getObservationIndex = function (observationTargets, target) {\n    for (var i = 0; i < observationTargets.length; i += 1) {\n        if (observationTargets[i].target === target) {\n            return i;\n        }\n    }\n    return -1;\n};\nvar ResizeObserverController = (function () {\n    function ResizeObserverController() {\n    }\n    ResizeObserverController.connect = function (resizeObserver, callback) {\n        var detail = new ResizeObserverDetail(resizeObserver, callback);\n        observerMap.set(resizeObserver, detail);\n    };\n    ResizeObserverController.observe = function (resizeObserver, target, options) {\n        var detail = observerMap.get(resizeObserver);\n        var firstObservation = detail.observationTargets.length === 0;\n        if (getObservationIndex(detail.observationTargets, target) < 0) {\n            firstObservation && resizeObservers.push(detail);\n            detail.observationTargets.push(new ResizeObservation(target, options && options.box));\n            updateCount(1);\n            scheduler.schedule();\n        }\n    };\n    ResizeObserverController.unobserve = function (resizeObserver, target) {\n        var detail = observerMap.get(resizeObserver);\n        var index = getObservationIndex(detail.observationTargets, target);\n        var lastObservation = detail.observationTargets.length === 1;\n        if (index >= 0) {\n            lastObservation && resizeObservers.splice(resizeObservers.indexOf(detail), 1);\n            detail.observationTargets.splice(index, 1);\n            updateCount(-1);\n        }\n    };\n    ResizeObserverController.disconnect = function (resizeObserver) {\n        var _this = this;\n        var detail = observerMap.get(resizeObserver);\n        detail.observationTargets.slice().forEach(function (ot) { return _this.unobserve(resizeObserver, ot.target); });\n        detail.activeTargets.splice(0, detail.activeTargets.length);\n    };\n    return ResizeObserverController;\n}());\nexport { ResizeObserverController };\n","import { ResizeObserverController } from './ResizeObserverController';\nimport { isElement } from './utils/element';\nvar ResizeObserver = (function () {\n    function ResizeObserver(callback) {\n        if (arguments.length === 0) {\n            throw new TypeError(\"Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.\");\n        }\n        if (typeof callback !== 'function') {\n            throw new TypeError(\"Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.\");\n        }\n        ResizeObserverController.connect(this, callback);\n    }\n    ResizeObserver.prototype.observe = function (target, options) {\n        if (arguments.length === 0) {\n            throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n        }\n        if (!isElement(target)) {\n            throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n        }\n        ResizeObserverController.observe(this, target, options);\n    };\n    ResizeObserver.prototype.unobserve = function (target) {\n        if (arguments.length === 0) {\n            throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n        }\n        if (!isElement(target)) {\n            throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n        }\n        ResizeObserverController.unobserve(this, target);\n    };\n    ResizeObserver.prototype.disconnect = function () {\n        ResizeObserverController.disconnect(this);\n    };\n    ResizeObserver.toString = function () {\n        return 'function ResizeObserver () { [polyfill code] }';\n    };\n    return ResizeObserver;\n}());\nexport { ResizeObserver };\n","import tslib from '../tslib.js';\r\nconst {\r\n    __extends,\r\n    __assign,\r\n    __rest,\r\n    __decorate,\r\n    __param,\r\n    __metadata,\r\n    __awaiter,\r\n    __generator,\r\n    __exportStar,\r\n    __createBinding,\r\n    __values,\r\n    __read,\r\n    __spread,\r\n    __spreadArrays,\r\n    __spreadArray,\r\n    __await,\r\n    __asyncGenerator,\r\n    __asyncDelegator,\r\n    __asyncValues,\r\n    __makeTemplateObject,\r\n    __importStar,\r\n    __importDefault,\r\n    __classPrivateFieldGet,\r\n    __classPrivateFieldSet,\r\n    __classPrivateFieldIn,\r\n} = tslib;\r\nexport {\r\n    __extends,\r\n    __assign,\r\n    __rest,\r\n    __decorate,\r\n    __param,\r\n    __metadata,\r\n    __awaiter,\r\n    __generator,\r\n    __exportStar,\r\n    __createBinding,\r\n    __values,\r\n    __read,\r\n    __spread,\r\n    __spreadArrays,\r\n    __spreadArray,\r\n    __await,\r\n    __asyncGenerator,\r\n    __asyncDelegator,\r\n    __asyncValues,\r\n    __makeTemplateObject,\r\n    __importStar,\r\n    __importDefault,\r\n    __classPrivateFieldGet,\r\n    __classPrivateFieldSet,\r\n    __classPrivateFieldIn,\r\n};\r\n","import { __assign } from 'tslib';\nimport * as React from 'react';\nimport { forwardRef, useContext } from 'react';\nimport { useFeatures } from './features/use-features.mjs';\nimport { MotionConfigContext } from '../context/MotionConfigContext.mjs';\nimport { MotionContext } from '../context/MotionContext/index.mjs';\nimport { useVisualElement } from './utils/use-visual-element.mjs';\nimport { useMotionRef } from './utils/use-motion-ref.mjs';\nimport { useCreateMotionContext } from '../context/MotionContext/create.mjs';\nimport { loadFeatures, featureDefinitions } from './features/definitions.mjs';\nimport { isBrowser } from '../utils/is-browser.mjs';\nimport { useProjectionId } from '../projection/node/id.mjs';\nimport { LayoutGroupContext } from '../context/LayoutGroupContext.mjs';\nimport { useProjection } from './features/use-projection.mjs';\nimport { VisualElementHandler } from './utils/VisualElementHandler.mjs';\n\n/**\n * Create a `motion` component.\n *\n * This function accepts a Component argument, which can be either a string (ie \"div\"\n * for `motion.div`), or an actual React component.\n *\n * Alongside this is a config option which provides a way of rendering the provided\n * component \"offline\", or outside the React render cycle.\n */\nfunction createMotionComponent(_a) {\n    var preloadedFeatures = _a.preloadedFeatures, createVisualElement = _a.createVisualElement, projectionNodeConstructor = _a.projectionNodeConstructor, useRender = _a.useRender, useVisualState = _a.useVisualState, Component = _a.Component;\n    preloadedFeatures && loadFeatures(preloadedFeatures);\n    function MotionComponent(props, externalRef) {\n        var layoutId = useLayoutId(props);\n        props = __assign(__assign({}, props), { layoutId: layoutId });\n        /**\n         * If we're rendering in a static environment, we only visually update the component\n         * as a result of a React-rerender rather than interactions or animations. This\n         * means we don't need to load additional memory structures like VisualElement,\n         * or any gesture/animation features.\n         */\n        var config = useContext(MotionConfigContext);\n        var features = null;\n        var context = useCreateMotionContext(props);\n        /**\n         * Create a unique projection ID for this component. If a new component is added\n         * during a layout animation we'll use this to query the DOM and hydrate its ref early, allowing\n         * us to measure it as soon as any layout effect flushes pending layout animations.\n         *\n         * Performance note: It'd be better not to have to search the DOM for these elements.\n         * For newly-entering components it could be enough to only correct treeScale, in which\n         * case we could mount in a scale-correction mode. This wouldn't be enough for\n         * shared element transitions however. Perhaps for those we could revert to a root node\n         * that gets forceRendered and layout animations are triggered on its layout effect.\n         */\n        var projectionId = config.isStatic ? undefined : useProjectionId();\n        /**\n         *\n         */\n        var visualState = useVisualState(props, config.isStatic);\n        if (!config.isStatic && isBrowser) {\n            /**\n             * Create a VisualElement for this component. A VisualElement provides a common\n             * interface to renderer-specific APIs (ie DOM/Three.js etc) as well as\n             * providing a way of rendering to these APIs outside of the React render loop\n             * for more performant animations and interactions\n             */\n            context.visualElement = useVisualElement(Component, visualState, __assign(__assign({}, config), props), createVisualElement);\n            useProjection(projectionId, props, context.visualElement, projectionNodeConstructor ||\n                featureDefinitions.projectionNodeConstructor);\n            /**\n             * Load Motion gesture and animation features. These are rendered as renderless\n             * components so each feature can optionally make use of React lifecycle methods.\n             */\n            features = useFeatures(props, context.visualElement, preloadedFeatures);\n        }\n        /**\n         * The mount order and hierarchy is specific to ensure our element ref\n         * is hydrated by the time features fire their effects.\n         */\n        return (React.createElement(VisualElementHandler, { visualElement: context.visualElement, props: __assign(__assign({}, config), props) },\n            features,\n            React.createElement(MotionContext.Provider, { value: context }, useRender(Component, props, projectionId, useMotionRef(visualState, context.visualElement, externalRef), visualState, config.isStatic, context.visualElement))));\n    }\n    return forwardRef(MotionComponent);\n}\nfunction useLayoutId(_a) {\n    var _b;\n    var layoutId = _a.layoutId;\n    var layoutGroupId = (_b = useContext(LayoutGroupContext)) === null || _b === void 0 ? void 0 : _b.id;\n    return layoutGroupId && layoutId !== undefined\n        ? layoutGroupId + \"-\" + layoutId\n        : layoutId;\n}\n\nexport { createMotionComponent };\n","import { __assign } from 'tslib';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { env } from '../../utils/process.mjs';\nimport { featureDefinitions } from './definitions.mjs';\nimport { invariant } from 'hey-listen';\nimport { LazyContext } from '../../context/LazyContext.mjs';\n\nvar featureNames = Object.keys(featureDefinitions);\nvar numFeatures = featureNames.length;\n/**\n * Load features via renderless components based on the provided MotionProps.\n */\nfunction useFeatures(props, visualElement, preloadedFeatures) {\n    var features = [];\n    var lazyContext = useContext(LazyContext);\n    if (!visualElement)\n        return null;\n    /**\n     * If we're in development mode, check to make sure we're not rendering a motion component\n     * as a child of LazyMotion, as this will break the file-size benefits of using it.\n     */\n    if (env !== \"production\" && preloadedFeatures && lazyContext.strict) {\n        invariant(false, \"You have rendered a `motion` component within a `LazyMotion` component. This will break tree shaking. Import and render a `m` component instead.\");\n    }\n    for (var i = 0; i < numFeatures; i++) {\n        var name_1 = featureNames[i];\n        var _a = featureDefinitions[name_1], isEnabled = _a.isEnabled, Component = _a.Component;\n        /**\n         * It might be possible in the future to use this moment to\n         * dynamically request functionality. In initial tests this\n         * was producing a lot of duplication amongst bundles.\n         */\n        if (isEnabled(props) && Component) {\n            features.push(React.createElement(Component, __assign({ key: name_1 }, props, { visualElement: visualElement })));\n        }\n    }\n    return features;\n}\n\nexport { useFeatures };\n","/**\n * Browser-safe usage of process\n */\nvar defaultEnvironment = \"production\";\nvar env = typeof process === \"undefined\" || process.env === undefined\n    ? defaultEnvironment\n    : process.env.NODE_ENV || defaultEnvironment;\n\nexport { env };\n","var createDefinition = function (propNames) { return ({\n    isEnabled: function (props) { return propNames.some(function (name) { return !!props[name]; }); },\n}); };\nvar featureDefinitions = {\n    measureLayout: createDefinition([\"layout\", \"layoutId\", \"drag\"]),\n    animation: createDefinition([\n        \"animate\",\n        \"exit\",\n        \"variants\",\n        \"whileHover\",\n        \"whileTap\",\n        \"whileFocus\",\n        \"whileDrag\",\n        \"whileInView\",\n    ]),\n    exit: createDefinition([\"exit\"]),\n    drag: createDefinition([\"drag\", \"dragControls\"]),\n    focus: createDefinition([\"whileFocus\"]),\n    hover: createDefinition([\"whileHover\", \"onHoverStart\", \"onHoverEnd\"]),\n    tap: createDefinition([\"whileTap\", \"onTap\", \"onTapStart\", \"onTapCancel\"]),\n    pan: createDefinition([\n        \"onPan\",\n        \"onPanStart\",\n        \"onPanSessionStart\",\n        \"onPanEnd\",\n    ]),\n    inView: createDefinition([\n        \"whileInView\",\n        \"onViewportEnter\",\n        \"onViewportLeave\",\n    ]),\n};\nfunction loadFeatures(features) {\n    for (var key in features) {\n        if (features[key] === null)\n            continue;\n        if (key === \"projectionNodeConstructor\") {\n            featureDefinitions.projectionNodeConstructor = features[key];\n        }\n        else {\n            featureDefinitions[key].Component = features[key];\n        }\n    }\n}\n\nexport { featureDefinitions, loadFeatures };\n","var warning = function () { };\r\nvar invariant = function () { };\r\nif (process.env.NODE_ENV !== 'production') {\r\n    warning = function (check, message) {\r\n        if (!check && typeof console !== 'undefined') {\r\n            console.warn(message);\r\n        }\r\n    };\r\n    invariant = function (check, message) {\r\n        if (!check) {\r\n            throw new Error(message);\r\n        }\r\n    };\r\n}\n\nexport { invariant, warning };\n","import { createContext } from 'react';\n\nvar LazyContext = createContext({ strict: false });\n\nexport { LazyContext };\n","import { createContext } from 'react';\n\n/**\n * @public\n */\nvar MotionConfigContext = createContext({\n    transformPagePoint: function (p) { return p; },\n    isStatic: false,\n    reducedMotion: \"never\",\n});\n\nexport { MotionConfigContext };\n","import { createContext, useContext } from 'react';\n\nvar MotionContext = createContext({});\nfunction useVisualElementContext() {\n    return useContext(MotionContext).visualElement;\n}\n\nexport { MotionContext, useVisualElementContext };\n","import { useContext, useRef, useEffect } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { useVisualElementContext } from '../../context/MotionContext/index.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\nimport { LazyContext } from '../../context/LazyContext.mjs';\nimport { useReducedMotionConfig } from '../../utils/use-reduced-motion.mjs';\n\nfunction useVisualElement(Component, visualState, props, createVisualElement) {\n    var lazyContext = useContext(LazyContext);\n    var parent = useVisualElementContext();\n    var presenceContext = useContext(PresenceContext);\n    var shouldReduceMotion = useReducedMotionConfig();\n    var visualElementRef = useRef(undefined);\n    /**\n     * If we haven't preloaded a renderer, check to see if we have one lazy-loaded\n     */\n    if (!createVisualElement)\n        createVisualElement = lazyContext.renderer;\n    if (!visualElementRef.current && createVisualElement) {\n        visualElementRef.current = createVisualElement(Component, {\n            visualState: visualState,\n            parent: parent,\n            props: props,\n            presenceId: presenceContext === null || presenceContext === void 0 ? void 0 : presenceContext.id,\n            blockInitialAnimation: (presenceContext === null || presenceContext === void 0 ? void 0 : presenceContext.initial) === false,\n            shouldReduceMotion: shouldReduceMotion,\n        });\n    }\n    var visualElement = visualElementRef.current;\n    useIsomorphicLayoutEffect(function () {\n        visualElement === null || visualElement === void 0 ? void 0 : visualElement.syncRender();\n    });\n    useEffect(function () {\n        var _a;\n        (_a = visualElement === null || visualElement === void 0 ? void 0 : visualElement.animationState) === null || _a === void 0 ? void 0 : _a.animateChanges();\n    });\n    useIsomorphicLayoutEffect(function () { return function () { return visualElement === null || visualElement === void 0 ? void 0 : visualElement.notifyUnmount(); }; }, []);\n    return visualElement;\n}\n\nexport { useVisualElement };\n","import { createContext } from 'react';\n\n/**\n * @public\n */\nvar PresenceContext = createContext(null);\n\nexport { PresenceContext };\n","import { useLayoutEffect, useEffect } from 'react';\nimport { isBrowser } from './is-browser.mjs';\n\nvar useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\n\nexport { useIsomorphicLayoutEffect };\n","var isBrowser = typeof document !== \"undefined\";\n\nexport { isBrowser };\n","import { __read } from 'tslib';\nimport { useState, useContext } from 'react';\nimport { MotionConfigContext } from '../context/MotionConfigContext.mjs';\nimport { isBrowser } from './is-browser.mjs';\n\n// Does this device prefer reduced motion? Returns `null` server-side.\nvar prefersReducedMotion = { current: null };\nvar hasDetected = false;\nfunction initPrefersReducedMotion() {\n    hasDetected = true;\n    if (!isBrowser)\n        return;\n    if (window.matchMedia) {\n        var motionMediaQuery_1 = window.matchMedia(\"(prefers-reduced-motion)\");\n        var setReducedMotionPreferences = function () {\n            return (prefersReducedMotion.current = motionMediaQuery_1.matches);\n        };\n        motionMediaQuery_1.addListener(setReducedMotionPreferences);\n        setReducedMotionPreferences();\n    }\n    else {\n        prefersReducedMotion.current = false;\n    }\n}\n/**\n * A hook that returns `true` if we should be using reduced motion based on the current device's Reduced Motion setting.\n *\n * This can be used to implement changes to your UI based on Reduced Motion. For instance, replacing motion-sickness inducing\n * `x`/`y` animations with `opacity`, disabling the autoplay of background videos, or turning off parallax motion.\n *\n * It will actively respond to changes and re-render your components with the latest setting.\n *\n * ```jsx\n * export function Sidebar({ isOpen }) {\n *   const shouldReduceMotion = useReducedMotion()\n *   const closedX = shouldReduceMotion ? 0 : \"-100%\"\n *\n *   return (\n *     <motion.div animate={{\n *       opacity: isOpen ? 1 : 0,\n *       x: isOpen ? 0 : closedX\n *     }} />\n *   )\n * }\n * ```\n *\n * @return boolean\n *\n * @public\n */\nfunction useReducedMotion() {\n    /**\n     * Lazy initialisation of prefersReducedMotion\n     */\n    !hasDetected && initPrefersReducedMotion();\n    var _a = __read(useState(prefersReducedMotion.current), 1), shouldReduceMotion = _a[0];\n    /**\n     * TODO See if people miss automatically updating shouldReduceMotion setting\n     */\n    return shouldReduceMotion;\n}\nfunction useReducedMotionConfig() {\n    var reducedMotionPreference = useReducedMotion();\n    var reducedMotion = useContext(MotionConfigContext).reducedMotion;\n    if (reducedMotion === \"never\") {\n        return false;\n    }\n    else if (reducedMotion === \"always\") {\n        return true;\n    }\n    else {\n        return reducedMotionPreference;\n    }\n}\n\nexport { useReducedMotion, useReducedMotionConfig };\n","import { useCallback } from 'react';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\n\n/**\n * Creates a ref function that, when called, hydrates the provided\n * external ref and VisualElement.\n */\nfunction useMotionRef(visualState, visualElement, externalRef) {\n    return useCallback(function (instance) {\n        var _a;\n        instance && ((_a = visualState.mount) === null || _a === void 0 ? void 0 : _a.call(visualState, instance));\n        if (visualElement) {\n            instance\n                ? visualElement.mount(instance)\n                : visualElement.unmount();\n        }\n        if (externalRef) {\n            if (typeof externalRef === \"function\") {\n                externalRef(instance);\n            }\n            else if (isRefObject(externalRef)) {\n                externalRef.current = instance;\n            }\n        }\n    }, \n    /**\n     * Only pass a new ref callback to React if we've received a visual element\n     * factory. Otherwise we'll be mounting/remounting every time externalRef\n     * or other dependencies change.\n     */\n    [visualElement]);\n}\n\nexport { useMotionRef };\n","function isRefObject(ref) {\n    return (typeof ref === \"object\" &&\n        Object.prototype.hasOwnProperty.call(ref, \"current\"));\n}\n\nexport { isRefObject };\n","import { useMemo, useContext } from 'react';\nimport { MotionContext } from './index.mjs';\nimport { getCurrentTreeVariants } from './utils.mjs';\n\nfunction useCreateMotionContext(props) {\n    var _a = getCurrentTreeVariants(props, useContext(MotionContext)), initial = _a.initial, animate = _a.animate;\n    return useMemo(function () { return ({ initial: initial, animate: animate }); }, [variantLabelsAsDependency(initial), variantLabelsAsDependency(animate)]);\n}\nfunction variantLabelsAsDependency(prop) {\n    return Array.isArray(prop) ? prop.join(\" \") : prop;\n}\n\nexport { useCreateMotionContext };\n","/**\n * Decides if the supplied variable is an array of variant labels\n */\nfunction isVariantLabels(v) {\n    return Array.isArray(v);\n}\n/**\n * Decides if the supplied variable is variant label\n */\nfunction isVariantLabel(v) {\n    return typeof v === \"string\" || isVariantLabels(v);\n}\n/**\n * Creates an object containing the latest state of every MotionValue on a VisualElement\n */\nfunction getCurrent(visualElement) {\n    var current = {};\n    visualElement.forEachValue(function (value, key) { return (current[key] = value.get()); });\n    return current;\n}\n/**\n * Creates an object containing the latest velocity of every MotionValue on a VisualElement\n */\nfunction getVelocity(visualElement) {\n    var velocity = {};\n    visualElement.forEachValue(function (value, key) { return (velocity[key] = value.getVelocity()); });\n    return velocity;\n}\nfunction resolveVariantFromProps(props, definition, custom, currentValues, currentVelocity) {\n    var _a;\n    if (currentValues === void 0) { currentValues = {}; }\n    if (currentVelocity === void 0) { currentVelocity = {}; }\n    /**\n     * If the variant definition is a function, resolve.\n     */\n    if (typeof definition === \"function\") {\n        definition = definition(custom !== null && custom !== void 0 ? custom : props.custom, currentValues, currentVelocity);\n    }\n    /**\n     * If the variant definition is a variant label, or\n     * the function returned a variant label, resolve.\n     */\n    if (typeof definition === \"string\") {\n        definition = (_a = props.variants) === null || _a === void 0 ? void 0 : _a[definition];\n    }\n    /**\n     * At this point we've resolved both functions and variant labels,\n     * but the resolved variant label might itself have been a function.\n     * If so, resolve. This can only have returned a valid target object.\n     */\n    if (typeof definition === \"function\") {\n        definition = definition(custom !== null && custom !== void 0 ? custom : props.custom, currentValues, currentVelocity);\n    }\n    return definition;\n}\nfunction resolveVariant(visualElement, definition, custom) {\n    var props = visualElement.getProps();\n    return resolveVariantFromProps(props, definition, custom !== null && custom !== void 0 ? custom : props.custom, getCurrent(visualElement), getVelocity(visualElement));\n}\nfunction checkIfControllingVariants(props) {\n    var _a;\n    return (typeof ((_a = props.animate) === null || _a === void 0 ? void 0 : _a.start) === \"function\" ||\n        isVariantLabel(props.initial) ||\n        isVariantLabel(props.animate) ||\n        isVariantLabel(props.whileHover) ||\n        isVariantLabel(props.whileDrag) ||\n        isVariantLabel(props.whileTap) ||\n        isVariantLabel(props.whileFocus) ||\n        isVariantLabel(props.exit));\n}\nfunction checkIfVariantNode(props) {\n    return Boolean(checkIfControllingVariants(props) || props.variants);\n}\n\nexport { checkIfControllingVariants, checkIfVariantNode, isVariantLabel, isVariantLabels, resolveVariant, resolveVariantFromProps };\n","import { checkIfControllingVariants, isVariantLabel } from '../../render/utils/variants.mjs';\n\nfunction getCurrentTreeVariants(props, context) {\n    if (checkIfControllingVariants(props)) {\n        var initial = props.initial, animate = props.animate;\n        return {\n            initial: initial === false || isVariantLabel(initial)\n                ? initial\n                : undefined,\n            animate: isVariantLabel(animate) ? animate : undefined,\n        };\n    }\n    return props.inherit !== false ? context : {};\n}\n\nexport { getCurrentTreeVariants };\n","import { useRef } from 'react';\n\n/**\n * Creates a constant value over the lifecycle of a component.\n *\n * Even if `useMemo` is provided an empty array as its final argument, it doesn't offer\n * a guarantee that it won't re-run for performance reasons later on. By using `useConstant`\n * you can ensure that initialisers don't execute twice or more.\n */\nfunction useConstant(init) {\n    var ref = useRef(null);\n    if (ref.current === null) {\n        ref.current = init();\n    }\n    return ref.current;\n}\n\nexport { useConstant };\n","/**\n * This should only ever be modified on the client otherwise it'll\n * persist through server requests. If we need instanced states we\n * could lazy-init via root.\n */\nvar globalProjectionState = {\n    /**\n     * Global flag as to whether the tree has animated since the last time\n     * we resized the window\n     */\n    hasAnimatedSinceResize: true,\n    /**\n     * We set this to true once, on the first update. Any nodes added to the tree beyond that\n     * update will be given a `data-projection-id` attribute.\n     */\n    hasEverUpdated: false,\n};\n\nexport { globalProjectionState };\n","import { useConstant } from '../../utils/use-constant.mjs';\nimport { globalProjectionState } from './state.mjs';\n\nvar id = 1;\nfunction useProjectionId() {\n    return useConstant(function () {\n        if (globalProjectionState.hasEverUpdated) {\n            return id++;\n        }\n    });\n}\n\nexport { useProjectionId };\n","import { createContext } from 'react';\n\nvar LayoutGroupContext = createContext({});\n\nexport { LayoutGroupContext };\n","import { isRefObject } from '../../utils/is-ref-object.mjs';\nimport { useContext } from 'react';\nimport { SwitchLayoutGroupContext } from '../../context/SwitchLayoutGroupContext.mjs';\n\nfunction useProjection(projectionId, _a, visualElement, ProjectionNodeConstructor) {\n    var _b;\n    var layoutId = _a.layoutId, layout = _a.layout, drag = _a.drag, dragConstraints = _a.dragConstraints, layoutScroll = _a.layoutScroll;\n    var initialPromotionConfig = useContext(SwitchLayoutGroupContext);\n    if (!ProjectionNodeConstructor ||\n        !visualElement ||\n        (visualElement === null || visualElement === void 0 ? void 0 : visualElement.projection)) {\n        return;\n    }\n    visualElement.projection = new ProjectionNodeConstructor(projectionId, visualElement.getLatestValues(), (_b = visualElement.parent) === null || _b === void 0 ? void 0 : _b.projection);\n    visualElement.projection.setOptions({\n        layoutId: layoutId,\n        layout: layout,\n        alwaysMeasureLayout: Boolean(drag) || (dragConstraints && isRefObject(dragConstraints)),\n        visualElement: visualElement,\n        scheduleRender: function () { return visualElement.scheduleRender(); },\n        /**\n         * TODO: Update options in an effect. This could be tricky as it'll be too late\n         * to update by the time layout animations run.\n         * We also need to fix this safeToRemove by linking it up to the one returned by usePresence,\n         * ensuring it gets called if there's no potential layout animations.\n         *\n         */\n        animationType: typeof layout === \"string\" ? layout : \"both\",\n        initialPromotionConfig: initialPromotionConfig,\n        layoutScroll: layoutScroll,\n    });\n}\n\nexport { useProjection };\n","import { createContext } from 'react';\n\n/**\n * Internal, exported only for usage in Framer\n */\nvar SwitchLayoutGroupContext = createContext({});\n\nexport { SwitchLayoutGroupContext };\n","import { __extends } from 'tslib';\nimport React__default from 'react';\n\nvar VisualElementHandler = /** @class */ (function (_super) {\n    __extends(VisualElementHandler, _super);\n    function VisualElementHandler() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * Update visual element props as soon as we know this update is going to be commited.\n     */\n    VisualElementHandler.prototype.getSnapshotBeforeUpdate = function () {\n        this.updateProps();\n        return null;\n    };\n    VisualElementHandler.prototype.componentDidUpdate = function () { };\n    VisualElementHandler.prototype.updateProps = function () {\n        var _a = this.props, visualElement = _a.visualElement, props = _a.props;\n        if (visualElement)\n            visualElement.setProps(props);\n    };\n    VisualElementHandler.prototype.render = function () {\n        return this.props.children;\n    };\n    return VisualElementHandler;\n}(React__default.Component));\n\nexport { VisualElementHandler };\n","import { createMotionComponent } from '../../motion/index.mjs';\n\n/**\n * Convert any React component into a `motion` component. The provided component\n * **must** use `React.forwardRef` to the underlying DOM component you want to animate.\n *\n * ```jsx\n * const Component = React.forwardRef((props, ref) => {\n *   return <div ref={ref} />\n * })\n *\n * const MotionComponent = motion(Component)\n * ```\n *\n * @public\n */\nfunction createMotionProxy(createConfig) {\n    function custom(Component, customMotionComponentConfig) {\n        if (customMotionComponentConfig === void 0) { customMotionComponentConfig = {}; }\n        return createMotionComponent(createConfig(Component, customMotionComponentConfig));\n    }\n    if (typeof Proxy === \"undefined\") {\n        return custom;\n    }\n    /**\n     * A cache of generated `motion` components, e.g `motion.div`, `motion.input` etc.\n     * Rather than generating them anew every render.\n     */\n    var componentCache = new Map();\n    return new Proxy(custom, {\n        /**\n         * Called when `motion` is referenced with a prop: `motion.div`, `motion.input` etc.\n         * The prop name is passed through as `key` and we can use that to generate a `motion`\n         * DOM component with that name.\n         */\n        get: function (_target, key) {\n            /**\n             * If this element doesn't exist in the component cache, create it and cache.\n             */\n            if (!componentCache.has(key)) {\n                componentCache.set(key, custom(key));\n            }\n            return componentCache.get(key);\n        },\n    });\n}\n\nexport { createMotionProxy };\n","/**\n * We keep these listed seperately as we use the lowercase tag names as part\n * of the runtime bundle to detect SVG components\n */\nvar lowercaseSVGElements = [\n    \"animate\",\n    \"circle\",\n    \"defs\",\n    \"desc\",\n    \"ellipse\",\n    \"g\",\n    \"image\",\n    \"line\",\n    \"filter\",\n    \"marker\",\n    \"mask\",\n    \"metadata\",\n    \"path\",\n    \"pattern\",\n    \"polygon\",\n    \"polyline\",\n    \"rect\",\n    \"stop\",\n    \"svg\",\n    \"switch\",\n    \"symbol\",\n    \"text\",\n    \"tspan\",\n    \"use\",\n    \"view\",\n];\n\nexport { lowercaseSVGElements };\n","import { lowercaseSVGElements } from '../../svg/lowercase-elements.mjs';\n\nfunction isSVGComponent(Component) {\n    if (\n    /**\n     * If it's not a string, it's a custom React component. Currently we only support\n     * HTML custom React components.\n     */\n    typeof Component !== \"string\" ||\n        /**\n         * If it contains a dash, the element is a custom HTML webcomponent.\n         */\n        Component.includes(\"-\")) {\n        return false;\n    }\n    else if (\n    /**\n     * If it's in our list of lowercase SVG tags, it's an SVG component\n     */\n    lowercaseSVGElements.indexOf(Component) > -1 ||\n        /**\n         * If it contains a capital letter, it's an SVG component\n         */\n        /[A-Z]/.test(Component)) {\n        return true;\n    }\n    return false;\n}\n\nexport { isSVGComponent };\n","import { __assign } from 'tslib';\nimport { createElement } from 'react';\nimport { useHTMLProps } from '../html/use-props.mjs';\nimport { filterProps } from './utils/filter-props.mjs';\nimport { isSVGComponent } from './utils/is-svg-component.mjs';\nimport { useSVGProps } from '../svg/use-props.mjs';\n\nfunction createUseRender(forwardMotionProps) {\n    if (forwardMotionProps === void 0) { forwardMotionProps = false; }\n    var useRender = function (Component, props, projectionId, ref, _a, isStatic) {\n        var latestValues = _a.latestValues;\n        var useVisualProps = isSVGComponent(Component)\n            ? useSVGProps\n            : useHTMLProps;\n        var visualProps = useVisualProps(props, latestValues, isStatic);\n        var filteredProps = filterProps(props, typeof Component === \"string\", forwardMotionProps);\n        var elementProps = __assign(__assign(__assign({}, filteredProps), visualProps), { ref: ref });\n        if (projectionId) {\n            elementProps[\"data-projection-id\"] = projectionId;\n        }\n        return createElement(Component, elementProps);\n    };\n    return useRender;\n}\n\nexport { createUseRender };\n","import { __assign } from 'tslib';\nimport { useMemo } from 'react';\nimport { isForcedMotionValue } from '../../motion/utils/is-forced-motion-value.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\nimport { buildHTMLStyles } from './utils/build-styles.mjs';\nimport { createHtmlRenderState } from './utils/create-render-state.mjs';\n\nfunction copyRawValuesOnly(target, source, props) {\n    for (var key in source) {\n        if (!isMotionValue(source[key]) && !isForcedMotionValue(key, props)) {\n            target[key] = source[key];\n        }\n    }\n}\nfunction useInitialMotionValues(_a, visualState, isStatic) {\n    var transformTemplate = _a.transformTemplate;\n    return useMemo(function () {\n        var state = createHtmlRenderState();\n        buildHTMLStyles(state, visualState, { enableHardwareAcceleration: !isStatic }, transformTemplate);\n        var vars = state.vars, style = state.style;\n        return __assign(__assign({}, vars), style);\n    }, [visualState]);\n}\nfunction useStyle(props, visualState, isStatic) {\n    var styleProp = props.style || {};\n    var style = {};\n    /**\n     * Copy non-Motion Values straight into style\n     */\n    copyRawValuesOnly(style, styleProp, props);\n    Object.assign(style, useInitialMotionValues(props, visualState, isStatic));\n    if (props.transformValues) {\n        style = props.transformValues(style);\n    }\n    return style;\n}\nfunction useHTMLProps(props, visualState, isStatic) {\n    // The `any` isn't ideal but it is the type of createElement props argument\n    var htmlProps = {};\n    var style = useStyle(props, visualState, isStatic);\n    if (Boolean(props.drag) && props.dragListener !== false) {\n        // Disable the ghost element when a user drags\n        htmlProps.draggable = false;\n        // Disable text selection\n        style.userSelect =\n            style.WebkitUserSelect =\n                style.WebkitTouchCallout =\n                    \"none\";\n        // Disable scrolling on the draggable direction\n        style.touchAction =\n            props.drag === true\n                ? \"none\"\n                : \"pan-\".concat(props.drag === \"x\" ? \"y\" : \"x\");\n    }\n    htmlProps.style = style;\n    return htmlProps;\n}\n\nexport { copyRawValuesOnly, useHTMLProps, useStyle };\n","var scaleCorrectors = {};\nfunction addScaleCorrector(correctors) {\n    Object.assign(scaleCorrectors, correctors);\n}\n\nexport { addScaleCorrector, scaleCorrectors };\n","/**\n * A list of all transformable axes. We'll use this list to generated a version\n * of each axes for each transform.\n */\nvar transformAxes = [\"\", \"X\", \"Y\", \"Z\"];\n/**\n * An ordered array of each transformable value. By default, transform values\n * will be sorted to this order.\n */\nvar order = [\"translate\", \"scale\", \"rotate\", \"skew\"];\n/**\n * Generate a list of every possible transform key.\n */\nvar transformProps = [\"transformPerspective\", \"x\", \"y\", \"z\"];\norder.forEach(function (operationKey) {\n    return transformAxes.forEach(function (axesKey) {\n        return transformProps.push(operationKey + axesKey);\n    });\n});\n/**\n * A function to use with Array.sort to sort transform keys by their default order.\n */\nfunction sortTransformProps(a, b) {\n    return transformProps.indexOf(a) - transformProps.indexOf(b);\n}\n/**\n * A quick lookup for transform props.\n */\nvar transformPropSet = new Set(transformProps);\nfunction isTransformProp(key) {\n    return transformPropSet.has(key);\n}\n/**\n * A quick lookup for transform origin props\n */\nvar transformOriginProps = new Set([\"originX\", \"originY\", \"originZ\"]);\nfunction isTransformOriginProp(key) {\n    return transformOriginProps.has(key);\n}\n\nexport { isTransformOriginProp, isTransformProp, sortTransformProps, transformAxes, transformProps };\n","import { scaleCorrectors } from '../../projection/styles/scale-correction.mjs';\nimport { isTransformProp, isTransformOriginProp } from '../../render/html/utils/transform.mjs';\n\nfunction isForcedMotionValue(key, _a) {\n    var layout = _a.layout, layoutId = _a.layoutId;\n    return (isTransformProp(key) ||\n        isTransformOriginProp(key) ||\n        ((layout || layoutId !== undefined) &&\n            (!!scaleCorrectors[key] || key === \"opacity\")));\n}\n\nexport { isForcedMotionValue };\n","var isMotionValue = function (value) {\n    return Boolean(value !== null && typeof value === \"object\" && value.getVelocity);\n};\n\nexport { isMotionValue };\n","import { sortTransformProps } from './transform.mjs';\n\nvar translateAlias = {\n    x: \"translateX\",\n    y: \"translateY\",\n    z: \"translateZ\",\n    transformPerspective: \"perspective\",\n};\n/**\n * Build a CSS transform style from individual x/y/scale etc properties.\n *\n * This outputs with a default order of transforms/scales/rotations, this can be customised by\n * providing a transformTemplate function.\n */\nfunction buildTransform(_a, _b, transformIsDefault, transformTemplate) {\n    var transform = _a.transform, transformKeys = _a.transformKeys;\n    var _c = _b.enableHardwareAcceleration, enableHardwareAcceleration = _c === void 0 ? true : _c, _d = _b.allowTransformNone, allowTransformNone = _d === void 0 ? true : _d;\n    // The transform string we're going to build into.\n    var transformString = \"\";\n    // Transform keys into their default order - this will determine the output order.\n    transformKeys.sort(sortTransformProps);\n    // Track whether the defined transform has a defined z so we don't add a\n    // second to enable hardware acceleration\n    var transformHasZ = false;\n    // Loop over each transform and build them into transformString\n    var numTransformKeys = transformKeys.length;\n    for (var i = 0; i < numTransformKeys; i++) {\n        var key = transformKeys[i];\n        transformString += \"\".concat(translateAlias[key] || key, \"(\").concat(transform[key], \") \");\n        if (key === \"z\")\n            transformHasZ = true;\n    }\n    if (!transformHasZ && enableHardwareAcceleration) {\n        transformString += \"translateZ(0)\";\n    }\n    else {\n        transformString = transformString.trim();\n    }\n    // If we have a custom `transform` template, pass our transform values and\n    // generated transformString to that before returning\n    if (transformTemplate) {\n        transformString = transformTemplate(transform, transformIsDefault ? \"\" : transformString);\n    }\n    else if (allowTransformNone && transformIsDefault) {\n        transformString = \"none\";\n    }\n    return transformString;\n}\n/**\n * Build a transformOrigin style. Uses the same defaults as the browser for\n * undefined origins.\n */\nfunction buildTransformOrigin(_a) {\n    var _b = _a.originX, originX = _b === void 0 ? \"50%\" : _b, _c = _a.originY, originY = _c === void 0 ? \"50%\" : _c, _d = _a.originZ, originZ = _d === void 0 ? 0 : _d;\n    return \"\".concat(originX, \" \").concat(originY, \" \").concat(originZ);\n}\n\nexport { buildTransform, buildTransformOrigin };\n","/**\n * Returns true if the provided key is a CSS variable\n */\nfunction isCSSVariable(key) {\n    return key.startsWith(\"--\");\n}\n\nexport { isCSSVariable };\n","/**\n * Provided a value and a ValueType, returns the value as that value type.\n */\nvar getValueAsType = function (value, type) {\n    return type && typeof value === \"number\"\n        ? type.transform(value)\n        : value;\n};\n\nexport { getValueAsType };\n","const clamp = (min, max) => (v) => Math.max(Math.min(v, max), min);\nconst sanitize = (v) => (v % 1 ? Number(v.toFixed(5)) : v);\nconst floatRegex = /(-)?([\\d]*\\.?[\\d])+/g;\nconst colorRegex = /(#[0-9a-f]{6}|#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2,3}\\s*\\/*\\s*[\\d\\.]+%?\\))/gi;\nconst singleColorRegex = /^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2,3}\\s*\\/*\\s*[\\d\\.]+%?\\))$/i;\nfunction isString(v) {\n    return typeof v === 'string';\n}\n\nexport { clamp, colorRegex, floatRegex, isString, sanitize, singleColorRegex };\n","import { clamp } from '../utils.mjs';\n\nconst number = {\n    test: (v) => typeof v === 'number',\n    parse: parseFloat,\n    transform: (v) => v,\n};\nconst alpha = Object.assign(Object.assign({}, number), { transform: clamp(0, 1) });\nconst scale = Object.assign(Object.assign({}, number), { default: 1 });\n\nexport { alpha, number, scale };\n","import { isString } from '../utils.mjs';\n\nconst createUnitType = (unit) => ({\n    test: (v) => isString(v) && v.endsWith(unit) && v.split(' ').length === 1,\n    parse: parseFloat,\n    transform: (v) => `${v}${unit}`,\n});\nconst degrees = createUnitType('deg');\nconst percent = createUnitType('%');\nconst px = createUnitType('px');\nconst vh = createUnitType('vh');\nconst vw = createUnitType('vw');\nconst progressPercentage = Object.assign(Object.assign({}, percent), { parse: (v) => percent.parse(v) / 100, transform: (v) => percent.transform(v * 100) });\n\nexport { degrees, percent, progressPercentage, px, vh, vw };\n","import { isString, singleColorRegex, floatRegex } from '../utils.mjs';\n\nconst isColorString = (type, testProp) => (v) => {\n    return Boolean((isString(v) && singleColorRegex.test(v) && v.startsWith(type)) ||\n        (testProp && Object.prototype.hasOwnProperty.call(v, testProp)));\n};\nconst splitColor = (aName, bName, cName) => (v) => {\n    if (!isString(v))\n        return v;\n    const [a, b, c, alpha] = v.match(floatRegex);\n    return {\n        [aName]: parseFloat(a),\n        [bName]: parseFloat(b),\n        [cName]: parseFloat(c),\n        alpha: alpha !== undefined ? parseFloat(alpha) : 1,\n    };\n};\n\nexport { isColorString, splitColor };\n","import { alpha } from '../numbers/index.mjs';\nimport { percent } from '../numbers/units.mjs';\nimport { sanitize } from '../utils.mjs';\nimport { isColorString, splitColor } from './utils.mjs';\n\nconst hsla = {\n    test: isColorString('hsl', 'hue'),\n    parse: splitColor('hue', 'saturation', 'lightness'),\n    transform: ({ hue, saturation, lightness, alpha: alpha$1 = 1 }) => {\n        return ('hsla(' +\n            Math.round(hue) +\n            ', ' +\n            percent.transform(sanitize(saturation)) +\n            ', ' +\n            percent.transform(sanitize(lightness)) +\n            ', ' +\n            sanitize(alpha.transform(alpha$1)) +\n            ')');\n    },\n};\n\nexport { hsla };\n","import { number, alpha } from '../numbers/index.mjs';\nimport { sanitize, clamp } from '../utils.mjs';\nimport { isColorString, splitColor } from './utils.mjs';\n\nconst clampRgbUnit = clamp(0, 255);\nconst rgbUnit = Object.assign(Object.assign({}, number), { transform: (v) => Math.round(clampRgbUnit(v)) });\nconst rgba = {\n    test: isColorString('rgb', 'red'),\n    parse: splitColor('red', 'green', 'blue'),\n    transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => 'rgba(' +\n        rgbUnit.transform(red) +\n        ', ' +\n        rgbUnit.transform(green) +\n        ', ' +\n        rgbUnit.transform(blue) +\n        ', ' +\n        sanitize(alpha.transform(alpha$1)) +\n        ')',\n};\n\nexport { rgbUnit, rgba };\n","import { rgba } from './rgba.mjs';\nimport { isColorString } from './utils.mjs';\n\nfunction parseHex(v) {\n    let r = '';\n    let g = '';\n    let b = '';\n    let a = '';\n    if (v.length > 5) {\n        r = v.substr(1, 2);\n        g = v.substr(3, 2);\n        b = v.substr(5, 2);\n        a = v.substr(7, 2);\n    }\n    else {\n        r = v.substr(1, 1);\n        g = v.substr(2, 1);\n        b = v.substr(3, 1);\n        a = v.substr(4, 1);\n        r += r;\n        g += g;\n        b += b;\n        a += a;\n    }\n    return {\n        red: parseInt(r, 16),\n        green: parseInt(g, 16),\n        blue: parseInt(b, 16),\n        alpha: a ? parseInt(a, 16) / 255 : 1,\n    };\n}\nconst hex = {\n    test: isColorString('#'),\n    parse: parseHex,\n    transform: rgba.transform,\n};\n\nexport { hex };\n","import { isString } from '../utils.mjs';\nimport { hex } from './hex.mjs';\nimport { hsla } from './hsla.mjs';\nimport { rgba } from './rgba.mjs';\n\nconst color = {\n    test: (v) => rgba.test(v) || hex.test(v) || hsla.test(v),\n    parse: (v) => {\n        if (rgba.test(v)) {\n            return rgba.parse(v);\n        }\n        else if (hsla.test(v)) {\n            return hsla.parse(v);\n        }\n        else {\n            return hex.parse(v);\n        }\n    },\n    transform: (v) => {\n        return isString(v)\n            ? v\n            : v.hasOwnProperty('red')\n                ? rgba.transform(v)\n                : hsla.transform(v);\n    },\n};\n\nexport { color };\n","import { color } from '../color/index.mjs';\nimport { number } from '../numbers/index.mjs';\nimport { isString, floatRegex, colorRegex, sanitize } from '../utils.mjs';\n\nconst colorToken = '${c}';\nconst numberToken = '${n}';\nfunction test(v) {\n    var _a, _b, _c, _d;\n    return (isNaN(v) &&\n        isString(v) &&\n        ((_b = (_a = v.match(floatRegex)) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) + ((_d = (_c = v.match(colorRegex)) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0) > 0);\n}\nfunction analyse(v) {\n    if (typeof v === 'number')\n        v = `${v}`;\n    const values = [];\n    let numColors = 0;\n    const colors = v.match(colorRegex);\n    if (colors) {\n        numColors = colors.length;\n        v = v.replace(colorRegex, colorToken);\n        values.push(...colors.map(color.parse));\n    }\n    const numbers = v.match(floatRegex);\n    if (numbers) {\n        v = v.replace(floatRegex, numberToken);\n        values.push(...numbers.map(number.parse));\n    }\n    return { values, numColors, tokenised: v };\n}\nfunction parse(v) {\n    return analyse(v).values;\n}\nfunction createTransformer(v) {\n    const { values, numColors, tokenised } = analyse(v);\n    const numValues = values.length;\n    return (v) => {\n        let output = tokenised;\n        for (let i = 0; i < numValues; i++) {\n            output = output.replace(i < numColors ? colorToken : numberToken, i < numColors ? color.transform(v[i]) : sanitize(v[i]));\n        }\n        return output;\n    };\n}\nconst convertNumbersToZero = (v) => typeof v === 'number' ? 0 : v;\nfunction getAnimatableNone(v) {\n    const parsed = parse(v);\n    const transformer = createTransformer(v);\n    return transformer(parsed.map(convertNumbersToZero));\n}\nconst complex = { test, parse, createTransformer, getAnimatableNone };\n\nexport { complex };\n","import { complex } from './index.mjs';\nimport { floatRegex } from '../utils.mjs';\n\nconst maxDefaults = new Set(['brightness', 'contrast', 'saturate', 'opacity']);\nfunction applyDefaultFilter(v) {\n    let [name, value] = v.slice(0, -1).split('(');\n    if (name === 'drop-shadow')\n        return v;\n    const [number] = value.match(floatRegex) || [];\n    if (!number)\n        return v;\n    const unit = value.replace(number, '');\n    let defaultValue = maxDefaults.has(name) ? 1 : 0;\n    if (number !== value)\n        defaultValue *= 100;\n    return name + '(' + defaultValue + unit + ')';\n}\nconst functionRegex = /([a-z-]*)\\(.*?\\)/g;\nconst filter = Object.assign(Object.assign({}, complex), { getAnimatableNone: (v) => {\n        const functions = v.match(functionRegex);\n        return functions ? functions.map(applyDefaultFilter).join(' ') : v;\n    } });\n\nexport { filter };\n","import { __assign } from 'tslib';\nimport { number } from 'style-value-types';\n\nvar int = __assign(__assign({}, number), { transform: Math.round });\n\nexport { int };\n","import { px, degrees, scale, alpha, progressPercentage } from 'style-value-types';\nimport { int } from './type-int.mjs';\n\nvar numberValueTypes = {\n    // Border props\n    borderWidth: px,\n    borderTopWidth: px,\n    borderRightWidth: px,\n    borderBottomWidth: px,\n    borderLeftWidth: px,\n    borderRadius: px,\n    radius: px,\n    borderTopLeftRadius: px,\n    borderTopRightRadius: px,\n    borderBottomRightRadius: px,\n    borderBottomLeftRadius: px,\n    // Positioning props\n    width: px,\n    maxWidth: px,\n    height: px,\n    maxHeight: px,\n    size: px,\n    top: px,\n    right: px,\n    bottom: px,\n    left: px,\n    // Spacing props\n    padding: px,\n    paddingTop: px,\n    paddingRight: px,\n    paddingBottom: px,\n    paddingLeft: px,\n    margin: px,\n    marginTop: px,\n    marginRight: px,\n    marginBottom: px,\n    marginLeft: px,\n    // Transform props\n    rotate: degrees,\n    rotateX: degrees,\n    rotateY: degrees,\n    rotateZ: degrees,\n    scale: scale,\n    scaleX: scale,\n    scaleY: scale,\n    scaleZ: scale,\n    skew: degrees,\n    skewX: degrees,\n    skewY: degrees,\n    distance: px,\n    translateX: px,\n    translateY: px,\n    translateZ: px,\n    x: px,\n    y: px,\n    z: px,\n    perspective: px,\n    transformPerspective: px,\n    opacity: alpha,\n    originX: progressPercentage,\n    originY: progressPercentage,\n    originZ: px,\n    // Misc\n    zIndex: int,\n    // SVG\n    fillOpacity: alpha,\n    strokeOpacity: alpha,\n    numOctaves: int,\n};\n\nexport { numberValueTypes };\n","import { buildTransform, buildTransformOrigin } from './build-transform.mjs';\nimport { isCSSVariable } from '../../dom/utils/is-css-variable.mjs';\nimport { isTransformProp, isTransformOriginProp } from './transform.mjs';\nimport { getValueAsType } from '../../dom/value-types/get-as-type.mjs';\nimport { numberValueTypes } from '../../dom/value-types/number.mjs';\n\nfunction buildHTMLStyles(state, latestValues, options, transformTemplate) {\n    var _a;\n    var style = state.style, vars = state.vars, transform = state.transform, transformKeys = state.transformKeys, transformOrigin = state.transformOrigin;\n    // Empty the transformKeys array. As we're throwing out refs to its items\n    // this might not be as cheap as suspected. Maybe using the array as a buffer\n    // with a manual incrementation would be better.\n    transformKeys.length = 0;\n    // Track whether we encounter any transform or transformOrigin values.\n    var hasTransform = false;\n    var hasTransformOrigin = false;\n    // Does the calculated transform essentially equal \"none\"?\n    var transformIsNone = true;\n    /**\n     * Loop over all our latest animated values and decide whether to handle them\n     * as a style or CSS variable.\n     *\n     * Transforms and transform origins are kept seperately for further processing.\n     */\n    for (var key in latestValues) {\n        var value = latestValues[key];\n        /**\n         * If this is a CSS variable we don't do any further processing.\n         */\n        if (isCSSVariable(key)) {\n            vars[key] = value;\n            continue;\n        }\n        // Convert the value to its default value type, ie 0 -> \"0px\"\n        var valueType = numberValueTypes[key];\n        var valueAsType = getValueAsType(value, valueType);\n        if (isTransformProp(key)) {\n            // If this is a transform, flag to enable further transform processing\n            hasTransform = true;\n            transform[key] = valueAsType;\n            transformKeys.push(key);\n            // If we already know we have a non-default transform, early return\n            if (!transformIsNone)\n                continue;\n            // Otherwise check to see if this is a default transform\n            if (value !== ((_a = valueType.default) !== null && _a !== void 0 ? _a : 0))\n                transformIsNone = false;\n        }\n        else if (isTransformOriginProp(key)) {\n            transformOrigin[key] = valueAsType;\n            // If this is a transform origin, flag and enable further transform-origin processing\n            hasTransformOrigin = true;\n        }\n        else {\n            style[key] = valueAsType;\n        }\n    }\n    if (hasTransform) {\n        style.transform = buildTransform(state, options, transformIsNone, transformTemplate);\n    }\n    else if (transformTemplate) {\n        style.transform = transformTemplate({}, \"\");\n    }\n    else if (!latestValues.transform && style.transform) {\n        style.transform = \"none\";\n    }\n    if (hasTransformOrigin) {\n        style.transformOrigin = buildTransformOrigin(transformOrigin);\n    }\n}\n\nexport { buildHTMLStyles };\n","var createHtmlRenderState = function () { return ({\n    style: {},\n    transform: {},\n    transformKeys: [],\n    transformOrigin: {},\n    vars: {},\n}); };\n\nexport { createHtmlRenderState };\n","/**\n * A list of all valid MotionProps.\n *\n * @privateRemarks\n * This doesn't throw if a `MotionProp` name is missing - it should.\n */\nvar validMotionProps = new Set([\n    \"initial\",\n    \"animate\",\n    \"exit\",\n    \"style\",\n    \"variants\",\n    \"transition\",\n    \"transformTemplate\",\n    \"transformValues\",\n    \"custom\",\n    \"inherit\",\n    \"layout\",\n    \"layoutId\",\n    \"layoutDependency\",\n    \"onLayoutAnimationStart\",\n    \"onLayoutAnimationComplete\",\n    \"onLayoutMeasure\",\n    \"onBeforeLayoutMeasure\",\n    \"onAnimationStart\",\n    \"onAnimationComplete\",\n    \"onUpdate\",\n    \"onDragStart\",\n    \"onDrag\",\n    \"onDragEnd\",\n    \"onMeasureDragConstraints\",\n    \"onDirectionLock\",\n    \"onDragTransitionEnd\",\n    \"drag\",\n    \"dragControls\",\n    \"dragListener\",\n    \"dragConstraints\",\n    \"dragDirectionLock\",\n    \"dragSnapToOrigin\",\n    \"_dragX\",\n    \"_dragY\",\n    \"dragElastic\",\n    \"dragMomentum\",\n    \"dragPropagation\",\n    \"dragTransition\",\n    \"whileDrag\",\n    \"onPan\",\n    \"onPanStart\",\n    \"onPanEnd\",\n    \"onPanSessionStart\",\n    \"onTap\",\n    \"onTapStart\",\n    \"onTapCancel\",\n    \"onHoverStart\",\n    \"onHoverEnd\",\n    \"whileFocus\",\n    \"whileTap\",\n    \"whileHover\",\n    \"whileInView\",\n    \"onViewportEnter\",\n    \"onViewportLeave\",\n    \"viewport\",\n    \"layoutScroll\",\n]);\n/**\n * Check whether a prop name is a valid `MotionProp` key.\n *\n * @param key - Name of the property to check\n * @returns `true` is key is a valid `MotionProp`.\n *\n * @public\n */\nfunction isValidMotionProp(key) {\n    return validMotionProps.has(key);\n}\n\nexport { isValidMotionProp };\n","import { isValidMotionProp } from '../../../motion/utils/valid-prop.mjs';\n\nvar shouldForward = function (key) { return !isValidMotionProp(key); };\nfunction loadExternalIsValidProp(isValidProp) {\n    if (!isValidProp)\n        return;\n    // Explicitly filter our events\n    shouldForward = function (key) {\n        return key.startsWith(\"on\") ? !isValidMotionProp(key) : isValidProp(key);\n    };\n}\n/**\n * Emotion and Styled Components both allow users to pass through arbitrary props to their components\n * to dynamically generate CSS. They both use the `@emotion/is-prop-valid` package to determine which\n * of these should be passed to the underlying DOM node.\n *\n * However, when styling a Motion component `styled(motion.div)`, both packages pass through *all* props\n * as it's seen as an arbitrary component rather than a DOM node. Motion only allows arbitrary props\n * passed through the `custom` prop so it doesn't *need* the payload or computational overhead of\n * `@emotion/is-prop-valid`, however to fix this problem we need to use it.\n *\n * By making it an optionalDependency we can offer this functionality only in the situations where it's\n * actually required.\n */\ntry {\n    /**\n     * We attempt to import this package but require won't be defined in esm environments, in that case\n     * isPropValid will have to be provided via `MotionContext`. In a 6.0.0 this should probably be removed\n     * in favour of explicit injection.\n     */\n    loadExternalIsValidProp(require(\"@emotion/is-prop-valid\").default);\n}\ncatch (_a) {\n    // We don't need to actually do anything here - the fallback is the existing `isPropValid`.\n}\nfunction filterProps(props, isDom, forwardMotionProps) {\n    var filteredProps = {};\n    for (var key in props) {\n        if (shouldForward(key) ||\n            (forwardMotionProps === true && isValidMotionProp(key)) ||\n            (!isDom && !isValidMotionProp(key)) ||\n            // If trying to use native HTML drag events, forward drag listeners\n            (props[\"draggable\"] && key.startsWith(\"onDrag\"))) {\n            filteredProps[key] = props[key];\n        }\n    }\n    return filteredProps;\n}\n\nexport { filterProps, loadExternalIsValidProp };\n","import { __assign } from 'tslib';\nimport { useMemo } from 'react';\nimport { copyRawValuesOnly } from '../html/use-props.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { createSvgRenderState } from './utils/create-render-state.mjs';\n\nfunction useSVGProps(props, visualState) {\n    var visualProps = useMemo(function () {\n        var state = createSvgRenderState();\n        buildSVGAttrs(state, visualState, { enableHardwareAcceleration: false }, props.transformTemplate);\n        return __assign(__assign({}, state.attrs), { style: __assign({}, state.style) });\n    }, [visualState]);\n    if (props.style) {\n        var rawStyles = {};\n        copyRawValuesOnly(rawStyles, props.style, props);\n        visualProps.style = __assign(__assign({}, rawStyles), visualProps.style);\n    }\n    return visualProps;\n}\n\nexport { useSVGProps };\n","import { px } from 'style-value-types';\n\nfunction calcOrigin(origin, offset, size) {\n    return typeof origin === \"string\"\n        ? origin\n        : px.transform(offset + size * origin);\n}\n/**\n * The SVG transform origin defaults are different to CSS and is less intuitive,\n * so we use the measured dimensions of the SVG to reconcile these.\n */\nfunction calcSVGTransformOrigin(dimensions, originX, originY) {\n    var pxOriginX = calcOrigin(originX, dimensions.x, dimensions.width);\n    var pxOriginY = calcOrigin(originY, dimensions.y, dimensions.height);\n    return \"\".concat(pxOriginX, \" \").concat(pxOriginY);\n}\n\nexport { calcSVGTransformOrigin };\n","import { px } from 'style-value-types';\n\nvar dashKeys = {\n    offset: \"stroke-dashoffset\",\n    array: \"stroke-dasharray\",\n};\nvar camelKeys = {\n    offset: \"strokeDashoffset\",\n    array: \"strokeDasharray\",\n};\n/**\n * Build SVG path properties. Uses the path's measured length to convert\n * our custom pathLength, pathSpacing and pathOffset into stroke-dashoffset\n * and stroke-dasharray attributes.\n *\n * This function is mutative to reduce per-frame GC.\n */\nfunction buildSVGPath(attrs, length, spacing, offset, useDashCase) {\n    if (spacing === void 0) { spacing = 1; }\n    if (offset === void 0) { offset = 0; }\n    if (useDashCase === void 0) { useDashCase = true; }\n    // Normalise path length by setting SVG attribute pathLength to 1\n    attrs.pathLength = 1;\n    // We use dash case when setting attributes directly to the DOM node and camel case\n    // when defining props on a React component.\n    var keys = useDashCase ? dashKeys : camelKeys;\n    // Build the dash offset\n    attrs[keys.offset] = px.transform(-offset);\n    // Build the dash array\n    var pathLength = px.transform(length);\n    var pathSpacing = px.transform(spacing);\n    attrs[keys.array] = \"\".concat(pathLength, \" \").concat(pathSpacing);\n}\n\nexport { buildSVGPath };\n","import { __rest } from 'tslib';\nimport { buildHTMLStyles } from '../../html/utils/build-styles.mjs';\nimport { calcSVGTransformOrigin } from './transform-origin.mjs';\nimport { buildSVGPath } from './path.mjs';\n\n/**\n * Build SVG visual attrbutes, like cx and style.transform\n */\nfunction buildSVGAttrs(state, _a, options, transformTemplate) {\n    var attrX = _a.attrX, attrY = _a.attrY, originX = _a.originX, originY = _a.originY, pathLength = _a.pathLength, _b = _a.pathSpacing, pathSpacing = _b === void 0 ? 1 : _b, _c = _a.pathOffset, pathOffset = _c === void 0 ? 0 : _c, \n    // This is object creation, which we try to avoid per-frame.\n    latest = __rest(_a, [\"attrX\", \"attrY\", \"originX\", \"originY\", \"pathLength\", \"pathSpacing\", \"pathOffset\"]);\n    buildHTMLStyles(state, latest, options, transformTemplate);\n    state.attrs = state.style;\n    state.style = {};\n    var attrs = state.attrs, style = state.style, dimensions = state.dimensions;\n    /**\n     * However, we apply transforms as CSS transforms. So if we detect a transform we take it from attrs\n     * and copy it into style.\n     */\n    if (attrs.transform) {\n        if (dimensions)\n            style.transform = attrs.transform;\n        delete attrs.transform;\n    }\n    // Parse transformOrigin\n    if (dimensions &&\n        (originX !== undefined || originY !== undefined || style.transform)) {\n        style.transformOrigin = calcSVGTransformOrigin(dimensions, originX !== undefined ? originX : 0.5, originY !== undefined ? originY : 0.5);\n    }\n    // Treat x/y not as shortcuts but as actual attributes\n    if (attrX !== undefined)\n        attrs.x = attrX;\n    if (attrY !== undefined)\n        attrs.y = attrY;\n    // Build SVG path if one has been defined\n    if (pathLength !== undefined) {\n        buildSVGPath(attrs, pathLength, pathSpacing, pathOffset, false);\n    }\n}\n\nexport { buildSVGAttrs };\n","import { __assign } from 'tslib';\nimport { createHtmlRenderState } from '../../html/utils/create-render-state.mjs';\n\nvar createSvgRenderState = function () { return (__assign(__assign({}, createHtmlRenderState()), { attrs: {} })); };\n\nexport { createSvgRenderState };\n","var CAMEL_CASE_PATTERN = /([a-z])([A-Z])/g;\nvar REPLACE_TEMPLATE = \"$1-$2\";\n/**\n * Convert camelCase to dash-case properties.\n */\nvar camelToDash = function (str) {\n    return str.replace(CAMEL_CASE_PATTERN, REPLACE_TEMPLATE).toLowerCase();\n};\n\nexport { camelToDash };\n","function renderHTML(element, _a, styleProp, projection) {\n    var style = _a.style, vars = _a.vars;\n    Object.assign(element.style, style, projection && projection.getProjectionStyles(styleProp));\n    // Loop over any CSS variables and assign those.\n    for (var key in vars) {\n        element.style.setProperty(key, vars[key]);\n    }\n}\n\nexport { renderHTML };\n","/**\n * A set of attribute names that are always read/written as camel case.\n */\nvar camelCaseAttributes = new Set([\n    \"baseFrequency\",\n    \"diffuseConstant\",\n    \"kernelMatrix\",\n    \"kernelUnitLength\",\n    \"keySplines\",\n    \"keyTimes\",\n    \"limitingConeAngle\",\n    \"markerHeight\",\n    \"markerWidth\",\n    \"numOctaves\",\n    \"targetX\",\n    \"targetY\",\n    \"surfaceScale\",\n    \"specularConstant\",\n    \"specularExponent\",\n    \"stdDeviation\",\n    \"tableValues\",\n    \"viewBox\",\n    \"gradientTransform\",\n    \"pathLength\",\n]);\n\nexport { camelCaseAttributes };\n","import { camelToDash } from '../../dom/utils/camel-to-dash.mjs';\nimport { renderHTML } from '../../html/utils/render.mjs';\nimport { camelCaseAttributes } from './camel-case-attrs.mjs';\n\nfunction renderSVG(element, renderState, _styleProp, projection) {\n    renderHTML(element, renderState, undefined, projection);\n    for (var key in renderState.attrs) {\n        element.setAttribute(!camelCaseAttributes.has(key) ? camelToDash(key) : key, renderState.attrs[key]);\n    }\n}\n\nexport { renderSVG };\n","import { isForcedMotionValue } from '../../../motion/utils/is-forced-motion-value.mjs';\nimport { isMotionValue } from '../../../value/utils/is-motion-value.mjs';\n\nfunction scrapeMotionValuesFromProps(props) {\n    var style = props.style;\n    var newValues = {};\n    for (var key in style) {\n        if (isMotionValue(style[key]) || isForcedMotionValue(key, props)) {\n            newValues[key] = style[key];\n        }\n    }\n    return newValues;\n}\n\nexport { scrapeMotionValuesFromProps };\n","import { isMotionValue } from '../../../value/utils/is-motion-value.mjs';\nimport { scrapeMotionValuesFromProps as scrapeMotionValuesFromProps$1 } from '../../html/utils/scrape-motion-values.mjs';\n\nfunction scrapeMotionValuesFromProps(props) {\n    var newValues = scrapeMotionValuesFromProps$1(props);\n    for (var key in props) {\n        if (isMotionValue(props[key])) {\n            var targetKey = key === \"x\" || key === \"y\" ? \"attr\" + key.toUpperCase() : key;\n            newValues[targetKey] = props[key];\n        }\n    }\n    return newValues;\n}\n\nexport { scrapeMotionValuesFromProps };\n","import { __rest } from 'tslib';\nimport { useContext } from 'react';\nimport { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { checkIfControllingVariants, checkIfVariantNode, resolveVariantFromProps } from '../../render/utils/variants.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { resolveMotionValue } from '../../value/utils/resolve-motion-value.mjs';\nimport { MotionContext } from '../../context/MotionContext/index.mjs';\n\nfunction makeState(_a, props, context, presenceContext) {\n    var scrapeMotionValuesFromProps = _a.scrapeMotionValuesFromProps, createRenderState = _a.createRenderState, onMount = _a.onMount;\n    var state = {\n        latestValues: makeLatestValues(props, context, presenceContext, scrapeMotionValuesFromProps),\n        renderState: createRenderState(),\n    };\n    if (onMount) {\n        state.mount = function (instance) { return onMount(props, instance, state); };\n    }\n    return state;\n}\nvar makeUseVisualState = function (config) {\n    return function (props, isStatic) {\n        var context = useContext(MotionContext);\n        var presenceContext = useContext(PresenceContext);\n        return isStatic\n            ? makeState(config, props, context, presenceContext)\n            : useConstant(function () {\n                return makeState(config, props, context, presenceContext);\n            });\n    };\n};\nfunction makeLatestValues(props, context, presenceContext, scrapeMotionValues) {\n    var values = {};\n    var blockInitialAnimation = (presenceContext === null || presenceContext === void 0 ? void 0 : presenceContext.initial) === false;\n    var motionValues = scrapeMotionValues(props);\n    for (var key in motionValues) {\n        values[key] = resolveMotionValue(motionValues[key]);\n    }\n    var initial = props.initial, animate = props.animate;\n    var isControllingVariants = checkIfControllingVariants(props);\n    var isVariantNode = checkIfVariantNode(props);\n    if (context &&\n        isVariantNode &&\n        !isControllingVariants &&\n        props.inherit !== false) {\n        initial !== null && initial !== void 0 ? initial : (initial = context.initial);\n        animate !== null && animate !== void 0 ? animate : (animate = context.animate);\n    }\n    var initialAnimationIsBlocked = blockInitialAnimation || initial === false;\n    var variantToSet = initialAnimationIsBlocked ? animate : initial;\n    if (variantToSet &&\n        typeof variantToSet !== \"boolean\" &&\n        !isAnimationControls(variantToSet)) {\n        var list = Array.isArray(variantToSet) ? variantToSet : [variantToSet];\n        list.forEach(function (definition) {\n            var resolved = resolveVariantFromProps(props, definition);\n            if (!resolved)\n                return;\n            var transitionEnd = resolved.transitionEnd; resolved.transition; var target = __rest(resolved, [\"transitionEnd\", \"transition\"]);\n            for (var key in target) {\n                var valueTarget = target[key];\n                if (Array.isArray(valueTarget)) {\n                    /**\n                     * Take final keyframe if the initial animation is blocked because\n                     * we want to initialise at the end of that blocked animation.\n                     */\n                    var index = initialAnimationIsBlocked\n                        ? valueTarget.length - 1\n                        : 0;\n                    valueTarget = valueTarget[index];\n                }\n                if (valueTarget !== null) {\n                    values[key] = valueTarget;\n                }\n            }\n            for (var key in transitionEnd)\n                values[key] = transitionEnd[key];\n        });\n    }\n    return values;\n}\n\nexport { makeUseVisualState };\n","function isAnimationControls(v) {\n    return typeof v === \"object\" && typeof v.start === \"function\";\n}\n\nexport { isAnimationControls };\n","var isKeyframesTarget = function (v) {\n    return Array.isArray(v);\n};\n\nexport { isKeyframesTarget };\n","import { isKeyframesTarget } from '../animation/utils/is-keyframes-target.mjs';\n\nvar isCustomValue = function (v) {\n    return Boolean(v && typeof v === \"object\" && v.mix && v.toValue);\n};\nvar resolveFinalValueInKeyframes = function (v) {\n    // TODO maybe throw if v.length - 1 is placeholder token?\n    return isKeyframesTarget(v) ? v[v.length - 1] || 0 : v;\n};\n\nexport { isCustomValue, resolveFinalValueInKeyframes };\n","import { isCustomValue } from '../../utils/resolve-value.mjs';\nimport { isMotionValue } from './is-motion-value.mjs';\n\n/**\n * If the provided value is a MotionValue, this returns the actual value, otherwise just the value itself\n *\n * TODO: Remove and move to library\n */\nfunction resolveMotionValue(value) {\n    var unwrappedValue = isMotionValue(value) ? value.get() : value;\n    return isCustomValue(unwrappedValue)\n        ? unwrappedValue.toValue()\n        : unwrappedValue;\n}\n\nexport { resolveMotionValue };\n","import { renderSVG } from './utils/render.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';\nimport { createSvgRenderState } from './utils/create-render-state.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\n\nvar svgMotionConfig = {\n    useVisualState: makeUseVisualState({\n        scrapeMotionValuesFromProps: scrapeMotionValuesFromProps,\n        createRenderState: createSvgRenderState,\n        onMount: function (props, instance, _a) {\n            var renderState = _a.renderState, latestValues = _a.latestValues;\n            try {\n                renderState.dimensions =\n                    typeof instance.getBBox ===\n                        \"function\"\n                        ? instance.getBBox()\n                        : instance.getBoundingClientRect();\n            }\n            catch (e) {\n                // Most likely trying to measure an unrendered element under Firefox\n                renderState.dimensions = {\n                    x: 0,\n                    y: 0,\n                    width: 0,\n                    height: 0,\n                };\n            }\n            buildSVGAttrs(renderState, latestValues, { enableHardwareAcceleration: false }, props.transformTemplate);\n            renderSVG(instance, renderState);\n        },\n    }),\n};\n\nexport { svgMotionConfig };\n","import { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { createHtmlRenderState } from './utils/create-render-state.mjs';\n\nvar htmlMotionConfig = {\n    useVisualState: makeUseVisualState({\n        scrapeMotionValuesFromProps: scrapeMotionValuesFromProps,\n        createRenderState: createHtmlRenderState,\n    }),\n};\n\nexport { htmlMotionConfig };\n","import { __assign } from 'tslib';\nimport { isSVGComponent } from './is-svg-component.mjs';\nimport { createUseRender } from '../use-render.mjs';\nimport { svgMotionConfig } from '../../svg/config-motion.mjs';\nimport { htmlMotionConfig } from '../../html/config-motion.mjs';\n\nfunction createDomMotionConfig(Component, _a, preloadedFeatures, createVisualElement, projectionNodeConstructor) {\n    var _b = _a.forwardMotionProps, forwardMotionProps = _b === void 0 ? false : _b;\n    var baseConfig = isSVGComponent(Component)\n        ? svgMotionConfig\n        : htmlMotionConfig;\n    return __assign(__assign({}, baseConfig), { preloadedFeatures: preloadedFeatures, useRender: createUseRender(forwardMotionProps), createVisualElement: createVisualElement, projectionNodeConstructor: projectionNodeConstructor, Component: Component });\n}\n\nexport { createDomMotionConfig };\n","var AnimationType;\n(function (AnimationType) {\n    AnimationType[\"Animate\"] = \"animate\";\n    AnimationType[\"Hover\"] = \"whileHover\";\n    AnimationType[\"Tap\"] = \"whileTap\";\n    AnimationType[\"Drag\"] = \"whileDrag\";\n    AnimationType[\"Focus\"] = \"whileFocus\";\n    AnimationType[\"InView\"] = \"whileInView\";\n    AnimationType[\"Exit\"] = \"exit\";\n})(AnimationType || (AnimationType = {}));\n\nexport { AnimationType };\n","import { useEffect } from 'react';\n\nfunction addDomEvent(target, eventName, handler, options) {\n    if (options === void 0) { options = { passive: true }; }\n    target.addEventListener(eventName, handler, options);\n    return function () { return target.removeEventListener(eventName, handler); };\n}\n/**\n * Attaches an event listener directly to the provided DOM element.\n *\n * Bypassing React's event system can be desirable, for instance when attaching non-passive\n * event handlers.\n *\n * ```jsx\n * const ref = useRef(null)\n *\n * useDomEvent(ref, 'wheel', onWheel, { passive: false })\n *\n * return <div ref={ref} />\n * ```\n *\n * @param ref - React.RefObject that's been provided to the element you want to bind the listener to.\n * @param eventName - Name of the event you want listen for.\n * @param handler - Function to fire when receiving the event.\n * @param options - Options to pass to `Event.addEventListener`.\n *\n * @public\n */\nfunction useDomEvent(ref, eventName, handler, options) {\n    useEffect(function () {\n        var element = ref.current;\n        if (handler && element) {\n            return addDomEvent(element, eventName, handler, options);\n        }\n    }, [ref, eventName, handler, options]);\n}\n\nexport { addDomEvent, useDomEvent };\n","import { AnimationType } from '../render/utils/types.mjs';\nimport { useDomEvent } from '../events/use-dom-event.mjs';\n\n/**\n *\n * @param props\n * @param ref\n * @internal\n */\nfunction useFocusGesture(_a) {\n    var whileFocus = _a.whileFocus, visualElement = _a.visualElement;\n    var onFocus = function () {\n        var _a;\n        (_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(AnimationType.Focus, true);\n    };\n    var onBlur = function () {\n        var _a;\n        (_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(AnimationType.Focus, false);\n    };\n    useDomEvent(visualElement, \"focus\", whileFocus ? onFocus : undefined);\n    useDomEvent(visualElement, \"blur\", whileFocus ? onBlur : undefined);\n}\n\nexport { useFocusGesture };\n","function isMouseEvent(event) {\n    // PointerEvent inherits from MouseEvent so we can't use a straight instanceof check.\n    if (typeof PointerEvent !== \"undefined\" && event instanceof PointerEvent) {\n        return !!(event.pointerType === \"mouse\");\n    }\n    return event instanceof MouseEvent;\n}\nfunction isTouchEvent(event) {\n    var hasTouches = !!event.touches;\n    return hasTouches;\n}\n\nexport { isMouseEvent, isTouchEvent };\n","import { isTouchEvent } from '../gestures/utils/event-type.mjs';\n\n/**\n * Filters out events not attached to the primary pointer (currently left mouse button)\n * @param eventHandler\n */\nfunction filterPrimaryPointer(eventHandler) {\n    return function (event) {\n        var isMouseEvent = event instanceof MouseEvent;\n        var isPrimaryPointer = !isMouseEvent ||\n            (isMouseEvent && event.button === 0);\n        if (isPrimaryPointer) {\n            eventHandler(event);\n        }\n    };\n}\nvar defaultPagePoint = { pageX: 0, pageY: 0 };\nfunction pointFromTouch(e, pointType) {\n    if (pointType === void 0) { pointType = \"page\"; }\n    var primaryTouch = e.touches[0] || e.changedTouches[0];\n    var point = primaryTouch || defaultPagePoint;\n    return {\n        x: point[pointType + \"X\"],\n        y: point[pointType + \"Y\"],\n    };\n}\nfunction pointFromMouse(point, pointType) {\n    if (pointType === void 0) { pointType = \"page\"; }\n    return {\n        x: point[pointType + \"X\"],\n        y: point[pointType + \"Y\"],\n    };\n}\nfunction extractEventInfo(event, pointType) {\n    if (pointType === void 0) { pointType = \"page\"; }\n    return {\n        point: isTouchEvent(event)\n            ? pointFromTouch(event, pointType)\n            : pointFromMouse(event, pointType),\n    };\n}\nvar wrapHandler = function (handler, shouldFilterPrimaryPointer) {\n    if (shouldFilterPrimaryPointer === void 0) { shouldFilterPrimaryPointer = false; }\n    var listener = function (event) {\n        return handler(event, extractEventInfo(event));\n    };\n    return shouldFilterPrimaryPointer\n        ? filterPrimaryPointer(listener)\n        : listener;\n};\n\nexport { extractEventInfo, wrapHandler };\n","import { isBrowser } from '../utils/is-browser.mjs';\n\n// We check for event support via functions in case they've been mocked by a testing suite.\nvar supportsPointerEvents = function () {\n    return isBrowser && window.onpointerdown === null;\n};\nvar supportsTouchEvents = function () {\n    return isBrowser && window.ontouchstart === null;\n};\nvar supportsMouseEvents = function () {\n    return isBrowser && window.onmousedown === null;\n};\n\nexport { supportsMouseEvents, supportsPointerEvents, supportsTouchEvents };\n","import { addDomEvent, useDomEvent } from './use-dom-event.mjs';\nimport { wrapHandler } from './event-info.mjs';\nimport { supportsPointerEvents, supportsTouchEvents, supportsMouseEvents } from './utils.mjs';\n\nvar mouseEventNames = {\n    pointerdown: \"mousedown\",\n    pointermove: \"mousemove\",\n    pointerup: \"mouseup\",\n    pointercancel: \"mousecancel\",\n    pointerover: \"mouseover\",\n    pointerout: \"mouseout\",\n    pointerenter: \"mouseenter\",\n    pointerleave: \"mouseleave\",\n};\nvar touchEventNames = {\n    pointerdown: \"touchstart\",\n    pointermove: \"touchmove\",\n    pointerup: \"touchend\",\n    pointercancel: \"touchcancel\",\n};\nfunction getPointerEventName(name) {\n    if (supportsPointerEvents()) {\n        return name;\n    }\n    else if (supportsTouchEvents()) {\n        return touchEventNames[name];\n    }\n    else if (supportsMouseEvents()) {\n        return mouseEventNames[name];\n    }\n    return name;\n}\nfunction addPointerEvent(target, eventName, handler, options) {\n    return addDomEvent(target, getPointerEventName(eventName), wrapHandler(handler, eventName === \"pointerdown\"), options);\n}\nfunction usePointerEvent(ref, eventName, handler, options) {\n    return useDomEvent(ref, getPointerEventName(eventName), handler && wrapHandler(handler, eventName === \"pointerdown\"), options);\n}\n\nexport { addPointerEvent, usePointerEvent };\n","function createLock(name) {\n    var lock = null;\n    return function () {\n        var openLock = function () {\n            lock = null;\n        };\n        if (lock === null) {\n            lock = name;\n            return openLock;\n        }\n        return false;\n    };\n}\nvar globalHorizontalLock = createLock(\"dragHorizontal\");\nvar globalVerticalLock = createLock(\"dragVertical\");\nfunction getGlobalLock(drag) {\n    var lock = false;\n    if (drag === \"y\") {\n        lock = globalVerticalLock();\n    }\n    else if (drag === \"x\") {\n        lock = globalHorizontalLock();\n    }\n    else {\n        var openHorizontal_1 = globalHorizontalLock();\n        var openVertical_1 = globalVerticalLock();\n        if (openHorizontal_1 && openVertical_1) {\n            lock = function () {\n                openHorizontal_1();\n                openVertical_1();\n            };\n        }\n        else {\n            // Release the locks because we don't use them\n            if (openHorizontal_1)\n                openHorizontal_1();\n            if (openVertical_1)\n                openVertical_1();\n        }\n    }\n    return lock;\n}\nfunction isDragActive() {\n    // Check the gesture lock - if we get it, it means no drag gesture is active\n    // and we can safely fire the tap gesture.\n    var openGestureLock = getGlobalLock(true);\n    if (!openGestureLock)\n        return true;\n    openGestureLock();\n    return false;\n}\n\nexport { createLock, getGlobalLock, isDragActive };\n","import { isMouseEvent } from './utils/event-type.mjs';\nimport { AnimationType } from '../render/utils/types.mjs';\nimport { usePointerEvent } from '../events/use-pointer-event.mjs';\nimport { isDragActive } from './drag/utils/lock.mjs';\n\nfunction createHoverEvent(visualElement, isActive, callback) {\n    return function (event, info) {\n        var _a;\n        if (!isMouseEvent(event) || isDragActive())\n            return;\n        /**\n         * Ensure we trigger animations before firing event callback\n         */\n        (_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(AnimationType.Hover, isActive);\n        callback === null || callback === void 0 ? void 0 : callback(event, info);\n    };\n}\nfunction useHoverGesture(_a) {\n    var onHoverStart = _a.onHoverStart, onHoverEnd = _a.onHoverEnd, whileHover = _a.whileHover, visualElement = _a.visualElement;\n    usePointerEvent(visualElement, \"pointerenter\", onHoverStart || whileHover\n        ? createHoverEvent(visualElement, true, onHoverStart)\n        : undefined, { passive: !onHoverStart });\n    usePointerEvent(visualElement, \"pointerleave\", onHoverEnd || whileHover\n        ? createHoverEvent(visualElement, false, onHoverEnd)\n        : undefined, { passive: !onHoverEnd });\n}\n\nexport { useHoverGesture };\n","import { useRef } from 'react';\nimport { isNodeOrChild } from './utils/is-node-or-child.mjs';\nimport { usePointerEvent, addPointerEvent } from '../events/use-pointer-event.mjs';\nimport { useUnmountEffect } from '../utils/use-unmount-effect.mjs';\nimport { pipe } from 'popmotion';\nimport { AnimationType } from '../render/utils/types.mjs';\nimport { isDragActive } from './drag/utils/lock.mjs';\n\n/**\n * @param handlers -\n * @internal\n */\nfunction useTapGesture(_a) {\n    var onTap = _a.onTap, onTapStart = _a.onTapStart, onTapCancel = _a.onTapCancel, whileTap = _a.whileTap, visualElement = _a.visualElement;\n    var hasPressListeners = onTap || onTapStart || onTapCancel || whileTap;\n    var isPressing = useRef(false);\n    var cancelPointerEndListeners = useRef(null);\n    /**\n     * Only set listener to passive if there are no external listeners.\n     */\n    var eventOptions = {\n        passive: !(onTapStart || onTap || onTapCancel || onPointerDown),\n    };\n    function removePointerEndListener() {\n        var _a;\n        (_a = cancelPointerEndListeners.current) === null || _a === void 0 ? void 0 : _a.call(cancelPointerEndListeners);\n        cancelPointerEndListeners.current = null;\n    }\n    function checkPointerEnd() {\n        var _a;\n        removePointerEndListener();\n        isPressing.current = false;\n        (_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(AnimationType.Tap, false);\n        return !isDragActive();\n    }\n    function onPointerUp(event, info) {\n        if (!checkPointerEnd())\n            return;\n        /**\n         * We only count this as a tap gesture if the event.target is the same\n         * as, or a child of, this component's element\n         */\n        !isNodeOrChild(visualElement.getInstance(), event.target)\n            ? onTapCancel === null || onTapCancel === void 0 ? void 0 : onTapCancel(event, info)\n            : onTap === null || onTap === void 0 ? void 0 : onTap(event, info);\n    }\n    function onPointerCancel(event, info) {\n        if (!checkPointerEnd())\n            return;\n        onTapCancel === null || onTapCancel === void 0 ? void 0 : onTapCancel(event, info);\n    }\n    function onPointerDown(event, info) {\n        var _a;\n        removePointerEndListener();\n        if (isPressing.current)\n            return;\n        isPressing.current = true;\n        cancelPointerEndListeners.current = pipe(addPointerEvent(window, \"pointerup\", onPointerUp, eventOptions), addPointerEvent(window, \"pointercancel\", onPointerCancel, eventOptions));\n        /**\n         * Ensure we trigger animations before firing event callback\n         */\n        (_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(AnimationType.Tap, true);\n        onTapStart === null || onTapStart === void 0 ? void 0 : onTapStart(event, info);\n    }\n    usePointerEvent(visualElement, \"pointerdown\", hasPressListeners ? onPointerDown : undefined, eventOptions);\n    useUnmountEffect(removePointerEndListener);\n}\n\nexport { useTapGesture };\n","/**\n * Recursively traverse up the tree to check whether the provided child node\n * is the parent or a descendant of it.\n *\n * @param parent - Element to find\n * @param child - Element to test against parent\n */\nvar isNodeOrChild = function (parent, child) {\n    if (!child) {\n        return false;\n    }\n    else if (parent === child) {\n        return true;\n    }\n    else {\n        return isNodeOrChild(parent, child.parentElement);\n    }\n};\n\nexport { isNodeOrChild };\n","import { useEffect } from 'react';\n\nfunction useUnmountEffect(callback) {\n    return useEffect(function () { return function () { return callback(); }; }, []);\n}\n\nexport { useUnmountEffect };\n","const clamp = (min, max, v) => Math.min(Math.max(v, min), max);\n\nexport { clamp };\n","import { warning } from 'hey-listen';\nimport { clamp } from '../../utils/clamp.mjs';\n\nconst safeMin = 0.001;\nconst minDuration = 0.01;\nconst maxDuration = 10.0;\nconst minDamping = 0.05;\nconst maxDamping = 1;\nfunction findSpring({ duration = 800, bounce = 0.25, velocity = 0, mass = 1, }) {\n    let envelope;\n    let derivative;\n    warning(duration <= maxDuration * 1000, \"Spring duration must be 10 seconds or less\");\n    let dampingRatio = 1 - bounce;\n    dampingRatio = clamp(minDamping, maxDamping, dampingRatio);\n    duration = clamp(minDuration, maxDuration, duration / 1000);\n    if (dampingRatio < 1) {\n        envelope = (undampedFreq) => {\n            const exponentialDecay = undampedFreq * dampingRatio;\n            const delta = exponentialDecay * duration;\n            const a = exponentialDecay - velocity;\n            const b = calcAngularFreq(undampedFreq, dampingRatio);\n            const c = Math.exp(-delta);\n            return safeMin - (a / b) * c;\n        };\n        derivative = (undampedFreq) => {\n            const exponentialDecay = undampedFreq * dampingRatio;\n            const delta = exponentialDecay * duration;\n            const d = delta * velocity + velocity;\n            const e = Math.pow(dampingRatio, 2) * Math.pow(undampedFreq, 2) * duration;\n            const f = Math.exp(-delta);\n            const g = calcAngularFreq(Math.pow(undampedFreq, 2), dampingRatio);\n            const factor = -envelope(undampedFreq) + safeMin > 0 ? -1 : 1;\n            return (factor * ((d - e) * f)) / g;\n        };\n    }\n    else {\n        envelope = (undampedFreq) => {\n            const a = Math.exp(-undampedFreq * duration);\n            const b = (undampedFreq - velocity) * duration + 1;\n            return -safeMin + a * b;\n        };\n        derivative = (undampedFreq) => {\n            const a = Math.exp(-undampedFreq * duration);\n            const b = (velocity - undampedFreq) * (duration * duration);\n            return a * b;\n        };\n    }\n    const initialGuess = 5 / duration;\n    const undampedFreq = approximateRoot(envelope, derivative, initialGuess);\n    duration = duration * 1000;\n    if (isNaN(undampedFreq)) {\n        return {\n            stiffness: 100,\n            damping: 10,\n            duration,\n        };\n    }\n    else {\n        const stiffness = Math.pow(undampedFreq, 2) * mass;\n        return {\n            stiffness,\n            damping: dampingRatio * 2 * Math.sqrt(mass * stiffness),\n            duration,\n        };\n    }\n}\nconst rootIterations = 12;\nfunction approximateRoot(envelope, derivative, initialGuess) {\n    let result = initialGuess;\n    for (let i = 1; i < rootIterations; i++) {\n        result = result - envelope(result) / derivative(result);\n    }\n    return result;\n}\nfunction calcAngularFreq(undampedFreq, dampingRatio) {\n    return undampedFreq * Math.sqrt(1 - dampingRatio * dampingRatio);\n}\n\nexport { calcAngularFreq, findSpring, maxDamping, maxDuration, minDamping, minDuration };\n","import { __rest } from 'tslib';\nimport { findSpring, calcAngularFreq } from '../utils/find-spring.mjs';\n\nconst durationKeys = [\"duration\", \"bounce\"];\nconst physicsKeys = [\"stiffness\", \"damping\", \"mass\"];\nfunction isSpringType(options, keys) {\n    return keys.some((key) => options[key] !== undefined);\n}\nfunction getSpringOptions(options) {\n    let springOptions = Object.assign({ velocity: 0.0, stiffness: 100, damping: 10, mass: 1.0, isResolvedFromDuration: false }, options);\n    if (!isSpringType(options, physicsKeys) &&\n        isSpringType(options, durationKeys)) {\n        const derived = findSpring(options);\n        springOptions = Object.assign(Object.assign(Object.assign({}, springOptions), derived), { velocity: 0.0, mass: 1.0 });\n        springOptions.isResolvedFromDuration = true;\n    }\n    return springOptions;\n}\nfunction spring(_a) {\n    var { from = 0.0, to = 1.0, restSpeed = 2, restDelta } = _a, options = __rest(_a, [\"from\", \"to\", \"restSpeed\", \"restDelta\"]);\n    const state = { done: false, value: from };\n    let { stiffness, damping, mass, velocity, duration, isResolvedFromDuration, } = getSpringOptions(options);\n    let resolveSpring = zero;\n    let resolveVelocity = zero;\n    function createSpring() {\n        const initialVelocity = velocity ? -(velocity / 1000) : 0.0;\n        const initialDelta = to - from;\n        const dampingRatio = damping / (2 * Math.sqrt(stiffness * mass));\n        const undampedAngularFreq = Math.sqrt(stiffness / mass) / 1000;\n        if (restDelta === undefined) {\n            restDelta = Math.min(Math.abs(to - from) / 100, 0.4);\n        }\n        if (dampingRatio < 1) {\n            const angularFreq = calcAngularFreq(undampedAngularFreq, dampingRatio);\n            resolveSpring = (t) => {\n                const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n                return (to -\n                    envelope *\n                        (((initialVelocity +\n                            dampingRatio * undampedAngularFreq * initialDelta) /\n                            angularFreq) *\n                            Math.sin(angularFreq * t) +\n                            initialDelta * Math.cos(angularFreq * t)));\n            };\n            resolveVelocity = (t) => {\n                const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n                return (dampingRatio *\n                    undampedAngularFreq *\n                    envelope *\n                    ((Math.sin(angularFreq * t) *\n                        (initialVelocity +\n                            dampingRatio *\n                                undampedAngularFreq *\n                                initialDelta)) /\n                        angularFreq +\n                        initialDelta * Math.cos(angularFreq * t)) -\n                    envelope *\n                        (Math.cos(angularFreq * t) *\n                            (initialVelocity +\n                                dampingRatio *\n                                    undampedAngularFreq *\n                                    initialDelta) -\n                            angularFreq *\n                                initialDelta *\n                                Math.sin(angularFreq * t)));\n            };\n        }\n        else if (dampingRatio === 1) {\n            resolveSpring = (t) => to -\n                Math.exp(-undampedAngularFreq * t) *\n                    (initialDelta +\n                        (initialVelocity + undampedAngularFreq * initialDelta) *\n                            t);\n        }\n        else {\n            const dampedAngularFreq = undampedAngularFreq * Math.sqrt(dampingRatio * dampingRatio - 1);\n            resolveSpring = (t) => {\n                const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n                const freqForT = Math.min(dampedAngularFreq * t, 300);\n                return (to -\n                    (envelope *\n                        ((initialVelocity +\n                            dampingRatio * undampedAngularFreq * initialDelta) *\n                            Math.sinh(freqForT) +\n                            dampedAngularFreq *\n                                initialDelta *\n                                Math.cosh(freqForT))) /\n                        dampedAngularFreq);\n            };\n        }\n    }\n    createSpring();\n    return {\n        next: (t) => {\n            const current = resolveSpring(t);\n            if (!isResolvedFromDuration) {\n                const currentVelocity = resolveVelocity(t) * 1000;\n                const isBelowVelocityThreshold = Math.abs(currentVelocity) <= restSpeed;\n                const isBelowDisplacementThreshold = Math.abs(to - current) <= restDelta;\n                state.done =\n                    isBelowVelocityThreshold && isBelowDisplacementThreshold;\n            }\n            else {\n                state.done = t >= duration;\n            }\n            state.value = state.done ? to : current;\n            return state;\n        },\n        flipTarget: () => {\n            velocity = -velocity;\n            [from, to] = [to, from];\n            createSpring();\n        },\n    };\n}\nspring.needsInterpolation = (a, b) => typeof a === \"string\" || typeof b === \"string\";\nconst zero = (_t) => 0;\n\nexport { spring };\n","const progress = (from, to, value) => {\n    const toFromDifference = to - from;\n    return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;\n};\n\nexport { progress };\n","const mix = (from, to, progress) => -progress * from + progress * to + from;\n\nexport { mix };\n","function hueToRgb(p, q, t) {\n    if (t < 0)\n        t += 1;\n    if (t > 1)\n        t -= 1;\n    if (t < 1 / 6)\n        return p + (q - p) * 6 * t;\n    if (t < 1 / 2)\n        return q;\n    if (t < 2 / 3)\n        return p + (q - p) * (2 / 3 - t) * 6;\n    return p;\n}\nfunction hslaToRgba({ hue, saturation, lightness, alpha }) {\n    hue /= 360;\n    saturation /= 100;\n    lightness /= 100;\n    let red = 0;\n    let green = 0;\n    let blue = 0;\n    if (!saturation) {\n        red = green = blue = lightness;\n    }\n    else {\n        const q = lightness < 0.5\n            ? lightness * (1 + saturation)\n            : lightness + saturation - lightness * saturation;\n        const p = 2 * lightness - q;\n        red = hueToRgb(p, q, hue + 1 / 3);\n        green = hueToRgb(p, q, hue);\n        blue = hueToRgb(p, q, hue - 1 / 3);\n    }\n    return {\n        red: Math.round(red * 255),\n        green: Math.round(green * 255),\n        blue: Math.round(blue * 255),\n        alpha,\n    };\n}\n\nexport { hslaToRgba };\n","import { mix } from './mix.mjs';\nimport { hsla, rgba, hex } from 'style-value-types';\nimport { invariant } from 'hey-listen';\nimport { hslaToRgba } from './hsla-to-rgba.mjs';\n\nconst mixLinearColor = (from, to, v) => {\n    const fromExpo = from * from;\n    const toExpo = to * to;\n    return Math.sqrt(Math.max(0, v * (toExpo - fromExpo) + fromExpo));\n};\nconst colorTypes = [hex, rgba, hsla];\nconst getColorType = (v) => colorTypes.find((type) => type.test(v));\nconst notAnimatable = (color) => `'${color}' is not an animatable color. Use the equivalent color code instead.`;\nconst mixColor = (from, to) => {\n    let fromColorType = getColorType(from);\n    let toColorType = getColorType(to);\n    invariant(!!fromColorType, notAnimatable(from));\n    invariant(!!toColorType, notAnimatable(to));\n    let fromColor = fromColorType.parse(from);\n    let toColor = toColorType.parse(to);\n    if (fromColorType === hsla) {\n        fromColor = hslaToRgba(fromColor);\n        fromColorType = rgba;\n    }\n    if (toColorType === hsla) {\n        toColor = hslaToRgba(toColor);\n        toColorType = rgba;\n    }\n    const blended = Object.assign({}, fromColor);\n    return (v) => {\n        for (const key in blended) {\n            if (key !== \"alpha\") {\n                blended[key] = mixLinearColor(fromColor[key], toColor[key], v);\n            }\n        }\n        blended.alpha = mix(fromColor.alpha, toColor.alpha, v);\n        return fromColorType.transform(blended);\n    };\n};\n\nexport { mixColor, mixLinearColor };\n","const zeroPoint = {\n    x: 0,\n    y: 0,\n    z: 0\n};\nconst isNum = (v) => typeof v === 'number';\n\nexport { isNum, zeroPoint };\n","const combineFunctions = (a, b) => (v) => b(a(v));\nconst pipe = (...transformers) => transformers.reduce(combineFunctions);\n\nexport { pipe };\n","import { complex, color } from 'style-value-types';\nimport { mix } from './mix.mjs';\nimport { mixColor } from './mix-color.mjs';\nimport { isNum } from './inc.mjs';\nimport { pipe } from './pipe.mjs';\nimport { warning } from 'hey-listen';\n\nfunction getMixer(origin, target) {\n    if (isNum(origin)) {\n        return (v) => mix(origin, target, v);\n    }\n    else if (color.test(origin)) {\n        return mixColor(origin, target);\n    }\n    else {\n        return mixComplex(origin, target);\n    }\n}\nconst mixArray = (from, to) => {\n    const output = [...from];\n    const numValues = output.length;\n    const blendValue = from.map((fromThis, i) => getMixer(fromThis, to[i]));\n    return (v) => {\n        for (let i = 0; i < numValues; i++) {\n            output[i] = blendValue[i](v);\n        }\n        return output;\n    };\n};\nconst mixObject = (origin, target) => {\n    const output = Object.assign(Object.assign({}, origin), target);\n    const blendValue = {};\n    for (const key in output) {\n        if (origin[key] !== undefined && target[key] !== undefined) {\n            blendValue[key] = getMixer(origin[key], target[key]);\n        }\n    }\n    return (v) => {\n        for (const key in blendValue) {\n            output[key] = blendValue[key](v);\n        }\n        return output;\n    };\n};\nfunction analyse(value) {\n    const parsed = complex.parse(value);\n    const numValues = parsed.length;\n    let numNumbers = 0;\n    let numRGB = 0;\n    let numHSL = 0;\n    for (let i = 0; i < numValues; i++) {\n        if (numNumbers || typeof parsed[i] === \"number\") {\n            numNumbers++;\n        }\n        else {\n            if (parsed[i].hue !== undefined) {\n                numHSL++;\n            }\n            else {\n                numRGB++;\n            }\n        }\n    }\n    return { parsed, numNumbers, numRGB, numHSL };\n}\nconst mixComplex = (origin, target) => {\n    const template = complex.createTransformer(target);\n    const originStats = analyse(origin);\n    const targetStats = analyse(target);\n    const canInterpolate = originStats.numHSL === targetStats.numHSL &&\n        originStats.numRGB === targetStats.numRGB &&\n        originStats.numNumbers >= targetStats.numNumbers;\n    if (canInterpolate) {\n        return pipe(mixArray(originStats.parsed, targetStats.parsed), template);\n    }\n    else {\n        warning(true, `Complex values '${origin}' and '${target}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`);\n        return (p) => `${p > 0 ? target : origin}`;\n    }\n};\n\nexport { mixArray, mixComplex, mixObject };\n","import { progress } from './progress.mjs';\nimport { mix } from './mix.mjs';\nimport { mixColor } from './mix-color.mjs';\nimport { mixComplex, mixArray, mixObject } from './mix-complex.mjs';\nimport { color } from 'style-value-types';\nimport { clamp } from './clamp.mjs';\nimport { pipe } from './pipe.mjs';\nimport { invariant } from 'hey-listen';\n\nconst mixNumber = (from, to) => (p) => mix(from, to, p);\nfunction detectMixerFactory(v) {\n    if (typeof v === 'number') {\n        return mixNumber;\n    }\n    else if (typeof v === 'string') {\n        if (color.test(v)) {\n            return mixColor;\n        }\n        else {\n            return mixComplex;\n        }\n    }\n    else if (Array.isArray(v)) {\n        return mixArray;\n    }\n    else if (typeof v === 'object') {\n        return mixObject;\n    }\n}\nfunction createMixers(output, ease, customMixer) {\n    const mixers = [];\n    const mixerFactory = customMixer || detectMixerFactory(output[0]);\n    const numMixers = output.length - 1;\n    for (let i = 0; i < numMixers; i++) {\n        let mixer = mixerFactory(output[i], output[i + 1]);\n        if (ease) {\n            const easingFunction = Array.isArray(ease) ? ease[i] : ease;\n            mixer = pipe(easingFunction, mixer);\n        }\n        mixers.push(mixer);\n    }\n    return mixers;\n}\nfunction fastInterpolate([from, to], [mixer]) {\n    return (v) => mixer(progress(from, to, v));\n}\nfunction slowInterpolate(input, mixers) {\n    const inputLength = input.length;\n    const lastInputIndex = inputLength - 1;\n    return (v) => {\n        let mixerIndex = 0;\n        let foundMixerIndex = false;\n        if (v <= input[0]) {\n            foundMixerIndex = true;\n        }\n        else if (v >= input[lastInputIndex]) {\n            mixerIndex = lastInputIndex - 1;\n            foundMixerIndex = true;\n        }\n        if (!foundMixerIndex) {\n            let i = 1;\n            for (; i < inputLength; i++) {\n                if (input[i] > v || i === lastInputIndex) {\n                    break;\n                }\n            }\n            mixerIndex = i - 1;\n        }\n        const progressInRange = progress(input[mixerIndex], input[mixerIndex + 1], v);\n        return mixers[mixerIndex](progressInRange);\n    };\n}\nfunction interpolate(input, output, { clamp: isClamp = true, ease, mixer } = {}) {\n    const inputLength = input.length;\n    invariant(inputLength === output.length, 'Both input and output ranges must be the same length');\n    invariant(!ease || !Array.isArray(ease) || ease.length === inputLength - 1, 'Array of easing functions must be of length `input.length - 1`, as it applies to the transitions **between** the defined values.');\n    if (input[0] > input[inputLength - 1]) {\n        input = [].concat(input);\n        output = [].concat(output);\n        input.reverse();\n        output.reverse();\n    }\n    const mixers = createMixers(output, ease, mixer);\n    const interpolator = inputLength === 2\n        ? fastInterpolate(input, mixers)\n        : slowInterpolate(input, mixers);\n    return isClamp\n        ? (v) => interpolator(clamp(input[0], input[inputLength - 1], v))\n        : interpolator;\n}\n\nexport { interpolate };\n","const reverseEasing = easing => p => 1 - easing(1 - p);\nconst mirrorEasing = easing => p => p <= 0.5 ? easing(2 * p) / 2 : (2 - easing(2 * (1 - p))) / 2;\nconst createExpoIn = (power) => p => Math.pow(p, power);\nconst createBackIn = (power) => p => p * p * ((power + 1) * p - power);\nconst createAnticipate = (power) => {\n    const backEasing = createBackIn(power);\n    return p => (p *= 2) < 1\n        ? 0.5 * backEasing(p)\n        : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));\n};\n\nexport { createAnticipate, createBackIn, createExpoIn, mirrorEasing, reverseEasing };\n","import { createExpoIn, reverseEasing, mirrorEasing, createBackIn, createAnticipate } from './utils.mjs';\n\nconst DEFAULT_OVERSHOOT_STRENGTH = 1.525;\nconst BOUNCE_FIRST_THRESHOLD = 4.0 / 11.0;\nconst BOUNCE_SECOND_THRESHOLD = 8.0 / 11.0;\nconst BOUNCE_THIRD_THRESHOLD = 9.0 / 10.0;\nconst linear = p => p;\nconst easeIn = createExpoIn(2);\nconst easeOut = reverseEasing(easeIn);\nconst easeInOut = mirrorEasing(easeIn);\nconst circIn = p => 1 - Math.sin(Math.acos(p));\nconst circOut = reverseEasing(circIn);\nconst circInOut = mirrorEasing(circOut);\nconst backIn = createBackIn(DEFAULT_OVERSHOOT_STRENGTH);\nconst backOut = reverseEasing(backIn);\nconst backInOut = mirrorEasing(backIn);\nconst anticipate = createAnticipate(DEFAULT_OVERSHOOT_STRENGTH);\nconst ca = 4356.0 / 361.0;\nconst cb = 35442.0 / 1805.0;\nconst cc = 16061.0 / 1805.0;\nconst bounceOut = (p) => {\n    if (p === 1 || p === 0)\n        return p;\n    const p2 = p * p;\n    return p < BOUNCE_FIRST_THRESHOLD\n        ? 7.5625 * p2\n        : p < BOUNCE_SECOND_THRESHOLD\n            ? 9.075 * p2 - 9.9 * p + 3.4\n            : p < BOUNCE_THIRD_THRESHOLD\n                ? ca * p2 - cb * p + cc\n                : 10.8 * p * p - 20.52 * p + 10.72;\n};\nconst bounceIn = reverseEasing(bounceOut);\nconst bounceInOut = (p) => p < 0.5\n    ? 0.5 * (1.0 - bounceOut(1.0 - p * 2.0))\n    : 0.5 * bounceOut(p * 2.0 - 1.0) + 0.5;\n\nexport { anticipate, backIn, backInOut, backOut, bounceIn, bounceInOut, bounceOut, circIn, circInOut, circOut, easeIn, easeInOut, easeOut, linear };\n","import { interpolate } from '../../utils/interpolate.mjs';\nimport { easeInOut } from '../../easing/index.mjs';\n\nfunction defaultEasing(values, easing) {\n    return values.map(() => easing || easeInOut).splice(0, values.length - 1);\n}\nfunction defaultOffset(values) {\n    const numValues = values.length;\n    return values.map((_value, i) => i !== 0 ? i / (numValues - 1) : 0);\n}\nfunction convertOffsetToTimes(offset, duration) {\n    return offset.map((o) => o * duration);\n}\nfunction keyframes({ from = 0, to = 1, ease, offset, duration = 300, }) {\n    const state = { done: false, value: from };\n    const values = Array.isArray(to) ? to : [from, to];\n    const times = convertOffsetToTimes(offset && offset.length === values.length\n        ? offset\n        : defaultOffset(values), duration);\n    function createInterpolator() {\n        return interpolate(times, values, {\n            ease: Array.isArray(ease) ? ease : defaultEasing(values, ease),\n        });\n    }\n    let interpolator = createInterpolator();\n    return {\n        next: (t) => {\n            state.value = interpolator(t);\n            state.done = t >= duration;\n            return state;\n        },\n        flipTarget: () => {\n            values.reverse();\n            interpolator = createInterpolator();\n        },\n    };\n}\n\nexport { convertOffsetToTimes, defaultEasing, defaultOffset, keyframes };\n","function decay({ velocity = 0, from = 0, power = 0.8, timeConstant = 350, restDelta = 0.5, modifyTarget, }) {\n    const state = { done: false, value: from };\n    let amplitude = power * velocity;\n    const ideal = from + amplitude;\n    const target = modifyTarget === undefined ? ideal : modifyTarget(ideal);\n    if (target !== ideal)\n        amplitude = target - from;\n    return {\n        next: (t) => {\n            const delta = -amplitude * Math.exp(-t / timeConstant);\n            state.done = !(delta > restDelta || delta < -restDelta);\n            state.value = state.done ? target : target + delta;\n            return state;\n        },\n        flipTarget: () => { },\n    };\n}\n\nexport { decay };\n","import { spring } from '../generators/spring.mjs';\nimport { keyframes } from '../generators/keyframes.mjs';\nimport { decay } from '../generators/decay.mjs';\n\nconst types = { keyframes, spring, decay };\nfunction detectAnimationFromOptions(config) {\n    if (Array.isArray(config.to)) {\n        return keyframes;\n    }\n    else if (types[config.type]) {\n        return types[config.type];\n    }\n    const keys = new Set(Object.keys(config));\n    if (keys.has(\"ease\") ||\n        (keys.has(\"duration\") && !keys.has(\"dampingRatio\"))) {\n        return keyframes;\n    }\n    else if (keys.has(\"dampingRatio\") ||\n        keys.has(\"stiffness\") ||\n        keys.has(\"mass\") ||\n        keys.has(\"damping\") ||\n        keys.has(\"restSpeed\") ||\n        keys.has(\"restDelta\")) {\n        return spring;\n    }\n    return keyframes;\n}\n\nexport { detectAnimationFromOptions };\n","const defaultTimestep = (1 / 60) * 1000;\nconst getCurrentTime = typeof performance !== \"undefined\"\n    ? () => performance.now()\n    : () => Date.now();\nconst onNextFrame = typeof window !== \"undefined\"\n    ? (callback) => window.requestAnimationFrame(callback)\n    : (callback) => setTimeout(() => callback(getCurrentTime()), defaultTimestep);\n\nexport { defaultTimestep, onNextFrame };\n","function createRenderStep(runNextFrame) {\n    let toRun = [];\n    let toRunNextFrame = [];\n    let numToRun = 0;\n    let isProcessing = false;\n    let flushNextFrame = false;\n    const toKeepAlive = new WeakSet();\n    const step = {\n        schedule: (callback, keepAlive = false, immediate = false) => {\n            const addToCurrentFrame = immediate && isProcessing;\n            const buffer = addToCurrentFrame ? toRun : toRunNextFrame;\n            if (keepAlive)\n                toKeepAlive.add(callback);\n            if (buffer.indexOf(callback) === -1) {\n                buffer.push(callback);\n                if (addToCurrentFrame && isProcessing)\n                    numToRun = toRun.length;\n            }\n            return callback;\n        },\n        cancel: (callback) => {\n            const index = toRunNextFrame.indexOf(callback);\n            if (index !== -1)\n                toRunNextFrame.splice(index, 1);\n            toKeepAlive.delete(callback);\n        },\n        process: (frameData) => {\n            if (isProcessing) {\n                flushNextFrame = true;\n                return;\n            }\n            isProcessing = true;\n            [toRun, toRunNextFrame] = [toRunNextFrame, toRun];\n            toRunNextFrame.length = 0;\n            numToRun = toRun.length;\n            if (numToRun) {\n                for (let i = 0; i < numToRun; i++) {\n                    const callback = toRun[i];\n                    callback(frameData);\n                    if (toKeepAlive.has(callback)) {\n                        step.schedule(callback);\n                        runNextFrame();\n                    }\n                }\n            }\n            isProcessing = false;\n            if (flushNextFrame) {\n                flushNextFrame = false;\n                step.process(frameData);\n            }\n        },\n    };\n    return step;\n}\n\nexport { createRenderStep };\n","import { onNextFrame, defaultTimestep } from './on-next-frame.mjs';\nimport { createRenderStep } from './create-render-step.mjs';\n\nconst maxElapsed = 40;\nlet useDefaultElapsed = true;\nlet runNextFrame = false;\nlet isProcessing = false;\nconst frame = {\n    delta: 0,\n    timestamp: 0,\n};\nconst stepsOrder = [\n    \"read\",\n    \"update\",\n    \"preRender\",\n    \"render\",\n    \"postRender\",\n];\nconst steps = stepsOrder.reduce((acc, key) => {\n    acc[key] = createRenderStep(() => (runNextFrame = true));\n    return acc;\n}, {});\nconst sync = stepsOrder.reduce((acc, key) => {\n    const step = steps[key];\n    acc[key] = (process, keepAlive = false, immediate = false) => {\n        if (!runNextFrame)\n            startLoop();\n        return step.schedule(process, keepAlive, immediate);\n    };\n    return acc;\n}, {});\nconst cancelSync = stepsOrder.reduce((acc, key) => {\n    acc[key] = steps[key].cancel;\n    return acc;\n}, {});\nconst flushSync = stepsOrder.reduce((acc, key) => {\n    acc[key] = () => steps[key].process(frame);\n    return acc;\n}, {});\nconst processStep = (stepId) => steps[stepId].process(frame);\nconst processFrame = (timestamp) => {\n    runNextFrame = false;\n    frame.delta = useDefaultElapsed\n        ? defaultTimestep\n        : Math.max(Math.min(timestamp - frame.timestamp, maxElapsed), 1);\n    frame.timestamp = timestamp;\n    isProcessing = true;\n    stepsOrder.forEach(processStep);\n    isProcessing = false;\n    if (runNextFrame) {\n        useDefaultElapsed = false;\n        onNextFrame(processFrame);\n    }\n};\nconst startLoop = () => {\n    runNextFrame = true;\n    useDefaultElapsed = true;\n    if (!isProcessing)\n        onNextFrame(processFrame);\n};\nconst getFrameData = () => frame;\n\nexport default sync;\nexport { cancelSync, flushSync, getFrameData };\n","function loopElapsed(elapsed, duration, delay = 0) {\n    return elapsed - duration - delay;\n}\nfunction reverseElapsed(elapsed, duration, delay = 0, isForwardPlayback = true) {\n    return isForwardPlayback\n        ? loopElapsed(duration + -elapsed, duration, delay)\n        : duration - (elapsed - duration) + delay;\n}\nfunction hasRepeatDelayElapsed(elapsed, duration, delay, isForwardPlayback) {\n    return isForwardPlayback ? elapsed >= duration + delay : elapsed <= -delay;\n}\n\nexport { hasRepeatDelayElapsed, loopElapsed, reverseElapsed };\n","import { __rest } from 'tslib';\nimport { detectAnimationFromOptions } from './utils/detect-animation-from-options.mjs';\nimport sync, { cancelSync } from 'framesync';\nimport { interpolate } from '../utils/interpolate.mjs';\nimport { hasRepeatDelayElapsed, reverseElapsed, loopElapsed } from './utils/elapsed.mjs';\n\nconst framesync = (update) => {\n    const passTimestamp = ({ delta }) => update(delta);\n    return {\n        start: () => sync.update(passTimestamp, true),\n        stop: () => cancelSync.update(passTimestamp),\n    };\n};\nfunction animate(_a) {\n    var _b, _c;\n    var { from, autoplay = true, driver = framesync, elapsed = 0, repeat: repeatMax = 0, repeatType = \"loop\", repeatDelay = 0, onPlay, onStop, onComplete, onRepeat, onUpdate } = _a, options = __rest(_a, [\"from\", \"autoplay\", \"driver\", \"elapsed\", \"repeat\", \"repeatType\", \"repeatDelay\", \"onPlay\", \"onStop\", \"onComplete\", \"onRepeat\", \"onUpdate\"]);\n    let { to } = options;\n    let driverControls;\n    let repeatCount = 0;\n    let computedDuration = options.duration;\n    let latest;\n    let isComplete = false;\n    let isForwardPlayback = true;\n    let interpolateFromNumber;\n    const animator = detectAnimationFromOptions(options);\n    if ((_c = (_b = animator).needsInterpolation) === null || _c === void 0 ? void 0 : _c.call(_b, from, to)) {\n        interpolateFromNumber = interpolate([0, 100], [from, to], {\n            clamp: false,\n        });\n        from = 0;\n        to = 100;\n    }\n    const animation = animator(Object.assign(Object.assign({}, options), { from, to }));\n    function repeat() {\n        repeatCount++;\n        if (repeatType === \"reverse\") {\n            isForwardPlayback = repeatCount % 2 === 0;\n            elapsed = reverseElapsed(elapsed, computedDuration, repeatDelay, isForwardPlayback);\n        }\n        else {\n            elapsed = loopElapsed(elapsed, computedDuration, repeatDelay);\n            if (repeatType === \"mirror\")\n                animation.flipTarget();\n        }\n        isComplete = false;\n        onRepeat && onRepeat();\n    }\n    function complete() {\n        driverControls.stop();\n        onComplete && onComplete();\n    }\n    function update(delta) {\n        if (!isForwardPlayback)\n            delta = -delta;\n        elapsed += delta;\n        if (!isComplete) {\n            const state = animation.next(Math.max(0, elapsed));\n            latest = state.value;\n            if (interpolateFromNumber)\n                latest = interpolateFromNumber(latest);\n            isComplete = isForwardPlayback ? state.done : elapsed <= 0;\n        }\n        onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate(latest);\n        if (isComplete) {\n            if (repeatCount === 0)\n                computedDuration !== null && computedDuration !== void 0 ? computedDuration : (computedDuration = elapsed);\n            if (repeatCount < repeatMax) {\n                hasRepeatDelayElapsed(elapsed, computedDuration, repeatDelay, isForwardPlayback) && repeat();\n            }\n            else {\n                complete();\n            }\n        }\n    }\n    function play() {\n        onPlay === null || onPlay === void 0 ? void 0 : onPlay();\n        driverControls = driver(update);\n        driverControls.start();\n    }\n    autoplay && play();\n    return {\n        stop: () => {\n            onStop === null || onStop === void 0 ? void 0 : onStop();\n            driverControls.stop();\n        },\n    };\n}\n\nexport { animate };\n","function velocityPerSecond(velocity, frameDuration) {\n    return frameDuration ? velocity * (1000 / frameDuration) : 0;\n}\n\nexport { velocityPerSecond };\n","import { animate } from './index.mjs';\nimport { velocityPerSecond } from '../utils/velocity-per-second.mjs';\nimport { getFrameData } from 'framesync';\n\nfunction inertia({ from = 0, velocity = 0, min, max, power = 0.8, timeConstant = 750, bounceStiffness = 500, bounceDamping = 10, restDelta = 1, modifyTarget, driver, onUpdate, onComplete, onStop, }) {\n    let currentAnimation;\n    function isOutOfBounds(v) {\n        return (min !== undefined && v < min) || (max !== undefined && v > max);\n    }\n    function boundaryNearest(v) {\n        if (min === undefined)\n            return max;\n        if (max === undefined)\n            return min;\n        return Math.abs(min - v) < Math.abs(max - v) ? min : max;\n    }\n    function startAnimation(options) {\n        currentAnimation === null || currentAnimation === void 0 ? void 0 : currentAnimation.stop();\n        currentAnimation = animate(Object.assign(Object.assign({}, options), { driver, onUpdate: (v) => {\n                var _a;\n                onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate(v);\n                (_a = options.onUpdate) === null || _a === void 0 ? void 0 : _a.call(options, v);\n            }, onComplete,\n            onStop }));\n    }\n    function startSpring(options) {\n        startAnimation(Object.assign({ type: \"spring\", stiffness: bounceStiffness, damping: bounceDamping, restDelta }, options));\n    }\n    if (isOutOfBounds(from)) {\n        startSpring({ from, velocity, to: boundaryNearest(from) });\n    }\n    else {\n        let target = power * velocity + from;\n        if (typeof modifyTarget !== \"undefined\")\n            target = modifyTarget(target);\n        const boundary = boundaryNearest(target);\n        const heading = boundary === min ? -1 : 1;\n        let prev;\n        let current;\n        const checkBoundary = (v) => {\n            prev = current;\n            current = v;\n            velocity = velocityPerSecond(v - prev, getFrameData().delta);\n            if ((heading === 1 && v > boundary) ||\n                (heading === -1 && v < boundary)) {\n                startSpring({ from: v, to: boundary, velocity });\n            }\n        };\n        startAnimation({\n            type: \"decay\",\n            from,\n            velocity,\n            timeConstant,\n            power,\n            restDelta,\n            modifyTarget,\n            onUpdate: isOutOfBounds(target) ? checkBoundary : undefined,\n        });\n    }\n    return {\n        stop: () => currentAnimation === null || currentAnimation === void 0 ? void 0 : currentAnimation.stop(),\n    };\n}\n\nexport { inertia };\n","const isPoint = (point) => point.hasOwnProperty('x') && point.hasOwnProperty('y');\n\nexport { isPoint };\n","import { isPoint } from './is-point.mjs';\n\nconst isPoint3D = (point) => isPoint(point) && point.hasOwnProperty('z');\n\nexport { isPoint3D };\n","import { isPoint } from './is-point.mjs';\nimport { isPoint3D } from './is-point-3d.mjs';\nimport { isNum } from './inc.mjs';\n\nconst distance1D = (a, b) => Math.abs(a - b);\nfunction distance(a, b) {\n    if (isNum(a) && isNum(b)) {\n        return distance1D(a, b);\n    }\n    else if (isPoint(a) && isPoint(b)) {\n        const xDelta = distance1D(a.x, b.x);\n        const yDelta = distance1D(a.y, b.y);\n        const zDelta = isPoint3D(a) && isPoint3D(b) ? distance1D(a.z, b.z) : 0;\n        return Math.sqrt(Math.pow(xDelta, 2) + Math.pow(yDelta, 2) + Math.pow(zDelta, 2));\n    }\n}\n\nexport { distance };\n","import { linear } from './index.mjs';\n\nconst a = (a1, a2) => 1.0 - 3.0 * a2 + 3.0 * a1;\nconst b = (a1, a2) => 3.0 * a2 - 6.0 * a1;\nconst c = (a1) => 3.0 * a1;\nconst calcBezier = (t, a1, a2) => ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t;\nconst getSlope = (t, a1, a2) => 3.0 * a(a1, a2) * t * t + 2.0 * b(a1, a2) * t + c(a1);\nconst subdivisionPrecision = 0.0000001;\nconst subdivisionMaxIterations = 10;\nfunction binarySubdivide(aX, aA, aB, mX1, mX2) {\n    let currentX;\n    let currentT;\n    let i = 0;\n    do {\n        currentT = aA + (aB - aA) / 2.0;\n        currentX = calcBezier(currentT, mX1, mX2) - aX;\n        if (currentX > 0.0) {\n            aB = currentT;\n        }\n        else {\n            aA = currentT;\n        }\n    } while (Math.abs(currentX) > subdivisionPrecision &&\n        ++i < subdivisionMaxIterations);\n    return currentT;\n}\nconst newtonIterations = 8;\nconst newtonMinSlope = 0.001;\nfunction newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n    for (let i = 0; i < newtonIterations; ++i) {\n        const currentSlope = getSlope(aGuessT, mX1, mX2);\n        if (currentSlope === 0.0) {\n            return aGuessT;\n        }\n        const currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n        aGuessT -= currentX / currentSlope;\n    }\n    return aGuessT;\n}\nconst kSplineTableSize = 11;\nconst kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\nfunction cubicBezier(mX1, mY1, mX2, mY2) {\n    if (mX1 === mY1 && mX2 === mY2)\n        return linear;\n    const sampleValues = new Float32Array(kSplineTableSize);\n    for (let i = 0; i < kSplineTableSize; ++i) {\n        sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n    }\n    function getTForX(aX) {\n        let intervalStart = 0.0;\n        let currentSample = 1;\n        const lastSample = kSplineTableSize - 1;\n        for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n            intervalStart += kSampleStepSize;\n        }\n        --currentSample;\n        const dist = (aX - sampleValues[currentSample]) /\n            (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n        const guessForT = intervalStart + dist * kSampleStepSize;\n        const initialSlope = getSlope(guessForT, mX1, mX2);\n        if (initialSlope >= newtonMinSlope) {\n            return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n        }\n        else if (initialSlope === 0.0) {\n            return guessForT;\n        }\n        else {\n            return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n        }\n    }\n    return (t) => t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2);\n}\n\nexport { cubicBezier };\n","import { env } from '../../../utils/process.mjs';\nimport { useRef, useEffect } from 'react';\nimport { AnimationType } from '../../../render/utils/types.mjs';\nimport { warnOnce } from '../../../utils/warn-once.mjs';\nimport { observeIntersection } from './observers.mjs';\n\nfunction useViewport(_a) {\n    var visualElement = _a.visualElement, whileInView = _a.whileInView, onViewportEnter = _a.onViewportEnter, onViewportLeave = _a.onViewportLeave, _b = _a.viewport, viewport = _b === void 0 ? {} : _b;\n    var state = useRef({\n        hasEnteredView: false,\n        isInView: false,\n    });\n    var shouldObserve = Boolean(whileInView || onViewportEnter || onViewportLeave);\n    if (viewport.once && state.current.hasEnteredView)\n        shouldObserve = false;\n    var useObserver = typeof IntersectionObserver === \"undefined\"\n        ? useMissingIntersectionObserver\n        : useIntersectionObserver;\n    useObserver(shouldObserve, state.current, visualElement, viewport);\n}\nvar thresholdNames = {\n    some: 0,\n    all: 1,\n};\nfunction useIntersectionObserver(shouldObserve, state, visualElement, _a) {\n    var root = _a.root, rootMargin = _a.margin, _b = _a.amount, amount = _b === void 0 ? \"some\" : _b, once = _a.once;\n    useEffect(function () {\n        if (!shouldObserve)\n            return;\n        var options = {\n            root: root === null || root === void 0 ? void 0 : root.current,\n            rootMargin: rootMargin,\n            threshold: typeof amount === \"number\" ? amount : thresholdNames[amount],\n        };\n        var intersectionCallback = function (entry) {\n            var _a;\n            var isIntersecting = entry.isIntersecting;\n            /**\n             * If there's been no change in the viewport state, early return.\n             */\n            if (state.isInView === isIntersecting)\n                return;\n            state.isInView = isIntersecting;\n            /**\n             * Handle hasEnteredView. If this is only meant to run once, and\n             * element isn't visible, early return. Otherwise set hasEnteredView to true.\n             */\n            if (once && !isIntersecting && state.hasEnteredView) {\n                return;\n            }\n            else if (isIntersecting) {\n                state.hasEnteredView = true;\n            }\n            (_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(AnimationType.InView, isIntersecting);\n            /**\n             * Use the latest committed props rather than the ones in scope\n             * when this observer is created\n             */\n            var props = visualElement.getProps();\n            var callback = isIntersecting\n                ? props.onViewportEnter\n                : props.onViewportLeave;\n            callback === null || callback === void 0 ? void 0 : callback(entry);\n        };\n        return observeIntersection(visualElement.getInstance(), options, intersectionCallback);\n    }, [shouldObserve, root, rootMargin, amount]);\n}\n/**\n * If IntersectionObserver is missing, we activate inView and fire onViewportEnter\n * on mount. This way, the page will be in the state the author expects users\n * to see it in for everyone.\n */\nfunction useMissingIntersectionObserver(shouldObserve, state, visualElement, _a) {\n    var _b = _a.fallback, fallback = _b === void 0 ? true : _b;\n    useEffect(function () {\n        if (!shouldObserve || !fallback)\n            return;\n        if (env !== \"production\") {\n            warnOnce(false, \"IntersectionObserver not available on this device. whileInView animations will trigger on mount.\");\n        }\n        /**\n         * Fire this in an rAF because, at this point, the animation state\n         * won't have flushed for the first time and there's certain logic in\n         * there that behaves differently on the initial animation.\n         *\n         * This hook should be quite rarely called so setting this in an rAF\n         * is preferred to changing the behaviour of the animation state.\n         */\n        requestAnimationFrame(function () {\n            var _a;\n            state.hasEnteredView = true;\n            var onViewportEnter = visualElement.getProps().onViewportEnter;\n            onViewportEnter === null || onViewportEnter === void 0 ? void 0 : onViewportEnter(null);\n            (_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(AnimationType.InView, true);\n        });\n    }, [shouldObserve]);\n}\n\nexport { useViewport };\n","var warned = new Set();\nfunction warnOnce(condition, message, element) {\n    if (condition || warned.has(message))\n        return;\n    console.warn(message);\n    if (element)\n        console.warn(element);\n    warned.add(message);\n}\n\nexport { warnOnce };\n","import { __rest, __assign } from 'tslib';\n\n/**\n * Map an IntersectionHandler callback to an element. We only ever make one handler for one\n * element, so even though these handlers might all be triggered by different\n * observers, we can keep them in the same map.\n */\nvar observerCallbacks = new WeakMap();\n/**\n * Multiple observers can be created for multiple element/document roots. Each with\n * different settings. So here we store dictionaries of observers to each root,\n * using serialised settings (threshold/margin) as lookup keys.\n */\nvar observers = new WeakMap();\nvar fireObserverCallback = function (entry) {\n    var _a;\n    (_a = observerCallbacks.get(entry.target)) === null || _a === void 0 ? void 0 : _a(entry);\n};\nvar fireAllObserverCallbacks = function (entries) {\n    entries.forEach(fireObserverCallback);\n};\nfunction initIntersectionObserver(_a) {\n    var root = _a.root, options = __rest(_a, [\"root\"]);\n    var lookupRoot = root || document;\n    /**\n     * If we don't have an observer lookup map for this root, create one.\n     */\n    if (!observers.has(lookupRoot)) {\n        observers.set(lookupRoot, {});\n    }\n    var rootObservers = observers.get(lookupRoot);\n    var key = JSON.stringify(options);\n    /**\n     * If we don't have an observer for this combination of root and settings,\n     * create one.\n     */\n    if (!rootObservers[key]) {\n        rootObservers[key] = new IntersectionObserver(fireAllObserverCallbacks, __assign({ root: root }, options));\n    }\n    return rootObservers[key];\n}\nfunction observeIntersection(element, options, callback) {\n    var rootInteresectionObserver = initIntersectionObserver(options);\n    observerCallbacks.set(element, callback);\n    rootInteresectionObserver.observe(element);\n    return function () {\n        observerCallbacks.delete(element);\n        rootInteresectionObserver.unobserve(element);\n    };\n}\n\nexport { observeIntersection };\n","var makeRenderlessComponent = function (hook) { return function (props) {\n    hook(props);\n    return null;\n}; };\n\nexport { makeRenderlessComponent };\n","import { useFocusGesture } from '../../gestures/use-focus-gesture.mjs';\nimport { useHoverGesture } from '../../gestures/use-hover-gesture.mjs';\nimport { useTapGesture } from '../../gestures/use-tap-gesture.mjs';\nimport { useViewport } from './viewport/use-viewport.mjs';\nimport { makeRenderlessComponent } from '../utils/make-renderless-component.mjs';\n\nvar gestureAnimations = {\n    inView: makeRenderlessComponent(useViewport),\n    tap: makeRenderlessComponent(useTapGesture),\n    focus: makeRenderlessComponent(useFocusGesture),\n    hover: makeRenderlessComponent(useHoverGesture),\n};\n\nexport { gestureAnimations };\n","import { __read } from 'tslib';\nimport { useEffect, useContext } from 'react';\nimport { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { usePresence } from '../../components/AnimatePresence/use-presence.mjs';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { createAnimationState } from '../../render/utils/animation-state.mjs';\nimport { AnimationType } from '../../render/utils/types.mjs';\nimport { makeRenderlessComponent } from '../utils/make-renderless-component.mjs';\n\nvar animations = {\n    animation: makeRenderlessComponent(function (_a) {\n        var visualElement = _a.visualElement, animate = _a.animate;\n        /**\n         * We dynamically generate the AnimationState manager as it contains a reference\n         * to the underlying animation library. We only want to load that if we load this,\n         * so people can optionally code split it out using the `m` component.\n         */\n        visualElement.animationState || (visualElement.animationState = createAnimationState(visualElement));\n        /**\n         * Subscribe any provided AnimationControls to the component's VisualElement\n         */\n        if (isAnimationControls(animate)) {\n            useEffect(function () { return animate.subscribe(visualElement); }, [animate]);\n        }\n    }),\n    exit: makeRenderlessComponent(function (props) {\n        var custom = props.custom, visualElement = props.visualElement;\n        var _a = __read(usePresence(), 2), isPresent = _a[0], safeToRemove = _a[1];\n        var presenceContext = useContext(PresenceContext);\n        useEffect(function () {\n            var _a, _b;\n            visualElement.isPresent = isPresent;\n            var animation = (_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(AnimationType.Exit, !isPresent, { custom: (_b = presenceContext === null || presenceContext === void 0 ? void 0 : presenceContext.custom) !== null && _b !== void 0 ? _b : custom });\n            !isPresent && (animation === null || animation === void 0 ? void 0 : animation.then(safeToRemove));\n        }, [isPresent]);\n    }),\n};\n\nexport { animations };\n","import { useContext, useEffect } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { useId } from '../../utils/use-id.mjs';\n\n/**\n * When a component is the child of `AnimatePresence`, it can use `usePresence`\n * to access information about whether it's still present in the React tree.\n *\n * ```jsx\n * import { usePresence } from \"framer-motion\"\n *\n * export const Component = () => {\n *   const [isPresent, safeToRemove] = usePresence()\n *\n *   useEffect(() => {\n *     !isPresent && setTimeout(safeToRemove, 1000)\n *   }, [isPresent])\n *\n *   return <div />\n * }\n * ```\n *\n * If `isPresent` is `false`, it means that a component has been removed the tree, but\n * `AnimatePresence` won't really remove it until `safeToRemove` has been called.\n *\n * @public\n */\nfunction usePresence() {\n    var context = useContext(PresenceContext);\n    if (context === null)\n        return [true, null];\n    var isPresent = context.isPresent, onExitComplete = context.onExitComplete, register = context.register;\n    // It's safe to call the following hooks conditionally (after an early return) because the context will always\n    // either be null or non-null for the lifespan of the component.\n    // Replace with useId when released in React\n    var id = useId();\n    useEffect(function () { return register(id); }, []);\n    var safeToRemove = function () { return onExitComplete === null || onExitComplete === void 0 ? void 0 : onExitComplete(id); };\n    return !isPresent && onExitComplete ? [false, safeToRemove] : [true];\n}\n/**\n * Similar to `usePresence`, except `useIsPresent` simply returns whether or not the component is present.\n * There is no `safeToRemove` function.\n *\n * ```jsx\n * import { useIsPresent } from \"framer-motion\"\n *\n * export const Component = () => {\n *   const isPresent = useIsPresent()\n *\n *   useEffect(() => {\n *     !isPresent && console.log(\"I've been removed!\")\n *   }, [isPresent])\n *\n *   return <div />\n * }\n * ```\n *\n * @public\n */\nfunction useIsPresent() {\n    return isPresent(useContext(PresenceContext));\n}\nfunction isPresent(context) {\n    return context === null ? true : context.isPresent;\n}\n\nexport { isPresent, useIsPresent, usePresence };\n","import { useConstant } from './use-constant.mjs';\n\nvar counter = 0;\nvar incrementId = function () { return counter++; };\nvar useId = function () { return useConstant(incrementId); };\n/**\n * Ideally we'd use the following code to support React 18 optionally.\n * But this fairly fails in Webpack (otherwise treeshaking wouldn't work at all).\n * Need to come up with a different way of figuring this out.\n */\n// export const useId = (React as any).useId\n//     ? (React as any).useId\n//     : () => useConstant(incrementId)\n\nexport { useId };\n","function shallowCompare(next, prev) {\n    if (!Array.isArray(prev))\n        return false;\n    var prevLength = prev.length;\n    if (prevLength !== next.length)\n        return false;\n    for (var i = 0; i < prevLength; i++) {\n        if (prev[i] !== next[i])\n            return false;\n    }\n    return true;\n}\n\nexport { shallowCompare };\n","/**\n * Converts seconds to milliseconds\n *\n * @param seconds - Time in seconds.\n * @return milliseconds - Converted time in milliseconds.\n */\nvar secondsToMilliseconds = function (seconds) { return seconds * 1000; };\n\nexport { secondsToMilliseconds };\n","import { __read } from 'tslib';\nimport { invariant } from 'hey-listen';\nimport { cubicBezier, linear, easeIn, easeInOut, easeOut, circIn, circInOut, circOut, backIn, backInOut, backOut, anticipate, bounceIn, bounceInOut, bounceOut } from 'popmotion';\n\nvar easingLookup = {\n    linear: linear,\n    easeIn: easeIn,\n    easeInOut: easeInOut,\n    easeOut: easeOut,\n    circIn: circIn,\n    circInOut: circInOut,\n    circOut: circOut,\n    backIn: backIn,\n    backInOut: backInOut,\n    backOut: backOut,\n    anticipate: anticipate,\n    bounceIn: bounceIn,\n    bounceInOut: bounceInOut,\n    bounceOut: bounceOut,\n};\nvar easingDefinitionToFunction = function (definition) {\n    if (Array.isArray(definition)) {\n        // If cubic bezier definition, create bezier curve\n        invariant(definition.length === 4, \"Cubic bezier arrays must contain four numerical values.\");\n        var _a = __read(definition, 4), x1 = _a[0], y1 = _a[1], x2 = _a[2], y2 = _a[3];\n        return cubicBezier(x1, y1, x2, y2);\n    }\n    else if (typeof definition === \"string\") {\n        // Else lookup from table\n        invariant(easingLookup[definition] !== undefined, \"Invalid easing type '\".concat(definition, \"'\"));\n        return easingLookup[definition];\n    }\n    return definition;\n};\nvar isEasingArray = function (ease) {\n    return Array.isArray(ease) && typeof ease[0] !== \"number\";\n};\n\nexport { easingDefinitionToFunction, isEasingArray };\n","import { complex } from 'style-value-types';\n\n/**\n * Check if a value is animatable. Examples:\n *\n * ✅: 100, \"100px\", \"#fff\"\n * ❌: \"block\", \"url(2.jpg)\"\n * @param value\n *\n * @internal\n */\nvar isAnimatable = function (key, value) {\n    // If the list of keys tat might be non-animatable grows, replace with Set\n    if (key === \"zIndex\")\n        return false;\n    // If it's a number or a keyframes array, we can animate it. We might at some point\n    // need to do a deep isAnimatable check of keyframes, or let Popmotion handle this,\n    // but for now lets leave it like this for performance reasons\n    if (typeof value === \"number\" || Array.isArray(value))\n        return true;\n    if (typeof value === \"string\" && // It's animatable if we have a string\n        complex.test(value) && // And it contains numbers and/or colors\n        !value.startsWith(\"url(\") // Unless it starts with \"url(\"\n    ) {\n        return true;\n    }\n    return false;\n};\n\nexport { isAnimatable };\n","import { __assign } from 'tslib';\nimport { isKeyframesTarget } from './is-keyframes-target.mjs';\n\nvar underDampedSpring = function () { return ({\n    type: \"spring\",\n    stiffness: 500,\n    damping: 25,\n    restSpeed: 10,\n}); };\nvar criticallyDampedSpring = function (to) { return ({\n    type: \"spring\",\n    stiffness: 550,\n    damping: to === 0 ? 2 * Math.sqrt(550) : 30,\n    restSpeed: 10,\n}); };\nvar linearTween = function () { return ({\n    type: \"keyframes\",\n    ease: \"linear\",\n    duration: 0.3,\n}); };\nvar keyframes = function (values) { return ({\n    type: \"keyframes\",\n    duration: 0.8,\n    values: values,\n}); };\nvar defaultTransitions = {\n    x: underDampedSpring,\n    y: underDampedSpring,\n    z: underDampedSpring,\n    rotate: underDampedSpring,\n    rotateX: underDampedSpring,\n    rotateY: underDampedSpring,\n    rotateZ: underDampedSpring,\n    scaleX: criticallyDampedSpring,\n    scaleY: criticallyDampedSpring,\n    scale: criticallyDampedSpring,\n    opacity: linearTween,\n    backgroundColor: linearTween,\n    color: linearTween,\n    default: criticallyDampedSpring,\n};\nvar getDefaultTransition = function (valueKey, to) {\n    var transitionFactory;\n    if (isKeyframesTarget(to)) {\n        transitionFactory = keyframes;\n    }\n    else {\n        transitionFactory =\n            defaultTransitions[valueKey] || defaultTransitions.default;\n    }\n    return __assign({ to: to }, transitionFactory(to));\n};\n\nexport { criticallyDampedSpring, getDefaultTransition, linearTween, underDampedSpring };\n","import { __assign } from 'tslib';\nimport { color, filter } from 'style-value-types';\nimport { numberValueTypes } from './number.mjs';\n\n/**\n * A map of default value types for common values\n */\nvar defaultValueTypes = __assign(__assign({}, numberValueTypes), { \n    // Color props\n    color: color, backgroundColor: color, outlineColor: color, fill: color, stroke: color, \n    // Border props\n    borderColor: color, borderTopColor: color, borderRightColor: color, borderBottomColor: color, borderLeftColor: color, filter: filter, WebkitFilter: filter });\n/**\n * Gets the default ValueType for the provided value key\n */\nvar getDefaultValueType = function (key) { return defaultValueTypes[key]; };\n\nexport { defaultValueTypes, getDefaultValueType };\n","import { filter, complex } from 'style-value-types';\nimport { getDefaultValueType } from './defaults.mjs';\n\nfunction getAnimatableNone(key, value) {\n    var _a;\n    var defaultValueType = getDefaultValueType(key);\n    if (defaultValueType !== filter)\n        defaultValueType = complex;\n    // If value is not recognised as animatable, ie \"none\", create an animatable version origin based on the target\n    return (_a = defaultValueType.getAnimatableNone) === null || _a === void 0 ? void 0 : _a.call(defaultValueType, value);\n}\n\nexport { getAnimatableNone };\n","var instantAnimationState = {\n    current: false,\n};\n\nexport { instantAnimationState };\n","import { __assign, __rest, __spreadArray, __read } from 'tslib';\nimport { inertia, animate } from 'popmotion';\nimport { secondsToMilliseconds } from '../../utils/time-conversion.mjs';\nimport { isEasingArray, easingDefinitionToFunction } from './easing.mjs';\nimport { isAnimatable } from './is-animatable.mjs';\nimport { getDefaultTransition } from './default-transitions.mjs';\nimport { warning } from 'hey-listen';\nimport { getAnimatableNone } from '../../render/dom/value-types/animatable-none.mjs';\nimport { instantAnimationState } from '../../utils/use-instant-transition-state.mjs';\nimport { resolveFinalValueInKeyframes } from '../../utils/resolve-value.mjs';\n\n/**\n * Decide whether a transition is defined on a given Transition.\n * This filters out orchestration options and returns true\n * if any options are left.\n */\nfunction isTransitionDefined(_a) {\n    _a.when; _a.delay; _a.delayChildren; _a.staggerChildren; _a.staggerDirection; _a.repeat; _a.repeatType; _a.repeatDelay; _a.from; var transition = __rest(_a, [\"when\", \"delay\", \"delayChildren\", \"staggerChildren\", \"staggerDirection\", \"repeat\", \"repeatType\", \"repeatDelay\", \"from\"]);\n    return !!Object.keys(transition).length;\n}\nvar legacyRepeatWarning = false;\n/**\n * Convert Framer Motion's Transition type into Popmotion-compatible options.\n */\nfunction convertTransitionToAnimationOptions(_a) {\n    var ease = _a.ease, times = _a.times, yoyo = _a.yoyo, flip = _a.flip, loop = _a.loop, transition = __rest(_a, [\"ease\", \"times\", \"yoyo\", \"flip\", \"loop\"]);\n    var options = __assign({}, transition);\n    if (times)\n        options[\"offset\"] = times;\n    /**\n     * Convert any existing durations from seconds to milliseconds\n     */\n    if (transition.duration)\n        options[\"duration\"] = secondsToMilliseconds(transition.duration);\n    if (transition.repeatDelay)\n        options.repeatDelay = secondsToMilliseconds(transition.repeatDelay);\n    /**\n     * Map easing names to Popmotion's easing functions\n     */\n    if (ease) {\n        options[\"ease\"] = isEasingArray(ease)\n            ? ease.map(easingDefinitionToFunction)\n            : easingDefinitionToFunction(ease);\n    }\n    /**\n     * Support legacy transition API\n     */\n    if (transition.type === \"tween\")\n        options.type = \"keyframes\";\n    /**\n     * TODO: These options are officially removed from the API.\n     */\n    if (yoyo || loop || flip) {\n        warning(!legacyRepeatWarning, \"yoyo, loop and flip have been removed from the API. Replace with repeat and repeatType options.\");\n        legacyRepeatWarning = true;\n        if (yoyo) {\n            options.repeatType = \"reverse\";\n        }\n        else if (loop) {\n            options.repeatType = \"loop\";\n        }\n        else if (flip) {\n            options.repeatType = \"mirror\";\n        }\n        options.repeat = loop || yoyo || flip || transition.repeat;\n    }\n    /**\n     * TODO: Popmotion 9 has the ability to automatically detect whether to use\n     * a keyframes or spring animation, but does so by detecting velocity and other spring options.\n     * It'd be good to introduce a similar thing here.\n     */\n    if (transition.type !== \"spring\")\n        options.type = \"keyframes\";\n    return options;\n}\n/**\n * Get the delay for a value by checking Transition with decreasing specificity.\n */\nfunction getDelayFromTransition(transition, key) {\n    var _a, _b;\n    var valueTransition = getValueTransition(transition, key) || {};\n    return (_b = (_a = valueTransition.delay) !== null && _a !== void 0 ? _a : transition.delay) !== null && _b !== void 0 ? _b : 0;\n}\nfunction hydrateKeyframes(options) {\n    if (Array.isArray(options.to) && options.to[0] === null) {\n        options.to = __spreadArray([], __read(options.to), false);\n        options.to[0] = options.from;\n    }\n    return options;\n}\nfunction getPopmotionAnimationOptions(transition, options, key) {\n    var _a;\n    if (Array.isArray(options.to)) {\n        (_a = transition.duration) !== null && _a !== void 0 ? _a : (transition.duration = 0.8);\n    }\n    hydrateKeyframes(options);\n    /**\n     * Get a default transition if none is determined to be defined.\n     */\n    if (!isTransitionDefined(transition)) {\n        transition = __assign(__assign({}, transition), getDefaultTransition(key, options.to));\n    }\n    return __assign(__assign({}, options), convertTransitionToAnimationOptions(transition));\n}\n/**\n *\n */\nfunction getAnimation(key, value, target, transition, onComplete) {\n    var _a;\n    var valueTransition = getValueTransition(transition, key);\n    var origin = (_a = valueTransition.from) !== null && _a !== void 0 ? _a : value.get();\n    var isTargetAnimatable = isAnimatable(key, target);\n    if (origin === \"none\" && isTargetAnimatable && typeof target === \"string\") {\n        /**\n         * If we're trying to animate from \"none\", try and get an animatable version\n         * of the target. This could be improved to work both ways.\n         */\n        origin = getAnimatableNone(key, target);\n    }\n    else if (isZero(origin) && typeof target === \"string\") {\n        origin = getZeroUnit(target);\n    }\n    else if (!Array.isArray(target) &&\n        isZero(target) &&\n        typeof origin === \"string\") {\n        target = getZeroUnit(origin);\n    }\n    var isOriginAnimatable = isAnimatable(key, origin);\n    warning(isOriginAnimatable === isTargetAnimatable, \"You are trying to animate \".concat(key, \" from \\\"\").concat(origin, \"\\\" to \\\"\").concat(target, \"\\\". \").concat(origin, \" is not an animatable value - to enable this animation set \").concat(origin, \" to a value animatable to \").concat(target, \" via the `style` property.\"));\n    function start() {\n        var options = {\n            from: origin,\n            to: target,\n            velocity: value.getVelocity(),\n            onComplete: onComplete,\n            onUpdate: function (v) { return value.set(v); },\n        };\n        return valueTransition.type === \"inertia\" ||\n            valueTransition.type === \"decay\"\n            ? inertia(__assign(__assign({}, options), valueTransition))\n            : animate(__assign(__assign({}, getPopmotionAnimationOptions(valueTransition, options, key)), { onUpdate: function (v) {\n                    var _a;\n                    options.onUpdate(v);\n                    (_a = valueTransition.onUpdate) === null || _a === void 0 ? void 0 : _a.call(valueTransition, v);\n                }, onComplete: function () {\n                    var _a;\n                    options.onComplete();\n                    (_a = valueTransition.onComplete) === null || _a === void 0 ? void 0 : _a.call(valueTransition);\n                } }));\n    }\n    function set() {\n        var _a, _b;\n        var finalTarget = resolveFinalValueInKeyframes(target);\n        value.set(finalTarget);\n        onComplete();\n        (_a = valueTransition === null || valueTransition === void 0 ? void 0 : valueTransition.onUpdate) === null || _a === void 0 ? void 0 : _a.call(valueTransition, finalTarget);\n        (_b = valueTransition === null || valueTransition === void 0 ? void 0 : valueTransition.onComplete) === null || _b === void 0 ? void 0 : _b.call(valueTransition);\n        return { stop: function () { } };\n    }\n    return !isOriginAnimatable ||\n        !isTargetAnimatable ||\n        valueTransition.type === false\n        ? set\n        : start;\n}\nfunction isZero(value) {\n    return (value === 0 ||\n        (typeof value === \"string\" &&\n            parseFloat(value) === 0 &&\n            value.indexOf(\" \") === -1));\n}\nfunction getZeroUnit(potentialUnitType) {\n    return typeof potentialUnitType === \"number\"\n        ? 0\n        : getAnimatableNone(\"\", potentialUnitType);\n}\nfunction getValueTransition(transition, key) {\n    return transition[key] || transition[\"default\"] || transition;\n}\n/**\n * Start animation on a MotionValue. This function is an interface between\n * Framer Motion and Popmotion\n */\nfunction startAnimation(key, value, target, transition) {\n    if (transition === void 0) { transition = {}; }\n    if (instantAnimationState.current) {\n        transition = { type: false };\n    }\n    return value.start(function (onComplete) {\n        var delayTimer;\n        var controls;\n        var animation = getAnimation(key, value, target, transition, onComplete);\n        var delay = getDelayFromTransition(transition, key);\n        var start = function () { return (controls = animation()); };\n        if (delay) {\n            delayTimer = window.setTimeout(start, secondsToMilliseconds(delay));\n        }\n        else {\n            start();\n        }\n        return function () {\n            clearTimeout(delayTimer);\n            controls === null || controls === void 0 ? void 0 : controls.stop();\n        };\n    });\n}\n\nexport { convertTransitionToAnimationOptions, getDelayFromTransition, getPopmotionAnimationOptions, getValueTransition, getZeroUnit, hydrateKeyframes, isTransitionDefined, isZero, startAnimation };\n","/**\n * Check if value is a numerical string, ie a string that is purely a number eg \"100\" or \"-100.1\"\n */\nvar isNumericalString = function (v) { return /^\\-?\\d*\\.?\\d+$/.test(v); };\n\nexport { isNumericalString };\n","/**\n * Check if the value is a zero value string like \"0px\" or \"0%\"\n */\nvar isZeroValueString = function (v) { return /^0[^.\\s]+$/.test(v); };\n\nexport { isZeroValueString };\n","import { __read } from 'tslib';\n\nfunction addUniqueItem(arr, item) {\n    arr.indexOf(item) === -1 && arr.push(item);\n}\nfunction removeItem(arr, item) {\n    var index = arr.indexOf(item);\n    index > -1 && arr.splice(index, 1);\n}\n// Adapted from array-move\nfunction moveItem(_a, fromIndex, toIndex) {\n    var _b = __read(_a), arr = _b.slice(0);\n    var startIndex = fromIndex < 0 ? arr.length + fromIndex : fromIndex;\n    if (startIndex >= 0 && startIndex < arr.length) {\n        var endIndex = toIndex < 0 ? arr.length + toIndex : toIndex;\n        var _c = __read(arr.splice(fromIndex, 1), 1), item = _c[0];\n        arr.splice(endIndex, 0, item);\n    }\n    return arr;\n}\n\nexport { addUniqueItem, moveItem, removeItem };\n","import { addUniqueItem, removeItem } from './array.mjs';\n\nvar SubscriptionManager = /** @class */ (function () {\n    function SubscriptionManager() {\n        this.subscriptions = [];\n    }\n    SubscriptionManager.prototype.add = function (handler) {\n        var _this = this;\n        addUniqueItem(this.subscriptions, handler);\n        return function () { return removeItem(_this.subscriptions, handler); };\n    };\n    SubscriptionManager.prototype.notify = function (a, b, c) {\n        var numSubscriptions = this.subscriptions.length;\n        if (!numSubscriptions)\n            return;\n        if (numSubscriptions === 1) {\n            /**\n             * If there's only a single handler we can just call it without invoking a loop.\n             */\n            this.subscriptions[0](a, b, c);\n        }\n        else {\n            for (var i = 0; i < numSubscriptions; i++) {\n                /**\n                 * Check whether the handler exists before firing as it's possible\n                 * the subscriptions were modified during this loop running.\n                 */\n                var handler = this.subscriptions[i];\n                handler && handler(a, b, c);\n            }\n        }\n    };\n    SubscriptionManager.prototype.getSize = function () {\n        return this.subscriptions.length;\n    };\n    SubscriptionManager.prototype.clear = function () {\n        this.subscriptions.length = 0;\n    };\n    return SubscriptionManager;\n}());\n\nexport { SubscriptionManager };\n","import sync, { getFrameData } from 'framesync';\nimport { velocityPerSecond } from 'popmotion';\nimport { SubscriptionManager } from '../utils/subscription-manager.mjs';\n\nvar isFloat = function (value) {\n    return !isNaN(parseFloat(value));\n};\n/**\n * `MotionValue` is used to track the state and velocity of motion values.\n *\n * @public\n */\nvar MotionValue = /** @class */ (function () {\n    /**\n     * @param init - The initiating value\n     * @param config - Optional configuration options\n     *\n     * -  `transformer`: A function to transform incoming values with.\n     *\n     * @internal\n     */\n    function MotionValue(init) {\n        var _this = this;\n        /**\n         * This will be replaced by the build step with the latest version number.\n         * When MotionValues are provided to motion components, warn if versions are mixed.\n         */\n        this.version = \"6.5.1\";\n        /**\n         * Duration, in milliseconds, since last updating frame.\n         *\n         * @internal\n         */\n        this.timeDelta = 0;\n        /**\n         * Timestamp of the last time this `MotionValue` was updated.\n         *\n         * @internal\n         */\n        this.lastUpdated = 0;\n        /**\n         * Functions to notify when the `MotionValue` updates.\n         *\n         * @internal\n         */\n        this.updateSubscribers = new SubscriptionManager();\n        /**\n         * Functions to notify when the velocity updates.\n         *\n         * @internal\n         */\n        this.velocityUpdateSubscribers = new SubscriptionManager();\n        /**\n         * Functions to notify when the `MotionValue` updates and `render` is set to `true`.\n         *\n         * @internal\n         */\n        this.renderSubscribers = new SubscriptionManager();\n        /**\n         * Tracks whether this value can output a velocity. Currently this is only true\n         * if the value is numerical, but we might be able to widen the scope here and support\n         * other value types.\n         *\n         * @internal\n         */\n        this.canTrackVelocity = false;\n        this.updateAndNotify = function (v, render) {\n            if (render === void 0) { render = true; }\n            _this.prev = _this.current;\n            _this.current = v;\n            // Update timestamp\n            var _a = getFrameData(), delta = _a.delta, timestamp = _a.timestamp;\n            if (_this.lastUpdated !== timestamp) {\n                _this.timeDelta = delta;\n                _this.lastUpdated = timestamp;\n                sync.postRender(_this.scheduleVelocityCheck);\n            }\n            // Update update subscribers\n            if (_this.prev !== _this.current) {\n                _this.updateSubscribers.notify(_this.current);\n            }\n            // Update velocity subscribers\n            if (_this.velocityUpdateSubscribers.getSize()) {\n                _this.velocityUpdateSubscribers.notify(_this.getVelocity());\n            }\n            // Update render subscribers\n            if (render) {\n                _this.renderSubscribers.notify(_this.current);\n            }\n        };\n        /**\n         * Schedule a velocity check for the next frame.\n         *\n         * This is an instanced and bound function to prevent generating a new\n         * function once per frame.\n         *\n         * @internal\n         */\n        this.scheduleVelocityCheck = function () { return sync.postRender(_this.velocityCheck); };\n        /**\n         * Updates `prev` with `current` if the value hasn't been updated this frame.\n         * This ensures velocity calculations return `0`.\n         *\n         * This is an instanced and bound function to prevent generating a new\n         * function once per frame.\n         *\n         * @internal\n         */\n        this.velocityCheck = function (_a) {\n            var timestamp = _a.timestamp;\n            if (timestamp !== _this.lastUpdated) {\n                _this.prev = _this.current;\n                _this.velocityUpdateSubscribers.notify(_this.getVelocity());\n            }\n        };\n        this.hasAnimated = false;\n        this.prev = this.current = init;\n        this.canTrackVelocity = isFloat(this.current);\n    }\n    /**\n     * Adds a function that will be notified when the `MotionValue` is updated.\n     *\n     * It returns a function that, when called, will cancel the subscription.\n     *\n     * When calling `onChange` inside a React component, it should be wrapped with the\n     * `useEffect` hook. As it returns an unsubscribe function, this should be returned\n     * from the `useEffect` function to ensure you don't add duplicate subscribers..\n     *\n     * ```jsx\n     * export const MyComponent = () => {\n     *   const x = useMotionValue(0)\n     *   const y = useMotionValue(0)\n     *   const opacity = useMotionValue(1)\n     *\n     *   useEffect(() => {\n     *     function updateOpacity() {\n     *       const maxXY = Math.max(x.get(), y.get())\n     *       const newOpacity = transform(maxXY, [0, 100], [1, 0])\n     *       opacity.set(newOpacity)\n     *     }\n     *\n     *     const unsubscribeX = x.onChange(updateOpacity)\n     *     const unsubscribeY = y.onChange(updateOpacity)\n     *\n     *     return () => {\n     *       unsubscribeX()\n     *       unsubscribeY()\n     *     }\n     *   }, [])\n     *\n     *   return <motion.div style={{ x }} />\n     * }\n     * ```\n     *\n     * @privateRemarks\n     *\n     * We could look into a `useOnChange` hook if the above lifecycle management proves confusing.\n     *\n     * ```jsx\n     * useOnChange(x, () => {})\n     * ```\n     *\n     * @param subscriber - A function that receives the latest value.\n     * @returns A function that, when called, will cancel this subscription.\n     *\n     * @public\n     */\n    MotionValue.prototype.onChange = function (subscription) {\n        return this.updateSubscribers.add(subscription);\n    };\n    MotionValue.prototype.clearListeners = function () {\n        this.updateSubscribers.clear();\n    };\n    /**\n     * Adds a function that will be notified when the `MotionValue` requests a render.\n     *\n     * @param subscriber - A function that's provided the latest value.\n     * @returns A function that, when called, will cancel this subscription.\n     *\n     * @internal\n     */\n    MotionValue.prototype.onRenderRequest = function (subscription) {\n        // Render immediately\n        subscription(this.get());\n        return this.renderSubscribers.add(subscription);\n    };\n    /**\n     * Attaches a passive effect to the `MotionValue`.\n     *\n     * @internal\n     */\n    MotionValue.prototype.attach = function (passiveEffect) {\n        this.passiveEffect = passiveEffect;\n    };\n    /**\n     * Sets the state of the `MotionValue`.\n     *\n     * @remarks\n     *\n     * ```jsx\n     * const x = useMotionValue(0)\n     * x.set(10)\n     * ```\n     *\n     * @param latest - Latest value to set.\n     * @param render - Whether to notify render subscribers. Defaults to `true`\n     *\n     * @public\n     */\n    MotionValue.prototype.set = function (v, render) {\n        if (render === void 0) { render = true; }\n        if (!render || !this.passiveEffect) {\n            this.updateAndNotify(v, render);\n        }\n        else {\n            this.passiveEffect(v, this.updateAndNotify);\n        }\n    };\n    /**\n     * Returns the latest state of `MotionValue`\n     *\n     * @returns - The latest state of `MotionValue`\n     *\n     * @public\n     */\n    MotionValue.prototype.get = function () {\n        return this.current;\n    };\n    /**\n     * @public\n     */\n    MotionValue.prototype.getPrevious = function () {\n        return this.prev;\n    };\n    /**\n     * Returns the latest velocity of `MotionValue`\n     *\n     * @returns - The latest velocity of `MotionValue`. Returns `0` if the state is non-numerical.\n     *\n     * @public\n     */\n    MotionValue.prototype.getVelocity = function () {\n        // This could be isFloat(this.prev) && isFloat(this.current), but that would be wasteful\n        return this.canTrackVelocity\n            ? // These casts could be avoided if parseFloat would be typed better\n                velocityPerSecond(parseFloat(this.current) -\n                    parseFloat(this.prev), this.timeDelta)\n            : 0;\n    };\n    /**\n     * Registers a new animation to control this `MotionValue`. Only one\n     * animation can drive a `MotionValue` at one time.\n     *\n     * ```jsx\n     * value.start()\n     * ```\n     *\n     * @param animation - A function that starts the provided animation\n     *\n     * @internal\n     */\n    MotionValue.prototype.start = function (animation) {\n        var _this = this;\n        this.stop();\n        return new Promise(function (resolve) {\n            _this.hasAnimated = true;\n            _this.stopAnimation = animation(resolve);\n        }).then(function () { return _this.clearAnimation(); });\n    };\n    /**\n     * Stop the currently active animation.\n     *\n     * @public\n     */\n    MotionValue.prototype.stop = function () {\n        if (this.stopAnimation)\n            this.stopAnimation();\n        this.clearAnimation();\n    };\n    /**\n     * Returns `true` if this value is currently animating.\n     *\n     * @public\n     */\n    MotionValue.prototype.isAnimating = function () {\n        return !!this.stopAnimation;\n    };\n    MotionValue.prototype.clearAnimation = function () {\n        this.stopAnimation = null;\n    };\n    /**\n     * Destroy and clean up subscribers to this `MotionValue`.\n     *\n     * The `MotionValue` hooks like `useMotionValue` and `useTransform` automatically\n     * handle the lifecycle of the returned `MotionValue`, so this method is only necessary if you've manually\n     * created a `MotionValue` via the `motionValue` function.\n     *\n     * @public\n     */\n    MotionValue.prototype.destroy = function () {\n        this.updateSubscribers.clear();\n        this.renderSubscribers.clear();\n        this.stop();\n    };\n    return MotionValue;\n}());\nfunction motionValue(init) {\n    return new MotionValue(init);\n}\n\nexport { MotionValue, motionValue };\n","/**\n * Tests a provided value against a ValueType\n */\nvar testValueType = function (v) { return function (type) { return type.test(v); }; };\n\nexport { testValueType };\n","/**\n * ValueType for \"auto\"\n */\nvar auto = {\n    test: function (v) { return v === \"auto\"; },\n    parse: function (v) { return v; },\n};\n\nexport { auto };\n","import { number, px, percent, degrees, vw, vh } from 'style-value-types';\nimport { testValueType } from './test.mjs';\nimport { auto } from './type-auto.mjs';\n\n/**\n * A list of value types commonly used for dimensions\n */\nvar dimensionValueTypes = [number, px, percent, degrees, vw, vh, auto];\n/**\n * Tests a dimensional value against the list of dimension ValueTypes\n */\nvar findDimensionValueType = function (v) {\n    return dimensionValueTypes.find(testValueType(v));\n};\n\nexport { dimensionValueTypes, findDimensionValueType };\n","import { __spreadArray, __read } from 'tslib';\nimport { color, complex } from 'style-value-types';\nimport { dimensionValueTypes } from './dimensions.mjs';\nimport { testValueType } from './test.mjs';\n\n/**\n * A list of all ValueTypes\n */\nvar valueTypes = __spreadArray(__spreadArray([], __read(dimensionValueTypes), false), [color, complex], false);\n/**\n * Tests a value against the list of ValueTypes\n */\nvar findValueType = function (v) { return valueTypes.find(testValueType(v)); };\n\nexport { findValueType };\n","import { __rest, __assign, __spreadArray, __read } from 'tslib';\nimport { complex } from 'style-value-types';\nimport { isNumericalString } from '../../utils/is-numerical-string.mjs';\nimport { isZeroValueString } from '../../utils/is-zero-value-string.mjs';\nimport { resolveFinalValueInKeyframes } from '../../utils/resolve-value.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { getAnimatableNone } from '../dom/value-types/animatable-none.mjs';\nimport { findValueType } from '../dom/value-types/find.mjs';\nimport { resolveVariant } from './variants.mjs';\n\n/**\n * Set VisualElement's MotionValue, creating a new MotionValue for it if\n * it doesn't exist.\n */\nfunction setMotionValue(visualElement, key, value) {\n    if (visualElement.hasValue(key)) {\n        visualElement.getValue(key).set(value);\n    }\n    else {\n        visualElement.addValue(key, motionValue(value));\n    }\n}\nfunction setTarget(visualElement, definition) {\n    var resolved = resolveVariant(visualElement, definition);\n    var _a = resolved ? visualElement.makeTargetAnimatable(resolved, false) : {}, _b = _a.transitionEnd, transitionEnd = _b === void 0 ? {} : _b; _a.transition; var target = __rest(_a, [\"transitionEnd\", \"transition\"]);\n    target = __assign(__assign({}, target), transitionEnd);\n    for (var key in target) {\n        var value = resolveFinalValueInKeyframes(target[key]);\n        setMotionValue(visualElement, key, value);\n    }\n}\nfunction setVariants(visualElement, variantLabels) {\n    var reversedLabels = __spreadArray([], __read(variantLabels), false).reverse();\n    reversedLabels.forEach(function (key) {\n        var _a;\n        var variant = visualElement.getVariant(key);\n        variant && setTarget(visualElement, variant);\n        (_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n            setVariants(child, variantLabels);\n        });\n    });\n}\nfunction setValues(visualElement, definition) {\n    if (Array.isArray(definition)) {\n        return setVariants(visualElement, definition);\n    }\n    else if (typeof definition === \"string\") {\n        return setVariants(visualElement, [definition]);\n    }\n    else {\n        setTarget(visualElement, definition);\n    }\n}\nfunction checkTargetForNewValues(visualElement, target, origin) {\n    var _a, _b, _c;\n    var _d;\n    var newValueKeys = Object.keys(target).filter(function (key) { return !visualElement.hasValue(key); });\n    var numNewValues = newValueKeys.length;\n    if (!numNewValues)\n        return;\n    for (var i = 0; i < numNewValues; i++) {\n        var key = newValueKeys[i];\n        var targetValue = target[key];\n        var value = null;\n        /**\n         * If the target is a series of keyframes, we can use the first value\n         * in the array. If this first value is null, we'll still need to read from the DOM.\n         */\n        if (Array.isArray(targetValue)) {\n            value = targetValue[0];\n        }\n        /**\n         * If the target isn't keyframes, or the first keyframe was null, we need to\n         * first check if an origin value was explicitly defined in the transition as \"from\",\n         * if not read the value from the DOM. As an absolute fallback, take the defined target value.\n         */\n        if (value === null) {\n            value = (_b = (_a = origin[key]) !== null && _a !== void 0 ? _a : visualElement.readValue(key)) !== null && _b !== void 0 ? _b : target[key];\n        }\n        /**\n         * If value is still undefined or null, ignore it. Preferably this would throw,\n         * but this was causing issues in Framer.\n         */\n        if (value === undefined || value === null)\n            continue;\n        if (typeof value === \"string\" &&\n            (isNumericalString(value) || isZeroValueString(value))) {\n            // If this is a number read as a string, ie \"0\" or \"200\", convert it to a number\n            value = parseFloat(value);\n        }\n        else if (!findValueType(value) && complex.test(targetValue)) {\n            value = getAnimatableNone(key, targetValue);\n        }\n        visualElement.addValue(key, motionValue(value));\n        (_c = (_d = origin)[key]) !== null && _c !== void 0 ? _c : (_d[key] = value);\n        visualElement.setBaseTarget(key, value);\n    }\n}\nfunction getOriginFromTransition(key, transition) {\n    if (!transition)\n        return;\n    var valueTransition = transition[key] || transition[\"default\"] || transition;\n    return valueTransition.from;\n}\nfunction getOrigin(target, transition, visualElement) {\n    var _a, _b;\n    var origin = {};\n    for (var key in target) {\n        origin[key] =\n            (_a = getOriginFromTransition(key, transition)) !== null && _a !== void 0 ? _a : (_b = visualElement.getValue(key)) === null || _b === void 0 ? void 0 : _b.get();\n    }\n    return origin;\n}\n\nexport { checkTargetForNewValues, getOrigin, getOriginFromTransition, setTarget, setValues };\n","import { __read, __rest, __assign } from 'tslib';\nimport { startAnimation } from '../../animation/utils/transitions.mjs';\nimport { setTarget } from './setters.mjs';\nimport { resolveVariant } from './variants.mjs';\nimport { isTransformProp } from '../html/utils/transform.mjs';\n\nfunction animateVisualElement(visualElement, definition, options) {\n    if (options === void 0) { options = {}; }\n    visualElement.notifyAnimationStart(definition);\n    var animation;\n    if (Array.isArray(definition)) {\n        var animations = definition.map(function (variant) {\n            return animateVariant(visualElement, variant, options);\n        });\n        animation = Promise.all(animations);\n    }\n    else if (typeof definition === \"string\") {\n        animation = animateVariant(visualElement, definition, options);\n    }\n    else {\n        var resolvedDefinition = typeof definition === \"function\"\n            ? resolveVariant(visualElement, definition, options.custom)\n            : definition;\n        animation = animateTarget(visualElement, resolvedDefinition, options);\n    }\n    return animation.then(function () {\n        return visualElement.notifyAnimationComplete(definition);\n    });\n}\nfunction animateVariant(visualElement, variant, options) {\n    var _a;\n    if (options === void 0) { options = {}; }\n    var resolved = resolveVariant(visualElement, variant, options.custom);\n    var _b = (resolved || {}).transition, transition = _b === void 0 ? visualElement.getDefaultTransition() || {} : _b;\n    if (options.transitionOverride) {\n        transition = options.transitionOverride;\n    }\n    /**\n     * If we have a variant, create a callback that runs it as an animation.\n     * Otherwise, we resolve a Promise immediately for a composable no-op.\n     */\n    var getAnimation = resolved\n        ? function () { return animateTarget(visualElement, resolved, options); }\n        : function () { return Promise.resolve(); };\n    /**\n     * If we have children, create a callback that runs all their animations.\n     * Otherwise, we resolve a Promise immediately for a composable no-op.\n     */\n    var getChildAnimations = ((_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.size)\n        ? function (forwardDelay) {\n            if (forwardDelay === void 0) { forwardDelay = 0; }\n            var _a = transition.delayChildren, delayChildren = _a === void 0 ? 0 : _a, staggerChildren = transition.staggerChildren, staggerDirection = transition.staggerDirection;\n            return animateChildren(visualElement, variant, delayChildren + forwardDelay, staggerChildren, staggerDirection, options);\n        }\n        : function () { return Promise.resolve(); };\n    /**\n     * If the transition explicitly defines a \"when\" option, we need to resolve either\n     * this animation or all children animations before playing the other.\n     */\n    var when = transition.when;\n    if (when) {\n        var _c = __read(when === \"beforeChildren\"\n            ? [getAnimation, getChildAnimations]\n            : [getChildAnimations, getAnimation], 2), first = _c[0], last = _c[1];\n        return first().then(last);\n    }\n    else {\n        return Promise.all([getAnimation(), getChildAnimations(options.delay)]);\n    }\n}\n/**\n * @internal\n */\nfunction animateTarget(visualElement, definition, _a) {\n    var _b;\n    var _c = _a === void 0 ? {} : _a, _d = _c.delay, delay = _d === void 0 ? 0 : _d, transitionOverride = _c.transitionOverride, type = _c.type;\n    var _e = visualElement.makeTargetAnimatable(definition), _f = _e.transition, transition = _f === void 0 ? visualElement.getDefaultTransition() : _f, transitionEnd = _e.transitionEnd, target = __rest(_e, [\"transition\", \"transitionEnd\"]);\n    if (transitionOverride)\n        transition = transitionOverride;\n    var animations = [];\n    var animationTypeState = type && ((_b = visualElement.animationState) === null || _b === void 0 ? void 0 : _b.getState()[type]);\n    for (var key in target) {\n        var value = visualElement.getValue(key);\n        var valueTarget = target[key];\n        if (!value ||\n            valueTarget === undefined ||\n            (animationTypeState &&\n                shouldBlockAnimation(animationTypeState, key))) {\n            continue;\n        }\n        var valueTransition = __assign({ delay: delay }, transition);\n        /**\n         * Make animation instant if this is a transform prop and we should reduce motion.\n         */\n        if (visualElement.shouldReduceMotion && isTransformProp(key)) {\n            valueTransition = __assign(__assign({}, valueTransition), { type: false, delay: 0 });\n        }\n        var animation = startAnimation(key, value, valueTarget, valueTransition);\n        animations.push(animation);\n    }\n    return Promise.all(animations).then(function () {\n        transitionEnd && setTarget(visualElement, transitionEnd);\n    });\n}\nfunction animateChildren(visualElement, variant, delayChildren, staggerChildren, staggerDirection, options) {\n    if (delayChildren === void 0) { delayChildren = 0; }\n    if (staggerChildren === void 0) { staggerChildren = 0; }\n    if (staggerDirection === void 0) { staggerDirection = 1; }\n    var animations = [];\n    var maxStaggerDuration = (visualElement.variantChildren.size - 1) * staggerChildren;\n    var generateStaggerDuration = staggerDirection === 1\n        ? function (i) {\n            if (i === void 0) { i = 0; }\n            return i * staggerChildren;\n        }\n        : function (i) {\n            if (i === void 0) { i = 0; }\n            return maxStaggerDuration - i * staggerChildren;\n        };\n    Array.from(visualElement.variantChildren)\n        .sort(sortByTreeOrder)\n        .forEach(function (child, i) {\n        animations.push(animateVariant(child, variant, __assign(__assign({}, options), { delay: delayChildren + generateStaggerDuration(i) })).then(function () { return child.notifyAnimationComplete(variant); }));\n    });\n    return Promise.all(animations);\n}\nfunction stopAnimation(visualElement) {\n    visualElement.forEachValue(function (value) { return value.stop(); });\n}\nfunction sortByTreeOrder(a, b) {\n    return a.sortNodePosition(b);\n}\n/**\n * Decide whether we should block this animation. Previously, we achieved this\n * just by checking whether the key was listed in protectedKeys, but this\n * posed problems if an animation was triggered by afterChildren and protectedKeys\n * had been set to true in the meantime.\n */\nfunction shouldBlockAnimation(_a, key) {\n    var protectedKeys = _a.protectedKeys, needsAnimating = _a.needsAnimating;\n    var shouldBlock = protectedKeys.hasOwnProperty(key) && needsAnimating[key] !== true;\n    needsAnimating[key] = false;\n    return shouldBlock;\n}\n\nexport { animateVisualElement, sortByTreeOrder, stopAnimation };\n","import { __spreadArray, __read, __assign, __rest } from 'tslib';\nimport { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { isKeyframesTarget } from '../../animation/utils/is-keyframes-target.mjs';\nimport { shallowCompare } from '../../utils/shallow-compare.mjs';\nimport { animateVisualElement } from './animation.mjs';\nimport { AnimationType } from './types.mjs';\nimport { isVariantLabels, resolveVariant, isVariantLabel } from './variants.mjs';\n\nvar variantPriorityOrder = [\n    AnimationType.Animate,\n    AnimationType.InView,\n    AnimationType.Focus,\n    AnimationType.Hover,\n    AnimationType.Tap,\n    AnimationType.Drag,\n    AnimationType.Exit,\n];\nvar reversePriorityOrder = __spreadArray([], __read(variantPriorityOrder), false).reverse();\nvar numAnimationTypes = variantPriorityOrder.length;\nfunction animateList(visualElement) {\n    return function (animations) {\n        return Promise.all(animations.map(function (_a) {\n            var animation = _a.animation, options = _a.options;\n            return animateVisualElement(visualElement, animation, options);\n        }));\n    };\n}\nfunction createAnimationState(visualElement) {\n    var animate = animateList(visualElement);\n    var state = createState();\n    var allAnimatedKeys = {};\n    var isInitialRender = true;\n    /**\n     * This function will be used to reduce the animation definitions for\n     * each active animation type into an object of resolved values for it.\n     */\n    var buildResolvedTypeValues = function (acc, definition) {\n        var resolved = resolveVariant(visualElement, definition);\n        if (resolved) {\n            resolved.transition; var transitionEnd = resolved.transitionEnd, target = __rest(resolved, [\"transition\", \"transitionEnd\"]);\n            acc = __assign(__assign(__assign({}, acc), target), transitionEnd);\n        }\n        return acc;\n    };\n    function isAnimated(key) {\n        return allAnimatedKeys[key] !== undefined;\n    }\n    /**\n     * This just allows us to inject mocked animation functions\n     * @internal\n     */\n    function setAnimateFunction(makeAnimator) {\n        animate = makeAnimator(visualElement);\n    }\n    /**\n     * When we receive new props, we need to:\n     * 1. Create a list of protected keys for each type. This is a directory of\n     *    value keys that are currently being \"handled\" by types of a higher priority\n     *    so that whenever an animation is played of a given type, these values are\n     *    protected from being animated.\n     * 2. Determine if an animation type needs animating.\n     * 3. Determine if any values have been removed from a type and figure out\n     *    what to animate those to.\n     */\n    function animateChanges(options, changedActiveType) {\n        var _a;\n        var props = visualElement.getProps();\n        var context = visualElement.getVariantContext(true) || {};\n        /**\n         * A list of animations that we'll build into as we iterate through the animation\n         * types. This will get executed at the end of the function.\n         */\n        var animations = [];\n        /**\n         * Keep track of which values have been removed. Then, as we hit lower priority\n         * animation types, we can check if they contain removed values and animate to that.\n         */\n        var removedKeys = new Set();\n        /**\n         * A dictionary of all encountered keys. This is an object to let us build into and\n         * copy it without iteration. Each time we hit an animation type we set its protected\n         * keys - the keys its not allowed to animate - to the latest version of this object.\n         */\n        var encounteredKeys = {};\n        /**\n         * If a variant has been removed at a given index, and this component is controlling\n         * variant animations, we want to ensure lower-priority variants are forced to animate.\n         */\n        var removedVariantIndex = Infinity;\n        var _loop_1 = function (i) {\n            var type = reversePriorityOrder[i];\n            var typeState = state[type];\n            var prop = (_a = props[type]) !== null && _a !== void 0 ? _a : context[type];\n            var propIsVariant = isVariantLabel(prop);\n            /**\n             * If this type has *just* changed isActive status, set activeDelta\n             * to that status. Otherwise set to null.\n             */\n            var activeDelta = type === changedActiveType ? typeState.isActive : null;\n            if (activeDelta === false)\n                removedVariantIndex = i;\n            /**\n             * If this prop is an inherited variant, rather than been set directly on the\n             * component itself, we want to make sure we allow the parent to trigger animations.\n             *\n             * TODO: Can probably change this to a !isControllingVariants check\n             */\n            var isInherited = prop === context[type] && prop !== props[type] && propIsVariant;\n            /**\n             *\n             */\n            if (isInherited &&\n                isInitialRender &&\n                visualElement.manuallyAnimateOnMount) {\n                isInherited = false;\n            }\n            /**\n             * Set all encountered keys so far as the protected keys for this type. This will\n             * be any key that has been animated or otherwise handled by active, higher-priortiy types.\n             */\n            typeState.protectedKeys = __assign({}, encounteredKeys);\n            // Check if we can skip analysing this prop early\n            if (\n            // If it isn't active and hasn't *just* been set as inactive\n            (!typeState.isActive && activeDelta === null) ||\n                // If we didn't and don't have any defined prop for this animation type\n                (!prop && !typeState.prevProp) ||\n                // Or if the prop doesn't define an animation\n                isAnimationControls(prop) ||\n                typeof prop === \"boolean\") {\n                return \"continue\";\n            }\n            /**\n             * As we go look through the values defined on this type, if we detect\n             * a changed value or a value that was removed in a higher priority, we set\n             * this to true and add this prop to the animation list.\n             */\n            var variantDidChange = checkVariantsDidChange(typeState.prevProp, prop);\n            var shouldAnimateType = variantDidChange ||\n                // If we're making this variant active, we want to always make it active\n                (type === changedActiveType &&\n                    typeState.isActive &&\n                    !isInherited &&\n                    propIsVariant) ||\n                // If we removed a higher-priority variant (i is in reverse order)\n                (i > removedVariantIndex && propIsVariant);\n            /**\n             * As animations can be set as variant lists, variants or target objects, we\n             * coerce everything to an array if it isn't one already\n             */\n            var definitionList = Array.isArray(prop) ? prop : [prop];\n            /**\n             * Build an object of all the resolved values. We'll use this in the subsequent\n             * animateChanges calls to determine whether a value has changed.\n             */\n            var resolvedValues = definitionList.reduce(buildResolvedTypeValues, {});\n            if (activeDelta === false)\n                resolvedValues = {};\n            /**\n             * Now we need to loop through all the keys in the prev prop and this prop,\n             * and decide:\n             * 1. If the value has changed, and needs animating\n             * 2. If it has been removed, and needs adding to the removedKeys set\n             * 3. If it has been removed in a higher priority type and needs animating\n             * 4. If it hasn't been removed in a higher priority but hasn't changed, and\n             *    needs adding to the type's protectedKeys list.\n             */\n            var _b = typeState.prevResolvedValues, prevResolvedValues = _b === void 0 ? {} : _b;\n            var allKeys = __assign(__assign({}, prevResolvedValues), resolvedValues);\n            var markToAnimate = function (key) {\n                shouldAnimateType = true;\n                removedKeys.delete(key);\n                typeState.needsAnimating[key] = true;\n            };\n            for (var key in allKeys) {\n                var next = resolvedValues[key];\n                var prev = prevResolvedValues[key];\n                // If we've already handled this we can just skip ahead\n                if (encounteredKeys.hasOwnProperty(key))\n                    continue;\n                /**\n                 * If the value has changed, we probably want to animate it.\n                 */\n                if (next !== prev) {\n                    /**\n                     * If both values are keyframes, we need to shallow compare them to\n                     * detect whether any value has changed. If it has, we animate it.\n                     */\n                    if (isKeyframesTarget(next) && isKeyframesTarget(prev)) {\n                        if (!shallowCompare(next, prev) || variantDidChange) {\n                            markToAnimate(key);\n                        }\n                        else {\n                            /**\n                             * If it hasn't changed, we want to ensure it doesn't animate by\n                             * adding it to the list of protected keys.\n                             */\n                            typeState.protectedKeys[key] = true;\n                        }\n                    }\n                    else if (next !== undefined) {\n                        // If next is defined and doesn't equal prev, it needs animating\n                        markToAnimate(key);\n                    }\n                    else {\n                        // If it's undefined, it's been removed.\n                        removedKeys.add(key);\n                    }\n                }\n                else if (next !== undefined && removedKeys.has(key)) {\n                    /**\n                     * If next hasn't changed and it isn't undefined, we want to check if it's\n                     * been removed by a higher priority\n                     */\n                    markToAnimate(key);\n                }\n                else {\n                    /**\n                     * If it hasn't changed, we add it to the list of protected values\n                     * to ensure it doesn't get animated.\n                     */\n                    typeState.protectedKeys[key] = true;\n                }\n            }\n            /**\n             * Update the typeState so next time animateChanges is called we can compare the\n             * latest prop and resolvedValues to these.\n             */\n            typeState.prevProp = prop;\n            typeState.prevResolvedValues = resolvedValues;\n            /**\n             *\n             */\n            if (typeState.isActive) {\n                encounteredKeys = __assign(__assign({}, encounteredKeys), resolvedValues);\n            }\n            if (isInitialRender && visualElement.blockInitialAnimation) {\n                shouldAnimateType = false;\n            }\n            /**\n             * If this is an inherited prop we want to hard-block animations\n             * TODO: Test as this should probably still handle animations triggered\n             * by removed values?\n             */\n            if (shouldAnimateType && !isInherited) {\n                animations.push.apply(animations, __spreadArray([], __read(definitionList.map(function (animation) { return ({\n                    animation: animation,\n                    options: __assign({ type: type }, options),\n                }); })), false));\n            }\n        };\n        /**\n         * Iterate through all animation types in reverse priority order. For each, we want to\n         * detect which values it's handling and whether or not they've changed (and therefore\n         * need to be animated). If any values have been removed, we want to detect those in\n         * lower priority props and flag for animation.\n         */\n        for (var i = 0; i < numAnimationTypes; i++) {\n            _loop_1(i);\n        }\n        allAnimatedKeys = __assign({}, encounteredKeys);\n        /**\n         * If there are some removed value that haven't been dealt with,\n         * we need to create a new animation that falls back either to the value\n         * defined in the style prop, or the last read value.\n         */\n        if (removedKeys.size) {\n            var fallbackAnimation_1 = {};\n            removedKeys.forEach(function (key) {\n                var fallbackTarget = visualElement.getBaseTarget(key);\n                if (fallbackTarget !== undefined) {\n                    fallbackAnimation_1[key] = fallbackTarget;\n                }\n            });\n            animations.push({ animation: fallbackAnimation_1 });\n        }\n        var shouldAnimate = Boolean(animations.length);\n        if (isInitialRender &&\n            props.initial === false &&\n            !visualElement.manuallyAnimateOnMount) {\n            shouldAnimate = false;\n        }\n        isInitialRender = false;\n        return shouldAnimate ? animate(animations) : Promise.resolve();\n    }\n    /**\n     * Change whether a certain animation type is active.\n     */\n    function setActive(type, isActive, options) {\n        var _a;\n        // If the active state hasn't changed, we can safely do nothing here\n        if (state[type].isActive === isActive)\n            return Promise.resolve();\n        // Propagate active change to children\n        (_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.forEach(function (child) { var _a; return (_a = child.animationState) === null || _a === void 0 ? void 0 : _a.setActive(type, isActive); });\n        state[type].isActive = isActive;\n        var animations = animateChanges(options, type);\n        for (var key in state) {\n            state[key].protectedKeys = {};\n        }\n        return animations;\n    }\n    return {\n        isAnimated: isAnimated,\n        animateChanges: animateChanges,\n        setActive: setActive,\n        setAnimateFunction: setAnimateFunction,\n        getState: function () { return state; },\n    };\n}\nfunction checkVariantsDidChange(prev, next) {\n    if (typeof next === \"string\") {\n        return next !== prev;\n    }\n    else if (isVariantLabels(next)) {\n        return !shallowCompare(next, prev);\n    }\n    return false;\n}\nfunction createTypeState(isActive) {\n    if (isActive === void 0) { isActive = false; }\n    return {\n        isActive: isActive,\n        protectedKeys: {},\n        needsAnimating: {},\n        prevResolvedValues: {},\n    };\n}\nfunction createState() {\n    var _a;\n    return _a = {},\n        _a[AnimationType.Animate] = createTypeState(true),\n        _a[AnimationType.InView] = createTypeState(),\n        _a[AnimationType.Hover] = createTypeState(),\n        _a[AnimationType.Tap] = createTypeState(),\n        _a[AnimationType.Drag] = createTypeState(),\n        _a[AnimationType.Focus] = createTypeState(),\n        _a[AnimationType.Exit] = createTypeState(),\n        _a;\n}\n\nexport { checkVariantsDidChange, createAnimationState, variantPriorityOrder };\n","import { useEffect } from 'react';\nimport { VisualElementDragControls } from './VisualElementDragControls.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\n\n/**\n * A hook that allows an element to be dragged.\n *\n * @internal\n */\nfunction useDrag(props) {\n    var groupDragControls = props.dragControls, visualElement = props.visualElement;\n    var dragControls = useConstant(function () { return new VisualElementDragControls(visualElement); });\n    // If we've been provided a DragControls for manual control over the drag gesture,\n    // subscribe this component to it on mount.\n    useEffect(function () { return groupDragControls && groupDragControls.subscribe(dragControls); }, [dragControls, groupDragControls]);\n    // Apply the event listeners to the element\n    useEffect(function () { return dragControls.addListeners(); }, [dragControls]);\n}\n\nexport { useDrag };\n","import { __assign } from 'tslib';\nimport { isMouseEvent, isTouchEvent } from './utils/event-type.mjs';\nimport { extractEventInfo } from '../events/event-info.mjs';\nimport sync, { getFrameData, cancelSync } from 'framesync';\nimport { secondsToMilliseconds } from '../utils/time-conversion.mjs';\nimport { addPointerEvent } from '../events/use-pointer-event.mjs';\nimport { distance, pipe } from 'popmotion';\n\n/**\n * @internal\n */\nvar PanSession = /** @class */ (function () {\n    function PanSession(event, handlers, _a) {\n        var _this = this;\n        var _b = _a === void 0 ? {} : _a, transformPagePoint = _b.transformPagePoint;\n        /**\n         * @internal\n         */\n        this.startEvent = null;\n        /**\n         * @internal\n         */\n        this.lastMoveEvent = null;\n        /**\n         * @internal\n         */\n        this.lastMoveEventInfo = null;\n        /**\n         * @internal\n         */\n        this.handlers = {};\n        this.updatePoint = function () {\n            if (!(_this.lastMoveEvent && _this.lastMoveEventInfo))\n                return;\n            var info = getPanInfo(_this.lastMoveEventInfo, _this.history);\n            var isPanStarted = _this.startEvent !== null;\n            // Only start panning if the offset is larger than 3 pixels. If we make it\n            // any larger than this we'll want to reset the pointer history\n            // on the first update to avoid visual snapping to the cursoe.\n            var isDistancePastThreshold = distance(info.offset, { x: 0, y: 0 }) >= 3;\n            if (!isPanStarted && !isDistancePastThreshold)\n                return;\n            var point = info.point;\n            var timestamp = getFrameData().timestamp;\n            _this.history.push(__assign(__assign({}, point), { timestamp: timestamp }));\n            var _a = _this.handlers, onStart = _a.onStart, onMove = _a.onMove;\n            if (!isPanStarted) {\n                onStart && onStart(_this.lastMoveEvent, info);\n                _this.startEvent = _this.lastMoveEvent;\n            }\n            onMove && onMove(_this.lastMoveEvent, info);\n        };\n        this.handlePointerMove = function (event, info) {\n            _this.lastMoveEvent = event;\n            _this.lastMoveEventInfo = transformPoint(info, _this.transformPagePoint);\n            // Because Safari doesn't trigger mouseup events when it's above a `<select>`\n            if (isMouseEvent(event) && event.buttons === 0) {\n                _this.handlePointerUp(event, info);\n                return;\n            }\n            // Throttle mouse move event to once per frame\n            sync.update(_this.updatePoint, true);\n        };\n        this.handlePointerUp = function (event, info) {\n            _this.end();\n            var _a = _this.handlers, onEnd = _a.onEnd, onSessionEnd = _a.onSessionEnd;\n            var panInfo = getPanInfo(transformPoint(info, _this.transformPagePoint), _this.history);\n            if (_this.startEvent && onEnd) {\n                onEnd(event, panInfo);\n            }\n            onSessionEnd && onSessionEnd(event, panInfo);\n        };\n        // If we have more than one touch, don't start detecting this gesture\n        if (isTouchEvent(event) && event.touches.length > 1)\n            return;\n        this.handlers = handlers;\n        this.transformPagePoint = transformPagePoint;\n        var info = extractEventInfo(event);\n        var initialInfo = transformPoint(info, this.transformPagePoint);\n        var point = initialInfo.point;\n        var timestamp = getFrameData().timestamp;\n        this.history = [__assign(__assign({}, point), { timestamp: timestamp })];\n        var onSessionStart = handlers.onSessionStart;\n        onSessionStart &&\n            onSessionStart(event, getPanInfo(initialInfo, this.history));\n        this.removeListeners = pipe(addPointerEvent(window, \"pointermove\", this.handlePointerMove), addPointerEvent(window, \"pointerup\", this.handlePointerUp), addPointerEvent(window, \"pointercancel\", this.handlePointerUp));\n    }\n    PanSession.prototype.updateHandlers = function (handlers) {\n        this.handlers = handlers;\n    };\n    PanSession.prototype.end = function () {\n        this.removeListeners && this.removeListeners();\n        cancelSync.update(this.updatePoint);\n    };\n    return PanSession;\n}());\nfunction transformPoint(info, transformPagePoint) {\n    return transformPagePoint ? { point: transformPagePoint(info.point) } : info;\n}\nfunction subtractPoint(a, b) {\n    return { x: a.x - b.x, y: a.y - b.y };\n}\nfunction getPanInfo(_a, history) {\n    var point = _a.point;\n    return {\n        point: point,\n        delta: subtractPoint(point, lastDevicePoint(history)),\n        offset: subtractPoint(point, startDevicePoint(history)),\n        velocity: getVelocity(history, 0.1),\n    };\n}\nfunction startDevicePoint(history) {\n    return history[0];\n}\nfunction lastDevicePoint(history) {\n    return history[history.length - 1];\n}\nfunction getVelocity(history, timeDelta) {\n    if (history.length < 2) {\n        return { x: 0, y: 0 };\n    }\n    var i = history.length - 1;\n    var timestampedPoint = null;\n    var lastPoint = lastDevicePoint(history);\n    while (i >= 0) {\n        timestampedPoint = history[i];\n        if (lastPoint.timestamp - timestampedPoint.timestamp >\n            secondsToMilliseconds(timeDelta)) {\n            break;\n        }\n        i--;\n    }\n    if (!timestampedPoint) {\n        return { x: 0, y: 0 };\n    }\n    var time = (lastPoint.timestamp - timestampedPoint.timestamp) / 1000;\n    if (time === 0) {\n        return { x: 0, y: 0 };\n    }\n    var currentVelocity = {\n        x: (lastPoint.x - timestampedPoint.x) / time,\n        y: (lastPoint.y - timestampedPoint.y) / time,\n    };\n    if (currentVelocity.x === Infinity) {\n        currentVelocity.x = 0;\n    }\n    if (currentVelocity.y === Infinity) {\n        currentVelocity.y = 0;\n    }\n    return currentVelocity;\n}\n\nexport { PanSession };\n","import { mix, distance } from 'popmotion';\n\nfunction calcLength(axis) {\n    return axis.max - axis.min;\n}\nfunction isNear(value, target, maxDistance) {\n    if (target === void 0) { target = 0; }\n    if (maxDistance === void 0) { maxDistance = 0.01; }\n    return distance(value, target) < maxDistance;\n}\nfunction calcAxisDelta(delta, source, target, origin) {\n    if (origin === void 0) { origin = 0.5; }\n    delta.origin = origin;\n    delta.originPoint = mix(source.min, source.max, delta.origin);\n    delta.scale = calcLength(target) / calcLength(source);\n    if (isNear(delta.scale, 1, 0.0001) || isNaN(delta.scale))\n        delta.scale = 1;\n    delta.translate =\n        mix(target.min, target.max, delta.origin) - delta.originPoint;\n    if (isNear(delta.translate) || isNaN(delta.translate))\n        delta.translate = 0;\n}\nfunction calcBoxDelta(delta, source, target, origin) {\n    calcAxisDelta(delta.x, source.x, target.x, origin === null || origin === void 0 ? void 0 : origin.originX);\n    calcAxisDelta(delta.y, source.y, target.y, origin === null || origin === void 0 ? void 0 : origin.originY);\n}\nfunction calcRelativeAxis(target, relative, parent) {\n    target.min = parent.min + relative.min;\n    target.max = target.min + calcLength(relative);\n}\nfunction calcRelativeBox(target, relative, parent) {\n    calcRelativeAxis(target.x, relative.x, parent.x);\n    calcRelativeAxis(target.y, relative.y, parent.y);\n}\nfunction calcRelativeAxisPosition(target, layout, parent) {\n    target.min = layout.min - parent.min;\n    target.max = target.min + calcLength(layout);\n}\nfunction calcRelativePosition(target, layout, parent) {\n    calcRelativeAxisPosition(target.x, layout.x, parent.x);\n    calcRelativeAxisPosition(target.y, layout.y, parent.y);\n}\n\nexport { calcAxisDelta, calcBoxDelta, calcLength, calcRelativeAxis, calcRelativeAxisPosition, calcRelativeBox, calcRelativePosition, isNear };\n","import { __read } from 'tslib';\nimport { clamp, mix, progress } from 'popmotion';\nimport { calcLength } from '../../../projection/geometry/delta-calc.mjs';\n\n/**\n * Apply constraints to a point. These constraints are both physical along an\n * axis, and an elastic factor that determines how much to constrain the point\n * by if it does lie outside the defined parameters.\n */\nfunction applyConstraints(point, _a, elastic) {\n    var min = _a.min, max = _a.max;\n    if (min !== undefined && point < min) {\n        // If we have a min point defined, and this is outside of that, constrain\n        point = elastic ? mix(min, point, elastic.min) : Math.max(point, min);\n    }\n    else if (max !== undefined && point > max) {\n        // If we have a max point defined, and this is outside of that, constrain\n        point = elastic ? mix(max, point, elastic.max) : Math.min(point, max);\n    }\n    return point;\n}\n/**\n * Calculate constraints in terms of the viewport when defined relatively to the\n * measured axis. This is measured from the nearest edge, so a max constraint of 200\n * on an axis with a max value of 300 would return a constraint of 500 - axis length\n */\nfunction calcRelativeAxisConstraints(axis, min, max) {\n    return {\n        min: min !== undefined ? axis.min + min : undefined,\n        max: max !== undefined\n            ? axis.max + max - (axis.max - axis.min)\n            : undefined,\n    };\n}\n/**\n * Calculate constraints in terms of the viewport when\n * defined relatively to the measured bounding box.\n */\nfunction calcRelativeConstraints(layoutBox, _a) {\n    var top = _a.top, left = _a.left, bottom = _a.bottom, right = _a.right;\n    return {\n        x: calcRelativeAxisConstraints(layoutBox.x, left, right),\n        y: calcRelativeAxisConstraints(layoutBox.y, top, bottom),\n    };\n}\n/**\n * Calculate viewport constraints when defined as another viewport-relative axis\n */\nfunction calcViewportAxisConstraints(layoutAxis, constraintsAxis) {\n    var _a;\n    var min = constraintsAxis.min - layoutAxis.min;\n    var max = constraintsAxis.max - layoutAxis.max;\n    // If the constraints axis is actually smaller than the layout axis then we can\n    // flip the constraints\n    if (constraintsAxis.max - constraintsAxis.min <\n        layoutAxis.max - layoutAxis.min) {\n        _a = __read([max, min], 2), min = _a[0], max = _a[1];\n    }\n    return { min: min, max: max };\n}\n/**\n * Calculate viewport constraints when defined as another viewport-relative box\n */\nfunction calcViewportConstraints(layoutBox, constraintsBox) {\n    return {\n        x: calcViewportAxisConstraints(layoutBox.x, constraintsBox.x),\n        y: calcViewportAxisConstraints(layoutBox.y, constraintsBox.y),\n    };\n}\n/**\n * Calculate a transform origin relative to the source axis, between 0-1, that results\n * in an asthetically pleasing scale/transform needed to project from source to target.\n */\nfunction calcOrigin(source, target) {\n    var origin = 0.5;\n    var sourceLength = calcLength(source);\n    var targetLength = calcLength(target);\n    if (targetLength > sourceLength) {\n        origin = progress(target.min, target.max - sourceLength, source.min);\n    }\n    else if (sourceLength > targetLength) {\n        origin = progress(source.min, source.max - targetLength, target.min);\n    }\n    return clamp(0, 1, origin);\n}\n/**\n * Rebase the calculated viewport constraints relative to the layout.min point.\n */\nfunction rebaseAxisConstraints(layout, constraints) {\n    var relativeConstraints = {};\n    if (constraints.min !== undefined) {\n        relativeConstraints.min = constraints.min - layout.min;\n    }\n    if (constraints.max !== undefined) {\n        relativeConstraints.max = constraints.max - layout.min;\n    }\n    return relativeConstraints;\n}\nvar defaultElastic = 0.35;\n/**\n * Accepts a dragElastic prop and returns resolved elastic values for each axis.\n */\nfunction resolveDragElastic(dragElastic) {\n    if (dragElastic === void 0) { dragElastic = defaultElastic; }\n    if (dragElastic === false) {\n        dragElastic = 0;\n    }\n    else if (dragElastic === true) {\n        dragElastic = defaultElastic;\n    }\n    return {\n        x: resolveAxisElastic(dragElastic, \"left\", \"right\"),\n        y: resolveAxisElastic(dragElastic, \"top\", \"bottom\"),\n    };\n}\nfunction resolveAxisElastic(dragElastic, minLabel, maxLabel) {\n    return {\n        min: resolvePointElastic(dragElastic, minLabel),\n        max: resolvePointElastic(dragElastic, maxLabel),\n    };\n}\nfunction resolvePointElastic(dragElastic, label) {\n    var _a;\n    return typeof dragElastic === \"number\"\n        ? dragElastic\n        : (_a = dragElastic[label]) !== null && _a !== void 0 ? _a : 0;\n}\n\nexport { applyConstraints, calcOrigin, calcRelativeAxisConstraints, calcRelativeConstraints, calcViewportAxisConstraints, calcViewportConstraints, defaultElastic, rebaseAxisConstraints, resolveAxisElastic, resolveDragElastic, resolvePointElastic };\n","var createAxisDelta = function () { return ({\n    translate: 0,\n    scale: 1,\n    origin: 0,\n    originPoint: 0,\n}); };\nvar createDelta = function () { return ({\n    x: createAxisDelta(),\n    y: createAxisDelta(),\n}); };\nvar createAxis = function () { return ({ min: 0, max: 0 }); };\nvar createBox = function () { return ({\n    x: createAxis(),\n    y: createAxis(),\n}); };\n\nexport { createAxis, createAxisDelta, createBox, createDelta };\n","function eachAxis(callback) {\n    return [callback(\"x\"), callback(\"y\")];\n}\n\nexport { eachAxis };\n","/**\n * Bounding boxes tend to be defined as top, left, right, bottom. For various operations\n * it's easier to consider each axis individually. This function returns a bounding box\n * as a map of single-axis min/max values.\n */\nfunction convertBoundingBoxToBox(_a) {\n    var top = _a.top, left = _a.left, right = _a.right, bottom = _a.bottom;\n    return {\n        x: { min: left, max: right },\n        y: { min: top, max: bottom },\n    };\n}\nfunction convertBoxToBoundingBox(_a) {\n    var x = _a.x, y = _a.y;\n    return { top: y.min, right: x.max, bottom: y.max, left: x.min };\n}\n/**\n * Applies a TransformPoint function to a bounding box. TransformPoint is usually a function\n * provided by Framer to allow measured points to be corrected for device scaling. This is used\n * when measuring DOM elements and DOM event points.\n */\nfunction transformBoxPoints(point, transformPoint) {\n    if (!transformPoint)\n        return point;\n    var topLeft = transformPoint({ x: point.left, y: point.top });\n    var bottomRight = transformPoint({ x: point.right, y: point.bottom });\n    return {\n        top: topLeft.y,\n        left: topLeft.x,\n        bottom: bottomRight.y,\n        right: bottomRight.x,\n    };\n}\n\nexport { convertBoundingBoxToBox, convertBoxToBoundingBox, transformBoxPoints };\n","function isIdentityScale(scale) {\n    return scale === undefined || scale === 1;\n}\nfunction hasScale(_a) {\n    var scale = _a.scale, scaleX = _a.scaleX, scaleY = _a.scaleY;\n    return (!isIdentityScale(scale) ||\n        !isIdentityScale(scaleX) ||\n        !isIdentityScale(scaleY));\n}\nfunction hasTransform(values) {\n    return (hasScale(values) ||\n        hasTranslate(values.x) ||\n        hasTranslate(values.y) ||\n        values.z ||\n        values.rotate ||\n        values.rotateX ||\n        values.rotateY);\n}\nfunction hasTranslate(value) {\n    return value && value !== \"0%\";\n}\n\nexport { hasScale, hasTransform };\n","import { __read } from 'tslib';\nimport { mix } from 'popmotion';\nimport { hasTransform } from '../utils/has-transform.mjs';\n\n/**\n * Scales a point based on a factor and an originPoint\n */\nfunction scalePoint(point, scale, originPoint) {\n    var distanceFromOrigin = point - originPoint;\n    var scaled = scale * distanceFromOrigin;\n    return originPoint + scaled;\n}\n/**\n * Applies a translate/scale delta to a point\n */\nfunction applyPointDelta(point, translate, scale, originPoint, boxScale) {\n    if (boxScale !== undefined) {\n        point = scalePoint(point, boxScale, originPoint);\n    }\n    return scalePoint(point, scale, originPoint) + translate;\n}\n/**\n * Applies a translate/scale delta to an axis\n */\nfunction applyAxisDelta(axis, translate, scale, originPoint, boxScale) {\n    if (translate === void 0) { translate = 0; }\n    if (scale === void 0) { scale = 1; }\n    axis.min = applyPointDelta(axis.min, translate, scale, originPoint, boxScale);\n    axis.max = applyPointDelta(axis.max, translate, scale, originPoint, boxScale);\n}\n/**\n * Applies a translate/scale delta to a box\n */\nfunction applyBoxDelta(box, _a) {\n    var x = _a.x, y = _a.y;\n    applyAxisDelta(box.x, x.translate, x.scale, x.originPoint);\n    applyAxisDelta(box.y, y.translate, y.scale, y.originPoint);\n}\n/**\n * Apply a tree of deltas to a box. We do this to calculate the effect of all the transforms\n * in a tree upon our box before then calculating how to project it into our desired viewport-relative box\n *\n * This is the final nested loop within updateLayoutDelta for future refactoring\n */\nfunction applyTreeDeltas(box, treeScale, treePath, isSharedTransition) {\n    var _a, _b;\n    if (isSharedTransition === void 0) { isSharedTransition = false; }\n    var treeLength = treePath.length;\n    if (!treeLength)\n        return;\n    // Reset the treeScale\n    treeScale.x = treeScale.y = 1;\n    var node;\n    var delta;\n    for (var i = 0; i < treeLength; i++) {\n        node = treePath[i];\n        delta = node.projectionDelta;\n        if (((_b = (_a = node.instance) === null || _a === void 0 ? void 0 : _a.style) === null || _b === void 0 ? void 0 : _b.display) === \"contents\")\n            continue;\n        if (isSharedTransition &&\n            node.options.layoutScroll &&\n            node.scroll &&\n            node !== node.root) {\n            transformBox(box, { x: -node.scroll.x, y: -node.scroll.y });\n        }\n        if (delta) {\n            // Incoporate each ancestor's scale into a culmulative treeScale for this component\n            treeScale.x *= delta.x.scale;\n            treeScale.y *= delta.y.scale;\n            // Apply each ancestor's calculated delta into this component's recorded layout box\n            applyBoxDelta(box, delta);\n        }\n        if (isSharedTransition && hasTransform(node.latestValues)) {\n            transformBox(box, node.latestValues);\n        }\n    }\n}\nfunction translateAxis(axis, distance) {\n    axis.min = axis.min + distance;\n    axis.max = axis.max + distance;\n}\n/**\n * Apply a transform to an axis from the latest resolved motion values.\n * This function basically acts as a bridge between a flat motion value map\n * and applyAxisDelta\n */\nfunction transformAxis(axis, transforms, _a) {\n    var _b = __read(_a, 3), key = _b[0], scaleKey = _b[1], originKey = _b[2];\n    var axisOrigin = transforms[originKey] !== undefined ? transforms[originKey] : 0.5;\n    var originPoint = mix(axis.min, axis.max, axisOrigin);\n    // Apply the axis delta to the final axis\n    applyAxisDelta(axis, transforms[key], transforms[scaleKey], originPoint, transforms.scale);\n}\n/**\n * The names of the motion values we want to apply as translation, scale and origin.\n */\nvar xKeys = [\"x\", \"scaleX\", \"originX\"];\nvar yKeys = [\"y\", \"scaleY\", \"originY\"];\n/**\n * Apply a transform to a box from the latest resolved motion values.\n */\nfunction transformBox(box, transform) {\n    transformAxis(box.x, transform, xKeys);\n    transformAxis(box.y, transform, yKeys);\n}\n\nexport { applyAxisDelta, applyBoxDelta, applyPointDelta, applyTreeDeltas, scalePoint, transformAxis, transformBox, translateAxis };\n","import { convertBoundingBoxToBox, transformBoxPoints } from '../geometry/conversion.mjs';\nimport { translateAxis } from '../geometry/delta-apply.mjs';\n\nfunction measureViewportBox(instance, transformPoint) {\n    return convertBoundingBoxToBox(transformBoxPoints(instance.getBoundingClientRect(), transformPoint));\n}\nfunction measurePageBox(element, rootProjectionNode, transformPagePoint) {\n    var viewportBox = measureViewportBox(element, transformPagePoint);\n    var scroll = rootProjectionNode.scroll;\n    if (scroll) {\n        translateAxis(viewportBox.x, scroll.x);\n        translateAxis(viewportBox.y, scroll.y);\n    }\n    return viewportBox;\n}\n\nexport { measurePageBox, measureViewportBox };\n","import { __assign } from 'tslib';\nimport { invariant } from 'hey-listen';\nimport { PanSession } from '../PanSession.mjs';\nimport { getGlobalLock } from './utils/lock.mjs';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\nimport { addPointerEvent } from '../../events/use-pointer-event.mjs';\nimport { applyConstraints, calcRelativeConstraints, resolveDragElastic, rebaseAxisConstraints, calcViewportConstraints, calcOrigin, defaultElastic } from './utils/constraints.mjs';\nimport { AnimationType } from '../../render/utils/types.mjs';\nimport { createBox } from '../../projection/geometry/models.mjs';\nimport { eachAxis } from '../../projection/utils/each-axis.mjs';\nimport { measurePageBox } from '../../projection/utils/measure.mjs';\nimport { extractEventInfo } from '../../events/event-info.mjs';\nimport { startAnimation } from '../../animation/utils/transitions.mjs';\nimport { convertBoxToBoundingBox, convertBoundingBoxToBox } from '../../projection/geometry/conversion.mjs';\nimport { addDomEvent } from '../../events/use-dom-event.mjs';\nimport { mix } from 'popmotion';\nimport { percent } from 'style-value-types';\nimport { calcLength } from '../../projection/geometry/delta-calc.mjs';\n\nvar elementDragControls = new WeakMap();\n/**\n *\n */\n// let latestPointerEvent: AnyPointerEvent\nvar VisualElementDragControls = /** @class */ (function () {\n    function VisualElementDragControls(visualElement) {\n        // This is a reference to the global drag gesture lock, ensuring only one component\n        // can \"capture\" the drag of one or both axes.\n        // TODO: Look into moving this into pansession?\n        this.openGlobalLock = null;\n        this.isDragging = false;\n        this.currentDirection = null;\n        this.originPoint = { x: 0, y: 0 };\n        /**\n         * The permitted boundaries of travel, in pixels.\n         */\n        this.constraints = false;\n        this.hasMutatedConstraints = false;\n        /**\n         * The per-axis resolved elastic values.\n         */\n        this.elastic = createBox();\n        this.visualElement = visualElement;\n    }\n    VisualElementDragControls.prototype.start = function (originEvent, _a) {\n        var _this = this;\n        var _b = _a === void 0 ? {} : _a, _c = _b.snapToCursor, snapToCursor = _c === void 0 ? false : _c;\n        /**\n         * Don't start dragging if this component is exiting\n         */\n        if (this.visualElement.isPresent === false)\n            return;\n        var onSessionStart = function (event) {\n            // Stop any animations on both axis values immediately. This allows the user to throw and catch\n            // the component.\n            _this.stopAnimation();\n            if (snapToCursor) {\n                _this.snapToCursor(extractEventInfo(event, \"page\").point);\n            }\n        };\n        var onStart = function (event, info) {\n            var _a;\n            // Attempt to grab the global drag gesture lock - maybe make this part of PanSession\n            var _b = _this.getProps(), drag = _b.drag, dragPropagation = _b.dragPropagation, onDragStart = _b.onDragStart;\n            if (drag && !dragPropagation) {\n                if (_this.openGlobalLock)\n                    _this.openGlobalLock();\n                _this.openGlobalLock = getGlobalLock(drag);\n                // If we don 't have the lock, don't start dragging\n                if (!_this.openGlobalLock)\n                    return;\n            }\n            _this.isDragging = true;\n            _this.currentDirection = null;\n            _this.resolveConstraints();\n            if (_this.visualElement.projection) {\n                _this.visualElement.projection.isAnimationBlocked = true;\n                _this.visualElement.projection.target = undefined;\n            }\n            /**\n             * Record gesture origin\n             */\n            eachAxis(function (axis) {\n                var _a, _b;\n                var current = _this.getAxisMotionValue(axis).get() || 0;\n                /**\n                 * If the MotionValue is a percentage value convert to px\n                 */\n                if (percent.test(current)) {\n                    var measuredAxis = (_b = (_a = _this.visualElement.projection) === null || _a === void 0 ? void 0 : _a.layout) === null || _b === void 0 ? void 0 : _b.actual[axis];\n                    if (measuredAxis) {\n                        var length_1 = calcLength(measuredAxis);\n                        current = length_1 * (parseFloat(current) / 100);\n                    }\n                }\n                _this.originPoint[axis] = current;\n            });\n            // Fire onDragStart event\n            onDragStart === null || onDragStart === void 0 ? void 0 : onDragStart(event, info);\n            (_a = _this.visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(AnimationType.Drag, true);\n        };\n        var onMove = function (event, info) {\n            // latestPointerEvent = event\n            var _a = _this.getProps(), dragPropagation = _a.dragPropagation, dragDirectionLock = _a.dragDirectionLock, onDirectionLock = _a.onDirectionLock, onDrag = _a.onDrag;\n            // If we didn't successfully receive the gesture lock, early return.\n            if (!dragPropagation && !_this.openGlobalLock)\n                return;\n            var offset = info.offset;\n            // Attempt to detect drag direction if directionLock is true\n            if (dragDirectionLock && _this.currentDirection === null) {\n                _this.currentDirection = getCurrentDirection(offset);\n                // If we've successfully set a direction, notify listener\n                if (_this.currentDirection !== null) {\n                    onDirectionLock === null || onDirectionLock === void 0 ? void 0 : onDirectionLock(_this.currentDirection);\n                }\n                return;\n            }\n            // Update each point with the latest position\n            _this.updateAxis(\"x\", info.point, offset);\n            _this.updateAxis(\"y\", info.point, offset);\n            /**\n             * Ideally we would leave the renderer to fire naturally at the end of\n             * this frame but if the element is about to change layout as the result\n             * of a re-render we want to ensure the browser can read the latest\n             * bounding box to ensure the pointer and element don't fall out of sync.\n             */\n            _this.visualElement.syncRender();\n            /**\n             * This must fire after the syncRender call as it might trigger a state\n             * change which itself might trigger a layout update.\n             */\n            onDrag === null || onDrag === void 0 ? void 0 : onDrag(event, info);\n        };\n        var onSessionEnd = function (event, info) {\n            return _this.stop(event, info);\n        };\n        this.panSession = new PanSession(originEvent, {\n            onSessionStart: onSessionStart,\n            onStart: onStart,\n            onMove: onMove,\n            onSessionEnd: onSessionEnd,\n        }, { transformPagePoint: this.visualElement.getTransformPagePoint() });\n    };\n    VisualElementDragControls.prototype.stop = function (event, info) {\n        var isDragging = this.isDragging;\n        this.cancel();\n        if (!isDragging)\n            return;\n        var velocity = info.velocity;\n        this.startAnimation(velocity);\n        var onDragEnd = this.getProps().onDragEnd;\n        onDragEnd === null || onDragEnd === void 0 ? void 0 : onDragEnd(event, info);\n    };\n    VisualElementDragControls.prototype.cancel = function () {\n        var _a, _b;\n        this.isDragging = false;\n        if (this.visualElement.projection) {\n            this.visualElement.projection.isAnimationBlocked = false;\n        }\n        (_a = this.panSession) === null || _a === void 0 ? void 0 : _a.end();\n        this.panSession = undefined;\n        var dragPropagation = this.getProps().dragPropagation;\n        if (!dragPropagation && this.openGlobalLock) {\n            this.openGlobalLock();\n            this.openGlobalLock = null;\n        }\n        (_b = this.visualElement.animationState) === null || _b === void 0 ? void 0 : _b.setActive(AnimationType.Drag, false);\n    };\n    VisualElementDragControls.prototype.updateAxis = function (axis, _point, offset) {\n        var drag = this.getProps().drag;\n        // If we're not dragging this axis, do an early return.\n        if (!offset || !shouldDrag(axis, drag, this.currentDirection))\n            return;\n        var axisValue = this.getAxisMotionValue(axis);\n        var next = this.originPoint[axis] + offset[axis];\n        // Apply constraints\n        if (this.constraints && this.constraints[axis]) {\n            next = applyConstraints(next, this.constraints[axis], this.elastic[axis]);\n        }\n        axisValue.set(next);\n    };\n    VisualElementDragControls.prototype.resolveConstraints = function () {\n        var _this = this;\n        var _a = this.getProps(), dragConstraints = _a.dragConstraints, dragElastic = _a.dragElastic;\n        var layout = (this.visualElement.projection || {}).layout;\n        var prevConstraints = this.constraints;\n        if (dragConstraints && isRefObject(dragConstraints)) {\n            if (!this.constraints) {\n                this.constraints = this.resolveRefConstraints();\n            }\n        }\n        else {\n            if (dragConstraints && layout) {\n                this.constraints = calcRelativeConstraints(layout.actual, dragConstraints);\n            }\n            else {\n                this.constraints = false;\n            }\n        }\n        this.elastic = resolveDragElastic(dragElastic);\n        /**\n         * If we're outputting to external MotionValues, we want to rebase the measured constraints\n         * from viewport-relative to component-relative.\n         */\n        if (prevConstraints !== this.constraints &&\n            layout &&\n            this.constraints &&\n            !this.hasMutatedConstraints) {\n            eachAxis(function (axis) {\n                if (_this.getAxisMotionValue(axis)) {\n                    _this.constraints[axis] = rebaseAxisConstraints(layout.actual[axis], _this.constraints[axis]);\n                }\n            });\n        }\n    };\n    VisualElementDragControls.prototype.resolveRefConstraints = function () {\n        var _a = this.getProps(), constraints = _a.dragConstraints, onMeasureDragConstraints = _a.onMeasureDragConstraints;\n        if (!constraints || !isRefObject(constraints))\n            return false;\n        var constraintsElement = constraints.current;\n        invariant(constraintsElement !== null, \"If `dragConstraints` is set as a React ref, that ref must be passed to another component's `ref` prop.\");\n        var projection = this.visualElement.projection;\n        // TODO\n        if (!projection || !projection.layout)\n            return false;\n        var constraintsBox = measurePageBox(constraintsElement, projection.root, this.visualElement.getTransformPagePoint());\n        var measuredConstraints = calcViewportConstraints(projection.layout.actual, constraintsBox);\n        /**\n         * If there's an onMeasureDragConstraints listener we call it and\n         * if different constraints are returned, set constraints to that\n         */\n        if (onMeasureDragConstraints) {\n            var userConstraints = onMeasureDragConstraints(convertBoxToBoundingBox(measuredConstraints));\n            this.hasMutatedConstraints = !!userConstraints;\n            if (userConstraints) {\n                measuredConstraints = convertBoundingBoxToBox(userConstraints);\n            }\n        }\n        return measuredConstraints;\n    };\n    VisualElementDragControls.prototype.startAnimation = function (velocity) {\n        var _this = this;\n        var _a = this.getProps(), drag = _a.drag, dragMomentum = _a.dragMomentum, dragElastic = _a.dragElastic, dragTransition = _a.dragTransition, dragSnapToOrigin = _a.dragSnapToOrigin, onDragTransitionEnd = _a.onDragTransitionEnd;\n        var constraints = this.constraints || {};\n        var momentumAnimations = eachAxis(function (axis) {\n            var _a;\n            if (!shouldDrag(axis, drag, _this.currentDirection)) {\n                return;\n            }\n            var transition = (_a = constraints === null || constraints === void 0 ? void 0 : constraints[axis]) !== null && _a !== void 0 ? _a : {};\n            if (dragSnapToOrigin)\n                transition = { min: 0, max: 0 };\n            /**\n             * Overdamp the boundary spring if `dragElastic` is disabled. There's still a frame\n             * of spring animations so we should look into adding a disable spring option to `inertia`.\n             * We could do something here where we affect the `bounceStiffness` and `bounceDamping`\n             * using the value of `dragElastic`.\n             */\n            var bounceStiffness = dragElastic ? 200 : 1000000;\n            var bounceDamping = dragElastic ? 40 : 10000000;\n            var inertia = __assign(__assign({ type: \"inertia\", velocity: dragMomentum ? velocity[axis] : 0, bounceStiffness: bounceStiffness, bounceDamping: bounceDamping, timeConstant: 750, restDelta: 1, restSpeed: 10 }, dragTransition), transition);\n            // If we're not animating on an externally-provided `MotionValue` we can use the\n            // component's animation controls which will handle interactions with whileHover (etc),\n            // otherwise we just have to animate the `MotionValue` itself.\n            return _this.startAxisValueAnimation(axis, inertia);\n        });\n        // Run all animations and then resolve the new drag constraints.\n        return Promise.all(momentumAnimations).then(onDragTransitionEnd);\n    };\n    VisualElementDragControls.prototype.startAxisValueAnimation = function (axis, transition) {\n        var axisValue = this.getAxisMotionValue(axis);\n        return startAnimation(axis, axisValue, 0, transition);\n    };\n    VisualElementDragControls.prototype.stopAnimation = function () {\n        var _this = this;\n        eachAxis(function (axis) { return _this.getAxisMotionValue(axis).stop(); });\n    };\n    /**\n     * Drag works differently depending on which props are provided.\n     *\n     * - If _dragX and _dragY are provided, we output the gesture delta directly to those motion values.\n     * - Otherwise, we apply the delta to the x/y motion values.\n     */\n    VisualElementDragControls.prototype.getAxisMotionValue = function (axis) {\n        var _a, _b;\n        var dragKey = \"_drag\" + axis.toUpperCase();\n        var externalMotionValue = this.visualElement.getProps()[dragKey];\n        return externalMotionValue\n            ? externalMotionValue\n            : this.visualElement.getValue(axis, (_b = (_a = this.visualElement.getProps().initial) === null || _a === void 0 ? void 0 : _a[axis]) !== null && _b !== void 0 ? _b : 0);\n    };\n    VisualElementDragControls.prototype.snapToCursor = function (point) {\n        var _this = this;\n        eachAxis(function (axis) {\n            var drag = _this.getProps().drag;\n            // If we're not dragging this axis, do an early return.\n            if (!shouldDrag(axis, drag, _this.currentDirection))\n                return;\n            var projection = _this.visualElement.projection;\n            var axisValue = _this.getAxisMotionValue(axis);\n            if (projection && projection.layout) {\n                var _a = projection.layout.actual[axis], min = _a.min, max = _a.max;\n                axisValue.set(point[axis] - mix(min, max, 0.5));\n            }\n        });\n    };\n    /**\n     * When the viewport resizes we want to check if the measured constraints\n     * have changed and, if so, reposition the element within those new constraints\n     * relative to where it was before the resize.\n     */\n    VisualElementDragControls.prototype.scalePositionWithinConstraints = function () {\n        var _this = this;\n        var _a;\n        var _b = this.getProps(), drag = _b.drag, dragConstraints = _b.dragConstraints;\n        var projection = this.visualElement.projection;\n        if (!isRefObject(dragConstraints) || !projection || !this.constraints)\n            return;\n        /**\n         * Stop current animations as there can be visual glitching if we try to do\n         * this mid-animation\n         */\n        this.stopAnimation();\n        /**\n         * Record the relative position of the dragged element relative to the\n         * constraints box and save as a progress value.\n         */\n        var boxProgress = { x: 0, y: 0 };\n        eachAxis(function (axis) {\n            var axisValue = _this.getAxisMotionValue(axis);\n            if (axisValue) {\n                var latest = axisValue.get();\n                boxProgress[axis] = calcOrigin({ min: latest, max: latest }, _this.constraints[axis]);\n            }\n        });\n        /**\n         * Update the layout of this element and resolve the latest drag constraints\n         */\n        var transformTemplate = this.visualElement.getProps().transformTemplate;\n        this.visualElement.getInstance().style.transform = transformTemplate\n            ? transformTemplate({}, \"\")\n            : \"none\";\n        (_a = projection.root) === null || _a === void 0 ? void 0 : _a.updateScroll();\n        projection.updateLayout();\n        this.resolveConstraints();\n        /**\n         * For each axis, calculate the current progress of the layout axis\n         * within the new constraints.\n         */\n        eachAxis(function (axis) {\n            if (!shouldDrag(axis, drag, null))\n                return;\n            /**\n             * Calculate a new transform based on the previous box progress\n             */\n            var axisValue = _this.getAxisMotionValue(axis);\n            var _a = _this.constraints[axis], min = _a.min, max = _a.max;\n            axisValue.set(mix(min, max, boxProgress[axis]));\n        });\n    };\n    VisualElementDragControls.prototype.addListeners = function () {\n        var _this = this;\n        var _a;\n        elementDragControls.set(this.visualElement, this);\n        var element = this.visualElement.getInstance();\n        /**\n         * Attach a pointerdown event listener on this DOM element to initiate drag tracking.\n         */\n        var stopPointerListener = addPointerEvent(element, \"pointerdown\", function (event) {\n            var _a = _this.getProps(), drag = _a.drag, _b = _a.dragListener, dragListener = _b === void 0 ? true : _b;\n            drag && dragListener && _this.start(event);\n        });\n        var measureDragConstraints = function () {\n            var dragConstraints = _this.getProps().dragConstraints;\n            if (isRefObject(dragConstraints)) {\n                _this.constraints = _this.resolveRefConstraints();\n            }\n        };\n        var projection = this.visualElement.projection;\n        var stopMeasureLayoutListener = projection.addEventListener(\"measure\", measureDragConstraints);\n        if (projection && !projection.layout) {\n            (_a = projection.root) === null || _a === void 0 ? void 0 : _a.updateScroll();\n            projection.updateLayout();\n        }\n        measureDragConstraints();\n        /**\n         * Attach a window resize listener to scale the draggable target within its defined\n         * constraints as the window resizes.\n         */\n        var stopResizeListener = addDomEvent(window, \"resize\", function () {\n            return _this.scalePositionWithinConstraints();\n        });\n        /**\n         * If the element's layout changes, calculate the delta and apply that to\n         * the drag gesture's origin point.\n         */\n        projection.addEventListener(\"didUpdate\", (function (_a) {\n            var delta = _a.delta, hasLayoutChanged = _a.hasLayoutChanged;\n            if (_this.isDragging && hasLayoutChanged) {\n                eachAxis(function (axis) {\n                    var motionValue = _this.getAxisMotionValue(axis);\n                    if (!motionValue)\n                        return;\n                    _this.originPoint[axis] += delta[axis].translate;\n                    motionValue.set(motionValue.get() + delta[axis].translate);\n                });\n                _this.visualElement.syncRender();\n            }\n        }));\n        return function () {\n            stopResizeListener();\n            stopPointerListener();\n            stopMeasureLayoutListener();\n        };\n    };\n    VisualElementDragControls.prototype.getProps = function () {\n        var props = this.visualElement.getProps();\n        var _a = props.drag, drag = _a === void 0 ? false : _a, _b = props.dragDirectionLock, dragDirectionLock = _b === void 0 ? false : _b, _c = props.dragPropagation, dragPropagation = _c === void 0 ? false : _c, _d = props.dragConstraints, dragConstraints = _d === void 0 ? false : _d, _e = props.dragElastic, dragElastic = _e === void 0 ? defaultElastic : _e, _f = props.dragMomentum, dragMomentum = _f === void 0 ? true : _f;\n        return __assign(__assign({}, props), { drag: drag, dragDirectionLock: dragDirectionLock, dragPropagation: dragPropagation, dragConstraints: dragConstraints, dragElastic: dragElastic, dragMomentum: dragMomentum });\n    };\n    return VisualElementDragControls;\n}());\nfunction shouldDrag(direction, drag, currentDirection) {\n    return ((drag === true || drag === direction) &&\n        (currentDirection === null || currentDirection === direction));\n}\n/**\n * Based on an x/y offset determine the current drag direction. If both axis' offsets are lower\n * than the provided threshold, return `null`.\n *\n * @param offset - The x/y offset from origin.\n * @param lockThreshold - (Optional) - the minimum absolute offset before we can determine a drag direction.\n */\nfunction getCurrentDirection(offset, lockThreshold) {\n    if (lockThreshold === void 0) { lockThreshold = 10; }\n    var direction = null;\n    if (Math.abs(offset.y) > lockThreshold) {\n        direction = \"y\";\n    }\n    else if (Math.abs(offset.x) > lockThreshold) {\n        direction = \"x\";\n    }\n    return direction;\n}\n\nexport { VisualElementDragControls, elementDragControls };\n","import { useRef, useContext, useEffect } from 'react';\nimport { MotionConfigContext } from '../context/MotionConfigContext.mjs';\nimport { useUnmountEffect } from '../utils/use-unmount-effect.mjs';\nimport { usePointerEvent } from '../events/use-pointer-event.mjs';\nimport { PanSession } from './PanSession.mjs';\n\n/**\n *\n * @param handlers -\n * @param ref -\n *\n * @privateRemarks\n * Currently this sets new pan gesture functions every render. The memo route has been explored\n * in the past but ultimately we're still creating new functions every render. An optimisation\n * to explore is creating the pan gestures and loading them into a `ref`.\n *\n * @internal\n */\nfunction usePanGesture(_a) {\n    var onPan = _a.onPan, onPanStart = _a.onPanStart, onPanEnd = _a.onPanEnd, onPanSessionStart = _a.onPanSessionStart, visualElement = _a.visualElement;\n    var hasPanEvents = onPan || onPanStart || onPanEnd || onPanSessionStart;\n    var panSession = useRef(null);\n    var transformPagePoint = useContext(MotionConfigContext).transformPagePoint;\n    var handlers = {\n        onSessionStart: onPanSessionStart,\n        onStart: onPanStart,\n        onMove: onPan,\n        onEnd: function (event, info) {\n            panSession.current = null;\n            onPanEnd && onPanEnd(event, info);\n        },\n    };\n    useEffect(function () {\n        if (panSession.current !== null) {\n            panSession.current.updateHandlers(handlers);\n        }\n    });\n    function onPointerDown(event) {\n        panSession.current = new PanSession(event, handlers, {\n            transformPagePoint: transformPagePoint,\n        });\n    }\n    usePointerEvent(visualElement, \"pointerdown\", hasPanEvents && onPointerDown);\n    useUnmountEffect(function () { return panSession.current && panSession.current.end(); });\n}\n\nexport { usePanGesture };\n","import { useDrag } from '../../gestures/drag/use-drag.mjs';\nimport { usePanGesture } from '../../gestures/use-pan-gesture.mjs';\nimport { makeRenderlessComponent } from '../utils/make-renderless-component.mjs';\n\nvar drag = {\n    pan: makeRenderlessComponent(usePanGesture),\n    drag: makeRenderlessComponent(useDrag),\n};\n\nexport { drag };\n","import { __spreadArray, __read } from 'tslib';\nimport { SubscriptionManager } from '../../utils/subscription-manager.mjs';\n\nvar names = [\n    \"LayoutMeasure\",\n    \"BeforeLayoutMeasure\",\n    \"LayoutUpdate\",\n    \"ViewportBoxUpdate\",\n    \"Update\",\n    \"Render\",\n    \"AnimationComplete\",\n    \"LayoutAnimationComplete\",\n    \"AnimationStart\",\n    \"LayoutAnimationStart\",\n    \"SetAxisTarget\",\n    \"Unmount\",\n];\nfunction createLifecycles() {\n    var managers = names.map(function () { return new SubscriptionManager(); });\n    var propSubscriptions = {};\n    var lifecycles = {\n        clearAllListeners: function () { return managers.forEach(function (manager) { return manager.clear(); }); },\n        updatePropListeners: function (props) {\n            names.forEach(function (name) {\n                var _a;\n                var on = \"on\" + name;\n                var propListener = props[on];\n                // Unsubscribe existing subscription\n                (_a = propSubscriptions[name]) === null || _a === void 0 ? void 0 : _a.call(propSubscriptions);\n                // Add new subscription\n                if (propListener) {\n                    propSubscriptions[name] = lifecycles[on](propListener);\n                }\n            });\n        },\n    };\n    managers.forEach(function (manager, i) {\n        lifecycles[\"on\" + names[i]] = function (handler) { return manager.add(handler); };\n        lifecycles[\"notify\" + names[i]] = function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            return manager.notify.apply(manager, __spreadArray([], __read(args), false));\n        };\n    });\n    return lifecycles;\n}\n\nexport { createLifecycles };\n","import { warnOnce } from '../../utils/warn-once.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction updateMotionValuesFromProps(element, next, prev) {\n    var _a;\n    for (var key in next) {\n        var nextValue = next[key];\n        var prevValue = prev[key];\n        if (isMotionValue(nextValue)) {\n            /**\n             * If this is a motion value found in props or style, we want to add it\n             * to our visual element's motion value map.\n             */\n            element.addValue(key, nextValue);\n            /**\n             * Check the version of the incoming motion value with this version\n             * and warn against mismatches.\n             */\n            if (process.env.NODE_ENV === \"development\") {\n                warnOnce(nextValue.version === \"6.5.1\", \"Attempting to mix Framer Motion versions \".concat(nextValue.version, \" with 6.5.1 may not work as expected.\"));\n            }\n        }\n        else if (isMotionValue(prevValue)) {\n            /**\n             * If we're swapping to a new motion value, create a new motion value\n             * from that\n             */\n            element.addValue(key, motionValue(nextValue));\n        }\n        else if (prevValue !== nextValue) {\n            /**\n             * If this is a flat value that has changed, update the motion value\n             * or create one if it doesn't exist. We only want to do this if we're\n             * not handling the value with our animation state.\n             */\n            if (element.hasValue(key)) {\n                var existingValue = element.getValue(key);\n                // TODO: Only update values that aren't being animated or even looked at\n                !existingValue.hasAnimated && existingValue.set(nextValue);\n            }\n            else {\n                element.addValue(key, motionValue((_a = element.getStaticValue(key)) !== null && _a !== void 0 ? _a : nextValue));\n            }\n        }\n    }\n    // Handle removed values\n    for (var key in prev) {\n        if (next[key] === undefined)\n            element.removeValue(key);\n    }\n    return next;\n}\n\nexport { updateMotionValuesFromProps };\n","import { __assign, __spreadArray, __read } from 'tslib';\nimport sync, { cancelSync } from 'framesync';\nimport { motionValue } from '../value/index.mjs';\nimport { isMotionValue } from '../value/utils/is-motion-value.mjs';\nimport { variantPriorityOrder } from './utils/animation-state.mjs';\nimport { createLifecycles } from './utils/lifecycles.mjs';\nimport { updateMotionValuesFromProps } from './utils/motion-values.mjs';\nimport { checkIfControllingVariants, checkIfVariantNode, isVariantLabel } from './utils/variants.mjs';\n\nvar visualElement = function (_a) {\n    var _b = _a.treeType, treeType = _b === void 0 ? \"\" : _b, build = _a.build, getBaseTarget = _a.getBaseTarget, makeTargetAnimatable = _a.makeTargetAnimatable, measureViewportBox = _a.measureViewportBox, renderInstance = _a.render, readValueFromInstance = _a.readValueFromInstance, removeValueFromRenderState = _a.removeValueFromRenderState, sortNodePosition = _a.sortNodePosition, scrapeMotionValuesFromProps = _a.scrapeMotionValuesFromProps;\n    return function (_a, options) {\n        var parent = _a.parent, props = _a.props, presenceId = _a.presenceId, blockInitialAnimation = _a.blockInitialAnimation, visualState = _a.visualState, shouldReduceMotion = _a.shouldReduceMotion;\n        if (options === void 0) { options = {}; }\n        var isMounted = false;\n        var latestValues = visualState.latestValues, renderState = visualState.renderState;\n        /**\n         * The instance of the render-specific node that will be hydrated by the\n         * exposed React ref. So for example, this visual element can host a\n         * HTMLElement, plain object, or Three.js object. The functions provided\n         * in VisualElementConfig allow us to interface with this instance.\n         */\n        var instance;\n        /**\n         * Manages the subscriptions for a visual element's lifecycle, for instance\n         * onRender\n         */\n        var lifecycles = createLifecycles();\n        /**\n         * A map of all motion values attached to this visual element. Motion\n         * values are source of truth for any given animated value. A motion\n         * value might be provided externally by the component via props.\n         */\n        var values = new Map();\n        /**\n         * A map of every subscription that binds the provided or generated\n         * motion values onChange listeners to this visual element.\n         */\n        var valueSubscriptions = new Map();\n        /**\n         * A reference to the previously-provided motion values as returned\n         * from scrapeMotionValuesFromProps. We use the keys in here to determine\n         * if any motion values need to be removed after props are updated.\n         */\n        var prevMotionValues = {};\n        /**\n         * When values are removed from all animation props we need to search\n         * for a fallback value to animate to. These values are tracked in baseTarget.\n         */\n        var baseTarget = __assign({}, latestValues);\n        // Internal methods ========================\n        /**\n         * On mount, this will be hydrated with a callback to disconnect\n         * this visual element from its parent on unmount.\n         */\n        var removeFromVariantTree;\n        /**\n         * Render the element with the latest styles outside of the React\n         * render lifecycle\n         */\n        function render() {\n            if (!instance || !isMounted)\n                return;\n            triggerBuild();\n            renderInstance(instance, renderState, props.style, element.projection);\n        }\n        function triggerBuild() {\n            build(element, renderState, latestValues, options, props);\n        }\n        function update() {\n            lifecycles.notifyUpdate(latestValues);\n        }\n        /**\n         *\n         */\n        function bindToMotionValue(key, value) {\n            var removeOnChange = value.onChange(function (latestValue) {\n                latestValues[key] = latestValue;\n                props.onUpdate && sync.update(update, false, true);\n            });\n            var removeOnRenderRequest = value.onRenderRequest(element.scheduleRender);\n            valueSubscriptions.set(key, function () {\n                removeOnChange();\n                removeOnRenderRequest();\n            });\n        }\n        /**\n         * Any motion values that are provided to the element when created\n         * aren't yet bound to the element, as this would technically be impure.\n         * However, we iterate through the motion values and set them to the\n         * initial values for this component.\n         *\n         * TODO: This is impure and we should look at changing this to run on mount.\n         * Doing so will break some tests but this isn't neccessarily a breaking change,\n         * more a reflection of the test.\n         */\n        var initialMotionValues = scrapeMotionValuesFromProps(props);\n        for (var key in initialMotionValues) {\n            var value = initialMotionValues[key];\n            if (latestValues[key] !== undefined && isMotionValue(value)) {\n                value.set(latestValues[key], false);\n            }\n        }\n        /**\n         * Determine what role this visual element should take in the variant tree.\n         */\n        var isControllingVariants = checkIfControllingVariants(props);\n        var isVariantNode = checkIfVariantNode(props);\n        var element = __assign(__assign({ treeType: treeType, \n            /**\n             * This is a mirror of the internal instance prop, which keeps\n             * VisualElement type-compatible with React's RefObject.\n             */\n            current: null, \n            /**\n             * The depth of this visual element within the visual element tree.\n             */\n            depth: parent ? parent.depth + 1 : 0, parent: parent, children: new Set(), \n            /**\n             *\n             */\n            presenceId: presenceId, shouldReduceMotion: shouldReduceMotion, \n            /**\n             * If this component is part of the variant tree, it should track\n             * any children that are also part of the tree. This is essentially\n             * a shadow tree to simplify logic around how to stagger over children.\n             */\n            variantChildren: isVariantNode ? new Set() : undefined, \n            /**\n             * Whether this instance is visible. This can be changed imperatively\n             * by the projection tree, is analogous to CSS's visibility in that\n             * hidden elements should take up layout, and needs enacting by the configured\n             * render function.\n             */\n            isVisible: undefined, \n            /**\n             * Normally, if a component is controlled by a parent's variants, it can\n             * rely on that ancestor to trigger animations further down the tree.\n             * However, if a component is created after its parent is mounted, the parent\n             * won't trigger that mount animation so the child needs to.\n             *\n             * TODO: This might be better replaced with a method isParentMounted\n             */\n            manuallyAnimateOnMount: Boolean(parent === null || parent === void 0 ? void 0 : parent.isMounted()), \n            /**\n             * This can be set by AnimatePresence to force components that mount\n             * at the same time as it to mount as if they have initial={false} set.\n             */\n            blockInitialAnimation: blockInitialAnimation, \n            /**\n             * Determine whether this component has mounted yet. This is mostly used\n             * by variant children to determine whether they need to trigger their\n             * own animations on mount.\n             */\n            isMounted: function () { return Boolean(instance); }, mount: function (newInstance) {\n                isMounted = true;\n                instance = element.current = newInstance;\n                if (element.projection) {\n                    element.projection.mount(newInstance);\n                }\n                if (isVariantNode && parent && !isControllingVariants) {\n                    removeFromVariantTree = parent === null || parent === void 0 ? void 0 : parent.addVariantChild(element);\n                }\n                values.forEach(function (value, key) { return bindToMotionValue(key, value); });\n                parent === null || parent === void 0 ? void 0 : parent.children.add(element);\n                element.setProps(props);\n            }, \n            /**\n             *\n             */\n            unmount: function () {\n                var _a;\n                (_a = element.projection) === null || _a === void 0 ? void 0 : _a.unmount();\n                cancelSync.update(update);\n                cancelSync.render(render);\n                valueSubscriptions.forEach(function (remove) { return remove(); });\n                removeFromVariantTree === null || removeFromVariantTree === void 0 ? void 0 : removeFromVariantTree();\n                parent === null || parent === void 0 ? void 0 : parent.children.delete(element);\n                lifecycles.clearAllListeners();\n                instance = undefined;\n                isMounted = false;\n            }, \n            /**\n             * Add a child visual element to our set of children.\n             */\n            addVariantChild: function (child) {\n                var _a;\n                var closestVariantNode = element.getClosestVariantNode();\n                if (closestVariantNode) {\n                    (_a = closestVariantNode.variantChildren) === null || _a === void 0 ? void 0 : _a.add(child);\n                    return function () {\n                        return closestVariantNode.variantChildren.delete(child);\n                    };\n                }\n            }, sortNodePosition: function (other) {\n                /**\n                 * If these nodes aren't even of the same type we can't compare their depth.\n                 */\n                if (!sortNodePosition || treeType !== other.treeType)\n                    return 0;\n                return sortNodePosition(element.getInstance(), other.getInstance());\n            }, \n            /**\n             * Returns the closest variant node in the tree starting from\n             * this visual element.\n             */\n            getClosestVariantNode: function () {\n                return isVariantNode ? element : parent === null || parent === void 0 ? void 0 : parent.getClosestVariantNode();\n            }, \n            /**\n             * Expose the latest layoutId prop.\n             */\n            getLayoutId: function () { return props.layoutId; }, \n            /**\n             * Returns the current instance.\n             */\n            getInstance: function () { return instance; }, \n            /**\n             * Get/set the latest static values.\n             */\n            getStaticValue: function (key) { return latestValues[key]; }, setStaticValue: function (key, value) { return (latestValues[key] = value); }, \n            /**\n             * Returns the latest motion value state. Currently only used to take\n             * a snapshot of the visual element - perhaps this can return the whole\n             * visual state\n             */\n            getLatestValues: function () { return latestValues; }, \n            /**\n             * Set the visiblity of the visual element. If it's changed, schedule\n             * a render to reflect these changes.\n             */\n            setVisibility: function (visibility) {\n                if (element.isVisible === visibility)\n                    return;\n                element.isVisible = visibility;\n                element.scheduleRender();\n            }, \n            /**\n             * Make a target animatable by Popmotion. For instance, if we're\n             * trying to animate width from 100px to 100vw we need to measure 100vw\n             * in pixels to determine what we really need to animate to. This is also\n             * pluggable to support Framer's custom value types like Color,\n             * and CSS variables.\n             */\n            makeTargetAnimatable: function (target, canMutate) {\n                if (canMutate === void 0) { canMutate = true; }\n                return makeTargetAnimatable(element, target, props, canMutate);\n            }, \n            /**\n             * Measure the current viewport box with or without transforms.\n             * Only measures axis-aligned boxes, rotate and skew must be manually\n             * removed with a re-render to work.\n             */\n            measureViewportBox: function () {\n                return measureViewportBox(instance, props);\n            }, \n            // Motion values ========================\n            /**\n             * Add a motion value and bind it to this visual element.\n             */\n            addValue: function (key, value) {\n                // Remove existing value if it exists\n                if (element.hasValue(key))\n                    element.removeValue(key);\n                values.set(key, value);\n                latestValues[key] = value.get();\n                bindToMotionValue(key, value);\n            }, \n            /**\n             * Remove a motion value and unbind any active subscriptions.\n             */\n            removeValue: function (key) {\n                var _a;\n                values.delete(key);\n                (_a = valueSubscriptions.get(key)) === null || _a === void 0 ? void 0 : _a();\n                valueSubscriptions.delete(key);\n                delete latestValues[key];\n                removeValueFromRenderState(key, renderState);\n            }, \n            /**\n             * Check whether we have a motion value for this key\n             */\n            hasValue: function (key) { return values.has(key); }, \n            /**\n             * Get a motion value for this key. If called with a default\n             * value, we'll create one if none exists.\n             */\n            getValue: function (key, defaultValue) {\n                var value = values.get(key);\n                if (value === undefined && defaultValue !== undefined) {\n                    value = motionValue(defaultValue);\n                    element.addValue(key, value);\n                }\n                return value;\n            }, \n            /**\n             * Iterate over our motion values.\n             */\n            forEachValue: function (callback) { return values.forEach(callback); }, \n            /**\n             * If we're trying to animate to a previously unencountered value,\n             * we need to check for it in our state and as a last resort read it\n             * directly from the instance (which might have performance implications).\n             */\n            readValue: function (key) {\n                var _a;\n                return (_a = latestValues[key]) !== null && _a !== void 0 ? _a : readValueFromInstance(instance, key, options);\n            }, \n            /**\n             * Set the base target to later animate back to. This is currently\n             * only hydrated on creation and when we first read a value.\n             */\n            setBaseTarget: function (key, value) {\n                baseTarget[key] = value;\n            }, \n            /**\n             * Find the base target for a value thats been removed from all animation\n             * props.\n             */\n            getBaseTarget: function (key) {\n                if (getBaseTarget) {\n                    var target = getBaseTarget(props, key);\n                    if (target !== undefined && !isMotionValue(target))\n                        return target;\n                }\n                return baseTarget[key];\n            } }, lifecycles), { \n            /**\n             * Build the renderer state based on the latest visual state.\n             */\n            build: function () {\n                triggerBuild();\n                return renderState;\n            }, \n            /**\n             * Schedule a render on the next animation frame.\n             */\n            scheduleRender: function () {\n                sync.render(render, false, true);\n            }, \n            /**\n             * Synchronously fire render. It's prefered that we batch renders but\n             * in many circumstances, like layout measurement, we need to run this\n             * synchronously. However in those instances other measures should be taken\n             * to batch reads/writes.\n             */\n            syncRender: render, \n            /**\n             * Update the provided props. Ensure any newly-added motion values are\n             * added to our map, old ones removed, and listeners updated.\n             */\n            setProps: function (newProps) {\n                if (newProps.transformTemplate || props.transformTemplate) {\n                    element.scheduleRender();\n                }\n                props = newProps;\n                lifecycles.updatePropListeners(newProps);\n                prevMotionValues = updateMotionValuesFromProps(element, scrapeMotionValuesFromProps(props), prevMotionValues);\n            }, getProps: function () { return props; }, \n            // Variants ==============================\n            /**\n             * Returns the variant definition with a given name.\n             */\n            getVariant: function (name) { var _a; return (_a = props.variants) === null || _a === void 0 ? void 0 : _a[name]; }, \n            /**\n             * Returns the defined default transition on this component.\n             */\n            getDefaultTransition: function () { return props.transition; }, getTransformPagePoint: function () {\n                return props.transformPagePoint;\n            }, \n            /**\n             * Used by child variant nodes to get the closest ancestor variant props.\n             */\n            getVariantContext: function (startAtParent) {\n                if (startAtParent === void 0) { startAtParent = false; }\n                if (startAtParent)\n                    return parent === null || parent === void 0 ? void 0 : parent.getVariantContext();\n                if (!isControllingVariants) {\n                    var context_1 = (parent === null || parent === void 0 ? void 0 : parent.getVariantContext()) || {};\n                    if (props.initial !== undefined) {\n                        context_1.initial = props.initial;\n                    }\n                    return context_1;\n                }\n                var context = {};\n                for (var i = 0; i < numVariantProps; i++) {\n                    var name_1 = variantProps[i];\n                    var prop = props[name_1];\n                    if (isVariantLabel(prop) || prop === false) {\n                        context[name_1] = prop;\n                    }\n                }\n                return context;\n            } });\n        return element;\n    };\n};\nvar variantProps = __spreadArray([\"initial\"], __read(variantPriorityOrder), false);\nvar numVariantProps = variantProps.length;\n\nexport { visualElement };\n","import { __rest, __assign, __read } from 'tslib';\nimport { invariant } from 'hey-listen';\n\nfunction isCSSVariable(value) {\n    return typeof value === \"string\" && value.startsWith(\"var(--\");\n}\n/**\n * Parse Framer's special CSS variable format into a CSS token and a fallback.\n *\n * ```\n * `var(--foo, #fff)` => [`--foo`, '#fff']\n * ```\n *\n * @param current\n */\nvar cssVariableRegex = /var\\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\\)/;\nfunction parseCSSVariable(current) {\n    var match = cssVariableRegex.exec(current);\n    if (!match)\n        return [,];\n    var _a = __read(match, 3), token = _a[1], fallback = _a[2];\n    return [token, fallback];\n}\nvar maxDepth = 4;\nfunction getVariableValue(current, element, depth) {\n    if (depth === void 0) { depth = 1; }\n    invariant(depth <= maxDepth, \"Max CSS variable fallback depth detected in property \\\"\".concat(current, \"\\\". This may indicate a circular fallback dependency.\"));\n    var _a = __read(parseCSSVariable(current), 2), token = _a[0], fallback = _a[1];\n    // No CSS variable detected\n    if (!token)\n        return;\n    // Attempt to read this CSS variable off the element\n    var resolved = window.getComputedStyle(element).getPropertyValue(token);\n    if (resolved) {\n        return resolved.trim();\n    }\n    else if (isCSSVariable(fallback)) {\n        // The fallback might itself be a CSS variable, in which case we attempt to resolve it too.\n        return getVariableValue(fallback, element, depth + 1);\n    }\n    else {\n        return fallback;\n    }\n}\n/**\n * Resolve CSS variables from\n *\n * @internal\n */\nfunction resolveCSSVariables(visualElement, _a, transitionEnd) {\n    var _b;\n    var target = __rest(_a, []);\n    var element = visualElement.getInstance();\n    if (!(element instanceof Element))\n        return { target: target, transitionEnd: transitionEnd };\n    // If `transitionEnd` isn't `undefined`, clone it. We could clone `target` and `transitionEnd`\n    // only if they change but I think this reads clearer and this isn't a performance-critical path.\n    if (transitionEnd) {\n        transitionEnd = __assign({}, transitionEnd);\n    }\n    // Go through existing `MotionValue`s and ensure any existing CSS variables are resolved\n    visualElement.forEachValue(function (value) {\n        var current = value.get();\n        if (!isCSSVariable(current))\n            return;\n        var resolved = getVariableValue(current, element);\n        if (resolved)\n            value.set(resolved);\n    });\n    // Cycle through every target property and resolve CSS variables. Currently\n    // we only read single-var properties like `var(--foo)`, not `calc(var(--foo) + 20px)`\n    for (var key in target) {\n        var current = target[key];\n        if (!isCSSVariable(current))\n            continue;\n        var resolved = getVariableValue(current, element);\n        if (!resolved)\n            continue;\n        // Clone target if it hasn't already been\n        target[key] = resolved;\n        // If the user hasn't already set this key on `transitionEnd`, set it to the unresolved\n        // CSS variable. This will ensure that after the animation the component will reflect\n        // changes in the value of the CSS variable.\n        if (transitionEnd)\n            (_b = transitionEnd[key]) !== null && _b !== void 0 ? _b : (transitionEnd[key] = current);\n    }\n    return { target: target, transitionEnd: transitionEnd };\n}\n\nexport { cssVariableRegex, parseCSSVariable, resolveCSSVariables };\n","import { __assign, __read } from 'tslib';\nimport { number, px } from 'style-value-types';\nimport { isKeyframesTarget } from '../../../animation/utils/is-keyframes-target.mjs';\nimport { invariant } from 'hey-listen';\nimport { transformProps } from '../../html/utils/transform.mjs';\nimport { findDimensionValueType } from '../value-types/dimensions.mjs';\n\nvar positionalKeys = new Set([\n    \"width\",\n    \"height\",\n    \"top\",\n    \"left\",\n    \"right\",\n    \"bottom\",\n    \"x\",\n    \"y\",\n]);\nvar isPositionalKey = function (key) { return positionalKeys.has(key); };\nvar hasPositionalKey = function (target) {\n    return Object.keys(target).some(isPositionalKey);\n};\nvar setAndResetVelocity = function (value, to) {\n    // Looks odd but setting it twice doesn't render, it'll just\n    // set both prev and current to the latest value\n    value.set(to, false);\n    value.set(to);\n};\nvar isNumOrPxType = function (v) {\n    return v === number || v === px;\n};\nvar BoundingBoxDimension;\n(function (BoundingBoxDimension) {\n    BoundingBoxDimension[\"width\"] = \"width\";\n    BoundingBoxDimension[\"height\"] = \"height\";\n    BoundingBoxDimension[\"left\"] = \"left\";\n    BoundingBoxDimension[\"right\"] = \"right\";\n    BoundingBoxDimension[\"top\"] = \"top\";\n    BoundingBoxDimension[\"bottom\"] = \"bottom\";\n})(BoundingBoxDimension || (BoundingBoxDimension = {}));\nvar getPosFromMatrix = function (matrix, pos) {\n    return parseFloat(matrix.split(\", \")[pos]);\n};\nvar getTranslateFromMatrix = function (pos2, pos3) {\n    return function (_bbox, _a) {\n        var transform = _a.transform;\n        if (transform === \"none\" || !transform)\n            return 0;\n        var matrix3d = transform.match(/^matrix3d\\((.+)\\)$/);\n        if (matrix3d) {\n            return getPosFromMatrix(matrix3d[1], pos3);\n        }\n        else {\n            var matrix = transform.match(/^matrix\\((.+)\\)$/);\n            if (matrix) {\n                return getPosFromMatrix(matrix[1], pos2);\n            }\n            else {\n                return 0;\n            }\n        }\n    };\n};\nvar transformKeys = new Set([\"x\", \"y\", \"z\"]);\nvar nonTranslationalTransformKeys = transformProps.filter(function (key) { return !transformKeys.has(key); });\nfunction removeNonTranslationalTransform(visualElement) {\n    var removedTransforms = [];\n    nonTranslationalTransformKeys.forEach(function (key) {\n        var value = visualElement.getValue(key);\n        if (value !== undefined) {\n            removedTransforms.push([key, value.get()]);\n            value.set(key.startsWith(\"scale\") ? 1 : 0);\n        }\n    });\n    // Apply changes to element before measurement\n    if (removedTransforms.length)\n        visualElement.syncRender();\n    return removedTransforms;\n}\nvar positionalValues = {\n    // Dimensions\n    width: function (_a, _b) {\n        var x = _a.x;\n        var _c = _b.paddingLeft, paddingLeft = _c === void 0 ? \"0\" : _c, _d = _b.paddingRight, paddingRight = _d === void 0 ? \"0\" : _d;\n        return x.max - x.min - parseFloat(paddingLeft) - parseFloat(paddingRight);\n    },\n    height: function (_a, _b) {\n        var y = _a.y;\n        var _c = _b.paddingTop, paddingTop = _c === void 0 ? \"0\" : _c, _d = _b.paddingBottom, paddingBottom = _d === void 0 ? \"0\" : _d;\n        return y.max - y.min - parseFloat(paddingTop) - parseFloat(paddingBottom);\n    },\n    top: function (_bbox, _a) {\n        var top = _a.top;\n        return parseFloat(top);\n    },\n    left: function (_bbox, _a) {\n        var left = _a.left;\n        return parseFloat(left);\n    },\n    bottom: function (_a, _b) {\n        var y = _a.y;\n        var top = _b.top;\n        return parseFloat(top) + (y.max - y.min);\n    },\n    right: function (_a, _b) {\n        var x = _a.x;\n        var left = _b.left;\n        return parseFloat(left) + (x.max - x.min);\n    },\n    // Transform\n    x: getTranslateFromMatrix(4, 13),\n    y: getTranslateFromMatrix(5, 14),\n};\nvar convertChangedValueTypes = function (target, visualElement, changedKeys) {\n    var originBbox = visualElement.measureViewportBox();\n    var element = visualElement.getInstance();\n    var elementComputedStyle = getComputedStyle(element);\n    var display = elementComputedStyle.display;\n    var origin = {};\n    // If the element is currently set to display: \"none\", make it visible before\n    // measuring the target bounding box\n    if (display === \"none\") {\n        visualElement.setStaticValue(\"display\", target.display || \"block\");\n    }\n    /**\n     * Record origins before we render and update styles\n     */\n    changedKeys.forEach(function (key) {\n        origin[key] = positionalValues[key](originBbox, elementComputedStyle);\n    });\n    // Apply the latest values (as set in checkAndConvertChangedValueTypes)\n    visualElement.syncRender();\n    var targetBbox = visualElement.measureViewportBox();\n    changedKeys.forEach(function (key) {\n        // Restore styles to their **calculated computed style**, not their actual\n        // originally set style. This allows us to animate between equivalent pixel units.\n        var value = visualElement.getValue(key);\n        setAndResetVelocity(value, origin[key]);\n        target[key] = positionalValues[key](targetBbox, elementComputedStyle);\n    });\n    return target;\n};\nvar checkAndConvertChangedValueTypes = function (visualElement, target, origin, transitionEnd) {\n    if (origin === void 0) { origin = {}; }\n    if (transitionEnd === void 0) { transitionEnd = {}; }\n    target = __assign({}, target);\n    transitionEnd = __assign({}, transitionEnd);\n    var targetPositionalKeys = Object.keys(target).filter(isPositionalKey);\n    // We want to remove any transform values that could affect the element's bounding box before\n    // it's measured. We'll reapply these later.\n    var removedTransformValues = [];\n    var hasAttemptedToRemoveTransformValues = false;\n    var changedValueTypeKeys = [];\n    targetPositionalKeys.forEach(function (key) {\n        var value = visualElement.getValue(key);\n        if (!visualElement.hasValue(key))\n            return;\n        var from = origin[key];\n        var fromType = findDimensionValueType(from);\n        var to = target[key];\n        var toType;\n        // TODO: The current implementation of this basically throws an error\n        // if you try and do value conversion via keyframes. There's probably\n        // a way of doing this but the performance implications would need greater scrutiny,\n        // as it'd be doing multiple resize-remeasure operations.\n        if (isKeyframesTarget(to)) {\n            var numKeyframes = to.length;\n            var fromIndex = to[0] === null ? 1 : 0;\n            from = to[fromIndex];\n            fromType = findDimensionValueType(from);\n            for (var i = fromIndex; i < numKeyframes; i++) {\n                if (!toType) {\n                    toType = findDimensionValueType(to[i]);\n                    invariant(toType === fromType ||\n                        (isNumOrPxType(fromType) && isNumOrPxType(toType)), \"Keyframes must be of the same dimension as the current value\");\n                }\n                else {\n                    invariant(findDimensionValueType(to[i]) === toType, \"All keyframes must be of the same type\");\n                }\n            }\n        }\n        else {\n            toType = findDimensionValueType(to);\n        }\n        if (fromType !== toType) {\n            // If they're both just number or px, convert them both to numbers rather than\n            // relying on resize/remeasure to convert (which is wasteful in this situation)\n            if (isNumOrPxType(fromType) && isNumOrPxType(toType)) {\n                var current = value.get();\n                if (typeof current === \"string\") {\n                    value.set(parseFloat(current));\n                }\n                if (typeof to === \"string\") {\n                    target[key] = parseFloat(to);\n                }\n                else if (Array.isArray(to) && toType === px) {\n                    target[key] = to.map(parseFloat);\n                }\n            }\n            else if ((fromType === null || fromType === void 0 ? void 0 : fromType.transform) &&\n                (toType === null || toType === void 0 ? void 0 : toType.transform) &&\n                (from === 0 || to === 0)) {\n                // If one or the other value is 0, it's safe to coerce it to the\n                // type of the other without measurement\n                if (from === 0) {\n                    value.set(toType.transform(from));\n                }\n                else {\n                    target[key] = fromType.transform(to);\n                }\n            }\n            else {\n                // If we're going to do value conversion via DOM measurements, we first\n                // need to remove non-positional transform values that could affect the bbox measurements.\n                if (!hasAttemptedToRemoveTransformValues) {\n                    removedTransformValues =\n                        removeNonTranslationalTransform(visualElement);\n                    hasAttemptedToRemoveTransformValues = true;\n                }\n                changedValueTypeKeys.push(key);\n                transitionEnd[key] =\n                    transitionEnd[key] !== undefined\n                        ? transitionEnd[key]\n                        : target[key];\n                setAndResetVelocity(value, to);\n            }\n        }\n    });\n    if (changedValueTypeKeys.length) {\n        var scrollY_1 = changedValueTypeKeys.indexOf(\"height\") >= 0\n            ? window.pageYOffset\n            : null;\n        var convertedTarget = convertChangedValueTypes(target, visualElement, changedValueTypeKeys);\n        // If we removed transform values, reapply them before the next render\n        if (removedTransformValues.length) {\n            removedTransformValues.forEach(function (_a) {\n                var _b = __read(_a, 2), key = _b[0], value = _b[1];\n                visualElement.getValue(key).set(value);\n            });\n        }\n        // Reapply original values\n        visualElement.syncRender();\n        // Restore scroll position\n        if (scrollY_1 !== null)\n            window.scrollTo({ top: scrollY_1 });\n        return { target: convertedTarget, transitionEnd: transitionEnd };\n    }\n    else {\n        return { target: target, transitionEnd: transitionEnd };\n    }\n};\n/**\n * Convert value types for x/y/width/height/top/left/bottom/right\n *\n * Allows animation between `'auto'` -> `'100%'` or `0` -> `'calc(50% - 10vw)'`\n *\n * @internal\n */\nfunction unitConversion(visualElement, target, origin, transitionEnd) {\n    return hasPositionalKey(target)\n        ? checkAndConvertChangedValueTypes(visualElement, target, origin, transitionEnd)\n        : { target: target, transitionEnd: transitionEnd };\n}\n\nexport { BoundingBoxDimension, positionalValues, unitConversion };\n","import { resolveCSSVariables } from './css-variables-conversion.mjs';\nimport { unitConversion } from './unit-conversion.mjs';\n\n/**\n * Parse a DOM variant to make it animatable. This involves resolving CSS variables\n * and ensuring animations like \"20%\" => \"calc(50vw)\" are performed in pixels.\n */\nvar parseDomVariant = function (visualElement, target, origin, transitionEnd) {\n    var resolved = resolveCSSVariables(visualElement, target, transitionEnd);\n    target = resolved.target;\n    transitionEnd = resolved.transitionEnd;\n    return unitConversion(visualElement, target, origin, transitionEnd);\n};\n\nexport { parseDomVariant };\n","import { __rest, __assign } from 'tslib';\nimport { visualElement } from '../index.mjs';\nimport { getOrigin, checkTargetForNewValues } from '../utils/setters.mjs';\nimport { buildHTMLStyles } from './utils/build-styles.mjs';\nimport { isCSSVariable } from '../dom/utils/is-css-variable.mjs';\nimport { parseDomVariant } from '../dom/utils/parse-dom-variant.mjs';\nimport { isTransformProp } from './utils/transform.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { renderHTML } from './utils/render.mjs';\nimport { getDefaultValueType } from '../dom/value-types/defaults.mjs';\nimport { measureViewportBox } from '../../projection/utils/measure.mjs';\n\nfunction getComputedStyle(element) {\n    return window.getComputedStyle(element);\n}\nvar htmlConfig = {\n    treeType: \"dom\",\n    readValueFromInstance: function (domElement, key) {\n        if (isTransformProp(key)) {\n            var defaultType = getDefaultValueType(key);\n            return defaultType ? defaultType.default || 0 : 0;\n        }\n        else {\n            var computedStyle = getComputedStyle(domElement);\n            return ((isCSSVariable(key)\n                ? computedStyle.getPropertyValue(key)\n                : computedStyle[key]) || 0);\n        }\n    },\n    sortNodePosition: function (a, b) {\n        /**\n         * compareDocumentPosition returns a bitmask, by using the bitwise &\n         * we're returning true if 2 in that bitmask is set to true. 2 is set\n         * to true if b preceeds a.\n         */\n        return a.compareDocumentPosition(b) & 2 ? 1 : -1;\n    },\n    getBaseTarget: function (props, key) {\n        var _a;\n        return (_a = props.style) === null || _a === void 0 ? void 0 : _a[key];\n    },\n    measureViewportBox: function (element, _a) {\n        var transformPagePoint = _a.transformPagePoint;\n        return measureViewportBox(element, transformPagePoint);\n    },\n    /**\n     * Reset the transform on the current Element. This is called as part\n     * of a batched process across the entire layout tree. To remove this write\n     * cycle it'd be interesting to see if it's possible to \"undo\" all the current\n     * layout transforms up the tree in the same way this.getBoundingBoxWithoutTransforms\n     * works\n     */\n    resetTransform: function (element, domElement, props) {\n        var transformTemplate = props.transformTemplate;\n        domElement.style.transform = transformTemplate\n            ? transformTemplate({}, \"\")\n            : \"none\";\n        // Ensure that whatever happens next, we restore our transform on the next frame\n        element.scheduleRender();\n    },\n    restoreTransform: function (instance, mutableState) {\n        instance.style.transform = mutableState.style.transform;\n    },\n    removeValueFromRenderState: function (key, _a) {\n        var vars = _a.vars, style = _a.style;\n        delete vars[key];\n        delete style[key];\n    },\n    /**\n     * Ensure that HTML and Framer-specific value types like `px`->`%` and `Color`\n     * can be animated by Motion.\n     */\n    makeTargetAnimatable: function (element, _a, _b, isMounted) {\n        var transformValues = _b.transformValues;\n        if (isMounted === void 0) { isMounted = true; }\n        var transition = _a.transition, transitionEnd = _a.transitionEnd, target = __rest(_a, [\"transition\", \"transitionEnd\"]);\n        var origin = getOrigin(target, transition || {}, element);\n        /**\n         * If Framer has provided a function to convert `Color` etc value types, convert them\n         */\n        if (transformValues) {\n            if (transitionEnd)\n                transitionEnd = transformValues(transitionEnd);\n            if (target)\n                target = transformValues(target);\n            if (origin)\n                origin = transformValues(origin);\n        }\n        if (isMounted) {\n            checkTargetForNewValues(element, target, origin);\n            var parsed = parseDomVariant(element, target, origin, transitionEnd);\n            transitionEnd = parsed.transitionEnd;\n            target = parsed.target;\n        }\n        return __assign({ transition: transition, transitionEnd: transitionEnd }, target);\n    },\n    scrapeMotionValuesFromProps: scrapeMotionValuesFromProps,\n    build: function (element, renderState, latestValues, options, props) {\n        if (element.isVisible !== undefined) {\n            renderState.style.visibility = element.isVisible\n                ? \"visible\"\n                : \"hidden\";\n        }\n        buildHTMLStyles(renderState, latestValues, options, props.transformTemplate);\n    },\n    render: renderHTML,\n};\nvar htmlVisualElement = visualElement(htmlConfig);\n\nexport { getComputedStyle, htmlConfig, htmlVisualElement };\n","import { __assign } from 'tslib';\nimport { visualElement } from '../index.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { htmlConfig } from '../html/visual-element.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { camelToDash } from '../dom/utils/camel-to-dash.mjs';\nimport { camelCaseAttributes } from './utils/camel-case-attrs.mjs';\nimport { isTransformProp } from '../html/utils/transform.mjs';\nimport { renderSVG } from './utils/render.mjs';\nimport { getDefaultValueType } from '../dom/value-types/defaults.mjs';\n\nvar svgVisualElement = visualElement(__assign(__assign({}, htmlConfig), { getBaseTarget: function (props, key) {\n        return props[key];\n    }, readValueFromInstance: function (domElement, key) {\n        var _a;\n        if (isTransformProp(key)) {\n            return ((_a = getDefaultValueType(key)) === null || _a === void 0 ? void 0 : _a.default) || 0;\n        }\n        key = !camelCaseAttributes.has(key) ? camelToDash(key) : key;\n        return domElement.getAttribute(key);\n    }, scrapeMotionValuesFromProps: scrapeMotionValuesFromProps, build: function (_element, renderState, latestValues, options, props) {\n        buildSVGAttrs(renderState, latestValues, options, props.transformTemplate);\n    }, render: renderSVG }));\n\nexport { svgVisualElement };\n","import { htmlVisualElement } from '../html/visual-element.mjs';\nimport { svgVisualElement } from '../svg/visual-element.mjs';\nimport { isSVGComponent } from './utils/is-svg-component.mjs';\n\nvar createDomVisualElement = function (Component, options) {\n    return isSVGComponent(Component)\n        ? svgVisualElement(options, { enableHardwareAcceleration: false })\n        : htmlVisualElement(options, { enableHardwareAcceleration: true });\n};\n\nexport { createDomVisualElement };\n","import { __extends, __assign, __read } from 'tslib';\nimport sync from 'framesync';\nimport React__default, { useContext } from 'react';\nimport { usePresence } from '../../../components/AnimatePresence/use-presence.mjs';\nimport { LayoutGroupContext } from '../../../context/LayoutGroupContext.mjs';\nimport { SwitchLayoutGroupContext } from '../../../context/SwitchLayoutGroupContext.mjs';\nimport { globalProjectionState } from '../../../projection/node/state.mjs';\nimport { correctBorderRadius } from '../../../projection/styles/scale-border-radius.mjs';\nimport { correctBoxShadow } from '../../../projection/styles/scale-box-shadow.mjs';\nimport { addScaleCorrector } from '../../../projection/styles/scale-correction.mjs';\n\nvar MeasureLayoutWithContext = /** @class */ (function (_super) {\n    __extends(MeasureLayoutWithContext, _super);\n    function MeasureLayoutWithContext() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * This only mounts projection nodes for components that\n     * need measuring, we might want to do it for all components\n     * in order to incorporate transforms\n     */\n    MeasureLayoutWithContext.prototype.componentDidMount = function () {\n        var _this = this;\n        var _a = this.props, visualElement = _a.visualElement, layoutGroup = _a.layoutGroup, switchLayoutGroup = _a.switchLayoutGroup, layoutId = _a.layoutId;\n        var projection = visualElement.projection;\n        addScaleCorrector(defaultScaleCorrectors);\n        if (projection) {\n            if (layoutGroup === null || layoutGroup === void 0 ? void 0 : layoutGroup.group)\n                layoutGroup.group.add(projection);\n            if ((switchLayoutGroup === null || switchLayoutGroup === void 0 ? void 0 : switchLayoutGroup.register) && layoutId) {\n                switchLayoutGroup.register(projection);\n            }\n            projection.root.didUpdate();\n            projection.addEventListener(\"animationComplete\", function () {\n                _this.safeToRemove();\n            });\n            projection.setOptions(__assign(__assign({}, projection.options), { onExitComplete: function () { return _this.safeToRemove(); } }));\n        }\n        globalProjectionState.hasEverUpdated = true;\n    };\n    MeasureLayoutWithContext.prototype.getSnapshotBeforeUpdate = function (prevProps) {\n        var _this = this;\n        var _a = this.props, layoutDependency = _a.layoutDependency, visualElement = _a.visualElement, drag = _a.drag, isPresent = _a.isPresent;\n        var projection = visualElement.projection;\n        if (!projection)\n            return null;\n        /**\n         * TODO: We use this data in relegate to determine whether to\n         * promote a previous element. There's no guarantee its presence data\n         * will have updated by this point - if a bug like this arises it will\n         * have to be that we markForRelegation and then find a new lead some other way,\n         * perhaps in didUpdate\n         */\n        projection.isPresent = isPresent;\n        if (drag ||\n            prevProps.layoutDependency !== layoutDependency ||\n            layoutDependency === undefined) {\n            projection.willUpdate();\n        }\n        else {\n            this.safeToRemove();\n        }\n        if (prevProps.isPresent !== isPresent) {\n            if (isPresent) {\n                projection.promote();\n            }\n            else if (!projection.relegate()) {\n                /**\n                 * If there's another stack member taking over from this one,\n                 * it's in charge of the exit animation and therefore should\n                 * be in charge of the safe to remove. Otherwise we call it here.\n                 */\n                sync.postRender(function () {\n                    var _a;\n                    if (!((_a = projection.getStack()) === null || _a === void 0 ? void 0 : _a.members.length)) {\n                        _this.safeToRemove();\n                    }\n                });\n            }\n        }\n        return null;\n    };\n    MeasureLayoutWithContext.prototype.componentDidUpdate = function () {\n        var projection = this.props.visualElement.projection;\n        if (projection) {\n            projection.root.didUpdate();\n            if (!projection.currentAnimation && projection.isLead()) {\n                this.safeToRemove();\n            }\n        }\n    };\n    MeasureLayoutWithContext.prototype.componentWillUnmount = function () {\n        var _a = this.props, visualElement = _a.visualElement, layoutGroup = _a.layoutGroup, promoteContext = _a.switchLayoutGroup;\n        var projection = visualElement.projection;\n        if (projection) {\n            projection.scheduleCheckAfterUnmount();\n            if (layoutGroup === null || layoutGroup === void 0 ? void 0 : layoutGroup.group)\n                layoutGroup.group.remove(projection);\n            if (promoteContext === null || promoteContext === void 0 ? void 0 : promoteContext.deregister)\n                promoteContext.deregister(projection);\n        }\n    };\n    MeasureLayoutWithContext.prototype.safeToRemove = function () {\n        var safeToRemove = this.props.safeToRemove;\n        safeToRemove === null || safeToRemove === void 0 ? void 0 : safeToRemove();\n    };\n    MeasureLayoutWithContext.prototype.render = function () {\n        return null;\n    };\n    return MeasureLayoutWithContext;\n}(React__default.Component));\nfunction MeasureLayout(props) {\n    var _a = __read(usePresence(), 2), isPresent = _a[0], safeToRemove = _a[1];\n    var layoutGroup = useContext(LayoutGroupContext);\n    return (React__default.createElement(MeasureLayoutWithContext, __assign({}, props, { layoutGroup: layoutGroup, switchLayoutGroup: useContext(SwitchLayoutGroupContext), isPresent: isPresent, safeToRemove: safeToRemove })));\n}\nvar defaultScaleCorrectors = {\n    borderRadius: __assign(__assign({}, correctBorderRadius), { applyTo: [\n            \"borderTopLeftRadius\",\n            \"borderTopRightRadius\",\n            \"borderBottomLeftRadius\",\n            \"borderBottomRightRadius\",\n        ] }),\n    borderTopLeftRadius: correctBorderRadius,\n    borderTopRightRadius: correctBorderRadius,\n    borderBottomLeftRadius: correctBorderRadius,\n    borderBottomRightRadius: correctBorderRadius,\n    boxShadow: correctBoxShadow,\n};\n\nexport { MeasureLayout };\n","import { px } from 'style-value-types';\n\nfunction pixelsToPercent(pixels, axis) {\n    if (axis.max === axis.min)\n        return 0;\n    return (pixels / (axis.max - axis.min)) * 100;\n}\n/**\n * We always correct borderRadius as a percentage rather than pixels to reduce paints.\n * For example, if you are projecting a box that is 100px wide with a 10px borderRadius\n * into a box that is 200px wide with a 20px borderRadius, that is actually a 10%\n * borderRadius in both states. If we animate between the two in pixels that will trigger\n * a paint each time. If we animate between the two in percentage we'll avoid a paint.\n */\nvar correctBorderRadius = {\n    correct: function (latest, node) {\n        if (!node.target)\n            return latest;\n        /**\n         * If latest is a string, if it's a percentage we can return immediately as it's\n         * going to be stretched appropriately. Otherwise, if it's a pixel, convert it to a number.\n         */\n        if (typeof latest === \"string\") {\n            if (px.test(latest)) {\n                latest = parseFloat(latest);\n            }\n            else {\n                return latest;\n            }\n        }\n        /**\n         * If latest is a number, it's a pixel value. We use the current viewportBox to calculate that\n         * pixel value as a percentage of each axis\n         */\n        var x = pixelsToPercent(latest, node.target.x);\n        var y = pixelsToPercent(latest, node.target.y);\n        return \"\".concat(x, \"% \").concat(y, \"%\");\n    },\n};\n\nexport { correctBorderRadius, pixelsToPercent };\n","import { mix } from 'popmotion';\nimport { complex } from 'style-value-types';\nimport { cssVariableRegex } from '../../render/dom/utils/css-variables-conversion.mjs';\n\nvar varToken = \"_$css\";\nvar correctBoxShadow = {\n    correct: function (latest, _a) {\n        var treeScale = _a.treeScale, projectionDelta = _a.projectionDelta;\n        var original = latest;\n        /**\n         * We need to first strip and store CSS variables from the string.\n         */\n        var containsCSSVariables = latest.includes(\"var(\");\n        var cssVariables = [];\n        if (containsCSSVariables) {\n            latest = latest.replace(cssVariableRegex, function (match) {\n                cssVariables.push(match);\n                return varToken;\n            });\n        }\n        var shadow = complex.parse(latest);\n        // TODO: Doesn't support multiple shadows\n        if (shadow.length > 5)\n            return original;\n        var template = complex.createTransformer(latest);\n        var offset = typeof shadow[0] !== \"number\" ? 1 : 0;\n        // Calculate the overall context scale\n        var xScale = projectionDelta.x.scale * treeScale.x;\n        var yScale = projectionDelta.y.scale * treeScale.y;\n        shadow[0 + offset] /= xScale;\n        shadow[1 + offset] /= yScale;\n        /**\n         * Ideally we'd correct x and y scales individually, but because blur and\n         * spread apply to both we have to take a scale average and apply that instead.\n         * We could potentially improve the outcome of this by incorporating the ratio between\n         * the two scales.\n         */\n        var averageScale = mix(xScale, yScale, 0.5);\n        // Blur\n        if (typeof shadow[2 + offset] === \"number\")\n            shadow[2 + offset] /= averageScale;\n        // Spread\n        if (typeof shadow[3 + offset] === \"number\")\n            shadow[3 + offset] /= averageScale;\n        var output = template(shadow);\n        if (containsCSSVariables) {\n            var i_1 = 0;\n            output = output.replace(varToken, function () {\n                var cssVariable = cssVariables[i_1];\n                i_1++;\n                return cssVariable;\n            });\n        }\n        return output;\n    },\n};\n\nexport { correctBoxShadow };\n","import { MeasureLayout } from './MeasureLayout.mjs';\n\nvar layoutFeatures = {\n    measureLayout: MeasureLayout,\n};\n\nexport { layoutFeatures };\n","import { motionValue } from '../value/index.mjs';\nimport { isMotionValue } from '../value/utils/is-motion-value.mjs';\nimport { startAnimation } from './utils/transitions.mjs';\n\n/**\n * Animate a single value or a `MotionValue`.\n *\n * The first argument is either a `MotionValue` to animate, or an initial animation value.\n *\n * The second is either a value to animate to, or an array of keyframes to animate through.\n *\n * The third argument can be either tween or spring options, and optional lifecycle methods: `onUpdate`, `onPlay`, `onComplete`, `onRepeat` and `onStop`.\n *\n * Returns `AnimationPlaybackControls`, currently just a `stop` method.\n *\n * ```javascript\n * const x = useMotionValue(0)\n *\n * useEffect(() => {\n *   const controls = animate(x, 100, {\n *     type: \"spring\",\n *     stiffness: 2000,\n *     onComplete: v => {}\n *   })\n *\n *   return controls.stop\n * })\n * ```\n *\n * @public\n */\nfunction animate(from, to, transition) {\n    if (transition === void 0) { transition = {}; }\n    var value = isMotionValue(from) ? from : motionValue(from);\n    startAnimation(\"\", value, to, transition);\n    return {\n        stop: function () { return value.stop(); },\n        isAnimating: function () { return value.isAnimating(); },\n    };\n}\n\nexport { animate };\n","import { mix, progress, linear, circOut } from 'popmotion';\nimport { px, percent } from 'style-value-types';\n\nvar borders = [\"TopLeft\", \"TopRight\", \"BottomLeft\", \"BottomRight\"];\nvar numBorders = borders.length;\nvar asNumber = function (value) {\n    return typeof value === \"string\" ? parseFloat(value) : value;\n};\nvar isPx = function (value) {\n    return typeof value === \"number\" || px.test(value);\n};\nfunction mixValues(target, follow, lead, progress, shouldCrossfadeOpacity, isOnlyMember) {\n    var _a, _b, _c, _d;\n    if (shouldCrossfadeOpacity) {\n        target.opacity = mix(0, \n        // (follow?.opacity as number) ?? 0,\n        // TODO Reinstate this if only child\n        (_a = lead.opacity) !== null && _a !== void 0 ? _a : 1, easeCrossfadeIn(progress));\n        target.opacityExit = mix((_b = follow.opacity) !== null && _b !== void 0 ? _b : 1, 0, easeCrossfadeOut(progress));\n    }\n    else if (isOnlyMember) {\n        target.opacity = mix((_c = follow.opacity) !== null && _c !== void 0 ? _c : 1, (_d = lead.opacity) !== null && _d !== void 0 ? _d : 1, progress);\n    }\n    /**\n     * Mix border radius\n     */\n    for (var i = 0; i < numBorders; i++) {\n        var borderLabel = \"border\".concat(borders[i], \"Radius\");\n        var followRadius = getRadius(follow, borderLabel);\n        var leadRadius = getRadius(lead, borderLabel);\n        if (followRadius === undefined && leadRadius === undefined)\n            continue;\n        followRadius || (followRadius = 0);\n        leadRadius || (leadRadius = 0);\n        var canMix = followRadius === 0 ||\n            leadRadius === 0 ||\n            isPx(followRadius) === isPx(leadRadius);\n        if (canMix) {\n            target[borderLabel] = Math.max(mix(asNumber(followRadius), asNumber(leadRadius), progress), 0);\n            if (percent.test(leadRadius) || percent.test(followRadius)) {\n                target[borderLabel] += \"%\";\n            }\n        }\n        else {\n            target[borderLabel] = leadRadius;\n        }\n    }\n    /**\n     * Mix rotation\n     */\n    if (follow.rotate || lead.rotate) {\n        target.rotate = mix(follow.rotate || 0, lead.rotate || 0, progress);\n    }\n}\nfunction getRadius(values, radiusName) {\n    var _a;\n    return (_a = values[radiusName]) !== null && _a !== void 0 ? _a : values.borderRadius;\n}\n// /**\n//  * We only want to mix the background color if there's a follow element\n//  * that we're not crossfading opacity between. For instance with switch\n//  * AnimateSharedLayout animations, this helps the illusion of a continuous\n//  * element being animated but also cuts down on the number of paints triggered\n//  * for elements where opacity is doing that work for us.\n//  */\n// if (\n//     !hasFollowElement &&\n//     latestLeadValues.backgroundColor &&\n//     latestFollowValues.backgroundColor\n// ) {\n//     /**\n//      * This isn't ideal performance-wise as mixColor is creating a new function every frame.\n//      * We could probably create a mixer that runs at the start of the animation but\n//      * the idea behind the crossfader is that it runs dynamically between two potentially\n//      * changing targets (ie opacity or borderRadius may be animating independently via variants)\n//      */\n//     leadState.backgroundColor = followState.backgroundColor = mixColor(\n//         latestFollowValues.backgroundColor as string,\n//         latestLeadValues.backgroundColor as string\n//     )(p)\n// }\nvar easeCrossfadeIn = compress(0, 0.5, circOut);\nvar easeCrossfadeOut = compress(0.5, 0.95, linear);\nfunction compress(min, max, easing) {\n    return function (p) {\n        // Could replace ifs with clamp\n        if (p < min)\n            return 0;\n        if (p > max)\n            return 1;\n        return easing(progress(min, max, p));\n    };\n}\n\nexport { mixValues };\n","/**\n * Reset an axis to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyAxisInto(axis, originAxis) {\n    axis.min = originAxis.min;\n    axis.max = originAxis.max;\n}\n/**\n * Reset a box to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyBoxInto(box, originBox) {\n    copyAxisInto(box.x, originBox.x);\n    copyAxisInto(box.y, originBox.y);\n}\n\nexport { copyAxisInto, copyBoxInto };\n","import { __read } from 'tslib';\nimport { mix } from 'popmotion';\nimport { percent } from 'style-value-types';\nimport { scalePoint } from './delta-apply.mjs';\n\n/**\n * Remove a delta from a point. This is essentially the steps of applyPointDelta in reverse\n */\nfunction removePointDelta(point, translate, scale, originPoint, boxScale) {\n    point -= translate;\n    point = scalePoint(point, 1 / scale, originPoint);\n    if (boxScale !== undefined) {\n        point = scalePoint(point, 1 / boxScale, originPoint);\n    }\n    return point;\n}\n/**\n * Remove a delta from an axis. This is essentially the steps of applyAxisDelta in reverse\n */\nfunction removeAxisDelta(axis, translate, scale, origin, boxScale, originAxis, sourceAxis) {\n    if (translate === void 0) { translate = 0; }\n    if (scale === void 0) { scale = 1; }\n    if (origin === void 0) { origin = 0.5; }\n    if (originAxis === void 0) { originAxis = axis; }\n    if (sourceAxis === void 0) { sourceAxis = axis; }\n    if (percent.test(translate)) {\n        translate = parseFloat(translate);\n        var relativeProgress = mix(sourceAxis.min, sourceAxis.max, translate / 100);\n        translate = relativeProgress - sourceAxis.min;\n    }\n    if (typeof translate !== \"number\")\n        return;\n    var originPoint = mix(originAxis.min, originAxis.max, origin);\n    if (axis === originAxis)\n        originPoint -= translate;\n    axis.min = removePointDelta(axis.min, translate, scale, originPoint, boxScale);\n    axis.max = removePointDelta(axis.max, translate, scale, originPoint, boxScale);\n}\n/**\n * Remove a transforms from an axis. This is essentially the steps of applyAxisTransforms in reverse\n * and acts as a bridge between motion values and removeAxisDelta\n */\nfunction removeAxisTransforms(axis, transforms, _a, origin, sourceAxis) {\n    var _b = __read(_a, 3), key = _b[0], scaleKey = _b[1], originKey = _b[2];\n    removeAxisDelta(axis, transforms[key], transforms[scaleKey], transforms[originKey], transforms.scale, origin, sourceAxis);\n}\n/**\n * The names of the motion values we want to apply as translation, scale and origin.\n */\nvar xKeys = [\"x\", \"scaleX\", \"originX\"];\nvar yKeys = [\"y\", \"scaleY\", \"originY\"];\n/**\n * Remove a transforms from an box. This is essentially the steps of applyAxisBox in reverse\n * and acts as a bridge between motion values and removeAxisDelta\n */\nfunction removeBoxTransforms(box, transforms, originBox, sourceBox) {\n    removeAxisTransforms(box.x, transforms, xKeys, originBox === null || originBox === void 0 ? void 0 : originBox.x, sourceBox === null || sourceBox === void 0 ? void 0 : sourceBox.x);\n    removeAxisTransforms(box.y, transforms, yKeys, originBox === null || originBox === void 0 ? void 0 : originBox.y, sourceBox === null || sourceBox === void 0 ? void 0 : sourceBox.y);\n}\n\nexport { removeAxisDelta, removeAxisTransforms, removeBoxTransforms, removePointDelta };\n","function isAxisDeltaZero(delta) {\n    return delta.translate === 0 && delta.scale === 1;\n}\nfunction isDeltaZero(delta) {\n    return isAxisDeltaZero(delta.x) && isAxisDeltaZero(delta.y);\n}\nfunction boxEquals(a, b) {\n    return (a.x.min === b.x.min &&\n        a.x.max === b.x.max &&\n        a.y.min === b.y.min &&\n        a.y.max === b.y.max);\n}\n\nexport { boxEquals, isDeltaZero };\n","import { addUniqueItem, removeItem } from '../../utils/array.mjs';\n\nvar NodeStack = /** @class */ (function () {\n    function NodeStack() {\n        this.members = [];\n    }\n    NodeStack.prototype.add = function (node) {\n        addUniqueItem(this.members, node);\n        node.scheduleRender();\n    };\n    NodeStack.prototype.remove = function (node) {\n        removeItem(this.members, node);\n        if (node === this.prevLead) {\n            this.prevLead = undefined;\n        }\n        if (node === this.lead) {\n            var prevLead = this.members[this.members.length - 1];\n            if (prevLead) {\n                this.promote(prevLead);\n            }\n        }\n    };\n    NodeStack.prototype.relegate = function (node) {\n        var indexOfNode = this.members.findIndex(function (member) { return node === member; });\n        if (indexOfNode === 0)\n            return false;\n        /**\n         * Find the next projection node that is present\n         */\n        var prevLead;\n        for (var i = indexOfNode; i >= 0; i--) {\n            var member = this.members[i];\n            if (member.isPresent !== false) {\n                prevLead = member;\n                break;\n            }\n        }\n        if (prevLead) {\n            this.promote(prevLead);\n            return true;\n        }\n        else {\n            return false;\n        }\n    };\n    NodeStack.prototype.promote = function (node, preserveFollowOpacity) {\n        var _a;\n        var prevLead = this.lead;\n        if (node === prevLead)\n            return;\n        this.prevLead = prevLead;\n        this.lead = node;\n        node.show();\n        if (prevLead) {\n            prevLead.instance && prevLead.scheduleRender();\n            node.scheduleRender();\n            node.resumeFrom = prevLead;\n            if (preserveFollowOpacity) {\n                node.resumeFrom.preserveOpacity = true;\n            }\n            if (prevLead.snapshot) {\n                node.snapshot = prevLead.snapshot;\n                node.snapshot.latestValues =\n                    prevLead.animationValues || prevLead.latestValues;\n                node.snapshot.isShared = true;\n            }\n            if ((_a = node.root) === null || _a === void 0 ? void 0 : _a.isUpdating) {\n                node.isLayoutDirty = true;\n            }\n            var crossfade = node.options.crossfade;\n            if (crossfade === false) {\n                prevLead.hide();\n            }\n            /**\n             * TODO:\n             *   - Test border radius when previous node was deleted\n             *   - boxShadow mixing\n             *   - Shared between element A in scrolled container and element B (scroll stays the same or changes)\n             *   - Shared between element A in transformed container and element B (transform stays the same or changes)\n             *   - Shared between element A in scrolled page and element B (scroll stays the same or changes)\n             * ---\n             *   - Crossfade opacity of root nodes\n             *   - layoutId changes after animation\n             *   - layoutId changes mid animation\n             */\n        }\n    };\n    NodeStack.prototype.exitAnimationComplete = function () {\n        this.members.forEach(function (node) {\n            var _a, _b, _c, _d, _e;\n            (_b = (_a = node.options).onExitComplete) === null || _b === void 0 ? void 0 : _b.call(_a);\n            (_e = (_c = node.resumingFrom) === null || _c === void 0 ? void 0 : (_d = _c.options).onExitComplete) === null || _e === void 0 ? void 0 : _e.call(_d);\n        });\n    };\n    NodeStack.prototype.scheduleRender = function () {\n        this.members.forEach(function (node) {\n            node.instance && node.scheduleRender(false);\n        });\n    };\n    /**\n     * Clear any leads that have been removed this render to prevent them from being\n     * used in future animations and to prevent memory leaks\n     */\n    NodeStack.prototype.removeLeadSnapshot = function () {\n        if (this.lead && this.lead.snapshot) {\n            this.lead.snapshot = undefined;\n        }\n    };\n    return NodeStack;\n}());\n\nexport { NodeStack };\n","var identityProjection = \"translate3d(0px, 0px, 0) scale(1, 1) scale(1, 1)\";\nfunction buildProjectionTransform(delta, treeScale, latestTransform) {\n    /**\n     * The translations we use to calculate are always relative to the viewport coordinate space.\n     * But when we apply scales, we also scale the coordinate space of an element and its children.\n     * For instance if we have a treeScale (the culmination of all parent scales) of 0.5 and we need\n     * to move an element 100 pixels, we actually need to move it 200 in within that scaled space.\n     */\n    var xTranslate = delta.x.translate / treeScale.x;\n    var yTranslate = delta.y.translate / treeScale.y;\n    var transform = \"translate3d(\".concat(xTranslate, \"px, \").concat(yTranslate, \"px, 0) \");\n    /**\n     * Apply scale correction for the tree transform.\n     * This will apply scale to the screen-orientated axes.\n     */\n    transform += \"scale(\".concat(1 / treeScale.x, \", \").concat(1 / treeScale.y, \") \");\n    if (latestTransform) {\n        var rotate = latestTransform.rotate, rotateX = latestTransform.rotateX, rotateY = latestTransform.rotateY;\n        if (rotate)\n            transform += \"rotate(\".concat(rotate, \"deg) \");\n        if (rotateX)\n            transform += \"rotateX(\".concat(rotateX, \"deg) \");\n        if (rotateY)\n            transform += \"rotateY(\".concat(rotateY, \"deg) \");\n    }\n    /**\n     * Apply scale to match the size of the element to the size we want it.\n     * This will apply scale to the element-orientated axes.\n     */\n    var elementScaleX = delta.x.scale * treeScale.x;\n    var elementScaleY = delta.y.scale * treeScale.y;\n    transform += \"scale(\".concat(elementScaleX, \", \").concat(elementScaleY, \")\");\n    return transform === identityProjection ? \"none\" : transform;\n}\n\nexport { buildProjectionTransform, identityProjection };\n","var compareByDepth = function (a, b) {\n    return a.depth - b.depth;\n};\n\nexport { compareByDepth };\n","import { addUniqueItem, removeItem } from '../../utils/array.mjs';\nimport { compareByDepth } from './compare-by-depth.mjs';\n\nvar FlatTree = /** @class */ (function () {\n    function FlatTree() {\n        this.children = [];\n        this.isDirty = false;\n    }\n    FlatTree.prototype.add = function (child) {\n        addUniqueItem(this.children, child);\n        this.isDirty = true;\n    };\n    FlatTree.prototype.remove = function (child) {\n        removeItem(this.children, child);\n        this.isDirty = true;\n    };\n    FlatTree.prototype.forEach = function (callback) {\n        this.isDirty && this.children.sort(compareByDepth);\n        this.isDirty = false;\n        this.children.forEach(callback);\n    };\n    return FlatTree;\n}());\n\nexport { FlatTree };\n","import { __spreadArray, __read, __assign } from 'tslib';\nimport sync, { cancelSync, flushSync } from 'framesync';\nimport { mix } from 'popmotion';\nimport { animate } from '../../animation/animate.mjs';\nimport { SubscriptionManager } from '../../utils/subscription-manager.mjs';\nimport { mixValues } from '../animation/mix-values.mjs';\nimport { copyBoxInto } from '../geometry/copy.mjs';\nimport { translateAxis, transformBox, applyBoxDelta, applyTreeDeltas } from '../geometry/delta-apply.mjs';\nimport { calcRelativePosition, calcRelativeBox, calcBoxDelta, calcLength } from '../geometry/delta-calc.mjs';\nimport { removeBoxTransforms } from '../geometry/delta-remove.mjs';\nimport { createBox, createDelta } from '../geometry/models.mjs';\nimport { getValueTransition } from '../../animation/utils/transitions.mjs';\nimport { boxEquals, isDeltaZero } from '../geometry/utils.mjs';\nimport { NodeStack } from '../shared/stack.mjs';\nimport { scaleCorrectors } from '../styles/scale-correction.mjs';\nimport { buildProjectionTransform } from '../styles/transform.mjs';\nimport { eachAxis } from '../utils/each-axis.mjs';\nimport { hasTransform, hasScale } from '../utils/has-transform.mjs';\nimport { transformAxes } from '../../render/html/utils/transform.mjs';\nimport { FlatTree } from '../../render/utils/flat-tree.mjs';\nimport { resolveMotionValue } from '../../value/utils/resolve-motion-value.mjs';\nimport { globalProjectionState } from './state.mjs';\n\n/**\n * We use 1000 as the animation target as 0-1000 maps better to pixels than 0-1\n * which has a noticeable difference in spring animations\n */\nvar animationTarget = 1000;\nfunction createProjectionNode(_a) {\n    var attachResizeListener = _a.attachResizeListener, defaultParent = _a.defaultParent, measureScroll = _a.measureScroll, checkIsScrollRoot = _a.checkIsScrollRoot, resetTransform = _a.resetTransform;\n    return /** @class */ (function () {\n        function ProjectionNode(id, latestValues, parent) {\n            var _this = this;\n            if (latestValues === void 0) { latestValues = {}; }\n            if (parent === void 0) { parent = defaultParent === null || defaultParent === void 0 ? void 0 : defaultParent(); }\n            /**\n             * A Set containing all this component's children. This is used to iterate\n             * through the children.\n             *\n             * TODO: This could be faster to iterate as a flat array stored on the root node.\n             */\n            this.children = new Set();\n            /**\n             * Options for the node. We use this to configure what kind of layout animations\n             * we should perform (if any).\n             */\n            this.options = {};\n            /**\n             * We use this to detect when its safe to shut down part of a projection tree.\n             * We have to keep projecting children for scale correction and relative projection\n             * until all their parents stop performing layout animations.\n             */\n            this.isTreeAnimating = false;\n            this.isAnimationBlocked = false;\n            /**\n             * Flag to true if we think this layout has been changed. We can't always know this,\n             * currently we set it to true every time a component renders, or if it has a layoutDependency\n             * if that has changed between renders. Additionally, components can be grouped by LayoutGroup\n             * and if one node is dirtied, they all are.\n             */\n            this.isLayoutDirty = false;\n            /**\n             * Block layout updates for instant layout transitions throughout the tree.\n             */\n            this.updateManuallyBlocked = false;\n            this.updateBlockedByResize = false;\n            /**\n             * Set to true between the start of the first `willUpdate` call and the end of the `didUpdate`\n             * call.\n             */\n            this.isUpdating = false;\n            /**\n             * If this is an SVG element we currently disable projection transforms\n             */\n            this.isSVG = false;\n            /**\n             * Flag to true (during promotion) if a node doing an instant layout transition needs to reset\n             * its projection styles.\n             */\n            this.needsReset = false;\n            /**\n             * Flags whether this node should have its transform reset prior to measuring.\n             */\n            this.shouldResetTransform = false;\n            /**\n             * An object representing the calculated contextual/accumulated/tree scale.\n             * This will be used to scale calculcated projection transforms, as these are\n             * calculated in screen-space but need to be scaled for elements to actually\n             * make it to their calculated destinations.\n             *\n             * TODO: Lazy-init\n             */\n            this.treeScale = { x: 1, y: 1 };\n            /**\n             *\n             */\n            this.eventHandlers = new Map();\n            // Note: Currently only running on root node\n            this.potentialNodes = new Map();\n            this.checkUpdateFailed = function () {\n                if (_this.isUpdating) {\n                    _this.isUpdating = false;\n                    _this.clearAllSnapshots();\n                }\n            };\n            this.updateProjection = function () {\n                _this.nodes.forEach(resolveTargetDelta);\n                _this.nodes.forEach(calcProjection);\n            };\n            this.hasProjected = false;\n            this.isVisible = true;\n            this.animationProgress = 0;\n            /**\n             * Shared layout\n             */\n            // TODO Only running on root node\n            this.sharedNodes = new Map();\n            this.id = id;\n            this.latestValues = latestValues;\n            this.root = parent ? parent.root || parent : this;\n            this.path = parent ? __spreadArray(__spreadArray([], __read(parent.path), false), [parent], false) : [];\n            this.parent = parent;\n            this.depth = parent ? parent.depth + 1 : 0;\n            id && this.root.registerPotentialNode(id, this);\n            for (var i = 0; i < this.path.length; i++) {\n                this.path[i].shouldResetTransform = true;\n            }\n            if (this.root === this)\n                this.nodes = new FlatTree();\n        }\n        ProjectionNode.prototype.addEventListener = function (name, handler) {\n            if (!this.eventHandlers.has(name)) {\n                this.eventHandlers.set(name, new SubscriptionManager());\n            }\n            return this.eventHandlers.get(name).add(handler);\n        };\n        ProjectionNode.prototype.notifyListeners = function (name) {\n            var args = [];\n            for (var _i = 1; _i < arguments.length; _i++) {\n                args[_i - 1] = arguments[_i];\n            }\n            var subscriptionManager = this.eventHandlers.get(name);\n            subscriptionManager === null || subscriptionManager === void 0 ? void 0 : subscriptionManager.notify.apply(subscriptionManager, __spreadArray([], __read(args), false));\n        };\n        ProjectionNode.prototype.hasListeners = function (name) {\n            return this.eventHandlers.has(name);\n        };\n        ProjectionNode.prototype.registerPotentialNode = function (id, node) {\n            this.potentialNodes.set(id, node);\n        };\n        /**\n         * Lifecycles\n         */\n        ProjectionNode.prototype.mount = function (instance, isLayoutDirty) {\n            var _this = this;\n            var _a;\n            if (isLayoutDirty === void 0) { isLayoutDirty = false; }\n            if (this.instance)\n                return;\n            this.isSVG =\n                instance instanceof SVGElement && instance.tagName !== \"svg\";\n            this.instance = instance;\n            var _b = this.options, layoutId = _b.layoutId, layout = _b.layout, visualElement = _b.visualElement;\n            if (visualElement && !visualElement.getInstance()) {\n                visualElement.mount(instance);\n            }\n            this.root.nodes.add(this);\n            (_a = this.parent) === null || _a === void 0 ? void 0 : _a.children.add(this);\n            this.id && this.root.potentialNodes.delete(this.id);\n            if (isLayoutDirty && (layout || layoutId)) {\n                this.isLayoutDirty = true;\n            }\n            if (attachResizeListener) {\n                var unblockTimeout_1;\n                var resizeUnblockUpdate_1 = function () {\n                    return (_this.root.updateBlockedByResize = false);\n                };\n                attachResizeListener(instance, function () {\n                    _this.root.updateBlockedByResize = true;\n                    clearTimeout(unblockTimeout_1);\n                    unblockTimeout_1 = window.setTimeout(resizeUnblockUpdate_1, 250);\n                    if (globalProjectionState.hasAnimatedSinceResize) {\n                        globalProjectionState.hasAnimatedSinceResize = false;\n                        _this.nodes.forEach(finishAnimation);\n                    }\n                });\n            }\n            if (layoutId) {\n                this.root.registerSharedNode(layoutId, this);\n            }\n            // Only register the handler if it requires layout animation\n            if (this.options.animate !== false &&\n                visualElement &&\n                (layoutId || layout)) {\n                this.addEventListener(\"didUpdate\", function (_a) {\n                    var _b, _c, _d, _e, _f;\n                    var delta = _a.delta, hasLayoutChanged = _a.hasLayoutChanged, hasRelativeTargetChanged = _a.hasRelativeTargetChanged, newLayout = _a.layout;\n                    if (_this.isTreeAnimationBlocked()) {\n                        _this.target = undefined;\n                        _this.relativeTarget = undefined;\n                        return;\n                    }\n                    // TODO: Check here if an animation exists\n                    var layoutTransition = (_c = (_b = _this.options.transition) !== null && _b !== void 0 ? _b : visualElement.getDefaultTransition()) !== null && _c !== void 0 ? _c : defaultLayoutTransition;\n                    var _g = visualElement.getProps(), onLayoutAnimationStart = _g.onLayoutAnimationStart, onLayoutAnimationComplete = _g.onLayoutAnimationComplete;\n                    /**\n                     * The target layout of the element might stay the same,\n                     * but its position relative to its parent has changed.\n                     */\n                    var targetChanged = !_this.targetLayout ||\n                        !boxEquals(_this.targetLayout, newLayout) ||\n                        hasRelativeTargetChanged;\n                    /**\n                     * If the layout hasn't seemed to have changed, it might be that the\n                     * element is visually in the same place in the document but its position\n                     * relative to its parent has indeed changed. So here we check for that.\n                     */\n                    var hasOnlyRelativeTargetChanged = !hasLayoutChanged && hasRelativeTargetChanged;\n                    if (((_d = _this.resumeFrom) === null || _d === void 0 ? void 0 : _d.instance) ||\n                        hasOnlyRelativeTargetChanged ||\n                        (hasLayoutChanged &&\n                            (targetChanged || !_this.currentAnimation))) {\n                        if (_this.resumeFrom) {\n                            _this.resumingFrom = _this.resumeFrom;\n                            _this.resumingFrom.resumingFrom = undefined;\n                        }\n                        _this.setAnimationOrigin(delta, hasOnlyRelativeTargetChanged);\n                        var animationOptions = __assign(__assign({}, getValueTransition(layoutTransition, \"layout\")), { onPlay: onLayoutAnimationStart, onComplete: onLayoutAnimationComplete });\n                        if (visualElement.shouldReduceMotion) {\n                            animationOptions.delay = 0;\n                            animationOptions.type = false;\n                        }\n                        _this.startAnimation(animationOptions);\n                    }\n                    else {\n                        /**\n                         * If the layout hasn't changed and we have an animation that hasn't started yet,\n                         * finish it immediately. Otherwise it will be animating from a location\n                         * that was probably never commited to screen and look like a jumpy box.\n                         */\n                        if (!hasLayoutChanged &&\n                            _this.animationProgress === 0) {\n                            _this.finishAnimation();\n                        }\n                        _this.isLead() && ((_f = (_e = _this.options).onExitComplete) === null || _f === void 0 ? void 0 : _f.call(_e));\n                    }\n                    _this.targetLayout = newLayout;\n                });\n            }\n        };\n        ProjectionNode.prototype.unmount = function () {\n            var _a, _b;\n            this.options.layoutId && this.willUpdate();\n            this.root.nodes.remove(this);\n            (_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.remove(this);\n            (_b = this.parent) === null || _b === void 0 ? void 0 : _b.children.delete(this);\n            this.instance = undefined;\n            cancelSync.preRender(this.updateProjection);\n        };\n        // only on the root\n        ProjectionNode.prototype.blockUpdate = function () {\n            this.updateManuallyBlocked = true;\n        };\n        ProjectionNode.prototype.unblockUpdate = function () {\n            this.updateManuallyBlocked = false;\n        };\n        ProjectionNode.prototype.isUpdateBlocked = function () {\n            return this.updateManuallyBlocked || this.updateBlockedByResize;\n        };\n        ProjectionNode.prototype.isTreeAnimationBlocked = function () {\n            var _a;\n            return (this.isAnimationBlocked ||\n                ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isTreeAnimationBlocked()) ||\n                false);\n        };\n        // Note: currently only running on root node\n        ProjectionNode.prototype.startUpdate = function () {\n            var _a;\n            if (this.isUpdateBlocked())\n                return;\n            this.isUpdating = true;\n            (_a = this.nodes) === null || _a === void 0 ? void 0 : _a.forEach(resetRotation);\n        };\n        ProjectionNode.prototype.willUpdate = function (shouldNotifyListeners) {\n            var _a, _b, _c;\n            if (shouldNotifyListeners === void 0) { shouldNotifyListeners = true; }\n            if (this.root.isUpdateBlocked()) {\n                (_b = (_a = this.options).onExitComplete) === null || _b === void 0 ? void 0 : _b.call(_a);\n                return;\n            }\n            !this.root.isUpdating && this.root.startUpdate();\n            if (this.isLayoutDirty)\n                return;\n            this.isLayoutDirty = true;\n            for (var i = 0; i < this.path.length; i++) {\n                var node = this.path[i];\n                node.shouldResetTransform = true;\n                /**\n                 * TODO: Check we haven't updated the scroll\n                 * since the last didUpdate\n                 */\n                node.updateScroll();\n            }\n            var _d = this.options, layoutId = _d.layoutId, layout = _d.layout;\n            if (layoutId === undefined && !layout)\n                return;\n            var transformTemplate = (_c = this.options.visualElement) === null || _c === void 0 ? void 0 : _c.getProps().transformTemplate;\n            this.prevTransformTemplateValue = transformTemplate === null || transformTemplate === void 0 ? void 0 : transformTemplate(this.latestValues, \"\");\n            this.updateSnapshot();\n            shouldNotifyListeners && this.notifyListeners(\"willUpdate\");\n        };\n        // Note: Currently only running on root node\n        ProjectionNode.prototype.didUpdate = function () {\n            var updateWasBlocked = this.isUpdateBlocked();\n            // When doing an instant transition, we skip the layout update,\n            // but should still clean up the measurements so that the next\n            // snapshot could be taken correctly.\n            if (updateWasBlocked) {\n                this.unblockUpdate();\n                this.clearAllSnapshots();\n                this.nodes.forEach(clearMeasurements);\n                return;\n            }\n            if (!this.isUpdating)\n                return;\n            this.isUpdating = false;\n            /**\n             * Search for and mount newly-added projection elements.\n             *\n             * TODO: Every time a new component is rendered we could search up the tree for\n             * the closest mounted node and query from there rather than document.\n             */\n            if (this.potentialNodes.size) {\n                this.potentialNodes.forEach(mountNodeEarly);\n                this.potentialNodes.clear();\n            }\n            /**\n             * Write\n             */\n            this.nodes.forEach(resetTransformStyle);\n            /**\n             * Read ==================\n             */\n            // Update layout measurements of updated children\n            this.nodes.forEach(updateLayout);\n            /**\n             * Write\n             */\n            // Notify listeners that the layout is updated\n            this.nodes.forEach(notifyLayoutUpdate);\n            this.clearAllSnapshots();\n            // Flush any scheduled updates\n            flushSync.update();\n            flushSync.preRender();\n            flushSync.render();\n        };\n        ProjectionNode.prototype.clearAllSnapshots = function () {\n            this.nodes.forEach(clearSnapshot);\n            this.sharedNodes.forEach(removeLeadSnapshots);\n        };\n        ProjectionNode.prototype.scheduleUpdateProjection = function () {\n            sync.preRender(this.updateProjection, false, true);\n        };\n        ProjectionNode.prototype.scheduleCheckAfterUnmount = function () {\n            var _this = this;\n            /**\n             * If the unmounting node is in a layoutGroup and did trigger a willUpdate,\n             * we manually call didUpdate to give a chance to the siblings to animate.\n             * Otherwise, cleanup all snapshots to prevents future nodes from reusing them.\n             */\n            sync.postRender(function () {\n                if (_this.isLayoutDirty) {\n                    _this.root.didUpdate();\n                }\n                else {\n                    _this.root.checkUpdateFailed();\n                }\n            });\n        };\n        /**\n         * Update measurements\n         */\n        ProjectionNode.prototype.updateSnapshot = function () {\n            if (this.snapshot || !this.instance)\n                return;\n            var measured = this.measure();\n            var layout = this.removeTransform(this.removeElementScroll(measured));\n            roundBox(layout);\n            this.snapshot = {\n                measured: measured,\n                layout: layout,\n                latestValues: {},\n            };\n        };\n        ProjectionNode.prototype.updateLayout = function () {\n            var _a;\n            if (!this.instance)\n                return;\n            // TODO: Incorporate into a forwarded scroll offset\n            this.updateScroll();\n            if (!(this.options.alwaysMeasureLayout && this.isLead()) &&\n                !this.isLayoutDirty) {\n                return;\n            }\n            /**\n             * When a node is mounted, it simply resumes from the prevLead's\n             * snapshot instead of taking a new one, but the ancestors scroll\n             * might have updated while the prevLead is unmounted. We need to\n             * update the scroll again to make sure the layout we measure is\n             * up to date.\n             */\n            if (this.resumeFrom && !this.resumeFrom.instance) {\n                for (var i = 0; i < this.path.length; i++) {\n                    var node = this.path[i];\n                    node.updateScroll();\n                }\n            }\n            var measured = this.measure();\n            roundBox(measured);\n            var prevLayout = this.layout;\n            this.layout = {\n                measured: measured,\n                actual: this.removeElementScroll(measured),\n            };\n            this.layoutCorrected = createBox();\n            this.isLayoutDirty = false;\n            this.projectionDelta = undefined;\n            this.notifyListeners(\"measure\", this.layout.actual);\n            (_a = this.options.visualElement) === null || _a === void 0 ? void 0 : _a.notifyLayoutMeasure(this.layout.actual, prevLayout === null || prevLayout === void 0 ? void 0 : prevLayout.actual);\n        };\n        ProjectionNode.prototype.updateScroll = function () {\n            if (this.options.layoutScroll && this.instance) {\n                this.isScrollRoot = checkIsScrollRoot(this.instance);\n                this.scroll = measureScroll(this.instance);\n            }\n        };\n        ProjectionNode.prototype.resetTransform = function () {\n            var _a;\n            if (!resetTransform)\n                return;\n            var isResetRequested = this.isLayoutDirty || this.shouldResetTransform;\n            var hasProjection = this.projectionDelta && !isDeltaZero(this.projectionDelta);\n            var transformTemplate = (_a = this.options.visualElement) === null || _a === void 0 ? void 0 : _a.getProps().transformTemplate;\n            var transformTemplateValue = transformTemplate === null || transformTemplate === void 0 ? void 0 : transformTemplate(this.latestValues, \"\");\n            var transformTemplateHasChanged = transformTemplateValue !== this.prevTransformTemplateValue;\n            if (isResetRequested &&\n                (hasProjection ||\n                    hasTransform(this.latestValues) ||\n                    transformTemplateHasChanged)) {\n                resetTransform(this.instance, transformTemplateValue);\n                this.shouldResetTransform = false;\n                this.scheduleRender();\n            }\n        };\n        ProjectionNode.prototype.measure = function () {\n            var visualElement = this.options.visualElement;\n            if (!visualElement)\n                return createBox();\n            var box = visualElement.measureViewportBox();\n            // Remove viewport scroll to give page-relative coordinates\n            var scroll = this.root.scroll;\n            if (scroll) {\n                translateAxis(box.x, scroll.x);\n                translateAxis(box.y, scroll.y);\n            }\n            return box;\n        };\n        ProjectionNode.prototype.removeElementScroll = function (box) {\n            var boxWithoutScroll = createBox();\n            copyBoxInto(boxWithoutScroll, box);\n            /**\n             * Performance TODO: Keep a cumulative scroll offset down the tree\n             * rather than loop back up the path.\n             */\n            for (var i = 0; i < this.path.length; i++) {\n                var node = this.path[i];\n                var scroll_1 = node.scroll, options = node.options, isScrollRoot = node.isScrollRoot;\n                if (node !== this.root && scroll_1 && options.layoutScroll) {\n                    /**\n                     * If this is a new scroll root, we want to remove all previous scrolls\n                     * from the viewport box.\n                     */\n                    if (isScrollRoot) {\n                        copyBoxInto(boxWithoutScroll, box);\n                        var rootScroll = this.root.scroll;\n                        /**\n                         * Undo the application of page scroll that was originally added\n                         * to the measured bounding box.\n                         */\n                        if (rootScroll) {\n                            translateAxis(boxWithoutScroll.x, -rootScroll.x);\n                            translateAxis(boxWithoutScroll.y, -rootScroll.y);\n                        }\n                    }\n                    translateAxis(boxWithoutScroll.x, scroll_1.x);\n                    translateAxis(boxWithoutScroll.y, scroll_1.y);\n                }\n            }\n            return boxWithoutScroll;\n        };\n        ProjectionNode.prototype.applyTransform = function (box, transformOnly) {\n            if (transformOnly === void 0) { transformOnly = false; }\n            var withTransforms = createBox();\n            copyBoxInto(withTransforms, box);\n            for (var i = 0; i < this.path.length; i++) {\n                var node = this.path[i];\n                if (!transformOnly &&\n                    node.options.layoutScroll &&\n                    node.scroll &&\n                    node !== node.root) {\n                    transformBox(withTransforms, {\n                        x: -node.scroll.x,\n                        y: -node.scroll.y,\n                    });\n                }\n                if (!hasTransform(node.latestValues))\n                    continue;\n                transformBox(withTransforms, node.latestValues);\n            }\n            if (hasTransform(this.latestValues)) {\n                transformBox(withTransforms, this.latestValues);\n            }\n            return withTransforms;\n        };\n        ProjectionNode.prototype.removeTransform = function (box) {\n            var _a;\n            var boxWithoutTransform = createBox();\n            copyBoxInto(boxWithoutTransform, box);\n            for (var i = 0; i < this.path.length; i++) {\n                var node = this.path[i];\n                if (!node.instance)\n                    continue;\n                if (!hasTransform(node.latestValues))\n                    continue;\n                hasScale(node.latestValues) && node.updateSnapshot();\n                var sourceBox = createBox();\n                var nodeBox = node.measure();\n                copyBoxInto(sourceBox, nodeBox);\n                removeBoxTransforms(boxWithoutTransform, node.latestValues, (_a = node.snapshot) === null || _a === void 0 ? void 0 : _a.layout, sourceBox);\n            }\n            if (hasTransform(this.latestValues)) {\n                removeBoxTransforms(boxWithoutTransform, this.latestValues);\n            }\n            return boxWithoutTransform;\n        };\n        /**\n         *\n         */\n        ProjectionNode.prototype.setTargetDelta = function (delta) {\n            this.targetDelta = delta;\n            this.root.scheduleUpdateProjection();\n        };\n        ProjectionNode.prototype.setOptions = function (options) {\n            var _a;\n            this.options = __assign(__assign(__assign({}, this.options), options), { crossfade: (_a = options.crossfade) !== null && _a !== void 0 ? _a : true });\n        };\n        ProjectionNode.prototype.clearMeasurements = function () {\n            this.scroll = undefined;\n            this.layout = undefined;\n            this.snapshot = undefined;\n            this.prevTransformTemplateValue = undefined;\n            this.targetDelta = undefined;\n            this.target = undefined;\n            this.isLayoutDirty = false;\n        };\n        /**\n         * Frame calculations\n         */\n        ProjectionNode.prototype.resolveTargetDelta = function () {\n            var _a;\n            var _b = this.options, layout = _b.layout, layoutId = _b.layoutId;\n            /**\n             * If we have no layout, we can't perform projection, so early return\n             */\n            if (!this.layout || !(layout || layoutId))\n                return;\n            /**\n             * If we don't have a targetDelta but do have a layout, we can attempt to resolve\n             * a relativeParent. This will allow a component to perform scale correction\n             * even if no animation has started.\n             */\n            // TODO If this is unsuccessful this currently happens every frame\n            if (!this.targetDelta && !this.relativeTarget) {\n                // TODO: This is a semi-repetition of further down this function, make DRY\n                this.relativeParent = this.getClosestProjectingParent();\n                if (this.relativeParent && this.relativeParent.layout) {\n                    this.relativeTarget = createBox();\n                    this.relativeTargetOrigin = createBox();\n                    calcRelativePosition(this.relativeTargetOrigin, this.layout.actual, this.relativeParent.layout.actual);\n                    copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n                }\n            }\n            /**\n             * If we have no relative target or no target delta our target isn't valid\n             * for this frame.\n             */\n            if (!this.relativeTarget && !this.targetDelta)\n                return;\n            /**\n             * Lazy-init target data structure\n             */\n            if (!this.target) {\n                this.target = createBox();\n                this.targetWithTransforms = createBox();\n            }\n            /**\n             * If we've got a relative box for this component, resolve it into a target relative to the parent.\n             */\n            if (this.relativeTarget &&\n                this.relativeTargetOrigin &&\n                ((_a = this.relativeParent) === null || _a === void 0 ? void 0 : _a.target)) {\n                calcRelativeBox(this.target, this.relativeTarget, this.relativeParent.target);\n                /**\n                 * If we've only got a targetDelta, resolve it into a target\n                 */\n            }\n            else if (this.targetDelta) {\n                if (Boolean(this.resumingFrom)) {\n                    // TODO: This is creating a new object every frame\n                    this.target = this.applyTransform(this.layout.actual);\n                }\n                else {\n                    copyBoxInto(this.target, this.layout.actual);\n                }\n                applyBoxDelta(this.target, this.targetDelta);\n            }\n            else {\n                /**\n                 * If no target, use own layout as target\n                 */\n                copyBoxInto(this.target, this.layout.actual);\n            }\n            /**\n             * If we've been told to attempt to resolve a relative target, do so.\n             */\n            if (this.attemptToResolveRelativeTarget) {\n                this.attemptToResolveRelativeTarget = false;\n                this.relativeParent = this.getClosestProjectingParent();\n                if (this.relativeParent &&\n                    Boolean(this.relativeParent.resumingFrom) ===\n                        Boolean(this.resumingFrom) &&\n                    !this.relativeParent.options.layoutScroll &&\n                    this.relativeParent.target) {\n                    this.relativeTarget = createBox();\n                    this.relativeTargetOrigin = createBox();\n                    calcRelativePosition(this.relativeTargetOrigin, this.target, this.relativeParent.target);\n                    copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n                }\n            }\n        };\n        ProjectionNode.prototype.getClosestProjectingParent = function () {\n            if (!this.parent || hasTransform(this.parent.latestValues))\n                return undefined;\n            if ((this.parent.relativeTarget || this.parent.targetDelta) &&\n                this.parent.layout) {\n                return this.parent;\n            }\n            else {\n                return this.parent.getClosestProjectingParent();\n            }\n        };\n        ProjectionNode.prototype.calcProjection = function () {\n            var _a;\n            var _b = this.options, layout = _b.layout, layoutId = _b.layoutId;\n            /**\n             * If this section of the tree isn't animating we can\n             * delete our target sources for the following frame.\n             */\n            this.isTreeAnimating = Boolean(((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isTreeAnimating) ||\n                this.currentAnimation ||\n                this.pendingAnimation);\n            if (!this.isTreeAnimating) {\n                this.targetDelta = this.relativeTarget = undefined;\n            }\n            if (!this.layout || !(layout || layoutId))\n                return;\n            var lead = this.getLead();\n            /**\n             * Reset the corrected box with the latest values from box, as we're then going\n             * to perform mutative operations on it.\n             */\n            copyBoxInto(this.layoutCorrected, this.layout.actual);\n            /**\n             * Apply all the parent deltas to this box to produce the corrected box. This\n             * is the layout box, as it will appear on screen as a result of the transforms of its parents.\n             */\n            applyTreeDeltas(this.layoutCorrected, this.treeScale, this.path, Boolean(this.resumingFrom) || this !== lead);\n            var target = lead.target;\n            if (!target)\n                return;\n            if (!this.projectionDelta) {\n                this.projectionDelta = createDelta();\n                this.projectionDeltaWithTransform = createDelta();\n            }\n            var prevTreeScaleX = this.treeScale.x;\n            var prevTreeScaleY = this.treeScale.y;\n            var prevProjectionTransform = this.projectionTransform;\n            /**\n             * Update the delta between the corrected box and the target box before user-set transforms were applied.\n             * This will allow us to calculate the corrected borderRadius and boxShadow to compensate\n             * for our layout reprojection, but still allow them to be scaled correctly by the user.\n             * It might be that to simplify this we may want to accept that user-set scale is also corrected\n             * and we wouldn't have to keep and calc both deltas, OR we could support a user setting\n             * to allow people to choose whether these styles are corrected based on just the\n             * layout reprojection or the final bounding box.\n             */\n            calcBoxDelta(this.projectionDelta, this.layoutCorrected, target, this.latestValues);\n            this.projectionTransform = buildProjectionTransform(this.projectionDelta, this.treeScale);\n            if (this.projectionTransform !== prevProjectionTransform ||\n                this.treeScale.x !== prevTreeScaleX ||\n                this.treeScale.y !== prevTreeScaleY) {\n                this.hasProjected = true;\n                this.scheduleRender();\n                this.notifyListeners(\"projectionUpdate\", target);\n            }\n        };\n        ProjectionNode.prototype.hide = function () {\n            this.isVisible = false;\n            // TODO: Schedule render\n        };\n        ProjectionNode.prototype.show = function () {\n            this.isVisible = true;\n            // TODO: Schedule render\n        };\n        ProjectionNode.prototype.scheduleRender = function (notifyAll) {\n            var _a, _b, _c;\n            if (notifyAll === void 0) { notifyAll = true; }\n            (_b = (_a = this.options).scheduleRender) === null || _b === void 0 ? void 0 : _b.call(_a);\n            notifyAll && ((_c = this.getStack()) === null || _c === void 0 ? void 0 : _c.scheduleRender());\n            if (this.resumingFrom && !this.resumingFrom.instance) {\n                this.resumingFrom = undefined;\n            }\n        };\n        ProjectionNode.prototype.setAnimationOrigin = function (delta, hasOnlyRelativeTargetChanged) {\n            var _this = this;\n            var _a;\n            if (hasOnlyRelativeTargetChanged === void 0) { hasOnlyRelativeTargetChanged = false; }\n            var snapshot = this.snapshot;\n            var snapshotLatestValues = (snapshot === null || snapshot === void 0 ? void 0 : snapshot.latestValues) || {};\n            var mixedValues = __assign({}, this.latestValues);\n            var targetDelta = createDelta();\n            this.relativeTarget = this.relativeTargetOrigin = undefined;\n            this.attemptToResolveRelativeTarget = !hasOnlyRelativeTargetChanged;\n            var relativeLayout = createBox();\n            var isSharedLayoutAnimation = snapshot === null || snapshot === void 0 ? void 0 : snapshot.isShared;\n            var isOnlyMember = (((_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.members.length) || 0) <= 1;\n            var shouldCrossfadeOpacity = Boolean(isSharedLayoutAnimation &&\n                !isOnlyMember &&\n                this.options.crossfade === true &&\n                !this.path.some(hasOpacityCrossfade));\n            this.animationProgress = 0;\n            this.mixTargetDelta = function (latest) {\n                var _a;\n                var progress = latest / 1000;\n                mixAxisDelta(targetDelta.x, delta.x, progress);\n                mixAxisDelta(targetDelta.y, delta.y, progress);\n                _this.setTargetDelta(targetDelta);\n                if (_this.relativeTarget &&\n                    _this.relativeTargetOrigin &&\n                    _this.layout &&\n                    ((_a = _this.relativeParent) === null || _a === void 0 ? void 0 : _a.layout)) {\n                    calcRelativePosition(relativeLayout, _this.layout.actual, _this.relativeParent.layout.actual);\n                    mixBox(_this.relativeTarget, _this.relativeTargetOrigin, relativeLayout, progress);\n                }\n                if (isSharedLayoutAnimation) {\n                    _this.animationValues = mixedValues;\n                    mixValues(mixedValues, snapshotLatestValues, _this.latestValues, progress, shouldCrossfadeOpacity, isOnlyMember);\n                }\n                _this.root.scheduleUpdateProjection();\n                _this.scheduleRender();\n                _this.animationProgress = progress;\n            };\n            this.mixTargetDelta(0);\n        };\n        ProjectionNode.prototype.startAnimation = function (options) {\n            var _this = this;\n            var _a, _b;\n            this.notifyListeners(\"animationStart\");\n            (_a = this.currentAnimation) === null || _a === void 0 ? void 0 : _a.stop();\n            if (this.resumingFrom) {\n                (_b = this.resumingFrom.currentAnimation) === null || _b === void 0 ? void 0 : _b.stop();\n            }\n            if (this.pendingAnimation) {\n                cancelSync.update(this.pendingAnimation);\n                this.pendingAnimation = undefined;\n            }\n            /**\n             * Start the animation in the next frame to have a frame with progress 0,\n             * where the target is the same as when the animation started, so we can\n             * calculate the relative positions correctly for instant transitions.\n             */\n            this.pendingAnimation = sync.update(function () {\n                globalProjectionState.hasAnimatedSinceResize = true;\n                _this.currentAnimation = animate(0, animationTarget, __assign(__assign({}, options), { onUpdate: function (latest) {\n                        var _a;\n                        _this.mixTargetDelta(latest);\n                        (_a = options.onUpdate) === null || _a === void 0 ? void 0 : _a.call(options, latest);\n                    }, onComplete: function () {\n                        var _a;\n                        (_a = options.onComplete) === null || _a === void 0 ? void 0 : _a.call(options);\n                        _this.completeAnimation();\n                    } }));\n                if (_this.resumingFrom) {\n                    _this.resumingFrom.currentAnimation = _this.currentAnimation;\n                }\n                _this.pendingAnimation = undefined;\n            });\n        };\n        ProjectionNode.prototype.completeAnimation = function () {\n            var _a;\n            if (this.resumingFrom) {\n                this.resumingFrom.currentAnimation = undefined;\n                this.resumingFrom.preserveOpacity = undefined;\n            }\n            (_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.exitAnimationComplete();\n            this.resumingFrom =\n                this.currentAnimation =\n                    this.animationValues =\n                        undefined;\n            this.notifyListeners(\"animationComplete\");\n        };\n        ProjectionNode.prototype.finishAnimation = function () {\n            var _a;\n            if (this.currentAnimation) {\n                (_a = this.mixTargetDelta) === null || _a === void 0 ? void 0 : _a.call(this, animationTarget);\n                this.currentAnimation.stop();\n            }\n            this.completeAnimation();\n        };\n        ProjectionNode.prototype.applyTransformsToTarget = function () {\n            var _a = this.getLead(), targetWithTransforms = _a.targetWithTransforms, target = _a.target, layout = _a.layout, latestValues = _a.latestValues;\n            if (!targetWithTransforms || !target || !layout)\n                return;\n            copyBoxInto(targetWithTransforms, target);\n            /**\n             * Apply the latest user-set transforms to the targetBox to produce the targetBoxFinal.\n             * This is the final box that we will then project into by calculating a transform delta and\n             * applying it to the corrected box.\n             */\n            transformBox(targetWithTransforms, latestValues);\n            /**\n             * Update the delta between the corrected box and the final target box, after\n             * user-set transforms are applied to it. This will be used by the renderer to\n             * create a transform style that will reproject the element from its actual layout\n             * into the desired bounding box.\n             */\n            calcBoxDelta(this.projectionDeltaWithTransform, this.layoutCorrected, targetWithTransforms, latestValues);\n        };\n        ProjectionNode.prototype.registerSharedNode = function (layoutId, node) {\n            var _a, _b, _c;\n            if (!this.sharedNodes.has(layoutId)) {\n                this.sharedNodes.set(layoutId, new NodeStack());\n            }\n            var stack = this.sharedNodes.get(layoutId);\n            stack.add(node);\n            node.promote({\n                transition: (_a = node.options.initialPromotionConfig) === null || _a === void 0 ? void 0 : _a.transition,\n                preserveFollowOpacity: (_c = (_b = node.options.initialPromotionConfig) === null || _b === void 0 ? void 0 : _b.shouldPreserveFollowOpacity) === null || _c === void 0 ? void 0 : _c.call(_b, node),\n            });\n        };\n        ProjectionNode.prototype.isLead = function () {\n            var stack = this.getStack();\n            return stack ? stack.lead === this : true;\n        };\n        ProjectionNode.prototype.getLead = function () {\n            var _a;\n            var layoutId = this.options.layoutId;\n            return layoutId ? ((_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.lead) || this : this;\n        };\n        ProjectionNode.prototype.getPrevLead = function () {\n            var _a;\n            var layoutId = this.options.layoutId;\n            return layoutId ? (_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.prevLead : undefined;\n        };\n        ProjectionNode.prototype.getStack = function () {\n            var layoutId = this.options.layoutId;\n            if (layoutId)\n                return this.root.sharedNodes.get(layoutId);\n        };\n        ProjectionNode.prototype.promote = function (_a) {\n            var _b = _a === void 0 ? {} : _a, needsReset = _b.needsReset, transition = _b.transition, preserveFollowOpacity = _b.preserveFollowOpacity;\n            var stack = this.getStack();\n            if (stack)\n                stack.promote(this, preserveFollowOpacity);\n            if (needsReset) {\n                this.projectionDelta = undefined;\n                this.needsReset = true;\n            }\n            if (transition)\n                this.setOptions({ transition: transition });\n        };\n        ProjectionNode.prototype.relegate = function () {\n            var stack = this.getStack();\n            if (stack) {\n                return stack.relegate(this);\n            }\n            else {\n                return false;\n            }\n        };\n        ProjectionNode.prototype.resetRotation = function () {\n            var visualElement = this.options.visualElement;\n            if (!visualElement)\n                return;\n            // If there's no detected rotation values, we can early return without a forced render.\n            var hasRotate = false;\n            // Keep a record of all the values we've reset\n            var resetValues = {};\n            // Check the rotate value of all axes and reset to 0\n            for (var i = 0; i < transformAxes.length; i++) {\n                var axis = transformAxes[i];\n                var key = \"rotate\" + axis;\n                // If this rotation doesn't exist as a motion value, then we don't\n                // need to reset it\n                if (!visualElement.getStaticValue(key)) {\n                    continue;\n                }\n                hasRotate = true;\n                // Record the rotation and then temporarily set it to 0\n                resetValues[key] = visualElement.getStaticValue(key);\n                visualElement.setStaticValue(key, 0);\n            }\n            // If there's no rotation values, we don't need to do any more.\n            if (!hasRotate)\n                return;\n            // Force a render of this element to apply the transform with all rotations\n            // set to 0.\n            visualElement === null || visualElement === void 0 ? void 0 : visualElement.syncRender();\n            // Put back all the values we reset\n            for (var key in resetValues) {\n                visualElement.setStaticValue(key, resetValues[key]);\n            }\n            // Schedule a render for the next frame. This ensures we won't visually\n            // see the element with the reset rotate value applied.\n            visualElement.scheduleRender();\n        };\n        ProjectionNode.prototype.getProjectionStyles = function (styleProp) {\n            var _a, _b, _c, _d, _e, _f;\n            if (styleProp === void 0) { styleProp = {}; }\n            // TODO: Return lifecycle-persistent object\n            var styles = {};\n            if (!this.instance || this.isSVG)\n                return styles;\n            if (!this.isVisible) {\n                return { visibility: \"hidden\" };\n            }\n            else {\n                styles.visibility = \"\";\n            }\n            var transformTemplate = (_a = this.options.visualElement) === null || _a === void 0 ? void 0 : _a.getProps().transformTemplate;\n            if (this.needsReset) {\n                this.needsReset = false;\n                styles.opacity = \"\";\n                styles.pointerEvents =\n                    resolveMotionValue(styleProp.pointerEvents) || \"\";\n                styles.transform = transformTemplate\n                    ? transformTemplate(this.latestValues, \"\")\n                    : \"none\";\n                return styles;\n            }\n            var lead = this.getLead();\n            if (!this.projectionDelta || !this.layout || !lead.target) {\n                var emptyStyles = {};\n                if (this.options.layoutId) {\n                    emptyStyles.opacity = (_b = this.latestValues.opacity) !== null && _b !== void 0 ? _b : 1;\n                    emptyStyles.pointerEvents =\n                        resolveMotionValue(styleProp.pointerEvents) || \"\";\n                }\n                if (this.hasProjected && !hasTransform(this.latestValues)) {\n                    emptyStyles.transform = transformTemplate\n                        ? transformTemplate({}, \"\")\n                        : \"none\";\n                    this.hasProjected = false;\n                }\n                return emptyStyles;\n            }\n            var valuesToRender = lead.animationValues || lead.latestValues;\n            this.applyTransformsToTarget();\n            styles.transform = buildProjectionTransform(this.projectionDeltaWithTransform, this.treeScale, valuesToRender);\n            if (transformTemplate) {\n                styles.transform = transformTemplate(valuesToRender, styles.transform);\n            }\n            var _g = this.projectionDelta, x = _g.x, y = _g.y;\n            styles.transformOrigin = \"\".concat(x.origin * 100, \"% \").concat(y.origin * 100, \"% 0\");\n            if (lead.animationValues) {\n                /**\n                 * If the lead component is animating, assign this either the entering/leaving\n                 * opacity\n                 */\n                styles.opacity =\n                    lead === this\n                        ? (_d = (_c = valuesToRender.opacity) !== null && _c !== void 0 ? _c : this.latestValues.opacity) !== null && _d !== void 0 ? _d : 1\n                        : this.preserveOpacity\n                            ? this.latestValues.opacity\n                            : valuesToRender.opacityExit;\n            }\n            else {\n                /**\n                 * Or we're not animating at all, set the lead component to its actual\n                 * opacity and other components to hidden.\n                 */\n                styles.opacity =\n                    lead === this\n                        ? (_e = valuesToRender.opacity) !== null && _e !== void 0 ? _e : \"\"\n                        : (_f = valuesToRender.opacityExit) !== null && _f !== void 0 ? _f : 0;\n            }\n            /**\n             * Apply scale correction\n             */\n            for (var key in scaleCorrectors) {\n                if (valuesToRender[key] === undefined)\n                    continue;\n                var _h = scaleCorrectors[key], correct = _h.correct, applyTo = _h.applyTo;\n                var corrected = correct(valuesToRender[key], lead);\n                if (applyTo) {\n                    var num = applyTo.length;\n                    for (var i = 0; i < num; i++) {\n                        styles[applyTo[i]] = corrected;\n                    }\n                }\n                else {\n                    styles[key] = corrected;\n                }\n            }\n            /**\n             * Disable pointer events on follow components. This is to ensure\n             * that if a follow component covers a lead component it doesn't block\n             * pointer events on the lead.\n             */\n            if (this.options.layoutId) {\n                styles.pointerEvents =\n                    lead === this\n                        ? resolveMotionValue(styleProp.pointerEvents) || \"\"\n                        : \"none\";\n            }\n            return styles;\n        };\n        ProjectionNode.prototype.clearSnapshot = function () {\n            this.resumeFrom = this.snapshot = undefined;\n        };\n        // Only run on root\n        ProjectionNode.prototype.resetTree = function () {\n            this.root.nodes.forEach(function (node) { var _a; return (_a = node.currentAnimation) === null || _a === void 0 ? void 0 : _a.stop(); });\n            this.root.nodes.forEach(clearMeasurements);\n            this.root.sharedNodes.clear();\n        };\n        return ProjectionNode;\n    }());\n}\nfunction updateLayout(node) {\n    node.updateLayout();\n}\nfunction notifyLayoutUpdate(node) {\n    var _a, _b, _c, _d;\n    var snapshot = (_b = (_a = node.resumeFrom) === null || _a === void 0 ? void 0 : _a.snapshot) !== null && _b !== void 0 ? _b : node.snapshot;\n    if (node.isLead() &&\n        node.layout &&\n        snapshot &&\n        node.hasListeners(\"didUpdate\")) {\n        var _e = node.layout, layout_1 = _e.actual, measuredLayout = _e.measured;\n        // TODO Maybe we want to also resize the layout snapshot so we don't trigger\n        // animations for instance if layout=\"size\" and an element has only changed position\n        if (node.options.animationType === \"size\") {\n            eachAxis(function (axis) {\n                var axisSnapshot = snapshot.isShared\n                    ? snapshot.measured[axis]\n                    : snapshot.layout[axis];\n                var length = calcLength(axisSnapshot);\n                axisSnapshot.min = layout_1[axis].min;\n                axisSnapshot.max = axisSnapshot.min + length;\n            });\n        }\n        else if (node.options.animationType === \"position\") {\n            eachAxis(function (axis) {\n                var axisSnapshot = snapshot.isShared\n                    ? snapshot.measured[axis]\n                    : snapshot.layout[axis];\n                var length = calcLength(layout_1[axis]);\n                axisSnapshot.max = axisSnapshot.min + length;\n            });\n        }\n        var layoutDelta = createDelta();\n        calcBoxDelta(layoutDelta, layout_1, snapshot.layout);\n        var visualDelta = createDelta();\n        if (snapshot.isShared) {\n            calcBoxDelta(visualDelta, node.applyTransform(measuredLayout, true), snapshot.measured);\n        }\n        else {\n            calcBoxDelta(visualDelta, layout_1, snapshot.layout);\n        }\n        var hasLayoutChanged = !isDeltaZero(layoutDelta);\n        var hasRelativeTargetChanged = false;\n        if (!node.resumeFrom) {\n            node.relativeParent = node.getClosestProjectingParent();\n            /**\n             * If the relativeParent is itself resuming from a different element then\n             * the relative snapshot is not relavent\n             */\n            if (node.relativeParent && !node.relativeParent.resumeFrom) {\n                var _f = node.relativeParent, parentSnapshot = _f.snapshot, parentLayout = _f.layout;\n                if (parentSnapshot && parentLayout) {\n                    var relativeSnapshot = createBox();\n                    calcRelativePosition(relativeSnapshot, snapshot.layout, parentSnapshot.layout);\n                    var relativeLayout = createBox();\n                    calcRelativePosition(relativeLayout, layout_1, parentLayout.actual);\n                    if (!boxEquals(relativeSnapshot, relativeLayout)) {\n                        hasRelativeTargetChanged = true;\n                    }\n                }\n            }\n        }\n        node.notifyListeners(\"didUpdate\", {\n            layout: layout_1,\n            snapshot: snapshot,\n            delta: visualDelta,\n            layoutDelta: layoutDelta,\n            hasLayoutChanged: hasLayoutChanged,\n            hasRelativeTargetChanged: hasRelativeTargetChanged,\n        });\n    }\n    else if (node.isLead()) {\n        (_d = (_c = node.options).onExitComplete) === null || _d === void 0 ? void 0 : _d.call(_c);\n    }\n    /**\n     * Clearing transition\n     * TODO: Investigate why this transition is being passed in as {type: false } from Framer\n     * and why we need it at all\n     */\n    node.options.transition = undefined;\n}\nfunction clearSnapshot(node) {\n    node.clearSnapshot();\n}\nfunction clearMeasurements(node) {\n    node.clearMeasurements();\n}\nfunction resetTransformStyle(node) {\n    var visualElement = node.options.visualElement;\n    if (visualElement === null || visualElement === void 0 ? void 0 : visualElement.getProps().onBeforeLayoutMeasure) {\n        visualElement.notifyBeforeLayoutMeasure();\n    }\n    node.resetTransform();\n}\nfunction finishAnimation(node) {\n    node.finishAnimation();\n    node.targetDelta = node.relativeTarget = node.target = undefined;\n}\nfunction resolveTargetDelta(node) {\n    node.resolveTargetDelta();\n}\nfunction calcProjection(node) {\n    node.calcProjection();\n}\nfunction resetRotation(node) {\n    node.resetRotation();\n}\nfunction removeLeadSnapshots(stack) {\n    stack.removeLeadSnapshot();\n}\nfunction mixAxisDelta(output, delta, p) {\n    output.translate = mix(delta.translate, 0, p);\n    output.scale = mix(delta.scale, 1, p);\n    output.origin = delta.origin;\n    output.originPoint = delta.originPoint;\n}\nfunction mixAxis(output, from, to, p) {\n    output.min = mix(from.min, to.min, p);\n    output.max = mix(from.max, to.max, p);\n}\nfunction mixBox(output, from, to, p) {\n    mixAxis(output.x, from.x, to.x, p);\n    mixAxis(output.y, from.y, to.y, p);\n}\nfunction hasOpacityCrossfade(node) {\n    return (node.animationValues && node.animationValues.opacityExit !== undefined);\n}\nvar defaultLayoutTransition = {\n    duration: 0.45,\n    ease: [0.4, 0, 0.1, 1],\n};\nfunction mountNodeEarly(node, id) {\n    /**\n     * Rather than searching the DOM from document we can search the\n     * path for the deepest mounted ancestor and search from there\n     */\n    var searchNode = node.root;\n    for (var i = node.path.length - 1; i >= 0; i--) {\n        if (Boolean(node.path[i].instance)) {\n            searchNode = node.path[i];\n            break;\n        }\n    }\n    var searchElement = searchNode && searchNode !== node.root ? searchNode.instance : document;\n    var element = searchElement.querySelector(\"[data-projection-id=\\\"\".concat(id, \"\\\"]\"));\n    if (element)\n        node.mount(element, true);\n}\nfunction roundAxis(axis) {\n    axis.min = Math.round(axis.min);\n    axis.max = Math.round(axis.max);\n}\nfunction roundBox(box) {\n    roundAxis(box.x);\n    roundAxis(box.y);\n}\n\nexport { createProjectionNode, mixAxis, mixAxisDelta, mixBox };\n","import { createProjectionNode } from './create-projection-node.mjs';\nimport { addDomEvent } from '../../events/use-dom-event.mjs';\n\nvar DocumentProjectionNode = createProjectionNode({\n    attachResizeListener: function (ref, notify) { return addDomEvent(ref, \"resize\", notify); },\n    measureScroll: function () { return ({\n        x: document.documentElement.scrollLeft || document.body.scrollLeft,\n        y: document.documentElement.scrollTop || document.body.scrollTop,\n    }); },\n    checkIsScrollRoot: function () { return true; },\n});\n\nexport { DocumentProjectionNode };\n","import { createProjectionNode } from './create-projection-node.mjs';\nimport { DocumentProjectionNode } from './DocumentProjectionNode.mjs';\n\nvar rootProjectionNode = {\n    current: undefined,\n};\nvar HTMLProjectionNode = createProjectionNode({\n    measureScroll: function (instance) { return ({\n        x: instance.scrollLeft,\n        y: instance.scrollTop,\n    }); },\n    defaultParent: function () {\n        if (!rootProjectionNode.current) {\n            var documentNode = new DocumentProjectionNode(0, {});\n            documentNode.mount(window);\n            documentNode.setOptions({ layoutScroll: true });\n            rootProjectionNode.current = documentNode;\n        }\n        return rootProjectionNode.current;\n    },\n    resetTransform: function (instance, value) {\n        instance.style.transform = value !== null && value !== void 0 ? value : \"none\";\n    },\n    checkIsScrollRoot: function (instance) {\n        return Boolean(window.getComputedStyle(instance).position === \"fixed\");\n    },\n});\n\nexport { HTMLProjectionNode, rootProjectionNode };\n","import { __assign } from 'tslib';\nimport { createMotionComponent } from '../../motion/index.mjs';\nimport { createMotionProxy } from './motion-proxy.mjs';\nimport { createDomMotionConfig } from './utils/create-config.mjs';\nimport { gestureAnimations } from '../../motion/features/gestures.mjs';\nimport { animations } from '../../motion/features/animations.mjs';\nimport { drag } from '../../motion/features/drag.mjs';\nimport { createDomVisualElement } from './create-visual-element.mjs';\nimport { layoutFeatures } from '../../motion/features/layout/index.mjs';\nimport { HTMLProjectionNode } from '../../projection/node/HTMLProjectionNode.mjs';\n\nvar featureBundle = __assign(__assign(__assign(__assign({}, animations), gestureAnimations), drag), layoutFeatures);\n/**\n * HTML & SVG components, optimised for use with gestures and animation. These can be used as\n * drop-in replacements for any HTML & SVG component, all CSS & SVG properties are supported.\n *\n * @public\n */\nvar motion = /*@__PURE__*/ createMotionProxy(function (Component, config) {\n    return createDomMotionConfig(Component, config, featureBundle, createDomVisualElement, HTMLProjectionNode);\n});\n/**\n * Create a DOM `motion` component with the provided string. This is primarily intended\n * as a full alternative to `motion` for consumers who have to support environments that don't\n * support `Proxy`.\n *\n * ```javascript\n * import { createDomMotionComponent } from \"framer-motion\"\n *\n * const motion = {\n *   div: createDomMotionComponent('div')\n * }\n * ```\n *\n * @public\n */\nfunction createDomMotionComponent(key) {\n    return createMotionComponent(createDomMotionConfig(key, { forwardMotionProps: false }, featureBundle, createDomVisualElement, HTMLProjectionNode));\n}\n\nexport { createDomMotionComponent, motion };\n","import { useState, useRef, useEffect, useMemo } from 'react';\nimport createDebounce from 'debounce';\n\nfunction useMeasure(_temp) {\n  let {\n    debounce,\n    scroll,\n    polyfill,\n    offsetSize\n  } = _temp === void 0 ? {\n    debounce: 0,\n    scroll: false,\n    offsetSize: false\n  } : _temp;\n  const ResizeObserver = polyfill || (typeof window === 'undefined' ? class ResizeObserver {} : window.ResizeObserver);\n\n  if (!ResizeObserver) {\n    throw new Error('This browser does not support ResizeObserver out of the box. See: https://github.com/react-spring/react-use-measure/#resize-observer-polyfills');\n  }\n\n  const [bounds, set] = useState({\n    left: 0,\n    top: 0,\n    width: 0,\n    height: 0,\n    bottom: 0,\n    right: 0,\n    x: 0,\n    y: 0\n  }); // keep all state in a ref\n\n  const state = useRef({\n    element: null,\n    scrollContainers: null,\n    resizeObserver: null,\n    lastBounds: bounds\n  }); // set actual debounce values early, so effects know if they should react accordingly\n\n  const scrollDebounce = debounce ? typeof debounce === 'number' ? debounce : debounce.scroll : null;\n  const resizeDebounce = debounce ? typeof debounce === 'number' ? debounce : debounce.resize : null; // make sure to update state only as long as the component is truly mounted\n\n  const mounted = useRef(false);\n  useEffect(() => {\n    mounted.current = true;\n    return () => void (mounted.current = false);\n  }); // memoize handlers, so event-listeners know when they should update\n\n  const [forceRefresh, resizeChange, scrollChange] = useMemo(() => {\n    const callback = () => {\n      if (!state.current.element) return;\n      const {\n        left,\n        top,\n        width,\n        height,\n        bottom,\n        right,\n        x,\n        y\n      } = state.current.element.getBoundingClientRect();\n      const size = {\n        left,\n        top,\n        width,\n        height,\n        bottom,\n        right,\n        x,\n        y\n      };\n\n      if (state.current.element instanceof HTMLElement && offsetSize) {\n        size.height = state.current.element.offsetHeight;\n        size.width = state.current.element.offsetWidth;\n      }\n\n      Object.freeze(size);\n      if (mounted.current && !areBoundsEqual(state.current.lastBounds, size)) set(state.current.lastBounds = size);\n    };\n\n    return [callback, resizeDebounce ? createDebounce(callback, resizeDebounce) : callback, scrollDebounce ? createDebounce(callback, scrollDebounce) : callback];\n  }, [set, offsetSize, scrollDebounce, resizeDebounce]); // cleanup current scroll-listeners / observers\n\n  function removeListeners() {\n    if (state.current.scrollContainers) {\n      state.current.scrollContainers.forEach(element => element.removeEventListener('scroll', scrollChange, true));\n      state.current.scrollContainers = null;\n    }\n\n    if (state.current.resizeObserver) {\n      state.current.resizeObserver.disconnect();\n      state.current.resizeObserver = null;\n    }\n  } // add scroll-listeners / observers\n\n\n  function addListeners() {\n    if (!state.current.element) return;\n    state.current.resizeObserver = new ResizeObserver(scrollChange);\n    state.current.resizeObserver.observe(state.current.element);\n\n    if (scroll && state.current.scrollContainers) {\n      state.current.scrollContainers.forEach(scrollContainer => scrollContainer.addEventListener('scroll', scrollChange, {\n        capture: true,\n        passive: true\n      }));\n    }\n  } // the ref we expose to the user\n\n\n  const ref = node => {\n    if (!node || node === state.current.element) return;\n    removeListeners();\n    state.current.element = node;\n    state.current.scrollContainers = findScrollContainers(node);\n    addListeners();\n  }; // add general event listeners\n\n\n  useOnWindowScroll(scrollChange, Boolean(scroll));\n  useOnWindowResize(resizeChange); // respond to changes that are relevant for the listeners\n\n  useEffect(() => {\n    removeListeners();\n    addListeners();\n  }, [scroll, scrollChange, resizeChange]); // remove all listeners when the components unmounts\n\n  useEffect(() => removeListeners, []);\n  return [ref, bounds, forceRefresh];\n} // Adds native resize listener to window\n\n\nfunction useOnWindowResize(onWindowResize) {\n  useEffect(() => {\n    const cb = onWindowResize;\n    window.addEventListener('resize', cb);\n    return () => void window.removeEventListener('resize', cb);\n  }, [onWindowResize]);\n}\n\nfunction useOnWindowScroll(onScroll, enabled) {\n  useEffect(() => {\n    if (enabled) {\n      const cb = onScroll;\n      window.addEventListener('scroll', cb, {\n        capture: true,\n        passive: true\n      });\n      return () => void window.removeEventListener('scroll', cb, true);\n    }\n  }, [onScroll, enabled]);\n} // Returns a list of scroll offsets\n\n\nfunction findScrollContainers(element) {\n  const result = [];\n  if (!element || element === document.body) return result;\n  const {\n    overflow,\n    overflowX,\n    overflowY\n  } = window.getComputedStyle(element);\n  if ([overflow, overflowX, overflowY].some(prop => prop === 'auto' || prop === 'scroll')) result.push(element);\n  return [...result, ...findScrollContainers(element.parentElement)];\n} // Checks if element boundaries are equal\n\n\nconst keys = ['x', 'y', 'top', 'bottom', 'left', 'right', 'width', 'height'];\n\nconst areBoundsEqual = (a, b) => keys.every(key => a[key] === b[key]);\n\nexport { useMeasure as default };\n","import type { DragDropManager } from 'dnd-core'\nimport { createContext } from 'react'\n\n/**\n * The React context type\n */\nexport interface DndContextType {\n\tdragDropManager: DragDropManager | undefined\n}\n\n/**\n * Create the React Context\n */\nexport const DndContext = createContext<DndContextType>({\n\tdragDropManager: undefined,\n})\n","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n  return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n  return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\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 */\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/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\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// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n  if (val === void 0) return 'undefined';\n  if (val === null) return 'null';\n  var type = typeof val;\n\n  switch (type) {\n    case 'boolean':\n    case 'string':\n    case 'number':\n    case 'symbol':\n    case 'function':\n      {\n        return type;\n      }\n  }\n\n  if (Array.isArray(val)) return 'array';\n  if (isDate(val)) return 'date';\n  if (isError(val)) return 'error';\n  var constructorName = ctorName(val);\n\n  switch (constructorName) {\n    case 'Symbol':\n    case 'Promise':\n    case 'WeakMap':\n    case 'WeakSet':\n    case 'Map':\n    case 'Set':\n      return constructorName;\n  } // other\n\n\n  return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n  return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n  return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n  if (val instanceof Date) return true;\n  return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n  var typeOfVal = typeof val;\n\n  if (process.env.NODE_ENV !== 'production') {\n    typeOfVal = miniKindOf(val);\n  }\n\n  return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\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(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\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(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n    }\n\n    return enhancer(createStore)(reducer, preloadedState);\n  }\n\n  if (typeof reducer !== 'function') {\n    throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\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(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : '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(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n    }\n\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : '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/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(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/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(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n    }\n\n    if (typeof action.type === 'undefined') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n    }\n\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : '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(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\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 Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\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[$$observable] = 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[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\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\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\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 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 \\\"\" + kindOf(inputState) + \"\\\". 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(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + 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(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + 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 actionType = action && action.type;\n        throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _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\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(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(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\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 */\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/**\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\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(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : '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 _objectSpread(_objectSpread({}, store), {}, {\n        dispatch: _dispatch\n      });\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\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\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nexport function invariant(condition: any, format: string, ...args: any[]) {\n\tif (isProduction()) {\n\t\tif (format === undefined) {\n\t\t\tthrow new Error('invariant requires an error message argument')\n\t\t}\n\t}\n\n\tif (!condition) {\n\t\tlet error\n\t\tif (format === undefined) {\n\t\t\terror = new Error(\n\t\t\t\t'Minified exception occurred; use the non-minified dev environment ' +\n\t\t\t\t\t'for the full error message and additional helpful warnings.',\n\t\t\t)\n\t\t} else {\n\t\t\tlet argIndex = 0\n\t\t\terror = new Error(\n\t\t\t\tformat.replace(/%s/g, function () {\n\t\t\t\t\treturn args[argIndex++]\n\t\t\t\t}),\n\t\t\t)\n\t\t\terror.name = 'Invariant Violation'\n\t\t}\n\n\t\t;(error as any).framesToPop = 1 // we don't care about invariant's own frame\n\t\tthrow error\n\t}\n}\n\nfunction isProduction() {\n\treturn (\n\t\ttypeof process !== 'undefined' && process.env['NODE_ENV'] === 'production'\n\t)\n}\n","// cheap lodash replacements\n\n/**\n * drop-in replacement for _.get\n * @param obj\n * @param path\n * @param defaultValue\n */\nexport function get<T>(obj: any, path: string, defaultValue: T): T {\n\treturn path\n\t\t.split('.')\n\t\t.reduce((a, c) => (a && a[c] ? a[c] : defaultValue || null), obj) as T\n}\n\n/**\n * drop-in replacement for _.without\n */\nexport function without<T>(items: T[], item: T): T[] {\n\treturn items.filter((i) => i !== item)\n}\n\n/**\n * drop-in replacement for _.isString\n * @param input\n */\nexport function isString(input: any): boolean {\n\treturn typeof input === 'string'\n}\n\n/**\n * drop-in replacement for _.isString\n * @param input\n */\nexport function isObject(input: any): boolean {\n\treturn typeof input === 'object'\n}\n\n/**\n * replacement for _.xor\n * @param itemsA\n * @param itemsB\n */\nexport function xor<T extends string | number>(itemsA: T[], itemsB: T[]): T[] {\n\tconst map = new Map<T, number>()\n\tconst insertItem = (item: T) => {\n\t\tmap.set(item, map.has(item) ? (map.get(item) as number) + 1 : 1)\n\t}\n\titemsA.forEach(insertItem)\n\titemsB.forEach(insertItem)\n\n\tconst result: T[] = []\n\tmap.forEach((count, key) => {\n\t\tif (count === 1) {\n\t\t\tresult.push(key)\n\t\t}\n\t})\n\treturn result\n}\n\n/**\n * replacement for _.intersection\n * @param itemsA\n * @param itemsB\n */\nexport function intersection<T>(itemsA: T[], itemsB: T[]): T[] {\n\treturn itemsA.filter((t) => itemsB.indexOf(t) > -1)\n}\n","export const INIT_COORDS = 'dnd-core/INIT_COORDS'\nexport const BEGIN_DRAG = 'dnd-core/BEGIN_DRAG'\nexport const PUBLISH_DRAG_SOURCE = 'dnd-core/PUBLISH_DRAG_SOURCE'\nexport const HOVER = 'dnd-core/HOVER'\nexport const DROP = 'dnd-core/DROP'\nexport const END_DRAG = 'dnd-core/END_DRAG'\n","import type { AnyAction } from 'redux'\n\nimport type { XYCoord } from '../../../interfaces.js'\nimport { INIT_COORDS } from '../types.js'\n\nexport function setClientOffset(\n\tclientOffset: XYCoord | null | undefined,\n\tsourceClientOffset?: XYCoord | null | undefined,\n): AnyAction {\n\treturn {\n\t\ttype: INIT_COORDS,\n\t\tpayload: {\n\t\t\tsourceClientOffset: sourceClientOffset || null,\n\t\t\tclientOffset: clientOffset || null,\n\t\t},\n\t}\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type {\n\tAction,\n\tBeginDragOptions,\n\tBeginDragPayload,\n\tDragDropManager,\n\tDragDropMonitor,\n\tHandlerRegistry,\n\tIdentifier,\n\tXYCoord,\n} from '../../interfaces.js'\nimport { isObject } from '../../utils/js_utils.js'\nimport { setClientOffset } from './local/setClientOffset.js'\nimport { BEGIN_DRAG, INIT_COORDS } from './types.js'\n\nconst ResetCoordinatesAction = {\n\ttype: INIT_COORDS,\n\tpayload: {\n\t\tclientOffset: null,\n\t\tsourceClientOffset: null,\n\t},\n}\n\nexport function createBeginDrag(manager: DragDropManager) {\n\treturn function beginDrag(\n\t\tsourceIds: Identifier[] = [],\n\t\toptions: BeginDragOptions = {\n\t\t\tpublishSource: true,\n\t\t},\n\t): Action<BeginDragPayload> | undefined {\n\t\tconst {\n\t\t\tpublishSource = true,\n\t\t\tclientOffset,\n\t\t\tgetSourceClientOffset,\n\t\t}: BeginDragOptions = options\n\t\tconst monitor = manager.getMonitor()\n\t\tconst registry = manager.getRegistry()\n\n\t\t// Initialize the coordinates using the client offset\n\t\tmanager.dispatch(setClientOffset(clientOffset))\n\n\t\tverifyInvariants(sourceIds, monitor, registry)\n\n\t\t// Get the draggable source\n\t\tconst sourceId = getDraggableSource(sourceIds, monitor)\n\t\tif (sourceId == null) {\n\t\t\tmanager.dispatch(ResetCoordinatesAction)\n\t\t\treturn\n\t\t}\n\n\t\t// Get the source client offset\n\t\tlet sourceClientOffset: XYCoord | null = null\n\t\tif (clientOffset) {\n\t\t\tif (!getSourceClientOffset) {\n\t\t\t\tthrow new Error('getSourceClientOffset must be defined')\n\t\t\t}\n\t\t\tverifyGetSourceClientOffsetIsFunction(getSourceClientOffset)\n\t\t\tsourceClientOffset = getSourceClientOffset(sourceId)\n\t\t}\n\n\t\t// Initialize the full coordinates\n\t\tmanager.dispatch(setClientOffset(clientOffset, sourceClientOffset))\n\n\t\tconst source = registry.getSource(sourceId)\n\t\tconst item = source.beginDrag(monitor, sourceId)\n\t\t// If source.beginDrag returns null, this is an indicator to cancel the drag\n\t\tif (item == null) {\n\t\t\treturn undefined\n\t\t}\n\t\tverifyItemIsObject(item)\n\t\tregistry.pinSource(sourceId)\n\n\t\tconst itemType = registry.getSourceType(sourceId)\n\t\treturn {\n\t\t\ttype: BEGIN_DRAG,\n\t\t\tpayload: {\n\t\t\t\titemType,\n\t\t\t\titem,\n\t\t\t\tsourceId,\n\t\t\t\tclientOffset: clientOffset || null,\n\t\t\t\tsourceClientOffset: sourceClientOffset || null,\n\t\t\t\tisSourcePublic: !!publishSource,\n\t\t\t},\n\t\t}\n\t}\n}\n\nfunction verifyInvariants(\n\tsourceIds: Identifier[],\n\tmonitor: DragDropMonitor,\n\tregistry: HandlerRegistry,\n) {\n\tinvariant(!monitor.isDragging(), 'Cannot call beginDrag while dragging.')\n\tsourceIds.forEach(function (sourceId) {\n\t\tinvariant(\n\t\t\tregistry.getSource(sourceId),\n\t\t\t'Expected sourceIds to be registered.',\n\t\t)\n\t})\n}\n\nfunction verifyGetSourceClientOffsetIsFunction(getSourceClientOffset: any) {\n\tinvariant(\n\t\ttypeof getSourceClientOffset === 'function',\n\t\t'When clientOffset is provided, getSourceClientOffset must be a function.',\n\t)\n}\n\nfunction verifyItemIsObject(item: any) {\n\tinvariant(isObject(item), 'Item must be an object.')\n}\n\nfunction getDraggableSource(sourceIds: Identifier[], monitor: DragDropMonitor) {\n\tlet sourceId = null\n\tfor (let i = sourceIds.length - 1; i >= 0; i--) {\n\t\tif (monitor.canDragSource(sourceIds[i])) {\n\t\t\tsourceId = sourceIds[i]\n\t\t\tbreak\n\t\t}\n\t}\n\treturn sourceId\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type {\n\tAction,\n\tDragDropManager,\n\tDragDropMonitor,\n\tDropPayload,\n\tHandlerRegistry,\n\tIdentifier,\n} from '../../interfaces.js'\nimport { isObject } from '../../utils/js_utils.js'\nimport { DROP } from './types.js'\n\nexport function createDrop(manager: DragDropManager) {\n\treturn function drop(options = {}): void {\n\t\tconst monitor = manager.getMonitor()\n\t\tconst registry = manager.getRegistry()\n\t\tverifyInvariants(monitor)\n\t\tconst targetIds = getDroppableTargets(monitor)\n\n\t\t// Multiple actions are dispatched here, which is why this doesn't return an action\n\t\ttargetIds.forEach((targetId, index) => {\n\t\t\tconst dropResult = determineDropResult(targetId, index, registry, monitor)\n\t\t\tconst action: Action<DropPayload> = {\n\t\t\t\ttype: DROP,\n\t\t\t\tpayload: {\n\t\t\t\t\tdropResult: {\n\t\t\t\t\t\t...options,\n\t\t\t\t\t\t...dropResult,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}\n\t\t\tmanager.dispatch(action)\n\t\t})\n\t}\n}\n\nfunction verifyInvariants(monitor: DragDropMonitor) {\n\tinvariant(monitor.isDragging(), 'Cannot call drop while not dragging.')\n\tinvariant(\n\t\t!monitor.didDrop(),\n\t\t'Cannot call drop twice during one drag operation.',\n\t)\n}\n\nfunction determineDropResult(\n\ttargetId: Identifier,\n\tindex: number,\n\tregistry: HandlerRegistry,\n\tmonitor: DragDropMonitor,\n) {\n\tconst target = registry.getTarget(targetId)\n\tlet dropResult = target ? target.drop(monitor, targetId) : undefined\n\tverifyDropResultType(dropResult)\n\tif (typeof dropResult === 'undefined') {\n\t\tdropResult = index === 0 ? {} : monitor.getDropResult()\n\t}\n\treturn dropResult\n}\n\nfunction verifyDropResultType(dropResult: any) {\n\tinvariant(\n\t\ttypeof dropResult === 'undefined' || isObject(dropResult),\n\t\t'Drop result must either be an object or undefined.',\n\t)\n}\n\nfunction getDroppableTargets(monitor: DragDropMonitor) {\n\tconst targetIds = monitor\n\t\t.getTargetIds()\n\t\t.filter(monitor.canDropOnTarget, monitor)\n\ttargetIds.reverse()\n\treturn targetIds\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type {\n\tDragDropManager,\n\tDragDropMonitor,\n\tSentinelAction,\n} from '../../interfaces.js'\nimport { END_DRAG } from './types.js'\n\nexport function createEndDrag(manager: DragDropManager) {\n\treturn function endDrag(): SentinelAction {\n\t\tconst monitor = manager.getMonitor()\n\t\tconst registry = manager.getRegistry()\n\t\tverifyIsDragging(monitor)\n\n\t\tconst sourceId = monitor.getSourceId()\n\t\tif (sourceId != null) {\n\t\t\tconst source = registry.getSource(sourceId, true)\n\t\t\tsource.endDrag(monitor, sourceId)\n\t\t\tregistry.unpinSource()\n\t\t}\n\t\treturn { type: END_DRAG }\n\t}\n}\n\nfunction verifyIsDragging(monitor: DragDropMonitor) {\n\tinvariant(monitor.isDragging(), 'Cannot call endDrag while not dragging.')\n}\n","import type { Identifier } from '../interfaces.js'\n\nexport function matchesType(\n\ttargetType: Identifier | Identifier[] | null,\n\tdraggedItemType: Identifier | null,\n): boolean {\n\tif (draggedItemType === null) {\n\t\treturn targetType === null\n\t}\n\treturn Array.isArray(targetType)\n\t\t? (targetType as Identifier[]).some((t) => t === draggedItemType)\n\t\t: targetType === draggedItemType\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type {\n\tAction,\n\tDragDropManager,\n\tDragDropMonitor,\n\tHandlerRegistry,\n\tHoverOptions,\n\tHoverPayload,\n\tIdentifier,\n} from '../../interfaces.js'\nimport { matchesType } from '../../utils/matchesType.js'\nimport { HOVER } from './types.js'\n\nexport function createHover(manager: DragDropManager) {\n\treturn function hover(\n\t\ttargetIdsArg: string[],\n\t\t{ clientOffset }: HoverOptions = {},\n\t): Action<HoverPayload> {\n\t\tverifyTargetIdsIsArray(targetIdsArg)\n\t\tconst targetIds = targetIdsArg.slice(0)\n\t\tconst monitor = manager.getMonitor()\n\t\tconst registry = manager.getRegistry()\n\t\tconst draggedItemType = monitor.getItemType()\n\t\tremoveNonMatchingTargetIds(targetIds, registry, draggedItemType)\n\t\tcheckInvariants(targetIds, monitor, registry)\n\t\thoverAllTargets(targetIds, monitor, registry)\n\n\t\treturn {\n\t\t\ttype: HOVER,\n\t\t\tpayload: {\n\t\t\t\ttargetIds,\n\t\t\t\tclientOffset: clientOffset || null,\n\t\t\t},\n\t\t}\n\t}\n}\n\nfunction verifyTargetIdsIsArray(targetIdsArg: string[]) {\n\tinvariant(Array.isArray(targetIdsArg), 'Expected targetIds to be an array.')\n}\n\nfunction checkInvariants(\n\ttargetIds: string[],\n\tmonitor: DragDropMonitor,\n\tregistry: HandlerRegistry,\n) {\n\tinvariant(monitor.isDragging(), 'Cannot call hover while not dragging.')\n\tinvariant(!monitor.didDrop(), 'Cannot call hover after drop.')\n\tfor (let i = 0; i < targetIds.length; i++) {\n\t\tconst targetId = targetIds[i] as string\n\t\tinvariant(\n\t\t\ttargetIds.lastIndexOf(targetId) === i,\n\t\t\t'Expected targetIds to be unique in the passed array.',\n\t\t)\n\n\t\tconst target = registry.getTarget(targetId)\n\t\tinvariant(target, 'Expected targetIds to be registered.')\n\t}\n}\n\nfunction removeNonMatchingTargetIds(\n\ttargetIds: string[],\n\tregistry: HandlerRegistry,\n\tdraggedItemType: Identifier | null,\n) {\n\t// Remove those targetIds that don't match the targetType.  This\n\t// fixes shallow isOver which would only be non-shallow because of\n\t// non-matching targets.\n\tfor (let i = targetIds.length - 1; i >= 0; i--) {\n\t\tconst targetId = targetIds[i] as string\n\t\tconst targetType = registry.getTargetType(targetId)\n\t\tif (!matchesType(targetType, draggedItemType)) {\n\t\t\ttargetIds.splice(i, 1)\n\t\t}\n\t}\n}\n\nfunction hoverAllTargets(\n\ttargetIds: string[],\n\tmonitor: DragDropMonitor,\n\tregistry: HandlerRegistry,\n) {\n\t// Finally call hover on all matching targets.\n\ttargetIds.forEach(function (targetId) {\n\t\tconst target = registry.getTarget(targetId)\n\t\ttarget.hover(monitor, targetId)\n\t})\n}\n","import type { DragDropManager, SentinelAction } from '../../interfaces.js'\nimport { PUBLISH_DRAG_SOURCE } from './types.js'\n\nexport function createPublishDragSource(manager: DragDropManager) {\n\treturn function publishDragSource(): SentinelAction | undefined {\n\t\tconst monitor = manager.getMonitor()\n\t\tif (monitor.isDragging()) {\n\t\t\treturn { type: PUBLISH_DRAG_SOURCE }\n\t\t}\n\t\treturn\n\t}\n}\n","import type { DragDropActions, DragDropManager } from '../../interfaces.js'\nimport { createBeginDrag } from './beginDrag.js'\nimport { createDrop } from './drop.js'\nimport { createEndDrag } from './endDrag.js'\nimport { createHover } from './hover.js'\nimport { createPublishDragSource } from './publishDragSource.js'\n\nexport * from './types.js'\n\nexport function createDragDropActions(\n\tmanager: DragDropManager,\n): DragDropActions {\n\treturn {\n\t\tbeginDrag: createBeginDrag(manager),\n\t\tpublishDragSource: createPublishDragSource(manager),\n\t\thover: createHover(manager),\n\t\tdrop: createDrop(manager),\n\t\tendDrag: createEndDrag(manager),\n\t}\n}\n","import type { Action, Store } from 'redux'\n\nimport { createDragDropActions } from '../actions/dragDrop/index.js'\nimport type {\n\tActionCreator,\n\tBackend,\n\tDragDropActions,\n\tDragDropManager,\n\tDragDropMonitor,\n\tHandlerRegistry,\n} from '../interfaces.js'\nimport type { State } from '../reducers/index.js'\nimport type { DragDropMonitorImpl } from './DragDropMonitorImpl.js'\n\nexport class DragDropManagerImpl implements DragDropManager {\n\tprivate store: Store<State>\n\tprivate monitor: DragDropMonitor\n\tprivate backend: Backend | undefined\n\tprivate isSetUp = false\n\n\tpublic constructor(store: Store<State>, monitor: DragDropMonitor) {\n\t\tthis.store = store\n\t\tthis.monitor = monitor\n\t\tstore.subscribe(this.handleRefCountChange)\n\t}\n\n\tpublic receiveBackend(backend: Backend): void {\n\t\tthis.backend = backend\n\t}\n\n\tpublic getMonitor(): DragDropMonitor {\n\t\treturn this.monitor\n\t}\n\n\tpublic getBackend(): Backend {\n\t\treturn this.backend as Backend\n\t}\n\n\tpublic getRegistry(): HandlerRegistry {\n\t\treturn (this.monitor as DragDropMonitorImpl).registry\n\t}\n\n\tpublic getActions(): DragDropActions {\n\t\t/* eslint-disable-next-line @typescript-eslint/no-this-alias */\n\t\tconst manager = this\n\t\tconst { dispatch } = this.store\n\n\t\tfunction bindActionCreator(actionCreator: ActionCreator<any>) {\n\t\t\treturn (...args: any[]) => {\n\t\t\t\tconst action = actionCreator.apply(manager, args as any)\n\t\t\t\tif (typeof action !== 'undefined') {\n\t\t\t\t\tdispatch(action)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst actions = createDragDropActions(this)\n\n\t\treturn Object.keys(actions).reduce(\n\t\t\t(boundActions: DragDropActions, key: string) => {\n\t\t\t\tconst action: ActionCreator<any> = (actions as any)[\n\t\t\t\t\tkey\n\t\t\t\t] as ActionCreator<any>\n\t\t\t\t;(boundActions as any)[key] = bindActionCreator(action)\n\t\t\t\treturn boundActions\n\t\t\t},\n\t\t\t{} as DragDropActions,\n\t\t)\n\t}\n\n\tpublic dispatch(action: Action<any>): void {\n\t\tthis.store.dispatch(action)\n\t}\n\n\tprivate handleRefCountChange = (): void => {\n\t\tconst shouldSetUp = this.store.getState().refCount > 0\n\t\tif (this.backend) {\n\t\t\tif (shouldSetUp && !this.isSetUp) {\n\t\t\t\tthis.backend.setup()\n\t\t\t\tthis.isSetUp = true\n\t\t\t} else if (!shouldSetUp && this.isSetUp) {\n\t\t\t\tthis.backend.teardown()\n\t\t\t\tthis.isSetUp = false\n\t\t\t}\n\t\t}\n\t}\n}\n","import type { XYCoord } from '../interfaces.js'\nimport type { State } from '../reducers/dragOffset.js'\n\n/**\n * Coordinate addition\n * @param a The first coordinate\n * @param b The second coordinate\n */\nexport function add(a: XYCoord, b: XYCoord): XYCoord {\n\treturn {\n\t\tx: a.x + b.x,\n\t\ty: a.y + b.y,\n\t}\n}\n\n/**\n * Coordinate subtraction\n * @param a The first coordinate\n * @param b The second coordinate\n */\nexport function subtract(a: XYCoord, b: XYCoord): XYCoord {\n\treturn {\n\t\tx: a.x - b.x,\n\t\ty: a.y - b.y,\n\t}\n}\n\n/**\n * Returns the cartesian distance of the drag source component's position, based on its position\n * at the time when the current drag operation has started, and the movement difference.\n *\n * Returns null if no item is being dragged.\n *\n * @param state The offset state to compute from\n */\nexport function getSourceClientOffset(state: State): XYCoord | null {\n\tconst { clientOffset, initialClientOffset, initialSourceClientOffset } = state\n\tif (!clientOffset || !initialClientOffset || !initialSourceClientOffset) {\n\t\treturn null\n\t}\n\treturn subtract(\n\t\tadd(clientOffset, initialSourceClientOffset),\n\t\tinitialClientOffset,\n\t)\n}\n\n/**\n * Determines the x,y offset between the client offset and the initial client offset\n *\n * @param state The offset state to compute from\n */\nexport function getDifferenceFromInitialOffset(state: State): XYCoord | null {\n\tconst { clientOffset, initialClientOffset } = state\n\tif (!clientOffset || !initialClientOffset) {\n\t\treturn null\n\t}\n\treturn subtract(clientOffset, initialClientOffset)\n}\n","import { intersection } from './js_utils.js'\n\nexport const NONE: string[] = []\nexport const ALL: string[] = []\n// Add these flags for debug\n;(NONE as any).__IS_NONE__ = true\n;(ALL as any).__IS_ALL__ = true\n\n/**\n * Determines if the given handler IDs are dirty or not.\n *\n * @param dirtyIds The set of dirty handler ids\n * @param handlerIds The set of handler ids to check\n */\nexport function areDirty(\n\tdirtyIds: string[],\n\thandlerIds: string[] | undefined,\n): boolean {\n\tif (dirtyIds === NONE) {\n\t\treturn false\n\t}\n\n\tif (dirtyIds === ALL || typeof handlerIds === 'undefined') {\n\t\treturn true\n\t}\n\n\tconst commonIds = intersection(handlerIds, dirtyIds)\n\treturn commonIds.length > 0\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type { Store } from 'redux'\n\nimport type {\n\tDragDropMonitor,\n\tHandlerRegistry,\n\tIdentifier,\n\tListener,\n\tUnsubscribe,\n\tXYCoord,\n} from '../interfaces.js'\nimport type { State } from '../reducers/index.js'\nimport {\n\tgetDifferenceFromInitialOffset,\n\tgetSourceClientOffset,\n} from '../utils/coords.js'\nimport { areDirty } from '../utils/dirtiness.js'\nimport { matchesType } from '../utils/matchesType.js'\n\nexport class DragDropMonitorImpl implements DragDropMonitor {\n\tprivate store: Store<State>\n\tpublic readonly registry: HandlerRegistry\n\n\tpublic constructor(store: Store<State>, registry: HandlerRegistry) {\n\t\tthis.store = store\n\t\tthis.registry = registry\n\t}\n\n\tpublic subscribeToStateChange(\n\t\tlistener: Listener,\n\t\toptions: { handlerIds?: string[] } = {},\n\t): Unsubscribe {\n\t\tconst { handlerIds } = options\n\t\tinvariant(typeof listener === 'function', 'listener must be a function.')\n\t\tinvariant(\n\t\t\ttypeof handlerIds === 'undefined' || Array.isArray(handlerIds),\n\t\t\t'handlerIds, when specified, must be an array of strings.',\n\t\t)\n\n\t\tlet prevStateId = this.store.getState().stateId\n\t\tconst handleChange = () => {\n\t\t\tconst state = this.store.getState()\n\t\t\tconst currentStateId = state.stateId\n\t\t\ttry {\n\t\t\t\tconst canSkipListener =\n\t\t\t\t\tcurrentStateId === prevStateId ||\n\t\t\t\t\t(currentStateId === prevStateId + 1 &&\n\t\t\t\t\t\t!areDirty(state.dirtyHandlerIds, handlerIds))\n\n\t\t\t\tif (!canSkipListener) {\n\t\t\t\t\tlistener()\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tprevStateId = currentStateId\n\t\t\t}\n\t\t}\n\n\t\treturn this.store.subscribe(handleChange)\n\t}\n\n\tpublic subscribeToOffsetChange(listener: Listener): Unsubscribe {\n\t\tinvariant(typeof listener === 'function', 'listener must be a function.')\n\n\t\tlet previousState = this.store.getState().dragOffset\n\t\tconst handleChange = () => {\n\t\t\tconst nextState = this.store.getState().dragOffset\n\t\t\tif (nextState === previousState) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tpreviousState = nextState\n\t\t\tlistener()\n\t\t}\n\n\t\treturn this.store.subscribe(handleChange)\n\t}\n\n\tpublic canDragSource(sourceId: string | undefined): boolean {\n\t\tif (!sourceId) {\n\t\t\treturn false\n\t\t}\n\t\tconst source = this.registry.getSource(sourceId)\n\t\tinvariant(source, `Expected to find a valid source. sourceId=${sourceId}`)\n\n\t\tif (this.isDragging()) {\n\t\t\treturn false\n\t\t}\n\n\t\treturn source.canDrag(this, sourceId)\n\t}\n\n\tpublic canDropOnTarget(targetId: string | undefined): boolean {\n\t\t// undefined on initial render\n\t\tif (!targetId) {\n\t\t\treturn false\n\t\t}\n\t\tconst target = this.registry.getTarget(targetId)\n\t\tinvariant(target, `Expected to find a valid target. targetId=${targetId}`)\n\n\t\tif (!this.isDragging() || this.didDrop()) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst targetType = this.registry.getTargetType(targetId)\n\t\tconst draggedItemType = this.getItemType()\n\t\treturn (\n\t\t\tmatchesType(targetType, draggedItemType) && target.canDrop(this, targetId)\n\t\t)\n\t}\n\n\tpublic isDragging(): boolean {\n\t\treturn Boolean(this.getItemType())\n\t}\n\n\tpublic isDraggingSource(sourceId: string | undefined): boolean {\n\t\t// undefined on initial render\n\t\tif (!sourceId) {\n\t\t\treturn false\n\t\t}\n\t\tconst source = this.registry.getSource(sourceId, true)\n\t\tinvariant(source, `Expected to find a valid source. sourceId=${sourceId}`)\n\n\t\tif (!this.isDragging() || !this.isSourcePublic()) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst sourceType = this.registry.getSourceType(sourceId)\n\t\tconst draggedItemType = this.getItemType()\n\t\tif (sourceType !== draggedItemType) {\n\t\t\treturn false\n\t\t}\n\n\t\treturn source.isDragging(this, sourceId)\n\t}\n\n\tpublic isOverTarget(\n\t\ttargetId: string | undefined,\n\t\toptions = { shallow: false },\n\t): boolean {\n\t\t// undefined on initial render\n\t\tif (!targetId) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst { shallow } = options\n\t\tif (!this.isDragging()) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst targetType = this.registry.getTargetType(targetId)\n\t\tconst draggedItemType = this.getItemType()\n\t\tif (draggedItemType && !matchesType(targetType, draggedItemType)) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst targetIds = this.getTargetIds()\n\t\tif (!targetIds.length) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst index = targetIds.indexOf(targetId)\n\t\tif (shallow) {\n\t\t\treturn index === targetIds.length - 1\n\t\t} else {\n\t\t\treturn index > -1\n\t\t}\n\t}\n\n\tpublic getItemType(): Identifier {\n\t\treturn this.store.getState().dragOperation.itemType as Identifier\n\t}\n\n\tpublic getItem(): any {\n\t\treturn this.store.getState().dragOperation.item\n\t}\n\n\tpublic getSourceId(): string | null {\n\t\treturn this.store.getState().dragOperation.sourceId\n\t}\n\n\tpublic getTargetIds(): string[] {\n\t\treturn this.store.getState().dragOperation.targetIds\n\t}\n\n\tpublic getDropResult(): any {\n\t\treturn this.store.getState().dragOperation.dropResult\n\t}\n\n\tpublic didDrop(): boolean {\n\t\treturn this.store.getState().dragOperation.didDrop\n\t}\n\n\tpublic isSourcePublic(): boolean {\n\t\treturn Boolean(this.store.getState().dragOperation.isSourcePublic)\n\t}\n\n\tpublic getInitialClientOffset(): XYCoord | null {\n\t\treturn this.store.getState().dragOffset.initialClientOffset\n\t}\n\n\tpublic getInitialSourceClientOffset(): XYCoord | null {\n\t\treturn this.store.getState().dragOffset.initialSourceClientOffset\n\t}\n\n\tpublic getClientOffset(): XYCoord | null {\n\t\treturn this.store.getState().dragOffset.clientOffset\n\t}\n\n\tpublic getSourceClientOffset(): XYCoord | null {\n\t\treturn getSourceClientOffset(this.store.getState().dragOffset)\n\t}\n\n\tpublic getDifferenceFromInitialOffset(): XYCoord | null {\n\t\treturn getDifferenceFromInitialOffset(this.store.getState().dragOffset)\n\t}\n}\n","// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n// have WebKitMutationObserver but not un-prefixed MutationObserver.\n// Must use `global` or `self` instead of `window` to work in both frames and web\n// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\n\n/* globals self */\nconst scope = typeof global !== 'undefined' ? global : self\nconst BrowserMutationObserver =\n\t(scope as any).MutationObserver || (scope as any).WebKitMutationObserver\n\nexport function makeRequestCallFromTimer(callback: () => void) {\n\treturn function requestCall() {\n\t\t// We dispatch a timeout with a specified delay of 0 for engines that\n\t\t// can reliably accommodate that request. This will usually be snapped\n\t\t// to a 4 milisecond delay, but once we're flushing, there's no delay\n\t\t// between events.\n\t\tconst timeoutHandle = setTimeout(handleTimer, 0)\n\t\t// However, since this timer gets frequently dropped in Firefox\n\t\t// workers, we enlist an interval handle that will try to fire\n\t\t// an event 20 times per second until it succeeds.\n\t\tconst intervalHandle = setInterval(handleTimer, 50)\n\n\t\tfunction handleTimer() {\n\t\t\t// Whichever timer succeeds will cancel both timers and\n\t\t\t// execute the callback.\n\t\t\tclearTimeout(timeoutHandle)\n\t\t\tclearInterval(intervalHandle)\n\t\t\tcallback()\n\t\t}\n\t}\n}\n\n// To request a high priority event, we induce a mutation observer by toggling\n// the text of a text node between \"1\" and \"-1\".\nexport function makeRequestCallFromMutationObserver(callback: () => void) {\n\tlet toggle = 1\n\tconst observer = new BrowserMutationObserver(callback)\n\tconst node = document.createTextNode('')\n\tobserver.observe(node, { characterData: true })\n\treturn function requestCall() {\n\t\ttoggle = -toggle\n\t\t;(node as any).data = toggle\n\t}\n}\n\nexport const makeRequestCall =\n\ttypeof BrowserMutationObserver === 'function'\n\t\t? // MutationObservers are desirable because they have high priority and work\n\t\t  // reliably everywhere they are implemented.\n\t\t  // They are implemented in all modern browsers.\n\t\t  //\n\t\t  // - Android 4-4.3\n\t\t  // - Chrome 26-34\n\t\t  // - Firefox 14-29\n\t\t  // - Internet Explorer 11\n\t\t  // - iPad Safari 6-7.1\n\t\t  // - iPhone Safari 7-7.1\n\t\t  // - Safari 6-7\n\t\t  makeRequestCallFromMutationObserver\n\t\t: // MessageChannels are desirable because they give direct access to the HTML\n\t\t  // task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n\t\t  // 11-12, and in web workers in many engines.\n\t\t  // Although message channels yield to any queued rendering and IO tasks, they\n\t\t  // would be better than imposing the 4ms delay of timers.\n\t\t  // However, they do not work reliably in Internet Explorer or Safari.\n\n\t\t  // Internet Explorer 10 is the only browser that has setImmediate but does\n\t\t  // not have MutationObservers.\n\t\t  // Although setImmediate yields to the browser's renderer, it would be\n\t\t  // preferrable to falling back to setTimeout since it does not have\n\t\t  // the minimum 4ms penalty.\n\t\t  // Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n\t\t  // Desktop to a lesser extent) that renders both setImmediate and\n\t\t  // MessageChannel useless for the purposes of ASAP.\n\t\t  // https://github.com/kriskowal/q/issues/396\n\n\t\t  // Timers are implemented universally.\n\t\t  // We fall back to timers in workers in most engines, and in foreground\n\t\t  // contexts in the following browsers.\n\t\t  // However, note that even this simple case requires nuances to operate in a\n\t\t  // broad spectrum of browsers.\n\t\t  //\n\t\t  // - Firefox 3-13\n\t\t  // - Internet Explorer 6-9\n\t\t  // - iPad Safari 4.3\n\t\t  // - Lynx 2.8.7\n\t\t  makeRequestCallFromTimer\n","/* eslint-disable no-restricted-globals, @typescript-eslint/ban-ts-comment, @typescript-eslint/no-unused-vars, @typescript-eslint/no-non-null-assertion */\nimport { makeRequestCall, makeRequestCallFromTimer } from './makeRequestCall.js'\nimport type { Task } from './types.js'\n\nexport class AsapQueue {\n\tprivate queue: Task[] = []\n\t// We queue errors to ensure they are thrown in right order (FIFO).\n\t// Array-as-queue is good enough here, since we are just dealing with exceptions.\n\tprivate pendingErrors: any[] = []\n\t// Once a flush has been requested, no further calls to `requestFlush` are\n\t// necessary until the next `flush` completes.\n\t// @ts-ignore\n\tprivate flushing = false\n\t// `requestFlush` is an implementation-specific method that attempts to kick\n\t// off a `flush` event as quickly as possible. `flush` will attempt to exhaust\n\t// the event queue before yielding to the browser's own event loop.\n\tprivate requestFlush: () => void\n\n\tprivate requestErrorThrow: () => void\n\t// The position of the next task to execute in the task queue. This is\n\t// preserved between calls to `flush` so that it can be resumed if\n\t// a task throws an exception.\n\tprivate index = 0\n\t// If a task schedules additional tasks recursively, the task queue can grow\n\t// unbounded. To prevent memory exhaustion, the task queue will periodically\n\t// truncate already-completed tasks.\n\tprivate capacity = 1024\n\n\tpublic constructor() {\n\t\t// `requestFlush` requests that the high priority event queue be flushed as\n\t\t// soon as possible.\n\t\t// This is useful to prevent an error thrown in a task from stalling the event\n\t\t// queue if the exception handled by Node.js’s\n\t\t// `process.on(\"uncaughtException\")` or by a domain.\n\n\t\t// `requestFlush` is implemented using a strategy based on data collected from\n\t\t// every available SauceLabs Selenium web driver worker at time of writing.\n\t\t// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n\t\tthis.requestFlush = makeRequestCall(this.flush)\n\t\tthis.requestErrorThrow = makeRequestCallFromTimer(() => {\n\t\t\t// Throw first error\n\t\t\tif (this.pendingErrors.length) {\n\t\t\t\tthrow this.pendingErrors.shift()\n\t\t\t}\n\t\t})\n\t}\n\n\t// Use the fastest means possible to execute a task in its own turn, with\n\t// priority over other events including IO, animation, reflow, and redraw\n\t// events in browsers.\n\t//\n\t// An exception thrown by a task will permanently interrupt the processing of\n\t// subsequent tasks. The higher level `asap` function ensures that if an\n\t// exception is thrown by a task, that the task queue will continue flushing as\n\t// soon as possible, but if you use `rawAsap` directly, you are responsible to\n\t// either ensure that no exceptions are thrown from your task, or to manually\n\t// call `rawAsap.requestFlush` if an exception is thrown.\n\tpublic enqueueTask(task: Task): void {\n\t\tconst { queue: q, requestFlush } = this\n\t\tif (!q.length) {\n\t\t\trequestFlush()\n\t\t\tthis.flushing = true\n\t\t}\n\t\t// Equivalent to push, but avoids a function call.\n\t\tq[q.length] = task\n\t}\n\n\t// The flush function processes all tasks that have been scheduled with\n\t// `rawAsap` unless and until one of those tasks throws an exception.\n\t// If a task throws an exception, `flush` ensures that its state will remain\n\t// consistent and will resume where it left off when called again.\n\t// However, `flush` does not make any arrangements to be called again if an\n\t// exception is thrown.\n\tprivate flush = () => {\n\t\tconst { queue: q } = this\n\t\twhile (this.index < q.length) {\n\t\t\tconst currentIndex = this.index\n\t\t\t// Advance the index before calling the task. This ensures that we will\n\t\t\t// begin flushing on the next task the task throws an error.\n\t\t\tthis.index++\n\t\t\tq[currentIndex]!.call()\n\t\t\t// Prevent leaking memory for long chains of recursive calls to `asap`.\n\t\t\t// If we call `asap` within tasks scheduled by `asap`, the queue will\n\t\t\t// grow, but to avoid an O(n) walk for every task we execute, we don't\n\t\t\t// shift tasks off the queue after they have been executed.\n\t\t\t// Instead, we periodically shift 1024 tasks off the queue.\n\t\t\tif (this.index > this.capacity) {\n\t\t\t\t// Manually shift all values starting at the index back to the\n\t\t\t\t// beginning of the queue.\n\t\t\t\tfor (\n\t\t\t\t\tlet scan = 0, newLength = q.length - this.index;\n\t\t\t\t\tscan < newLength;\n\t\t\t\t\tscan++\n\t\t\t\t) {\n\t\t\t\t\tq[scan] = q[scan + this.index]!\n\t\t\t\t}\n\t\t\t\tq.length -= this.index\n\t\t\t\tthis.index = 0\n\t\t\t}\n\t\t}\n\t\tq.length = 0\n\t\tthis.index = 0\n\t\tthis.flushing = false\n\t}\n\n\t// In a web browser, exceptions are not fatal. However, to avoid\n\t// slowing down the queue of pending tasks, we rethrow the error in a\n\t// lower priority turn.\n\tpublic registerPendingError = (err: any) => {\n\t\tthis.pendingErrors.push(err)\n\t\tthis.requestErrorThrow()\n\t}\n}\n\n// The message channel technique was discovered by Malte Ubl and was the\n// original foundation for this library.\n// http://www.nonblocking.io/2011/06/windownexttick.html\n\n// Safari 6.0.5 (at least) intermittently fails to create message ports on a\n// page's first load. Thankfully, this version of Safari supports\n// MutationObservers, so we don't need to fall back in that case.\n\n// function makeRequestCallFromMessageChannel(callback) {\n//     var channel = new MessageChannel();\n//     channel.port1.onmessage = callback;\n//     return function requestCall() {\n//         channel.port2.postMessage(0);\n//     };\n// }\n\n// For reasons explained above, we are also unable to use `setImmediate`\n// under any circumstances.\n// Even if we were, there is another bug in Internet Explorer 10.\n// It is not sufficient to assign `setImmediate` to `requestFlush` because\n// `setImmediate` must be called *by name* and therefore must be wrapped in a\n// closure.\n// Never forget.\n\n// function makeRequestCallFromSetImmediate(callback) {\n//     return function requestCall() {\n//         setImmediate(callback);\n//     };\n// }\n\n// Safari 6.0 has a problem where timers will get lost while the user is\n// scrolling. This problem does not impact ASAP because Safari 6.0 supports\n// mutation observers, so that implementation is used instead.\n// However, if we ever elect to use timers in Safari, the prevalent work-around\n// is to add a scroll event listener that calls for a flush.\n\n// `setTimeout` does not call the passed callback if the delay is less than\n// approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n// even then.\n\n// This is for `asap.js` only.\n// Its name will be periodically randomized to break any code that depends on\n// // its existence.\n// rawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer\n\n// ASAP was originally a nextTick shim included in Q. This was factored out\n// into this ASAP package. It was later adapted to RSVP which made further\n// amendments. These decisions, particularly to marginalize MessageChannel and\n// to capture the MutationObserver implementation in a closure, were integrated\n// back into ASAP proper.\n// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js\n","// We wrap tasks with recyclable task objects.  A task object implements\n\nimport type { Task, TaskFn } from 'types'\n\n// `call`, just like a function.\nexport class RawTask implements Task {\n\tpublic task: TaskFn | null = null\n\n\tpublic constructor(\n\t\tprivate onError: (err: any) => void,\n\t\tprivate release: (t: RawTask) => void,\n\t) {}\n\n\tpublic call() {\n\t\ttry {\n\t\t\tthis.task && this.task()\n\t\t} catch (error) {\n\t\t\tthis.onError(error)\n\t\t} finally {\n\t\t\tthis.task = null\n\t\t\tthis.release(this)\n\t\t}\n\t}\n}\n","import { RawTask } from './RawTask.js'\nimport type { Task } from './types.js'\n\nexport class TaskFactory {\n\tprivate freeTasks: RawTask[] = []\n\n\tpublic constructor(private onError: (err: any) => void) {}\n\n\tpublic create(task: () => void): Task {\n\t\tconst tasks = this.freeTasks\n\t\tconst t = tasks.length\n\t\t\t? (tasks.pop() as RawTask)\n\t\t\t: new RawTask(this.onError, (t) => (tasks[tasks.length] = t))\n\t\tt.task = task\n\t\treturn t\n\t}\n}\n","import { AsapQueue } from './AsapQueue.js'\nimport { TaskFactory } from './TaskFactory.js'\nimport type { TaskFn } from './types.js'\n\nconst asapQueue = new AsapQueue()\nconst taskFactory = new TaskFactory(asapQueue.registerPendingError)\n\n/**\n * Calls a task as soon as possible after returning, in its own event, with priority\n * over other events like animation, reflow, and repaint. An error thrown from an\n * event will not interrupt, nor even substantially slow down the processing of\n * other events, but will be rather postponed to a lower priority event.\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\nexport function asap(task: TaskFn) {\n\tasapQueue.enqueueTask(taskFactory.create(task))\n}\n","import type { Action, SourceIdPayload, TargetIdPayload } from '../interfaces.js'\n\nexport const ADD_SOURCE = 'dnd-core/ADD_SOURCE'\nexport const ADD_TARGET = 'dnd-core/ADD_TARGET'\nexport const REMOVE_SOURCE = 'dnd-core/REMOVE_SOURCE'\nexport const REMOVE_TARGET = 'dnd-core/REMOVE_TARGET'\n\nexport function addSource(sourceId: string): Action<SourceIdPayload> {\n\treturn {\n\t\ttype: ADD_SOURCE,\n\t\tpayload: {\n\t\t\tsourceId,\n\t\t},\n\t}\n}\n\nexport function addTarget(targetId: string): Action<TargetIdPayload> {\n\treturn {\n\t\ttype: ADD_TARGET,\n\t\tpayload: {\n\t\t\ttargetId,\n\t\t},\n\t}\n}\n\nexport function removeSource(sourceId: string): Action<SourceIdPayload> {\n\treturn {\n\t\ttype: REMOVE_SOURCE,\n\t\tpayload: {\n\t\t\tsourceId,\n\t\t},\n\t}\n}\n\nexport function removeTarget(targetId: string): Action<TargetIdPayload> {\n\treturn {\n\t\ttype: REMOVE_TARGET,\n\t\tpayload: {\n\t\t\ttargetId,\n\t\t},\n\t}\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type { DragSource, DropTarget, Identifier } from './interfaces.js'\n\nexport function validateSourceContract(source: DragSource): void {\n\tinvariant(\n\t\ttypeof source.canDrag === 'function',\n\t\t'Expected canDrag to be a function.',\n\t)\n\tinvariant(\n\t\ttypeof source.beginDrag === 'function',\n\t\t'Expected beginDrag to be a function.',\n\t)\n\tinvariant(\n\t\ttypeof source.endDrag === 'function',\n\t\t'Expected endDrag to be a function.',\n\t)\n}\n\nexport function validateTargetContract(target: DropTarget): void {\n\tinvariant(\n\t\ttypeof target.canDrop === 'function',\n\t\t'Expected canDrop to be a function.',\n\t)\n\tinvariant(\n\t\ttypeof target.hover === 'function',\n\t\t'Expected hover to be a function.',\n\t)\n\tinvariant(\n\t\ttypeof target.drop === 'function',\n\t\t'Expected beginDrag to be a function.',\n\t)\n}\n\nexport function validateType(\n\ttype: Identifier | Identifier[],\n\tallowArray?: boolean,\n): void {\n\tif (allowArray && Array.isArray(type)) {\n\t\ttype.forEach((t) => validateType(t, false))\n\t\treturn\n\t}\n\n\tinvariant(\n\t\ttypeof type === 'string' || typeof type === 'symbol',\n\t\tallowArray\n\t\t\t? 'Type can only be a string, a symbol, or an array of either.'\n\t\t\t: 'Type can only be a string or a symbol.',\n\t)\n}\n","export type Identifier = string | symbol\nexport type SourceType = Identifier\nexport type TargetType = Identifier | Identifier[]\nexport type Unsubscribe = () => void\nexport type Listener = () => void\n\nexport interface XYCoord {\n\tx: number\n\ty: number\n}\n\nexport enum HandlerRole {\n\tSOURCE = 'SOURCE',\n\tTARGET = 'TARGET',\n}\n\nexport interface Backend {\n\tsetup(): void\n\tteardown(): void\n\tconnectDragSource(sourceId: any, node?: any, options?: any): Unsubscribe\n\tconnectDragPreview(sourceId: any, node?: any, options?: any): Unsubscribe\n\tconnectDropTarget(targetId: any, node?: any, options?: any): Unsubscribe\n\tprofile(): Record<string, number>\n}\n\nexport interface DragDropMonitor {\n\tsubscribeToStateChange(\n\t\tlistener: Listener,\n\t\toptions?: {\n\t\t\thandlerIds?: Identifier[]\n\t\t},\n\t): Unsubscribe\n\tsubscribeToOffsetChange(listener: Listener): Unsubscribe\n\tcanDragSource(sourceId: Identifier | undefined): boolean\n\tcanDropOnTarget(targetId: Identifier | undefined): boolean\n\n\t/**\n\t * Returns true if a drag operation is in progress, and either the owner initiated the drag, or its isDragging()\n\t * is defined and returns true.\n\t */\n\tisDragging(): boolean\n\tisDraggingSource(sourceId: Identifier | undefined): boolean\n\tisOverTarget(\n\t\ttargetId: Identifier | undefined,\n\t\toptions?: {\n\t\t\tshallow?: boolean\n\t\t},\n\t): boolean\n\n\t/**\n\t * Returns a string or a symbol identifying the type of the current dragged item. Returns null if no item is being dragged.\n\t */\n\tgetItemType(): Identifier | null\n\n\t/**\n\t * Returns a plain object representing the currently dragged item. Every drag source must specify it by returning an object\n\t * from its beginDrag() method. Returns null if no item is being dragged.\n\t */\n\tgetItem(): any\n\tgetSourceId(): Identifier | null\n\tgetTargetIds(): Identifier[]\n\t/**\n\t * Returns a plain object representing the last recorded drop result. The drop targets may optionally specify it by returning an\n\t * object from their drop() methods. When a chain of drop() is dispatched for the nested targets, bottom up, any parent that\n\t * explicitly returns its own result from drop() overrides the child drop result previously set by the child. Returns null if\n\t * called outside endDrag().\n\t */\n\tgetDropResult(): any\n\t/**\n\t * Returns true if some drop target has handled the drop event, false otherwise. Even if a target did not return a drop result,\n\t * didDrop() returns true. Use it inside endDrag() to test whether any drop target has handled the drop. Returns false if called\n\t * outside endDrag().\n\t */\n\tdidDrop(): boolean\n\tisSourcePublic(): boolean | null\n\t/**\n\t * Returns the { x, y } client offset of the pointer at the time when the current drag operation has started.\n\t * Returns null if no item is being dragged.\n\t */\n\tgetInitialClientOffset(): XYCoord | null\n\t/**\n\t * Returns the { x, y } client offset of the drag source component's root DOM node at the time when the current drag\n\t * operation has started. Returns null if no item is being dragged.\n\t */\n\tgetInitialSourceClientOffset(): XYCoord | null\n\n\t/**\n\t * Returns the last recorded { x, y } client offset of the pointer while a drag operation is in progress.\n\t * Returns null if no item is being dragged.\n\t */\n\tgetClientOffset(): XYCoord | null\n\n\t/**\n\t * Returns the projected { x, y } client offset of the drag source component's root DOM node, based on its position at the time\n\t * when the current drag operation has started, and the movement difference. Returns null if no item is being dragged.\n\t */\n\tgetSourceClientOffset(): XYCoord | null\n\n\t/**\n\t * Returns the { x, y } difference between the last recorded client offset of the pointer and the client offset when the current\n\t * drag operation has started. Returns null if no item is being dragged.\n\t */\n\tgetDifferenceFromInitialOffset(): XYCoord | null\n}\n\nexport interface HandlerRegistry {\n\taddSource(type: SourceType, source: DragSource): Identifier\n\taddTarget(type: TargetType, target: DropTarget): Identifier\n\tcontainsHandler(handler: DragSource | DropTarget): boolean\n\tgetSource(sourceId: Identifier, includePinned?: boolean): DragSource\n\tgetSourceType(sourceId: Identifier): SourceType\n\tgetTargetType(targetId: Identifier): TargetType\n\tgetTarget(targetId: Identifier): DropTarget\n\tisSourceId(handlerId: Identifier): boolean\n\tisTargetId(handlerId: Identifier): boolean\n\tremoveSource(sourceId: Identifier): void\n\tremoveTarget(targetId: Identifier): void\n\tpinSource(sourceId: Identifier): void\n\tunpinSource(): void\n}\n\nexport interface Action<Payload> {\n\ttype: Identifier\n\tpayload: Payload\n}\nexport interface SentinelAction {\n\ttype: Identifier\n}\n\nexport type ActionCreator<Payload> = (args: any[]) => Action<Payload>\n\nexport interface BeginDragOptions {\n\tpublishSource?: boolean\n\tclientOffset?: XYCoord\n\tgetSourceClientOffset?: (sourceId: Identifier | undefined) => XYCoord\n}\n\nexport interface InitCoordsPayload {\n\tclientOffset: XYCoord | null\n\tsourceClientOffset: XYCoord | null\n}\n\nexport interface BeginDragPayload {\n\titemType: Identifier\n\titem: any\n\tsourceId: Identifier\n\tclientOffset: XYCoord | null\n\tsourceClientOffset: XYCoord | null\n\tisSourcePublic: boolean\n}\n\nexport interface HoverPayload {\n\ttargetIds: Identifier[]\n\tclientOffset: XYCoord | null\n}\n\nexport interface HoverOptions {\n\tclientOffset?: XYCoord\n}\n\nexport interface DropPayload {\n\tdropResult: any\n}\n\nexport interface TargetIdPayload {\n\ttargetId: Identifier\n}\n\nexport interface SourceIdPayload {\n\tsourceId: Identifier\n}\n\nexport interface DragDropActions {\n\tbeginDrag(\n\t\tsourceIds?: Identifier[],\n\t\toptions?: any,\n\t): Action<BeginDragPayload> | undefined\n\tpublishDragSource(): SentinelAction | undefined\n\thover(targetIds: Identifier[], options?: any): Action<HoverPayload>\n\tdrop(options?: any): void\n\tendDrag(): SentinelAction\n}\n\nexport interface DragDropManager {\n\tgetMonitor(): DragDropMonitor\n\tgetBackend(): Backend\n\tgetRegistry(): HandlerRegistry\n\tgetActions(): DragDropActions\n\tdispatch(action: any): void\n}\n\nexport type BackendFactory = (\n\tmanager: DragDropManager,\n\tglobalContext?: any,\n\tconfiguration?: any,\n) => Backend\n\nexport interface DragSource {\n\tbeginDrag(monitor: DragDropMonitor, targetId: Identifier): void\n\tendDrag(monitor: DragDropMonitor, targetId: Identifier): void\n\tcanDrag(monitor: DragDropMonitor, targetId: Identifier): boolean\n\tisDragging(monitor: DragDropMonitor, targetId: Identifier): boolean\n}\n\nexport interface DropTarget {\n\tcanDrop(monitor: DragDropMonitor, targetId: Identifier): boolean\n\thover(monitor: DragDropMonitor, targetId: Identifier): void\n\tdrop(monitor: DragDropMonitor, targetId: Identifier): any\n}\n","let nextUniqueId = 0\n\nexport function getNextUniqueId(): number {\n\treturn nextUniqueId++\n}\n","import { asap } from '@react-dnd/asap'\nimport { invariant } from '@react-dnd/invariant'\nimport type { Store } from 'redux'\n\nimport {\n\taddSource,\n\taddTarget,\n\tremoveSource,\n\tremoveTarget,\n} from '../actions/registry.js'\nimport {\n\tvalidateSourceContract,\n\tvalidateTargetContract,\n\tvalidateType,\n} from '../contracts.js'\nimport type {\n\tDragSource,\n\tDropTarget,\n\tHandlerRegistry,\n\tIdentifier,\n\tSourceType,\n\tTargetType,\n} from '../interfaces.js'\nimport { HandlerRole } from '../interfaces.js'\nimport type { State } from '../reducers/index.js'\nimport { getNextUniqueId } from '../utils/getNextUniqueId.js'\n\nfunction getNextHandlerId(role: HandlerRole): string {\n\tconst id = getNextUniqueId().toString()\n\tswitch (role) {\n\t\tcase HandlerRole.SOURCE:\n\t\t\treturn `S${id}`\n\t\tcase HandlerRole.TARGET:\n\t\t\treturn `T${id}`\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown Handler Role: ${role}`)\n\t}\n}\n\nfunction parseRoleFromHandlerId(handlerId: string) {\n\tswitch (handlerId[0]) {\n\t\tcase 'S':\n\t\t\treturn HandlerRole.SOURCE\n\t\tcase 'T':\n\t\t\treturn HandlerRole.TARGET\n\t\tdefault:\n\t\t\tthrow new Error(`Cannot parse handler ID: ${handlerId}`)\n\t}\n}\n\nfunction mapContainsValue<T>(map: Map<string, T>, searchValue: T) {\n\tconst entries = map.entries()\n\tlet isDone = false\n\tdo {\n\t\tconst {\n\t\t\tdone,\n\t\t\tvalue: [, value],\n\t\t} = entries.next()\n\t\tif (value === searchValue) {\n\t\t\treturn true\n\t\t}\n\t\tisDone = !!done\n\t} while (!isDone)\n\treturn false\n}\n\nexport class HandlerRegistryImpl implements HandlerRegistry {\n\tprivate types: Map<string, SourceType | TargetType> = new Map()\n\tprivate dragSources: Map<string, DragSource> = new Map()\n\tprivate dropTargets: Map<string, DropTarget> = new Map()\n\tprivate pinnedSourceId: string | null = null\n\tprivate pinnedSource: any = null\n\tprivate store: Store<State>\n\n\tpublic constructor(store: Store<State>) {\n\t\tthis.store = store\n\t}\n\n\tpublic addSource(type: SourceType, source: DragSource): string {\n\t\tvalidateType(type)\n\t\tvalidateSourceContract(source)\n\n\t\tconst sourceId = this.addHandler(HandlerRole.SOURCE, type, source)\n\t\tthis.store.dispatch(addSource(sourceId))\n\t\treturn sourceId\n\t}\n\n\tpublic addTarget(type: TargetType, target: DropTarget): string {\n\t\tvalidateType(type, true)\n\t\tvalidateTargetContract(target)\n\n\t\tconst targetId = this.addHandler(HandlerRole.TARGET, type, target)\n\t\tthis.store.dispatch(addTarget(targetId))\n\t\treturn targetId\n\t}\n\n\tpublic containsHandler(handler: DragSource | DropTarget): boolean {\n\t\treturn (\n\t\t\tmapContainsValue(this.dragSources, handler) ||\n\t\t\tmapContainsValue(this.dropTargets, handler)\n\t\t)\n\t}\n\n\tpublic getSource(sourceId: string, includePinned = false): DragSource {\n\t\tinvariant(this.isSourceId(sourceId), 'Expected a valid source ID.')\n\t\tconst isPinned = includePinned && sourceId === this.pinnedSourceId\n\t\tconst source = isPinned ? this.pinnedSource : this.dragSources.get(sourceId)\n\t\treturn source\n\t}\n\n\tpublic getTarget(targetId: string): DropTarget {\n\t\tinvariant(this.isTargetId(targetId), 'Expected a valid target ID.')\n\t\treturn this.dropTargets.get(targetId) as DropTarget\n\t}\n\n\tpublic getSourceType(sourceId: string): Identifier {\n\t\tinvariant(this.isSourceId(sourceId), 'Expected a valid source ID.')\n\t\treturn this.types.get(sourceId) as Identifier\n\t}\n\n\tpublic getTargetType(targetId: string): Identifier | Identifier[] {\n\t\tinvariant(this.isTargetId(targetId), 'Expected a valid target ID.')\n\t\treturn this.types.get(targetId) as Identifier | Identifier[]\n\t}\n\n\tpublic isSourceId(handlerId: string): boolean {\n\t\tconst role = parseRoleFromHandlerId(handlerId)\n\t\treturn role === HandlerRole.SOURCE\n\t}\n\n\tpublic isTargetId(handlerId: string): boolean {\n\t\tconst role = parseRoleFromHandlerId(handlerId)\n\t\treturn role === HandlerRole.TARGET\n\t}\n\n\tpublic removeSource(sourceId: string): void {\n\t\tinvariant(this.getSource(sourceId), 'Expected an existing source.')\n\t\tthis.store.dispatch(removeSource(sourceId))\n\t\tasap(() => {\n\t\t\tthis.dragSources.delete(sourceId)\n\t\t\tthis.types.delete(sourceId)\n\t\t})\n\t}\n\n\tpublic removeTarget(targetId: string): void {\n\t\tinvariant(this.getTarget(targetId), 'Expected an existing target.')\n\t\tthis.store.dispatch(removeTarget(targetId))\n\t\tthis.dropTargets.delete(targetId)\n\t\tthis.types.delete(targetId)\n\t}\n\n\tpublic pinSource(sourceId: string): void {\n\t\tconst source = this.getSource(sourceId)\n\t\tinvariant(source, 'Expected an existing source.')\n\n\t\tthis.pinnedSourceId = sourceId\n\t\tthis.pinnedSource = source\n\t}\n\n\tpublic unpinSource(): void {\n\t\tinvariant(this.pinnedSource, 'No source is pinned at the time.')\n\n\t\tthis.pinnedSourceId = null\n\t\tthis.pinnedSource = null\n\t}\n\n\tprivate addHandler(\n\t\trole: HandlerRole,\n\t\ttype: SourceType | TargetType,\n\t\thandler: DragSource | DropTarget,\n\t): string {\n\t\tconst id = getNextHandlerId(role)\n\t\tthis.types.set(id, type)\n\t\tif (role === HandlerRole.SOURCE) {\n\t\t\tthis.dragSources.set(id, handler as DragSource)\n\t\t} else if (role === HandlerRole.TARGET) {\n\t\t\tthis.dropTargets.set(id, handler as DropTarget)\n\t\t}\n\t\treturn id\n\t}\n}\n","import type { XYCoord } from '../interfaces.js'\n\nexport type EqualityCheck<T> = (a: T, b: T) => boolean\nexport const strictEquality = <T>(a: T, b: T): boolean => a === b\n\n/**\n * Determine if two cartesian coordinate offsets are equal\n * @param offsetA\n * @param offsetB\n */\nexport function areCoordsEqual(\n\toffsetA: XYCoord | null | undefined,\n\toffsetB: XYCoord | null | undefined,\n): boolean {\n\tif (!offsetA && !offsetB) {\n\t\treturn true\n\t} else if (!offsetA || !offsetB) {\n\t\treturn false\n\t} else {\n\t\treturn offsetA.x === offsetB.x && offsetA.y === offsetB.y\n\t}\n}\n\n/**\n * Determines if two arrays of items are equal\n * @param a The first array of items\n * @param b The second array of items\n */\nexport function areArraysEqual<T>(\n\ta: T[],\n\tb: T[],\n\tisEqual: EqualityCheck<T> = strictEquality,\n): boolean {\n\tif (a.length !== b.length) {\n\t\treturn false\n\t}\n\tfor (let i = 0; i < a.length; ++i) {\n\t\tif (!isEqual(a[i] as T, b[i] as T)) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n","import {\n\tBEGIN_DRAG,\n\tDROP,\n\tEND_DRAG,\n\tHOVER,\n\tPUBLISH_DRAG_SOURCE,\n} from '../actions/dragDrop/index.js'\nimport {\n\tADD_SOURCE,\n\tADD_TARGET,\n\tREMOVE_SOURCE,\n\tREMOVE_TARGET,\n} from '../actions/registry.js'\nimport type { Action } from '../interfaces.js'\nimport { ALL, NONE } from '../utils/dirtiness.js'\nimport { areArraysEqual } from '../utils/equality.js'\nimport { xor } from '../utils/js_utils.js'\n\nexport type State = string[]\n\nexport interface DirtyHandlerIdPayload {\n\ttargetIds: string[]\n\tprevTargetIds: string[]\n}\n\nexport function reduce(\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\t_state: State = NONE,\n\taction: Action<DirtyHandlerIdPayload>,\n): State {\n\tswitch (action.type) {\n\t\tcase HOVER:\n\t\t\tbreak\n\t\tcase ADD_SOURCE:\n\t\tcase ADD_TARGET:\n\t\tcase REMOVE_TARGET:\n\t\tcase REMOVE_SOURCE:\n\t\t\treturn NONE\n\t\tcase BEGIN_DRAG:\n\t\tcase PUBLISH_DRAG_SOURCE:\n\t\tcase END_DRAG:\n\t\tcase DROP:\n\t\tdefault:\n\t\t\treturn ALL\n\t}\n\n\tconst { targetIds = [], prevTargetIds = [] } = action.payload\n\tconst result = xor(targetIds, prevTargetIds)\n\tconst didChange =\n\t\tresult.length > 0 || !areArraysEqual(targetIds, prevTargetIds)\n\n\tif (!didChange) {\n\t\treturn NONE\n\t}\n\n\t// Check the target ids at the innermost position. If they are valid, add them\n\t// to the result\n\tconst prevInnermostTargetId = prevTargetIds[prevTargetIds.length - 1]\n\tconst innermostTargetId = targetIds[targetIds.length - 1]\n\tif (prevInnermostTargetId !== innermostTargetId) {\n\t\tif (prevInnermostTargetId) {\n\t\t\tresult.push(prevInnermostTargetId)\n\t\t}\n\t\tif (innermostTargetId) {\n\t\t\tresult.push(innermostTargetId)\n\t\t}\n\t}\n\n\treturn result\n}\n","import {\n\tBEGIN_DRAG,\n\tDROP,\n\tEND_DRAG,\n\tHOVER,\n\tINIT_COORDS,\n} from '../actions/dragDrop/index.js'\nimport type { Action, XYCoord } from '../interfaces.js'\nimport { areCoordsEqual } from '../utils/equality.js'\n\nexport interface State {\n\tinitialSourceClientOffset: XYCoord | null\n\tinitialClientOffset: XYCoord | null\n\tclientOffset: XYCoord | null\n}\n\nconst initialState: State = {\n\tinitialSourceClientOffset: null,\n\tinitialClientOffset: null,\n\tclientOffset: null,\n}\n\nexport function reduce(\n\tstate: State = initialState,\n\taction: Action<{\n\t\tsourceClientOffset: XYCoord\n\t\tclientOffset: XYCoord\n\t}>,\n): State {\n\tconst { payload } = action\n\tswitch (action.type) {\n\t\tcase INIT_COORDS:\n\t\tcase BEGIN_DRAG:\n\t\t\treturn {\n\t\t\t\tinitialSourceClientOffset: payload.sourceClientOffset,\n\t\t\t\tinitialClientOffset: payload.clientOffset,\n\t\t\t\tclientOffset: payload.clientOffset,\n\t\t\t}\n\t\tcase HOVER:\n\t\t\tif (areCoordsEqual(state.clientOffset, payload.clientOffset)) {\n\t\t\t\treturn state\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tclientOffset: payload.clientOffset,\n\t\t\t}\n\t\tcase END_DRAG:\n\t\tcase DROP:\n\t\t\treturn initialState\n\t\tdefault:\n\t\t\treturn state\n\t}\n}\n","import {\n\tBEGIN_DRAG,\n\tDROP,\n\tEND_DRAG,\n\tHOVER,\n\tPUBLISH_DRAG_SOURCE,\n} from '../actions/dragDrop/index.js'\nimport { REMOVE_TARGET } from '../actions/registry.js'\nimport type { Action, Identifier } from '../interfaces.js'\nimport { without } from '../utils/js_utils.js'\n\nexport interface State {\n\titemType: Identifier | Identifier[] | null\n\titem: any\n\tsourceId: string | null\n\ttargetIds: string[]\n\tdropResult: any\n\tdidDrop: boolean\n\tisSourcePublic: boolean | null\n}\n\nconst initialState: State = {\n\titemType: null,\n\titem: null,\n\tsourceId: null,\n\ttargetIds: [],\n\tdropResult: null,\n\tdidDrop: false,\n\tisSourcePublic: null,\n}\n\nexport function reduce(\n\tstate: State = initialState,\n\taction: Action<{\n\t\titemType: Identifier | Identifier[]\n\t\titem: any\n\t\tsourceId: string\n\t\ttargetId: string\n\t\ttargetIds: string[]\n\t\tisSourcePublic: boolean\n\t\tdropResult: any\n\t}>,\n): State {\n\tconst { payload } = action\n\tswitch (action.type) {\n\t\tcase BEGIN_DRAG:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\titemType: payload.itemType,\n\t\t\t\titem: payload.item,\n\t\t\t\tsourceId: payload.sourceId,\n\t\t\t\tisSourcePublic: payload.isSourcePublic,\n\t\t\t\tdropResult: null,\n\t\t\t\tdidDrop: false,\n\t\t\t}\n\t\tcase PUBLISH_DRAG_SOURCE:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tisSourcePublic: true,\n\t\t\t}\n\t\tcase HOVER:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\ttargetIds: payload.targetIds,\n\t\t\t}\n\t\tcase REMOVE_TARGET:\n\t\t\tif (state.targetIds.indexOf(payload.targetId) === -1) {\n\t\t\t\treturn state\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\ttargetIds: without(state.targetIds, payload.targetId),\n\t\t\t}\n\t\tcase DROP:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tdropResult: payload.dropResult,\n\t\t\t\tdidDrop: true,\n\t\t\t\ttargetIds: [],\n\t\t\t}\n\t\tcase END_DRAG:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\titemType: null,\n\t\t\t\titem: null,\n\t\t\t\tsourceId: null,\n\t\t\t\tdropResult: null,\n\t\t\t\tdidDrop: false,\n\t\t\t\tisSourcePublic: null,\n\t\t\t\ttargetIds: [],\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state\n\t}\n}\n","import {\n\tADD_SOURCE,\n\tADD_TARGET,\n\tREMOVE_SOURCE,\n\tREMOVE_TARGET,\n} from '../actions/registry.js'\nimport type { Action } from '../interfaces.js'\n\nexport type State = number\n\nexport function reduce(state: State = 0, action: Action<any>): State {\n\tswitch (action.type) {\n\t\tcase ADD_SOURCE:\n\t\tcase ADD_TARGET:\n\t\t\treturn state + 1\n\t\tcase REMOVE_SOURCE:\n\t\tcase REMOVE_TARGET:\n\t\t\treturn state - 1\n\t\tdefault:\n\t\t\treturn state\n\t}\n}\n","export type State = number\n\nexport function reduce(state: State = 0): State {\n\treturn state + 1\n}\n","import type { Action } from '../interfaces.js'\nimport { get } from '../utils/js_utils.js'\nimport type { State as DirtyHandlerIdsState } from './dirtyHandlerIds.js'\nimport { reduce as dirtyHandlerIds } from './dirtyHandlerIds.js'\nimport type { State as DragOffsetState } from './dragOffset.js'\nimport { reduce as dragOffset } from './dragOffset.js'\nimport type { State as DragOperationState } from './dragOperation.js'\nimport { reduce as dragOperation } from './dragOperation.js'\nimport type { State as RefCountState } from './refCount.js'\nimport { reduce as refCount } from './refCount.js'\nimport type { State as StateIdState } from './stateId.js'\nimport { reduce as stateId } from './stateId.js'\n\nexport interface State {\n\tdirtyHandlerIds: DirtyHandlerIdsState\n\tdragOffset: DragOffsetState\n\trefCount: RefCountState\n\tdragOperation: DragOperationState\n\tstateId: StateIdState\n}\n\nexport function reduce(state: State = {} as State, action: Action<any>): State {\n\treturn {\n\t\tdirtyHandlerIds: dirtyHandlerIds(state.dirtyHandlerIds, {\n\t\t\ttype: action.type,\n\t\t\tpayload: {\n\t\t\t\t...action.payload,\n\t\t\t\tprevTargetIds: get<string[]>(state, 'dragOperation.targetIds', []),\n\t\t\t},\n\t\t}),\n\t\tdragOffset: dragOffset(state.dragOffset, action),\n\t\trefCount: refCount(state.refCount, action),\n\t\tdragOperation: dragOperation(state.dragOperation, action),\n\t\tstateId: stateId(state.stateId),\n\t}\n}\n","import type { Store } from 'redux'\nimport { createStore } from 'redux'\n\nimport { DragDropManagerImpl } from './classes/DragDropManagerImpl.js'\nimport { DragDropMonitorImpl } from './classes/DragDropMonitorImpl.js'\nimport { HandlerRegistryImpl } from './classes/HandlerRegistryImpl.js'\nimport type { BackendFactory, DragDropManager } from './interfaces.js'\nimport type { State } from './reducers/index.js'\nimport { reduce } from './reducers/index.js'\n\nexport function createDragDropManager(\n\tbackendFactory: BackendFactory,\n\tglobalContext: unknown = undefined,\n\tbackendOptions: unknown = {},\n\tdebugMode = false,\n): DragDropManager {\n\tconst store = makeStoreInstance(debugMode)\n\tconst monitor = new DragDropMonitorImpl(store, new HandlerRegistryImpl(store))\n\tconst manager = new DragDropManagerImpl(store, monitor)\n\tconst backend = backendFactory(manager, globalContext, backendOptions)\n\tmanager.receiveBackend(backend)\n\treturn manager\n}\n\nfunction makeStoreInstance(debugMode: boolean): Store<State> {\n\t// TODO: if we ever make a react-native version of this,\n\t// we'll need to consider how to pull off dev-tooling\n\tconst reduxDevTools =\n\t\ttypeof window !== 'undefined' &&\n\t\t(window as any).__REDUX_DEVTOOLS_EXTENSION__\n\treturn createStore(\n\t\treduce,\n\t\tdebugMode &&\n\t\t\treduxDevTools &&\n\t\t\treduxDevTools({\n\t\t\t\tname: 'dnd-core',\n\t\t\t\tinstanceId: 'dnd-core',\n\t\t\t}),\n\t)\n}\n","import type { BackendFactory, DragDropManager } from 'dnd-core'\nimport { createDragDropManager } from 'dnd-core'\nimport type { FC, ReactNode } from 'react'\nimport { memo, useEffect } from 'react'\n\nimport { DndContext } from './DndContext.js'\n\nexport type DndProviderProps<BackendContext, BackendOptions> =\n\t| {\n\t\t\tchildren?: ReactNode\n\t\t\tmanager: DragDropManager\n\t  }\n\t| {\n\t\t\tbackend: BackendFactory\n\t\t\tchildren?: ReactNode\n\t\t\tcontext?: BackendContext\n\t\t\toptions?: BackendOptions\n\t\t\tdebugMode?: boolean\n\t  }\n\nlet refCount = 0\nconst INSTANCE_SYM = Symbol.for('__REACT_DND_CONTEXT_INSTANCE__')\n\n/**\n * A React component that provides the React-DnD context\n */\nexport const DndProvider: FC<DndProviderProps<unknown, unknown>> = memo(\n\tfunction DndProvider({ children, ...props }) {\n\t\tconst [manager, isGlobalInstance] = getDndContextValue(props) // memoized from props\n\t\t/**\n\t\t * If the global context was used to store the DND context\n\t\t * then where theres no more references to it we should\n\t\t * clean it up to avoid memory leaks\n\t\t */\n\t\tuseEffect(() => {\n\t\t\tif (isGlobalInstance) {\n\t\t\t\tconst context = getGlobalContext()\n\t\t\t\t++refCount\n\n\t\t\t\treturn () => {\n\t\t\t\t\tif (--refCount === 0) {\n\t\t\t\t\t\tcontext[INSTANCE_SYM] = null\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn\n\t\t}, [])\n\n\t\treturn <DndContext.Provider value={manager}>{children}</DndContext.Provider>\n\t},\n)\n\nfunction getDndContextValue(props: DndProviderProps<unknown, unknown>) {\n\tif ('manager' in props) {\n\t\tconst manager = { dragDropManager: props.manager }\n\t\treturn [manager, false]\n\t}\n\n\tconst manager = createSingletonDndContext(\n\t\tprops.backend,\n\t\tprops.context,\n\t\tprops.options,\n\t\tprops.debugMode,\n\t)\n\tconst isGlobalInstance = !props.context\n\n\treturn [manager, isGlobalInstance]\n}\n\nfunction createSingletonDndContext<BackendContext, BackendOptions>(\n\tbackend: BackendFactory,\n\tcontext: BackendContext = getGlobalContext(),\n\toptions: BackendOptions,\n\tdebugMode?: boolean,\n) {\n\tconst ctx = context as any\n\tif (!ctx[INSTANCE_SYM]) {\n\t\tctx[INSTANCE_SYM] = {\n\t\t\tdragDropManager: createDragDropManager(\n\t\t\t\tbackend,\n\t\t\t\tcontext,\n\t\t\t\toptions,\n\t\t\t\tdebugMode,\n\t\t\t),\n\t\t}\n\t}\n\treturn ctx[INSTANCE_SYM]\n}\n\ndeclare const global: any\nfunction getGlobalContext() {\n\treturn typeof global !== 'undefined' ? global : (window as any)\n}\n","import equal from 'fast-deep-equal'\nimport { useCallback, useState } from 'react'\n\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect.js'\n\n/**\n *\n * @param monitor The monitor to collect state from\n * @param collect The collecting function\n * @param onUpdate A method to invoke when updates occur\n */\nexport function useCollector<T, S>(\n\tmonitor: T,\n\tcollect: (monitor: T) => S,\n\tonUpdate?: () => void,\n): [S, () => void] {\n\tconst [collected, setCollected] = useState(() => collect(monitor))\n\n\tconst updateCollected = useCallback(() => {\n\t\tconst nextValue = collect(monitor)\n\t\t// This needs to be a deep-equality check because some monitor-collected values\n\t\t// include XYCoord objects that may be equivalent, but do not have instance equality.\n\t\tif (!equal(collected, nextValue)) {\n\t\t\tsetCollected(nextValue)\n\t\t\tif (onUpdate) {\n\t\t\t\tonUpdate()\n\t\t\t}\n\t\t}\n\t}, [collected, monitor, onUpdate])\n\n\t// update the collected properties after react renders.\n\t// Note that the \"Dustbin Stress Test\" fails if this is not\n\t// done when the component updates\n\tuseIsomorphicLayoutEffect(updateCollected)\n\n\treturn [collected, updateCollected]\n}\n","import { useEffect, useLayoutEffect } from 'react'\n\n// suppress the useLayoutEffect warning on server side.\nexport const useIsomorphicLayoutEffect =\n\ttypeof window !== 'undefined' ? useLayoutEffect : useEffect\n","import type { HandlerManager, MonitorEventEmitter } from '../types/index.js'\nimport { useCollector } from './useCollector.js'\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect.js'\n\nexport function useMonitorOutput<Monitor extends HandlerManager, Collected>(\n\tmonitor: Monitor & MonitorEventEmitter,\n\tcollect: (monitor: Monitor) => Collected,\n\tonCollect?: () => void,\n): Collected {\n\tconst [collected, updateCollected] = useCollector(monitor, collect, onCollect)\n\n\tuseIsomorphicLayoutEffect(\n\t\tfunction subscribeToMonitorStateChange() {\n\t\t\tconst handlerId = monitor.getHandlerId()\n\t\t\tif (handlerId == null) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\treturn monitor.subscribeToStateChange(updateCollected, {\n\t\t\t\thandlerIds: [handlerId],\n\t\t\t})\n\t\t},\n\t\t[monitor, updateCollected],\n\t)\n\n\treturn collected\n}\n","import type { Connector } from '../internals/index.js'\nimport type { HandlerManager, MonitorEventEmitter } from '../types/index.js'\nimport { useMonitorOutput } from './useMonitorOutput.js'\n\nexport function useCollectedProps<Collected, Monitor extends HandlerManager>(\n\tcollector: ((monitor: Monitor) => Collected) | undefined,\n\tmonitor: Monitor & MonitorEventEmitter,\n\tconnector: Connector,\n) {\n\treturn useMonitorOutput(monitor, collector || (() => ({} as Collected)), () =>\n\t\tconnector.reconnect(),\n\t)\n}\n","import { useMemo } from 'react'\n\nimport type { FactoryOrInstance } from './types.js'\n\nexport function useOptionalFactory<T>(\n\targ: FactoryOrInstance<T>,\n\tdeps?: unknown[],\n): T {\n\tconst memoDeps = [...(deps || [])]\n\tif (deps == null && typeof arg !== 'function') {\n\t\tmemoDeps.push(arg)\n\t}\n\treturn useMemo<T>(() => {\n\t\treturn typeof arg === 'function' ? (arg as () => T)() : (arg as T)\n\t}, memoDeps)\n}\n","import { useMemo } from 'react'\n\nimport type { SourceConnector } from '../../internals/index.js'\n\nexport function useConnectDragSource(connector: SourceConnector) {\n\treturn useMemo(() => connector.hooks.dragSource(), [connector])\n}\n\nexport function useConnectDragPreview(connector: SourceConnector) {\n\treturn useMemo(() => connector.hooks.dragPreview(), [connector])\n}\n","import { useMemo } from 'react'\n\nimport { SourceConnector } from '../../internals/index.js'\nimport type {\n\tDragPreviewOptions,\n\tDragSourceOptions,\n} from '../../types/index.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect.js'\n\nexport function useDragSourceConnector(\n\tdragSourceOptions: DragSourceOptions | undefined,\n\tdragPreviewOptions: DragPreviewOptions | undefined,\n): SourceConnector {\n\tconst manager = useDragDropManager()\n\tconst connector = useMemo(\n\t\t() => new SourceConnector(manager.getBackend()),\n\t\t[manager],\n\t)\n\tuseIsomorphicLayoutEffect(() => {\n\t\tconnector.dragSourceOptions = dragSourceOptions || null\n\t\tconnector.reconnect()\n\t\treturn () => connector.disconnectDragSource()\n\t}, [connector, dragSourceOptions])\n\tuseIsomorphicLayoutEffect(() => {\n\t\tconnector.dragPreviewOptions = dragPreviewOptions || null\n\t\tconnector.reconnect()\n\t\treturn () => connector.disconnectDragPreview()\n\t}, [connector, dragPreviewOptions])\n\treturn connector\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type {\n\tDragDropManager,\n\tDragDropMonitor,\n\tIdentifier,\n\tListener,\n\tUnsubscribe,\n\tXYCoord,\n} from 'dnd-core'\n\nimport type { DragSourceMonitor } from '../types/index.js'\n\nlet isCallingCanDrag = false\nlet isCallingIsDragging = false\n\nexport class DragSourceMonitorImpl implements DragSourceMonitor {\n\tprivate internalMonitor: DragDropMonitor\n\tprivate sourceId: Identifier | null = null\n\n\tpublic constructor(manager: DragDropManager) {\n\t\tthis.internalMonitor = manager.getMonitor()\n\t}\n\n\tpublic receiveHandlerId(sourceId: Identifier | null): void {\n\t\tthis.sourceId = sourceId\n\t}\n\n\tpublic getHandlerId(): Identifier | null {\n\t\treturn this.sourceId\n\t}\n\n\tpublic canDrag(): boolean {\n\t\tinvariant(\n\t\t\t!isCallingCanDrag,\n\t\t\t'You may not call monitor.canDrag() inside your canDrag() implementation. ' +\n\t\t\t\t'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor',\n\t\t)\n\n\t\ttry {\n\t\t\tisCallingCanDrag = true\n\t\t\treturn this.internalMonitor.canDragSource(this.sourceId as Identifier)\n\t\t} finally {\n\t\t\tisCallingCanDrag = false\n\t\t}\n\t}\n\n\tpublic isDragging(): boolean {\n\t\tif (!this.sourceId) {\n\t\t\treturn false\n\t\t}\n\t\tinvariant(\n\t\t\t!isCallingIsDragging,\n\t\t\t'You may not call monitor.isDragging() inside your isDragging() implementation. ' +\n\t\t\t\t'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor',\n\t\t)\n\n\t\ttry {\n\t\t\tisCallingIsDragging = true\n\t\t\treturn this.internalMonitor.isDraggingSource(this.sourceId)\n\t\t} finally {\n\t\t\tisCallingIsDragging = false\n\t\t}\n\t}\n\n\tpublic subscribeToStateChange(\n\t\tlistener: Listener,\n\t\toptions?: { handlerIds?: Identifier[] },\n\t): Unsubscribe {\n\t\treturn this.internalMonitor.subscribeToStateChange(listener, options)\n\t}\n\n\tpublic isDraggingSource(sourceId: Identifier): boolean {\n\t\treturn this.internalMonitor.isDraggingSource(sourceId)\n\t}\n\n\tpublic isOverTarget(\n\t\ttargetId: Identifier,\n\t\toptions?: { shallow: boolean },\n\t): boolean {\n\t\treturn this.internalMonitor.isOverTarget(targetId, options)\n\t}\n\n\tpublic getTargetIds(): Identifier[] {\n\t\treturn this.internalMonitor.getTargetIds()\n\t}\n\n\tpublic isSourcePublic(): boolean | null {\n\t\treturn this.internalMonitor.isSourcePublic()\n\t}\n\n\tpublic getSourceId(): Identifier | null {\n\t\treturn this.internalMonitor.getSourceId()\n\t}\n\n\tpublic subscribeToOffsetChange(listener: Listener): Unsubscribe {\n\t\treturn this.internalMonitor.subscribeToOffsetChange(listener)\n\t}\n\n\tpublic canDragSource(sourceId: Identifier): boolean {\n\t\treturn this.internalMonitor.canDragSource(sourceId)\n\t}\n\n\tpublic canDropOnTarget(targetId: Identifier): boolean {\n\t\treturn this.internalMonitor.canDropOnTarget(targetId)\n\t}\n\n\tpublic getItemType(): Identifier | null {\n\t\treturn this.internalMonitor.getItemType()\n\t}\n\n\tpublic getItem(): any {\n\t\treturn this.internalMonitor.getItem()\n\t}\n\n\tpublic getDropResult(): any {\n\t\treturn this.internalMonitor.getDropResult()\n\t}\n\n\tpublic didDrop(): boolean {\n\t\treturn this.internalMonitor.didDrop()\n\t}\n\n\tpublic getInitialClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getInitialClientOffset()\n\t}\n\n\tpublic getInitialSourceClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getInitialSourceClientOffset()\n\t}\n\n\tpublic getSourceClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getSourceClientOffset()\n\t}\n\n\tpublic getClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getClientOffset()\n\t}\n\n\tpublic getDifferenceFromInitialOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getDifferenceFromInitialOffset()\n\t}\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type {\n\tDragDropManager,\n\tDragDropMonitor,\n\tIdentifier,\n\tListener,\n\tUnsubscribe,\n\tXYCoord,\n} from 'dnd-core'\n\nimport type { DropTargetMonitor } from '../types/index.js'\n\nlet isCallingCanDrop = false\n\nexport class DropTargetMonitorImpl implements DropTargetMonitor {\n\tprivate internalMonitor: DragDropMonitor\n\tprivate targetId: Identifier | null = null\n\n\tpublic constructor(manager: DragDropManager) {\n\t\tthis.internalMonitor = manager.getMonitor()\n\t}\n\n\tpublic receiveHandlerId(targetId: Identifier | null): void {\n\t\tthis.targetId = targetId\n\t}\n\n\tpublic getHandlerId(): Identifier | null {\n\t\treturn this.targetId\n\t}\n\n\tpublic subscribeToStateChange(\n\t\tlistener: Listener,\n\t\toptions?: { handlerIds?: Identifier[] },\n\t): Unsubscribe {\n\t\treturn this.internalMonitor.subscribeToStateChange(listener, options)\n\t}\n\n\tpublic canDrop(): boolean {\n\t\t// Cut out early if the target id has not been set. This should prevent errors\n\t\t// where the user has an older version of dnd-core like in\n\t\t// https://github.com/react-dnd/react-dnd/issues/1310\n\t\tif (!this.targetId) {\n\t\t\treturn false\n\t\t}\n\t\tinvariant(\n\t\t\t!isCallingCanDrop,\n\t\t\t'You may not call monitor.canDrop() inside your canDrop() implementation. ' +\n\t\t\t\t'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target-monitor',\n\t\t)\n\n\t\ttry {\n\t\t\tisCallingCanDrop = true\n\t\t\treturn this.internalMonitor.canDropOnTarget(this.targetId)\n\t\t} finally {\n\t\t\tisCallingCanDrop = false\n\t\t}\n\t}\n\n\tpublic isOver(options?: { shallow?: boolean }): boolean {\n\t\tif (!this.targetId) {\n\t\t\treturn false\n\t\t}\n\t\treturn this.internalMonitor.isOverTarget(this.targetId, options)\n\t}\n\n\tpublic getItemType(): Identifier | null {\n\t\treturn this.internalMonitor.getItemType()\n\t}\n\n\tpublic getItem(): any {\n\t\treturn this.internalMonitor.getItem()\n\t}\n\n\tpublic getDropResult(): any {\n\t\treturn this.internalMonitor.getDropResult()\n\t}\n\n\tpublic didDrop(): boolean {\n\t\treturn this.internalMonitor.didDrop()\n\t}\n\n\tpublic getInitialClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getInitialClientOffset()\n\t}\n\n\tpublic getInitialSourceClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getInitialSourceClientOffset()\n\t}\n\n\tpublic getSourceClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getSourceClientOffset()\n\t}\n\n\tpublic getClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getClientOffset()\n\t}\n\n\tpublic getDifferenceFromInitialOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getDifferenceFromInitialOffset()\n\t}\n}\n","import type {\n\tDragDropManager,\n\tDragSource,\n\tDropTarget,\n\tIdentifier,\n\tSourceType,\n\tTargetType,\n\tUnsubscribe,\n} from 'dnd-core'\n\nexport function registerTarget(\n\ttype: TargetType,\n\ttarget: DropTarget,\n\tmanager: DragDropManager,\n): [Identifier, Unsubscribe] {\n\tconst registry = manager.getRegistry()\n\tconst targetId = registry.addTarget(type, target)\n\n\treturn [targetId, () => registry.removeTarget(targetId)]\n}\n\nexport function registerSource(\n\ttype: SourceType,\n\tsource: DragSource,\n\tmanager: DragDropManager,\n): [Identifier, Unsubscribe] {\n\tconst registry = manager.getRegistry()\n\tconst sourceId = registry.addSource(type, source)\n\n\treturn [sourceId, () => registry.removeSource(sourceId)]\n}\n","export function shallowEqual<T>(\n\tobjA: T,\n\tobjB: T,\n\tcompare?: (a: T, b: T, key?: string) => boolean | void,\n\tcompareContext?: any,\n) {\n\tlet compareResult = compare\n\t\t? compare.call(compareContext, objA, objB)\n\t\t: void 0\n\tif (compareResult !== void 0) {\n\t\treturn !!compareResult\n\t}\n\n\tif (objA === objB) {\n\t\treturn true\n\t}\n\n\tif (typeof objA !== 'object' || !objA || typeof objB !== 'object' || !objB) {\n\t\treturn false\n\t}\n\n\tconst keysA = Object.keys(objA)\n\tconst keysB = Object.keys(objB)\n\n\tif (keysA.length !== keysB.length) {\n\t\treturn false\n\t}\n\n\tconst bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB)\n\n\t// Test for A's keys different from B.\n\tfor (let idx = 0; idx < keysA.length; idx++) {\n\t\tconst key = keysA[idx] as string\n\n\t\tif (!bHasOwnProperty(key)) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst valueA = (objA as any)[key]\n\t\tconst valueB = (objB as any)[key]\n\n\t\tcompareResult = compare\n\t\t\t? compare.call(compareContext, valueA, valueB, key)\n\t\t\t: void 0\n\n\t\tif (\n\t\t\tcompareResult === false ||\n\t\t\t(compareResult === void 0 && valueA !== valueB)\n\t\t) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n","export interface Ref<T> {\n\tcurrent: T\n}\n\nexport function isRef(obj: unknown): boolean {\n\treturn (\n\t\t// eslint-disable-next-line no-prototype-builtins\n\t\tobj !== null &&\n\t\ttypeof obj === 'object' &&\n\t\tObject.prototype.hasOwnProperty.call(obj, 'current')\n\t)\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type { ReactElement } from 'react'\nimport { cloneElement, isValidElement } from 'react'\n\nfunction throwIfCompositeComponentElement(element: ReactElement<any>) {\n\t// Custom components can no longer be wrapped directly in React DnD 2.0\n\t// so that we don't need to depend on findDOMNode() from react-dom.\n\tif (typeof element.type === 'string') {\n\t\treturn\n\t}\n\n\tconst displayName =\n\t\t(element.type as any).displayName || element.type.name || 'the component'\n\n\tthrow new Error(\n\t\t'Only native element nodes can now be passed to React DnD connectors.' +\n\t\t\t`You can either wrap ${displayName} into a <div>, or turn it into a ` +\n\t\t\t'drag source or a drop target itself.',\n\t)\n}\n\nfunction wrapHookToRecognizeElement(hook: (node: any, options: any) => void) {\n\treturn (elementOrNode = null, options = null) => {\n\t\t// When passed a node, call the hook straight away.\n\t\tif (!isValidElement(elementOrNode)) {\n\t\t\tconst node = elementOrNode\n\t\t\thook(node, options)\n\t\t\t// return the node so it can be chained (e.g. when within callback refs\n\t\t\t// <div ref={node => connectDragSource(connectDropTarget(node))}/>\n\t\t\treturn node\n\t\t}\n\n\t\t// If passed a ReactElement, clone it and attach this function as a ref.\n\t\t// This helps us achieve a neat API where user doesn't even know that refs\n\t\t// are being used under the hood.\n\t\tconst element: ReactElement | null = elementOrNode\n\t\tthrowIfCompositeComponentElement(element as any)\n\n\t\t// When no options are passed, use the hook directly\n\t\tconst ref = options ? (node: Element) => hook(node, options) : hook\n\t\treturn cloneWithRef(element, ref)\n\t}\n}\n\nexport function wrapConnectorHooks(hooks: any) {\n\tconst wrappedHooks: any = {}\n\n\tObject.keys(hooks).forEach((key) => {\n\t\tconst hook = hooks[key]\n\n\t\t// ref objects should be passed straight through without wrapping\n\t\tif (key.endsWith('Ref')) {\n\t\t\twrappedHooks[key] = hooks[key]\n\t\t} else {\n\t\t\tconst wrappedHook = wrapHookToRecognizeElement(hook)\n\t\t\twrappedHooks[key] = () => wrappedHook\n\t\t}\n\t})\n\n\treturn wrappedHooks\n}\n\nfunction setRef(ref: any, node: any) {\n\tif (typeof ref === 'function') {\n\t\tref(node)\n\t} else {\n\t\tref.current = node\n\t}\n}\n\nfunction cloneWithRef(element: any, newRef: any): ReactElement<any> {\n\tconst previousRef = element.ref\n\tinvariant(\n\t\ttypeof previousRef !== 'string',\n\t\t'Cannot connect React DnD to an element with an existing string ref. ' +\n\t\t\t'Please convert it to use a callback ref instead, or wrap it into a <span> or <div>. ' +\n\t\t\t'Read more: https://reactjs.org/docs/refs-and-the-dom.html#callback-refs',\n\t)\n\n\tif (!previousRef) {\n\t\t// When there is no ref on the element, use the new ref directly\n\t\treturn cloneElement(element, {\n\t\t\tref: newRef,\n\t\t})\n\t} else {\n\t\treturn cloneElement(element, {\n\t\t\tref: (node: any) => {\n\t\t\t\tsetRef(previousRef, node)\n\t\t\t\tsetRef(newRef, node)\n\t\t\t},\n\t\t})\n\t}\n}\n","import { shallowEqual } from '@react-dnd/shallowequal'\nimport type { Backend, Identifier, Unsubscribe } from 'dnd-core'\nimport type { ReactElement, Ref, RefObject } from 'react'\n\nimport type { DragPreviewOptions, DragSourceOptions } from '../types/index.js'\nimport { isRef } from './isRef.js'\nimport { wrapConnectorHooks } from './wrapConnectorHooks.js'\n\nexport interface Connector {\n\thooks: any\n\tconnectTarget: any\n\treceiveHandlerId(handlerId: Identifier | null): void\n\treconnect(): void\n}\n\nexport class SourceConnector implements Connector {\n\tpublic hooks = wrapConnectorHooks({\n\t\tdragSource: (\n\t\t\tnode: Element | ReactElement | Ref<any>,\n\t\t\toptions?: DragSourceOptions,\n\t\t) => {\n\t\t\tthis.clearDragSource()\n\t\t\tthis.dragSourceOptions = options || null\n\t\t\tif (isRef(node)) {\n\t\t\t\tthis.dragSourceRef = node as RefObject<any>\n\t\t\t} else {\n\t\t\t\tthis.dragSourceNode = node\n\t\t\t}\n\t\t\tthis.reconnectDragSource()\n\t\t},\n\t\tdragPreview: (node: any, options?: DragPreviewOptions) => {\n\t\t\tthis.clearDragPreview()\n\t\t\tthis.dragPreviewOptions = options || null\n\t\t\tif (isRef(node)) {\n\t\t\t\tthis.dragPreviewRef = node\n\t\t\t} else {\n\t\t\t\tthis.dragPreviewNode = node\n\t\t\t}\n\t\t\tthis.reconnectDragPreview()\n\t\t},\n\t})\n\tprivate handlerId: Identifier | null = null\n\n\t// The drop target may either be attached via ref or connect function\n\tprivate dragSourceRef: RefObject<any> | null = null\n\tprivate dragSourceNode: any\n\tprivate dragSourceOptionsInternal: DragSourceOptions | null = null\n\tprivate dragSourceUnsubscribe: Unsubscribe | undefined\n\n\t// The drag preview may either be attached via ref or connect function\n\tprivate dragPreviewRef: RefObject<any> | null = null\n\tprivate dragPreviewNode: any\n\tprivate dragPreviewOptionsInternal: DragPreviewOptions | null = null\n\tprivate dragPreviewUnsubscribe: Unsubscribe | undefined\n\n\tprivate lastConnectedHandlerId: Identifier | null = null\n\tprivate lastConnectedDragSource: any = null\n\tprivate lastConnectedDragSourceOptions: any = null\n\tprivate lastConnectedDragPreview: any = null\n\tprivate lastConnectedDragPreviewOptions: any = null\n\n\tprivate readonly backend: Backend\n\n\tpublic constructor(backend: Backend) {\n\t\tthis.backend = backend\n\t}\n\n\tpublic receiveHandlerId(newHandlerId: Identifier | null): void {\n\t\tif (this.handlerId === newHandlerId) {\n\t\t\treturn\n\t\t}\n\n\t\tthis.handlerId = newHandlerId\n\t\tthis.reconnect()\n\t}\n\n\tpublic get connectTarget(): any {\n\t\treturn this.dragSource\n\t}\n\n\tpublic get dragSourceOptions(): DragSourceOptions | null {\n\t\treturn this.dragSourceOptionsInternal\n\t}\n\tpublic set dragSourceOptions(options: DragSourceOptions | null) {\n\t\tthis.dragSourceOptionsInternal = options\n\t}\n\n\tpublic get dragPreviewOptions(): DragPreviewOptions | null {\n\t\treturn this.dragPreviewOptionsInternal\n\t}\n\n\tpublic set dragPreviewOptions(options: DragPreviewOptions | null) {\n\t\tthis.dragPreviewOptionsInternal = options\n\t}\n\n\tpublic reconnect(): void {\n\t\tconst didChange = this.reconnectDragSource()\n\t\tthis.reconnectDragPreview(didChange)\n\t}\n\n\tprivate reconnectDragSource(): boolean {\n\t\tconst dragSource = this.dragSource\n\t\t// if nothing has changed then don't resubscribe\n\t\tconst didChange =\n\t\t\tthis.didHandlerIdChange() ||\n\t\t\tthis.didConnectedDragSourceChange() ||\n\t\t\tthis.didDragSourceOptionsChange()\n\n\t\tif (didChange) {\n\t\t\tthis.disconnectDragSource()\n\t\t}\n\n\t\tif (!this.handlerId) {\n\t\t\treturn didChange\n\t\t}\n\t\tif (!dragSource) {\n\t\t\tthis.lastConnectedDragSource = dragSource\n\t\t\treturn didChange\n\t\t}\n\n\t\tif (didChange) {\n\t\t\tthis.lastConnectedHandlerId = this.handlerId\n\t\t\tthis.lastConnectedDragSource = dragSource\n\t\t\tthis.lastConnectedDragSourceOptions = this.dragSourceOptions\n\t\t\tthis.dragSourceUnsubscribe = this.backend.connectDragSource(\n\t\t\t\tthis.handlerId,\n\t\t\t\tdragSource,\n\t\t\t\tthis.dragSourceOptions,\n\t\t\t)\n\t\t}\n\t\treturn didChange\n\t}\n\n\tprivate reconnectDragPreview(forceDidChange = false): void {\n\t\tconst dragPreview = this.dragPreview\n\t\t// if nothing has changed then don't resubscribe\n\t\tconst didChange =\n\t\t\tforceDidChange ||\n\t\t\tthis.didHandlerIdChange() ||\n\t\t\tthis.didConnectedDragPreviewChange() ||\n\t\t\tthis.didDragPreviewOptionsChange()\n\n\t\tif (didChange) {\n\t\t\tthis.disconnectDragPreview()\n\t\t}\n\n\t\tif (!this.handlerId) {\n\t\t\treturn\n\t\t}\n\t\tif (!dragPreview) {\n\t\t\tthis.lastConnectedDragPreview = dragPreview\n\t\t\treturn\n\t\t}\n\n\t\tif (didChange) {\n\t\t\tthis.lastConnectedHandlerId = this.handlerId\n\t\t\tthis.lastConnectedDragPreview = dragPreview\n\t\t\tthis.lastConnectedDragPreviewOptions = this.dragPreviewOptions\n\t\t\tthis.dragPreviewUnsubscribe = this.backend.connectDragPreview(\n\t\t\t\tthis.handlerId,\n\t\t\t\tdragPreview,\n\t\t\t\tthis.dragPreviewOptions,\n\t\t\t)\n\t\t}\n\t}\n\n\tprivate didHandlerIdChange(): boolean {\n\t\treturn this.lastConnectedHandlerId !== this.handlerId\n\t}\n\n\tprivate didConnectedDragSourceChange(): boolean {\n\t\treturn this.lastConnectedDragSource !== this.dragSource\n\t}\n\n\tprivate didConnectedDragPreviewChange(): boolean {\n\t\treturn this.lastConnectedDragPreview !== this.dragPreview\n\t}\n\n\tprivate didDragSourceOptionsChange(): boolean {\n\t\treturn !shallowEqual(\n\t\t\tthis.lastConnectedDragSourceOptions,\n\t\t\tthis.dragSourceOptions,\n\t\t)\n\t}\n\n\tprivate didDragPreviewOptionsChange(): boolean {\n\t\treturn !shallowEqual(\n\t\t\tthis.lastConnectedDragPreviewOptions,\n\t\t\tthis.dragPreviewOptions,\n\t\t)\n\t}\n\n\tpublic disconnectDragSource() {\n\t\tif (this.dragSourceUnsubscribe) {\n\t\t\tthis.dragSourceUnsubscribe()\n\t\t\tthis.dragSourceUnsubscribe = undefined\n\t\t}\n\t}\n\n\tpublic disconnectDragPreview() {\n\t\tif (this.dragPreviewUnsubscribe) {\n\t\t\tthis.dragPreviewUnsubscribe()\n\t\t\tthis.dragPreviewUnsubscribe = undefined\n\t\t\tthis.dragPreviewNode = null\n\t\t\tthis.dragPreviewRef = null\n\t\t}\n\t}\n\n\tprivate get dragSource() {\n\t\treturn (\n\t\t\tthis.dragSourceNode || (this.dragSourceRef && this.dragSourceRef.current)\n\t\t)\n\t}\n\n\tprivate get dragPreview() {\n\t\treturn (\n\t\t\tthis.dragPreviewNode ||\n\t\t\t(this.dragPreviewRef && this.dragPreviewRef.current)\n\t\t)\n\t}\n\n\tprivate clearDragSource() {\n\t\tthis.dragSourceNode = null\n\t\tthis.dragSourceRef = null\n\t}\n\n\tprivate clearDragPreview() {\n\t\tthis.dragPreviewNode = null\n\t\tthis.dragPreviewRef = null\n\t}\n}\n","import { shallowEqual } from '@react-dnd/shallowequal'\nimport type { Backend, Identifier, Unsubscribe } from 'dnd-core'\nimport type { RefObject } from 'react'\n\nimport type { DropTargetOptions } from '../types/index.js'\nimport { isRef } from './isRef.js'\nimport type { Connector } from './SourceConnector.js'\nimport { wrapConnectorHooks } from './wrapConnectorHooks.js'\n\nexport class TargetConnector implements Connector {\n\tpublic hooks = wrapConnectorHooks({\n\t\tdropTarget: (node: any, options: DropTargetOptions) => {\n\t\t\tthis.clearDropTarget()\n\t\t\tthis.dropTargetOptions = options\n\t\t\tif (isRef(node)) {\n\t\t\t\tthis.dropTargetRef = node\n\t\t\t} else {\n\t\t\t\tthis.dropTargetNode = node\n\t\t\t}\n\t\t\tthis.reconnect()\n\t\t},\n\t})\n\n\tprivate handlerId: Identifier | null = null\n\t// The drop target may either be attached via ref or connect function\n\tprivate dropTargetRef: RefObject<any> | null = null\n\tprivate dropTargetNode: any\n\tprivate dropTargetOptionsInternal: DropTargetOptions | null = null\n\tprivate unsubscribeDropTarget: Unsubscribe | undefined\n\n\tprivate lastConnectedHandlerId: Identifier | null = null\n\tprivate lastConnectedDropTarget: any = null\n\tprivate lastConnectedDropTargetOptions: DropTargetOptions | null = null\n\tprivate readonly backend: Backend\n\n\tpublic constructor(backend: Backend) {\n\t\tthis.backend = backend\n\t}\n\n\tpublic get connectTarget(): any {\n\t\treturn this.dropTarget\n\t}\n\n\tpublic reconnect(): void {\n\t\t// if nothing has changed then don't resubscribe\n\t\tconst didChange =\n\t\t\tthis.didHandlerIdChange() ||\n\t\t\tthis.didDropTargetChange() ||\n\t\t\tthis.didOptionsChange()\n\n\t\tif (didChange) {\n\t\t\tthis.disconnectDropTarget()\n\t\t}\n\n\t\tconst dropTarget = this.dropTarget\n\t\tif (!this.handlerId) {\n\t\t\treturn\n\t\t}\n\t\tif (!dropTarget) {\n\t\t\tthis.lastConnectedDropTarget = dropTarget\n\t\t\treturn\n\t\t}\n\n\t\tif (didChange) {\n\t\t\tthis.lastConnectedHandlerId = this.handlerId\n\t\t\tthis.lastConnectedDropTarget = dropTarget\n\t\t\tthis.lastConnectedDropTargetOptions = this.dropTargetOptions\n\n\t\t\tthis.unsubscribeDropTarget = this.backend.connectDropTarget(\n\t\t\t\tthis.handlerId,\n\t\t\t\tdropTarget,\n\t\t\t\tthis.dropTargetOptions,\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic receiveHandlerId(newHandlerId: Identifier | null): void {\n\t\tif (newHandlerId === this.handlerId) {\n\t\t\treturn\n\t\t}\n\n\t\tthis.handlerId = newHandlerId\n\t\tthis.reconnect()\n\t}\n\n\tpublic get dropTargetOptions(): DropTargetOptions {\n\t\treturn this.dropTargetOptionsInternal\n\t}\n\tpublic set dropTargetOptions(options: DropTargetOptions) {\n\t\tthis.dropTargetOptionsInternal = options\n\t}\n\n\tprivate didHandlerIdChange(): boolean {\n\t\treturn this.lastConnectedHandlerId !== this.handlerId\n\t}\n\n\tprivate didDropTargetChange(): boolean {\n\t\treturn this.lastConnectedDropTarget !== this.dropTarget\n\t}\n\n\tprivate didOptionsChange(): boolean {\n\t\treturn !shallowEqual(\n\t\t\tthis.lastConnectedDropTargetOptions,\n\t\t\tthis.dropTargetOptions,\n\t\t)\n\t}\n\n\tpublic disconnectDropTarget() {\n\t\tif (this.unsubscribeDropTarget) {\n\t\t\tthis.unsubscribeDropTarget()\n\t\t\tthis.unsubscribeDropTarget = undefined\n\t\t}\n\t}\n\n\tprivate get dropTarget() {\n\t\treturn (\n\t\t\tthis.dropTargetNode || (this.dropTargetRef && this.dropTargetRef.current)\n\t\t)\n\t}\n\n\tprivate clearDropTarget() {\n\t\tthis.dropTargetRef = null\n\t\tthis.dropTargetNode = null\n\t}\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type { DragDropManager } from 'dnd-core'\nimport { useContext } from 'react'\n\nimport { DndContext } from '../core/index.js'\n\n/**\n * A hook to retrieve the DragDropManager from Context\n */\nexport function useDragDropManager(): DragDropManager {\n\tconst { dragDropManager } = useContext(DndContext)\n\tinvariant(dragDropManager != null, 'Expected drag drop context')\n\treturn dragDropManager as DragDropManager\n}\n","import { useMemo } from 'react'\n\nimport { DragSourceMonitorImpl } from '../../internals/index.js'\nimport type { DragSourceMonitor } from '../../types/index.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\n\nexport function useDragSourceMonitor<O, R>(): DragSourceMonitor<O, R> {\n\tconst manager = useDragDropManager()\n\treturn useMemo<DragSourceMonitor<O, R>>(\n\t\t() => new DragSourceMonitorImpl(manager),\n\t\t[manager],\n\t)\n}\n","import { useEffect, useMemo } from 'react'\n\nimport type { Connector } from '../../internals/index.js'\nimport type { DragSourceMonitor } from '../../types/index.js'\nimport type { DragSourceHookSpec } from '../types.js'\nimport { DragSourceImpl } from './DragSourceImpl.js'\n\nexport function useDragSource<O, R, P>(\n\tspec: DragSourceHookSpec<O, R, P>,\n\tmonitor: DragSourceMonitor<O, R>,\n\tconnector: Connector,\n) {\n\tconst handler = useMemo(\n\t\t() => new DragSourceImpl(spec, monitor, connector),\n\t\t[monitor, connector],\n\t)\n\tuseEffect(() => {\n\t\thandler.spec = spec\n\t}, [spec])\n\treturn handler\n}\n","import type { DragDropMonitor, DragSource, Identifier } from 'dnd-core'\n\nimport type { Connector } from '../../internals/index.js'\nimport type { DragSourceMonitor } from '../../types/index.js'\nimport type { DragObjectFactory, DragSourceHookSpec } from '../types.js'\n\nexport class DragSourceImpl<O, R, P> implements DragSource {\n\tpublic constructor(\n\t\tpublic spec: DragSourceHookSpec<O, R, P>,\n\t\tprivate monitor: DragSourceMonitor<O, R>,\n\t\tprivate connector: Connector,\n\t) {}\n\n\tpublic beginDrag() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\n\t\tlet result: O | null = null\n\t\tif (typeof spec.item === 'object') {\n\t\t\tresult = spec.item as O\n\t\t} else if (typeof spec.item === 'function') {\n\t\t\tresult = (spec.item as DragObjectFactory<O>)(monitor)\n\t\t} else {\n\t\t\tresult = {} as O\n\t\t}\n\t\treturn result ?? null\n\t}\n\n\tpublic canDrag() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\tif (typeof spec.canDrag === 'boolean') {\n\t\t\treturn spec.canDrag\n\t\t} else if (typeof spec.canDrag === 'function') {\n\t\t\treturn spec.canDrag(monitor)\n\t\t} else {\n\t\t\treturn true\n\t\t}\n\t}\n\n\tpublic isDragging(globalMonitor: DragDropMonitor, target: Identifier) {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\tconst { isDragging } = spec\n\t\treturn isDragging\n\t\t\t? isDragging(monitor)\n\t\t\t: target === globalMonitor.getSourceId()\n\t}\n\n\tpublic endDrag() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\tconst connector = this.connector\n\t\tconst { end } = spec\n\t\tif (end) {\n\t\t\tend(monitor.getItem(), monitor)\n\t\t}\n\t\tconnector.reconnect()\n\t}\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type { Identifier } from 'dnd-core'\nimport { useMemo } from 'react'\n\nimport type { DragSourceHookSpec } from '../types.js'\n\nexport function useDragType(\n\tspec: DragSourceHookSpec<any, any, any>,\n): Identifier {\n\treturn useMemo(() => {\n\t\tconst result: Identifier = spec.type\n\t\tinvariant(result != null, 'spec.type must be defined')\n\t\treturn result\n\t}, [spec])\n}\n","import type { SourceConnector } from '../../internals/index.js'\nimport { registerSource } from '../../internals/index.js'\nimport type { DragSourceMonitor } from '../../types/index.js'\nimport type { DragSourceHookSpec } from '../types.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect.js'\nimport { useDragSource } from './useDragSource.js'\nimport { useDragType } from './useDragType.js'\n\nexport function useRegisteredDragSource<O, R, P>(\n\tspec: DragSourceHookSpec<O, R, P>,\n\tmonitor: DragSourceMonitor<O, R>,\n\tconnector: SourceConnector,\n): void {\n\tconst manager = useDragDropManager()\n\tconst handler = useDragSource(spec, monitor, connector)\n\tconst itemType = useDragType(spec)\n\n\tuseIsomorphicLayoutEffect(\n\t\tfunction registerDragSource() {\n\t\t\tif (itemType != null) {\n\t\t\t\tconst [handlerId, unregister] = registerSource(\n\t\t\t\t\titemType,\n\t\t\t\t\thandler,\n\t\t\t\t\tmanager,\n\t\t\t\t)\n\t\t\t\tmonitor.receiveHandlerId(handlerId)\n\t\t\t\tconnector.receiveHandlerId(handlerId)\n\t\t\t\treturn unregister\n\t\t\t}\n\t\t\treturn\n\t\t},\n\t\t[manager, monitor, connector, handler, itemType],\n\t)\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type {\n\tConnectDragPreview,\n\tConnectDragSource,\n} from '../../types/index.js'\nimport type { DragSourceHookSpec, FactoryOrInstance } from '../types.js'\nimport { useCollectedProps } from '../useCollectedProps.js'\nimport { useOptionalFactory } from '../useOptionalFactory.js'\nimport { useConnectDragPreview, useConnectDragSource } from './connectors.js'\nimport { useDragSourceConnector } from './useDragSourceConnector.js'\nimport { useDragSourceMonitor } from './useDragSourceMonitor.js'\nimport { useRegisteredDragSource } from './useRegisteredDragSource.js'\n\n/**\n * useDragSource hook\n * @param sourceSpec The drag source specification (object or function, function preferred)\n * @param deps The memoization deps array to use when evaluating spec changes\n */\nexport function useDrag<\n\tDragObject = unknown,\n\tDropResult = unknown,\n\tCollectedProps = unknown,\n>(\n\tspecArg: FactoryOrInstance<\n\t\tDragSourceHookSpec<DragObject, DropResult, CollectedProps>\n\t>,\n\tdeps?: unknown[],\n): [CollectedProps, ConnectDragSource, ConnectDragPreview] {\n\tconst spec = useOptionalFactory(specArg, deps)\n\tinvariant(\n\t\t!(spec as any).begin,\n\t\t`useDrag::spec.begin was deprecated in v14. Replace spec.begin() with spec.item(). (see more here - https://react-dnd.github.io/react-dnd/docs/api/use-drag)`,\n\t)\n\n\tconst monitor = useDragSourceMonitor<DragObject, DropResult>()\n\tconst connector = useDragSourceConnector(spec.options, spec.previewOptions)\n\tuseRegisteredDragSource(spec, monitor, connector)\n\n\treturn [\n\t\tuseCollectedProps(spec.collect, monitor, connector),\n\t\tuseConnectDragSource(connector),\n\t\tuseConnectDragPreview(connector),\n\t]\n}\n","import { useEffect } from 'react'\n\nimport type { DragLayerMonitor } from '../types/index.js'\nimport { useCollector } from './useCollector.js'\nimport { useDragDropManager } from './useDragDropManager.js'\n\n/**\n * useDragLayer Hook\n * @param collector The property collector\n */\nexport function useDragLayer<CollectedProps, DragObject = any>(\n\tcollect: (monitor: DragLayerMonitor<DragObject>) => CollectedProps,\n): CollectedProps {\n\tconst dragDropManager = useDragDropManager()\n\tconst monitor = dragDropManager.getMonitor()\n\tconst [collected, updateCollected] = useCollector(monitor, collect)\n\n\tuseEffect(() => monitor.subscribeToOffsetChange(updateCollected))\n\tuseEffect(() => monitor.subscribeToStateChange(updateCollected))\n\treturn collected\n}\n","import { useMemo } from 'react'\n\nimport type { TargetConnector } from '../../internals/index.js'\n\nexport function useConnectDropTarget(connector: TargetConnector) {\n\treturn useMemo(() => connector.hooks.dropTarget(), [connector])\n}\n","import { useMemo } from 'react'\n\nimport { TargetConnector } from '../../internals/index.js'\nimport type { DropTargetOptions } from '../../types/index.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect.js'\n\nexport function useDropTargetConnector(\n\toptions: DropTargetOptions,\n): TargetConnector {\n\tconst manager = useDragDropManager()\n\tconst connector = useMemo(\n\t\t() => new TargetConnector(manager.getBackend()),\n\t\t[manager],\n\t)\n\tuseIsomorphicLayoutEffect(() => {\n\t\tconnector.dropTargetOptions = options || null\n\t\tconnector.reconnect()\n\t\treturn () => connector.disconnectDropTarget()\n\t}, [options])\n\treturn connector\n}\n","import { useMemo } from 'react'\n\nimport { DropTargetMonitorImpl } from '../../internals/index.js'\nimport type { DropTargetMonitor } from '../../types/index.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\n\nexport function useDropTargetMonitor<O, R>(): DropTargetMonitor<O, R> {\n\tconst manager = useDragDropManager()\n\treturn useMemo(() => new DropTargetMonitorImpl(manager), [manager])\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type { Identifier } from 'dnd-core'\nimport { useMemo } from 'react'\n\nimport type { DropTargetHookSpec } from '../types.js'\n\n/**\n * Internal utility hook to get an array-version of spec.accept.\n * The main utility here is that we aren't creating a new array on every render if a non-array spec.accept is passed in.\n * @param spec\n */\nexport function useAccept<O, R, P>(\n\tspec: DropTargetHookSpec<O, R, P>,\n): Identifier[] {\n\tconst { accept } = spec\n\treturn useMemo(() => {\n\t\tinvariant(spec.accept != null, 'accept must be defined')\n\t\treturn Array.isArray(accept) ? accept : [accept]\n\t}, [accept])\n}\n","import { useEffect, useMemo } from 'react'\n\nimport type { DropTargetMonitor } from '../../types/index.js'\nimport type { DropTargetHookSpec } from '../types.js'\nimport { DropTargetImpl } from './DropTargetImpl.js'\n\nexport function useDropTarget<O, R, P>(\n\tspec: DropTargetHookSpec<O, R, P>,\n\tmonitor: DropTargetMonitor<O, R>,\n) {\n\tconst dropTarget = useMemo(() => new DropTargetImpl(spec, monitor), [monitor])\n\tuseEffect(() => {\n\t\tdropTarget.spec = spec\n\t}, [spec])\n\treturn dropTarget\n}\n","import type { DropTarget } from 'dnd-core'\n\nimport type { DropTargetMonitor } from '../../types/index.js'\nimport type { DropTargetHookSpec } from '../types.js'\n\nexport class DropTargetImpl<O, R, P> implements DropTarget {\n\tpublic constructor(\n\t\tpublic spec: DropTargetHookSpec<O, R, P>,\n\t\tprivate monitor: DropTargetMonitor<O, R>,\n\t) {}\n\n\tpublic canDrop() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\treturn spec.canDrop ? spec.canDrop(monitor.getItem(), monitor) : true\n\t}\n\n\tpublic hover() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\tif (spec.hover) {\n\t\t\tspec.hover(monitor.getItem(), monitor)\n\t\t}\n\t}\n\n\tpublic drop() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\tif (spec.drop) {\n\t\t\treturn spec.drop(monitor.getItem(), monitor)\n\t\t}\n\t\treturn\n\t}\n}\n","import type { TargetConnector } from '../../internals/index.js'\nimport { registerTarget } from '../../internals/index.js'\nimport type { DropTargetMonitor } from '../../types/index.js'\nimport type { DropTargetHookSpec } from '../types.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect.js'\nimport { useAccept } from './useAccept.js'\nimport { useDropTarget } from './useDropTarget.js'\n\nexport function useRegisteredDropTarget<O, R, P>(\n\tspec: DropTargetHookSpec<O, R, P>,\n\tmonitor: DropTargetMonitor<O, R>,\n\tconnector: TargetConnector,\n): void {\n\tconst manager = useDragDropManager()\n\tconst dropTarget = useDropTarget(spec, monitor)\n\tconst accept = useAccept(spec)\n\n\tuseIsomorphicLayoutEffect(\n\t\tfunction registerDropTarget() {\n\t\t\tconst [handlerId, unregister] = registerTarget(\n\t\t\t\taccept,\n\t\t\t\tdropTarget,\n\t\t\t\tmanager,\n\t\t\t)\n\t\t\tmonitor.receiveHandlerId(handlerId)\n\t\t\tconnector.receiveHandlerId(handlerId)\n\t\t\treturn unregister\n\t\t},\n\t\t[\n\t\t\tmanager,\n\t\t\tmonitor,\n\t\t\tdropTarget,\n\t\t\tconnector,\n\t\t\taccept.map((a) => a.toString()).join('|'),\n\t\t],\n\t)\n}\n","import type { ConnectDropTarget } from '../../types/index.js'\nimport type { DropTargetHookSpec, FactoryOrInstance } from '../types.js'\nimport { useCollectedProps } from '../useCollectedProps.js'\nimport { useOptionalFactory } from '../useOptionalFactory.js'\nimport { useConnectDropTarget } from './connectors.js'\nimport { useDropTargetConnector } from './useDropTargetConnector.js'\nimport { useDropTargetMonitor } from './useDropTargetMonitor.js'\nimport { useRegisteredDropTarget } from './useRegisteredDropTarget.js'\n\n/**\n * useDropTarget Hook\n * @param spec The drop target specification (object or function, function preferred)\n * @param deps The memoization deps array to use when evaluating spec changes\n */\nexport function useDrop<\n\tDragObject = unknown,\n\tDropResult = unknown,\n\tCollectedProps = unknown,\n>(\n\tspecArg: FactoryOrInstance<\n\t\tDropTargetHookSpec<DragObject, DropResult, CollectedProps>\n\t>,\n\tdeps?: unknown[],\n): [CollectedProps, ConnectDropTarget] {\n\tconst spec = useOptionalFactory(specArg, deps)\n\tconst monitor = useDropTargetMonitor<DragObject, DropResult>()\n\tconst connector = useDropTargetConnector(spec.options)\n\tuseRegisteredDropTarget(spec, monitor, connector)\n\n\treturn [\n\t\tuseCollectedProps(spec.collect, monitor, connector),\n\t\tuseConnectDropTarget(connector),\n\t]\n}\n","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }\n\nfunction _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); } }\n\nfunction _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"get\"); return _classApplyDescriptorGet(receiver, descriptor); }\n\nfunction _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }\n\nfunction _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"set\"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }\n\nfunction _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError(\"attempted to \" + action + \" private field on non-instance\"); } return privateMap.get(receiver); }\n\nfunction _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError(\"attempted to set read only private field\"); } descriptor.value = value; } }\n\nvar _previews = /*#__PURE__*/new WeakMap();\n\nexport class PreviewListImpl {\n  /*private*/\n  constructor() {\n    _classPrivateFieldInitSpec(this, _previews, {\n      writable: true,\n      value: void 0\n    });\n\n    _defineProperty(this, \"register\", preview => {\n      _classPrivateFieldGet(this, _previews).push(preview);\n    });\n\n    _defineProperty(this, \"unregister\", preview => {\n      let index;\n\n      while ((index = _classPrivateFieldGet(this, _previews).indexOf(preview)) !== -1) {\n        _classPrivateFieldGet(this, _previews).splice(index, 1);\n      }\n    });\n\n    _defineProperty(this, \"backendChanged\", backend => {\n      for (const preview of _classPrivateFieldGet(this, _previews)) {\n        preview.backendChanged(backend);\n      }\n    });\n\n    _classPrivateFieldSet(this, _previews, []);\n  }\n\n}","function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }\n\nfunction _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); } }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"get\"); return _classApplyDescriptorGet(receiver, descriptor); }\n\nfunction _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }\n\nfunction _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"set\"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }\n\nfunction _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError(\"attempted to \" + action + \" private field on non-instance\"); } return privateMap.get(receiver); }\n\nfunction _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError(\"attempted to set read only private field\"); } descriptor.value = value; } }\n\nimport { PreviewListImpl } from './PreviewListImpl';\n\nvar _current = /*#__PURE__*/new WeakMap();\n\nvar _previews = /*#__PURE__*/new WeakMap();\n\nvar _backends = /*#__PURE__*/new WeakMap();\n\nvar _backendsList = /*#__PURE__*/new WeakMap();\n\nvar _nodes = /*#__PURE__*/new WeakMap();\n\nvar _createBackend = /*#__PURE__*/new WeakMap();\n\nvar _addEventListeners = /*#__PURE__*/new WeakMap();\n\nvar _removeEventListeners = /*#__PURE__*/new WeakMap();\n\nvar _backendSwitcher = /*#__PURE__*/new WeakMap();\n\nvar _callBackend = /*#__PURE__*/new WeakMap();\n\nvar _connectBackend = /*#__PURE__*/new WeakMap();\n\nexport class MultiBackendImpl {\n  /*private*/\n\n  /*private*/\n\n  /*private*/\n\n  /*private*/\n\n  /*private*/\n  constructor(_manager, _context, _options) {\n    _classPrivateFieldInitSpec(this, _current, {\n      writable: true,\n      value: void 0\n    });\n\n    _classPrivateFieldInitSpec(this, _previews, {\n      writable: true,\n      value: void 0\n    });\n\n    _classPrivateFieldInitSpec(this, _backends, {\n      writable: true,\n      value: void 0\n    });\n\n    _classPrivateFieldInitSpec(this, _backendsList, {\n      writable: true,\n      value: void 0\n    });\n\n    _classPrivateFieldInitSpec(this, _nodes, {\n      writable: true,\n      value: void 0\n    });\n\n    _classPrivateFieldInitSpec(this, _createBackend, {\n      writable: true,\n      value: (manager, context, backend) => {\n        var _backend$preview, _backend$skipDispatch;\n\n        if (!backend.backend) {\n          throw new Error(\"You must specify a 'backend' property in your Backend entry: \".concat(JSON.stringify(backend)));\n        }\n\n        const instance = backend.backend(manager, context, backend.options);\n        let id = backend.id; // Try to infer an `id` if one doesn't exist\n\n        const inferName = !backend.id && instance && instance.constructor;\n\n        if (inferName) {\n          id = instance.constructor.name;\n        }\n\n        if (!id) {\n          throw new Error(\"You must specify an 'id' property in your Backend entry: \".concat(JSON.stringify(backend), \"\\n        see this guide: https://github.com/louisbrunner/dnd-multi-backend/tree/master/packages/react-dnd-multi-backend#migrating-from-5xx\"));\n        } else if (inferName) {\n          console.warn( // eslint-disable-line no-console\n          \"Deprecation notice: You are using a pipeline which doesn't include backends' 'id'.\\n        This might be unsupported in the future, please specify 'id' explicitely for every backend.\");\n        }\n\n        if (_classPrivateFieldGet(this, _backends)[id]) {\n          throw new Error(\"You must specify a unique 'id' property in your Backend entry:\\n        \".concat(JSON.stringify(backend), \" (conflicts with: \").concat(JSON.stringify(_classPrivateFieldGet(this, _backends)[id]), \")\"));\n        }\n\n        return {\n          id,\n          instance,\n          preview: (_backend$preview = backend.preview) !== null && _backend$preview !== void 0 ? _backend$preview : false,\n          transition: backend.transition,\n          skipDispatchOnTransition: (_backend$skipDispatch = backend.skipDispatchOnTransition) !== null && _backend$skipDispatch !== void 0 ? _backend$skipDispatch : false\n        };\n      }\n    });\n\n    _defineProperty(this, \"setup\", () => {\n      if (typeof window === 'undefined') {\n        return;\n      }\n\n      if (MultiBackendImpl.isSetUp) {\n        throw new Error('Cannot have two MultiBackends at the same time.');\n      }\n\n      MultiBackendImpl.isSetUp = true;\n\n      _classPrivateFieldGet(this, _addEventListeners).call(this, window);\n\n      _classPrivateFieldGet(this, _backends)[_classPrivateFieldGet(this, _current)].instance.setup();\n    });\n\n    _defineProperty(this, \"teardown\", () => {\n      if (typeof window === 'undefined') {\n        return;\n      }\n\n      MultiBackendImpl.isSetUp = false;\n\n      _classPrivateFieldGet(this, _removeEventListeners).call(this, window);\n\n      _classPrivateFieldGet(this, _backends)[_classPrivateFieldGet(this, _current)].instance.teardown();\n    });\n\n    _defineProperty(this, \"connectDragSource\", (sourceId, node, options) => {\n      return _classPrivateFieldGet(this, _connectBackend).call(this, 'connectDragSource', sourceId, node, options);\n    });\n\n    _defineProperty(this, \"connectDragPreview\", (sourceId, node, options) => {\n      return _classPrivateFieldGet(this, _connectBackend).call(this, 'connectDragPreview', sourceId, node, options);\n    });\n\n    _defineProperty(this, \"connectDropTarget\", (sourceId, node, options) => {\n      return _classPrivateFieldGet(this, _connectBackend).call(this, 'connectDropTarget', sourceId, node, options);\n    });\n\n    _defineProperty(this, \"profile\", () => {\n      return _classPrivateFieldGet(this, _backends)[_classPrivateFieldGet(this, _current)].instance.profile();\n    });\n\n    _defineProperty(this, \"previewEnabled\", () => {\n      return _classPrivateFieldGet(this, _backends)[_classPrivateFieldGet(this, _current)].preview;\n    });\n\n    _defineProperty(this, \"previewsList\", () => {\n      return _classPrivateFieldGet(this, _previews);\n    });\n\n    _defineProperty(this, \"backendsList\", () => {\n      return _classPrivateFieldGet(this, _backendsList);\n    });\n\n    _classPrivateFieldInitSpec(this, _addEventListeners, {\n      writable: true,\n      value: target => {\n        _classPrivateFieldGet(this, _backendsList).forEach(backend => {\n          if (backend.transition) {\n            target.addEventListener(backend.transition.event, _classPrivateFieldGet(this, _backendSwitcher));\n          }\n        });\n      }\n    });\n\n    _classPrivateFieldInitSpec(this, _removeEventListeners, {\n      writable: true,\n      value: target => {\n        _classPrivateFieldGet(this, _backendsList).forEach(backend => {\n          if (backend.transition) {\n            target.removeEventListener(backend.transition.event, _classPrivateFieldGet(this, _backendSwitcher));\n          }\n        });\n      }\n    });\n\n    _classPrivateFieldInitSpec(this, _backendSwitcher, {\n      writable: true,\n      value: event => {\n        const oldBackend = _classPrivateFieldGet(this, _current);\n\n        _classPrivateFieldGet(this, _backendsList).some(backend => {\n          if (backend.id !== _classPrivateFieldGet(this, _current) && backend.transition && backend.transition.check(event)) {\n            _classPrivateFieldSet(this, _current, backend.id);\n\n            return true;\n          }\n\n          return false;\n        });\n\n        if (_classPrivateFieldGet(this, _current) !== oldBackend) {\n          var _event$target;\n\n          _classPrivateFieldGet(this, _backends)[oldBackend].instance.teardown();\n\n          Object.keys(_classPrivateFieldGet(this, _nodes)).forEach(id => {\n            const node = _classPrivateFieldGet(this, _nodes)[id];\n\n            node.unsubscribe();\n            node.unsubscribe = _classPrivateFieldGet(this, _callBackend).call(this, node.func, ...node.args);\n          });\n\n          _classPrivateFieldGet(this, _previews).backendChanged(this);\n\n          const newBackend = _classPrivateFieldGet(this, _backends)[_classPrivateFieldGet(this, _current)];\n\n          newBackend.instance.setup();\n\n          if (newBackend.skipDispatchOnTransition) {\n            return;\n          }\n\n          const Class = event.constructor;\n          const newEvent = new Class(event.type, event);\n          (_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.dispatchEvent(newEvent);\n        }\n      }\n    });\n\n    _classPrivateFieldInitSpec(this, _callBackend, {\n      writable: true,\n      value: (func, sourceId, node, options) => {\n        return _classPrivateFieldGet(this, _backends)[_classPrivateFieldGet(this, _current)].instance[func](sourceId, node, options);\n      }\n    });\n\n    _classPrivateFieldInitSpec(this, _connectBackend, {\n      writable: true,\n      value: (func, sourceId, node, options) => {\n        const nodeId = \"\".concat(func, \"_\").concat(sourceId);\n\n        const unsubscribe = _classPrivateFieldGet(this, _callBackend).call(this, func, sourceId, node, options);\n\n        _classPrivateFieldGet(this, _nodes)[nodeId] = {\n          func,\n          args: [sourceId, node, options],\n          unsubscribe\n        };\n        return () => {\n          _classPrivateFieldGet(this, _nodes)[nodeId].unsubscribe();\n\n          delete _classPrivateFieldGet(this, _nodes)[nodeId];\n        };\n      }\n    });\n\n    if (!_options || !_options.backends || _options.backends.length < 1) {\n      throw new Error(\"You must specify at least one Backend, if you are coming from 2.x.x (or don't understand this error)\\n        see this guide: https://github.com/louisbrunner/dnd-multi-backend/tree/master/packages/react-dnd-multi-backend#migrating-from-2xx\");\n    }\n\n    _classPrivateFieldSet(this, _previews, new PreviewListImpl());\n\n    _classPrivateFieldSet(this, _backends, {});\n\n    _classPrivateFieldSet(this, _backendsList, []);\n\n    _options.backends.forEach(backend => {\n      const backendRecord = _classPrivateFieldGet(this, _createBackend).call(this, _manager, _context, backend);\n\n      _classPrivateFieldGet(this, _backends)[backendRecord.id] = backendRecord;\n\n      _classPrivateFieldGet(this, _backendsList).push(backendRecord);\n    });\n\n    _classPrivateFieldSet(this, _current, _classPrivateFieldGet(this, _backendsList)[0].id);\n\n    _classPrivateFieldSet(this, _nodes, {});\n  }\n\n}\n\n_defineProperty(MultiBackendImpl, \"isSetUp\", false);","import { MultiBackendImpl } from './MultiBackendImpl';\nexport const MultiFactory = (manager, context, options) => {\n  return new MultiBackendImpl(manager, context, options);\n};","export const createTransition = (event, check) => {\n  return {\n    event,\n    check\n  };\n};","import { createTransition } from './createTransition';\nexport const TouchTransition = createTransition('touchstart', rawEvent => {\n  const event = rawEvent;\n  return event.touches !== null && event.touches !== undefined;\n});\nexport const HTML5DragTransition = createTransition('dragstart', event => {\n  return event.type.indexOf('drag') !== -1 || event.type.indexOf('drop') !== -1;\n});\nexport const MouseTransition = createTransition('mousedown', event => {\n  return event.type.indexOf('touch') === -1 && event.type.indexOf('mouse') !== -1;\n});\nexport const PointerTransition = createTransition('pointerdown', rawEvent => {\n  const event = rawEvent;\n  return event.pointerType == 'mouse';\n});","export interface EventName {\n\tstart?: 'mousedown' | 'touchstart'\n\tmove?: 'mousemove' | 'touchmove'\n\tend?: 'mouseup' | 'touchend'\n\tcontextmenu?: 'contextmenu'\n\tkeydown?: 'keydown'\n}\n\nexport interface TouchBackendOptions {\n\tdelay: number\n\tdelayTouchStart: number\n\tenableTouchEvents: boolean\n\tenableKeyboardEvents: boolean\n\tenableMouseEvents: boolean\n\tignoreContextMenu: boolean\n\tenableHoverOutsideTarget: boolean\n\tdelayMouseStart: number\n\ttouchSlop: number\n\tscrollAngleRanges?: AngleRange[] | undefined\n\trootElement: Node | undefined\n\n\tgetDropTargetElementsAtPoint?:\n\t\t| undefined\n\t\t| ((x: number, y: number, dropTargets: HTMLElement[]) => HTMLElement[])\n}\n\nexport interface AngleRange {\n\tstart: number\n\tend: number\n}\n\nexport enum ListenerType {\n\tmouse = 'mouse',\n\ttouch = 'touch',\n\tkeyboard = 'keyboard',\n}\n\nexport interface TouchBackendContext {\n\twindow?: Window\n\tdocument?: Document\n}\n","import type {\n\tAngleRange,\n\tTouchBackendContext,\n\tTouchBackendOptions,\n} from './interfaces.js'\n\nexport class OptionsReader implements TouchBackendOptions {\n\tpublic constructor(\n\t\tprivate args: Partial<TouchBackendOptions>,\n\t\tprivate context: TouchBackendContext,\n\t) {}\n\n\tpublic get delay(): number {\n\t\treturn this.args.delay ?? 0\n\t}\n\n\tpublic get scrollAngleRanges(): AngleRange[] | undefined {\n\t\treturn this.args.scrollAngleRanges\n\t}\n\n\tpublic get getDropTargetElementsAtPoint():\n\t\t| ((x: number, y: number, elements: HTMLElement[]) => HTMLElement[])\n\t\t| undefined {\n\t\treturn this.args.getDropTargetElementsAtPoint\n\t}\n\n\tpublic get ignoreContextMenu(): boolean {\n\t\treturn this.args.ignoreContextMenu ?? false\n\t}\n\n\tpublic get enableHoverOutsideTarget(): boolean {\n\t\treturn this.args.enableHoverOutsideTarget ?? false\n\t}\n\n\tpublic get enableKeyboardEvents(): boolean {\n\t\treturn this.args.enableKeyboardEvents ?? false\n\t}\n\n\tpublic get enableMouseEvents(): boolean {\n\t\treturn this.args.enableMouseEvents ?? false\n\t}\n\n\tpublic get enableTouchEvents(): boolean {\n\t\treturn this.args.enableTouchEvents ?? true\n\t}\n\n\tpublic get touchSlop(): number {\n\t\treturn this.args.touchSlop || 0\n\t}\n\n\tpublic get delayTouchStart(): number {\n\t\treturn this.args?.delayTouchStart ?? this.args?.delay ?? 0\n\t}\n\n\tpublic get delayMouseStart(): number {\n\t\treturn this.args?.delayMouseStart ?? this.args?.delay ?? 0\n\t}\n\n\tpublic get window(): Window | undefined {\n\t\tif (this.context && this.context.window) {\n\t\t\treturn this.context.window\n\t\t} else if (typeof window !== 'undefined') {\n\t\t\treturn window\n\t\t}\n\t\treturn undefined\n\t}\n\n\tpublic get document(): Document | undefined {\n\t\tif (this.context?.document) {\n\t\t\treturn this.context.document\n\t\t}\n\n\t\tif (this.window) {\n\t\t\treturn this.window.document\n\t\t}\n\n\t\treturn undefined\n\t}\n\n\tpublic get rootElement(): Node | undefined {\n\t\treturn this.args?.rootElement || (this.document as any as Node)\n\t}\n}\n","import type { AngleRange } from '../interfaces.js'\n\nexport function distance(\n\tx1: number,\n\ty1: number,\n\tx2: number,\n\ty2: number,\n): number {\n\treturn Math.sqrt(\n\t\tMath.pow(Math.abs(x2 - x1), 2) + Math.pow(Math.abs(y2 - y1), 2),\n\t)\n}\n\nexport function inAngleRanges(\n\tx1: number,\n\ty1: number,\n\tx2: number,\n\ty2: number,\n\tangleRanges: AngleRange[] | undefined,\n): boolean {\n\tif (!angleRanges) {\n\t\treturn false\n\t}\n\n\tconst angle = (Math.atan2(y2 - y1, x2 - x1) * 180) / Math.PI + 180\n\n\tfor (let i = 0; i < angleRanges.length; ++i) {\n\t\tconst ar = angleRanges[i]\n\t\tif (\n\t\t\tar &&\n\t\t\t(ar.start == null || angle >= ar.start) &&\n\t\t\t(ar.end == null || angle <= ar.end)\n\t\t) {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n","// Used for MouseEvent.buttons (note the s on the end).\nconst MouseButtons = {\n\tLeft: 1,\n\tRight: 2,\n\tCenter: 4,\n}\n\n// Used for e.button (note the lack of an s on the end).\nconst MouseButton = {\n\tLeft: 0,\n\tCenter: 1,\n\tRight: 2,\n}\n\n/**\n * Only touch events and mouse events where the left button is pressed should initiate a drag.\n * @param {MouseEvent | TouchEvent} e The event\n */\nexport function eventShouldStartDrag(e: MouseEvent): boolean {\n\t// For touch events, button will be undefined. If e.button is defined,\n\t// then it should be MouseButton.Left.\n\treturn e.button === undefined || e.button === MouseButton.Left\n}\n\n/**\n * Only touch events and mouse events where the left mouse button is no longer held should end a drag.\n * It's possible the user mouse downs with the left mouse button, then mouse down and ups with the right mouse button.\n * We don't want releasing the right mouse button to end the drag.\n * @param {MouseEvent | TouchEvent} e The event\n */\nexport function eventShouldEndDrag(e: MouseEvent): boolean {\n\t// Touch events will have buttons be undefined, while mouse events will have e.buttons's left button\n\t// bit field unset if the left mouse button has been released\n\treturn e.buttons === undefined || (e.buttons & MouseButtons.Left) === 0\n}\n\nexport function isTouchEvent(\n\te: Touch | TouchEvent | MouseEvent,\n): e is TouchEvent {\n\treturn !!(e as TouchEvent).targetTouches\n}\n","import type { XYCoord } from 'dnd-core'\n\nimport { isTouchEvent } from './predicates.js'\n\nconst ELEMENT_NODE = 1\n\nexport function getNodeClientOffset(node: Element): XYCoord | undefined {\n\tconst el = node.nodeType === ELEMENT_NODE ? node : node.parentElement\n\tif (!el) {\n\t\treturn undefined\n\t}\n\tconst { top, left } = el.getBoundingClientRect()\n\treturn { x: left, y: top }\n}\n\nexport function getEventClientTouchOffset(\n\te: TouchEvent,\n\tlastTargetTouchFallback?: Touch,\n): XYCoord | undefined {\n\tif (e.targetTouches.length === 1) {\n\t\treturn getEventClientOffset(e.targetTouches[0] as Touch)\n\t} else if (lastTargetTouchFallback && e.touches.length === 1) {\n\t\tif ((e.touches[0] as Touch).target === lastTargetTouchFallback.target) {\n\t\t\treturn getEventClientOffset(e.touches[0] as Touch)\n\t\t}\n\t}\n\treturn\n}\n\nexport function getEventClientOffset(\n\te: TouchEvent | Touch | MouseEvent,\n\tlastTargetTouchFallback?: Touch,\n): XYCoord | undefined {\n\tif (isTouchEvent(e)) {\n\t\treturn getEventClientTouchOffset(e, lastTargetTouchFallback)\n\t} else {\n\t\treturn {\n\t\t\tx: e.clientX,\n\t\t\ty: e.clientY,\n\t\t}\n\t}\n}\n","export const supportsPassive = ((): boolean => {\n\t// simular to jQuery's test\n\tlet supported = false\n\ttry {\n\t\taddEventListener(\n\t\t\t'test',\n\t\t\t() => {\n\t\t\t\t// do nothing\n\t\t\t},\n\t\t\tObject.defineProperty({}, 'passive', {\n\t\t\t\tget() {\n\t\t\t\t\tsupported = true\n\t\t\t\t\treturn true\n\t\t\t\t},\n\t\t\t}),\n\t\t)\n\t} catch (e) {\n\t\t// do nothing\n\t}\n\treturn supported\n})()\n","import { invariant } from '@react-dnd/invariant'\nimport type {\n\tBackend,\n\tDragDropActions,\n\tDragDropManager,\n\tDragDropMonitor,\n\tIdentifier,\n\tUnsubscribe,\n\tXYCoord,\n} from 'dnd-core'\n\nimport type {\n\tEventName,\n\tTouchBackendContext,\n\tTouchBackendOptions,\n} from './interfaces.js'\nimport { ListenerType } from './interfaces.js'\nimport { OptionsReader } from './OptionsReader.js'\nimport { distance, inAngleRanges } from './utils/math.js'\nimport { getEventClientOffset, getNodeClientOffset } from './utils/offsets.js'\nimport {\n\teventShouldEndDrag,\n\teventShouldStartDrag,\n\tisTouchEvent,\n} from './utils/predicates.js'\nimport { supportsPassive } from './utils/supportsPassive.js'\n\nconst eventNames: Record<ListenerType, EventName> = {\n\t[ListenerType.mouse]: {\n\t\tstart: 'mousedown',\n\t\tmove: 'mousemove',\n\t\tend: 'mouseup',\n\t\tcontextmenu: 'contextmenu',\n\t},\n\t[ListenerType.touch]: {\n\t\tstart: 'touchstart',\n\t\tmove: 'touchmove',\n\t\tend: 'touchend',\n\t},\n\t[ListenerType.keyboard]: {\n\t\tkeydown: 'keydown',\n\t},\n}\n\nexport class TouchBackendImpl implements Backend {\n\tprivate options: OptionsReader\n\n\t// React-DnD Dependencies\n\tprivate actions: DragDropActions\n\tprivate monitor: DragDropMonitor\n\n\t// Internal State\n\tprivate static isSetUp: boolean\n\tpublic sourceNodes: Map<Identifier, HTMLElement>\n\tpublic sourcePreviewNodes: Map<string, HTMLElement>\n\tpublic sourcePreviewNodeOptions: Map<string, any>\n\tpublic targetNodes: Map<string, HTMLElement>\n\tprivate _mouseClientOffset: Partial<XYCoord>\n\tprivate _isScrolling: boolean\n\tprivate listenerTypes: ListenerType[]\n\tprivate moveStartSourceIds: string[] | undefined\n\tprivate waitingForDelay: boolean | undefined\n\tprivate timeout: ReturnType<typeof setTimeout> | undefined\n\tprivate dragOverTargetIds: string[] | undefined\n\tprivate draggedSourceNode: HTMLElement | undefined\n\tprivate draggedSourceNodeRemovalObserver: MutationObserver | undefined\n\n\t// Patch for iOS 13, discussion over #1585\n\tprivate lastTargetTouchFallback: Touch | undefined\n\n\tpublic constructor(\n\t\tmanager: DragDropManager,\n\t\tcontext: TouchBackendContext,\n\t\toptions: Partial<TouchBackendOptions>,\n\t) {\n\t\tthis.options = new OptionsReader(options, context)\n\t\tthis.actions = manager.getActions()\n\t\tthis.monitor = manager.getMonitor()\n\n\t\tthis.sourceNodes = new Map()\n\t\tthis.sourcePreviewNodes = new Map()\n\t\tthis.sourcePreviewNodeOptions = new Map()\n\t\tthis.targetNodes = new Map()\n\t\tthis.listenerTypes = []\n\t\tthis._mouseClientOffset = {}\n\t\tthis._isScrolling = false\n\n\t\tif (this.options.enableMouseEvents) {\n\t\t\tthis.listenerTypes.push(ListenerType.mouse)\n\t\t}\n\n\t\tif (this.options.enableTouchEvents) {\n\t\t\tthis.listenerTypes.push(ListenerType.touch)\n\t\t}\n\n\t\tif (this.options.enableKeyboardEvents) {\n\t\t\tthis.listenerTypes.push(ListenerType.keyboard)\n\t\t}\n\t}\n\n\t/**\n\t * Generate profiling statistics for the HTML5Backend.\n\t */\n\tpublic profile(): Record<string, number> {\n\t\treturn {\n\t\t\tsourceNodes: this.sourceNodes.size,\n\t\t\tsourcePreviewNodes: this.sourcePreviewNodes.size,\n\t\t\tsourcePreviewNodeOptions: this.sourcePreviewNodeOptions.size,\n\t\t\ttargetNodes: this.targetNodes.size,\n\t\t\tdragOverTargetIds: this.dragOverTargetIds?.length || 0,\n\t\t}\n\t}\n\n\t// public for test\n\tpublic get document(): Document | undefined {\n\t\treturn this.options.document\n\t}\n\n\tpublic setup(): void {\n\t\tconst root = this.options.rootElement\n\t\tif (!root) {\n\t\t\treturn\n\t\t}\n\n\t\tinvariant(\n\t\t\t!TouchBackendImpl.isSetUp,\n\t\t\t'Cannot have two Touch backends at the same time.',\n\t\t)\n\t\tTouchBackendImpl.isSetUp = true\n\n\t\tthis.addEventListener(root, 'start', this.getTopMoveStartHandler() as any)\n\t\tthis.addEventListener(\n\t\t\troot,\n\t\t\t'start',\n\t\t\tthis.handleTopMoveStartCapture as any,\n\t\t\ttrue,\n\t\t)\n\t\tthis.addEventListener(root, 'move', this.handleTopMove as any)\n\t\tthis.addEventListener(root, 'move', this.handleTopMoveCapture, true)\n\t\tthis.addEventListener(\n\t\t\troot,\n\t\t\t'end',\n\t\t\tthis.handleTopMoveEndCapture as any,\n\t\t\ttrue,\n\t\t)\n\n\t\tif (this.options.enableMouseEvents && !this.options.ignoreContextMenu) {\n\t\t\tthis.addEventListener(\n\t\t\t\troot,\n\t\t\t\t'contextmenu',\n\t\t\t\tthis.handleTopMoveEndCapture as any,\n\t\t\t)\n\t\t}\n\n\t\tif (this.options.enableKeyboardEvents) {\n\t\t\tthis.addEventListener(\n\t\t\t\troot,\n\t\t\t\t'keydown',\n\t\t\t\tthis.handleCancelOnEscape as any,\n\t\t\t\ttrue,\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic teardown(): void {\n\t\tconst root = this.options.rootElement\n\t\tif (!root) {\n\t\t\treturn\n\t\t}\n\n\t\tTouchBackendImpl.isSetUp = false\n\t\tthis._mouseClientOffset = {}\n\n\t\tthis.removeEventListener(\n\t\t\troot,\n\t\t\t'start',\n\t\t\tthis.handleTopMoveStartCapture as any,\n\t\t\ttrue,\n\t\t)\n\t\tthis.removeEventListener(root, 'start', this.handleTopMoveStart as any)\n\t\tthis.removeEventListener(root, 'move', this.handleTopMoveCapture, true)\n\t\tthis.removeEventListener(root, 'move', this.handleTopMove as any)\n\t\tthis.removeEventListener(\n\t\t\troot,\n\t\t\t'end',\n\t\t\tthis.handleTopMoveEndCapture as any,\n\t\t\ttrue,\n\t\t)\n\n\t\tif (this.options.enableMouseEvents && !this.options.ignoreContextMenu) {\n\t\t\tthis.removeEventListener(\n\t\t\t\troot,\n\t\t\t\t'contextmenu',\n\t\t\t\tthis.handleTopMoveEndCapture as any,\n\t\t\t)\n\t\t}\n\n\t\tif (this.options.enableKeyboardEvents) {\n\t\t\tthis.removeEventListener(\n\t\t\t\troot,\n\t\t\t\t'keydown',\n\t\t\t\tthis.handleCancelOnEscape as any,\n\t\t\t\ttrue,\n\t\t\t)\n\t\t}\n\n\t\tthis.uninstallSourceNodeRemovalObserver()\n\t}\n\n\tprivate addEventListener<K extends keyof EventName>(\n\t\tsubject: Node,\n\t\tevent: K,\n\t\thandler: (e: any) => void,\n\t\tcapture = false,\n\t) {\n\t\tconst options = supportsPassive ? { capture, passive: false } : capture\n\n\t\tthis.listenerTypes.forEach(function (listenerType) {\n\t\t\tconst evt = eventNames[listenerType][event]\n\n\t\t\tif (evt) {\n\t\t\t\tsubject.addEventListener(evt as any, handler as any, options)\n\t\t\t}\n\t\t})\n\t}\n\n\tprivate removeEventListener<K extends keyof EventName>(\n\t\tsubject: Node,\n\t\tevent: K,\n\t\thandler: (e: any) => void,\n\t\tcapture = false,\n\t) {\n\t\tconst options = supportsPassive ? { capture, passive: false } : capture\n\n\t\tthis.listenerTypes.forEach(function (listenerType) {\n\t\t\tconst evt = eventNames[listenerType][event]\n\n\t\t\tif (evt) {\n\t\t\t\tsubject.removeEventListener(evt as any, handler as any, options)\n\t\t\t}\n\t\t})\n\t}\n\n\tpublic connectDragSource(sourceId: string, node: HTMLElement): Unsubscribe {\n\t\tconst handleMoveStart = this.handleMoveStart.bind(this, sourceId)\n\t\tthis.sourceNodes.set(sourceId, node)\n\n\t\tthis.addEventListener(node, 'start', handleMoveStart)\n\n\t\treturn (): void => {\n\t\t\tthis.sourceNodes.delete(sourceId)\n\t\t\tthis.removeEventListener(node, 'start', handleMoveStart)\n\t\t}\n\t}\n\n\tpublic connectDragPreview(\n\t\tsourceId: string,\n\t\tnode: HTMLElement,\n\t\toptions: unknown,\n\t): Unsubscribe {\n\t\tthis.sourcePreviewNodeOptions.set(sourceId, options)\n\t\tthis.sourcePreviewNodes.set(sourceId, node)\n\n\t\treturn (): void => {\n\t\t\tthis.sourcePreviewNodes.delete(sourceId)\n\t\t\tthis.sourcePreviewNodeOptions.delete(sourceId)\n\t\t}\n\t}\n\n\tpublic connectDropTarget(targetId: string, node: HTMLElement): Unsubscribe {\n\t\tconst root = this.options.rootElement\n\t\tif (!this.document || !root) {\n\t\t\treturn (): void => {\n\t\t\t\t/* noop */\n\t\t\t}\n\t\t}\n\n\t\tconst handleMove = (e: MouseEvent | TouchEvent) => {\n\t\t\tif (!this.document || !root || !this.monitor.isDragging()) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tlet coords\n\n\t\t\t/**\n\t\t\t * Grab the coordinates for the current mouse/touch position\n\t\t\t */\n\t\t\tswitch (e.type) {\n\t\t\t\tcase eventNames.mouse.move:\n\t\t\t\t\tcoords = {\n\t\t\t\t\t\tx: (e as MouseEvent).clientX,\n\t\t\t\t\t\ty: (e as MouseEvent).clientY,\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\n\t\t\t\tcase eventNames.touch.move:\n\t\t\t\t\tcoords = {\n\t\t\t\t\t\tx: (e as TouchEvent).touches[0]?.clientX || 0,\n\t\t\t\t\t\ty: (e as TouchEvent).touches[0]?.clientY || 0,\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Use the coordinates to grab the element the drag ended on.\n\t\t\t * If the element is the same as the target node (or any of it's children) then we have hit a drop target and can handle the move.\n\t\t\t */\n\t\t\tconst droppedOn =\n\t\t\t\tcoords != null\n\t\t\t\t\t? this.document.elementFromPoint(coords.x, coords.y)\n\t\t\t\t\t: undefined\n\t\t\tconst childMatch = droppedOn && node.contains(droppedOn)\n\n\t\t\tif (droppedOn === node || childMatch) {\n\t\t\t\treturn this.handleMove(e, targetId)\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Attaching the event listener to the body so that touchmove will work while dragging over multiple target elements.\n\t\t */\n\t\tthis.addEventListener(this.document.body, 'move', handleMove as any)\n\t\tthis.targetNodes.set(targetId, node)\n\n\t\treturn (): void => {\n\t\t\tif (this.document) {\n\t\t\t\tthis.targetNodes.delete(targetId)\n\t\t\t\tthis.removeEventListener(this.document.body, 'move', handleMove as any)\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate getSourceClientOffset = (sourceId: string): XYCoord | undefined => {\n\t\tconst element = this.sourceNodes.get(sourceId)\n\t\treturn element && getNodeClientOffset(element)\n\t}\n\n\tpublic handleTopMoveStartCapture = (e: Event): void => {\n\t\tif (!eventShouldStartDrag(e as MouseEvent)) {\n\t\t\treturn\n\t\t}\n\n\t\tthis.moveStartSourceIds = []\n\t}\n\n\tpublic handleMoveStart = (sourceId: string): void => {\n\t\t// Just because we received an event doesn't necessarily mean we need to collect drag sources.\n\t\t// We only collect start collecting drag sources on touch and left mouse events.\n\t\tif (Array.isArray(this.moveStartSourceIds)) {\n\t\t\tthis.moveStartSourceIds.unshift(sourceId)\n\t\t}\n\t}\n\n\tprivate getTopMoveStartHandler() {\n\t\tif (!this.options.delayTouchStart && !this.options.delayMouseStart) {\n\t\t\treturn this.handleTopMoveStart\n\t\t}\n\n\t\treturn this.handleTopMoveStartDelay\n\t}\n\n\tpublic handleTopMoveStart = (e: MouseEvent | TouchEvent): void => {\n\t\tif (!eventShouldStartDrag(e as MouseEvent)) {\n\t\t\treturn\n\t\t}\n\n\t\t// Don't prematurely preventDefault() here since it might:\n\t\t// 1. Mess up scrolling\n\t\t// 2. Mess up long tap (which brings up context menu)\n\t\t// 3. If there's an anchor link as a child, tap won't be triggered on link\n\n\t\tconst clientOffset = getEventClientOffset(e)\n\t\tif (clientOffset) {\n\t\t\tif (isTouchEvent(e)) {\n\t\t\t\tthis.lastTargetTouchFallback = e.targetTouches[0]\n\t\t\t}\n\t\t\tthis._mouseClientOffset = clientOffset\n\t\t}\n\t\tthis.waitingForDelay = false\n\t}\n\n\tpublic handleTopMoveStartDelay = (e: Event): void => {\n\t\tif (!eventShouldStartDrag(e as MouseEvent)) {\n\t\t\treturn\n\t\t}\n\n\t\tconst delay =\n\t\t\te.type === eventNames.touch.start\n\t\t\t\t? this.options.delayTouchStart\n\t\t\t\t: this.options.delayMouseStart\n\t\tthis.timeout = setTimeout(\n\t\t\tthis.handleTopMoveStart.bind(this, e as any),\n\t\t\tdelay,\n\t\t) as any as ReturnType<typeof setTimeout>\n\t\tthis.waitingForDelay = true\n\t}\n\n\tpublic handleTopMoveCapture = (): void => {\n\t\tthis.dragOverTargetIds = []\n\t}\n\n\tpublic handleMove = (\n\t\t_evt: MouseEvent | TouchEvent,\n\t\ttargetId: string,\n\t): void => {\n\t\tif (this.dragOverTargetIds) {\n\t\t\tthis.dragOverTargetIds.unshift(targetId)\n\t\t}\n\t}\n\n\tpublic handleTopMove = (e: TouchEvent | MouseEvent): void => {\n\t\tif (this.timeout) {\n\t\t\tclearTimeout(this.timeout)\n\t\t}\n\t\tif (!this.document || this.waitingForDelay) {\n\t\t\treturn\n\t\t}\n\t\tconst { moveStartSourceIds, dragOverTargetIds } = this\n\t\tconst enableHoverOutsideTarget = this.options.enableHoverOutsideTarget\n\n\t\tconst clientOffset = getEventClientOffset(e, this.lastTargetTouchFallback)\n\n\t\tif (!clientOffset) {\n\t\t\treturn\n\t\t}\n\n\t\t// If the touch move started as a scroll, or is is between the scroll angles\n\t\tif (\n\t\t\tthis._isScrolling ||\n\t\t\t(!this.monitor.isDragging() &&\n\t\t\t\tinAngleRanges(\n\t\t\t\t\tthis._mouseClientOffset.x || 0,\n\t\t\t\t\tthis._mouseClientOffset.y || 0,\n\t\t\t\t\tclientOffset.x,\n\t\t\t\t\tclientOffset.y,\n\t\t\t\t\tthis.options.scrollAngleRanges,\n\t\t\t\t))\n\t\t) {\n\t\t\tthis._isScrolling = true\n\t\t\treturn\n\t\t}\n\n\t\t// If we're not dragging and we've moved a little, that counts as a drag start\n\t\tif (\n\t\t\t!this.monitor.isDragging() &&\n\t\t\t// eslint-disable-next-line no-prototype-builtins\n\t\t\tthis._mouseClientOffset.hasOwnProperty('x') &&\n\t\t\tmoveStartSourceIds &&\n\t\t\tdistance(\n\t\t\t\tthis._mouseClientOffset.x || 0,\n\t\t\t\tthis._mouseClientOffset.y || 0,\n\t\t\t\tclientOffset.x,\n\t\t\t\tclientOffset.y,\n\t\t\t) > (this.options.touchSlop ? this.options.touchSlop : 0)\n\t\t) {\n\t\t\tthis.moveStartSourceIds = undefined\n\n\t\t\tthis.actions.beginDrag(moveStartSourceIds, {\n\t\t\t\tclientOffset: this._mouseClientOffset,\n\t\t\t\tgetSourceClientOffset: this.getSourceClientOffset,\n\t\t\t\tpublishSource: false,\n\t\t\t})\n\t\t}\n\n\t\tif (!this.monitor.isDragging()) {\n\t\t\treturn\n\t\t}\n\n\t\tconst sourceNode = this.sourceNodes.get(\n\t\t\tthis.monitor.getSourceId() as string,\n\t\t)\n\t\tthis.installSourceNodeRemovalObserver(sourceNode)\n\t\tthis.actions.publishDragSource()\n\n\t\tif (e.cancelable) e.preventDefault()\n\n\t\t// Get the node elements of the hovered DropTargets\n\t\tconst dragOverTargetNodes: HTMLElement[] = (dragOverTargetIds || [])\n\t\t\t.map((key) => this.targetNodes.get(key))\n\t\t\t.filter((e) => !!e) as HTMLElement[]\n\n\t\t// Get the a ordered list of nodes that are touched by\n\t\tconst elementsAtPoint = this.options.getDropTargetElementsAtPoint\n\t\t\t? this.options.getDropTargetElementsAtPoint(\n\t\t\t\t\tclientOffset.x,\n\t\t\t\t\tclientOffset.y,\n\t\t\t\t\tdragOverTargetNodes,\n\t\t\t  )\n\t\t\t: this.document.elementsFromPoint(clientOffset.x, clientOffset.y)\n\t\t// Extend list with parents that are not receiving elementsFromPoint events (size 0 elements and svg groups)\n\t\tconst elementsAtPointExtended: Element[] = []\n\t\tfor (const nodeId in elementsAtPoint) {\n\t\t\t// eslint-disable-next-line no-prototype-builtins\n\t\t\tif (!elementsAtPoint.hasOwnProperty(nodeId)) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tlet currentNode: Element | undefined | null = elementsAtPoint[nodeId]\n\t\t\tif (currentNode != null) {\n\t\t\t\telementsAtPointExtended.push(currentNode)\n\t\t\t}\n\t\t\twhile (currentNode) {\n\t\t\t\tcurrentNode = currentNode.parentElement\n\t\t\t\tif (\n\t\t\t\t\tcurrentNode &&\n\t\t\t\t\telementsAtPointExtended.indexOf(currentNode) === -1\n\t\t\t\t) {\n\t\t\t\t\telementsAtPointExtended.push(currentNode)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst orderedDragOverTargetIds: string[] = elementsAtPointExtended\n\t\t\t// Filter off nodes that arent a hovered DropTargets nodes\n\t\t\t.filter((node) => dragOverTargetNodes.indexOf(node as HTMLElement) > -1)\n\t\t\t// Map back the nodes elements to targetIds\n\t\t\t.map((node) => this._getDropTargetId(node))\n\t\t\t// Filter off possible null rows\n\t\t\t.filter((node) => !!node)\n\t\t\t.filter((id, index, ids) => ids.indexOf(id) === index) as string[]\n\n\t\t// Invoke hover for drop targets when source node is still over and pointer is outside\n\t\tif (enableHoverOutsideTarget) {\n\t\t\tfor (const targetId in this.targetNodes) {\n\t\t\t\tconst targetNode = this.targetNodes.get(targetId)\n\t\t\t\tif (\n\t\t\t\t\tsourceNode &&\n\t\t\t\t\ttargetNode &&\n\t\t\t\t\ttargetNode.contains(sourceNode) &&\n\t\t\t\t\torderedDragOverTargetIds.indexOf(targetId) === -1\n\t\t\t\t) {\n\t\t\t\t\torderedDragOverTargetIds.unshift(targetId)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Reverse order because dnd-core reverse it before calling the DropTarget drop methods\n\t\torderedDragOverTargetIds.reverse()\n\n\t\tthis.actions.hover(orderedDragOverTargetIds, {\n\t\t\tclientOffset: clientOffset,\n\t\t})\n\t}\n\n\t/**\n\t *\n\t * visible for testing\n\t */\n\tpublic _getDropTargetId = (node: Element): Identifier | undefined => {\n\t\tconst keys = this.targetNodes.keys()\n\t\tlet next = keys.next()\n\t\twhile (next.done === false) {\n\t\t\tconst targetId = next.value\n\t\t\tif (node === this.targetNodes.get(targetId)) {\n\t\t\t\treturn targetId\n\t\t\t} else {\n\t\t\t\tnext = keys.next()\n\t\t\t}\n\t\t}\n\t\treturn undefined\n\t}\n\n\tpublic handleTopMoveEndCapture = (e: Event): void => {\n\t\tthis._isScrolling = false\n\t\tthis.lastTargetTouchFallback = undefined\n\n\t\tif (!eventShouldEndDrag(e as MouseEvent)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (!this.monitor.isDragging() || this.monitor.didDrop()) {\n\t\t\tthis.moveStartSourceIds = undefined\n\t\t\treturn\n\t\t}\n\n\t\tif (e.cancelable) e.preventDefault()\n\n\t\tthis._mouseClientOffset = {}\n\n\t\tthis.uninstallSourceNodeRemovalObserver()\n\t\tthis.actions.drop()\n\t\tthis.actions.endDrag()\n\t}\n\n\tpublic handleCancelOnEscape = (e: KeyboardEvent): void => {\n\t\tif (e.key === 'Escape' && this.monitor.isDragging()) {\n\t\t\tthis._mouseClientOffset = {}\n\n\t\t\tthis.uninstallSourceNodeRemovalObserver()\n\t\t\tthis.actions.endDrag()\n\t\t}\n\t}\n\n\tprivate installSourceNodeRemovalObserver(node: HTMLElement | undefined) {\n\t\tthis.uninstallSourceNodeRemovalObserver()\n\n\t\tthis.draggedSourceNode = node\n\t\tthis.draggedSourceNodeRemovalObserver = new MutationObserver(() => {\n\t\t\tif (node && !node.parentElement) {\n\t\t\t\tthis.resurrectSourceNode()\n\t\t\t\tthis.uninstallSourceNodeRemovalObserver()\n\t\t\t}\n\t\t})\n\n\t\tif (!node || !node.parentElement) {\n\t\t\treturn\n\t\t}\n\n\t\tthis.draggedSourceNodeRemovalObserver.observe(node.parentElement, {\n\t\t\tchildList: true,\n\t\t})\n\t}\n\n\tprivate resurrectSourceNode() {\n\t\tif (this.document && this.draggedSourceNode) {\n\t\t\tthis.draggedSourceNode.style.display = 'none'\n\t\t\tthis.draggedSourceNode.removeAttribute('data-reactid')\n\t\t\tthis.document.body.appendChild(this.draggedSourceNode)\n\t\t}\n\t}\n\n\tprivate uninstallSourceNodeRemovalObserver() {\n\t\tif (this.draggedSourceNodeRemovalObserver) {\n\t\t\tthis.draggedSourceNodeRemovalObserver.disconnect()\n\t\t}\n\n\t\tthis.draggedSourceNodeRemovalObserver = undefined\n\t\tthis.draggedSourceNode = undefined\n\t}\n}\n","import type { BackendFactory, DragDropManager } from 'dnd-core'\n\nimport type { TouchBackendContext, TouchBackendOptions } from './interfaces.js'\nimport { TouchBackendImpl } from './TouchBackendImpl.js'\n\nexport * from './interfaces.js'\nexport * from './TouchBackendImpl.js'\n\nexport const TouchBackend: BackendFactory = function createBackend(\n\tmanager: DragDropManager,\n\tcontext: TouchBackendContext = {},\n\toptions: Partial<TouchBackendOptions> = {},\n): TouchBackendImpl {\n\treturn new TouchBackendImpl(manager, context, options)\n}\n","import React, { useEffect, useState } from 'react';\nimport { useRef } from 'react';\nimport { SandpackBundlerFiles } from './types';\n\nexport const SingleInputForm = ({\n  onSubmit,\n  onBlur,\n  isDirectory,\n  files,\n  currentPath = '/',\n}: {\n  currentPath?: string;\n  files: SandpackBundlerFiles;\n  isDirectory?: boolean;\n  onBlur: () => void;\n  onSubmit: (value: string) => void;\n}) => {\n  const [value, setValue] = useState('');\n  const formRef = useRef<HTMLFormElement>(null);\n  const [error, setError] = useState(false);\n  useEffect(() => {\n    if (value) {\n      if (\n        files[`${currentPath}/${value}`] ||\n        files[`${currentPath}/${value}/`]\n      ) {\n        setError(true);\n        // a file or dir with \"value\" already exists, do not add it\n      } else {\n        setError(false);\n      }\n    } else {\n      setError(false);\n    }\n  }, [value]);\n\n  const handleSubmit = (event: React.FormEvent) => {\n    event.preventDefault();\n  };\n\n  const handleBlur = () => {\n    if (value) {\n      let valueOverride = value;\n      if (isDirectory && !value.endsWith('/')) {\n        valueOverride = `${value}/`;\n      } else if (value.endsWith('/')) {\n        valueOverride = value.substring(0, -1);\n      }\n      onSubmit(valueOverride);\n      setValue('');\n    } else {\n      onBlur();\n    }\n  };\n  const handleKeyDown = (event: React.KeyboardEvent) => {\n    if (error) {\n      return;\n    }\n    let valueOverride = value;\n    if (isDirectory && !value.endsWith('/')) {\n      valueOverride = `${value}/`;\n    } else if (value.endsWith('/')) {\n      valueOverride = value.substring(0, -1);\n    }\n    if (event.key === 'Enter') {\n      event.preventDefault();\n      onSubmit(valueOverride);\n      setValue('');\n    }\n    if (event.key === 'Escape') {\n      event.preventDefault();\n\n      handleBlur();\n    }\n  };\n\n  return (\n    <form ref={formRef} onSubmit={handleSubmit}>\n      <label>\n        <input\n          style={{\n            maxWidth: '100%',\n            border: `1px solid ${error ? 'red' : 'inherit'}`,\n          }}\n          onBlur={handleBlur}\n          maxLength={35}\n          autoFocus={true}\n          placeholder={`${isDirectory ? 'Directory name' : 'File name'}`}\n          name=\"name\"\n          type=\"text\"\n          value={value}\n          onChange={(e) => setValue(e.target.value)}\n          onKeyDown={handleKeyDown}\n        />\n      </label>\n      {error ? (\n        <span\n          style={{\n            display: 'block',\n\n            maxWidth: '100%',\n            background: 'var(--sp-colors-errorSurface)',\n            color: 'var(--sp-colors-error)',\n            borderRadius: '3px',\n          }}\n        >\n          File or Directory already exists\n        </span>\n      ) : null}\n    </form>\n  );\n};\n","import {\n  useSandpack,\n  FileIcon,\n  DirectoryIconOpen,\n} from '@codesandbox/sandpack-react';\nimport React from 'react';\nimport { useSandpackFiles } from './SandpackFilesProvider';\n\nexport const CreateNewNode = ({ dir }: { dir?: boolean }) => {\n  const { sandpack } = useSandpack();\n  const { addFile } = useSandpackFiles();\n\n  return (\n    <span\n      style={{\n        cursor: 'pointer',\n      }}\n      onClick={() => {\n        const activeSpace = sandpack.activeFile\n          .split('/')\n          .slice(0, -1)\n          .join('/');\n        addFile({\n          [`${activeSpace}/${dir ? 'addDir' : 'addFile'}`]: {\n            code: '.emptyDir',\n            hidden: true,\n          },\n        });\n      }}\n    >\n      {dir ? <DirectoryIconOpen /> : <FileIcon />}\n    </span>\n  );\n};\n","import React from 'react';\nimport { SandpackFilesProvider } from './SandpackFilesProvider';\nimport { FileTreeExplorer } from './FileTreeExplorer';\nexport {\n  useSandpackFiles,\n  SandpackFilesProvider,\n} from './SandpackFilesProvider';\n\nexport const SandpackFileTree = () => (\n  <div\n    style={{\n      minWidth: 150,\n      maxWidth: '300px',\n      overflow: 'hidden',\n    }}\n  >\n    <FileTreeExplorer />\n  </div>\n);\n\ntype Props = {\n  onMoveFile?: ((fileMap: Record<string, string>) => void) | undefined;\n};\nexport const SandpackFileExplorer = (props: Props) => (\n  <SandpackFilesProvider {...props}>\n    <SandpackFileTree />\n  </SandpackFilesProvider>\n);\n\n// import React, { FC, HTMLAttributes, ReactChild } from 'react';\n\n// export interface Props extends HTMLAttributes<HTMLDivElement> {\n//   /** custom content, defaults to 'the snozzberries taste like snozzberries' */\n//   children?: ReactChild;\n// }\n\n// // Please do not use types off of a default export module or else Storybook Docs will suffer.\n// // see: https://github.com/storybookjs/storybook/issues/9556\n// /**\n//  * A custom Thing component. Neat!\n//  */\n// export const Thing: FC<Props> = ({ children }) => {\n//   return <div>{children || `the snozzberries taste like snozzberries`}</div>;\n// };\n"]}