aigetwey 1.4.0 → 1.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/dashboard/.next/BUILD_ID +1 -1
- package/dashboard/.next/build-manifest.json +3 -3
- package/dashboard/.next/diagnostics/route-bundle-stats.json +4 -4
- package/dashboard/.next/fallback-build-manifest.json +3 -3
- package/dashboard/.next/server/app/(console)/providers/[id]/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app/(console)/providers/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app/_global-error.html +1 -1
- package/dashboard/.next/server/app/_global-error.rsc +1 -1
- package/dashboard/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/server/app/_not-found.html +1 -1
- package/dashboard/.next/server/app/_not-found.rsc +1 -1
- package/dashboard/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/dashboard/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/server/app/combos.html +1 -1
- package/dashboard/.next/server/app/combos.rsc +1 -1
- package/dashboard/.next/server/app/combos.segments/!KGNvbnNvbGUp/combos/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/server/app/combos.segments/!KGNvbnNvbGUp/combos.segment.rsc +1 -1
- package/dashboard/.next/server/app/combos.segments/!KGNvbnNvbGUp.segment.rsc +1 -1
- package/dashboard/.next/server/app/combos.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/server/app/combos.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/server/app/combos.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/server/app/combos.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/server/app/config.html +1 -1
- package/dashboard/.next/server/app/config.rsc +1 -1
- package/dashboard/.next/server/app/config.segments/!KGNvbnNvbGUp/config/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/server/app/config.segments/!KGNvbnNvbGUp/config.segment.rsc +1 -1
- package/dashboard/.next/server/app/config.segments/!KGNvbnNvbGUp.segment.rsc +1 -1
- package/dashboard/.next/server/app/config.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/server/app/config.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/server/app/config.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/server/app/config.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/server/app/console.html +1 -1
- package/dashboard/.next/server/app/console.rsc +1 -1
- package/dashboard/.next/server/app/console.segments/!KGNvbnNvbGUp/console/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/server/app/console.segments/!KGNvbnNvbGUp/console.segment.rsc +1 -1
- package/dashboard/.next/server/app/console.segments/!KGNvbnNvbGUp.segment.rsc +1 -1
- package/dashboard/.next/server/app/console.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/server/app/console.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/server/app/console.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/server/app/console.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/server/app/endpoint.html +1 -1
- package/dashboard/.next/server/app/endpoint.rsc +1 -1
- package/dashboard/.next/server/app/endpoint.segments/!KGNvbnNvbGUp/endpoint/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/server/app/endpoint.segments/!KGNvbnNvbGUp/endpoint.segment.rsc +1 -1
- package/dashboard/.next/server/app/endpoint.segments/!KGNvbnNvbGUp.segment.rsc +1 -1
- package/dashboard/.next/server/app/endpoint.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/server/app/endpoint.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/server/app/endpoint.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/server/app/endpoint.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/server/app/index.html +1 -1
- package/dashboard/.next/server/app/index.rsc +1 -1
- package/dashboard/.next/server/app/index.segments/!KGNvbnNvbGUp/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/server/app/index.segments/!KGNvbnNvbGUp.segment.rsc +1 -1
- package/dashboard/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/server/app/keys.html +1 -1
- package/dashboard/.next/server/app/keys.rsc +1 -1
- package/dashboard/.next/server/app/keys.segments/!KGNvbnNvbGUp/keys/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/server/app/keys.segments/!KGNvbnNvbGUp/keys.segment.rsc +1 -1
- package/dashboard/.next/server/app/keys.segments/!KGNvbnNvbGUp.segment.rsc +1 -1
- package/dashboard/.next/server/app/keys.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/server/app/keys.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/server/app/keys.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/server/app/keys.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/server/app/login.html +1 -1
- package/dashboard/.next/server/app/login.rsc +1 -1
- package/dashboard/.next/server/app/login.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/server/app/login.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/server/app/login.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/dashboard/.next/server/app/providers.html +1 -1
- package/dashboard/.next/server/app/providers.rsc +2 -2
- package/dashboard/.next/server/app/providers.segments/!KGNvbnNvbGUp/providers/__PAGE__.segment.rsc +2 -2
- package/dashboard/.next/server/app/providers.segments/!KGNvbnNvbGUp/providers.segment.rsc +1 -1
- package/dashboard/.next/server/app/providers.segments/!KGNvbnNvbGUp.segment.rsc +1 -1
- package/dashboard/.next/server/app/providers.segments/_full.segment.rsc +2 -2
- package/dashboard/.next/server/app/providers.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/server/app/providers.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/server/app/providers.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/server/app/quota.html +1 -1
- package/dashboard/.next/server/app/quota.rsc +1 -1
- package/dashboard/.next/server/app/quota.segments/!KGNvbnNvbGUp/quota/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/server/app/quota.segments/!KGNvbnNvbGUp/quota.segment.rsc +1 -1
- package/dashboard/.next/server/app/quota.segments/!KGNvbnNvbGUp.segment.rsc +1 -1
- package/dashboard/.next/server/app/quota.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/server/app/quota.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/server/app/quota.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/server/app/quota.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/server/app/tools.html +1 -1
- package/dashboard/.next/server/app/tools.rsc +1 -1
- package/dashboard/.next/server/app/tools.segments/!KGNvbnNvbGUp/tools/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/server/app/tools.segments/!KGNvbnNvbGUp/tools.segment.rsc +1 -1
- package/dashboard/.next/server/app/tools.segments/!KGNvbnNvbGUp.segment.rsc +1 -1
- package/dashboard/.next/server/app/tools.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/server/app/tools.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/server/app/tools.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/server/app/tools.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/server/chunks/[root-of-the-server]__07euc03._.js.map +1 -1
- package/dashboard/.next/server/chunks/[root-of-the-server]__0uqpr_c._.js.map +1 -1
- package/dashboard/.next/server/chunks/ssr/_0p90gyy._.js.map +1 -1
- package/dashboard/.next/server/chunks/ssr/_1mumvwn._.js.map +1 -1
- package/dashboard/.next/server/chunks/ssr/src_components_ProviderDetail_tsx_06sxu0r._.js +1 -1
- package/dashboard/.next/server/chunks/ssr/src_components_ProviderDetail_tsx_06sxu0r._.js.map +1 -1
- package/dashboard/.next/server/chunks/ssr/src_components_ProviderManager_tsx_09d2dzw._.js +1 -1
- package/dashboard/.next/server/chunks/ssr/src_components_ProviderManager_tsx_09d2dzw._.js.map +1 -1
- package/dashboard/.next/server/middleware-build-manifest.js +3 -3
- package/dashboard/.next/server/pages/404.html +1 -1
- package/dashboard/.next/server/pages/500.html +1 -1
- package/dashboard/.next/static/chunks/{0pf-u__m67vld.js → 03xhjt1ta90pp.js} +1 -1
- package/dashboard/.next/static/chunks/{3y0b8yet0vgwr.js → 15d148buj9byd.js} +1 -1
- package/dashboard/.next/trace +1 -1
- package/dashboard/.next/trace-build +1 -1
- package/dashboard/src/components/ProviderDetail.tsx +10 -5
- package/dashboard/src/components/ProviderManager.tsx +7 -3
- package/dashboard/src/lib/client.ts +1 -0
- package/dashboard/src/lib/gateway.ts +2 -1
- package/dist/cli.js +10 -4
- package/dist/cli.js.map +1 -1
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/headroom/process.js +22 -6
- package/dist/headroom/process.js.map +1 -1
- package/dist/routes/admin.js +1 -0
- package/dist/routes/admin.js.map +1 -1
- package/package.json +1 -1
- package/src/cli.ts +8 -4
- package/src/config.ts +2 -0
- package/src/headroom/process.ts +19 -5
- package/src/routes/admin.ts +2 -0
- /package/dashboard/.next/static/{WxqdtupTIrBh47rvaXxLB → jKcczqYA93-Kuqa9A9H9h}/_buildManifest.js +0 -0
- /package/dashboard/.next/static/{WxqdtupTIrBh47rvaXxLB → jKcczqYA93-Kuqa9A9H9h}/_clientMiddlewareManifest.js +0 -0
- /package/dashboard/.next/static/{WxqdtupTIrBh47rvaXxLB → jKcczqYA93-Kuqa9A9H9h}/_ssgManifest.js +0 -0
package/dashboard/.next/server/chunks/ssr/src_components_ProviderManager_tsx_09d2dzw._.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ProviderManager.tsx","../../../../node_modules/%40dnd-kit/accessibility/src/components/HiddenText/HiddenText.tsx","../../../../node_modules/%40dnd-kit/utilities/src/hooks/useCombinedRefs.ts","../../../../node_modules/%40dnd-kit/core/src/components/DndMonitor/context.ts","../../../../node_modules/%40dnd-kit/sortable/src/utilities/arrayMove.ts","../../../../node_modules/%40dnd-kit/core/src/components/DndMonitor/useDndMonitor.ts","../../../../node_modules/%40dnd-kit/sortable/src/utilities/arraySwap.ts","../../../../node_modules/%40dnd-kit/utilities/src/execution-context/canUseDOM.ts","../../../../node_modules/%40dnd-kit/utilities/src/type-guards/isWindow.ts","../../../../node_modules/%40dnd-kit/accessibility/src/components/LiveRegion/LiveRegion.tsx","../../../../node_modules/%40dnd-kit/core/src/components/DndMonitor/useDndMonitorProvider.tsx","../../../../node_modules/%40dnd-kit/utilities/src/type-guards/isNode.ts","../../../../node_modules/%40dnd-kit/sortable/src/utilities/getSortedRects.ts","../../../../node_modules/%40dnd-kit/utilities/src/execution-context/getWindow.ts","../../../../node_modules/%40dnd-kit/sortable/src/utilities/isValidIndex.ts","../../../../node_modules/%40dnd-kit/core/src/components/Accessibility/defaults.ts","../../../../node_modules/%40dnd-kit/sortable/src/utilities/itemsEqual.ts","../../../../node_modules/%40dnd-kit/utilities/src/type-guards/isDocument.ts","../../../../node_modules/%40dnd-kit/accessibility/src/hooks/useAnnouncement.ts","../../../../node_modules/%40dnd-kit/utilities/src/type-guards/isHTMLElement.ts","../../../../node_modules/%40dnd-kit/sortable/src/utilities/normalizeDisabled.ts","../../../../node_modules/%40dnd-kit/utilities/src/type-guards/isSVGElement.ts","../../../../node_modules/%40dnd-kit/utilities/src/execution-context/getOwnerDocument.ts","../../../../node_modules/%40dnd-kit/sortable/src/strategies/horizontalListSorting.ts","../../../../node_modules/%40dnd-kit/core/src/components/Accessibility/Accessibility.tsx","../../../../node_modules/%40dnd-kit/utilities/src/hooks/useIsomorphicLayoutEffect.ts","../../../../node_modules/%40dnd-kit/utilities/src/hooks/useEvent.ts","../../../../node_modules/%40dnd-kit/utilities/src/hooks/useInterval.ts","../../../../node_modules/%40dnd-kit/utilities/src/hooks/useLatestValue.ts","../../../../node_modules/%40dnd-kit/utilities/src/hooks/useLazyMemo.ts","../../../../node_modules/%40dnd-kit/sortable/src/strategies/rectSorting.ts","../../../../node_modules/%40dnd-kit/utilities/src/hooks/useNodeRef.ts","../../../../node_modules/%40dnd-kit/utilities/src/hooks/usePrevious.ts","../../../../node_modules/%40dnd-kit/sortable/src/strategies/rectSwapping.ts","../../../../node_modules/%40dnd-kit/utilities/src/hooks/useUniqueId.ts","../../../../node_modules/%40dnd-kit/core/src/store/actions.ts","../../../../node_modules/%40dnd-kit/utilities/src/adjustment.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/other/noop.ts","../../../../node_modules/%40dnd-kit/core/src/sensors/useSensor.ts","../../../../node_modules/%40dnd-kit/core/src/sensors/useSensors.ts","../../../../node_modules/%40dnd-kit/sortable/src/strategies/verticalListSorting.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/coordinates/constants.ts","../../../../node_modules/%40dnd-kit/utilities/src/event/hasViewportRelativeCoordinates.ts","../../../../node_modules/%40dnd-kit/utilities/src/event/isKeyboardEvent.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/coordinates/distanceBetweenPoints.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/coordinates/getRelativeTransformOrigin.ts","../../../../node_modules/%40dnd-kit/utilities/src/event/isTouchEvent.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/algorithms/helpers.ts","../../../../node_modules/%40dnd-kit/utilities/src/coordinates/getEventCoordinates.ts","../../../../node_modules/%40dnd-kit/utilities/src/css.ts","../../../../node_modules/%40dnd-kit/sortable/src/components/SortableContext.tsx","../../../../node_modules/%40dnd-kit/core/src/utilities/algorithms/closestCenter.ts","../../../../node_modules/%40dnd-kit/utilities/src/focus/findFirstFocusableNode.ts","../../../../node_modules/%40dnd-kit/sortable/src/hooks/defaults.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/algorithms/closestCorners.ts","../../../../node_modules/%40dnd-kit/sortable/src/hooks/utilities/useDerivedTransform.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/algorithms/rectIntersection.ts","../../../../node_modules/%40dnd-kit/sortable/src/hooks/useSortable.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/algorithms/pointerWithin.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/rect/adjustScale.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/rect/getRectDelta.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/rect/rectAdjustment.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/transform/parseTransform.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/transform/inverseTransform.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/rect/getRect.ts","../../../../node_modules/%40dnd-kit/sortable/src/types/type-guard.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/rect/getWindowClientRect.ts","../../../../node_modules/%40dnd-kit/sortable/src/sensors/keyboard/sortableKeyboardCoordinates.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/scroll/isFixed.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/scroll/isScrollable.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/scroll/getScrollableAncestors.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/scroll/getScrollableElement.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/scroll/getScrollCoordinates.ts","../../../../node_modules/%40dnd-kit/core/src/types/direction.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/scroll/documentScrollingElement.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/scroll/getScrollPosition.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/scroll/getScrollDirectionAndSpeed.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/scroll/getScrollElementRect.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/scroll/getScrollOffsets.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/scroll/scrollIntoViewIfNeeded.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/rect/Rect.ts","../../../../node_modules/%40dnd-kit/core/src/sensors/utilities/Listeners.ts","../../../../node_modules/%40dnd-kit/core/src/sensors/utilities/getEventListenerTarget.ts","../../../../node_modules/%40dnd-kit/core/src/sensors/utilities/hasExceededDistance.ts","../../../../node_modules/%40dnd-kit/core/src/sensors/events.ts","../../../../node_modules/%40dnd-kit/core/src/sensors/keyboard/types.ts","../../../../node_modules/%40dnd-kit/core/src/sensors/keyboard/defaults.ts","../../../../node_modules/%40dnd-kit/core/src/sensors/keyboard/KeyboardSensor.ts","../../../../node_modules/%40dnd-kit/core/src/sensors/pointer/AbstractPointerSensor.ts","../../../../node_modules/%40dnd-kit/core/src/sensors/pointer/PointerSensor.ts","../../../../node_modules/%40dnd-kit/core/src/sensors/mouse/MouseSensor.ts","../../../../node_modules/%40dnd-kit/core/src/sensors/touch/TouchSensor.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useAutoScroller.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useCachedNode.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useCombineActivators.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useDroppableMeasuring.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useInitialValue.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useInitialRect.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useMutationObserver.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useResizeObserver.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useRect.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useRectDelta.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useScrollableAncestors.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useScrollOffsets.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useScrollOffsetsDelta.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useSensorSetup.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useSyntheticListeners.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useWindowRect.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useRects.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/nodes/getMeasurableNode.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useDragOverlayMeasuring.ts","../../../../node_modules/%40dnd-kit/core/src/components/DndContext/defaults.ts","../../../../node_modules/%40dnd-kit/core/src/store/constructors.ts","../../../../node_modules/%40dnd-kit/core/src/store/context.ts","../../../../node_modules/%40dnd-kit/core/src/store/reducer.ts","../../../../node_modules/%40dnd-kit/core/src/components/Accessibility/components/RestoreFocus.tsx","../../../../node_modules/%40dnd-kit/core/src/modifiers/applyModifiers.ts","../../../../node_modules/%40dnd-kit/core/src/components/DndContext/hooks/useMeasuringConfiguration.ts","../../../../node_modules/%40dnd-kit/core/src/components/DndContext/hooks/useLayoutShiftScrollCompensation.ts","../../../../node_modules/%40dnd-kit/core/src/components/DndContext/DndContext.tsx","../../../../node_modules/%40dnd-kit/core/src/hooks/useDraggable.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/useDndContext.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/useDroppable.ts","../../../../node_modules/%40dnd-kit/core/src/components/DragOverlay/components/AnimationManager/AnimationManager.tsx","../../../../node_modules/%40dnd-kit/core/src/components/DragOverlay/components/NullifiedContextProvider/NullifiedContextProvider.tsx","../../../../node_modules/%40dnd-kit/core/src/components/DragOverlay/components/PositionedOverlay/PositionedOverlay.tsx","../../../../node_modules/%40dnd-kit/core/src/components/DragOverlay/hooks/useDropAnimation.ts","../../../../node_modules/%40dnd-kit/core/src/components/DragOverlay/hooks/useKey.ts","../../../../node_modules/%40dnd-kit/core/src/components/DragOverlay/DragOverlay.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useState, useCallback } from \"react\";\nimport Link from \"next/link\";\nimport {\n DndContext,\n closestCenter,\n PointerSensor,\n useSensor,\n useSensors,\n DragEndEvent,\n} from \"@dnd-kit/core\";\nimport {\n SortableContext,\n useSortable,\n arrayMove,\n rectSortingStrategy,\n} from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { adminApi } from \"@/lib/client\";\nimport { Lamp } from \"@/components/Lamp\";\nimport { Badge, FormatBadge } from \"@/components/Badge\";\nimport { CooldownTimer } from \"@/components/CooldownTimer\";\nimport { Button, Input, Field } from \"@/components/Button\";\nimport { Icon } from \"@/components/Icon\";\nimport { Empty } from \"@/components/ui\";\nimport type { MaskedConfig, PingResult, ProviderSnapshot, WireFormat } from \"@/lib/gateway\";\n\ninterface Loaded {\n config: MaskedConfig;\n health: ProviderSnapshot[];\n}\n\nexport function ProviderManager() {\n const [data, setData] = useState<Loaded | null>(null);\n const [error, setError] = useState(\"\");\n const [adding, setAdding] = useState(false);\n const [providerOrder, setProviderOrder] = useState<string[]>([]);\n\n const reload = useCallback(async () => {\n const [cfg, prov] = await Promise.all([\n fetch(\"/api/gw/admin/config\"),\n adminApi.providers(),\n ]);\n if (!cfg.ok || !prov.ok) {\n setError(\"could not reach the gateway\");\n return;\n }\n setError(\"\");\n const loaded: Loaded = {\n config: (await cfg.json()) as MaskedConfig,\n health: prov.data?.providers ?? [],\n };\n setData(loaded);\n setProviderOrder(loaded.config.providers.map((p) => p.id));\n }, []);\n\n useEffect(() => {\n void reload();\n }, [reload]);\n\n const sensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 6 } }),\n );\n\n async function handleDragEnd(event: DragEndEvent) {\n const { active, over } = event;\n if (!over || active.id === over.id || !data) return;\n\n const oldIndex = providerOrder.indexOf(active.id as string);\n const newIndex = providerOrder.indexOf(over.id as string);\n if (oldIndex === -1 || newIndex === -1) return;\n\n setProviderOrder(arrayMove(providerOrder, oldIndex, newIndex));\n await adminApi.reorderProvider(oldIndex, newIndex);\n void reload();\n }\n\n if (error) return <Empty>{error}</Empty>;\n if (!data) return <Empty>Loading…</Empty>;\n\n const healthById = new Map(data.health.map((h) => [h.id, h]));\n const providerMap = new Map(data.config.providers.map((p) => [p.id, p]));\n const orderedProviders = providerOrder\n .map((id) => providerMap.get(id))\n .filter(Boolean) as typeof data.config.providers;\n\n return (\n <div>\n <div className=\"mb-6 flex items-center justify-between gap-3\">\n <div>\n <h1 className=\"text-[22px] font-semibold tracking-tight text-text\">Providers & Keys</h1>\n <p className=\"mt-1 text-[13px] text-text-muted\">Upstream providers the gateway routes to.</p>\n </div>\n <Button onClick={() => setAdding(true)}>\n <Icon name=\"add\" size={17} />\n Add provider\n </Button>\n </div>\n\n {adding && (\n <AddProviderForm\n onClose={() => setAdding(false)}\n onDone={() => { setAdding(false); void reload(); }}\n />\n )}\n\n {orderedProviders.length === 0 ? (\n <Empty>No providers yet. Add one to start routing.</Empty>\n ) : (\n <DndContext sensors={sensors} collisionDetection={closestCenter} onDragEnd={handleDragEnd}>\n <SortableContext items={providerOrder} strategy={rectSortingStrategy}>\n <div className=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n {orderedProviders.map((p) => {\n const health = healthById.get(p.id);\n const healthy = health ? health.keys.some((k) => k.healthy) : true;\n const cooling = health?.keys.find((k) => !k.healthy && k.cooldown_ms > 0);\n return (\n <SortableProviderCard\n key={p.id}\n p={p}\n healthy={healthy}\n cooling={cooling}\n onDone={reload}\n />\n );\n })}\n </div>\n </SortableContext>\n </DndContext>\n )}\n </div>\n );\n}\n\ntype ProviderConfig = MaskedConfig[\"providers\"][number];\n\nfunction SortableProviderCard({\n p,\n healthy,\n cooling,\n onDone,\n}: {\n p: ProviderConfig;\n healthy: boolean;\n cooling: { cooldown_ms: number } | undefined;\n onDone: () => void;\n}) {\n const { attributes, listeners, setNodeRef, transform, transition, isDragging } =\n useSortable({ id: p.id });\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n };\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n className={`group relative rounded-brand-lg border bg-surface shadow-soft transition-colors ${\n isDragging ? \"opacity-50 border-accent shadow-elevated z-10\" : \"\"\n } ${\n p.disabled\n ? \"border-danger/35 opacity-60 hover:opacity-100 hover:border-danger/60\"\n : isDragging ? \"\" : \"border-border hover:border-text-subtle\"\n }`}\n >\n {/* drag pill — centered top, visible on hover */}\n <div\n {...attributes}\n {...listeners}\n className=\"absolute inset-x-0 top-0 flex h-5 cursor-grab items-center justify-center opacity-0 transition-opacity group-hover:opacity-100 active:cursor-grabbing\"\n onClick={(e) => e.preventDefault()}\n >\n <span className=\"h-[3px] w-8 rounded-full bg-border-subtle transition-colors group-hover:bg-text-subtle\" />\n </div>\n\n <Link\n href={`/providers/${encodeURIComponent(p.id)}`}\n className=\"block px-5 py-6\"\n draggable={false}\n >\n <div className=\"flex items-start justify-between gap-2\">\n <div className=\"flex items-center gap-2 min-w-0\">\n <Lamp state={p.disabled ? \"down\" : healthy ? \"live\" : \"down\"} />\n <div className=\"min-w-0\">\n <span className=\"block truncate text-[15px] font-semibold text-text\">{p.name || p.id}</span>\n {p.name && <span className=\"block truncate text-[12px] text-text-subtle\">{p.id}/</span>}\n </div>\n </div>\n <FormatBadge format={p.format} />\n </div>\n <div className=\"mt-3 truncate text-[13px] text-text-subtle\">{p.base_url}</div>\n <div className=\"mt-4 flex flex-wrap items-center gap-2\">\n <ProviderToggle id={p.id} disabled={!!p.disabled} onDone={onDone} />\n {p.free && <Badge tone=\"info\">no auth</Badge>}\n {p.service_account && <Badge tone=\"info\">service-account</Badge>}\n <Badge tone=\"neutral\">\n {p.free || p.service_account ? `${(p.api_keys?.length ?? 0)} keys` : `${p.api_keys?.length ?? (p.api_key ? 1 : 0)} keys`}\n </Badge>\n <Badge tone=\"neutral\">{p.models.length} models</Badge>\n {cooling && <CooldownTimer ms={cooling.cooldown_ms} />}\n </div>\n </Link>\n </div>\n );\n}\n\n/**\n * Inline enable/disable switch shown on each provider card. The card is a <Link>,\n * so the button swallows the click (preventDefault + stopPropagation) to toggle in\n * place instead of navigating into the provider. `busy` ignores double-clicks.\n */\nfunction ProviderToggle({ id, disabled, onDone }: { id: string; disabled: boolean; onDone: () => void }) {\n const [busy, setBusy] = useState(false);\n return (\n <button\n type=\"button\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n if (busy) return;\n setBusy(true);\n void adminApi.setProviderDisabled(id, !disabled).then(() => onDone()).finally(() => setBusy(false));\n }}\n className={`inline-flex items-center gap-1.5 text-[11px] font-medium ${disabled ? \"text-danger\" : \"text-text-muted\"}`}\n aria-label={disabled ? \"Enable provider\" : \"Disable provider\"}\n title={disabled ? \"Provider disabled — click to enable\" : \"Provider enabled — click to disable\"}\n >\n <span className={`relative h-4 w-7 rounded-full transition-colors ${disabled ? \"bg-danger\" : \"bg-accent\"} ${busy ? \"opacity-60\" : \"\"}`}>\n <span className={`absolute left-0.5 top-0.5 h-3 w-3 rounded-full bg-white transition-transform ${disabled ? \"translate-x-0\" : \"translate-x-[14px]\"}`} />\n </span>\n </button>\n );\n}\n\n// Provider presets — pick a type first, which prefills Base URL + API Type, then\n// you only fill Name + Key. Matches aigetwey's per-type forms but friendlier; the\n// fields below are still aigetwey's (Name, API Type, Base URL, Key + Check, Model\n// ID), minus the separate Prefix — our Name is the id and the model prefix.\ntype Preset = { id: string; label: string; sub: string; icon: string; format: WireFormat; base_url: string; hint: string; modelHint: string };\nconst PRESETS: Preset[] = [\n {\n id: \"openai\", label: \"OpenAI compatible\", sub: \"/v1/chat/completions\", icon: \"bolt\",\n format: \"openai\", base_url: \"https://api.openai.com/v1\",\n hint: \"Base URL ending in /v1 for any OpenAI-compatible API.\", modelHint: \"e.g. gpt-4o, glm-5.2\",\n },\n {\n id: \"anthropic\", label: \"Anthropic compatible\", sub: \"/v1/messages\", icon: \"smart_toy\",\n format: \"anthropic\", base_url: \"https://api.anthropic.com\",\n hint: \"Base URL of an Anthropic-compatible API; /messages is appended.\", modelHint: \"e.g. claude-sonnet-4-6\",\n },\n];\n\nfunction AddProviderForm({ onDone, onClose }: { onDone: () => void; onClose: () => void }) {\n const [preset, setPreset] = useState<Preset | null>(null);\n const [id, setId] = useState(\"\");\n const [baseUrl, setBaseUrl] = useState(\"\");\n const [apiKey, setApiKey] = useState(\"\");\n const [showKey, setShowKey] = useState(false);\n const [modelId, setModelId] = useState(\"\");\n const [busy, setBusy] = useState(false);\n const [checking, setChecking] = useState(false);\n const [checkRes, setCheckRes] = useState<PingResult | null>(null);\n const [err, setErr] = useState(\"\");\n\n function choosePreset(p: Preset) {\n setPreset(p);\n setBaseUrl(p.base_url);\n setCheckRes(null);\n setErr(\"\");\n }\n\n // step 1: pick a type (OpenAI- or Anthropic-compatible) — this sets the wire\n // format + base URL, exactly aigetwey's \"Add OpenAI/Anthropic Compatible\".\n if (!preset) {\n return (\n <div className=\"mb-5 rounded-brand-lg border border-border bg-surface p-5 shadow-soft\">\n <div className=\"flex items-start justify-between gap-3\">\n <div>\n <h2 className=\"text-[14px] font-semibold text-text\">Add a provider</h2>\n <p className=\"mt-0.5 text-[12.5px] text-text-muted\">Pick the API your endpoint speaks — the rest is prefilled.</p>\n </div>\n <button type=\"button\" onClick={onClose} className=\"flex-none text-text-subtle hover:text-text\" aria-label=\"Cancel\">\n <Icon name=\"close\" size={18} />\n </button>\n </div>\n <div className=\"mt-4 grid gap-3 sm:grid-cols-2\">\n {PRESETS.map((p) => (\n <button\n key={p.id}\n type=\"button\"\n onClick={() => choosePreset(p)}\n className=\"group flex items-start gap-3 rounded-brand-lg border border-border bg-bg p-4 text-left transition-colors hover:border-accent hover:bg-accent-soft\"\n >\n <span className=\"flex h-10 w-10 flex-none items-center justify-center rounded-brand bg-surface-2 text-text-muted group-hover:text-accent\">\n <Icon name={p.icon} size={20} />\n </span>\n <span className=\"min-w-0\">\n <span className=\"block text-[13.5px] font-semibold text-text\">{p.label}</span>\n <span className=\"block tnum text-[11.5px] text-text-subtle\">{p.sub}</span>\n <span className=\"mt-1 block text-[11.5px] text-text-muted\">{p.hint}</span>\n </span>\n </button>\n ))}\n </div>\n </div>\n );\n }\n\n async function check() {\n if (!baseUrl || !preset) return;\n setChecking(true);\n setCheckRes(null);\n const r = await adminApi.validateProvider({ format: preset.format, base_url: baseUrl, api_key: apiKey || undefined });\n setChecking(false);\n setCheckRes(r.data ?? { ok: false, reachable: false, status: 0, error: r.error });\n }\n\n async function submit(e: React.FormEvent) {\n e.preventDefault();\n if (!preset || !id || !baseUrl) {\n setErr(\"name and base URL are required\");\n return;\n }\n setBusy(true);\n setErr(\"\");\n const res = await adminApi.addProvider({ id, format: preset.format, base_url: baseUrl, api_key: apiKey || undefined, free: !apiKey.trim() });\n if (!res.ok) {\n setBusy(false);\n setErr(res.error ?? \"failed\");\n return;\n }\n if (modelId.trim()) await adminApi.addModel(id, modelId.trim());\n setBusy(false);\n onDone();\n }\n\n // step 2: the aigetwey field set — Name, Base URL, API Key (for Check), Model ID.\n return (\n <div className=\"mb-5 rounded-brand-lg border border-border bg-surface p-5 shadow-soft\">\n <form onSubmit={submit}>\n <div className=\"mb-4 flex items-center gap-2.5 border-b border-border-subtle pb-4\">\n <span className=\"flex h-8 w-8 items-center justify-center rounded-brand bg-surface-2 text-text-muted\">\n <Icon name={preset.icon} size={17} />\n </span>\n <div>\n <div className=\"text-[13.5px] font-semibold text-text\">{preset.label}</div>\n <div className=\"tnum text-[11px] text-text-subtle\">{preset.sub}</div>\n </div>\n <button\n type=\"button\"\n onClick={() => { setPreset(null); setCheckRes(null); }}\n className=\"ml-auto inline-flex items-center gap-1 text-[12px] text-text-subtle hover:text-text\"\n >\n <Icon name=\"arrow_back\" size={14} /> change type\n </button>\n </div>\n\n <div className=\"space-y-3\">\n <Field label=\"Name\" hint=\"a friendly id — also the model prefix (name/model)\">\n <Input value={id} onChange={(e) => setId(e.target.value)} placeholder=\"e.g. openai, anthropic\" />\n </Field>\n <Field label=\"Base URL\" hint={preset.hint}>\n <Input value={baseUrl} onChange={(e) => { setBaseUrl(e.target.value); setCheckRes(null); }} placeholder={preset.base_url} className=\"font-mono text-[12.5px]\" />\n </Field>\n <Field label=\"API Key\" hint=\"used for Check and live requests — leave blank for a free / no-auth endpoint\">\n <div className=\"flex gap-2\">\n <div className=\"relative flex-1\">\n <Input\n type={showKey ? \"text\" : \"password\"}\n value={apiKey}\n onChange={(e) => { setApiKey(e.target.value); setCheckRes(null); }}\n placeholder=\"sk-…\"\n className=\"pr-9 font-mono text-[12.5px]\"\n />\n {apiKey && (\n <button type=\"button\" onClick={() => setShowKey((v) => !v)} className=\"absolute right-2 top-1/2 -translate-y-1/2 text-text-subtle hover:text-text\" aria-label={showKey ? \"Hide key\" : \"Show key\"}>\n <Icon name={showKey ? \"visibility_off\" : \"visibility\"} size={15} />\n </button>\n )}\n </div>\n <Button type=\"button\" variant=\"ghost\" disabled={checking || !baseUrl} onClick={check}>\n <Icon name={checking ? \"progress_activity\" : \"wifi_tethering\"} size={15} />\n {checking ? \"Checking…\" : \"Check\"}\n </Button>\n </div>\n </Field>\n {checkRes && (\n <div className=\"flex items-center gap-2 text-[12px]\">\n <Badge tone={checkRes.ok ? \"live\" : checkRes.reachable ? \"warn\" : \"down\"}>\n {checkRes.ok ? \"valid\" : checkRes.reachable ? `reachable (${checkRes.status})` : \"invalid\"}\n </Badge>\n {checkRes.error && <span className=\"text-text-subtle\">{checkRes.error}</span>}\n </div>\n )}\n <Field label=\"Model ID\" hint=\"optional — seed one if the provider has no /models endpoint\">\n <Input value={modelId} onChange={(e) => setModelId(e.target.value)} placeholder={preset.modelHint} className=\"font-mono text-[12.5px]\" />\n </Field>\n </div>\n\n {err && <div className=\"mt-2 text-[12px] text-danger\">{err}</div>}\n <div className=\"mt-4 flex justify-end gap-2\">\n <Button type=\"button\" variant=\"ghost\" onClick={onClose}>Cancel</Button>\n <Button type=\"submit\" disabled={busy}>{busy ? \"Adding…\" : \"Add provider\"}</Button>\n </div>\n </form>\n </div>\n );\n}\n","import React from 'react';\n\ninterface Props {\n id: string;\n value: string;\n}\n\nconst hiddenStyles: React.CSSProperties = {\n display: 'none',\n};\n\nexport function HiddenText({id, value}: Props) {\n return (\n <div id={id} style={hiddenStyles}>\n {value}\n </div>\n );\n}\n","import {useMemo} from 'react';\n\nexport function useCombinedRefs<T>(\n ...refs: ((node: T) => void)[]\n): (node: T) => void {\n return useMemo(\n () => (node: T) => {\n refs.forEach((ref) => ref(node));\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n refs\n );\n}\n","import {createContext} from 'react';\n\nimport type {RegisterListener} from './types';\n\nexport const DndMonitorContext = createContext<RegisterListener | null>(null);\n","/**\n * Move an array item to a different position. Returns a new array with the item moved to the new position.\n */\nexport function arrayMove<T>(array: T[], from: number, to: number): T[] {\n const newArray = array.slice();\n newArray.splice(\n to < 0 ? newArray.length + to : to,\n 0,\n newArray.splice(from, 1)[0]\n );\n\n return newArray;\n}\n","import {useContext, useEffect} from 'react';\n\nimport {DndMonitorContext} from './context';\nimport type {DndMonitorListener} from './types';\n\nexport function useDndMonitor(listener: DndMonitorListener) {\n const registerListener = useContext(DndMonitorContext);\n\n useEffect(() => {\n if (!registerListener) {\n throw new Error(\n 'useDndMonitor must be used within a children of <DndContext>'\n );\n }\n\n const unsubscribe = registerListener(listener);\n\n return unsubscribe;\n }, [listener, registerListener]);\n}\n","/**\n * Swap an array item to a different position. Returns a new array with the item swapped to the new position.\n */\nexport function arraySwap<T>(array: T[], from: number, to: number): T[] {\n const newArray = array.slice();\n\n newArray[from] = array[to];\n newArray[to] = array[from];\n\n return newArray;\n}\n","// https://github.com/facebook/react/blob/master/packages/shared/ExecutionEnvironment.js\nexport const canUseDOM =\n typeof window !== 'undefined' &&\n typeof window.document !== 'undefined' &&\n typeof window.document.createElement !== 'undefined';\n","export function isWindow(element: Object): element is typeof window {\n const elementString = Object.prototype.toString.call(element);\n return (\n elementString === '[object Window]' ||\n // In Electron context the Window object serializes to [object global]\n elementString === '[object global]'\n );\n}\n","import React from 'react';\n\nexport interface Props {\n id: string;\n announcement: string;\n ariaLiveType?: \"polite\" | \"assertive\" | \"off\";\n}\n\nexport function LiveRegion({id, announcement, ariaLiveType = \"assertive\"}: Props) {\n // Hide element visually but keep it readable by screen readers\n const visuallyHidden: React.CSSProperties = {\n position: 'fixed',\n top: 0,\n left: 0,\n width: 1,\n height: 1,\n margin: -1,\n border: 0,\n padding: 0,\n overflow: 'hidden',\n clip: 'rect(0 0 0 0)',\n clipPath: 'inset(100%)',\n whiteSpace: 'nowrap',\n };\n \n return (\n <div\n id={id}\n style={visuallyHidden}\n role=\"status\"\n aria-live={ariaLiveType}\n aria-atomic\n >\n {announcement}\n </div>\n );\n}\n","import {useCallback, useState} from 'react';\n\nimport type {DndMonitorListener, DndMonitorEvent} from './types';\n\nexport function useDndMonitorProvider() {\n const [listeners] = useState(() => new Set<DndMonitorListener>());\n\n const registerListener = useCallback(\n (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n [listeners]\n );\n\n const dispatch = useCallback(\n ({type, event}: DndMonitorEvent) => {\n listeners.forEach((listener) => listener[type]?.(event as any));\n },\n [listeners]\n );\n\n return [dispatch, registerListener] as const;\n}\n","export function isNode(node: Object): node is Node {\n return 'nodeType' in node;\n}\n","import type {\n ClientRect,\n UniqueIdentifier,\n UseDndContextReturnValue,\n} from '@dnd-kit/core';\n\nexport function getSortedRects(\n items: UniqueIdentifier[],\n rects: UseDndContextReturnValue['droppableRects']\n) {\n return items.reduce<ClientRect[]>((accumulator, id, index) => {\n const rect = rects.get(id);\n\n if (rect) {\n accumulator[index] = rect;\n }\n\n return accumulator;\n }, Array(items.length));\n}\n","import {isWindow} from '../type-guards/isWindow';\nimport {isNode} from '../type-guards/isNode';\n\nexport function getWindow(target: Event['target']): typeof window {\n if (!target) {\n return window;\n }\n\n if (isWindow(target)) {\n return target;\n }\n\n if (!isNode(target)) {\n return window;\n }\n\n return target.ownerDocument?.defaultView ?? window;\n}\n","export function isValidIndex(index: number | null): index is number {\n return index !== null && index >= 0;\n}\n","import type {Announcements, ScreenReaderInstructions} from './types';\n\nexport const defaultScreenReaderInstructions: ScreenReaderInstructions = {\n draggable: `\n To pick up a draggable item, press the space bar.\n While dragging, use the arrow keys to move the item.\n Press space again to drop the item in its new position, or press escape to cancel.\n `,\n};\n\nexport const defaultAnnouncements: Announcements = {\n onDragStart({active}) {\n return `Picked up draggable item ${active.id}.`;\n },\n onDragOver({active, over}) {\n if (over) {\n return `Draggable item ${active.id} was moved over droppable area ${over.id}.`;\n }\n\n return `Draggable item ${active.id} is no longer over a droppable area.`;\n },\n onDragEnd({active, over}) {\n if (over) {\n return `Draggable item ${active.id} was dropped over droppable area ${over.id}`;\n }\n\n return `Draggable item ${active.id} was dropped.`;\n },\n onDragCancel({active}) {\n return `Dragging was cancelled. Draggable item ${active.id} was dropped.`;\n },\n};\n","import type {UniqueIdentifier} from '@dnd-kit/core';\n\nexport function itemsEqual(a: UniqueIdentifier[], b: UniqueIdentifier[]) {\n if (a === b) {\n return true;\n }\n\n if (a.length !== b.length) {\n return false;\n }\n\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n\n return true;\n}\n","import {getWindow} from '../execution-context/getWindow';\n\nexport function isDocument(node: Node): node is Document {\n const {Document} = getWindow(node);\n\n return node instanceof Document;\n}\n","import {useCallback, useState} from 'react';\n\nexport function useAnnouncement() {\n const [announcement, setAnnouncement] = useState('');\n const announce = useCallback((value: string | undefined) => {\n if (value != null) {\n setAnnouncement(value);\n }\n }, []);\n\n return {announce, announcement} as const;\n}\n","import {getWindow} from '../execution-context/getWindow';\n\nimport {isWindow} from './isWindow';\n\nexport function isHTMLElement(node: Node | Window): node is HTMLElement {\n if (isWindow(node)) {\n return false;\n }\n\n return node instanceof getWindow(node).HTMLElement;\n}\n","import type {Disabled} from '../types';\n\nexport function normalizeDisabled(disabled: boolean | Disabled): Disabled {\n if (typeof disabled === 'boolean') {\n return {\n draggable: disabled,\n droppable: disabled,\n };\n }\n\n return disabled;\n}\n","import {getWindow} from '../execution-context/getWindow';\n\nexport function isSVGElement(node: Node): node is SVGElement {\n return node instanceof getWindow(node).SVGElement;\n}\n","import {\n isWindow,\n isHTMLElement,\n isDocument,\n isNode,\n isSVGElement,\n} from '../type-guards';\n\nexport function getOwnerDocument(target: Event['target']): Document {\n if (!target) {\n return document;\n }\n\n if (isWindow(target)) {\n return target.document;\n }\n\n if (!isNode(target)) {\n return document;\n }\n\n if (isDocument(target)) {\n return target;\n }\n\n if (isHTMLElement(target) || isSVGElement(target)) {\n return target.ownerDocument;\n }\n\n return document;\n}\n","import type {ClientRect} from '@dnd-kit/core';\nimport type {SortingStrategy} from '../types';\n\n// To-do: We should be calculating scale transformation\nconst defaultScale = {\n scaleX: 1,\n scaleY: 1,\n};\n\nexport const horizontalListSortingStrategy: SortingStrategy = ({\n rects,\n activeNodeRect: fallbackActiveRect,\n activeIndex,\n overIndex,\n index,\n}) => {\n const activeNodeRect = rects[activeIndex] ?? fallbackActiveRect;\n\n if (!activeNodeRect) {\n return null;\n }\n\n const itemGap = getItemGap(rects, index, activeIndex);\n\n if (index === activeIndex) {\n const newIndexRect = rects[overIndex];\n\n if (!newIndexRect) {\n return null;\n }\n\n return {\n x:\n activeIndex < overIndex\n ? newIndexRect.left +\n newIndexRect.width -\n (activeNodeRect.left + activeNodeRect.width)\n : newIndexRect.left - activeNodeRect.left,\n y: 0,\n ...defaultScale,\n };\n }\n\n if (index > activeIndex && index <= overIndex) {\n return {\n x: -activeNodeRect.width - itemGap,\n y: 0,\n ...defaultScale,\n };\n }\n\n if (index < activeIndex && index >= overIndex) {\n return {\n x: activeNodeRect.width + itemGap,\n y: 0,\n ...defaultScale,\n };\n }\n\n return {\n x: 0,\n y: 0,\n ...defaultScale,\n };\n};\n\nfunction getItemGap(rects: ClientRect[], index: number, activeIndex: number) {\n const currentRect: ClientRect | undefined = rects[index];\n const previousRect: ClientRect | undefined = rects[index - 1];\n const nextRect: ClientRect | undefined = rects[index + 1];\n\n if (!currentRect || (!previousRect && !nextRect)) {\n return 0;\n }\n\n if (activeIndex < index) {\n return previousRect\n ? currentRect.left - (previousRect.left + previousRect.width)\n : nextRect.left - (currentRect.left + currentRect.width);\n }\n\n return nextRect\n ? nextRect.left - (currentRect.left + currentRect.width)\n : currentRect.left - (previousRect.left + previousRect.width);\n}\n","import React, {useEffect, useMemo, useState} from 'react';\nimport {createPortal} from 'react-dom';\nimport {useUniqueId} from '@dnd-kit/utilities';\nimport {HiddenText, LiveRegion, useAnnouncement} from '@dnd-kit/accessibility';\n\nimport {DndMonitorListener, useDndMonitor} from '../DndMonitor';\n\nimport type {Announcements, ScreenReaderInstructions} from './types';\nimport {\n defaultAnnouncements,\n defaultScreenReaderInstructions,\n} from './defaults';\n\ninterface Props {\n announcements?: Announcements;\n container?: Element;\n screenReaderInstructions?: ScreenReaderInstructions;\n hiddenTextDescribedById: string;\n}\n\nexport function Accessibility({\n announcements = defaultAnnouncements,\n container,\n hiddenTextDescribedById,\n screenReaderInstructions = defaultScreenReaderInstructions,\n}: Props) {\n const {announce, announcement} = useAnnouncement();\n const liveRegionId = useUniqueId(`DndLiveRegion`);\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n useDndMonitor(\n useMemo<DndMonitorListener>(\n () => ({\n onDragStart({active}) {\n announce(announcements.onDragStart({active}));\n },\n onDragMove({active, over}) {\n if (announcements.onDragMove) {\n announce(announcements.onDragMove({active, over}));\n }\n },\n onDragOver({active, over}) {\n announce(announcements.onDragOver({active, over}));\n },\n onDragEnd({active, over}) {\n announce(announcements.onDragEnd({active, over}));\n },\n onDragCancel({active, over}) {\n announce(announcements.onDragCancel({active, over}));\n },\n }),\n [announce, announcements]\n )\n );\n\n if (!mounted) {\n return null;\n }\n\n const markup = (\n <>\n <HiddenText\n id={hiddenTextDescribedById}\n value={screenReaderInstructions.draggable}\n />\n <LiveRegion id={liveRegionId} announcement={announcement} />\n </>\n );\n\n return container ? createPortal(markup, container) : markup;\n}\n","import {useEffect, useLayoutEffect} from 'react';\n\nimport {canUseDOM} from '../execution-context';\n\n/**\n * A hook that resolves to useEffect on the server and useLayoutEffect on the client\n * @param callback {function} Callback function that is invoked when the dependencies of the hook change\n */\nexport const useIsomorphicLayoutEffect = canUseDOM\n ? useLayoutEffect\n : useEffect;\n","import {useCallback, useRef} from 'react';\n\nimport {useIsomorphicLayoutEffect} from './useIsomorphicLayoutEffect';\n\nexport function useEvent<T extends Function>(handler: T | undefined) {\n const handlerRef = useRef<T | undefined>(handler);\n\n useIsomorphicLayoutEffect(() => {\n handlerRef.current = handler;\n });\n\n return useCallback(function (...args: any) {\n return handlerRef.current?.(...args);\n }, []);\n}\n","import {useCallback, useRef} from 'react';\n\nexport function useInterval() {\n const intervalRef = useRef<number | null>(null);\n\n const set = useCallback((listener: Function, duration: number) => {\n intervalRef.current = setInterval(listener, duration);\n }, []);\n\n const clear = useCallback(() => {\n if (intervalRef.current !== null) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n }, []);\n\n return [set, clear] as const;\n}\n","import {useRef} from 'react';\nimport type {DependencyList} from 'react';\n\nimport {useIsomorphicLayoutEffect} from './useIsomorphicLayoutEffect';\n\nexport function useLatestValue<T extends any>(\n value: T,\n dependencies: DependencyList = [value]\n) {\n const valueRef = useRef<T>(value);\n\n useIsomorphicLayoutEffect(() => {\n if (valueRef.current !== value) {\n valueRef.current = value;\n }\n }, dependencies);\n\n return valueRef;\n}\n","import {useMemo, useRef} from 'react';\n\nexport function useLazyMemo<T>(\n callback: (prevValue: T | undefined) => T,\n dependencies: any[]\n) {\n const valueRef = useRef<T>();\n\n return useMemo(\n () => {\n const newValue = callback(valueRef.current);\n valueRef.current = newValue;\n\n return newValue;\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [...dependencies]\n );\n}\n","import {arrayMove} from '../utilities';\nimport type {SortingStrategy} from '../types';\n\nexport const rectSortingStrategy: SortingStrategy = ({\n rects,\n activeIndex,\n overIndex,\n index,\n}) => {\n const newRects = arrayMove(rects, overIndex, activeIndex);\n\n const oldRect = rects[index];\n const newRect = newRects[index];\n\n if (!newRect || !oldRect) {\n return null;\n }\n\n return {\n x: newRect.left - oldRect.left,\n y: newRect.top - oldRect.top,\n scaleX: newRect.width / oldRect.width,\n scaleY: newRect.height / oldRect.height,\n };\n};\n","import {useRef, useCallback} from 'react';\n\nimport {useEvent} from './useEvent';\n\nexport function useNodeRef(\n onChange?: (\n newElement: HTMLElement | null,\n previousElement: HTMLElement | null\n ) => void\n) {\n const onChangeHandler = useEvent(onChange);\n const node = useRef<HTMLElement | null>(null);\n const setNodeRef = useCallback(\n (element: HTMLElement | null) => {\n if (element !== node.current) {\n onChangeHandler?.(element, node.current);\n }\n\n node.current = element;\n },\n //eslint-disable-next-line\n []\n );\n\n return [node, setNodeRef] as const;\n}\n","import {useRef, useEffect} from 'react';\n\nexport function usePrevious<T>(value: T) {\n const ref = useRef<T>();\n\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref.current;\n}\n","import type {SortingStrategy} from '../types';\n\nexport const rectSwappingStrategy: SortingStrategy = ({\n activeIndex,\n index,\n rects,\n overIndex,\n}) => {\n let oldRect;\n let newRect;\n\n if (index === activeIndex) {\n oldRect = rects[index];\n newRect = rects[overIndex];\n }\n\n if (index === overIndex) {\n oldRect = rects[index];\n newRect = rects[activeIndex];\n }\n\n if (!newRect || !oldRect) {\n return null;\n }\n\n return {\n x: newRect.left - oldRect.left,\n y: newRect.top - oldRect.top,\n scaleX: newRect.width / oldRect.width,\n scaleY: newRect.height / oldRect.height,\n };\n};\n","import {useMemo} from 'react';\n\nlet ids: Record<string, number> = {};\n\nexport function useUniqueId(prefix: string, value?: string) {\n return useMemo(() => {\n if (value) {\n return value;\n }\n\n const id = ids[prefix] == null ? 0 : ids[prefix] + 1;\n ids[prefix] = id;\n\n return `${prefix}-${id}`;\n }, [prefix, value]);\n}\n","import type {Coordinates, UniqueIdentifier} from '../types';\nimport type {DroppableContainer} from './types';\n\nexport enum Action {\n DragStart = 'dragStart',\n DragMove = 'dragMove',\n DragEnd = 'dragEnd',\n DragCancel = 'dragCancel',\n DragOver = 'dragOver',\n RegisterDroppable = 'registerDroppable',\n SetDroppableDisabled = 'setDroppableDisabled',\n UnregisterDroppable = 'unregisterDroppable',\n}\n\nexport type Actions =\n | {\n type: Action.DragStart;\n active: UniqueIdentifier;\n initialCoordinates: Coordinates;\n }\n | {type: Action.DragMove; coordinates: Coordinates}\n | {type: Action.DragEnd}\n | {type: Action.DragCancel}\n | {\n type: Action.RegisterDroppable;\n element: DroppableContainer;\n }\n | {\n type: Action.SetDroppableDisabled;\n id: UniqueIdentifier;\n key: UniqueIdentifier;\n disabled: boolean;\n }\n | {\n type: Action.UnregisterDroppable;\n id: UniqueIdentifier;\n key: UniqueIdentifier;\n };\n","function createAdjustmentFn(modifier: number) {\n return <T extends Record<U, number>, U extends string>(\n object: T,\n ...adjustments: Partial<T>[]\n ): T => {\n return adjustments.reduce<T>(\n (accumulator, adjustment) => {\n const entries = Object.entries(adjustment) as [U, number][];\n\n for (const [key, valueAdjustment] of entries) {\n const value = accumulator[key];\n\n if (value != null) {\n accumulator[key] = (value + modifier * valueAdjustment) as T[U];\n }\n }\n\n return accumulator;\n },\n {\n ...object,\n }\n );\n };\n}\n\nexport const add = createAdjustmentFn(1);\nexport const subtract = createAdjustmentFn(-1);\n","export function noop(..._args: any) {}\n","import {useMemo} from 'react';\n\nimport type {Sensor, SensorDescriptor, SensorOptions} from './types';\n\nexport function useSensor<T extends SensorOptions>(\n sensor: Sensor<T>,\n options?: T\n): SensorDescriptor<T> {\n return useMemo(\n () => ({\n sensor,\n options: options ?? ({} as T),\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [sensor, options]\n );\n}\n","import {useMemo} from 'react';\n\nimport type {SensorDescriptor, SensorOptions} from './types';\n\nexport function useSensors(\n ...sensors: (SensorDescriptor<any> | undefined | null)[]\n): SensorDescriptor<SensorOptions>[] {\n return useMemo(\n () =>\n [...sensors].filter(\n (sensor): sensor is SensorDescriptor<any> => sensor != null\n ),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [...sensors]\n );\n}\n","import type {ClientRect} from '@dnd-kit/core';\nimport type {SortingStrategy} from '../types';\n\n// To-do: We should be calculating scale transformation\nconst defaultScale = {\n scaleX: 1,\n scaleY: 1,\n};\n\nexport const verticalListSortingStrategy: SortingStrategy = ({\n activeIndex,\n activeNodeRect: fallbackActiveRect,\n index,\n rects,\n overIndex,\n}) => {\n const activeNodeRect = rects[activeIndex] ?? fallbackActiveRect;\n\n if (!activeNodeRect) {\n return null;\n }\n\n if (index === activeIndex) {\n const overIndexRect = rects[overIndex];\n\n if (!overIndexRect) {\n return null;\n }\n\n return {\n x: 0,\n y:\n activeIndex < overIndex\n ? overIndexRect.top +\n overIndexRect.height -\n (activeNodeRect.top + activeNodeRect.height)\n : overIndexRect.top - activeNodeRect.top,\n ...defaultScale,\n };\n }\n\n const itemGap = getItemGap(rects, index, activeIndex);\n\n if (index > activeIndex && index <= overIndex) {\n return {\n x: 0,\n y: -activeNodeRect.height - itemGap,\n ...defaultScale,\n };\n }\n\n if (index < activeIndex && index >= overIndex) {\n return {\n x: 0,\n y: activeNodeRect.height + itemGap,\n ...defaultScale,\n };\n }\n\n return {\n x: 0,\n y: 0,\n ...defaultScale,\n };\n};\n\nfunction getItemGap(\n clientRects: ClientRect[],\n index: number,\n activeIndex: number\n) {\n const currentRect: ClientRect | undefined = clientRects[index];\n const previousRect: ClientRect | undefined = clientRects[index - 1];\n const nextRect: ClientRect | undefined = clientRects[index + 1];\n\n if (!currentRect) {\n return 0;\n }\n\n if (activeIndex < index) {\n return previousRect\n ? currentRect.top - (previousRect.top + previousRect.height)\n : nextRect\n ? nextRect.top - (currentRect.top + currentRect.height)\n : 0;\n }\n\n return nextRect\n ? nextRect.top - (currentRect.top + currentRect.height)\n : previousRect\n ? currentRect.top - (previousRect.top + previousRect.height)\n : 0;\n}\n","import type {Coordinates} from '../../types';\n\nexport const defaultCoordinates: Coordinates = Object.freeze({\n x: 0,\n y: 0,\n});\n","export function hasViewportRelativeCoordinates(\n event: Event\n): event is Event & Pick<PointerEvent, 'clientX' | 'clientY'> {\n return 'clientX' in event && 'clientY' in event;\n}\n","import {getWindow} from '../execution-context';\n\nexport function isKeyboardEvent(\n event: Event | undefined | null\n): event is KeyboardEvent {\n if (!event) {\n return false;\n }\n\n const {KeyboardEvent} = getWindow(event.target);\n\n return KeyboardEvent && event instanceof KeyboardEvent;\n}\n","import type {Coordinates} from '../../types';\n\n/**\n * Returns the distance between two points\n */\nexport function distanceBetween(p1: Coordinates, p2: Coordinates) {\n return Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));\n}\n","import {getEventCoordinates} from '@dnd-kit/utilities';\nimport type {ClientRect} from '../../types';\n\nexport function getRelativeTransformOrigin(\n event: MouseEvent | TouchEvent | KeyboardEvent,\n rect: ClientRect\n) {\n const eventCoordinates = getEventCoordinates(event);\n\n if (!eventCoordinates) {\n return '0 0';\n }\n\n const transformOrigin = {\n x: ((eventCoordinates.x - rect.left) / rect.width) * 100,\n y: ((eventCoordinates.y - rect.top) / rect.height) * 100,\n };\n\n return `${transformOrigin.x}% ${transformOrigin.y}%`;\n}\n","import {getWindow} from '../execution-context';\n\nexport function isTouchEvent(\n event: Event | undefined | null\n): event is TouchEvent {\n if (!event) {\n return false;\n }\n\n const {TouchEvent} = getWindow(event.target);\n\n return TouchEvent && event instanceof TouchEvent;\n}\n","/* eslint-disable no-redeclare */\nimport type {ClientRect} from '../../types';\n\nimport type {Collision, CollisionDescriptor} from './types';\n\n/**\n * Sort collisions from smallest to greatest value\n */\nexport function sortCollisionsAsc(\n {data: {value: a}}: CollisionDescriptor,\n {data: {value: b}}: CollisionDescriptor\n) {\n return a - b;\n}\n\n/**\n * Sort collisions from greatest to smallest value\n */\nexport function sortCollisionsDesc(\n {data: {value: a}}: CollisionDescriptor,\n {data: {value: b}}: CollisionDescriptor\n) {\n return b - a;\n}\n\n/**\n * Returns the coordinates of the corners of a given rectangle:\n * [TopLeft {x, y}, TopRight {x, y}, BottomLeft {x, y}, BottomRight {x, y}]\n */\nexport function cornersOfRectangle({left, top, height, width}: ClientRect) {\n return [\n {\n x: left,\n y: top,\n },\n {\n x: left + width,\n y: top,\n },\n {\n x: left,\n y: top + height,\n },\n {\n x: left + width,\n y: top + height,\n },\n ];\n}\n\n/**\n * Returns the first collision, or null if there isn't one.\n * If a property is specified, returns the specified property of the first collision.\n */\nexport function getFirstCollision(\n collisions: Collision[] | null | undefined\n): Collision | null;\nexport function getFirstCollision<T extends keyof Collision>(\n collisions: Collision[] | null | undefined,\n property: T\n): Collision[T] | null;\nexport function getFirstCollision(\n collisions: Collision[] | null | undefined,\n property?: keyof Collision\n) {\n if (!collisions || collisions.length === 0) {\n return null;\n }\n\n const [firstCollision] = collisions;\n\n return property ? firstCollision[property] : firstCollision;\n}\n","import type {Coordinates} from './types';\nimport {isTouchEvent, hasViewportRelativeCoordinates} from '../event';\n\n/**\n * Returns the normalized x and y coordinates for mouse and touch events.\n */\nexport function getEventCoordinates(event: Event): Coordinates | null {\n if (isTouchEvent(event)) {\n if (event.touches && event.touches.length) {\n const {clientX: x, clientY: y} = event.touches[0];\n\n return {\n x,\n y,\n };\n } else if (event.changedTouches && event.changedTouches.length) {\n const {clientX: x, clientY: y} = event.changedTouches[0];\n\n return {\n x,\n y,\n };\n }\n }\n\n if (hasViewportRelativeCoordinates(event)) {\n return {\n x: event.clientX,\n y: event.clientY,\n };\n }\n\n return null;\n}\n","export type Transform = {\n x: number;\n y: number;\n scaleX: number;\n scaleY: number;\n};\n\nexport interface Transition {\n property: string;\n easing: string;\n duration: number;\n}\n\nexport const CSS = Object.freeze({\n Translate: {\n toString(transform: Transform | null) {\n if (!transform) {\n return;\n }\n\n const {x, y} = transform;\n\n return `translate3d(${x ? Math.round(x) : 0}px, ${\n y ? Math.round(y) : 0\n }px, 0)`;\n },\n },\n Scale: {\n toString(transform: Transform | null) {\n if (!transform) {\n return;\n }\n\n const {scaleX, scaleY} = transform;\n\n return `scaleX(${scaleX}) scaleY(${scaleY})`;\n },\n },\n Transform: {\n toString(transform: Transform | null) {\n if (!transform) {\n return;\n }\n\n return [\n CSS.Translate.toString(transform),\n CSS.Scale.toString(transform),\n ].join(' ');\n },\n },\n Transition: {\n toString({property, duration, easing}: Transition) {\n return `${property} ${duration}ms ${easing}`;\n },\n },\n});\n","import React, {useEffect, useMemo, useRef} from 'react';\nimport {useDndContext, ClientRect, UniqueIdentifier} from '@dnd-kit/core';\nimport {useIsomorphicLayoutEffect, useUniqueId} from '@dnd-kit/utilities';\n\nimport type {Disabled, SortingStrategy} from '../types';\nimport {getSortedRects, itemsEqual, normalizeDisabled} from '../utilities';\nimport {rectSortingStrategy} from '../strategies';\n\nexport interface Props {\n children: React.ReactNode;\n items: (UniqueIdentifier | {id: UniqueIdentifier})[];\n strategy?: SortingStrategy;\n id?: string;\n disabled?: boolean | Disabled;\n}\n\nconst ID_PREFIX = 'Sortable';\n\ninterface ContextDescriptor {\n activeIndex: number;\n containerId: string;\n disabled: Disabled;\n disableTransforms: boolean;\n items: UniqueIdentifier[];\n overIndex: number;\n useDragOverlay: boolean;\n sortedRects: ClientRect[];\n strategy: SortingStrategy;\n}\n\nexport const Context = React.createContext<ContextDescriptor>({\n activeIndex: -1,\n containerId: ID_PREFIX,\n disableTransforms: false,\n items: [],\n overIndex: -1,\n useDragOverlay: false,\n sortedRects: [],\n strategy: rectSortingStrategy,\n disabled: {\n draggable: false,\n droppable: false,\n },\n});\n\nexport function SortableContext({\n children,\n id,\n items: userDefinedItems,\n strategy = rectSortingStrategy,\n disabled: disabledProp = false,\n}: Props) {\n const {\n active,\n dragOverlay,\n droppableRects,\n over,\n measureDroppableContainers,\n } = useDndContext();\n const containerId = useUniqueId(ID_PREFIX, id);\n const useDragOverlay = Boolean(dragOverlay.rect !== null);\n const items = useMemo<UniqueIdentifier[]>(\n () =>\n userDefinedItems.map((item) =>\n typeof item === 'object' && 'id' in item ? item.id : item\n ),\n [userDefinedItems]\n );\n const isDragging = active != null;\n const activeIndex = active ? items.indexOf(active.id) : -1;\n const overIndex = over ? items.indexOf(over.id) : -1;\n const previousItemsRef = useRef(items);\n const itemsHaveChanged = !itemsEqual(items, previousItemsRef.current);\n const disableTransforms =\n (overIndex !== -1 && activeIndex === -1) || itemsHaveChanged;\n const disabled = normalizeDisabled(disabledProp);\n\n useIsomorphicLayoutEffect(() => {\n if (itemsHaveChanged && isDragging) {\n measureDroppableContainers(items);\n }\n }, [itemsHaveChanged, items, isDragging, measureDroppableContainers]);\n\n useEffect(() => {\n previousItemsRef.current = items;\n }, [items]);\n\n const contextValue = useMemo(\n (): ContextDescriptor => ({\n activeIndex,\n containerId,\n disabled,\n disableTransforms,\n items,\n overIndex,\n useDragOverlay,\n sortedRects: getSortedRects(items, droppableRects),\n strategy,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n activeIndex,\n containerId,\n disabled.draggable,\n disabled.droppable,\n disableTransforms,\n items,\n overIndex,\n droppableRects,\n useDragOverlay,\n strategy,\n ]\n );\n\n return <Context.Provider value={contextValue}>{children}</Context.Provider>;\n}\n","import {distanceBetween} from '../coordinates';\nimport type {Coordinates, ClientRect} from '../../types';\n\nimport type {CollisionDescriptor, CollisionDetection} from './types';\nimport {sortCollisionsAsc} from './helpers';\n\n/**\n * Returns the coordinates of the center of a given ClientRect\n */\nfunction centerOfRectangle(\n rect: ClientRect,\n left = rect.left,\n top = rect.top\n): Coordinates {\n return {\n x: left + rect.width * 0.5,\n y: top + rect.height * 0.5,\n };\n}\n\n/**\n * Returns the closest rectangles from an array of rectangles to the center of a given\n * rectangle.\n */\nexport const closestCenter: CollisionDetection = ({\n collisionRect,\n droppableRects,\n droppableContainers,\n}) => {\n const centerRect = centerOfRectangle(\n collisionRect,\n collisionRect.left,\n collisionRect.top\n );\n const collisions: CollisionDescriptor[] = [];\n\n for (const droppableContainer of droppableContainers) {\n const {id} = droppableContainer;\n const rect = droppableRects.get(id);\n\n if (rect) {\n const distBetween = distanceBetween(centerOfRectangle(rect), centerRect);\n\n collisions.push({id, data: {droppableContainer, value: distBetween}});\n }\n }\n\n return collisions.sort(sortCollisionsAsc);\n};\n","const SELECTOR =\n 'a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]';\n\nexport function findFirstFocusableNode(\n element: HTMLElement\n): HTMLElement | null {\n if (element.matches(SELECTOR)) {\n return element;\n }\n\n return element.querySelector(SELECTOR);\n}\n","import {CSS} from '@dnd-kit/utilities';\n\nimport {arrayMove} from '../utilities';\n\nimport type {\n AnimateLayoutChanges,\n NewIndexGetter,\n SortableTransition,\n} from './types';\n\nexport const defaultNewIndexGetter: NewIndexGetter = ({\n id,\n items,\n activeIndex,\n overIndex,\n}) => arrayMove(items, activeIndex, overIndex).indexOf(id);\n\nexport const defaultAnimateLayoutChanges: AnimateLayoutChanges = ({\n containerId,\n isSorting,\n wasDragging,\n index,\n items,\n newIndex,\n previousItems,\n previousContainerId,\n transition,\n}) => {\n if (!transition || !wasDragging) {\n return false;\n }\n\n if (previousItems !== items && index === newIndex) {\n return false;\n }\n\n if (isSorting) {\n return true;\n }\n\n return newIndex !== index && containerId === previousContainerId;\n};\n\nexport const defaultTransition: SortableTransition = {\n duration: 200,\n easing: 'ease',\n};\n\nexport const transitionProperty = 'transform';\n\nexport const disabledTransition = CSS.Transition.toString({\n property: transitionProperty,\n duration: 0,\n easing: 'linear',\n});\n\nexport const defaultAttributes = {\n roleDescription: 'sortable',\n};\n","import {distanceBetween} from '../coordinates';\n\nimport type {CollisionDescriptor, CollisionDetection} from './types';\nimport {cornersOfRectangle, sortCollisionsAsc} from './helpers';\n\n/**\n * Returns the closest rectangles from an array of rectangles to the corners of\n * another rectangle.\n */\nexport const closestCorners: CollisionDetection = ({\n collisionRect,\n droppableRects,\n droppableContainers,\n}) => {\n const corners = cornersOfRectangle(collisionRect);\n const collisions: CollisionDescriptor[] = [];\n\n for (const droppableContainer of droppableContainers) {\n const {id} = droppableContainer;\n const rect = droppableRects.get(id);\n\n if (rect) {\n const rectCorners = cornersOfRectangle(rect);\n const distances = corners.reduce((accumulator, corner, index) => {\n return accumulator + distanceBetween(rectCorners[index], corner);\n }, 0);\n const effectiveDistance = Number((distances / 4).toFixed(4));\n\n collisions.push({\n id,\n data: {droppableContainer, value: effectiveDistance},\n });\n }\n }\n\n return collisions.sort(sortCollisionsAsc);\n};\n","import {useEffect, useRef, useState} from 'react';\nimport {getClientRect, ClientRect} from '@dnd-kit/core';\nimport {Transform, useIsomorphicLayoutEffect} from '@dnd-kit/utilities';\n\ninterface Arguments {\n rect: React.MutableRefObject<ClientRect | null>;\n disabled: boolean;\n index: number;\n node: React.MutableRefObject<HTMLElement | null>;\n}\n\n/*\n * When the index of an item changes while sorting,\n * we need to temporarily disable the transforms\n */\nexport function useDerivedTransform({disabled, index, node, rect}: Arguments) {\n const [derivedTransform, setDerivedtransform] = useState<Transform | null>(\n null\n );\n const previousIndex = useRef(index);\n\n useIsomorphicLayoutEffect(() => {\n if (!disabled && index !== previousIndex.current && node.current) {\n const initial = rect.current;\n\n if (initial) {\n const current = getClientRect(node.current, {\n ignoreTransform: true,\n });\n\n const delta = {\n x: initial.left - current.left,\n y: initial.top - current.top,\n scaleX: initial.width / current.width,\n scaleY: initial.height / current.height,\n };\n\n if (delta.x || delta.y) {\n setDerivedtransform(delta);\n }\n }\n }\n\n if (index !== previousIndex.current) {\n previousIndex.current = index;\n }\n }, [disabled, index, node, rect]);\n\n useEffect(() => {\n if (derivedTransform) {\n setDerivedtransform(null);\n }\n }, [derivedTransform]);\n\n return derivedTransform;\n}\n","import type {ClientRect} from '../../types';\n\nimport type {CollisionDescriptor, CollisionDetection} from './types';\nimport {sortCollisionsDesc} from './helpers';\n\n/**\n * Returns the intersecting rectangle area between two rectangles\n */\nexport function getIntersectionRatio(\n entry: ClientRect,\n target: ClientRect\n): number {\n const top = Math.max(target.top, entry.top);\n const left = Math.max(target.left, entry.left);\n const right = Math.min(target.left + target.width, entry.left + entry.width);\n const bottom = Math.min(target.top + target.height, entry.top + entry.height);\n const width = right - left;\n const height = bottom - top;\n\n if (left < right && top < bottom) {\n const targetArea = target.width * target.height;\n const entryArea = entry.width * entry.height;\n const intersectionArea = width * height;\n const intersectionRatio =\n intersectionArea / (targetArea + entryArea - intersectionArea);\n\n return Number(intersectionRatio.toFixed(4));\n }\n\n // Rectangles do not overlap, or overlap has an area of zero (edge/corner overlap)\n return 0;\n}\n\n/**\n * Returns the rectangles that has the greatest intersection area with a given\n * rectangle in an array of rectangles.\n */\nexport const rectIntersection: CollisionDetection = ({\n collisionRect,\n droppableRects,\n droppableContainers,\n}) => {\n const collisions: CollisionDescriptor[] = [];\n\n for (const droppableContainer of droppableContainers) {\n const {id} = droppableContainer;\n const rect = droppableRects.get(id);\n\n if (rect) {\n const intersectionRatio = getIntersectionRatio(rect, collisionRect);\n\n if (intersectionRatio > 0) {\n collisions.push({\n id,\n data: {droppableContainer, value: intersectionRatio},\n });\n }\n }\n }\n\n return collisions.sort(sortCollisionsDesc);\n};\n","import {useContext, useEffect, useMemo, useRef} from 'react';\nimport {\n useDraggable,\n useDroppable,\n UseDraggableArguments,\n UseDroppableArguments,\n} from '@dnd-kit/core';\nimport type {Data} from '@dnd-kit/core';\nimport {CSS, isKeyboardEvent, useCombinedRefs} from '@dnd-kit/utilities';\n\nimport {Context} from '../components';\nimport type {Disabled, SortableData, SortingStrategy} from '../types';\nimport {isValidIndex} from '../utilities';\nimport {\n defaultAnimateLayoutChanges,\n defaultAttributes,\n defaultNewIndexGetter,\n defaultTransition,\n disabledTransition,\n transitionProperty,\n} from './defaults';\nimport type {\n AnimateLayoutChanges,\n NewIndexGetter,\n SortableTransition,\n} from './types';\nimport {useDerivedTransform} from './utilities';\n\nexport interface Arguments\n extends Omit<UseDraggableArguments, 'disabled'>,\n Pick<UseDroppableArguments, 'resizeObserverConfig'> {\n animateLayoutChanges?: AnimateLayoutChanges;\n disabled?: boolean | Disabled;\n getNewIndex?: NewIndexGetter;\n strategy?: SortingStrategy;\n transition?: SortableTransition | null;\n}\n\nexport function useSortable({\n animateLayoutChanges = defaultAnimateLayoutChanges,\n attributes: userDefinedAttributes,\n disabled: localDisabled,\n data: customData,\n getNewIndex = defaultNewIndexGetter,\n id,\n strategy: localStrategy,\n resizeObserverConfig,\n transition = defaultTransition,\n}: Arguments) {\n const {\n items,\n containerId,\n activeIndex,\n disabled: globalDisabled,\n disableTransforms,\n sortedRects,\n overIndex,\n useDragOverlay,\n strategy: globalStrategy,\n } = useContext(Context);\n const disabled: Disabled = normalizeLocalDisabled(\n localDisabled,\n globalDisabled\n );\n const index = items.indexOf(id);\n const data = useMemo<SortableData & Data>(\n () => ({sortable: {containerId, index, items}, ...customData}),\n [containerId, customData, index, items]\n );\n const itemsAfterCurrentSortable = useMemo(\n () => items.slice(items.indexOf(id)),\n [items, id]\n );\n const {\n rect,\n node,\n isOver,\n setNodeRef: setDroppableNodeRef,\n } = useDroppable({\n id,\n data,\n disabled: disabled.droppable,\n resizeObserverConfig: {\n updateMeasurementsFor: itemsAfterCurrentSortable,\n ...resizeObserverConfig,\n },\n });\n const {\n active,\n activatorEvent,\n activeNodeRect,\n attributes,\n setNodeRef: setDraggableNodeRef,\n listeners,\n isDragging,\n over,\n setActivatorNodeRef,\n transform,\n } = useDraggable({\n id,\n data,\n attributes: {\n ...defaultAttributes,\n ...userDefinedAttributes,\n },\n disabled: disabled.draggable,\n });\n const setNodeRef = useCombinedRefs(setDroppableNodeRef, setDraggableNodeRef);\n const isSorting = Boolean(active);\n const displaceItem =\n isSorting &&\n !disableTransforms &&\n isValidIndex(activeIndex) &&\n isValidIndex(overIndex);\n const shouldDisplaceDragSource = !useDragOverlay && isDragging;\n const dragSourceDisplacement =\n shouldDisplaceDragSource && displaceItem ? transform : null;\n const strategy = localStrategy ?? globalStrategy;\n const finalTransform = displaceItem\n ? dragSourceDisplacement ??\n strategy({\n rects: sortedRects,\n activeNodeRect,\n activeIndex,\n overIndex,\n index,\n })\n : null;\n const newIndex =\n isValidIndex(activeIndex) && isValidIndex(overIndex)\n ? getNewIndex({id, items, activeIndex, overIndex})\n : index;\n const activeId = active?.id;\n const previous = useRef({\n activeId,\n items,\n newIndex,\n containerId,\n });\n const itemsHaveChanged = items !== previous.current.items;\n const shouldAnimateLayoutChanges = animateLayoutChanges({\n active,\n containerId,\n isDragging,\n isSorting,\n id,\n index,\n items,\n newIndex: previous.current.newIndex,\n previousItems: previous.current.items,\n previousContainerId: previous.current.containerId,\n transition,\n wasDragging: previous.current.activeId != null,\n });\n\n const derivedTransform = useDerivedTransform({\n disabled: !shouldAnimateLayoutChanges,\n index,\n node,\n rect,\n });\n\n useEffect(() => {\n if (isSorting && previous.current.newIndex !== newIndex) {\n previous.current.newIndex = newIndex;\n }\n\n if (containerId !== previous.current.containerId) {\n previous.current.containerId = containerId;\n }\n\n if (items !== previous.current.items) {\n previous.current.items = items;\n }\n }, [isSorting, newIndex, containerId, items]);\n\n useEffect(() => {\n if (activeId === previous.current.activeId) {\n return;\n }\n\n if (activeId != null && previous.current.activeId == null) {\n previous.current.activeId = activeId;\n return;\n }\n\n const timeoutId = setTimeout(() => {\n previous.current.activeId = activeId;\n }, 50);\n\n return () => clearTimeout(timeoutId);\n }, [activeId]);\n\n return {\n active,\n activeIndex,\n attributes,\n data,\n rect,\n index,\n newIndex,\n items,\n isOver,\n isSorting,\n isDragging,\n listeners,\n node,\n overIndex,\n over,\n setNodeRef,\n setActivatorNodeRef,\n setDroppableNodeRef,\n setDraggableNodeRef,\n transform: derivedTransform ?? finalTransform,\n transition: getTransition(),\n };\n\n function getTransition() {\n if (\n // Temporarily disable transitions for a single frame to set up derived transforms\n derivedTransform ||\n // Or to prevent items jumping to back to their \"new\" position when items change\n (itemsHaveChanged && previous.current.newIndex === index)\n ) {\n return disabledTransition;\n }\n\n if (\n (shouldDisplaceDragSource && !isKeyboardEvent(activatorEvent)) ||\n !transition\n ) {\n return undefined;\n }\n\n if (isSorting || shouldAnimateLayoutChanges) {\n return CSS.Transition.toString({\n ...transition,\n property: transitionProperty,\n });\n }\n\n return undefined;\n }\n}\n\nfunction normalizeLocalDisabled(\n localDisabled: Arguments['disabled'],\n globalDisabled: Disabled\n) {\n if (typeof localDisabled === 'boolean') {\n return {\n draggable: localDisabled,\n // Backwards compatibility\n droppable: false,\n };\n }\n\n return {\n draggable: localDisabled?.draggable ?? globalDisabled.draggable,\n droppable: localDisabled?.droppable ?? globalDisabled.droppable,\n };\n}\n","import type {Coordinates, ClientRect} from '../../types';\nimport {distanceBetween} from '../coordinates';\n\nimport type {CollisionDescriptor, CollisionDetection} from './types';\nimport {cornersOfRectangle, sortCollisionsAsc} from './helpers';\n\n/**\n * Check if a given point is contained within a bounding rectangle\n */\nfunction isPointWithinRect(point: Coordinates, rect: ClientRect): boolean {\n const {top, left, bottom, right} = rect;\n\n return (\n top <= point.y && point.y <= bottom && left <= point.x && point.x <= right\n );\n}\n\n/**\n * Returns the rectangles that the pointer is hovering over\n */\nexport const pointerWithin: CollisionDetection = ({\n droppableContainers,\n droppableRects,\n pointerCoordinates,\n}) => {\n if (!pointerCoordinates) {\n return [];\n }\n\n const collisions: CollisionDescriptor[] = [];\n\n for (const droppableContainer of droppableContainers) {\n const {id} = droppableContainer;\n const rect = droppableRects.get(id);\n\n if (rect && isPointWithinRect(pointerCoordinates, rect)) {\n /* There may be more than a single rectangle intersecting\n * with the pointer coordinates. In order to sort the\n * colliding rectangles, we measure the distance between\n * the pointer and the corners of the intersecting rectangle\n */\n const corners = cornersOfRectangle(rect);\n const distances = corners.reduce((accumulator, corner) => {\n return accumulator + distanceBetween(pointerCoordinates, corner);\n }, 0);\n const effectiveDistance = Number((distances / 4).toFixed(4));\n\n collisions.push({\n id,\n data: {droppableContainer, value: effectiveDistance},\n });\n }\n }\n\n return collisions.sort(sortCollisionsAsc);\n};\n","import type {Transform} from '@dnd-kit/utilities';\nimport type {ClientRect} from '../../types';\n\nexport function adjustScale(\n transform: Transform,\n rect1: ClientRect | null,\n rect2: ClientRect | null\n): Transform {\n return {\n ...transform,\n scaleX: rect1 && rect2 ? rect1.width / rect2.width : 1,\n scaleY: rect1 && rect2 ? rect1.height / rect2.height : 1,\n };\n}\n","import type {Coordinates, ClientRect} from '../../types';\nimport {defaultCoordinates} from '../coordinates';\n\nexport function getRectDelta(\n rect1: ClientRect | null,\n rect2: ClientRect | null\n): Coordinates {\n return rect1 && rect2\n ? {\n x: rect1.left - rect2.left,\n y: rect1.top - rect2.top,\n }\n : defaultCoordinates;\n}\n","import type {Coordinates, ClientRect} from '../../types';\n\nexport function createRectAdjustmentFn(modifier: number) {\n return function adjustClientRect(\n rect: ClientRect,\n ...adjustments: Coordinates[]\n ): ClientRect {\n return adjustments.reduce<ClientRect>(\n (acc, adjustment) => ({\n ...acc,\n top: acc.top + modifier * adjustment.y,\n bottom: acc.bottom + modifier * adjustment.y,\n left: acc.left + modifier * adjustment.x,\n right: acc.right + modifier * adjustment.x,\n }),\n {...rect}\n );\n };\n}\n\nexport const getAdjustedRect = createRectAdjustmentFn(1);\n","import type {Transform} from '@dnd-kit/utilities';\n\nexport function parseTransform(transform: string): Transform | null {\n if (transform.startsWith('matrix3d(')) {\n const transformArray = transform.slice(9, -1).split(/, /);\n\n return {\n x: +transformArray[12],\n y: +transformArray[13],\n scaleX: +transformArray[0],\n scaleY: +transformArray[5],\n };\n } else if (transform.startsWith('matrix(')) {\n const transformArray = transform.slice(7, -1).split(/, /);\n\n return {\n x: +transformArray[4],\n y: +transformArray[5],\n scaleX: +transformArray[0],\n scaleY: +transformArray[3],\n };\n }\n\n return null;\n}\n","import type {ClientRect} from '../../types';\n\nimport {parseTransform} from './parseTransform';\n\nexport function inverseTransform(\n rect: ClientRect,\n transform: string,\n transformOrigin: string\n): ClientRect {\n const parsedTransform = parseTransform(transform);\n\n if (!parsedTransform) {\n return rect;\n }\n\n const {scaleX, scaleY, x: translateX, y: translateY} = parsedTransform;\n\n const x = rect.left - translateX - (1 - scaleX) * parseFloat(transformOrigin);\n const y =\n rect.top -\n translateY -\n (1 - scaleY) *\n parseFloat(transformOrigin.slice(transformOrigin.indexOf(' ') + 1));\n const w = scaleX ? rect.width / scaleX : rect.width;\n const h = scaleY ? rect.height / scaleY : rect.height;\n\n return {\n width: w,\n height: h,\n top: y,\n right: x + w,\n bottom: y + h,\n left: x,\n };\n}\n","import {getWindow} from '@dnd-kit/utilities';\n\nimport type {ClientRect} from '../../types';\nimport {inverseTransform} from '../transform';\n\ninterface Options {\n ignoreTransform?: boolean;\n}\n\nconst defaultOptions: Options = {ignoreTransform: false};\n\n/**\n * Returns the bounding client rect of an element relative to the viewport.\n */\nexport function getClientRect(\n element: Element,\n options: Options = defaultOptions\n) {\n let rect: ClientRect = element.getBoundingClientRect();\n\n if (options.ignoreTransform) {\n const {transform, transformOrigin} =\n getWindow(element).getComputedStyle(element);\n\n if (transform) {\n rect = inverseTransform(rect, transform, transformOrigin);\n }\n }\n\n const {top, left, width, height, bottom, right} = rect;\n\n return {\n top,\n left,\n width,\n height,\n bottom,\n right,\n };\n}\n\n/**\n * Returns the bounding client rect of an element relative to the viewport.\n *\n * @remarks\n * The ClientRect returned by this method does not take into account transforms\n * applied to the element it measures.\n *\n */\nexport function getTransformAgnosticClientRect(element: Element): ClientRect {\n return getClientRect(element, {ignoreTransform: true});\n}\n","import type {\n Active,\n Data,\n DroppableContainer,\n DraggableNode,\n Over,\n} from '@dnd-kit/core';\n\nimport type {SortableData} from './data';\n\nexport function hasSortableData<\n T extends Active | Over | DraggableNode | DroppableContainer\n>(\n entry: T | null | undefined\n): entry is T & {data: {current: Data<SortableData>}} {\n if (!entry) {\n return false;\n }\n\n const data = entry.data.current;\n\n if (\n data &&\n 'sortable' in data &&\n typeof data.sortable === 'object' &&\n 'containerId' in data.sortable &&\n 'items' in data.sortable &&\n 'index' in data.sortable\n ) {\n return true;\n }\n\n return false;\n}\n","import type {ClientRect} from '../../types';\n\nexport function getWindowClientRect(element: typeof window): ClientRect {\n const width = element.innerWidth;\n const height = element.innerHeight;\n\n return {\n top: 0,\n left: 0,\n right: width,\n bottom: height,\n width,\n height,\n };\n}\n","import {\n closestCorners,\n getScrollableAncestors,\n getFirstCollision,\n KeyboardCode,\n DroppableContainer,\n KeyboardCoordinateGetter,\n} from '@dnd-kit/core';\nimport {subtract} from '@dnd-kit/utilities';\n\nimport {hasSortableData} from '../../types';\n\nconst directions: string[] = [\n KeyboardCode.Down,\n KeyboardCode.Right,\n KeyboardCode.Up,\n KeyboardCode.Left,\n];\n\nexport const sortableKeyboardCoordinates: KeyboardCoordinateGetter = (\n event,\n {\n context: {\n active,\n collisionRect,\n droppableRects,\n droppableContainers,\n over,\n scrollableAncestors,\n },\n }\n) => {\n if (directions.includes(event.code)) {\n event.preventDefault();\n\n if (!active || !collisionRect) {\n return;\n }\n\n const filteredContainers: DroppableContainer[] = [];\n\n droppableContainers.getEnabled().forEach((entry) => {\n if (!entry || entry?.disabled) {\n return;\n }\n\n const rect = droppableRects.get(entry.id);\n\n if (!rect) {\n return;\n }\n\n switch (event.code) {\n case KeyboardCode.Down:\n if (collisionRect.top < rect.top) {\n filteredContainers.push(entry);\n }\n break;\n case KeyboardCode.Up:\n if (collisionRect.top > rect.top) {\n filteredContainers.push(entry);\n }\n break;\n case KeyboardCode.Left:\n if (collisionRect.left > rect.left) {\n filteredContainers.push(entry);\n }\n break;\n case KeyboardCode.Right:\n if (collisionRect.left < rect.left) {\n filteredContainers.push(entry);\n }\n break;\n }\n });\n\n const collisions = closestCorners({\n active,\n collisionRect: collisionRect,\n droppableRects,\n droppableContainers: filteredContainers,\n pointerCoordinates: null,\n });\n let closestId = getFirstCollision(collisions, 'id');\n\n if (closestId === over?.id && collisions.length > 1) {\n closestId = collisions[1].id;\n }\n\n if (closestId != null) {\n const activeDroppable = droppableContainers.get(active.id);\n const newDroppable = droppableContainers.get(closestId);\n const newRect = newDroppable ? droppableRects.get(newDroppable.id) : null;\n const newNode = newDroppable?.node.current;\n\n if (newNode && newRect && activeDroppable && newDroppable) {\n const newScrollAncestors = getScrollableAncestors(newNode);\n const hasDifferentScrollAncestors = newScrollAncestors.some(\n (element, index) => scrollableAncestors[index] !== element\n );\n const hasSameContainer = isSameContainer(activeDroppable, newDroppable);\n const isAfterActive = isAfter(activeDroppable, newDroppable);\n const offset =\n hasDifferentScrollAncestors || !hasSameContainer\n ? {\n x: 0,\n y: 0,\n }\n : {\n x: isAfterActive ? collisionRect.width - newRect.width : 0,\n y: isAfterActive ? collisionRect.height - newRect.height : 0,\n };\n const rectCoordinates = {\n x: newRect.left,\n y: newRect.top,\n };\n\n const newCoordinates =\n offset.x && offset.y\n ? rectCoordinates\n : subtract(rectCoordinates, offset);\n\n return newCoordinates;\n }\n }\n }\n\n return undefined;\n};\n\nfunction isSameContainer(a: DroppableContainer, b: DroppableContainer) {\n if (!hasSortableData(a) || !hasSortableData(b)) {\n return false;\n }\n\n return (\n a.data.current.sortable.containerId === b.data.current.sortable.containerId\n );\n}\n\nfunction isAfter(a: DroppableContainer, b: DroppableContainer) {\n if (!hasSortableData(a) || !hasSortableData(b)) {\n return false;\n }\n\n if (!isSameContainer(a, b)) {\n return false;\n }\n\n return a.data.current.sortable.index < b.data.current.sortable.index;\n}\n","import {getWindow} from '@dnd-kit/utilities';\n\nexport function isFixed(\n node: HTMLElement,\n computedStyle: CSSStyleDeclaration = getWindow(node).getComputedStyle(node)\n): boolean {\n return computedStyle.position === 'fixed';\n}\n","import {getWindow} from '@dnd-kit/utilities';\n\nexport function isScrollable(\n element: HTMLElement,\n computedStyle: CSSStyleDeclaration = getWindow(element).getComputedStyle(\n element\n )\n): boolean {\n const overflowRegex = /(auto|scroll|overlay)/;\n const properties = ['overflow', 'overflowX', 'overflowY'];\n\n return properties.some((property) => {\n const value = computedStyle[property as keyof CSSStyleDeclaration];\n\n return typeof value === 'string' ? overflowRegex.test(value) : false;\n });\n}\n","import {\n getWindow,\n isDocument,\n isHTMLElement,\n isSVGElement,\n} from '@dnd-kit/utilities';\n\nimport {isFixed} from './isFixed';\nimport {isScrollable} from './isScrollable';\n\nexport function getScrollableAncestors(\n element: Node | null,\n limit?: number\n): Element[] {\n const scrollParents: Element[] = [];\n\n function findScrollableAncestors(node: Node | null): Element[] {\n if (limit != null && scrollParents.length >= limit) {\n return scrollParents;\n }\n\n if (!node) {\n return scrollParents;\n }\n\n if (\n isDocument(node) &&\n node.scrollingElement != null &&\n !scrollParents.includes(node.scrollingElement)\n ) {\n scrollParents.push(node.scrollingElement);\n\n return scrollParents;\n }\n\n if (!isHTMLElement(node) || isSVGElement(node)) {\n return scrollParents;\n }\n\n if (scrollParents.includes(node)) {\n return scrollParents;\n }\n\n const computedStyle = getWindow(element).getComputedStyle(node);\n\n if (node !== element) {\n if (isScrollable(node, computedStyle)) {\n scrollParents.push(node);\n }\n }\n\n if (isFixed(node, computedStyle)) {\n return scrollParents;\n }\n\n return findScrollableAncestors(node.parentNode);\n }\n\n if (!element) {\n return scrollParents;\n }\n\n return findScrollableAncestors(element);\n}\n\nexport function getFirstScrollableAncestor(node: Node | null): Element | null {\n const [firstScrollableAncestor] = getScrollableAncestors(node, 1);\n\n return firstScrollableAncestor ?? null;\n}\n","import {\n canUseDOM,\n isHTMLElement,\n isDocument,\n getOwnerDocument,\n isNode,\n isWindow,\n} from '@dnd-kit/utilities';\n\nexport function getScrollableElement(element: EventTarget | null) {\n if (!canUseDOM || !element) {\n return null;\n }\n\n if (isWindow(element)) {\n return element;\n }\n\n if (!isNode(element)) {\n return null;\n }\n\n if (\n isDocument(element) ||\n element === getOwnerDocument(element).scrollingElement\n ) {\n return window;\n }\n\n if (isHTMLElement(element)) {\n return element;\n }\n\n return null;\n}\n","import {isWindow} from '@dnd-kit/utilities';\n\nimport type {Coordinates} from '../../types';\n\nexport function getScrollXCoordinate(element: Element | typeof window): number {\n if (isWindow(element)) {\n return element.scrollX;\n }\n\n return element.scrollLeft;\n}\n\nexport function getScrollYCoordinate(element: Element | typeof window): number {\n if (isWindow(element)) {\n return element.scrollY;\n }\n\n return element.scrollTop;\n}\n\nexport function getScrollCoordinates(\n element: Element | typeof window\n): Coordinates {\n return {\n x: getScrollXCoordinate(element),\n y: getScrollYCoordinate(element),\n };\n}\n","export enum Direction {\n Forward = 1,\n Backward = -1,\n}\n","import {canUseDOM} from '@dnd-kit/utilities';\n\nexport function isDocumentScrollingElement(element: Element | null) {\n if (!canUseDOM || !element) {\n return false;\n }\n\n return element === document.scrollingElement;\n}\n","import {isDocumentScrollingElement} from './documentScrollingElement';\n\nexport function getScrollPosition(scrollingContainer: Element) {\n const minScroll = {\n x: 0,\n y: 0,\n };\n const dimensions = isDocumentScrollingElement(scrollingContainer)\n ? {\n height: window.innerHeight,\n width: window.innerWidth,\n }\n : {\n height: scrollingContainer.clientHeight,\n width: scrollingContainer.clientWidth,\n };\n const maxScroll = {\n x: scrollingContainer.scrollWidth - dimensions.width,\n y: scrollingContainer.scrollHeight - dimensions.height,\n };\n\n const isTop = scrollingContainer.scrollTop <= minScroll.y;\n const isLeft = scrollingContainer.scrollLeft <= minScroll.x;\n const isBottom = scrollingContainer.scrollTop >= maxScroll.y;\n const isRight = scrollingContainer.scrollLeft >= maxScroll.x;\n\n return {\n isTop,\n isLeft,\n isBottom,\n isRight,\n maxScroll,\n minScroll,\n };\n}\n","import {Direction, ClientRect} from '../../types';\nimport {getScrollPosition} from './getScrollPosition';\n\ninterface PositionalCoordinates\n extends Pick<ClientRect, 'top' | 'left' | 'right' | 'bottom'> {}\n\nconst defaultThreshold = {\n x: 0.2,\n y: 0.2,\n};\n\nexport function getScrollDirectionAndSpeed(\n scrollContainer: Element,\n scrollContainerRect: ClientRect,\n {top, left, right, bottom}: PositionalCoordinates,\n acceleration = 10,\n thresholdPercentage = defaultThreshold\n) {\n const {isTop, isBottom, isLeft, isRight} = getScrollPosition(scrollContainer);\n\n const direction = {\n x: 0,\n y: 0,\n };\n const speed = {\n x: 0,\n y: 0,\n };\n const threshold = {\n height: scrollContainerRect.height * thresholdPercentage.y,\n width: scrollContainerRect.width * thresholdPercentage.x,\n };\n\n if (!isTop && top <= scrollContainerRect.top + threshold.height) {\n // Scroll Up\n direction.y = Direction.Backward;\n speed.y =\n acceleration *\n Math.abs(\n (scrollContainerRect.top + threshold.height - top) / threshold.height\n );\n } else if (\n !isBottom &&\n bottom >= scrollContainerRect.bottom - threshold.height\n ) {\n // Scroll Down\n direction.y = Direction.Forward;\n speed.y =\n acceleration *\n Math.abs(\n (scrollContainerRect.bottom - threshold.height - bottom) /\n threshold.height\n );\n }\n\n if (!isRight && right >= scrollContainerRect.right - threshold.width) {\n // Scroll Right\n direction.x = Direction.Forward;\n speed.x =\n acceleration *\n Math.abs(\n (scrollContainerRect.right - threshold.width - right) / threshold.width\n );\n } else if (!isLeft && left <= scrollContainerRect.left + threshold.width) {\n // Scroll Left\n direction.x = Direction.Backward;\n speed.x =\n acceleration *\n Math.abs(\n (scrollContainerRect.left + threshold.width - left) / threshold.width\n );\n }\n\n return {\n direction,\n speed,\n };\n}\n","export function getScrollElementRect(element: Element) {\n if (element === document.scrollingElement) {\n const {innerWidth, innerHeight} = window;\n\n return {\n top: 0,\n left: 0,\n right: innerWidth,\n bottom: innerHeight,\n width: innerWidth,\n height: innerHeight,\n };\n }\n\n const {top, left, right, bottom} = element.getBoundingClientRect();\n\n return {\n top,\n left,\n right,\n bottom,\n width: element.clientWidth,\n height: element.clientHeight,\n };\n}\n","import {add} from '@dnd-kit/utilities';\n\nimport type {Coordinates} from '../../types';\nimport {\n getScrollCoordinates,\n getScrollXCoordinate,\n getScrollYCoordinate,\n} from './getScrollCoordinates';\nimport {defaultCoordinates} from '../coordinates';\n\nexport function getScrollOffsets(scrollableAncestors: Element[]): Coordinates {\n return scrollableAncestors.reduce<Coordinates>((acc, node) => {\n return add(acc, getScrollCoordinates(node));\n }, defaultCoordinates);\n}\n\nexport function getScrollXOffset(scrollableAncestors: Element[]): number {\n return scrollableAncestors.reduce<number>((acc, node) => {\n return acc + getScrollXCoordinate(node);\n }, 0);\n}\n\nexport function getScrollYOffset(scrollableAncestors: Element[]): number {\n return scrollableAncestors.reduce<number>((acc, node) => {\n return acc + getScrollYCoordinate(node);\n }, 0);\n}\n","import type {ClientRect} from '../../types';\nimport {getClientRect} from '../rect/getRect';\nimport {getFirstScrollableAncestor} from './getScrollableAncestors';\n\nexport function scrollIntoViewIfNeeded(\n element: HTMLElement | null | undefined,\n measure: (node: HTMLElement) => ClientRect = getClientRect\n) {\n if (!element) {\n return;\n }\n\n const {top, left, bottom, right} = measure(element);\n const firstScrollableAncestor = getFirstScrollableAncestor(element);\n\n if (!firstScrollableAncestor) {\n return;\n }\n\n if (\n bottom <= 0 ||\n right <= 0 ||\n top >= window.innerHeight ||\n left >= window.innerWidth\n ) {\n element.scrollIntoView({\n block: 'center',\n inline: 'center',\n });\n }\n}\n","import type {ClientRect} from '../../types/rect';\nimport {\n getScrollableAncestors,\n getScrollOffsets,\n getScrollXOffset,\n getScrollYOffset,\n} from '../scroll';\n\nconst properties = [\n ['x', ['left', 'right'], getScrollXOffset],\n ['y', ['top', 'bottom'], getScrollYOffset],\n] as const;\n\nexport class Rect {\n constructor(rect: ClientRect, element: Element) {\n const scrollableAncestors = getScrollableAncestors(element);\n const scrollOffsets = getScrollOffsets(scrollableAncestors);\n\n this.rect = {...rect};\n this.width = rect.width;\n this.height = rect.height;\n\n for (const [axis, keys, getScrollOffset] of properties) {\n for (const key of keys) {\n Object.defineProperty(this, key, {\n get: () => {\n const currentOffsets = getScrollOffset(scrollableAncestors);\n const scrollOffsetsDeltla = scrollOffsets[axis] - currentOffsets;\n\n return this.rect[key] + scrollOffsetsDeltla;\n },\n enumerable: true,\n });\n }\n }\n\n Object.defineProperty(this, 'rect', {enumerable: false});\n }\n\n private rect: ClientRect;\n\n public width: number;\n\n public height: number;\n\n // The below properties are set by the `Object.defineProperty` calls in the constructor\n // @ts-ignore\n public top: number;\n // @ts-ignore\n public bottom: number;\n // @ts-ignore\n public right: number;\n // @ts-ignore\n public left: number;\n}\n","export class Listeners {\n private listeners: [\n string,\n EventListenerOrEventListenerObject,\n AddEventListenerOptions | boolean | undefined\n ][] = [];\n\n constructor(private target: EventTarget | null) {}\n\n public add<T extends Event>(\n eventName: string,\n handler: (event: T) => void,\n options?: AddEventListenerOptions | boolean\n ) {\n this.target?.addEventListener(eventName, handler as EventListener, options);\n this.listeners.push([eventName, handler as EventListener, options]);\n }\n\n public removeAll = () => {\n this.listeners.forEach((listener) =>\n this.target?.removeEventListener(...listener)\n );\n };\n}\n","import {getOwnerDocument, getWindow} from '@dnd-kit/utilities';\n\nexport function getEventListenerTarget(\n target: EventTarget | null\n): EventTarget | Document {\n // If the `event.target` element is removed from the document events will still be targeted\n // at it, and hence won't always bubble up to the window or document anymore.\n // If there is any risk of an element being removed while it is being dragged,\n // the best practice is to attach the event listeners directly to the target.\n // https://developer.mozilla.org/en-US/docs/Web/API/EventTarget\n\n const {EventTarget} = getWindow(target);\n\n return target instanceof EventTarget ? target : getOwnerDocument(target);\n}\n","import type {Coordinates, DistanceMeasurement} from '../../types';\n\nexport function hasExceededDistance(\n delta: Coordinates,\n measurement: DistanceMeasurement\n): boolean {\n const dx = Math.abs(delta.x);\n const dy = Math.abs(delta.y);\n\n if (typeof measurement === 'number') {\n return Math.sqrt(dx ** 2 + dy ** 2) > measurement;\n }\n\n if ('x' in measurement && 'y' in measurement) {\n return dx > measurement.x && dy > measurement.y;\n }\n\n if ('x' in measurement) {\n return dx > measurement.x;\n }\n\n if ('y' in measurement) {\n return dy > measurement.y;\n }\n\n return false;\n}\n","export enum EventName {\n Click = 'click',\n DragStart = 'dragstart',\n Keydown = 'keydown',\n ContextMenu = 'contextmenu',\n Resize = 'resize',\n SelectionChange = 'selectionchange',\n VisibilityChange = 'visibilitychange',\n}\n\nexport function preventDefault(event: Event) {\n event.preventDefault();\n}\n\nexport function stopPropagation(event: Event) {\n event.stopPropagation();\n}\n","import type {Coordinates, UniqueIdentifier} from '../../types';\nimport type {SensorContext} from '../types';\n\nexport enum KeyboardCode {\n Space = 'Space',\n Down = 'ArrowDown',\n Right = 'ArrowRight',\n Left = 'ArrowLeft',\n Up = 'ArrowUp',\n Esc = 'Escape',\n Enter = 'Enter',\n Tab = 'Tab',\n}\n\nexport type KeyboardCodes = {\n start: KeyboardEvent['code'][];\n cancel: KeyboardEvent['code'][];\n end: KeyboardEvent['code'][];\n};\n\nexport type KeyboardCoordinateGetter = (\n event: KeyboardEvent,\n args: {\n active: UniqueIdentifier;\n currentCoordinates: Coordinates;\n context: SensorContext;\n }\n) => Coordinates | void;\n","import {KeyboardCoordinateGetter, KeyboardCode, KeyboardCodes} from './types';\n\nexport const defaultKeyboardCodes: KeyboardCodes = {\n start: [KeyboardCode.Space, KeyboardCode.Enter],\n cancel: [KeyboardCode.Esc],\n end: [KeyboardCode.Space, KeyboardCode.Enter, KeyboardCode.Tab],\n};\n\nexport const defaultKeyboardCoordinateGetter: KeyboardCoordinateGetter = (\n event,\n {currentCoordinates}\n) => {\n switch (event.code) {\n case KeyboardCode.Right:\n return {\n ...currentCoordinates,\n x: currentCoordinates.x + 25,\n };\n case KeyboardCode.Left:\n return {\n ...currentCoordinates,\n x: currentCoordinates.x - 25,\n };\n case KeyboardCode.Down:\n return {\n ...currentCoordinates,\n y: currentCoordinates.y + 25,\n };\n case KeyboardCode.Up:\n return {\n ...currentCoordinates,\n y: currentCoordinates.y - 25,\n };\n }\n\n return undefined;\n};\n","import {\n add as getAdjustedCoordinates,\n subtract as getCoordinatesDelta,\n getOwnerDocument,\n getWindow,\n isKeyboardEvent,\n} from '@dnd-kit/utilities';\n\nimport type {Coordinates} from '../../types';\nimport {\n defaultCoordinates,\n getScrollPosition,\n getScrollElementRect,\n} from '../../utilities';\nimport {scrollIntoViewIfNeeded} from '../../utilities/scroll';\nimport {EventName} from '../events';\nimport {Listeners} from '../utilities';\nimport type {\n Activators,\n SensorInstance,\n SensorProps,\n SensorOptions,\n} from '../types';\n\nimport {KeyboardCoordinateGetter, KeyboardCode, KeyboardCodes} from './types';\nimport {\n defaultKeyboardCodes,\n defaultKeyboardCoordinateGetter,\n} from './defaults';\n\nexport interface KeyboardSensorOptions extends SensorOptions {\n keyboardCodes?: KeyboardCodes;\n coordinateGetter?: KeyboardCoordinateGetter;\n scrollBehavior?: ScrollBehavior;\n onActivation?({event}: {event: KeyboardEvent}): void;\n}\n\nexport type KeyboardSensorProps = SensorProps<KeyboardSensorOptions>;\n\nexport class KeyboardSensor implements SensorInstance {\n public autoScrollEnabled = false;\n private referenceCoordinates: Coordinates | undefined;\n private listeners: Listeners;\n private windowListeners: Listeners;\n\n constructor(private props: KeyboardSensorProps) {\n const {\n event: {target},\n } = props;\n\n this.props = props;\n this.listeners = new Listeners(getOwnerDocument(target));\n this.windowListeners = new Listeners(getWindow(target));\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n\n this.attach();\n }\n\n private attach() {\n this.handleStart();\n\n this.windowListeners.add(EventName.Resize, this.handleCancel);\n this.windowListeners.add(EventName.VisibilityChange, this.handleCancel);\n\n setTimeout(() => this.listeners.add(EventName.Keydown, this.handleKeyDown));\n }\n\n private handleStart() {\n const {activeNode, onStart} = this.props;\n const node = activeNode.node.current;\n\n if (node) {\n scrollIntoViewIfNeeded(node);\n }\n\n onStart(defaultCoordinates);\n }\n\n private handleKeyDown(event: Event) {\n if (isKeyboardEvent(event)) {\n const {active, context, options} = this.props;\n const {\n keyboardCodes = defaultKeyboardCodes,\n coordinateGetter = defaultKeyboardCoordinateGetter,\n scrollBehavior = 'smooth',\n } = options;\n const {code} = event;\n\n if (keyboardCodes.end.includes(code)) {\n this.handleEnd(event);\n return;\n }\n\n if (keyboardCodes.cancel.includes(code)) {\n this.handleCancel(event);\n return;\n }\n\n const {collisionRect} = context.current;\n const currentCoordinates = collisionRect\n ? {x: collisionRect.left, y: collisionRect.top}\n : defaultCoordinates;\n\n if (!this.referenceCoordinates) {\n this.referenceCoordinates = currentCoordinates;\n }\n\n const newCoordinates = coordinateGetter(event, {\n active,\n context: context.current,\n currentCoordinates,\n });\n\n if (newCoordinates) {\n const coordinatesDelta = getCoordinatesDelta(\n newCoordinates,\n currentCoordinates\n );\n const scrollDelta = {\n x: 0,\n y: 0,\n };\n const {scrollableAncestors} = context.current;\n\n for (const scrollContainer of scrollableAncestors) {\n const direction = event.code;\n const {isTop, isRight, isLeft, isBottom, maxScroll, minScroll} =\n getScrollPosition(scrollContainer);\n const scrollElementRect = getScrollElementRect(scrollContainer);\n\n const clampedCoordinates = {\n x: Math.min(\n direction === KeyboardCode.Right\n ? scrollElementRect.right - scrollElementRect.width / 2\n : scrollElementRect.right,\n Math.max(\n direction === KeyboardCode.Right\n ? scrollElementRect.left\n : scrollElementRect.left + scrollElementRect.width / 2,\n newCoordinates.x\n )\n ),\n y: Math.min(\n direction === KeyboardCode.Down\n ? scrollElementRect.bottom - scrollElementRect.height / 2\n : scrollElementRect.bottom,\n Math.max(\n direction === KeyboardCode.Down\n ? scrollElementRect.top\n : scrollElementRect.top + scrollElementRect.height / 2,\n newCoordinates.y\n )\n ),\n };\n\n const canScrollX =\n (direction === KeyboardCode.Right && !isRight) ||\n (direction === KeyboardCode.Left && !isLeft);\n const canScrollY =\n (direction === KeyboardCode.Down && !isBottom) ||\n (direction === KeyboardCode.Up && !isTop);\n\n if (canScrollX && clampedCoordinates.x !== newCoordinates.x) {\n const newScrollCoordinates =\n scrollContainer.scrollLeft + coordinatesDelta.x;\n const canScrollToNewCoordinates =\n (direction === KeyboardCode.Right &&\n newScrollCoordinates <= maxScroll.x) ||\n (direction === KeyboardCode.Left &&\n newScrollCoordinates >= minScroll.x);\n\n if (canScrollToNewCoordinates && !coordinatesDelta.y) {\n // We don't need to update coordinates, the scroll adjustment alone will trigger\n // logic to auto-detect the new container we are over\n scrollContainer.scrollTo({\n left: newScrollCoordinates,\n behavior: scrollBehavior,\n });\n return;\n }\n\n if (canScrollToNewCoordinates) {\n scrollDelta.x = scrollContainer.scrollLeft - newScrollCoordinates;\n } else {\n scrollDelta.x =\n direction === KeyboardCode.Right\n ? scrollContainer.scrollLeft - maxScroll.x\n : scrollContainer.scrollLeft - minScroll.x;\n }\n\n if (scrollDelta.x) {\n scrollContainer.scrollBy({\n left: -scrollDelta.x,\n behavior: scrollBehavior,\n });\n }\n break;\n } else if (canScrollY && clampedCoordinates.y !== newCoordinates.y) {\n const newScrollCoordinates =\n scrollContainer.scrollTop + coordinatesDelta.y;\n const canScrollToNewCoordinates =\n (direction === KeyboardCode.Down &&\n newScrollCoordinates <= maxScroll.y) ||\n (direction === KeyboardCode.Up &&\n newScrollCoordinates >= minScroll.y);\n\n if (canScrollToNewCoordinates && !coordinatesDelta.x) {\n // We don't need to update coordinates, the scroll adjustment alone will trigger\n // logic to auto-detect the new container we are over\n scrollContainer.scrollTo({\n top: newScrollCoordinates,\n behavior: scrollBehavior,\n });\n return;\n }\n\n if (canScrollToNewCoordinates) {\n scrollDelta.y = scrollContainer.scrollTop - newScrollCoordinates;\n } else {\n scrollDelta.y =\n direction === KeyboardCode.Down\n ? scrollContainer.scrollTop - maxScroll.y\n : scrollContainer.scrollTop - minScroll.y;\n }\n\n if (scrollDelta.y) {\n scrollContainer.scrollBy({\n top: -scrollDelta.y,\n behavior: scrollBehavior,\n });\n }\n\n break;\n }\n }\n\n this.handleMove(\n event,\n getAdjustedCoordinates(\n getCoordinatesDelta(newCoordinates, this.referenceCoordinates),\n scrollDelta\n )\n );\n }\n }\n }\n\n private handleMove(event: Event, coordinates: Coordinates) {\n const {onMove} = this.props;\n\n event.preventDefault();\n onMove(coordinates);\n }\n\n private handleEnd(event: Event) {\n const {onEnd} = this.props;\n\n event.preventDefault();\n this.detach();\n onEnd();\n }\n\n private handleCancel(event: Event) {\n const {onCancel} = this.props;\n\n event.preventDefault();\n this.detach();\n onCancel();\n }\n\n private detach() {\n this.listeners.removeAll();\n this.windowListeners.removeAll();\n }\n\n static activators: Activators<KeyboardSensorOptions> = [\n {\n eventName: 'onKeyDown' as const,\n handler: (\n event: React.KeyboardEvent,\n {keyboardCodes = defaultKeyboardCodes, onActivation},\n {active}\n ) => {\n const {code} = event.nativeEvent;\n\n if (keyboardCodes.start.includes(code)) {\n const activator = active.activatorNode.current;\n\n if (activator && event.target !== activator) {\n return false;\n }\n\n event.preventDefault();\n\n onActivation?.({event: event.nativeEvent});\n\n return true;\n }\n\n return false;\n },\n },\n ];\n}\n","import {\n subtract as getCoordinatesDelta,\n getEventCoordinates,\n getOwnerDocument,\n getWindow,\n} from '@dnd-kit/utilities';\n\nimport {defaultCoordinates} from '../../utilities';\nimport {\n getEventListenerTarget,\n hasExceededDistance,\n Listeners,\n} from '../utilities';\nimport {EventName, preventDefault, stopPropagation} from '../events';\nimport {KeyboardCode} from '../keyboard';\nimport type {SensorInstance, SensorProps, SensorOptions} from '../types';\nimport type {Coordinates, DistanceMeasurement} from '../../types';\n\ninterface DistanceConstraint {\n distance: DistanceMeasurement;\n tolerance?: DistanceMeasurement;\n}\n\ninterface DelayConstraint {\n delay: number;\n tolerance: DistanceMeasurement;\n}\n\ninterface EventDescriptor {\n name: keyof DocumentEventMap;\n passive?: boolean;\n}\n\nexport interface PointerEventHandlers {\n cancel?: EventDescriptor;\n move: EventDescriptor;\n end: EventDescriptor;\n}\n\nexport type PointerActivationConstraint =\n | DelayConstraint\n | DistanceConstraint\n | (DelayConstraint & DistanceConstraint);\n\nfunction isDistanceConstraint(\n constraint: PointerActivationConstraint\n): constraint is PointerActivationConstraint & DistanceConstraint {\n return Boolean(constraint && 'distance' in constraint);\n}\n\nfunction isDelayConstraint(\n constraint: PointerActivationConstraint\n): constraint is DelayConstraint {\n return Boolean(constraint && 'delay' in constraint);\n}\n\nexport interface AbstractPointerSensorOptions extends SensorOptions {\n activationConstraint?: PointerActivationConstraint;\n bypassActivationConstraint?(\n props: Pick<AbstractPointerSensorProps, 'activeNode' | 'event' | 'options'>\n ): boolean;\n onActivation?({event}: {event: Event}): void;\n}\n\nexport type AbstractPointerSensorProps =\n SensorProps<AbstractPointerSensorOptions>;\n\nexport class AbstractPointerSensor implements SensorInstance {\n public autoScrollEnabled = true;\n private document: Document;\n private activated: boolean = false;\n private initialCoordinates: Coordinates;\n private timeoutId: NodeJS.Timeout | null = null;\n private listeners: Listeners;\n private documentListeners: Listeners;\n private windowListeners: Listeners;\n\n constructor(\n private props: AbstractPointerSensorProps,\n private events: PointerEventHandlers,\n listenerTarget = getEventListenerTarget(props.event.target)\n ) {\n const {event} = props;\n const {target} = event;\n\n this.props = props;\n this.events = events;\n this.document = getOwnerDocument(target);\n this.documentListeners = new Listeners(this.document);\n this.listeners = new Listeners(listenerTarget);\n this.windowListeners = new Listeners(getWindow(target));\n this.initialCoordinates = getEventCoordinates(event) ?? defaultCoordinates;\n this.handleStart = this.handleStart.bind(this);\n this.handleMove = this.handleMove.bind(this);\n this.handleEnd = this.handleEnd.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleKeydown = this.handleKeydown.bind(this);\n this.removeTextSelection = this.removeTextSelection.bind(this);\n\n this.attach();\n }\n\n private attach() {\n const {\n events,\n props: {\n options: {activationConstraint, bypassActivationConstraint},\n },\n } = this;\n\n this.listeners.add(events.move.name, this.handleMove, {passive: false});\n this.listeners.add(events.end.name, this.handleEnd);\n\n if (events.cancel) {\n this.listeners.add(events.cancel.name, this.handleCancel);\n }\n\n this.windowListeners.add(EventName.Resize, this.handleCancel);\n this.windowListeners.add(EventName.DragStart, preventDefault);\n this.windowListeners.add(EventName.VisibilityChange, this.handleCancel);\n this.windowListeners.add(EventName.ContextMenu, preventDefault);\n this.documentListeners.add(EventName.Keydown, this.handleKeydown);\n\n if (activationConstraint) {\n if (\n bypassActivationConstraint?.({\n event: this.props.event,\n activeNode: this.props.activeNode,\n options: this.props.options,\n })\n ) {\n return this.handleStart();\n }\n\n if (isDelayConstraint(activationConstraint)) {\n this.timeoutId = setTimeout(\n this.handleStart,\n activationConstraint.delay\n );\n this.handlePending(activationConstraint);\n return;\n }\n\n if (isDistanceConstraint(activationConstraint)) {\n this.handlePending(activationConstraint);\n return;\n }\n }\n\n this.handleStart();\n }\n\n private detach() {\n this.listeners.removeAll();\n this.windowListeners.removeAll();\n\n // Wait until the next event loop before removing document listeners\n // This is necessary because we listen for `click` and `selection` events on the document\n setTimeout(this.documentListeners.removeAll, 50);\n\n if (this.timeoutId !== null) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n }\n\n private handlePending(\n constraint: PointerActivationConstraint,\n offset?: Coordinates | undefined\n ): void {\n const {active, onPending} = this.props;\n onPending(active, constraint, this.initialCoordinates, offset);\n }\n\n private handleStart() {\n const {initialCoordinates} = this;\n const {onStart} = this.props;\n\n if (initialCoordinates) {\n this.activated = true;\n\n // Stop propagation of click events once activation constraints are met\n this.documentListeners.add(EventName.Click, stopPropagation, {\n capture: true,\n });\n\n // Remove any text selection from the document\n this.removeTextSelection();\n\n // Prevent further text selection while dragging\n this.documentListeners.add(\n EventName.SelectionChange,\n this.removeTextSelection\n );\n\n onStart(initialCoordinates);\n }\n }\n\n private handleMove(event: Event) {\n const {activated, initialCoordinates, props} = this;\n const {\n onMove,\n options: {activationConstraint},\n } = props;\n\n if (!initialCoordinates) {\n return;\n }\n\n const coordinates = getEventCoordinates(event) ?? defaultCoordinates;\n const delta = getCoordinatesDelta(initialCoordinates, coordinates);\n\n // Constraint validation\n if (!activated && activationConstraint) {\n if (isDistanceConstraint(activationConstraint)) {\n if (\n activationConstraint.tolerance != null &&\n hasExceededDistance(delta, activationConstraint.tolerance)\n ) {\n return this.handleCancel();\n }\n\n if (hasExceededDistance(delta, activationConstraint.distance)) {\n return this.handleStart();\n }\n }\n\n if (isDelayConstraint(activationConstraint)) {\n if (hasExceededDistance(delta, activationConstraint.tolerance)) {\n return this.handleCancel();\n }\n }\n\n this.handlePending(activationConstraint, delta);\n return;\n }\n\n if (event.cancelable) {\n event.preventDefault();\n }\n\n onMove(coordinates);\n }\n\n private handleEnd() {\n const {onAbort, onEnd} = this.props;\n\n this.detach();\n if (!this.activated) {\n onAbort(this.props.active);\n }\n onEnd();\n }\n\n private handleCancel() {\n const {onAbort, onCancel} = this.props;\n\n this.detach();\n if (!this.activated) {\n onAbort(this.props.active);\n }\n onCancel();\n }\n\n private handleKeydown(event: KeyboardEvent) {\n if (event.code === KeyboardCode.Esc) {\n this.handleCancel();\n }\n }\n\n private removeTextSelection() {\n this.document.getSelection()?.removeAllRanges();\n }\n}\n","import type {PointerEvent} from 'react';\nimport {getOwnerDocument} from '@dnd-kit/utilities';\n\nimport type {SensorProps} from '../types';\nimport {\n AbstractPointerSensor,\n AbstractPointerSensorOptions,\n PointerEventHandlers,\n} from './AbstractPointerSensor';\n\nconst events: PointerEventHandlers = {\n cancel: {name: 'pointercancel'},\n move: {name: 'pointermove'},\n end: {name: 'pointerup'},\n};\n\nexport interface PointerSensorOptions extends AbstractPointerSensorOptions {}\n\nexport type PointerSensorProps = SensorProps<PointerSensorOptions>;\n\nexport class PointerSensor extends AbstractPointerSensor {\n constructor(props: PointerSensorProps) {\n const {event} = props;\n // Pointer events stop firing if the target is unmounted while dragging\n // Therefore we attach listeners to the owner document instead\n const listenerTarget = getOwnerDocument(event.target);\n\n super(props, events, listenerTarget);\n }\n\n static activators = [\n {\n eventName: 'onPointerDown' as const,\n handler: (\n {nativeEvent: event}: PointerEvent,\n {onActivation}: PointerSensorOptions\n ) => {\n if (!event.isPrimary || event.button !== 0) {\n return false;\n }\n\n onActivation?.({event});\n\n return true;\n },\n },\n ];\n}\n","import type {MouseEvent} from 'react';\nimport {getOwnerDocument} from '@dnd-kit/utilities';\n\nimport type {SensorProps} from '../types';\nimport {\n AbstractPointerSensor,\n PointerEventHandlers,\n AbstractPointerSensorOptions,\n} from '../pointer';\n\nconst events: PointerEventHandlers = {\n move: {name: 'mousemove'},\n end: {name: 'mouseup'},\n};\n\nenum MouseButton {\n RightClick = 2,\n}\n\nexport interface MouseSensorOptions extends AbstractPointerSensorOptions {}\n\nexport type MouseSensorProps = SensorProps<MouseSensorOptions>;\n\nexport class MouseSensor extends AbstractPointerSensor {\n constructor(props: MouseSensorProps) {\n super(props, events, getOwnerDocument(props.event.target));\n }\n\n static activators = [\n {\n eventName: 'onMouseDown' as const,\n handler: (\n {nativeEvent: event}: MouseEvent,\n {onActivation}: MouseSensorOptions\n ) => {\n if (event.button === MouseButton.RightClick) {\n return false;\n }\n\n onActivation?.({event});\n\n return true;\n },\n },\n ];\n}\n","import type {TouchEvent} from 'react';\n\nimport {\n AbstractPointerSensor,\n PointerSensorProps,\n PointerEventHandlers,\n PointerSensorOptions,\n} from '../pointer';\nimport type {SensorProps} from '../types';\n\nconst events: PointerEventHandlers = {\n cancel: {name: 'touchcancel'},\n move: {name: 'touchmove'},\n end: {name: 'touchend'},\n};\n\nexport interface TouchSensorOptions extends PointerSensorOptions {}\n\nexport type TouchSensorProps = SensorProps<TouchSensorOptions>;\n\nexport class TouchSensor extends AbstractPointerSensor {\n constructor(props: PointerSensorProps) {\n super(props, events);\n }\n\n static activators = [\n {\n eventName: 'onTouchStart' as const,\n handler: (\n {nativeEvent: event}: TouchEvent,\n {onActivation}: TouchSensorOptions\n ) => {\n const {touches} = event;\n\n if (touches.length > 1) {\n return false;\n }\n\n onActivation?.({event});\n\n return true;\n },\n },\n ];\n\n static setup() {\n // Adding a non-capture and non-passive `touchmove` listener in order\n // to force `event.preventDefault()` calls to work in dynamically added\n // touchmove event handlers. This is required for iOS Safari.\n window.addEventListener(events.move.name, noop, {\n capture: false,\n passive: false,\n });\n\n return function teardown() {\n window.removeEventListener(events.move.name, noop);\n };\n\n // We create a new handler because the teardown function of another sensor\n // could remove our event listener if we use a referentially equal listener.\n function noop() {}\n }\n}\n","import {useCallback, useEffect, useMemo, useRef} from 'react';\nimport {useInterval, useLazyMemo, usePrevious} from '@dnd-kit/utilities';\n\nimport {getScrollDirectionAndSpeed} from '../../utilities';\nimport {Direction} from '../../types';\nimport type {Coordinates, ClientRect} from '../../types';\n\nexport type ScrollAncestorSortingFn = (ancestors: Element[]) => Element[];\n\nexport enum AutoScrollActivator {\n Pointer,\n DraggableRect,\n}\n\nexport interface Options {\n acceleration?: number;\n activator?: AutoScrollActivator;\n canScroll?: CanScroll;\n enabled?: boolean;\n interval?: number;\n layoutShiftCompensation?:\n | boolean\n | {\n x: boolean;\n y: boolean;\n };\n order?: TraversalOrder;\n threshold?: {\n x: number;\n y: number;\n };\n}\n\ninterface Arguments extends Options {\n draggingRect: ClientRect | null;\n enabled: boolean;\n pointerCoordinates: Coordinates | null;\n scrollableAncestors: Element[];\n scrollableAncestorRects: ClientRect[];\n delta: Coordinates;\n}\n\nexport type CanScroll = (element: Element) => boolean;\n\nexport enum TraversalOrder {\n TreeOrder,\n ReversedTreeOrder,\n}\n\ninterface ScrollDirection {\n x: 0 | Direction;\n y: 0 | Direction;\n}\n\nexport function useAutoScroller({\n acceleration,\n activator = AutoScrollActivator.Pointer,\n canScroll,\n draggingRect,\n enabled,\n interval = 5,\n order = TraversalOrder.TreeOrder,\n pointerCoordinates,\n scrollableAncestors,\n scrollableAncestorRects,\n delta,\n threshold,\n}: Arguments) {\n const scrollIntent = useScrollIntent({delta, disabled: !enabled});\n const [setAutoScrollInterval, clearAutoScrollInterval] = useInterval();\n const scrollSpeed = useRef<Coordinates>({x: 0, y: 0});\n const scrollDirection = useRef<ScrollDirection>({x: 0, y: 0});\n const rect = useMemo(() => {\n switch (activator) {\n case AutoScrollActivator.Pointer:\n return pointerCoordinates\n ? {\n top: pointerCoordinates.y,\n bottom: pointerCoordinates.y,\n left: pointerCoordinates.x,\n right: pointerCoordinates.x,\n }\n : null;\n case AutoScrollActivator.DraggableRect:\n return draggingRect;\n }\n }, [activator, draggingRect, pointerCoordinates]);\n const scrollContainerRef = useRef<Element | null>(null);\n const autoScroll = useCallback(() => {\n const scrollContainer = scrollContainerRef.current;\n\n if (!scrollContainer) {\n return;\n }\n\n const scrollLeft = scrollSpeed.current.x * scrollDirection.current.x;\n const scrollTop = scrollSpeed.current.y * scrollDirection.current.y;\n\n scrollContainer.scrollBy(scrollLeft, scrollTop);\n }, []);\n const sortedScrollableAncestors = useMemo(\n () =>\n order === TraversalOrder.TreeOrder\n ? [...scrollableAncestors].reverse()\n : scrollableAncestors,\n [order, scrollableAncestors]\n );\n\n useEffect(\n () => {\n if (!enabled || !scrollableAncestors.length || !rect) {\n clearAutoScrollInterval();\n return;\n }\n\n for (const scrollContainer of sortedScrollableAncestors) {\n if (canScroll?.(scrollContainer) === false) {\n continue;\n }\n\n const index = scrollableAncestors.indexOf(scrollContainer);\n const scrollContainerRect = scrollableAncestorRects[index];\n\n if (!scrollContainerRect) {\n continue;\n }\n\n const {direction, speed} = getScrollDirectionAndSpeed(\n scrollContainer,\n scrollContainerRect,\n rect,\n acceleration,\n threshold\n );\n\n for (const axis of ['x', 'y'] as const) {\n if (!scrollIntent[axis][direction[axis] as Direction]) {\n speed[axis] = 0;\n direction[axis] = 0;\n }\n }\n\n if (speed.x > 0 || speed.y > 0) {\n clearAutoScrollInterval();\n\n scrollContainerRef.current = scrollContainer;\n setAutoScrollInterval(autoScroll, interval);\n\n scrollSpeed.current = speed;\n scrollDirection.current = direction;\n\n return;\n }\n }\n\n scrollSpeed.current = {x: 0, y: 0};\n scrollDirection.current = {x: 0, y: 0};\n clearAutoScrollInterval();\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n acceleration,\n autoScroll,\n canScroll,\n clearAutoScrollInterval,\n enabled,\n interval,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(rect),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(scrollIntent),\n setAutoScrollInterval,\n scrollableAncestors,\n sortedScrollableAncestors,\n scrollableAncestorRects,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(threshold),\n ]\n );\n}\n\ninterface ScrollIntent {\n x: Record<Direction, boolean>;\n y: Record<Direction, boolean>;\n}\n\nconst defaultScrollIntent: ScrollIntent = {\n x: {[Direction.Backward]: false, [Direction.Forward]: false},\n y: {[Direction.Backward]: false, [Direction.Forward]: false},\n};\n\nfunction useScrollIntent({\n delta,\n disabled,\n}: {\n delta: Coordinates;\n disabled: boolean;\n}): ScrollIntent {\n const previousDelta = usePrevious(delta);\n\n return useLazyMemo<ScrollIntent>(\n (previousIntent) => {\n if (disabled || !previousDelta || !previousIntent) {\n // Reset scroll intent tracking when auto-scrolling is disabled\n return defaultScrollIntent;\n }\n\n const direction = {\n x: Math.sign(delta.x - previousDelta.x),\n y: Math.sign(delta.y - previousDelta.y),\n };\n\n // Keep track of the user intent to scroll in each direction for both axis\n return {\n x: {\n [Direction.Backward]:\n previousIntent.x[Direction.Backward] || direction.x === -1,\n [Direction.Forward]:\n previousIntent.x[Direction.Forward] || direction.x === 1,\n },\n y: {\n [Direction.Backward]:\n previousIntent.y[Direction.Backward] || direction.y === -1,\n [Direction.Forward]:\n previousIntent.y[Direction.Forward] || direction.y === 1,\n },\n };\n },\n [disabled, delta, previousDelta]\n );\n}\n","import {useLazyMemo} from '@dnd-kit/utilities';\n\nimport type {DraggableNode, DraggableNodes} from '../../store';\nimport type {UniqueIdentifier} from '../../types';\n\nexport function useCachedNode(\n draggableNodes: DraggableNodes,\n id: UniqueIdentifier | null\n): DraggableNode['node']['current'] {\n const draggableNode = id != null ? draggableNodes.get(id) : undefined;\n const node = draggableNode ? draggableNode.node.current : null;\n\n return useLazyMemo(\n (cachedNode) => {\n if (id == null) {\n return null;\n }\n\n // In some cases, the draggable node can unmount while dragging\n // This is the case for virtualized lists. In those situations,\n // we fall back to the last known value for that node.\n return node ?? cachedNode ?? null;\n },\n [node, id]\n );\n}\n","import {useMemo} from 'react';\n\nimport type {SensorActivatorFunction, SensorDescriptor} from '../../sensors';\nimport type {\n SyntheticListener,\n SyntheticListeners,\n} from './useSyntheticListeners';\n\nexport function useCombineActivators(\n sensors: SensorDescriptor<any>[],\n getSyntheticHandler: (\n handler: SensorActivatorFunction<any>,\n sensor: SensorDescriptor<any>\n ) => SyntheticListener['handler']\n): SyntheticListeners {\n return useMemo(\n () =>\n sensors.reduce<SyntheticListeners>((accumulator, sensor) => {\n const {sensor: Sensor} = sensor;\n\n const sensorActivators = Sensor.activators.map((activator) => ({\n eventName: activator.eventName,\n handler: getSyntheticHandler(activator.handler, sensor),\n }));\n\n return [...accumulator, ...sensorActivators];\n }, []),\n [sensors, getSyntheticHandler]\n );\n}\n","import {useCallback, useEffect, useRef, useState} from 'react';\nimport {useLatestValue, useLazyMemo} from '@dnd-kit/utilities';\n\nimport {Rect} from '../../utilities/rect';\nimport type {DroppableContainer, RectMap} from '../../store/types';\nimport type {ClientRect, UniqueIdentifier} from '../../types';\n\ninterface Arguments {\n dragging: boolean;\n dependencies: any[];\n config: DroppableMeasuring;\n}\n\nexport enum MeasuringStrategy {\n Always,\n BeforeDragging,\n WhileDragging,\n}\n\nexport enum MeasuringFrequency {\n Optimized = 'optimized',\n}\n\ntype MeasuringFunction = (element: HTMLElement) => ClientRect;\n\nexport interface DroppableMeasuring {\n measure: MeasuringFunction;\n strategy: MeasuringStrategy;\n frequency: MeasuringFrequency | number;\n}\n\nconst defaultValue: RectMap = new Map();\n\nexport function useDroppableMeasuring(\n containers: DroppableContainer[],\n {dragging, dependencies, config}: Arguments\n) {\n const [queue, setQueue] = useState<UniqueIdentifier[] | null>(null);\n const {frequency, measure, strategy} = config;\n const containersRef = useRef(containers);\n const disabled = isDisabled();\n const disabledRef = useLatestValue(disabled);\n const measureDroppableContainers = useCallback(\n (ids: UniqueIdentifier[] = []) => {\n if (disabledRef.current) {\n return;\n }\n\n setQueue((value) => {\n if (value === null) {\n return ids;\n }\n\n return value.concat(ids.filter((id) => !value.includes(id)));\n });\n },\n [disabledRef]\n );\n const timeoutId = useRef<NodeJS.Timeout | null>(null);\n const droppableRects = useLazyMemo<RectMap>(\n (previousValue) => {\n if (disabled && !dragging) {\n return defaultValue;\n }\n\n if (\n !previousValue ||\n previousValue === defaultValue ||\n containersRef.current !== containers ||\n queue != null\n ) {\n const map: RectMap = new Map();\n\n for (let container of containers) {\n if (!container) {\n continue;\n }\n\n if (\n queue &&\n queue.length > 0 &&\n !queue.includes(container.id) &&\n container.rect.current\n ) {\n // This container does not need to be re-measured\n map.set(container.id, container.rect.current);\n continue;\n }\n\n const node = container.node.current;\n const rect = node ? new Rect(measure(node), node) : null;\n\n container.rect.current = rect;\n\n if (rect) {\n map.set(container.id, rect);\n }\n }\n\n return map;\n }\n\n return previousValue;\n },\n [containers, queue, dragging, disabled, measure]\n );\n\n useEffect(() => {\n containersRef.current = containers;\n }, [containers]);\n\n useEffect(\n () => {\n if (disabled) {\n return;\n }\n\n measureDroppableContainers();\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [dragging, disabled]\n );\n\n useEffect(\n () => {\n if (queue && queue.length > 0) {\n setQueue(null);\n }\n },\n //eslint-disable-next-line react-hooks/exhaustive-deps\n [JSON.stringify(queue)]\n );\n\n useEffect(\n () => {\n if (\n disabled ||\n typeof frequency !== 'number' ||\n timeoutId.current !== null\n ) {\n return;\n }\n\n timeoutId.current = setTimeout(() => {\n measureDroppableContainers();\n timeoutId.current = null;\n }, frequency);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [frequency, disabled, measureDroppableContainers, ...dependencies]\n );\n\n return {\n droppableRects,\n measureDroppableContainers,\n measuringScheduled: queue != null,\n };\n\n function isDisabled() {\n switch (strategy) {\n case MeasuringStrategy.Always:\n return false;\n case MeasuringStrategy.BeforeDragging:\n return dragging;\n default:\n return !dragging;\n }\n }\n}\n","import {useLazyMemo} from '@dnd-kit/utilities';\n\ntype AnyFunction = (...args: any) => any;\n\nexport function useInitialValue<\n T,\n U extends AnyFunction | undefined = undefined\n>(\n value: T | null,\n computeFn?: U\n): U extends AnyFunction ? ReturnType<U> | null : T | null {\n return useLazyMemo(\n (previousValue) => {\n if (!value) {\n return null;\n }\n\n if (previousValue) {\n return previousValue;\n }\n\n return typeof computeFn === 'function' ? computeFn(value) : value;\n },\n [computeFn, value]\n );\n}\n","import type {ClientRect} from '../../types';\nimport {useInitialValue} from './useInitialValue';\n\nexport function useInitialRect(\n node: HTMLElement | null,\n measure: (node: HTMLElement) => ClientRect\n) {\n return useInitialValue(node, measure);\n}\n","import {useEffect, useMemo} from 'react';\nimport {useEvent} from '@dnd-kit/utilities';\n\ninterface Arguments {\n callback: MutationCallback;\n disabled?: boolean;\n}\n\n/**\n * Returns a new MutationObserver instance.\n * If `MutationObserver` is undefined in the execution environment, returns `undefined`.\n */\nexport function useMutationObserver({callback, disabled}: Arguments) {\n const handleMutations = useEvent(callback);\n const mutationObserver = useMemo(() => {\n if (\n disabled ||\n typeof window === 'undefined' ||\n typeof window.MutationObserver === 'undefined'\n ) {\n return undefined;\n }\n\n const {MutationObserver} = window;\n\n return new MutationObserver(handleMutations);\n }, [handleMutations, disabled]);\n\n useEffect(() => {\n return () => mutationObserver?.disconnect();\n }, [mutationObserver]);\n\n return mutationObserver;\n}\n","import {useEffect, useMemo} from 'react';\nimport {useEvent} from '@dnd-kit/utilities';\n\ninterface Arguments {\n callback: ResizeObserverCallback;\n disabled?: boolean;\n}\n\n/**\n * Returns a new ResizeObserver instance bound to the `onResize` callback.\n * If `ResizeObserver` is undefined in the execution environment, returns `undefined`.\n */\nexport function useResizeObserver({callback, disabled}: Arguments) {\n const handleResize = useEvent(callback);\n const resizeObserver = useMemo(\n () => {\n if (\n disabled ||\n typeof window === 'undefined' ||\n typeof window.ResizeObserver === 'undefined'\n ) {\n return undefined;\n }\n\n const {ResizeObserver} = window;\n\n return new ResizeObserver(handleResize);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [disabled]\n );\n\n useEffect(() => {\n return () => resizeObserver?.disconnect();\n }, [resizeObserver]);\n\n return resizeObserver;\n}\n","import {useState} from 'react';\nimport {useIsomorphicLayoutEffect} from '@dnd-kit/utilities';\n\nimport type {ClientRect} from '../../types';\nimport {getClientRect, Rect} from '../../utilities';\n\nimport {useMutationObserver} from './useMutationObserver';\nimport {useResizeObserver} from './useResizeObserver';\n\nfunction defaultMeasure(element: HTMLElement) {\n return new Rect(getClientRect(element), element);\n}\n\nexport function useRect(\n element: HTMLElement | null,\n measure: (element: HTMLElement) => ClientRect = defaultMeasure,\n fallbackRect?: ClientRect | null\n) {\n const [rect, setRect] = useState<ClientRect | null>(null);\n\n function measureRect() {\n setRect((currentRect): ClientRect | null => {\n if (!element) {\n return null;\n }\n \n if (element.isConnected === false) {\n // Fall back to last rect we measured if the element is\n // no longer connected to the DOM.\n return currentRect ?? fallbackRect ?? null;\n }\n \n const newRect = measure(element);\n \n if (JSON.stringify(currentRect) === JSON.stringify(newRect)) {\n return currentRect;\n }\n \n return newRect;\n });\n }\n \n const mutationObserver = useMutationObserver({\n callback(records) {\n if (!element) {\n return;\n }\n\n for (const record of records) {\n const {type, target} = record;\n\n if (\n type === 'childList' &&\n target instanceof HTMLElement &&\n target.contains(element)\n ) {\n measureRect();\n break;\n }\n }\n },\n });\n const resizeObserver = useResizeObserver({callback: measureRect});\n\n useIsomorphicLayoutEffect(() => {\n measureRect();\n\n if (element) {\n resizeObserver?.observe(element);\n mutationObserver?.observe(document.body, {\n childList: true,\n subtree: true,\n });\n } else {\n resizeObserver?.disconnect();\n mutationObserver?.disconnect();\n }\n }, [element]);\n\n return rect;\n}\n","import type {ClientRect} from '../../types';\nimport {getRectDelta} from '../../utilities';\n\nimport {useInitialValue} from './useInitialValue';\n\nexport function useRectDelta(rect: ClientRect | null) {\n const initialRect = useInitialValue(rect);\n\n return getRectDelta(rect, initialRect);\n}\n","import {useEffect, useRef} from 'react';\nimport {useLazyMemo} from '@dnd-kit/utilities';\n\nimport {getScrollableAncestors} from '../../utilities';\n\nconst defaultValue: Element[] = [];\n\nexport function useScrollableAncestors(node: HTMLElement | null) {\n const previousNode = useRef(node);\n\n const ancestors = useLazyMemo<Element[]>(\n (previousValue) => {\n if (!node) {\n return defaultValue;\n }\n\n if (\n previousValue &&\n previousValue !== defaultValue &&\n node &&\n previousNode.current &&\n node.parentNode === previousNode.current.parentNode\n ) {\n return previousValue;\n }\n\n return getScrollableAncestors(node);\n },\n [node]\n );\n\n useEffect(() => {\n previousNode.current = node;\n }, [node]);\n\n return ancestors;\n}\n","import {useState, useCallback, useMemo, useRef, useEffect} from 'react';\nimport {add} from '@dnd-kit/utilities';\n\nimport {\n defaultCoordinates,\n getScrollableElement,\n getScrollCoordinates,\n getScrollOffsets,\n} from '../../utilities';\nimport type {Coordinates} from '../../types';\n\ntype ScrollCoordinates = Map<HTMLElement | Window, Coordinates>;\n\nexport function useScrollOffsets(elements: Element[]): Coordinates {\n const [\n scrollCoordinates,\n setScrollCoordinates,\n ] = useState<ScrollCoordinates | null>(null);\n const prevElements = useRef(elements);\n\n // To-do: Throttle the handleScroll callback\n const handleScroll = useCallback((event: Event) => {\n const scrollingElement = getScrollableElement(event.target);\n\n if (!scrollingElement) {\n return;\n }\n\n setScrollCoordinates((scrollCoordinates) => {\n if (!scrollCoordinates) {\n return null;\n }\n\n scrollCoordinates.set(\n scrollingElement,\n getScrollCoordinates(scrollingElement)\n );\n\n return new Map(scrollCoordinates);\n });\n }, []);\n\n useEffect(() => {\n const previousElements = prevElements.current;\n\n if (elements !== previousElements) {\n cleanup(previousElements);\n\n const entries = elements\n .map((element) => {\n const scrollableElement = getScrollableElement(element);\n\n if (scrollableElement) {\n scrollableElement.addEventListener('scroll', handleScroll, {\n passive: true,\n });\n\n return [\n scrollableElement,\n getScrollCoordinates(scrollableElement),\n ] as const;\n }\n\n return null;\n })\n .filter(\n (\n entry\n ): entry is [\n HTMLElement | (Window & typeof globalThis),\n Coordinates\n ] => entry != null\n );\n\n setScrollCoordinates(entries.length ? new Map(entries) : null);\n\n prevElements.current = elements;\n }\n\n return () => {\n cleanup(elements);\n cleanup(previousElements);\n };\n\n function cleanup(elements: Element[]) {\n elements.forEach((element) => {\n const scrollableElement = getScrollableElement(element);\n\n scrollableElement?.removeEventListener('scroll', handleScroll);\n });\n }\n }, [handleScroll, elements]);\n\n return useMemo(() => {\n if (elements.length) {\n return scrollCoordinates\n ? Array.from(scrollCoordinates.values()).reduce(\n (acc, coordinates) => add(acc, coordinates),\n defaultCoordinates\n )\n : getScrollOffsets(elements);\n }\n\n return defaultCoordinates;\n }, [elements, scrollCoordinates]);\n}\n","import {useEffect, useRef} from 'react';\nimport {Coordinates, subtract} from '@dnd-kit/utilities';\n\nimport {defaultCoordinates} from '../../utilities';\n\nexport function useScrollOffsetsDelta(\n scrollOffsets: Coordinates,\n dependencies: any[] = []\n) {\n const initialScrollOffsets = useRef<Coordinates | null>(null);\n\n useEffect(\n () => {\n initialScrollOffsets.current = null;\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n dependencies\n );\n\n useEffect(() => {\n const hasScrollOffsets = scrollOffsets !== defaultCoordinates;\n\n if (hasScrollOffsets && !initialScrollOffsets.current) {\n initialScrollOffsets.current = scrollOffsets;\n }\n\n if (!hasScrollOffsets && initialScrollOffsets.current) {\n initialScrollOffsets.current = null;\n }\n }, [scrollOffsets]);\n\n return initialScrollOffsets.current\n ? subtract(scrollOffsets, initialScrollOffsets.current)\n : defaultCoordinates;\n}\n","import {useEffect} from 'react';\nimport {canUseDOM} from '@dnd-kit/utilities';\n\nimport type {SensorDescriptor} from '../../sensors';\n\nexport function useSensorSetup(sensors: SensorDescriptor<any>[]) {\n useEffect(\n () => {\n if (!canUseDOM) {\n return;\n }\n\n const teardownFns = sensors.map(({sensor}) => sensor.setup?.());\n\n return () => {\n for (const teardown of teardownFns) {\n teardown?.();\n }\n };\n },\n // TO-DO: Sensors length could theoretically change which would not be a valid dependency\n // eslint-disable-next-line react-hooks/exhaustive-deps\n sensors.map(({sensor}) => sensor)\n );\n}\n","import {useMemo} from 'react';\n\nimport type {SyntheticEventName, UniqueIdentifier} from '../../types';\n\nexport type SyntheticListener = {\n eventName: SyntheticEventName;\n handler: (event: React.SyntheticEvent, id: UniqueIdentifier) => void;\n};\n\nexport type SyntheticListeners = SyntheticListener[];\n\nexport type SyntheticListenerMap = Record<string, Function>;\n\nexport function useSyntheticListeners(\n listeners: SyntheticListeners,\n id: UniqueIdentifier\n): SyntheticListenerMap {\n return useMemo(() => {\n return listeners.reduce<SyntheticListenerMap>(\n (acc, {eventName, handler}) => {\n acc[eventName] = (event: React.SyntheticEvent) => {\n handler(event, id);\n };\n\n return acc;\n },\n {} as SyntheticListenerMap\n );\n }, [listeners, id]);\n}\n","import {useMemo} from 'react';\n\nimport {getWindowClientRect} from '../../utilities/rect';\n\nexport function useWindowRect(element: typeof window | null) {\n return useMemo(() => (element ? getWindowClientRect(element) : null), [\n element,\n ]);\n}\n","import {useState} from 'react';\nimport {getWindow, useIsomorphicLayoutEffect} from '@dnd-kit/utilities';\n\nimport type {ClientRect} from '../../types';\nimport {Rect, getClientRect} from '../../utilities/rect';\nimport {isDocumentScrollingElement} from '../../utilities';\n\nimport {useResizeObserver} from './useResizeObserver';\nimport {useWindowRect} from './useWindowRect';\n\nconst defaultValue: Rect[] = [];\n\nexport function useRects(\n elements: Element[],\n measure: (element: Element) => ClientRect = getClientRect\n): ClientRect[] {\n const [firstElement] = elements;\n const windowRect = useWindowRect(\n firstElement ? getWindow(firstElement) : null\n );\n const [rects, setRects] = useState<ClientRect[]>(defaultValue);\n\n function measureRects() {\n setRects(() => {\n if (!elements.length) {\n return defaultValue;\n }\n\n return elements.map((element) =>\n isDocumentScrollingElement(element)\n ? (windowRect as ClientRect)\n : new Rect(measure(element), element)\n );\n });\n }\n\n const resizeObserver = useResizeObserver({callback: measureRects});\n\n useIsomorphicLayoutEffect(() => {\n resizeObserver?.disconnect();\n measureRects();\n elements.forEach((element) => resizeObserver?.observe(element));\n }, [elements]);\n\n return rects;\n}\n","import {isHTMLElement} from '@dnd-kit/utilities';\n\nexport function getMeasurableNode(\n node: HTMLElement | undefined | null\n): HTMLElement | null {\n if (!node) {\n return null;\n }\n\n if (node.children.length > 1) {\n return node;\n }\n const firstChild = node.children[0];\n\n return isHTMLElement(firstChild) ? firstChild : node;\n}\n","import {useMemo, useCallback, useState} from 'react';\nimport {isHTMLElement, useNodeRef} from '@dnd-kit/utilities';\n\nimport {useResizeObserver} from './useResizeObserver';\nimport {getMeasurableNode} from '../../utilities/nodes';\nimport type {PublicContextDescriptor} from '../../store';\nimport type {ClientRect} from '../../types';\n\ninterface Arguments {\n measure(element: HTMLElement): ClientRect;\n}\n\nexport function useDragOverlayMeasuring({\n measure,\n}: Arguments): PublicContextDescriptor['dragOverlay'] {\n const [rect, setRect] = useState<ClientRect | null>(null);\n const handleResize = useCallback(\n (entries: ResizeObserverEntry[]) => {\n for (const {target} of entries) {\n if (isHTMLElement(target)) {\n setRect((rect) => {\n const newRect = measure(target);\n\n return rect\n ? {...rect, width: newRect.width, height: newRect.height}\n : newRect;\n });\n break;\n }\n }\n },\n [measure]\n );\n const resizeObserver = useResizeObserver({callback: handleResize});\n const handleNodeChange = useCallback(\n (element) => {\n const node = getMeasurableNode(element);\n\n resizeObserver?.disconnect();\n\n if (node) {\n resizeObserver?.observe(node);\n }\n\n setRect(node ? measure(node) : null);\n },\n [measure, resizeObserver]\n );\n const [nodeRef, setRef] = useNodeRef(handleNodeChange);\n\n return useMemo(\n () => ({\n nodeRef,\n rect,\n setRef,\n }),\n [rect, nodeRef, setRef]\n );\n}\n","import type {DeepRequired} from '@dnd-kit/utilities';\n\nimport type {DataRef} from '../../store/types';\nimport {KeyboardSensor, PointerSensor} from '../../sensors';\nimport {MeasuringStrategy, MeasuringFrequency} from '../../hooks/utilities';\nimport {\n getClientRect,\n getTransformAgnosticClientRect,\n} from '../../utilities/rect';\n\nimport type {MeasuringConfiguration} from './types';\n\nexport const defaultSensors = [\n {sensor: PointerSensor, options: {}},\n {sensor: KeyboardSensor, options: {}},\n];\n\nexport const defaultData: DataRef = {current: {}};\n\nexport const defaultMeasuringConfiguration: DeepRequired<MeasuringConfiguration> = {\n draggable: {\n measure: getTransformAgnosticClientRect,\n },\n droppable: {\n measure: getTransformAgnosticClientRect,\n strategy: MeasuringStrategy.WhileDragging,\n frequency: MeasuringFrequency.Optimized,\n },\n dragOverlay: {\n measure: getClientRect,\n },\n};\n","import type {UniqueIdentifier} from '../types';\nimport type {DroppableContainer} from './types';\n\ntype Identifier = UniqueIdentifier | null | undefined;\n\nexport class DroppableContainersMap extends Map<\n UniqueIdentifier,\n DroppableContainer\n> {\n get(id: Identifier) {\n return id != null ? super.get(id) ?? undefined : undefined;\n }\n\n toArray(): DroppableContainer[] {\n return Array.from(this.values());\n }\n\n getEnabled(): DroppableContainer[] {\n return this.toArray().filter(({disabled}) => !disabled);\n }\n\n getNodeFor(id: Identifier) {\n return this.get(id)?.node.current ?? undefined;\n }\n}\n","import {createContext} from 'react';\n\nimport {noop} from '../utilities/other';\nimport {defaultMeasuringConfiguration} from '../components/DndContext/defaults';\nimport {DroppableContainersMap} from './constructors';\nimport type {InternalContextDescriptor, PublicContextDescriptor} from './types';\n\nexport const defaultPublicContext: PublicContextDescriptor = {\n activatorEvent: null,\n active: null,\n activeNode: null,\n activeNodeRect: null,\n collisions: null,\n containerNodeRect: null,\n draggableNodes: new Map(),\n droppableRects: new Map(),\n droppableContainers: new DroppableContainersMap(),\n over: null,\n dragOverlay: {\n nodeRef: {\n current: null,\n },\n rect: null,\n setRef: noop,\n },\n scrollableAncestors: [],\n scrollableAncestorRects: [],\n measuringConfiguration: defaultMeasuringConfiguration,\n measureDroppableContainers: noop,\n windowRect: null,\n measuringScheduled: false,\n};\n\nexport const defaultInternalContext: InternalContextDescriptor = {\n activatorEvent: null,\n activators: [],\n active: null,\n activeNodeRect: null,\n ariaDescribedById: {\n draggable: '',\n },\n dispatch: noop,\n draggableNodes: new Map(),\n over: null,\n measureDroppableContainers: noop,\n};\n\nexport const InternalContext = createContext<InternalContextDescriptor>(\n defaultInternalContext\n);\n\nexport const PublicContext = createContext<PublicContextDescriptor>(\n defaultPublicContext\n);\n","import {Action, Actions} from './actions';\nimport {DroppableContainersMap} from './constructors';\nimport type {State} from './types';\n\nexport function getInitialState(): State {\n return {\n draggable: {\n active: null,\n initialCoordinates: {x: 0, y: 0},\n nodes: new Map(),\n translate: {x: 0, y: 0},\n },\n droppable: {\n containers: new DroppableContainersMap(),\n },\n };\n}\n\nexport function reducer(state: State, action: Actions): State {\n switch (action.type) {\n case Action.DragStart:\n return {\n ...state,\n draggable: {\n ...state.draggable,\n initialCoordinates: action.initialCoordinates,\n active: action.active,\n },\n };\n case Action.DragMove:\n if (state.draggable.active == null) {\n return state;\n }\n\n return {\n ...state,\n draggable: {\n ...state.draggable,\n translate: {\n x: action.coordinates.x - state.draggable.initialCoordinates.x,\n y: action.coordinates.y - state.draggable.initialCoordinates.y,\n },\n },\n };\n case Action.DragEnd:\n case Action.DragCancel:\n return {\n ...state,\n draggable: {\n ...state.draggable,\n active: null,\n initialCoordinates: {x: 0, y: 0},\n translate: {x: 0, y: 0},\n },\n };\n\n case Action.RegisterDroppable: {\n const {element} = action;\n const {id} = element;\n const containers = new DroppableContainersMap(state.droppable.containers);\n containers.set(id, element);\n\n return {\n ...state,\n droppable: {\n ...state.droppable,\n containers,\n },\n };\n }\n\n case Action.SetDroppableDisabled: {\n const {id, key, disabled} = action;\n const element = state.droppable.containers.get(id);\n\n if (!element || key !== element.key) {\n return state;\n }\n\n const containers = new DroppableContainersMap(state.droppable.containers);\n containers.set(id, {\n ...element,\n disabled,\n });\n\n return {\n ...state,\n droppable: {\n ...state.droppable,\n containers,\n },\n };\n }\n\n case Action.UnregisterDroppable: {\n const {id, key} = action;\n const element = state.droppable.containers.get(id);\n\n if (!element || key !== element.key) {\n return state;\n }\n\n const containers = new DroppableContainersMap(state.droppable.containers);\n containers.delete(id);\n\n return {\n ...state,\n droppable: {\n ...state.droppable,\n containers,\n },\n };\n }\n\n default: {\n return state;\n }\n }\n}\n","import {useContext, useEffect} from 'react';\nimport {\n findFirstFocusableNode,\n isKeyboardEvent,\n usePrevious,\n} from '@dnd-kit/utilities';\n\nimport {InternalContext} from '../../../store';\n\ninterface Props {\n disabled: boolean;\n}\n\nexport function RestoreFocus({disabled}: Props) {\n const {active, activatorEvent, draggableNodes} = useContext(InternalContext);\n const previousActivatorEvent = usePrevious(activatorEvent);\n const previousActiveId = usePrevious(active?.id);\n\n // Restore keyboard focus on the activator node\n useEffect(() => {\n if (disabled) {\n return;\n }\n\n if (!activatorEvent && previousActivatorEvent && previousActiveId != null) {\n if (!isKeyboardEvent(previousActivatorEvent)) {\n return;\n }\n\n if (document.activeElement === previousActivatorEvent.target) {\n // No need to restore focus\n return;\n }\n\n const draggableNode = draggableNodes.get(previousActiveId);\n\n if (!draggableNode) {\n return;\n }\n\n const {activatorNode, node} = draggableNode;\n\n if (!activatorNode.current && !node.current) {\n return;\n }\n\n requestAnimationFrame(() => {\n for (const element of [activatorNode.current, node.current]) {\n if (!element) {\n continue;\n }\n\n const focusableNode = findFirstFocusableNode(element);\n\n if (focusableNode) {\n focusableNode.focus();\n break;\n }\n }\n });\n }\n }, [\n activatorEvent,\n disabled,\n draggableNodes,\n previousActiveId,\n previousActivatorEvent,\n ]);\n\n return null;\n}\n","import type {FirstArgument, Transform} from '@dnd-kit/utilities';\n\nimport type {Modifiers, Modifier} from './types';\n\nexport function applyModifiers(\n modifiers: Modifiers | undefined,\n {transform, ...args}: FirstArgument<Modifier>\n): Transform {\n return modifiers?.length\n ? modifiers.reduce<Transform>((accumulator, modifier) => {\n return modifier({\n transform: accumulator,\n ...args,\n });\n }, transform)\n : transform;\n}\n","import {useMemo} from 'react';\nimport type {DeepRequired} from '@dnd-kit/utilities';\n\nimport {defaultMeasuringConfiguration} from '../defaults';\nimport type {MeasuringConfiguration} from '../types';\n\nexport function useMeasuringConfiguration(\n config: MeasuringConfiguration | undefined\n): DeepRequired<MeasuringConfiguration> {\n return useMemo(\n () => ({\n draggable: {\n ...defaultMeasuringConfiguration.draggable,\n ...config?.draggable,\n },\n droppable: {\n ...defaultMeasuringConfiguration.droppable,\n ...config?.droppable,\n },\n dragOverlay: {\n ...defaultMeasuringConfiguration.dragOverlay,\n ...config?.dragOverlay,\n },\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [config?.draggable, config?.droppable, config?.dragOverlay]\n );\n}\n","import {useRef} from 'react';\nimport {useIsomorphicLayoutEffect} from '@dnd-kit/utilities';\n\nimport {getRectDelta} from '../../../utilities/rect';\nimport {getFirstScrollableAncestor} from '../../../utilities/scroll';\nimport type {ClientRect} from '../../../types';\nimport type {DraggableNode} from '../../../store';\nimport type {MeasuringFunction} from '../types';\n\ninterface Options {\n activeNode: DraggableNode | null | undefined;\n config: boolean | {x: boolean; y: boolean} | undefined;\n initialRect: ClientRect | null;\n measure: MeasuringFunction;\n}\n\nexport function useLayoutShiftScrollCompensation({\n activeNode,\n measure,\n initialRect,\n config = true,\n}: Options) {\n const initialized = useRef(false);\n const {x, y} = typeof config === 'boolean' ? {x: config, y: config} : config;\n\n useIsomorphicLayoutEffect(() => {\n const disabled = !x && !y;\n\n if (disabled || !activeNode) {\n initialized.current = false;\n return;\n }\n\n if (initialized.current || !initialRect) {\n // Return early if layout shift scroll compensation was already attempted\n // or if there is no initialRect to compare to.\n return;\n }\n\n // Get the most up to date node ref for the active draggable\n const node = activeNode?.node.current;\n\n if (!node || node.isConnected === false) {\n // Return early if there is no attached node ref or if the node is\n // disconnected from the document.\n return;\n }\n\n const rect = measure(node);\n const rectDelta = getRectDelta(rect, initialRect);\n\n if (!x) {\n rectDelta.x = 0;\n }\n\n if (!y) {\n rectDelta.y = 0;\n }\n\n // Only perform layout shift scroll compensation once\n initialized.current = true;\n\n if (Math.abs(rectDelta.x) > 0 || Math.abs(rectDelta.y) > 0) {\n const firstScrollableAncestor = getFirstScrollableAncestor(node);\n\n if (firstScrollableAncestor) {\n firstScrollableAncestor.scrollBy({\n top: rectDelta.y,\n left: rectDelta.x,\n });\n }\n }\n }, [activeNode, x, y, initialRect, measure]);\n}\n","import React, {\n memo,\n createContext,\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from 'react';\nimport {unstable_batchedUpdates} from 'react-dom';\nimport {\n add,\n getEventCoordinates,\n getWindow,\n useLatestValue,\n useIsomorphicLayoutEffect,\n useUniqueId,\n} from '@dnd-kit/utilities';\nimport type {Transform} from '@dnd-kit/utilities';\n\nimport {\n Action,\n PublicContext,\n InternalContext,\n PublicContextDescriptor,\n InternalContextDescriptor,\n getInitialState,\n reducer,\n} from '../../store';\nimport {DndMonitorContext, useDndMonitorProvider} from '../DndMonitor';\nimport {\n useAutoScroller,\n useCachedNode,\n useCombineActivators,\n useDragOverlayMeasuring,\n useDroppableMeasuring,\n useInitialRect,\n useRect,\n useRectDelta,\n useRects,\n useScrollableAncestors,\n useScrollOffsets,\n useScrollOffsetsDelta,\n useSensorSetup,\n useWindowRect,\n} from '../../hooks/utilities';\nimport type {AutoScrollOptions, SyntheticListener} from '../../hooks/utilities';\nimport type {\n Sensor,\n SensorContext,\n SensorDescriptor,\n SensorActivatorFunction,\n SensorInstance,\n} from '../../sensors';\nimport {\n adjustScale,\n CollisionDetection,\n defaultCoordinates,\n getAdjustedRect,\n getFirstCollision,\n rectIntersection,\n} from '../../utilities';\nimport {applyModifiers, Modifiers} from '../../modifiers';\nimport type {Active, Over} from '../../store/types';\nimport type {\n DragStartEvent,\n DragCancelEvent,\n DragEndEvent,\n DragMoveEvent,\n DragOverEvent,\n UniqueIdentifier,\n DragPendingEvent,\n DragAbortEvent,\n} from '../../types';\nimport {\n Accessibility,\n Announcements,\n RestoreFocus,\n ScreenReaderInstructions,\n} from '../Accessibility';\n\nimport {defaultData, defaultSensors} from './defaults';\nimport {\n useLayoutShiftScrollCompensation,\n useMeasuringConfiguration,\n} from './hooks';\nimport type {MeasuringConfiguration} from './types';\n\nexport interface Props {\n id?: string;\n accessibility?: {\n announcements?: Announcements;\n container?: Element;\n restoreFocus?: boolean;\n screenReaderInstructions?: ScreenReaderInstructions;\n };\n autoScroll?: boolean | AutoScrollOptions;\n cancelDrop?: CancelDrop;\n children?: React.ReactNode;\n collisionDetection?: CollisionDetection;\n measuring?: MeasuringConfiguration;\n modifiers?: Modifiers;\n sensors?: SensorDescriptor<any>[];\n onDragAbort?(event: DragAbortEvent): void;\n onDragPending?(event: DragPendingEvent): void;\n onDragStart?(event: DragStartEvent): void;\n onDragMove?(event: DragMoveEvent): void;\n onDragOver?(event: DragOverEvent): void;\n onDragEnd?(event: DragEndEvent): void;\n onDragCancel?(event: DragCancelEvent): void;\n}\n\nexport interface CancelDropArguments extends DragEndEvent {}\n\nexport type CancelDrop = (\n args: CancelDropArguments\n) => boolean | Promise<boolean>;\n\ninterface DndEvent extends Event {\n dndKit?: {\n capturedBy: Sensor<any>;\n };\n}\n\nexport const ActiveDraggableContext = createContext<Transform>({\n ...defaultCoordinates,\n scaleX: 1,\n scaleY: 1,\n});\n\nenum Status {\n Uninitialized,\n Initializing,\n Initialized,\n}\n\nexport const DndContext = memo(function DndContext({\n id,\n accessibility,\n autoScroll = true,\n children,\n sensors = defaultSensors,\n collisionDetection = rectIntersection,\n measuring,\n modifiers,\n ...props\n}: Props) {\n const store = useReducer(reducer, undefined, getInitialState);\n const [state, dispatch] = store;\n const [dispatchMonitorEvent, registerMonitorListener] =\n useDndMonitorProvider();\n const [status, setStatus] = useState<Status>(Status.Uninitialized);\n const isInitialized = status === Status.Initialized;\n const {\n draggable: {active: activeId, nodes: draggableNodes, translate},\n droppable: {containers: droppableContainers},\n } = state;\n const node = activeId != null ? draggableNodes.get(activeId) : null;\n const activeRects = useRef<Active['rect']['current']>({\n initial: null,\n translated: null,\n });\n const active = useMemo<Active | null>(\n () =>\n activeId != null\n ? {\n id: activeId,\n // It's possible for the active node to unmount while dragging\n data: node?.data ?? defaultData,\n rect: activeRects,\n }\n : null,\n [activeId, node]\n );\n const activeRef = useRef<UniqueIdentifier | null>(null);\n const [activeSensor, setActiveSensor] = useState<SensorInstance | null>(null);\n const [activatorEvent, setActivatorEvent] = useState<Event | null>(null);\n const latestProps = useLatestValue(props, Object.values(props));\n const draggableDescribedById = useUniqueId(`DndDescribedBy`, id);\n const enabledDroppableContainers = useMemo(\n () => droppableContainers.getEnabled(),\n [droppableContainers]\n );\n const measuringConfiguration = useMeasuringConfiguration(measuring);\n const {droppableRects, measureDroppableContainers, measuringScheduled} =\n useDroppableMeasuring(enabledDroppableContainers, {\n dragging: isInitialized,\n dependencies: [translate.x, translate.y],\n config: measuringConfiguration.droppable,\n });\n const activeNode = useCachedNode(draggableNodes, activeId);\n const activationCoordinates = useMemo(\n () => (activatorEvent ? getEventCoordinates(activatorEvent) : null),\n [activatorEvent]\n );\n const autoScrollOptions = getAutoScrollerOptions();\n const initialActiveNodeRect = useInitialRect(\n activeNode,\n measuringConfiguration.draggable.measure\n );\n\n useLayoutShiftScrollCompensation({\n activeNode: activeId != null ? draggableNodes.get(activeId) : null,\n config: autoScrollOptions.layoutShiftCompensation,\n initialRect: initialActiveNodeRect,\n measure: measuringConfiguration.draggable.measure,\n });\n\n const activeNodeRect = useRect(\n activeNode,\n measuringConfiguration.draggable.measure,\n initialActiveNodeRect\n );\n const containerNodeRect = useRect(\n activeNode ? activeNode.parentElement : null\n );\n const sensorContext = useRef<SensorContext>({\n activatorEvent: null,\n active: null,\n activeNode,\n collisionRect: null,\n collisions: null,\n droppableRects,\n draggableNodes,\n draggingNode: null,\n draggingNodeRect: null,\n droppableContainers,\n over: null,\n scrollableAncestors: [],\n scrollAdjustedTranslate: null,\n });\n const overNode = droppableContainers.getNodeFor(\n sensorContext.current.over?.id\n );\n const dragOverlay = useDragOverlayMeasuring({\n measure: measuringConfiguration.dragOverlay.measure,\n });\n\n // Use the rect of the drag overlay if it is mounted\n const draggingNode = dragOverlay.nodeRef.current ?? activeNode;\n const draggingNodeRect = isInitialized\n ? dragOverlay.rect ?? activeNodeRect\n : null;\n const usesDragOverlay = Boolean(\n dragOverlay.nodeRef.current && dragOverlay.rect\n );\n // The delta between the previous and new position of the draggable node\n // is only relevant when there is no drag overlay\n const nodeRectDelta = useRectDelta(usesDragOverlay ? null : activeNodeRect);\n\n // Get the window rect of the dragging node\n const windowRect = useWindowRect(\n draggingNode ? getWindow(draggingNode) : null\n );\n\n // Get scrollable ancestors of the dragging node\n const scrollableAncestors = useScrollableAncestors(\n isInitialized ? overNode ?? activeNode : null\n );\n const scrollableAncestorRects = useRects(scrollableAncestors);\n\n // Apply modifiers\n const modifiedTranslate = applyModifiers(modifiers, {\n transform: {\n x: translate.x - nodeRectDelta.x,\n y: translate.y - nodeRectDelta.y,\n scaleX: 1,\n scaleY: 1,\n },\n activatorEvent,\n active,\n activeNodeRect,\n containerNodeRect,\n draggingNodeRect,\n over: sensorContext.current.over,\n overlayNodeRect: dragOverlay.rect,\n scrollableAncestors,\n scrollableAncestorRects,\n windowRect,\n });\n\n const pointerCoordinates = activationCoordinates\n ? add(activationCoordinates, translate)\n : null;\n\n const scrollOffsets = useScrollOffsets(scrollableAncestors);\n // Represents the scroll delta since dragging was initiated\n const scrollAdjustment = useScrollOffsetsDelta(scrollOffsets);\n // Represents the scroll delta since the last time the active node rect was measured\n const activeNodeScrollDelta = useScrollOffsetsDelta(scrollOffsets, [\n activeNodeRect,\n ]);\n\n const scrollAdjustedTranslate = add(modifiedTranslate, scrollAdjustment);\n\n const collisionRect = draggingNodeRect\n ? getAdjustedRect(draggingNodeRect, modifiedTranslate)\n : null;\n\n const collisions =\n active && collisionRect\n ? collisionDetection({\n active,\n collisionRect,\n droppableRects,\n droppableContainers: enabledDroppableContainers,\n pointerCoordinates,\n })\n : null;\n const overId = getFirstCollision(collisions, 'id');\n const [over, setOver] = useState<Over | null>(null);\n\n // When there is no drag overlay used, we need to account for the\n // window scroll delta\n const appliedTranslate = usesDragOverlay\n ? modifiedTranslate\n : add(modifiedTranslate, activeNodeScrollDelta);\n\n const transform = adjustScale(\n appliedTranslate,\n over?.rect ?? null,\n activeNodeRect\n );\n\n const activeSensorRef = useRef<SensorInstance | null>(null);\n const instantiateSensor = useCallback(\n (\n event: React.SyntheticEvent,\n {sensor: Sensor, options}: SensorDescriptor<any>\n ) => {\n if (activeRef.current == null) {\n return;\n }\n\n const activeNode = draggableNodes.get(activeRef.current);\n\n if (!activeNode) {\n return;\n }\n\n const activatorEvent = event.nativeEvent;\n\n const sensorInstance = new Sensor({\n active: activeRef.current,\n activeNode,\n event: activatorEvent,\n options,\n // Sensors need to be instantiated with refs for arguments that change over time\n // otherwise they are frozen in time with the stale arguments\n context: sensorContext,\n onAbort(id) {\n const draggableNode = draggableNodes.get(id);\n\n if (!draggableNode) {\n return;\n }\n\n const {onDragAbort} = latestProps.current;\n const event: DragAbortEvent = {id};\n onDragAbort?.(event);\n dispatchMonitorEvent({type: 'onDragAbort', event});\n },\n onPending(id, constraint, initialCoordinates, offset) {\n const draggableNode = draggableNodes.get(id);\n\n if (!draggableNode) {\n return;\n }\n\n const {onDragPending} = latestProps.current;\n const event: DragPendingEvent = {\n id,\n constraint,\n initialCoordinates,\n offset,\n };\n\n onDragPending?.(event);\n dispatchMonitorEvent({type: 'onDragPending', event});\n },\n onStart(initialCoordinates) {\n const id = activeRef.current;\n\n if (id == null) {\n return;\n }\n\n const draggableNode = draggableNodes.get(id);\n\n if (!draggableNode) {\n return;\n }\n\n const {onDragStart} = latestProps.current;\n const event: DragStartEvent = {\n activatorEvent,\n active: {id, data: draggableNode.data, rect: activeRects},\n };\n\n unstable_batchedUpdates(() => {\n onDragStart?.(event);\n setStatus(Status.Initializing);\n dispatch({\n type: Action.DragStart,\n initialCoordinates,\n active: id,\n });\n dispatchMonitorEvent({type: 'onDragStart', event});\n setActiveSensor(activeSensorRef.current);\n setActivatorEvent(activatorEvent);\n });\n },\n onMove(coordinates) {\n dispatch({\n type: Action.DragMove,\n coordinates,\n });\n },\n onEnd: createHandler(Action.DragEnd),\n onCancel: createHandler(Action.DragCancel),\n });\n\n activeSensorRef.current = sensorInstance;\n\n function createHandler(type: Action.DragEnd | Action.DragCancel) {\n return async function handler() {\n const {active, collisions, over, scrollAdjustedTranslate} =\n sensorContext.current;\n let event: DragEndEvent | null = null;\n\n if (active && scrollAdjustedTranslate) {\n const {cancelDrop} = latestProps.current;\n\n event = {\n activatorEvent,\n active: active,\n collisions,\n delta: scrollAdjustedTranslate,\n over,\n };\n\n if (type === Action.DragEnd && typeof cancelDrop === 'function') {\n const shouldCancel = await Promise.resolve(cancelDrop(event));\n\n if (shouldCancel) {\n type = Action.DragCancel;\n }\n }\n }\n\n activeRef.current = null;\n\n unstable_batchedUpdates(() => {\n dispatch({type});\n setStatus(Status.Uninitialized);\n setOver(null);\n setActiveSensor(null);\n setActivatorEvent(null);\n activeSensorRef.current = null;\n\n const eventName =\n type === Action.DragEnd ? 'onDragEnd' : 'onDragCancel';\n\n if (event) {\n const handler = latestProps.current[eventName];\n\n handler?.(event);\n dispatchMonitorEvent({type: eventName, event});\n }\n });\n };\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [draggableNodes]\n );\n\n const bindActivatorToSensorInstantiator = useCallback(\n (\n handler: SensorActivatorFunction<any>,\n sensor: SensorDescriptor<any>\n ): SyntheticListener['handler'] => {\n return (event, active) => {\n const nativeEvent = event.nativeEvent as DndEvent;\n const activeDraggableNode = draggableNodes.get(active);\n\n if (\n // Another sensor is already instantiating\n activeRef.current !== null ||\n // No active draggable\n !activeDraggableNode ||\n // Event has already been captured\n nativeEvent.dndKit ||\n nativeEvent.defaultPrevented\n ) {\n return;\n }\n\n const activationContext = {\n active: activeDraggableNode,\n };\n const shouldActivate = handler(\n event,\n sensor.options,\n activationContext\n );\n\n if (shouldActivate === true) {\n nativeEvent.dndKit = {\n capturedBy: sensor.sensor,\n };\n\n activeRef.current = active;\n instantiateSensor(event, sensor);\n }\n };\n },\n [draggableNodes, instantiateSensor]\n );\n\n const activators = useCombineActivators(\n sensors,\n bindActivatorToSensorInstantiator\n );\n\n useSensorSetup(sensors);\n\n useIsomorphicLayoutEffect(() => {\n if (activeNodeRect && status === Status.Initializing) {\n setStatus(Status.Initialized);\n }\n }, [activeNodeRect, status]);\n\n useEffect(\n () => {\n const {onDragMove} = latestProps.current;\n const {active, activatorEvent, collisions, over} = sensorContext.current;\n\n if (!active || !activatorEvent) {\n return;\n }\n\n const event: DragMoveEvent = {\n active,\n activatorEvent,\n collisions,\n delta: {\n x: scrollAdjustedTranslate.x,\n y: scrollAdjustedTranslate.y,\n },\n over,\n };\n\n unstable_batchedUpdates(() => {\n onDragMove?.(event);\n dispatchMonitorEvent({type: 'onDragMove', event});\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [scrollAdjustedTranslate.x, scrollAdjustedTranslate.y]\n );\n\n useEffect(\n () => {\n const {\n active,\n activatorEvent,\n collisions,\n droppableContainers,\n scrollAdjustedTranslate,\n } = sensorContext.current;\n\n if (\n !active ||\n activeRef.current == null ||\n !activatorEvent ||\n !scrollAdjustedTranslate\n ) {\n return;\n }\n\n const {onDragOver} = latestProps.current;\n const overContainer = droppableContainers.get(overId);\n const over =\n overContainer && overContainer.rect.current\n ? {\n id: overContainer.id,\n rect: overContainer.rect.current,\n data: overContainer.data,\n disabled: overContainer.disabled,\n }\n : null;\n const event: DragOverEvent = {\n active,\n activatorEvent,\n collisions,\n delta: {\n x: scrollAdjustedTranslate.x,\n y: scrollAdjustedTranslate.y,\n },\n over,\n };\n\n unstable_batchedUpdates(() => {\n setOver(over);\n onDragOver?.(event);\n dispatchMonitorEvent({type: 'onDragOver', event});\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [overId]\n );\n\n useIsomorphicLayoutEffect(() => {\n sensorContext.current = {\n activatorEvent,\n active,\n activeNode,\n collisionRect,\n collisions,\n droppableRects,\n draggableNodes,\n draggingNode,\n draggingNodeRect,\n droppableContainers,\n over,\n scrollableAncestors,\n scrollAdjustedTranslate,\n };\n\n activeRects.current = {\n initial: draggingNodeRect,\n translated: collisionRect,\n };\n }, [\n active,\n activeNode,\n collisions,\n collisionRect,\n draggableNodes,\n draggingNode,\n draggingNodeRect,\n droppableRects,\n droppableContainers,\n over,\n scrollableAncestors,\n scrollAdjustedTranslate,\n ]);\n\n useAutoScroller({\n ...autoScrollOptions,\n delta: translate,\n draggingRect: collisionRect,\n pointerCoordinates,\n scrollableAncestors,\n scrollableAncestorRects,\n });\n\n const publicContext = useMemo(() => {\n const context: PublicContextDescriptor = {\n active,\n activeNode,\n activeNodeRect,\n activatorEvent,\n collisions,\n containerNodeRect,\n dragOverlay,\n draggableNodes,\n droppableContainers,\n droppableRects,\n over,\n measureDroppableContainers,\n scrollableAncestors,\n scrollableAncestorRects,\n measuringConfiguration,\n measuringScheduled,\n windowRect,\n };\n\n return context;\n }, [\n active,\n activeNode,\n activeNodeRect,\n activatorEvent,\n collisions,\n containerNodeRect,\n dragOverlay,\n draggableNodes,\n droppableContainers,\n droppableRects,\n over,\n measureDroppableContainers,\n scrollableAncestors,\n scrollableAncestorRects,\n measuringConfiguration,\n measuringScheduled,\n windowRect,\n ]);\n\n const internalContext = useMemo(() => {\n const context: InternalContextDescriptor = {\n activatorEvent,\n activators,\n active,\n activeNodeRect,\n ariaDescribedById: {\n draggable: draggableDescribedById,\n },\n dispatch,\n draggableNodes,\n over,\n measureDroppableContainers,\n };\n\n return context;\n }, [\n activatorEvent,\n activators,\n active,\n activeNodeRect,\n dispatch,\n draggableDescribedById,\n draggableNodes,\n over,\n measureDroppableContainers,\n ]);\n\n return (\n <DndMonitorContext.Provider value={registerMonitorListener}>\n <InternalContext.Provider value={internalContext}>\n <PublicContext.Provider value={publicContext}>\n <ActiveDraggableContext.Provider value={transform}>\n {children}\n </ActiveDraggableContext.Provider>\n </PublicContext.Provider>\n <RestoreFocus disabled={accessibility?.restoreFocus === false} />\n </InternalContext.Provider>\n <Accessibility\n {...accessibility}\n hiddenTextDescribedById={draggableDescribedById}\n />\n </DndMonitorContext.Provider>\n );\n\n function getAutoScrollerOptions() {\n const activeSensorDisablesAutoscroll =\n activeSensor?.autoScrollEnabled === false;\n const autoScrollGloballyDisabled =\n typeof autoScroll === 'object'\n ? autoScroll.enabled === false\n : autoScroll === false;\n const enabled =\n isInitialized &&\n !activeSensorDisablesAutoscroll &&\n !autoScrollGloballyDisabled;\n\n if (typeof autoScroll === 'object') {\n return {\n ...autoScroll,\n enabled,\n };\n }\n\n return {enabled};\n }\n});\n","import {createContext, useContext, useMemo} from 'react';\nimport {\n Transform,\n useNodeRef,\n useIsomorphicLayoutEffect,\n useLatestValue,\n useUniqueId,\n} from '@dnd-kit/utilities';\n\nimport {InternalContext, Data} from '../store';\nimport type {UniqueIdentifier} from '../types';\nimport {ActiveDraggableContext} from '../components/DndContext';\nimport {useSyntheticListeners, SyntheticListenerMap} from './utilities';\n\nexport interface UseDraggableArguments {\n id: UniqueIdentifier;\n data?: Data;\n disabled?: boolean;\n attributes?: {\n role?: string;\n roleDescription?: string;\n tabIndex?: number;\n };\n}\n\nexport interface DraggableAttributes {\n role: string;\n tabIndex: number;\n 'aria-disabled': boolean;\n 'aria-pressed': boolean | undefined;\n 'aria-roledescription': string;\n 'aria-describedby': string;\n}\n\nexport type DraggableSyntheticListeners = SyntheticListenerMap | undefined;\n\nconst NullContext = createContext<any>(null);\n\nconst defaultRole = 'button';\n\nconst ID_PREFIX = 'Draggable';\n\nexport function useDraggable({\n id,\n data,\n disabled = false,\n attributes,\n}: UseDraggableArguments) {\n const key = useUniqueId(ID_PREFIX);\n const {\n activators,\n activatorEvent,\n active,\n activeNodeRect,\n ariaDescribedById,\n draggableNodes,\n over,\n } = useContext(InternalContext);\n const {\n role = defaultRole,\n roleDescription = 'draggable',\n tabIndex = 0,\n } = attributes ?? {};\n const isDragging = active?.id === id;\n const transform: Transform | null = useContext(\n isDragging ? ActiveDraggableContext : NullContext\n );\n const [node, setNodeRef] = useNodeRef();\n const [activatorNode, setActivatorNodeRef] = useNodeRef();\n const listeners = useSyntheticListeners(activators, id);\n const dataRef = useLatestValue(data);\n\n useIsomorphicLayoutEffect(\n () => {\n draggableNodes.set(id, {id, key, node, activatorNode, data: dataRef});\n\n return () => {\n const node = draggableNodes.get(id);\n\n if (node && node.key === key) {\n draggableNodes.delete(id);\n }\n };\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [draggableNodes, id]\n );\n\n const memoizedAttributes: DraggableAttributes = useMemo(\n () => ({\n role,\n tabIndex,\n 'aria-disabled': disabled,\n 'aria-pressed': isDragging && role === defaultRole ? true : undefined,\n 'aria-roledescription': roleDescription,\n 'aria-describedby': ariaDescribedById.draggable,\n }),\n [\n disabled,\n role,\n tabIndex,\n isDragging,\n roleDescription,\n ariaDescribedById.draggable,\n ]\n );\n\n return {\n active,\n activatorEvent,\n activeNodeRect,\n attributes: memoizedAttributes,\n isDragging,\n listeners: disabled ? undefined : listeners,\n node,\n over,\n setNodeRef,\n setActivatorNodeRef,\n transform,\n };\n}\n","import {ContextType, useContext} from 'react';\nimport {PublicContext} from '../store';\n\nexport function useDndContext() {\n return useContext(PublicContext);\n}\n\nexport type UseDndContextReturnValue = ContextType<typeof PublicContext>;\n","import {useCallback, useContext, useEffect, useRef} from 'react';\nimport {useLatestValue, useNodeRef, useUniqueId} from '@dnd-kit/utilities';\n\nimport {InternalContext, Action, Data} from '../store';\nimport type {ClientRect, UniqueIdentifier} from '../types';\n\nimport {useResizeObserver} from './utilities';\n\ninterface ResizeObserverConfig {\n /** Whether the ResizeObserver should be disabled entirely */\n disabled?: boolean;\n /** Resize events may affect the layout and position of other droppable containers.\n * Specify an array of `UniqueIdentifier` of droppable containers that should also be re-measured\n * when this droppable container resizes. Specifying an empty array re-measures all droppable containers.\n */\n updateMeasurementsFor?: UniqueIdentifier[];\n /** Represents the debounce timeout between when resize events are observed and when elements are re-measured */\n timeout?: number;\n}\n\nexport interface UseDroppableArguments {\n id: UniqueIdentifier;\n disabled?: boolean;\n data?: Data;\n resizeObserverConfig?: ResizeObserverConfig;\n}\n\nconst ID_PREFIX = 'Droppable';\n\nconst defaultResizeObserverConfig = {\n timeout: 25,\n};\n\nexport function useDroppable({\n data,\n disabled = false,\n id,\n resizeObserverConfig,\n}: UseDroppableArguments) {\n const key = useUniqueId(ID_PREFIX);\n const {active, dispatch, over, measureDroppableContainers} =\n useContext(InternalContext);\n const previous = useRef({disabled});\n const resizeObserverConnected = useRef(false);\n const rect = useRef<ClientRect | null>(null);\n const callbackId = useRef<NodeJS.Timeout | null>(null);\n const {\n disabled: resizeObserverDisabled,\n updateMeasurementsFor,\n timeout: resizeObserverTimeout,\n } = {\n ...defaultResizeObserverConfig,\n ...resizeObserverConfig,\n };\n const ids = useLatestValue(updateMeasurementsFor ?? id);\n const handleResize = useCallback(\n () => {\n if (!resizeObserverConnected.current) {\n // ResizeObserver invokes the `handleResize` callback as soon as `observe` is called,\n // assuming the element is rendered and displayed.\n resizeObserverConnected.current = true;\n return;\n }\n\n if (callbackId.current != null) {\n clearTimeout(callbackId.current);\n }\n\n callbackId.current = setTimeout(() => {\n measureDroppableContainers(\n Array.isArray(ids.current) ? ids.current : [ids.current]\n );\n callbackId.current = null;\n }, resizeObserverTimeout);\n },\n //eslint-disable-next-line react-hooks/exhaustive-deps\n [resizeObserverTimeout]\n );\n const resizeObserver = useResizeObserver({\n callback: handleResize,\n disabled: resizeObserverDisabled || !active,\n });\n const handleNodeChange = useCallback(\n (newElement: HTMLElement | null, previousElement: HTMLElement | null) => {\n if (!resizeObserver) {\n return;\n }\n\n if (previousElement) {\n resizeObserver.unobserve(previousElement);\n resizeObserverConnected.current = false;\n }\n\n if (newElement) {\n resizeObserver.observe(newElement);\n }\n },\n [resizeObserver]\n );\n const [nodeRef, setNodeRef] = useNodeRef(handleNodeChange);\n const dataRef = useLatestValue(data);\n\n useEffect(() => {\n if (!resizeObserver || !nodeRef.current) {\n return;\n }\n\n resizeObserver.disconnect();\n resizeObserverConnected.current = false;\n resizeObserver.observe(nodeRef.current);\n }, [nodeRef, resizeObserver]);\n\n useEffect(\n () => {\n dispatch({\n type: Action.RegisterDroppable,\n element: {\n id,\n key,\n disabled,\n node: nodeRef,\n rect,\n data: dataRef,\n },\n });\n\n return () =>\n dispatch({\n type: Action.UnregisterDroppable,\n key,\n id,\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [id]\n );\n\n useEffect(() => {\n if (disabled !== previous.current.disabled) {\n dispatch({\n type: Action.SetDroppableDisabled,\n id,\n key,\n disabled,\n });\n\n previous.current.disabled = disabled;\n }\n }, [id, key, disabled, dispatch]);\n\n return {\n active,\n rect,\n isOver: over?.id === id,\n node: nodeRef,\n over,\n setNodeRef,\n };\n}\n","import React, {cloneElement, useState} from 'react';\nimport {useIsomorphicLayoutEffect, usePrevious} from '@dnd-kit/utilities';\n\nimport type {UniqueIdentifier} from '../../../../types';\n\nexport type Animation = (\n key: UniqueIdentifier,\n node: HTMLElement\n) => Promise<void> | void;\n\nexport interface Props {\n animation: Animation;\n children: React.ReactElement | null;\n}\n\nexport function AnimationManager({animation, children}: Props) {\n const [\n clonedChildren,\n setClonedChildren,\n ] = useState<React.ReactElement | null>(null);\n const [element, setElement] = useState<HTMLElement | null>(null);\n const previousChildren = usePrevious(children);\n\n if (!children && !clonedChildren && previousChildren) {\n setClonedChildren(previousChildren);\n }\n\n useIsomorphicLayoutEffect(() => {\n if (!element) {\n return;\n }\n\n const key = clonedChildren?.key;\n const id = clonedChildren?.props.id;\n\n if (key == null || id == null) {\n setClonedChildren(null);\n return;\n }\n\n Promise.resolve(animation(id, element)).then(() => {\n setClonedChildren(null);\n });\n }, [animation, clonedChildren, element]);\n\n return (\n <>\n {children}\n {clonedChildren ? cloneElement(clonedChildren, {ref: setElement}) : null}\n </>\n );\n}\n","import React from 'react';\nimport type {Transform} from '@dnd-kit/utilities';\n\nimport {InternalContext, defaultInternalContext} from '../../../../store';\nimport {ActiveDraggableContext} from '../../../DndContext';\n\ninterface Props {\n children: React.ReactNode;\n}\n\nconst defaultTransform: Transform = {\n x: 0,\n y: 0,\n scaleX: 1,\n scaleY: 1,\n};\n\nexport function NullifiedContextProvider({children}: Props) {\n return (\n <InternalContext.Provider value={defaultInternalContext}>\n <ActiveDraggableContext.Provider value={defaultTransform}>\n {children}\n </ActiveDraggableContext.Provider>\n </InternalContext.Provider>\n );\n}\n","import React, {forwardRef} from 'react';\nimport {CSS, isKeyboardEvent} from '@dnd-kit/utilities';\n\nimport type {Transform} from '@dnd-kit/utilities';\n\nimport {getRelativeTransformOrigin} from '../../../../utilities';\nimport type {ClientRect, UniqueIdentifier} from '../../../../types';\n\ntype TransitionGetter = (\n activatorEvent: Event | null\n) => React.CSSProperties['transition'] | undefined;\n\nexport interface Props {\n as: keyof JSX.IntrinsicElements;\n activatorEvent: Event | null;\n adjustScale?: boolean;\n children?: React.ReactNode;\n className?: string;\n id: UniqueIdentifier;\n rect: ClientRect | null;\n style?: React.CSSProperties;\n transition?: string | TransitionGetter;\n transform: Transform;\n}\n\nconst baseStyles: React.CSSProperties = {\n position: 'fixed',\n touchAction: 'none',\n};\n\nconst defaultTransition: TransitionGetter = (activatorEvent) => {\n const isKeyboardActivator = isKeyboardEvent(activatorEvent);\n\n return isKeyboardActivator ? 'transform 250ms ease' : undefined;\n};\n\nexport const PositionedOverlay = forwardRef<HTMLElement, Props>(\n (\n {\n as,\n activatorEvent,\n adjustScale,\n children,\n className,\n rect,\n style,\n transform,\n transition = defaultTransition,\n },\n ref\n ) => {\n if (!rect) {\n return null;\n }\n\n const scaleAdjustedTransform = adjustScale\n ? transform\n : {\n ...transform,\n scaleX: 1,\n scaleY: 1,\n };\n const styles: React.CSSProperties | undefined = {\n ...baseStyles,\n width: rect.width,\n height: rect.height,\n top: rect.top,\n left: rect.left,\n transform: CSS.Transform.toString(scaleAdjustedTransform),\n transformOrigin:\n adjustScale && activatorEvent\n ? getRelativeTransformOrigin(\n activatorEvent as MouseEvent | KeyboardEvent | TouchEvent,\n rect\n )\n : undefined,\n transition:\n typeof transition === 'function'\n ? transition(activatorEvent)\n : transition,\n ...style,\n };\n\n return React.createElement(\n as,\n {\n className,\n style: styles,\n ref,\n },\n children\n );\n }\n);\n","import {CSS, useEvent, getWindow} from '@dnd-kit/utilities';\nimport type {DeepRequired, Transform} from '@dnd-kit/utilities';\n\nimport type {\n Active,\n DraggableNode,\n DraggableNodes,\n DroppableContainers,\n} from '../../../store';\nimport type {ClientRect, UniqueIdentifier} from '../../../types';\nimport {getMeasurableNode} from '../../../utilities/nodes';\nimport {scrollIntoViewIfNeeded} from '../../../utilities/scroll';\nimport {parseTransform} from '../../../utilities/transform';\nimport type {MeasuringConfiguration} from '../../DndContext';\nimport type {Animation} from '../components';\n\ninterface SharedParameters {\n active: {\n id: UniqueIdentifier;\n data: Active['data'];\n node: HTMLElement;\n rect: ClientRect;\n };\n dragOverlay: {\n node: HTMLElement;\n rect: ClientRect;\n };\n draggableNodes: DraggableNodes;\n droppableContainers: DroppableContainers;\n measuringConfiguration: DeepRequired<MeasuringConfiguration>;\n}\n\nexport interface KeyframeResolverParameters extends SharedParameters {\n transform: {\n initial: Transform;\n final: Transform;\n };\n}\n\nexport type KeyframeResolver = (\n parameters: KeyframeResolverParameters\n) => Keyframe[];\n\nexport interface DropAnimationOptions {\n keyframes?: KeyframeResolver;\n duration?: number;\n easing?: string;\n sideEffects?: DropAnimationSideEffects | null;\n}\n\nexport type DropAnimation = DropAnimationFunction | DropAnimationOptions;\n\ninterface Arguments {\n draggableNodes: DraggableNodes;\n droppableContainers: DroppableContainers;\n measuringConfiguration: DeepRequired<MeasuringConfiguration>;\n config?: DropAnimation | null;\n}\n\nexport interface DropAnimationFunctionArguments extends SharedParameters {\n transform: Transform;\n}\n\nexport type DropAnimationFunction = (\n args: DropAnimationFunctionArguments\n) => Promise<void> | void;\n\ntype CleanupFunction = () => void;\n\nexport interface DropAnimationSideEffectsParameters extends SharedParameters {}\n\nexport type DropAnimationSideEffects = (\n parameters: DropAnimationSideEffectsParameters\n) => CleanupFunction | void;\n\ntype ExtractStringProperties<T> = {\n [K in keyof T]?: T[K] extends string ? string : never;\n};\n\ntype Styles = ExtractStringProperties<CSSStyleDeclaration>;\n\ninterface DefaultDropAnimationSideEffectsOptions {\n className?: {\n active?: string;\n dragOverlay?: string;\n };\n styles?: {\n active?: Styles;\n dragOverlay?: Styles;\n };\n}\n\nexport const defaultDropAnimationSideEffects = (\n options: DefaultDropAnimationSideEffectsOptions\n): DropAnimationSideEffects => ({active, dragOverlay}) => {\n const originalStyles: Record<string, string> = {};\n const {styles, className} = options;\n\n if (styles?.active) {\n for (const [key, value] of Object.entries(styles.active)) {\n if (value === undefined) {\n continue;\n }\n\n originalStyles[key] = active.node.style.getPropertyValue(key);\n active.node.style.setProperty(key, value);\n }\n }\n\n if (styles?.dragOverlay) {\n for (const [key, value] of Object.entries(styles.dragOverlay)) {\n if (value === undefined) {\n continue;\n }\n\n dragOverlay.node.style.setProperty(key, value);\n }\n }\n\n if (className?.active) {\n active.node.classList.add(className.active);\n }\n\n if (className?.dragOverlay) {\n dragOverlay.node.classList.add(className.dragOverlay);\n }\n\n return function cleanup() {\n for (const [key, value] of Object.entries(originalStyles)) {\n active.node.style.setProperty(key, value);\n }\n\n if (className?.active) {\n active.node.classList.remove(className.active);\n }\n };\n};\n\nconst defaultKeyframeResolver: KeyframeResolver = ({\n transform: {initial, final},\n}) => [\n {\n transform: CSS.Transform.toString(initial),\n },\n {\n transform: CSS.Transform.toString(final),\n },\n];\n\nexport const defaultDropAnimationConfiguration: Required<DropAnimationOptions> = {\n duration: 250,\n easing: 'ease',\n keyframes: defaultKeyframeResolver,\n sideEffects: defaultDropAnimationSideEffects({\n styles: {\n active: {\n opacity: '0',\n },\n },\n }),\n};\n\nexport function useDropAnimation({\n config,\n draggableNodes,\n droppableContainers,\n measuringConfiguration,\n}: Arguments) {\n return useEvent<Animation>((id, node) => {\n if (config === null) {\n return;\n }\n\n const activeDraggable: DraggableNode | undefined = draggableNodes.get(id);\n\n if (!activeDraggable) {\n return;\n }\n\n const activeNode = activeDraggable.node.current;\n\n if (!activeNode) {\n return;\n }\n\n const measurableNode = getMeasurableNode(node);\n\n if (!measurableNode) {\n return;\n }\n const {transform} = getWindow(node).getComputedStyle(node);\n const parsedTransform = parseTransform(transform);\n\n if (!parsedTransform) {\n return;\n }\n\n const animation: DropAnimationFunction =\n typeof config === 'function'\n ? config\n : createDefaultDropAnimation(config);\n\n scrollIntoViewIfNeeded(\n activeNode,\n measuringConfiguration.draggable.measure\n );\n\n return animation({\n active: {\n id,\n data: activeDraggable.data,\n node: activeNode,\n rect: measuringConfiguration.draggable.measure(activeNode),\n },\n draggableNodes,\n dragOverlay: {\n node,\n rect: measuringConfiguration.dragOverlay.measure(measurableNode),\n },\n droppableContainers,\n measuringConfiguration,\n transform: parsedTransform,\n });\n });\n}\n\nfunction createDefaultDropAnimation(\n options: DropAnimationOptions | undefined\n): DropAnimationFunction {\n const {duration, easing, sideEffects, keyframes} = {\n ...defaultDropAnimationConfiguration,\n ...options,\n };\n\n return ({active, dragOverlay, transform, ...rest}) => {\n if (!duration) {\n // Do not animate if animation duration is zero.\n return;\n }\n\n const delta = {\n x: dragOverlay.rect.left - active.rect.left,\n y: dragOverlay.rect.top - active.rect.top,\n };\n\n const scale = {\n scaleX:\n transform.scaleX !== 1\n ? (active.rect.width * transform.scaleX) / dragOverlay.rect.width\n : 1,\n scaleY:\n transform.scaleY !== 1\n ? (active.rect.height * transform.scaleY) / dragOverlay.rect.height\n : 1,\n };\n const finalTransform = {\n x: transform.x - delta.x,\n y: transform.y - delta.y,\n ...scale,\n };\n\n const animationKeyframes = keyframes({\n ...rest,\n active,\n dragOverlay,\n transform: {initial: transform, final: finalTransform},\n });\n\n const [firstKeyframe] = animationKeyframes;\n const lastKeyframe = animationKeyframes[animationKeyframes.length - 1];\n\n if (JSON.stringify(firstKeyframe) === JSON.stringify(lastKeyframe)) {\n // The start and end keyframes are the same, infer that there is no animation needed.\n return;\n }\n\n const cleanup = sideEffects?.({active, dragOverlay, ...rest});\n const animation = dragOverlay.node.animate(animationKeyframes, {\n duration,\n easing,\n fill: 'forwards',\n });\n\n return new Promise((resolve) => {\n animation.onfinish = () => {\n cleanup?.();\n resolve();\n };\n });\n };\n}\n","import {useMemo} from 'react';\n\nimport type {UniqueIdentifier} from '../../../types';\n\nlet key = 0;\n\nexport function useKey(id: UniqueIdentifier | undefined) {\n return useMemo(() => {\n if (id == null) {\n return;\n }\n\n key++;\n return key;\n }, [id]);\n}\n","import React, {useContext} from 'react';\n\nimport {applyModifiers, Modifiers} from '../../modifiers';\nimport {ActiveDraggableContext} from '../DndContext';\nimport {useDndContext} from '../../hooks';\nimport {useInitialValue} from '../../hooks/utilities';\n\nimport {\n AnimationManager,\n NullifiedContextProvider,\n PositionedOverlay,\n} from './components';\nimport type {PositionedOverlayProps} from './components';\n\nimport {useDropAnimation, useKey} from './hooks';\nimport type {DropAnimation} from './hooks';\n\nexport interface Props\n extends Pick<\n PositionedOverlayProps,\n 'adjustScale' | 'children' | 'className' | 'style' | 'transition'\n > {\n dropAnimation?: DropAnimation | null | undefined;\n modifiers?: Modifiers;\n wrapperElement?: keyof JSX.IntrinsicElements;\n zIndex?: number;\n}\n\nexport const DragOverlay = React.memo(\n ({\n adjustScale = false,\n children,\n dropAnimation: dropAnimationConfig,\n style,\n transition,\n modifiers,\n wrapperElement = 'div',\n className,\n zIndex = 999,\n }: Props) => {\n const {\n activatorEvent,\n active,\n activeNodeRect,\n containerNodeRect,\n draggableNodes,\n droppableContainers,\n dragOverlay,\n over,\n measuringConfiguration,\n scrollableAncestors,\n scrollableAncestorRects,\n windowRect,\n } = useDndContext();\n const transform = useContext(ActiveDraggableContext);\n const key = useKey(active?.id);\n const modifiedTransform = applyModifiers(modifiers, {\n activatorEvent,\n active,\n activeNodeRect,\n containerNodeRect,\n draggingNodeRect: dragOverlay.rect,\n over,\n overlayNodeRect: dragOverlay.rect,\n scrollableAncestors,\n scrollableAncestorRects,\n transform,\n windowRect,\n });\n const initialRect = useInitialValue(activeNodeRect);\n const dropAnimation = useDropAnimation({\n config: dropAnimationConfig,\n draggableNodes,\n droppableContainers,\n measuringConfiguration,\n });\n // We need to wait for the active node to be measured before connecting the drag overlay ref\n // otherwise collisions can be computed against a mispositioned drag overlay\n const ref = initialRect ? dragOverlay.setRef : undefined;\n\n return (\n <NullifiedContextProvider>\n <AnimationManager animation={dropAnimation}>\n {active && key ? (\n <PositionedOverlay\n key={key}\n id={active.id}\n ref={ref}\n as={wrapperElement}\n activatorEvent={activatorEvent}\n adjustScale={adjustScale}\n className={className}\n transition={transition}\n rect={initialRect}\n style={{\n zIndex,\n ...style,\n }}\n transform={modifiedTransform}\n >\n {children}\n </PositionedOverlay>\n ) : null}\n </AnimationManager>\n </NullifiedContextProvider>\n );\n }\n);\n"],"names":["hiddenStyles","useCombinedRefs","display","refs","DndMonitorContext","HiddenText","createContext","id","arrayMove","array","from","to","newArray","forEach","ref","slice","node","splice","length","Error","style","value","canUseDOM","unsubscribe","registerListener","window","listener","document","createElement","arraySwap","element","prototype","toString","call","elementString","announcement","useDndMonitorProvider","ariaLiveType","useState","Set","useCallback","listeners","isNode","add","visuallyHidden","items","rects","position","reduce","accumulator","index","dispatch","rect","get","left","getWindow","target","height","overflow","Array","clip","type","event","whiteSpace","defaultScreenReaderInstructions","a","b","role","ownerDocument","defaultView","_target$ownerDocument","Document","useAnnouncement","setAnnouncement","active","announce","i","onDragOver","isHTMLElement","over","HTMLElement","normalizeDisabled","disabled","getOwnerDocument","isSVGElement","draggable","SVGElement","droppable","isWindow","onDragEnd","defaultScale","scaleY","horizontalListSortingStrategy","useIsomorphicLayoutEffect","activeNodeRect","activeIndex","overIndex","fallbackActiveRect","args","Accessibility","announcements","defaultAnnouncements","hiddenTextDescribedById","itemGap","getItemGap","screenReaderInstructions","intervalRef","useLayoutEffect","useEffect","handler","handlerRef","liveRegionId","useUniqueId","mounted","current","setMounted","x","newIndexRect","width","y","useDndMonitor","dependencies","onDragStart","useRef","duration","setInterval","onChangeHandler","onDragMove","clear","useLatestValue","currentRect","previousRect","valueRef","nextRect","useLazyMemo","callback","prefix","useMemo","newValue","onChange","useEvent","_len","_key","newRects","oldRect","newRect","Object","setNodeRef","key","usePrevious","top","scaleX","markup","React","ids","container","Action","createAdjustmentFn","modifier","object","adjustments","noop","clientX","adjustment","entries","useSensor","sensor","options","CSS","valueAdjustment","useSensors","transform","sensors","Scale","join","verticalListSortingStrategy","defaultCoordinates","freeze","hasViewportRelativeCoordinates","p1","p2","Math","sqrt","pow","getRelativeTransformOrigin","eventCoordinates","KeyboardEvent","getEventCoordinates","isTouchEvent","overIndexRect","transformOrigin","TouchEvent","sortCollisionsAsc","touches","data","changedTouches","clientY","clientRects","containerId","ID_PREFIX","disableTransforms","round","useDragOverlay","strategy","rectSortingStrategy","SortableContext","getFirstCollision","collisions","property","children","userDefinedItems","firstCollision","Transform","dragOverlay","droppableRects","measureDroppableContainers","useDndContext","centerOfRectangle","Translate","Boolean","map","item","isDragging","indexOf","previousItemsRef","itemsEqual","itemsHaveChanged","disabledProp","easing","contextValue","findFirstFocusableNode","matches","querySelector","centerRect","collisionRect","sortedRects","droppableContainer","droppableContainers","Context","Provider","distBetween","distanceBetween","push","defaultAnimateLayoutChanges","sort","isSorting","wasDragging","newIndex","previousItems","previousContainerId","transition","closestCorners","corners","rectCorners","cornersOfRectangle","defaultTransition","distances","corner","effectiveDistance","toFixed","disabledTransition","Transition","transitionProperty","defaultAttributes","roleDescription","useDerivedTransform","getIntersectionRatio","entry","max","right","min","bottom","setDerivedtransform","previousIndex","targetArea","initial","entryArea","intersectionRatio","getClientRect","intersectionArea","ignoreTransform","Number","delta","rectIntersection","derivedTransform","useSortable","animateLayoutChanges","attributes","userDefinedAttributes","customData","getNewIndex","defaultNewIndexGetter","localStrategy","resizeObserverConfig","sortCollisionsDesc","globalDisabled","isPointWithinRect","point","globalStrategy","useContext","normalizeLocalDisabled","localDisabled","sortable","itemsAfterCurrentSortable","pointerWithin","setDroppableNodeRef","pointerCoordinates","updateMeasurementsFor","activatorEvent","setActivatorNodeRef","setDraggableNodeRef","displaceItem","isValidIndex","shouldDisplaceDragSource","dragSourceDisplacement","finalTransform","adjustScale","rect1","rect2","getRectDelta","activeId","previous","createRectAdjustmentFn","adjustClientRect","shouldAnimateLayoutChanges","acc","getAdjustedRect","parseTransform","startsWith","transformArray","split","inverseTransform","parsedTransform","timeoutId","setTimeout","translateX","clearTimeout","translateY","parseFloat","w","h","defaultOptions","getTransition","getBoundingClientRect","isKeyboardEvent","undefined","getComputedStyle","hasSortableData","getTransformAgnosticClientRect","getWindowClientRect","innerWidth","innerHeight","directions","KeyboardCode","Down","Right","Up","Left","sortableKeyboardCoordinates","scrollableAncestors","isFixed","computedStyle","includes","code","preventDefault","isScrollable","filteredContainers","getEnabled","overflowRegex","properties","some","test","getScrollableAncestors","limit","scrollParents","findScrollableAncestors","isDocument","scrollingElement","parentNode","closestId","getFirstScrollableAncestor","activeDroppable","firstScrollableAncestor","newDroppable","newNode","getScrollableElement","newScrollAncestors","hasDifferentScrollAncestors","hasSameContainer","isSameContainer","isAfterActive","isAfter","offset","rectCoordinates","newCoordinates","subtract","getScrollXCoordinate","scrollX","scrollLeft","getScrollYCoordinate","scrollY","scrollTop","getScrollCoordinates","Direction","isDocumentScrollingElement","getScrollPosition","scrollingContainer","minScroll","dimensions","clientHeight","clientWidth","maxScroll","scrollWidth","scrollHeight","isTop","isLeft","isBottom","isRight","defaultThreshold","getScrollDirectionAndSpeed","scrollContainer","scrollContainerRect","acceleration","thresholdPercentage","direction","speed","threshold","Backward","abs","Forward","getScrollElementRect","getScrollOffsets","getScrollXOffset","getScrollYOffset","scrollIntoViewIfNeeded","measure","scrollIntoView","block","inline","Rect","constructor","scrollOffsets","axis","keys","getScrollOffset","defineProperty","currentOffsets","scrollOffsetsDeltla","enumerable","Listeners","removeAll","removeEventListener","eventName","addEventListener","getEventListenerTarget","EventTarget","hasExceededDistance","measurement","dx","dy","EventName","stopPropagation","defaultKeyboardCodes","start","Space","Enter","cancel","Esc","end","Tab","defaultKeyboardCoordinateGetter","currentCoordinates","KeyboardSensor","props","autoScrollEnabled","referenceCoordinates","windowListeners","handleKeyDown","bind","handleCancel","attach","handleStart","Resize","VisibilityChange","Keydown","activeNode","onStart","context","keyboardCodes","coordinateGetter","scrollBehavior","handleEnd","coordinatesDelta","getCoordinatesDelta","scrollDelta","scrollElementRect","clampedCoordinates","canScrollX","canScrollY","newScrollCoordinates","canScrollToNewCoordinates","scrollTo","behavior","scrollBy","handleMove","getAdjustedCoordinates","coordinates","onMove","onEnd","detach","onCancel","activators","onActivation","nativeEvent","activator","activatorNode","isDistanceConstraint","constraint","isDelayConstraint","AbstractPointerSensor","events","listenerTarget","activated","initialCoordinates","documentListeners","handleKeydown","removeTextSelection","activationConstraint","bypassActivationConstraint","move","name","passive","DragStart","ContextMenu","delay","handlePending","onPending","Click","capture","SelectionChange","tolerance","distance","cancelable","onAbort","getSelection","removeAllRanges","PointerSensor","isPrimary","button","MouseButton","MouseSensor","RightClick","TouchSensor","setup","teardown","AutoScrollActivator","TraversalOrder","useAutoScroller","Pointer","canScroll","draggingRect","enabled","interval","order","TreeOrder","scrollableAncestorRects","scrollIntent","useScrollIntent","setAutoScrollInterval","clearAutoScrollInterval","useInterval","scrollSpeed","scrollDirection","DraggableRect","scrollContainerRef","autoScroll","sortedScrollableAncestors","reverse","JSON","stringify","defaultScrollIntent","previousDelta","previousIntent","sign","useCachedNode","draggableNodes","draggableNode","cachedNode","useCombineActivators","getSyntheticHandler","Sensor","sensorActivators","MeasuringStrategy","MeasuringFrequency","defaultValue","Map","useDroppableMeasuring","containers","dragging","config","queue","setQueue","frequency","containersRef","isDisabled","disabledRef","concat","filter","previousValue","set","measuringScheduled","Always","BeforeDragging","useInitialValue","computeFn","useInitialRect","useMutationObserver","handleMutations","mutationObserver","MutationObserver","disconnect","useResizeObserver","handleResize","resizeObserver","ResizeObserver","defaultMeasure","useRect","fallbackRect","setRect","measureRect","isConnected","records","record","contains","observe","body","childList","subtree","useRectDelta","initialRect","useScrollableAncestors","previousNode","ancestors","useScrollOffsets","elements","scrollCoordinates","setScrollCoordinates","prevElements","handleScroll","previousElements","cleanup","scrollableElement","values","useScrollOffsetsDelta","initialScrollOffsets","hasScrollOffsets","useSensorSetup","teardownFns","useSyntheticListeners","useWindowRect","useRects","firstElement","windowRect","setRects","measureRects","getMeasurableNode","firstChild","useDragOverlayMeasuring","handleNodeChange","nodeRef","setRef","useNodeRef","defaultSensors","defaultData","defaultMeasuringConfiguration","WhileDragging","Optimized","DroppableContainersMap","toArray","getNodeFor","defaultPublicContext","containerNodeRect","measuringConfiguration","defaultInternalContext","ariaDescribedById","InternalContext","PublicContext","getInitialState","nodes","translate","reducer","state","action","DragMove","DragEnd","DragCancel","RegisterDroppable","SetDroppableDisabled","UnregisterDroppable","delete","RestoreFocus","previousActivatorEvent","previousActiveId","activeElement","requestAnimationFrame","focusableNode","focus","applyModifiers","modifiers","useMeasuringConfiguration","useLayoutShiftScrollCompensation","initialized","rectDelta","ActiveDraggableContext","Status","DndContext","memo","accessibility","collisionDetection","measuring","store","useReducer","dispatchMonitorEvent","registerMonitorListener","status","setStatus","Uninitialized","isInitialized","Initialized","activeRects","translated","activeRef","activeSensor","setActiveSensor","setActivatorEvent","latestProps","draggableDescribedById","enabledDroppableContainers","activationCoordinates","autoScrollOptions","getAutoScrollerOptions","initialActiveNodeRect","layoutShiftCompensation","parentElement","sensorContext","draggingNode","draggingNodeRect","scrollAdjustedTranslate","overNode","usesDragOverlay","nodeRectDelta","modifiedTranslate","overlayNodeRect","scrollAdjustment","activeNodeScrollDelta","overId","setOver","appliedTranslate","activeSensorRef","instantiateSensor","sensorInstance","onDragAbort","onDragPending","unstable_batchedUpdates","Initializing","createHandler","cancelDrop","shouldCancel","Promise","resolve","bindActivatorToSensorInstantiator","activeDraggableNode","dndKit","defaultPrevented","activationContext","shouldActivate","capturedBy","overContainer","publicContext","internalContext","restoreFocus","activeSensorDisablesAutoscroll","autoScrollGloballyDisabled","NullContext","defaultRole","useDraggable","tabIndex","dataRef","memoizedAttributes","defaultResizeObserverConfig","timeout","useDroppable","resizeObserverConnected","callbackId","resizeObserverDisabled","resizeObserverTimeout","isArray","newElement","previousElement","unobserve","isOver","AnimationManager","animation","clonedChildren","setClonedChildren","setElement","previousChildren","then","cloneElement","defaultTransform","NullifiedContextProvider","baseStyles","touchAction","isKeyboardActivator","PositionedOverlay","forwardRef","as","className","scaleAdjustedTransform","styles","defaultDropAnimationSideEffects","originalStyles","getPropertyValue","setProperty","classList","remove","defaultKeyframeResolver","final","defaultDropAnimationConfiguration","keyframes","sideEffects","opacity","useDropAnimation","activeDraggable","measurableNode","createDefaultDropAnimation","rest","scale","animationKeyframes","firstKeyframe","lastKeyframe","animate","fill","onfinish","useKey","DragOverlay","dropAnimation","dropAnimationConfig","wrapperElement","zIndex","modifiedTransform"],"mappings":"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","ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ProviderManager.tsx","../../../../node_modules/%40dnd-kit/accessibility/src/components/HiddenText/HiddenText.tsx","../../../../node_modules/%40dnd-kit/utilities/src/hooks/useCombinedRefs.ts","../../../../node_modules/%40dnd-kit/sortable/src/utilities/arrayMove.ts","../../../../node_modules/%40dnd-kit/core/src/components/DndMonitor/context.ts","../../../../node_modules/%40dnd-kit/core/src/components/DndMonitor/useDndMonitor.ts","../../../../node_modules/%40dnd-kit/sortable/src/utilities/arraySwap.ts","../../../../node_modules/%40dnd-kit/utilities/src/execution-context/canUseDOM.ts","../../../../node_modules/%40dnd-kit/utilities/src/type-guards/isWindow.ts","../../../../node_modules/%40dnd-kit/accessibility/src/components/LiveRegion/LiveRegion.tsx","../../../../node_modules/%40dnd-kit/core/src/components/DndMonitor/useDndMonitorProvider.tsx","../../../../node_modules/%40dnd-kit/utilities/src/type-guards/isNode.ts","../../../../node_modules/%40dnd-kit/sortable/src/utilities/getSortedRects.ts","../../../../node_modules/%40dnd-kit/utilities/src/execution-context/getWindow.ts","../../../../node_modules/%40dnd-kit/sortable/src/utilities/isValidIndex.ts","../../../../node_modules/%40dnd-kit/core/src/components/Accessibility/defaults.ts","../../../../node_modules/%40dnd-kit/sortable/src/utilities/itemsEqual.ts","../../../../node_modules/%40dnd-kit/utilities/src/type-guards/isDocument.ts","../../../../node_modules/%40dnd-kit/accessibility/src/hooks/useAnnouncement.ts","../../../../node_modules/%40dnd-kit/utilities/src/type-guards/isHTMLElement.ts","../../../../node_modules/%40dnd-kit/sortable/src/utilities/normalizeDisabled.ts","../../../../node_modules/%40dnd-kit/utilities/src/type-guards/isSVGElement.ts","../../../../node_modules/%40dnd-kit/utilities/src/execution-context/getOwnerDocument.ts","../../../../node_modules/%40dnd-kit/sortable/src/strategies/horizontalListSorting.ts","../../../../node_modules/%40dnd-kit/core/src/components/Accessibility/Accessibility.tsx","../../../../node_modules/%40dnd-kit/utilities/src/hooks/useIsomorphicLayoutEffect.ts","../../../../node_modules/%40dnd-kit/utilities/src/hooks/useEvent.ts","../../../../node_modules/%40dnd-kit/utilities/src/hooks/useInterval.ts","../../../../node_modules/%40dnd-kit/utilities/src/hooks/useLatestValue.ts","../../../../node_modules/%40dnd-kit/utilities/src/hooks/useLazyMemo.ts","../../../../node_modules/%40dnd-kit/sortable/src/strategies/rectSorting.ts","../../../../node_modules/%40dnd-kit/utilities/src/hooks/useNodeRef.ts","../../../../node_modules/%40dnd-kit/utilities/src/hooks/usePrevious.ts","../../../../node_modules/%40dnd-kit/sortable/src/strategies/rectSwapping.ts","../../../../node_modules/%40dnd-kit/utilities/src/hooks/useUniqueId.ts","../../../../node_modules/%40dnd-kit/core/src/store/actions.ts","../../../../node_modules/%40dnd-kit/utilities/src/adjustment.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/other/noop.ts","../../../../node_modules/%40dnd-kit/core/src/sensors/useSensor.ts","../../../../node_modules/%40dnd-kit/core/src/sensors/useSensors.ts","../../../../node_modules/%40dnd-kit/sortable/src/strategies/verticalListSorting.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/coordinates/constants.ts","../../../../node_modules/%40dnd-kit/utilities/src/event/hasViewportRelativeCoordinates.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/coordinates/distanceBetweenPoints.ts","../../../../node_modules/%40dnd-kit/utilities/src/event/isKeyboardEvent.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/coordinates/getRelativeTransformOrigin.ts","../../../../node_modules/%40dnd-kit/utilities/src/event/isTouchEvent.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/algorithms/helpers.ts","../../../../node_modules/%40dnd-kit/utilities/src/coordinates/getEventCoordinates.ts","../../../../node_modules/%40dnd-kit/utilities/src/css.ts","../../../../node_modules/%40dnd-kit/sortable/src/components/SortableContext.tsx","../../../../node_modules/%40dnd-kit/core/src/utilities/algorithms/closestCenter.ts","../../../../node_modules/%40dnd-kit/utilities/src/focus/findFirstFocusableNode.ts","../../../../node_modules/%40dnd-kit/sortable/src/hooks/defaults.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/algorithms/closestCorners.ts","../../../../node_modules/%40dnd-kit/sortable/src/hooks/utilities/useDerivedTransform.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/algorithms/rectIntersection.ts","../../../../node_modules/%40dnd-kit/sortable/src/hooks/useSortable.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/algorithms/pointerWithin.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/rect/adjustScale.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/rect/getRectDelta.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/rect/rectAdjustment.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/transform/parseTransform.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/transform/inverseTransform.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/rect/getRect.ts","../../../../node_modules/%40dnd-kit/sortable/src/types/type-guard.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/rect/getWindowClientRect.ts","../../../../node_modules/%40dnd-kit/sortable/src/sensors/keyboard/sortableKeyboardCoordinates.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/scroll/isFixed.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/scroll/isScrollable.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/scroll/getScrollableAncestors.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/scroll/getScrollableElement.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/scroll/getScrollCoordinates.ts","../../../../node_modules/%40dnd-kit/core/src/types/direction.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/scroll/documentScrollingElement.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/scroll/getScrollPosition.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/scroll/getScrollDirectionAndSpeed.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/scroll/getScrollElementRect.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/scroll/getScrollOffsets.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/scroll/scrollIntoViewIfNeeded.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/rect/Rect.ts","../../../../node_modules/%40dnd-kit/core/src/sensors/utilities/Listeners.ts","../../../../node_modules/%40dnd-kit/core/src/sensors/utilities/getEventListenerTarget.ts","../../../../node_modules/%40dnd-kit/core/src/sensors/utilities/hasExceededDistance.ts","../../../../node_modules/%40dnd-kit/core/src/sensors/events.ts","../../../../node_modules/%40dnd-kit/core/src/sensors/keyboard/types.ts","../../../../node_modules/%40dnd-kit/core/src/sensors/keyboard/defaults.ts","../../../../node_modules/%40dnd-kit/core/src/sensors/keyboard/KeyboardSensor.ts","../../../../node_modules/%40dnd-kit/core/src/sensors/pointer/AbstractPointerSensor.ts","../../../../node_modules/%40dnd-kit/core/src/sensors/pointer/PointerSensor.ts","../../../../node_modules/%40dnd-kit/core/src/sensors/mouse/MouseSensor.ts","../../../../node_modules/%40dnd-kit/core/src/sensors/touch/TouchSensor.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useAutoScroller.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useCachedNode.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useCombineActivators.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useDroppableMeasuring.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useInitialValue.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useInitialRect.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useMutationObserver.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useResizeObserver.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useRect.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useRectDelta.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useScrollableAncestors.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useScrollOffsets.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useScrollOffsetsDelta.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useSensorSetup.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useSyntheticListeners.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useWindowRect.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useRects.ts","../../../../node_modules/%40dnd-kit/core/src/utilities/nodes/getMeasurableNode.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/utilities/useDragOverlayMeasuring.ts","../../../../node_modules/%40dnd-kit/core/src/components/DndContext/defaults.ts","../../../../node_modules/%40dnd-kit/core/src/store/constructors.ts","../../../../node_modules/%40dnd-kit/core/src/store/context.ts","../../../../node_modules/%40dnd-kit/core/src/store/reducer.ts","../../../../node_modules/%40dnd-kit/core/src/components/Accessibility/components/RestoreFocus.tsx","../../../../node_modules/%40dnd-kit/core/src/modifiers/applyModifiers.ts","../../../../node_modules/%40dnd-kit/core/src/components/DndContext/hooks/useMeasuringConfiguration.ts","../../../../node_modules/%40dnd-kit/core/src/components/DndContext/hooks/useLayoutShiftScrollCompensation.ts","../../../../node_modules/%40dnd-kit/core/src/components/DndContext/DndContext.tsx","../../../../node_modules/%40dnd-kit/core/src/hooks/useDraggable.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/useDndContext.ts","../../../../node_modules/%40dnd-kit/core/src/hooks/useDroppable.ts","../../../../node_modules/%40dnd-kit/core/src/components/DragOverlay/components/AnimationManager/AnimationManager.tsx","../../../../node_modules/%40dnd-kit/core/src/components/DragOverlay/components/NullifiedContextProvider/NullifiedContextProvider.tsx","../../../../node_modules/%40dnd-kit/core/src/components/DragOverlay/components/PositionedOverlay/PositionedOverlay.tsx","../../../../node_modules/%40dnd-kit/core/src/components/DragOverlay/hooks/useDropAnimation.ts","../../../../node_modules/%40dnd-kit/core/src/components/DragOverlay/hooks/useKey.ts","../../../../node_modules/%40dnd-kit/core/src/components/DragOverlay/DragOverlay.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useState, useCallback } from \"react\";\nimport Link from \"next/link\";\nimport {\n DndContext,\n closestCenter,\n PointerSensor,\n useSensor,\n useSensors,\n DragEndEvent,\n} from \"@dnd-kit/core\";\nimport {\n SortableContext,\n useSortable,\n arrayMove,\n rectSortingStrategy,\n} from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { adminApi } from \"@/lib/client\";\nimport { Lamp } from \"@/components/Lamp\";\nimport { Badge, FormatBadge } from \"@/components/Badge\";\nimport { CooldownTimer } from \"@/components/CooldownTimer\";\nimport { Button, Input, Field } from \"@/components/Button\";\nimport { Icon } from \"@/components/Icon\";\nimport { Empty } from \"@/components/ui\";\nimport type { MaskedConfig, PingResult, ProviderSnapshot, WireFormat } from \"@/lib/gateway\";\n\ninterface Loaded {\n config: MaskedConfig;\n health: ProviderSnapshot[];\n}\n\nexport function ProviderManager() {\n const [data, setData] = useState<Loaded | null>(null);\n const [error, setError] = useState(\"\");\n const [adding, setAdding] = useState(false);\n const [providerOrder, setProviderOrder] = useState<string[]>([]);\n\n const reload = useCallback(async () => {\n const [cfg, prov] = await Promise.all([\n fetch(\"/api/gw/admin/config\"),\n adminApi.providers(),\n ]);\n if (!cfg.ok || !prov.ok) {\n setError(\"could not reach the gateway\");\n return;\n }\n setError(\"\");\n const loaded: Loaded = {\n config: (await cfg.json()) as MaskedConfig,\n health: prov.data?.providers ?? [],\n };\n setData(loaded);\n setProviderOrder(loaded.config.providers.map((p) => p.id));\n }, []);\n\n useEffect(() => {\n void reload();\n }, [reload]);\n\n const sensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 6 } }),\n );\n\n async function handleDragEnd(event: DragEndEvent) {\n const { active, over } = event;\n if (!over || active.id === over.id || !data) return;\n\n const oldIndex = providerOrder.indexOf(active.id as string);\n const newIndex = providerOrder.indexOf(over.id as string);\n if (oldIndex === -1 || newIndex === -1) return;\n\n setProviderOrder(arrayMove(providerOrder, oldIndex, newIndex));\n await adminApi.reorderProvider(oldIndex, newIndex);\n void reload();\n }\n\n if (error) return <Empty>{error}</Empty>;\n if (!data) return <Empty>Loading…</Empty>;\n\n const healthById = new Map(data.health.map((h) => [h.id, h]));\n const providerMap = new Map(data.config.providers.map((p) => [p.id, p]));\n const orderedProviders = providerOrder\n .map((id) => providerMap.get(id))\n .filter(Boolean) as typeof data.config.providers;\n\n return (\n <div>\n <div className=\"mb-6 flex items-center justify-between gap-3\">\n <div>\n <h1 className=\"text-[22px] font-semibold tracking-tight text-text\">Providers & Keys</h1>\n <p className=\"mt-1 text-[13px] text-text-muted\">Upstream providers the gateway routes to.</p>\n </div>\n <Button onClick={() => setAdding(true)}>\n <Icon name=\"add\" size={17} />\n Add provider\n </Button>\n </div>\n\n {adding && (\n <AddProviderForm\n onClose={() => setAdding(false)}\n onDone={() => { setAdding(false); void reload(); }}\n />\n )}\n\n {orderedProviders.length === 0 ? (\n <Empty>No providers yet. Add one to start routing.</Empty>\n ) : (\n <DndContext sensors={sensors} collisionDetection={closestCenter} onDragEnd={handleDragEnd}>\n <SortableContext items={providerOrder} strategy={rectSortingStrategy}>\n <div className=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n {orderedProviders.map((p) => {\n const health = healthById.get(p.id);\n const healthy = health ? health.keys.some((k) => k.healthy) : true;\n const cooling = health?.keys.find((k) => !k.healthy && k.cooldown_ms > 0);\n return (\n <SortableProviderCard\n key={p.id}\n p={p}\n healthy={healthy}\n cooling={cooling}\n onDone={reload}\n />\n );\n })}\n </div>\n </SortableContext>\n </DndContext>\n )}\n </div>\n );\n}\n\ntype ProviderConfig = MaskedConfig[\"providers\"][number];\n\nfunction SortableProviderCard({\n p,\n healthy,\n cooling,\n onDone,\n}: {\n p: ProviderConfig;\n healthy: boolean;\n cooling: { cooldown_ms: number } | undefined;\n onDone: () => void;\n}) {\n const { attributes, listeners, setNodeRef, transform, transition, isDragging } =\n useSortable({ id: p.id });\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n };\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n className={`group relative rounded-brand-lg border bg-surface shadow-soft transition-colors ${\n isDragging ? \"opacity-50 border-accent shadow-elevated z-10\" : \"\"\n } ${\n p.disabled\n ? \"border-danger/35 opacity-60 hover:opacity-100 hover:border-danger/60\"\n : isDragging ? \"\" : \"border-border hover:border-text-subtle\"\n }`}\n >\n {/* drag pill — centered top, visible on hover */}\n <div\n {...attributes}\n {...listeners}\n className=\"absolute inset-x-0 top-0 flex h-5 cursor-grab items-center justify-center opacity-0 transition-opacity group-hover:opacity-100 active:cursor-grabbing\"\n onClick={(e) => e.preventDefault()}\n >\n <span className=\"h-[3px] w-8 rounded-full bg-border-subtle transition-colors group-hover:bg-text-subtle\" />\n </div>\n\n <Link\n href={`/providers/${encodeURIComponent(p.id)}`}\n className=\"block px-5 py-6\"\n draggable={false}\n >\n <div className=\"flex items-start justify-between gap-2\">\n <div className=\"flex items-center gap-2 min-w-0\">\n <Lamp state={p.disabled ? \"down\" : healthy ? \"live\" : \"down\"} />\n <div className=\"min-w-0\">\n <span className=\"block truncate text-[15px] font-semibold text-text\">{p.name || p.id}</span>\n {p.name && <span className=\"block truncate text-[12px] text-text-subtle\">{p.id}/</span>}\n </div>\n </div>\n <FormatBadge format={p.format} />\n </div>\n <div className=\"mt-3 truncate text-[13px] text-text-subtle\">{p.base_url}</div>\n <div className=\"mt-4 flex flex-wrap items-center gap-2\">\n <ProviderToggle id={p.id} disabled={!!p.disabled} onDone={onDone} />\n {p.free && <Badge tone=\"info\">no auth</Badge>}\n {p.service_account && <Badge tone=\"info\">service-account</Badge>}\n <Badge tone=\"neutral\">\n {p.free || p.service_account ? `${(p.api_keys?.length ?? 0)} keys` : `${p.api_keys?.length ?? (p.api_key ? 1 : 0)} keys`}\n </Badge>\n <Badge tone=\"neutral\">{p.models.length} models</Badge>\n {cooling && <CooldownTimer ms={cooling.cooldown_ms} />}\n </div>\n </Link>\n </div>\n );\n}\n\n/**\n * Inline enable/disable switch shown on each provider card. The card is a <Link>,\n * so the button swallows the click (preventDefault + stopPropagation) to toggle in\n * place instead of navigating into the provider. `busy` ignores double-clicks.\n */\nfunction ProviderToggle({ id, disabled, onDone }: { id: string; disabled: boolean; onDone: () => void }) {\n const [busy, setBusy] = useState(false);\n return (\n <button\n type=\"button\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n if (busy) return;\n setBusy(true);\n void adminApi.setProviderDisabled(id, !disabled).then(() => onDone()).finally(() => setBusy(false));\n }}\n className={`inline-flex items-center gap-1.5 text-[11px] font-medium ${disabled ? \"text-danger\" : \"text-text-muted\"}`}\n aria-label={disabled ? \"Enable provider\" : \"Disable provider\"}\n title={disabled ? \"Provider disabled — click to enable\" : \"Provider enabled — click to disable\"}\n >\n <span className={`relative h-4 w-7 rounded-full transition-colors ${disabled ? \"bg-danger\" : \"bg-accent\"} ${busy ? \"opacity-60\" : \"\"}`}>\n <span className={`absolute left-0.5 top-0.5 h-3 w-3 rounded-full bg-white transition-transform ${disabled ? \"translate-x-0\" : \"translate-x-[14px]\"}`} />\n </span>\n </button>\n );\n}\n\n// Provider presets — pick a type first, which prefills Base URL + API Type, then\n// you only fill Name + Key. Matches aigetwey's per-type forms but friendlier; the\n// fields below are still aigetwey's (Name, API Type, Base URL, Key + Check, Model\n// ID), minus the separate Prefix — our Name is the id and the model prefix.\ntype Preset = { id: string; label: string; sub: string; icon: string; format: WireFormat; base_url: string; hint: string; modelHint: string };\nconst PRESETS: Preset[] = [\n {\n id: \"openai\", label: \"OpenAI compatible\", sub: \"/v1/chat/completions\", icon: \"bolt\",\n format: \"openai\", base_url: \"https://api.openai.com/v1\",\n hint: \"Base URL ending in /v1 for any OpenAI-compatible API.\", modelHint: \"e.g. gpt-4o, glm-5.2\",\n },\n {\n id: \"anthropic\", label: \"Anthropic compatible\", sub: \"/v1/messages\", icon: \"smart_toy\",\n format: \"anthropic\", base_url: \"https://api.anthropic.com\",\n hint: \"Base URL of an Anthropic-compatible API; /messages is appended.\", modelHint: \"e.g. claude-sonnet-4-6\",\n },\n];\n\nfunction AddProviderForm({ onDone, onClose }: { onDone: () => void; onClose: () => void }) {\n const [preset, setPreset] = useState<Preset | null>(null);\n const [id, setId] = useState(\"\");\n const [label, setLabel] = useState(\"\");\n const [baseUrl, setBaseUrl] = useState(\"\");\n const [apiKey, setApiKey] = useState(\"\");\n const [showKey, setShowKey] = useState(false);\n const [modelId, setModelId] = useState(\"\");\n const [busy, setBusy] = useState(false);\n const [checking, setChecking] = useState(false);\n const [checkRes, setCheckRes] = useState<PingResult | null>(null);\n const [err, setErr] = useState(\"\");\n\n function choosePreset(p: Preset) {\n setPreset(p);\n setBaseUrl(p.base_url);\n setCheckRes(null);\n setErr(\"\");\n }\n\n // step 1: pick a type (OpenAI- or Anthropic-compatible) — this sets the wire\n // format + base URL, exactly aigetwey's \"Add OpenAI/Anthropic Compatible\".\n if (!preset) {\n return (\n <div className=\"mb-5 rounded-brand-lg border border-border bg-surface p-5 shadow-soft\">\n <div className=\"flex items-start justify-between gap-3\">\n <div>\n <h2 className=\"text-[14px] font-semibold text-text\">Add a provider</h2>\n <p className=\"mt-0.5 text-[12.5px] text-text-muted\">Pick the API your endpoint speaks — the rest is prefilled.</p>\n </div>\n <button type=\"button\" onClick={onClose} className=\"flex-none text-text-subtle hover:text-text\" aria-label=\"Cancel\">\n <Icon name=\"close\" size={18} />\n </button>\n </div>\n <div className=\"mt-4 grid gap-3 sm:grid-cols-2\">\n {PRESETS.map((p) => (\n <button\n key={p.id}\n type=\"button\"\n onClick={() => choosePreset(p)}\n className=\"group flex items-start gap-3 rounded-brand-lg border border-border bg-bg p-4 text-left transition-colors hover:border-accent hover:bg-accent-soft\"\n >\n <span className=\"flex h-10 w-10 flex-none items-center justify-center rounded-brand bg-surface-2 text-text-muted group-hover:text-accent\">\n <Icon name={p.icon} size={20} />\n </span>\n <span className=\"min-w-0\">\n <span className=\"block text-[13.5px] font-semibold text-text\">{p.label}</span>\n <span className=\"block tnum text-[11.5px] text-text-subtle\">{p.sub}</span>\n <span className=\"mt-1 block text-[11.5px] text-text-muted\">{p.hint}</span>\n </span>\n </button>\n ))}\n </div>\n </div>\n );\n }\n\n async function check() {\n if (!baseUrl || !preset) return;\n setChecking(true);\n setCheckRes(null);\n const r = await adminApi.validateProvider({ format: preset.format, base_url: baseUrl, api_key: apiKey || undefined });\n setChecking(false);\n setCheckRes(r.data ?? { ok: false, reachable: false, status: 0, error: r.error });\n }\n\n async function submit(e: React.FormEvent) {\n e.preventDefault();\n if (!preset || !id || !baseUrl) {\n setErr(\"name and base URL are required\");\n return;\n }\n setBusy(true);\n setErr(\"\");\n const res = await adminApi.addProvider({ id, format: preset.format, base_url: baseUrl, api_key: apiKey || undefined, free: !apiKey.trim(), name: label.trim() || undefined });\n if (!res.ok) {\n setBusy(false);\n setErr(res.error ?? \"failed\");\n return;\n }\n if (modelId.trim()) await adminApi.addModel(id, modelId.trim());\n setBusy(false);\n onDone();\n }\n\n // step 2: the aigetwey field set — Name, Base URL, API Key (for Check), Model ID.\n return (\n <div className=\"mb-5 rounded-brand-lg border border-border bg-surface p-5 shadow-soft\">\n <form onSubmit={submit}>\n <div className=\"mb-4 flex items-center gap-2.5 border-b border-border-subtle pb-4\">\n <span className=\"flex h-8 w-8 items-center justify-center rounded-brand bg-surface-2 text-text-muted\">\n <Icon name={preset.icon} size={17} />\n </span>\n <div>\n <div className=\"text-[13.5px] font-semibold text-text\">{preset.label}</div>\n <div className=\"tnum text-[11px] text-text-subtle\">{preset.sub}</div>\n </div>\n <button\n type=\"button\"\n onClick={() => { setPreset(null); setCheckRes(null); }}\n className=\"ml-auto inline-flex items-center gap-1 text-[12px] text-text-subtle hover:text-text\"\n >\n <Icon name=\"arrow_back\" size={14} /> change type\n </button>\n </div>\n\n <div className=\"space-y-3\">\n <Field label=\"Label\" hint=\"display name in dashboard (optional)\">\n <Input value={label} onChange={(e) => setLabel(e.target.value)} placeholder=\"e.g. My OpenAI\" />\n </Field>\n <Field label=\"ID / Prefix\" hint=\"the call prefix (id/model) — used by CLI tools\">\n <Input value={id} onChange={(e) => setId(e.target.value)} placeholder=\"e.g. openai, anthropic\" className=\"font-mono text-[12.5px]\" />\n </Field>\n <Field label=\"Base URL\" hint={preset.hint}>\n <Input value={baseUrl} onChange={(e) => { setBaseUrl(e.target.value); setCheckRes(null); }} placeholder={preset.base_url} className=\"font-mono text-[12.5px]\" />\n </Field>\n <Field label=\"API Key\" hint=\"used for Check and live requests — leave blank for a free / no-auth endpoint\">\n <div className=\"flex gap-2\">\n <div className=\"relative flex-1\">\n <Input\n type={showKey ? \"text\" : \"password\"}\n value={apiKey}\n onChange={(e) => { setApiKey(e.target.value); setCheckRes(null); }}\n placeholder=\"sk-…\"\n className=\"pr-9 font-mono text-[12.5px]\"\n />\n {apiKey && (\n <button type=\"button\" onClick={() => setShowKey((v) => !v)} className=\"absolute right-2 top-1/2 -translate-y-1/2 text-text-subtle hover:text-text\" aria-label={showKey ? \"Hide key\" : \"Show key\"}>\n <Icon name={showKey ? \"visibility_off\" : \"visibility\"} size={15} />\n </button>\n )}\n </div>\n <Button type=\"button\" variant=\"ghost\" disabled={checking || !baseUrl} onClick={check}>\n <Icon name={checking ? \"progress_activity\" : \"wifi_tethering\"} size={15} />\n {checking ? \"Checking…\" : \"Check\"}\n </Button>\n </div>\n </Field>\n {checkRes && (\n <div className=\"flex items-center gap-2 text-[12px]\">\n <Badge tone={checkRes.ok ? \"live\" : checkRes.reachable ? \"warn\" : \"down\"}>\n {checkRes.ok ? \"valid\" : checkRes.reachable ? `reachable (${checkRes.status})` : \"invalid\"}\n </Badge>\n {checkRes.error && <span className=\"text-text-subtle\">{checkRes.error}</span>}\n </div>\n )}\n <Field label=\"Model ID\" hint=\"optional — seed one if the provider has no /models endpoint\">\n <Input value={modelId} onChange={(e) => setModelId(e.target.value)} placeholder={preset.modelHint} className=\"font-mono text-[12.5px]\" />\n </Field>\n </div>\n\n {err && <div className=\"mt-2 text-[12px] text-danger\">{err}</div>}\n <div className=\"mt-4 flex justify-end gap-2\">\n <Button type=\"button\" variant=\"ghost\" onClick={onClose}>Cancel</Button>\n <Button type=\"submit\" disabled={busy}>{busy ? \"Adding…\" : \"Add provider\"}</Button>\n </div>\n </form>\n </div>\n );\n}\n","import React from 'react';\n\ninterface Props {\n id: string;\n value: string;\n}\n\nconst hiddenStyles: React.CSSProperties = {\n display: 'none',\n};\n\nexport function HiddenText({id, value}: Props) {\n return (\n <div id={id} style={hiddenStyles}>\n {value}\n </div>\n );\n}\n","import {useMemo} from 'react';\n\nexport function useCombinedRefs<T>(\n ...refs: ((node: T) => void)[]\n): (node: T) => void {\n return useMemo(\n () => (node: T) => {\n refs.forEach((ref) => ref(node));\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n refs\n );\n}\n","/**\n * Move an array item to a different position. Returns a new array with the item moved to the new position.\n */\nexport function arrayMove<T>(array: T[], from: number, to: number): T[] {\n const newArray = array.slice();\n newArray.splice(\n to < 0 ? newArray.length + to : to,\n 0,\n newArray.splice(from, 1)[0]\n );\n\n return newArray;\n}\n","import {createContext} from 'react';\n\nimport type {RegisterListener} from './types';\n\nexport const DndMonitorContext = createContext<RegisterListener | null>(null);\n","import {useContext, useEffect} from 'react';\n\nimport {DndMonitorContext} from './context';\nimport type {DndMonitorListener} from './types';\n\nexport function useDndMonitor(listener: DndMonitorListener) {\n const registerListener = useContext(DndMonitorContext);\n\n useEffect(() => {\n if (!registerListener) {\n throw new Error(\n 'useDndMonitor must be used within a children of <DndContext>'\n );\n }\n\n const unsubscribe = registerListener(listener);\n\n return unsubscribe;\n }, [listener, registerListener]);\n}\n","/**\n * Swap an array item to a different position. Returns a new array with the item swapped to the new position.\n */\nexport function arraySwap<T>(array: T[], from: number, to: number): T[] {\n const newArray = array.slice();\n\n newArray[from] = array[to];\n newArray[to] = array[from];\n\n return newArray;\n}\n","// https://github.com/facebook/react/blob/master/packages/shared/ExecutionEnvironment.js\nexport const canUseDOM =\n typeof window !== 'undefined' &&\n typeof window.document !== 'undefined' &&\n typeof window.document.createElement !== 'undefined';\n","export function isWindow(element: Object): element is typeof window {\n const elementString = Object.prototype.toString.call(element);\n return (\n elementString === '[object Window]' ||\n // In Electron context the Window object serializes to [object global]\n elementString === '[object global]'\n );\n}\n","import React from 'react';\n\nexport interface Props {\n id: string;\n announcement: string;\n ariaLiveType?: \"polite\" | \"assertive\" | \"off\";\n}\n\nexport function LiveRegion({id, announcement, ariaLiveType = \"assertive\"}: Props) {\n // Hide element visually but keep it readable by screen readers\n const visuallyHidden: React.CSSProperties = {\n position: 'fixed',\n top: 0,\n left: 0,\n width: 1,\n height: 1,\n margin: -1,\n border: 0,\n padding: 0,\n overflow: 'hidden',\n clip: 'rect(0 0 0 0)',\n clipPath: 'inset(100%)',\n whiteSpace: 'nowrap',\n };\n \n return (\n <div\n id={id}\n style={visuallyHidden}\n role=\"status\"\n aria-live={ariaLiveType}\n aria-atomic\n >\n {announcement}\n </div>\n );\n}\n","import {useCallback, useState} from 'react';\n\nimport type {DndMonitorListener, DndMonitorEvent} from './types';\n\nexport function useDndMonitorProvider() {\n const [listeners] = useState(() => new Set<DndMonitorListener>());\n\n const registerListener = useCallback(\n (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n [listeners]\n );\n\n const dispatch = useCallback(\n ({type, event}: DndMonitorEvent) => {\n listeners.forEach((listener) => listener[type]?.(event as any));\n },\n [listeners]\n );\n\n return [dispatch, registerListener] as const;\n}\n","export function isNode(node: Object): node is Node {\n return 'nodeType' in node;\n}\n","import type {\n ClientRect,\n UniqueIdentifier,\n UseDndContextReturnValue,\n} from '@dnd-kit/core';\n\nexport function getSortedRects(\n items: UniqueIdentifier[],\n rects: UseDndContextReturnValue['droppableRects']\n) {\n return items.reduce<ClientRect[]>((accumulator, id, index) => {\n const rect = rects.get(id);\n\n if (rect) {\n accumulator[index] = rect;\n }\n\n return accumulator;\n }, Array(items.length));\n}\n","import {isWindow} from '../type-guards/isWindow';\nimport {isNode} from '../type-guards/isNode';\n\nexport function getWindow(target: Event['target']): typeof window {\n if (!target) {\n return window;\n }\n\n if (isWindow(target)) {\n return target;\n }\n\n if (!isNode(target)) {\n return window;\n }\n\n return target.ownerDocument?.defaultView ?? window;\n}\n","export function isValidIndex(index: number | null): index is number {\n return index !== null && index >= 0;\n}\n","import type {Announcements, ScreenReaderInstructions} from './types';\n\nexport const defaultScreenReaderInstructions: ScreenReaderInstructions = {\n draggable: `\n To pick up a draggable item, press the space bar.\n While dragging, use the arrow keys to move the item.\n Press space again to drop the item in its new position, or press escape to cancel.\n `,\n};\n\nexport const defaultAnnouncements: Announcements = {\n onDragStart({active}) {\n return `Picked up draggable item ${active.id}.`;\n },\n onDragOver({active, over}) {\n if (over) {\n return `Draggable item ${active.id} was moved over droppable area ${over.id}.`;\n }\n\n return `Draggable item ${active.id} is no longer over a droppable area.`;\n },\n onDragEnd({active, over}) {\n if (over) {\n return `Draggable item ${active.id} was dropped over droppable area ${over.id}`;\n }\n\n return `Draggable item ${active.id} was dropped.`;\n },\n onDragCancel({active}) {\n return `Dragging was cancelled. Draggable item ${active.id} was dropped.`;\n },\n};\n","import type {UniqueIdentifier} from '@dnd-kit/core';\n\nexport function itemsEqual(a: UniqueIdentifier[], b: UniqueIdentifier[]) {\n if (a === b) {\n return true;\n }\n\n if (a.length !== b.length) {\n return false;\n }\n\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n\n return true;\n}\n","import {getWindow} from '../execution-context/getWindow';\n\nexport function isDocument(node: Node): node is Document {\n const {Document} = getWindow(node);\n\n return node instanceof Document;\n}\n","import {useCallback, useState} from 'react';\n\nexport function useAnnouncement() {\n const [announcement, setAnnouncement] = useState('');\n const announce = useCallback((value: string | undefined) => {\n if (value != null) {\n setAnnouncement(value);\n }\n }, []);\n\n return {announce, announcement} as const;\n}\n","import {getWindow} from '../execution-context/getWindow';\n\nimport {isWindow} from './isWindow';\n\nexport function isHTMLElement(node: Node | Window): node is HTMLElement {\n if (isWindow(node)) {\n return false;\n }\n\n return node instanceof getWindow(node).HTMLElement;\n}\n","import type {Disabled} from '../types';\n\nexport function normalizeDisabled(disabled: boolean | Disabled): Disabled {\n if (typeof disabled === 'boolean') {\n return {\n draggable: disabled,\n droppable: disabled,\n };\n }\n\n return disabled;\n}\n","import {getWindow} from '../execution-context/getWindow';\n\nexport function isSVGElement(node: Node): node is SVGElement {\n return node instanceof getWindow(node).SVGElement;\n}\n","import {\n isWindow,\n isHTMLElement,\n isDocument,\n isNode,\n isSVGElement,\n} from '../type-guards';\n\nexport function getOwnerDocument(target: Event['target']): Document {\n if (!target) {\n return document;\n }\n\n if (isWindow(target)) {\n return target.document;\n }\n\n if (!isNode(target)) {\n return document;\n }\n\n if (isDocument(target)) {\n return target;\n }\n\n if (isHTMLElement(target) || isSVGElement(target)) {\n return target.ownerDocument;\n }\n\n return document;\n}\n","import type {ClientRect} from '@dnd-kit/core';\nimport type {SortingStrategy} from '../types';\n\n// To-do: We should be calculating scale transformation\nconst defaultScale = {\n scaleX: 1,\n scaleY: 1,\n};\n\nexport const horizontalListSortingStrategy: SortingStrategy = ({\n rects,\n activeNodeRect: fallbackActiveRect,\n activeIndex,\n overIndex,\n index,\n}) => {\n const activeNodeRect = rects[activeIndex] ?? fallbackActiveRect;\n\n if (!activeNodeRect) {\n return null;\n }\n\n const itemGap = getItemGap(rects, index, activeIndex);\n\n if (index === activeIndex) {\n const newIndexRect = rects[overIndex];\n\n if (!newIndexRect) {\n return null;\n }\n\n return {\n x:\n activeIndex < overIndex\n ? newIndexRect.left +\n newIndexRect.width -\n (activeNodeRect.left + activeNodeRect.width)\n : newIndexRect.left - activeNodeRect.left,\n y: 0,\n ...defaultScale,\n };\n }\n\n if (index > activeIndex && index <= overIndex) {\n return {\n x: -activeNodeRect.width - itemGap,\n y: 0,\n ...defaultScale,\n };\n }\n\n if (index < activeIndex && index >= overIndex) {\n return {\n x: activeNodeRect.width + itemGap,\n y: 0,\n ...defaultScale,\n };\n }\n\n return {\n x: 0,\n y: 0,\n ...defaultScale,\n };\n};\n\nfunction getItemGap(rects: ClientRect[], index: number, activeIndex: number) {\n const currentRect: ClientRect | undefined = rects[index];\n const previousRect: ClientRect | undefined = rects[index - 1];\n const nextRect: ClientRect | undefined = rects[index + 1];\n\n if (!currentRect || (!previousRect && !nextRect)) {\n return 0;\n }\n\n if (activeIndex < index) {\n return previousRect\n ? currentRect.left - (previousRect.left + previousRect.width)\n : nextRect.left - (currentRect.left + currentRect.width);\n }\n\n return nextRect\n ? nextRect.left - (currentRect.left + currentRect.width)\n : currentRect.left - (previousRect.left + previousRect.width);\n}\n","import React, {useEffect, useMemo, useState} from 'react';\nimport {createPortal} from 'react-dom';\nimport {useUniqueId} from '@dnd-kit/utilities';\nimport {HiddenText, LiveRegion, useAnnouncement} from '@dnd-kit/accessibility';\n\nimport {DndMonitorListener, useDndMonitor} from '../DndMonitor';\n\nimport type {Announcements, ScreenReaderInstructions} from './types';\nimport {\n defaultAnnouncements,\n defaultScreenReaderInstructions,\n} from './defaults';\n\ninterface Props {\n announcements?: Announcements;\n container?: Element;\n screenReaderInstructions?: ScreenReaderInstructions;\n hiddenTextDescribedById: string;\n}\n\nexport function Accessibility({\n announcements = defaultAnnouncements,\n container,\n hiddenTextDescribedById,\n screenReaderInstructions = defaultScreenReaderInstructions,\n}: Props) {\n const {announce, announcement} = useAnnouncement();\n const liveRegionId = useUniqueId(`DndLiveRegion`);\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n useDndMonitor(\n useMemo<DndMonitorListener>(\n () => ({\n onDragStart({active}) {\n announce(announcements.onDragStart({active}));\n },\n onDragMove({active, over}) {\n if (announcements.onDragMove) {\n announce(announcements.onDragMove({active, over}));\n }\n },\n onDragOver({active, over}) {\n announce(announcements.onDragOver({active, over}));\n },\n onDragEnd({active, over}) {\n announce(announcements.onDragEnd({active, over}));\n },\n onDragCancel({active, over}) {\n announce(announcements.onDragCancel({active, over}));\n },\n }),\n [announce, announcements]\n )\n );\n\n if (!mounted) {\n return null;\n }\n\n const markup = (\n <>\n <HiddenText\n id={hiddenTextDescribedById}\n value={screenReaderInstructions.draggable}\n />\n <LiveRegion id={liveRegionId} announcement={announcement} />\n </>\n );\n\n return container ? createPortal(markup, container) : markup;\n}\n","import {useEffect, useLayoutEffect} from 'react';\n\nimport {canUseDOM} from '../execution-context';\n\n/**\n * A hook that resolves to useEffect on the server and useLayoutEffect on the client\n * @param callback {function} Callback function that is invoked when the dependencies of the hook change\n */\nexport const useIsomorphicLayoutEffect = canUseDOM\n ? useLayoutEffect\n : useEffect;\n","import {useCallback, useRef} from 'react';\n\nimport {useIsomorphicLayoutEffect} from './useIsomorphicLayoutEffect';\n\nexport function useEvent<T extends Function>(handler: T | undefined) {\n const handlerRef = useRef<T | undefined>(handler);\n\n useIsomorphicLayoutEffect(() => {\n handlerRef.current = handler;\n });\n\n return useCallback(function (...args: any) {\n return handlerRef.current?.(...args);\n }, []);\n}\n","import {useCallback, useRef} from 'react';\n\nexport function useInterval() {\n const intervalRef = useRef<number | null>(null);\n\n const set = useCallback((listener: Function, duration: number) => {\n intervalRef.current = setInterval(listener, duration);\n }, []);\n\n const clear = useCallback(() => {\n if (intervalRef.current !== null) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n }, []);\n\n return [set, clear] as const;\n}\n","import {useRef} from 'react';\nimport type {DependencyList} from 'react';\n\nimport {useIsomorphicLayoutEffect} from './useIsomorphicLayoutEffect';\n\nexport function useLatestValue<T extends any>(\n value: T,\n dependencies: DependencyList = [value]\n) {\n const valueRef = useRef<T>(value);\n\n useIsomorphicLayoutEffect(() => {\n if (valueRef.current !== value) {\n valueRef.current = value;\n }\n }, dependencies);\n\n return valueRef;\n}\n","import {useMemo, useRef} from 'react';\n\nexport function useLazyMemo<T>(\n callback: (prevValue: T | undefined) => T,\n dependencies: any[]\n) {\n const valueRef = useRef<T>();\n\n return useMemo(\n () => {\n const newValue = callback(valueRef.current);\n valueRef.current = newValue;\n\n return newValue;\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [...dependencies]\n );\n}\n","import {arrayMove} from '../utilities';\nimport type {SortingStrategy} from '../types';\n\nexport const rectSortingStrategy: SortingStrategy = ({\n rects,\n activeIndex,\n overIndex,\n index,\n}) => {\n const newRects = arrayMove(rects, overIndex, activeIndex);\n\n const oldRect = rects[index];\n const newRect = newRects[index];\n\n if (!newRect || !oldRect) {\n return null;\n }\n\n return {\n x: newRect.left - oldRect.left,\n y: newRect.top - oldRect.top,\n scaleX: newRect.width / oldRect.width,\n scaleY: newRect.height / oldRect.height,\n };\n};\n","import {useRef, useCallback} from 'react';\n\nimport {useEvent} from './useEvent';\n\nexport function useNodeRef(\n onChange?: (\n newElement: HTMLElement | null,\n previousElement: HTMLElement | null\n ) => void\n) {\n const onChangeHandler = useEvent(onChange);\n const node = useRef<HTMLElement | null>(null);\n const setNodeRef = useCallback(\n (element: HTMLElement | null) => {\n if (element !== node.current) {\n onChangeHandler?.(element, node.current);\n }\n\n node.current = element;\n },\n //eslint-disable-next-line\n []\n );\n\n return [node, setNodeRef] as const;\n}\n","import {useRef, useEffect} from 'react';\n\nexport function usePrevious<T>(value: T) {\n const ref = useRef<T>();\n\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref.current;\n}\n","import type {SortingStrategy} from '../types';\n\nexport const rectSwappingStrategy: SortingStrategy = ({\n activeIndex,\n index,\n rects,\n overIndex,\n}) => {\n let oldRect;\n let newRect;\n\n if (index === activeIndex) {\n oldRect = rects[index];\n newRect = rects[overIndex];\n }\n\n if (index === overIndex) {\n oldRect = rects[index];\n newRect = rects[activeIndex];\n }\n\n if (!newRect || !oldRect) {\n return null;\n }\n\n return {\n x: newRect.left - oldRect.left,\n y: newRect.top - oldRect.top,\n scaleX: newRect.width / oldRect.width,\n scaleY: newRect.height / oldRect.height,\n };\n};\n","import {useMemo} from 'react';\n\nlet ids: Record<string, number> = {};\n\nexport function useUniqueId(prefix: string, value?: string) {\n return useMemo(() => {\n if (value) {\n return value;\n }\n\n const id = ids[prefix] == null ? 0 : ids[prefix] + 1;\n ids[prefix] = id;\n\n return `${prefix}-${id}`;\n }, [prefix, value]);\n}\n","import type {Coordinates, UniqueIdentifier} from '../types';\nimport type {DroppableContainer} from './types';\n\nexport enum Action {\n DragStart = 'dragStart',\n DragMove = 'dragMove',\n DragEnd = 'dragEnd',\n DragCancel = 'dragCancel',\n DragOver = 'dragOver',\n RegisterDroppable = 'registerDroppable',\n SetDroppableDisabled = 'setDroppableDisabled',\n UnregisterDroppable = 'unregisterDroppable',\n}\n\nexport type Actions =\n | {\n type: Action.DragStart;\n active: UniqueIdentifier;\n initialCoordinates: Coordinates;\n }\n | {type: Action.DragMove; coordinates: Coordinates}\n | {type: Action.DragEnd}\n | {type: Action.DragCancel}\n | {\n type: Action.RegisterDroppable;\n element: DroppableContainer;\n }\n | {\n type: Action.SetDroppableDisabled;\n id: UniqueIdentifier;\n key: UniqueIdentifier;\n disabled: boolean;\n }\n | {\n type: Action.UnregisterDroppable;\n id: UniqueIdentifier;\n key: UniqueIdentifier;\n };\n","function createAdjustmentFn(modifier: number) {\n return <T extends Record<U, number>, U extends string>(\n object: T,\n ...adjustments: Partial<T>[]\n ): T => {\n return adjustments.reduce<T>(\n (accumulator, adjustment) => {\n const entries = Object.entries(adjustment) as [U, number][];\n\n for (const [key, valueAdjustment] of entries) {\n const value = accumulator[key];\n\n if (value != null) {\n accumulator[key] = (value + modifier * valueAdjustment) as T[U];\n }\n }\n\n return accumulator;\n },\n {\n ...object,\n }\n );\n };\n}\n\nexport const add = createAdjustmentFn(1);\nexport const subtract = createAdjustmentFn(-1);\n","export function noop(..._args: any) {}\n","import {useMemo} from 'react';\n\nimport type {Sensor, SensorDescriptor, SensorOptions} from './types';\n\nexport function useSensor<T extends SensorOptions>(\n sensor: Sensor<T>,\n options?: T\n): SensorDescriptor<T> {\n return useMemo(\n () => ({\n sensor,\n options: options ?? ({} as T),\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [sensor, options]\n );\n}\n","import {useMemo} from 'react';\n\nimport type {SensorDescriptor, SensorOptions} from './types';\n\nexport function useSensors(\n ...sensors: (SensorDescriptor<any> | undefined | null)[]\n): SensorDescriptor<SensorOptions>[] {\n return useMemo(\n () =>\n [...sensors].filter(\n (sensor): sensor is SensorDescriptor<any> => sensor != null\n ),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [...sensors]\n );\n}\n","import type {ClientRect} from '@dnd-kit/core';\nimport type {SortingStrategy} from '../types';\n\n// To-do: We should be calculating scale transformation\nconst defaultScale = {\n scaleX: 1,\n scaleY: 1,\n};\n\nexport const verticalListSortingStrategy: SortingStrategy = ({\n activeIndex,\n activeNodeRect: fallbackActiveRect,\n index,\n rects,\n overIndex,\n}) => {\n const activeNodeRect = rects[activeIndex] ?? fallbackActiveRect;\n\n if (!activeNodeRect) {\n return null;\n }\n\n if (index === activeIndex) {\n const overIndexRect = rects[overIndex];\n\n if (!overIndexRect) {\n return null;\n }\n\n return {\n x: 0,\n y:\n activeIndex < overIndex\n ? overIndexRect.top +\n overIndexRect.height -\n (activeNodeRect.top + activeNodeRect.height)\n : overIndexRect.top - activeNodeRect.top,\n ...defaultScale,\n };\n }\n\n const itemGap = getItemGap(rects, index, activeIndex);\n\n if (index > activeIndex && index <= overIndex) {\n return {\n x: 0,\n y: -activeNodeRect.height - itemGap,\n ...defaultScale,\n };\n }\n\n if (index < activeIndex && index >= overIndex) {\n return {\n x: 0,\n y: activeNodeRect.height + itemGap,\n ...defaultScale,\n };\n }\n\n return {\n x: 0,\n y: 0,\n ...defaultScale,\n };\n};\n\nfunction getItemGap(\n clientRects: ClientRect[],\n index: number,\n activeIndex: number\n) {\n const currentRect: ClientRect | undefined = clientRects[index];\n const previousRect: ClientRect | undefined = clientRects[index - 1];\n const nextRect: ClientRect | undefined = clientRects[index + 1];\n\n if (!currentRect) {\n return 0;\n }\n\n if (activeIndex < index) {\n return previousRect\n ? currentRect.top - (previousRect.top + previousRect.height)\n : nextRect\n ? nextRect.top - (currentRect.top + currentRect.height)\n : 0;\n }\n\n return nextRect\n ? nextRect.top - (currentRect.top + currentRect.height)\n : previousRect\n ? currentRect.top - (previousRect.top + previousRect.height)\n : 0;\n}\n","import type {Coordinates} from '../../types';\n\nexport const defaultCoordinates: Coordinates = Object.freeze({\n x: 0,\n y: 0,\n});\n","export function hasViewportRelativeCoordinates(\n event: Event\n): event is Event & Pick<PointerEvent, 'clientX' | 'clientY'> {\n return 'clientX' in event && 'clientY' in event;\n}\n","import type {Coordinates} from '../../types';\n\n/**\n * Returns the distance between two points\n */\nexport function distanceBetween(p1: Coordinates, p2: Coordinates) {\n return Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));\n}\n","import {getWindow} from '../execution-context';\n\nexport function isKeyboardEvent(\n event: Event | undefined | null\n): event is KeyboardEvent {\n if (!event) {\n return false;\n }\n\n const {KeyboardEvent} = getWindow(event.target);\n\n return KeyboardEvent && event instanceof KeyboardEvent;\n}\n","import {getEventCoordinates} from '@dnd-kit/utilities';\nimport type {ClientRect} from '../../types';\n\nexport function getRelativeTransformOrigin(\n event: MouseEvent | TouchEvent | KeyboardEvent,\n rect: ClientRect\n) {\n const eventCoordinates = getEventCoordinates(event);\n\n if (!eventCoordinates) {\n return '0 0';\n }\n\n const transformOrigin = {\n x: ((eventCoordinates.x - rect.left) / rect.width) * 100,\n y: ((eventCoordinates.y - rect.top) / rect.height) * 100,\n };\n\n return `${transformOrigin.x}% ${transformOrigin.y}%`;\n}\n","import {getWindow} from '../execution-context';\n\nexport function isTouchEvent(\n event: Event | undefined | null\n): event is TouchEvent {\n if (!event) {\n return false;\n }\n\n const {TouchEvent} = getWindow(event.target);\n\n return TouchEvent && event instanceof TouchEvent;\n}\n","/* eslint-disable no-redeclare */\nimport type {ClientRect} from '../../types';\n\nimport type {Collision, CollisionDescriptor} from './types';\n\n/**\n * Sort collisions from smallest to greatest value\n */\nexport function sortCollisionsAsc(\n {data: {value: a}}: CollisionDescriptor,\n {data: {value: b}}: CollisionDescriptor\n) {\n return a - b;\n}\n\n/**\n * Sort collisions from greatest to smallest value\n */\nexport function sortCollisionsDesc(\n {data: {value: a}}: CollisionDescriptor,\n {data: {value: b}}: CollisionDescriptor\n) {\n return b - a;\n}\n\n/**\n * Returns the coordinates of the corners of a given rectangle:\n * [TopLeft {x, y}, TopRight {x, y}, BottomLeft {x, y}, BottomRight {x, y}]\n */\nexport function cornersOfRectangle({left, top, height, width}: ClientRect) {\n return [\n {\n x: left,\n y: top,\n },\n {\n x: left + width,\n y: top,\n },\n {\n x: left,\n y: top + height,\n },\n {\n x: left + width,\n y: top + height,\n },\n ];\n}\n\n/**\n * Returns the first collision, or null if there isn't one.\n * If a property is specified, returns the specified property of the first collision.\n */\nexport function getFirstCollision(\n collisions: Collision[] | null | undefined\n): Collision | null;\nexport function getFirstCollision<T extends keyof Collision>(\n collisions: Collision[] | null | undefined,\n property: T\n): Collision[T] | null;\nexport function getFirstCollision(\n collisions: Collision[] | null | undefined,\n property?: keyof Collision\n) {\n if (!collisions || collisions.length === 0) {\n return null;\n }\n\n const [firstCollision] = collisions;\n\n return property ? firstCollision[property] : firstCollision;\n}\n","import type {Coordinates} from './types';\nimport {isTouchEvent, hasViewportRelativeCoordinates} from '../event';\n\n/**\n * Returns the normalized x and y coordinates for mouse and touch events.\n */\nexport function getEventCoordinates(event: Event): Coordinates | null {\n if (isTouchEvent(event)) {\n if (event.touches && event.touches.length) {\n const {clientX: x, clientY: y} = event.touches[0];\n\n return {\n x,\n y,\n };\n } else if (event.changedTouches && event.changedTouches.length) {\n const {clientX: x, clientY: y} = event.changedTouches[0];\n\n return {\n x,\n y,\n };\n }\n }\n\n if (hasViewportRelativeCoordinates(event)) {\n return {\n x: event.clientX,\n y: event.clientY,\n };\n }\n\n return null;\n}\n","export type Transform = {\n x: number;\n y: number;\n scaleX: number;\n scaleY: number;\n};\n\nexport interface Transition {\n property: string;\n easing: string;\n duration: number;\n}\n\nexport const CSS = Object.freeze({\n Translate: {\n toString(transform: Transform | null) {\n if (!transform) {\n return;\n }\n\n const {x, y} = transform;\n\n return `translate3d(${x ? Math.round(x) : 0}px, ${\n y ? Math.round(y) : 0\n }px, 0)`;\n },\n },\n Scale: {\n toString(transform: Transform | null) {\n if (!transform) {\n return;\n }\n\n const {scaleX, scaleY} = transform;\n\n return `scaleX(${scaleX}) scaleY(${scaleY})`;\n },\n },\n Transform: {\n toString(transform: Transform | null) {\n if (!transform) {\n return;\n }\n\n return [\n CSS.Translate.toString(transform),\n CSS.Scale.toString(transform),\n ].join(' ');\n },\n },\n Transition: {\n toString({property, duration, easing}: Transition) {\n return `${property} ${duration}ms ${easing}`;\n },\n },\n});\n","import React, {useEffect, useMemo, useRef} from 'react';\nimport {useDndContext, ClientRect, UniqueIdentifier} from '@dnd-kit/core';\nimport {useIsomorphicLayoutEffect, useUniqueId} from '@dnd-kit/utilities';\n\nimport type {Disabled, SortingStrategy} from '../types';\nimport {getSortedRects, itemsEqual, normalizeDisabled} from '../utilities';\nimport {rectSortingStrategy} from '../strategies';\n\nexport interface Props {\n children: React.ReactNode;\n items: (UniqueIdentifier | {id: UniqueIdentifier})[];\n strategy?: SortingStrategy;\n id?: string;\n disabled?: boolean | Disabled;\n}\n\nconst ID_PREFIX = 'Sortable';\n\ninterface ContextDescriptor {\n activeIndex: number;\n containerId: string;\n disabled: Disabled;\n disableTransforms: boolean;\n items: UniqueIdentifier[];\n overIndex: number;\n useDragOverlay: boolean;\n sortedRects: ClientRect[];\n strategy: SortingStrategy;\n}\n\nexport const Context = React.createContext<ContextDescriptor>({\n activeIndex: -1,\n containerId: ID_PREFIX,\n disableTransforms: false,\n items: [],\n overIndex: -1,\n useDragOverlay: false,\n sortedRects: [],\n strategy: rectSortingStrategy,\n disabled: {\n draggable: false,\n droppable: false,\n },\n});\n\nexport function SortableContext({\n children,\n id,\n items: userDefinedItems,\n strategy = rectSortingStrategy,\n disabled: disabledProp = false,\n}: Props) {\n const {\n active,\n dragOverlay,\n droppableRects,\n over,\n measureDroppableContainers,\n } = useDndContext();\n const containerId = useUniqueId(ID_PREFIX, id);\n const useDragOverlay = Boolean(dragOverlay.rect !== null);\n const items = useMemo<UniqueIdentifier[]>(\n () =>\n userDefinedItems.map((item) =>\n typeof item === 'object' && 'id' in item ? item.id : item\n ),\n [userDefinedItems]\n );\n const isDragging = active != null;\n const activeIndex = active ? items.indexOf(active.id) : -1;\n const overIndex = over ? items.indexOf(over.id) : -1;\n const previousItemsRef = useRef(items);\n const itemsHaveChanged = !itemsEqual(items, previousItemsRef.current);\n const disableTransforms =\n (overIndex !== -1 && activeIndex === -1) || itemsHaveChanged;\n const disabled = normalizeDisabled(disabledProp);\n\n useIsomorphicLayoutEffect(() => {\n if (itemsHaveChanged && isDragging) {\n measureDroppableContainers(items);\n }\n }, [itemsHaveChanged, items, isDragging, measureDroppableContainers]);\n\n useEffect(() => {\n previousItemsRef.current = items;\n }, [items]);\n\n const contextValue = useMemo(\n (): ContextDescriptor => ({\n activeIndex,\n containerId,\n disabled,\n disableTransforms,\n items,\n overIndex,\n useDragOverlay,\n sortedRects: getSortedRects(items, droppableRects),\n strategy,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n activeIndex,\n containerId,\n disabled.draggable,\n disabled.droppable,\n disableTransforms,\n items,\n overIndex,\n droppableRects,\n useDragOverlay,\n strategy,\n ]\n );\n\n return <Context.Provider value={contextValue}>{children}</Context.Provider>;\n}\n","import {distanceBetween} from '../coordinates';\nimport type {Coordinates, ClientRect} from '../../types';\n\nimport type {CollisionDescriptor, CollisionDetection} from './types';\nimport {sortCollisionsAsc} from './helpers';\n\n/**\n * Returns the coordinates of the center of a given ClientRect\n */\nfunction centerOfRectangle(\n rect: ClientRect,\n left = rect.left,\n top = rect.top\n): Coordinates {\n return {\n x: left + rect.width * 0.5,\n y: top + rect.height * 0.5,\n };\n}\n\n/**\n * Returns the closest rectangles from an array of rectangles to the center of a given\n * rectangle.\n */\nexport const closestCenter: CollisionDetection = ({\n collisionRect,\n droppableRects,\n droppableContainers,\n}) => {\n const centerRect = centerOfRectangle(\n collisionRect,\n collisionRect.left,\n collisionRect.top\n );\n const collisions: CollisionDescriptor[] = [];\n\n for (const droppableContainer of droppableContainers) {\n const {id} = droppableContainer;\n const rect = droppableRects.get(id);\n\n if (rect) {\n const distBetween = distanceBetween(centerOfRectangle(rect), centerRect);\n\n collisions.push({id, data: {droppableContainer, value: distBetween}});\n }\n }\n\n return collisions.sort(sortCollisionsAsc);\n};\n","const SELECTOR =\n 'a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]';\n\nexport function findFirstFocusableNode(\n element: HTMLElement\n): HTMLElement | null {\n if (element.matches(SELECTOR)) {\n return element;\n }\n\n return element.querySelector(SELECTOR);\n}\n","import {CSS} from '@dnd-kit/utilities';\n\nimport {arrayMove} from '../utilities';\n\nimport type {\n AnimateLayoutChanges,\n NewIndexGetter,\n SortableTransition,\n} from './types';\n\nexport const defaultNewIndexGetter: NewIndexGetter = ({\n id,\n items,\n activeIndex,\n overIndex,\n}) => arrayMove(items, activeIndex, overIndex).indexOf(id);\n\nexport const defaultAnimateLayoutChanges: AnimateLayoutChanges = ({\n containerId,\n isSorting,\n wasDragging,\n index,\n items,\n newIndex,\n previousItems,\n previousContainerId,\n transition,\n}) => {\n if (!transition || !wasDragging) {\n return false;\n }\n\n if (previousItems !== items && index === newIndex) {\n return false;\n }\n\n if (isSorting) {\n return true;\n }\n\n return newIndex !== index && containerId === previousContainerId;\n};\n\nexport const defaultTransition: SortableTransition = {\n duration: 200,\n easing: 'ease',\n};\n\nexport const transitionProperty = 'transform';\n\nexport const disabledTransition = CSS.Transition.toString({\n property: transitionProperty,\n duration: 0,\n easing: 'linear',\n});\n\nexport const defaultAttributes = {\n roleDescription: 'sortable',\n};\n","import {distanceBetween} from '../coordinates';\n\nimport type {CollisionDescriptor, CollisionDetection} from './types';\nimport {cornersOfRectangle, sortCollisionsAsc} from './helpers';\n\n/**\n * Returns the closest rectangles from an array of rectangles to the corners of\n * another rectangle.\n */\nexport const closestCorners: CollisionDetection = ({\n collisionRect,\n droppableRects,\n droppableContainers,\n}) => {\n const corners = cornersOfRectangle(collisionRect);\n const collisions: CollisionDescriptor[] = [];\n\n for (const droppableContainer of droppableContainers) {\n const {id} = droppableContainer;\n const rect = droppableRects.get(id);\n\n if (rect) {\n const rectCorners = cornersOfRectangle(rect);\n const distances = corners.reduce((accumulator, corner, index) => {\n return accumulator + distanceBetween(rectCorners[index], corner);\n }, 0);\n const effectiveDistance = Number((distances / 4).toFixed(4));\n\n collisions.push({\n id,\n data: {droppableContainer, value: effectiveDistance},\n });\n }\n }\n\n return collisions.sort(sortCollisionsAsc);\n};\n","import {useEffect, useRef, useState} from 'react';\nimport {getClientRect, ClientRect} from '@dnd-kit/core';\nimport {Transform, useIsomorphicLayoutEffect} from '@dnd-kit/utilities';\n\ninterface Arguments {\n rect: React.MutableRefObject<ClientRect | null>;\n disabled: boolean;\n index: number;\n node: React.MutableRefObject<HTMLElement | null>;\n}\n\n/*\n * When the index of an item changes while sorting,\n * we need to temporarily disable the transforms\n */\nexport function useDerivedTransform({disabled, index, node, rect}: Arguments) {\n const [derivedTransform, setDerivedtransform] = useState<Transform | null>(\n null\n );\n const previousIndex = useRef(index);\n\n useIsomorphicLayoutEffect(() => {\n if (!disabled && index !== previousIndex.current && node.current) {\n const initial = rect.current;\n\n if (initial) {\n const current = getClientRect(node.current, {\n ignoreTransform: true,\n });\n\n const delta = {\n x: initial.left - current.left,\n y: initial.top - current.top,\n scaleX: initial.width / current.width,\n scaleY: initial.height / current.height,\n };\n\n if (delta.x || delta.y) {\n setDerivedtransform(delta);\n }\n }\n }\n\n if (index !== previousIndex.current) {\n previousIndex.current = index;\n }\n }, [disabled, index, node, rect]);\n\n useEffect(() => {\n if (derivedTransform) {\n setDerivedtransform(null);\n }\n }, [derivedTransform]);\n\n return derivedTransform;\n}\n","import type {ClientRect} from '../../types';\n\nimport type {CollisionDescriptor, CollisionDetection} from './types';\nimport {sortCollisionsDesc} from './helpers';\n\n/**\n * Returns the intersecting rectangle area between two rectangles\n */\nexport function getIntersectionRatio(\n entry: ClientRect,\n target: ClientRect\n): number {\n const top = Math.max(target.top, entry.top);\n const left = Math.max(target.left, entry.left);\n const right = Math.min(target.left + target.width, entry.left + entry.width);\n const bottom = Math.min(target.top + target.height, entry.top + entry.height);\n const width = right - left;\n const height = bottom - top;\n\n if (left < right && top < bottom) {\n const targetArea = target.width * target.height;\n const entryArea = entry.width * entry.height;\n const intersectionArea = width * height;\n const intersectionRatio =\n intersectionArea / (targetArea + entryArea - intersectionArea);\n\n return Number(intersectionRatio.toFixed(4));\n }\n\n // Rectangles do not overlap, or overlap has an area of zero (edge/corner overlap)\n return 0;\n}\n\n/**\n * Returns the rectangles that has the greatest intersection area with a given\n * rectangle in an array of rectangles.\n */\nexport const rectIntersection: CollisionDetection = ({\n collisionRect,\n droppableRects,\n droppableContainers,\n}) => {\n const collisions: CollisionDescriptor[] = [];\n\n for (const droppableContainer of droppableContainers) {\n const {id} = droppableContainer;\n const rect = droppableRects.get(id);\n\n if (rect) {\n const intersectionRatio = getIntersectionRatio(rect, collisionRect);\n\n if (intersectionRatio > 0) {\n collisions.push({\n id,\n data: {droppableContainer, value: intersectionRatio},\n });\n }\n }\n }\n\n return collisions.sort(sortCollisionsDesc);\n};\n","import {useContext, useEffect, useMemo, useRef} from 'react';\nimport {\n useDraggable,\n useDroppable,\n UseDraggableArguments,\n UseDroppableArguments,\n} from '@dnd-kit/core';\nimport type {Data} from '@dnd-kit/core';\nimport {CSS, isKeyboardEvent, useCombinedRefs} from '@dnd-kit/utilities';\n\nimport {Context} from '../components';\nimport type {Disabled, SortableData, SortingStrategy} from '../types';\nimport {isValidIndex} from '../utilities';\nimport {\n defaultAnimateLayoutChanges,\n defaultAttributes,\n defaultNewIndexGetter,\n defaultTransition,\n disabledTransition,\n transitionProperty,\n} from './defaults';\nimport type {\n AnimateLayoutChanges,\n NewIndexGetter,\n SortableTransition,\n} from './types';\nimport {useDerivedTransform} from './utilities';\n\nexport interface Arguments\n extends Omit<UseDraggableArguments, 'disabled'>,\n Pick<UseDroppableArguments, 'resizeObserverConfig'> {\n animateLayoutChanges?: AnimateLayoutChanges;\n disabled?: boolean | Disabled;\n getNewIndex?: NewIndexGetter;\n strategy?: SortingStrategy;\n transition?: SortableTransition | null;\n}\n\nexport function useSortable({\n animateLayoutChanges = defaultAnimateLayoutChanges,\n attributes: userDefinedAttributes,\n disabled: localDisabled,\n data: customData,\n getNewIndex = defaultNewIndexGetter,\n id,\n strategy: localStrategy,\n resizeObserverConfig,\n transition = defaultTransition,\n}: Arguments) {\n const {\n items,\n containerId,\n activeIndex,\n disabled: globalDisabled,\n disableTransforms,\n sortedRects,\n overIndex,\n useDragOverlay,\n strategy: globalStrategy,\n } = useContext(Context);\n const disabled: Disabled = normalizeLocalDisabled(\n localDisabled,\n globalDisabled\n );\n const index = items.indexOf(id);\n const data = useMemo<SortableData & Data>(\n () => ({sortable: {containerId, index, items}, ...customData}),\n [containerId, customData, index, items]\n );\n const itemsAfterCurrentSortable = useMemo(\n () => items.slice(items.indexOf(id)),\n [items, id]\n );\n const {\n rect,\n node,\n isOver,\n setNodeRef: setDroppableNodeRef,\n } = useDroppable({\n id,\n data,\n disabled: disabled.droppable,\n resizeObserverConfig: {\n updateMeasurementsFor: itemsAfterCurrentSortable,\n ...resizeObserverConfig,\n },\n });\n const {\n active,\n activatorEvent,\n activeNodeRect,\n attributes,\n setNodeRef: setDraggableNodeRef,\n listeners,\n isDragging,\n over,\n setActivatorNodeRef,\n transform,\n } = useDraggable({\n id,\n data,\n attributes: {\n ...defaultAttributes,\n ...userDefinedAttributes,\n },\n disabled: disabled.draggable,\n });\n const setNodeRef = useCombinedRefs(setDroppableNodeRef, setDraggableNodeRef);\n const isSorting = Boolean(active);\n const displaceItem =\n isSorting &&\n !disableTransforms &&\n isValidIndex(activeIndex) &&\n isValidIndex(overIndex);\n const shouldDisplaceDragSource = !useDragOverlay && isDragging;\n const dragSourceDisplacement =\n shouldDisplaceDragSource && displaceItem ? transform : null;\n const strategy = localStrategy ?? globalStrategy;\n const finalTransform = displaceItem\n ? dragSourceDisplacement ??\n strategy({\n rects: sortedRects,\n activeNodeRect,\n activeIndex,\n overIndex,\n index,\n })\n : null;\n const newIndex =\n isValidIndex(activeIndex) && isValidIndex(overIndex)\n ? getNewIndex({id, items, activeIndex, overIndex})\n : index;\n const activeId = active?.id;\n const previous = useRef({\n activeId,\n items,\n newIndex,\n containerId,\n });\n const itemsHaveChanged = items !== previous.current.items;\n const shouldAnimateLayoutChanges = animateLayoutChanges({\n active,\n containerId,\n isDragging,\n isSorting,\n id,\n index,\n items,\n newIndex: previous.current.newIndex,\n previousItems: previous.current.items,\n previousContainerId: previous.current.containerId,\n transition,\n wasDragging: previous.current.activeId != null,\n });\n\n const derivedTransform = useDerivedTransform({\n disabled: !shouldAnimateLayoutChanges,\n index,\n node,\n rect,\n });\n\n useEffect(() => {\n if (isSorting && previous.current.newIndex !== newIndex) {\n previous.current.newIndex = newIndex;\n }\n\n if (containerId !== previous.current.containerId) {\n previous.current.containerId = containerId;\n }\n\n if (items !== previous.current.items) {\n previous.current.items = items;\n }\n }, [isSorting, newIndex, containerId, items]);\n\n useEffect(() => {\n if (activeId === previous.current.activeId) {\n return;\n }\n\n if (activeId != null && previous.current.activeId == null) {\n previous.current.activeId = activeId;\n return;\n }\n\n const timeoutId = setTimeout(() => {\n previous.current.activeId = activeId;\n }, 50);\n\n return () => clearTimeout(timeoutId);\n }, [activeId]);\n\n return {\n active,\n activeIndex,\n attributes,\n data,\n rect,\n index,\n newIndex,\n items,\n isOver,\n isSorting,\n isDragging,\n listeners,\n node,\n overIndex,\n over,\n setNodeRef,\n setActivatorNodeRef,\n setDroppableNodeRef,\n setDraggableNodeRef,\n transform: derivedTransform ?? finalTransform,\n transition: getTransition(),\n };\n\n function getTransition() {\n if (\n // Temporarily disable transitions for a single frame to set up derived transforms\n derivedTransform ||\n // Or to prevent items jumping to back to their \"new\" position when items change\n (itemsHaveChanged && previous.current.newIndex === index)\n ) {\n return disabledTransition;\n }\n\n if (\n (shouldDisplaceDragSource && !isKeyboardEvent(activatorEvent)) ||\n !transition\n ) {\n return undefined;\n }\n\n if (isSorting || shouldAnimateLayoutChanges) {\n return CSS.Transition.toString({\n ...transition,\n property: transitionProperty,\n });\n }\n\n return undefined;\n }\n}\n\nfunction normalizeLocalDisabled(\n localDisabled: Arguments['disabled'],\n globalDisabled: Disabled\n) {\n if (typeof localDisabled === 'boolean') {\n return {\n draggable: localDisabled,\n // Backwards compatibility\n droppable: false,\n };\n }\n\n return {\n draggable: localDisabled?.draggable ?? globalDisabled.draggable,\n droppable: localDisabled?.droppable ?? globalDisabled.droppable,\n };\n}\n","import type {Coordinates, ClientRect} from '../../types';\nimport {distanceBetween} from '../coordinates';\n\nimport type {CollisionDescriptor, CollisionDetection} from './types';\nimport {cornersOfRectangle, sortCollisionsAsc} from './helpers';\n\n/**\n * Check if a given point is contained within a bounding rectangle\n */\nfunction isPointWithinRect(point: Coordinates, rect: ClientRect): boolean {\n const {top, left, bottom, right} = rect;\n\n return (\n top <= point.y && point.y <= bottom && left <= point.x && point.x <= right\n );\n}\n\n/**\n * Returns the rectangles that the pointer is hovering over\n */\nexport const pointerWithin: CollisionDetection = ({\n droppableContainers,\n droppableRects,\n pointerCoordinates,\n}) => {\n if (!pointerCoordinates) {\n return [];\n }\n\n const collisions: CollisionDescriptor[] = [];\n\n for (const droppableContainer of droppableContainers) {\n const {id} = droppableContainer;\n const rect = droppableRects.get(id);\n\n if (rect && isPointWithinRect(pointerCoordinates, rect)) {\n /* There may be more than a single rectangle intersecting\n * with the pointer coordinates. In order to sort the\n * colliding rectangles, we measure the distance between\n * the pointer and the corners of the intersecting rectangle\n */\n const corners = cornersOfRectangle(rect);\n const distances = corners.reduce((accumulator, corner) => {\n return accumulator + distanceBetween(pointerCoordinates, corner);\n }, 0);\n const effectiveDistance = Number((distances / 4).toFixed(4));\n\n collisions.push({\n id,\n data: {droppableContainer, value: effectiveDistance},\n });\n }\n }\n\n return collisions.sort(sortCollisionsAsc);\n};\n","import type {Transform} from '@dnd-kit/utilities';\nimport type {ClientRect} from '../../types';\n\nexport function adjustScale(\n transform: Transform,\n rect1: ClientRect | null,\n rect2: ClientRect | null\n): Transform {\n return {\n ...transform,\n scaleX: rect1 && rect2 ? rect1.width / rect2.width : 1,\n scaleY: rect1 && rect2 ? rect1.height / rect2.height : 1,\n };\n}\n","import type {Coordinates, ClientRect} from '../../types';\nimport {defaultCoordinates} from '../coordinates';\n\nexport function getRectDelta(\n rect1: ClientRect | null,\n rect2: ClientRect | null\n): Coordinates {\n return rect1 && rect2\n ? {\n x: rect1.left - rect2.left,\n y: rect1.top - rect2.top,\n }\n : defaultCoordinates;\n}\n","import type {Coordinates, ClientRect} from '../../types';\n\nexport function createRectAdjustmentFn(modifier: number) {\n return function adjustClientRect(\n rect: ClientRect,\n ...adjustments: Coordinates[]\n ): ClientRect {\n return adjustments.reduce<ClientRect>(\n (acc, adjustment) => ({\n ...acc,\n top: acc.top + modifier * adjustment.y,\n bottom: acc.bottom + modifier * adjustment.y,\n left: acc.left + modifier * adjustment.x,\n right: acc.right + modifier * adjustment.x,\n }),\n {...rect}\n );\n };\n}\n\nexport const getAdjustedRect = createRectAdjustmentFn(1);\n","import type {Transform} from '@dnd-kit/utilities';\n\nexport function parseTransform(transform: string): Transform | null {\n if (transform.startsWith('matrix3d(')) {\n const transformArray = transform.slice(9, -1).split(/, /);\n\n return {\n x: +transformArray[12],\n y: +transformArray[13],\n scaleX: +transformArray[0],\n scaleY: +transformArray[5],\n };\n } else if (transform.startsWith('matrix(')) {\n const transformArray = transform.slice(7, -1).split(/, /);\n\n return {\n x: +transformArray[4],\n y: +transformArray[5],\n scaleX: +transformArray[0],\n scaleY: +transformArray[3],\n };\n }\n\n return null;\n}\n","import type {ClientRect} from '../../types';\n\nimport {parseTransform} from './parseTransform';\n\nexport function inverseTransform(\n rect: ClientRect,\n transform: string,\n transformOrigin: string\n): ClientRect {\n const parsedTransform = parseTransform(transform);\n\n if (!parsedTransform) {\n return rect;\n }\n\n const {scaleX, scaleY, x: translateX, y: translateY} = parsedTransform;\n\n const x = rect.left - translateX - (1 - scaleX) * parseFloat(transformOrigin);\n const y =\n rect.top -\n translateY -\n (1 - scaleY) *\n parseFloat(transformOrigin.slice(transformOrigin.indexOf(' ') + 1));\n const w = scaleX ? rect.width / scaleX : rect.width;\n const h = scaleY ? rect.height / scaleY : rect.height;\n\n return {\n width: w,\n height: h,\n top: y,\n right: x + w,\n bottom: y + h,\n left: x,\n };\n}\n","import {getWindow} from '@dnd-kit/utilities';\n\nimport type {ClientRect} from '../../types';\nimport {inverseTransform} from '../transform';\n\ninterface Options {\n ignoreTransform?: boolean;\n}\n\nconst defaultOptions: Options = {ignoreTransform: false};\n\n/**\n * Returns the bounding client rect of an element relative to the viewport.\n */\nexport function getClientRect(\n element: Element,\n options: Options = defaultOptions\n) {\n let rect: ClientRect = element.getBoundingClientRect();\n\n if (options.ignoreTransform) {\n const {transform, transformOrigin} =\n getWindow(element).getComputedStyle(element);\n\n if (transform) {\n rect = inverseTransform(rect, transform, transformOrigin);\n }\n }\n\n const {top, left, width, height, bottom, right} = rect;\n\n return {\n top,\n left,\n width,\n height,\n bottom,\n right,\n };\n}\n\n/**\n * Returns the bounding client rect of an element relative to the viewport.\n *\n * @remarks\n * The ClientRect returned by this method does not take into account transforms\n * applied to the element it measures.\n *\n */\nexport function getTransformAgnosticClientRect(element: Element): ClientRect {\n return getClientRect(element, {ignoreTransform: true});\n}\n","import type {\n Active,\n Data,\n DroppableContainer,\n DraggableNode,\n Over,\n} from '@dnd-kit/core';\n\nimport type {SortableData} from './data';\n\nexport function hasSortableData<\n T extends Active | Over | DraggableNode | DroppableContainer\n>(\n entry: T | null | undefined\n): entry is T & {data: {current: Data<SortableData>}} {\n if (!entry) {\n return false;\n }\n\n const data = entry.data.current;\n\n if (\n data &&\n 'sortable' in data &&\n typeof data.sortable === 'object' &&\n 'containerId' in data.sortable &&\n 'items' in data.sortable &&\n 'index' in data.sortable\n ) {\n return true;\n }\n\n return false;\n}\n","import type {ClientRect} from '../../types';\n\nexport function getWindowClientRect(element: typeof window): ClientRect {\n const width = element.innerWidth;\n const height = element.innerHeight;\n\n return {\n top: 0,\n left: 0,\n right: width,\n bottom: height,\n width,\n height,\n };\n}\n","import {\n closestCorners,\n getScrollableAncestors,\n getFirstCollision,\n KeyboardCode,\n DroppableContainer,\n KeyboardCoordinateGetter,\n} from '@dnd-kit/core';\nimport {subtract} from '@dnd-kit/utilities';\n\nimport {hasSortableData} from '../../types';\n\nconst directions: string[] = [\n KeyboardCode.Down,\n KeyboardCode.Right,\n KeyboardCode.Up,\n KeyboardCode.Left,\n];\n\nexport const sortableKeyboardCoordinates: KeyboardCoordinateGetter = (\n event,\n {\n context: {\n active,\n collisionRect,\n droppableRects,\n droppableContainers,\n over,\n scrollableAncestors,\n },\n }\n) => {\n if (directions.includes(event.code)) {\n event.preventDefault();\n\n if (!active || !collisionRect) {\n return;\n }\n\n const filteredContainers: DroppableContainer[] = [];\n\n droppableContainers.getEnabled().forEach((entry) => {\n if (!entry || entry?.disabled) {\n return;\n }\n\n const rect = droppableRects.get(entry.id);\n\n if (!rect) {\n return;\n }\n\n switch (event.code) {\n case KeyboardCode.Down:\n if (collisionRect.top < rect.top) {\n filteredContainers.push(entry);\n }\n break;\n case KeyboardCode.Up:\n if (collisionRect.top > rect.top) {\n filteredContainers.push(entry);\n }\n break;\n case KeyboardCode.Left:\n if (collisionRect.left > rect.left) {\n filteredContainers.push(entry);\n }\n break;\n case KeyboardCode.Right:\n if (collisionRect.left < rect.left) {\n filteredContainers.push(entry);\n }\n break;\n }\n });\n\n const collisions = closestCorners({\n active,\n collisionRect: collisionRect,\n droppableRects,\n droppableContainers: filteredContainers,\n pointerCoordinates: null,\n });\n let closestId = getFirstCollision(collisions, 'id');\n\n if (closestId === over?.id && collisions.length > 1) {\n closestId = collisions[1].id;\n }\n\n if (closestId != null) {\n const activeDroppable = droppableContainers.get(active.id);\n const newDroppable = droppableContainers.get(closestId);\n const newRect = newDroppable ? droppableRects.get(newDroppable.id) : null;\n const newNode = newDroppable?.node.current;\n\n if (newNode && newRect && activeDroppable && newDroppable) {\n const newScrollAncestors = getScrollableAncestors(newNode);\n const hasDifferentScrollAncestors = newScrollAncestors.some(\n (element, index) => scrollableAncestors[index] !== element\n );\n const hasSameContainer = isSameContainer(activeDroppable, newDroppable);\n const isAfterActive = isAfter(activeDroppable, newDroppable);\n const offset =\n hasDifferentScrollAncestors || !hasSameContainer\n ? {\n x: 0,\n y: 0,\n }\n : {\n x: isAfterActive ? collisionRect.width - newRect.width : 0,\n y: isAfterActive ? collisionRect.height - newRect.height : 0,\n };\n const rectCoordinates = {\n x: newRect.left,\n y: newRect.top,\n };\n\n const newCoordinates =\n offset.x && offset.y\n ? rectCoordinates\n : subtract(rectCoordinates, offset);\n\n return newCoordinates;\n }\n }\n }\n\n return undefined;\n};\n\nfunction isSameContainer(a: DroppableContainer, b: DroppableContainer) {\n if (!hasSortableData(a) || !hasSortableData(b)) {\n return false;\n }\n\n return (\n a.data.current.sortable.containerId === b.data.current.sortable.containerId\n );\n}\n\nfunction isAfter(a: DroppableContainer, b: DroppableContainer) {\n if (!hasSortableData(a) || !hasSortableData(b)) {\n return false;\n }\n\n if (!isSameContainer(a, b)) {\n return false;\n }\n\n return a.data.current.sortable.index < b.data.current.sortable.index;\n}\n","import {getWindow} from '@dnd-kit/utilities';\n\nexport function isFixed(\n node: HTMLElement,\n computedStyle: CSSStyleDeclaration = getWindow(node).getComputedStyle(node)\n): boolean {\n return computedStyle.position === 'fixed';\n}\n","import {getWindow} from '@dnd-kit/utilities';\n\nexport function isScrollable(\n element: HTMLElement,\n computedStyle: CSSStyleDeclaration = getWindow(element).getComputedStyle(\n element\n )\n): boolean {\n const overflowRegex = /(auto|scroll|overlay)/;\n const properties = ['overflow', 'overflowX', 'overflowY'];\n\n return properties.some((property) => {\n const value = computedStyle[property as keyof CSSStyleDeclaration];\n\n return typeof value === 'string' ? overflowRegex.test(value) : false;\n });\n}\n","import {\n getWindow,\n isDocument,\n isHTMLElement,\n isSVGElement,\n} from '@dnd-kit/utilities';\n\nimport {isFixed} from './isFixed';\nimport {isScrollable} from './isScrollable';\n\nexport function getScrollableAncestors(\n element: Node | null,\n limit?: number\n): Element[] {\n const scrollParents: Element[] = [];\n\n function findScrollableAncestors(node: Node | null): Element[] {\n if (limit != null && scrollParents.length >= limit) {\n return scrollParents;\n }\n\n if (!node) {\n return scrollParents;\n }\n\n if (\n isDocument(node) &&\n node.scrollingElement != null &&\n !scrollParents.includes(node.scrollingElement)\n ) {\n scrollParents.push(node.scrollingElement);\n\n return scrollParents;\n }\n\n if (!isHTMLElement(node) || isSVGElement(node)) {\n return scrollParents;\n }\n\n if (scrollParents.includes(node)) {\n return scrollParents;\n }\n\n const computedStyle = getWindow(element).getComputedStyle(node);\n\n if (node !== element) {\n if (isScrollable(node, computedStyle)) {\n scrollParents.push(node);\n }\n }\n\n if (isFixed(node, computedStyle)) {\n return scrollParents;\n }\n\n return findScrollableAncestors(node.parentNode);\n }\n\n if (!element) {\n return scrollParents;\n }\n\n return findScrollableAncestors(element);\n}\n\nexport function getFirstScrollableAncestor(node: Node | null): Element | null {\n const [firstScrollableAncestor] = getScrollableAncestors(node, 1);\n\n return firstScrollableAncestor ?? null;\n}\n","import {\n canUseDOM,\n isHTMLElement,\n isDocument,\n getOwnerDocument,\n isNode,\n isWindow,\n} from '@dnd-kit/utilities';\n\nexport function getScrollableElement(element: EventTarget | null) {\n if (!canUseDOM || !element) {\n return null;\n }\n\n if (isWindow(element)) {\n return element;\n }\n\n if (!isNode(element)) {\n return null;\n }\n\n if (\n isDocument(element) ||\n element === getOwnerDocument(element).scrollingElement\n ) {\n return window;\n }\n\n if (isHTMLElement(element)) {\n return element;\n }\n\n return null;\n}\n","import {isWindow} from '@dnd-kit/utilities';\n\nimport type {Coordinates} from '../../types';\n\nexport function getScrollXCoordinate(element: Element | typeof window): number {\n if (isWindow(element)) {\n return element.scrollX;\n }\n\n return element.scrollLeft;\n}\n\nexport function getScrollYCoordinate(element: Element | typeof window): number {\n if (isWindow(element)) {\n return element.scrollY;\n }\n\n return element.scrollTop;\n}\n\nexport function getScrollCoordinates(\n element: Element | typeof window\n): Coordinates {\n return {\n x: getScrollXCoordinate(element),\n y: getScrollYCoordinate(element),\n };\n}\n","export enum Direction {\n Forward = 1,\n Backward = -1,\n}\n","import {canUseDOM} from '@dnd-kit/utilities';\n\nexport function isDocumentScrollingElement(element: Element | null) {\n if (!canUseDOM || !element) {\n return false;\n }\n\n return element === document.scrollingElement;\n}\n","import {isDocumentScrollingElement} from './documentScrollingElement';\n\nexport function getScrollPosition(scrollingContainer: Element) {\n const minScroll = {\n x: 0,\n y: 0,\n };\n const dimensions = isDocumentScrollingElement(scrollingContainer)\n ? {\n height: window.innerHeight,\n width: window.innerWidth,\n }\n : {\n height: scrollingContainer.clientHeight,\n width: scrollingContainer.clientWidth,\n };\n const maxScroll = {\n x: scrollingContainer.scrollWidth - dimensions.width,\n y: scrollingContainer.scrollHeight - dimensions.height,\n };\n\n const isTop = scrollingContainer.scrollTop <= minScroll.y;\n const isLeft = scrollingContainer.scrollLeft <= minScroll.x;\n const isBottom = scrollingContainer.scrollTop >= maxScroll.y;\n const isRight = scrollingContainer.scrollLeft >= maxScroll.x;\n\n return {\n isTop,\n isLeft,\n isBottom,\n isRight,\n maxScroll,\n minScroll,\n };\n}\n","import {Direction, ClientRect} from '../../types';\nimport {getScrollPosition} from './getScrollPosition';\n\ninterface PositionalCoordinates\n extends Pick<ClientRect, 'top' | 'left' | 'right' | 'bottom'> {}\n\nconst defaultThreshold = {\n x: 0.2,\n y: 0.2,\n};\n\nexport function getScrollDirectionAndSpeed(\n scrollContainer: Element,\n scrollContainerRect: ClientRect,\n {top, left, right, bottom}: PositionalCoordinates,\n acceleration = 10,\n thresholdPercentage = defaultThreshold\n) {\n const {isTop, isBottom, isLeft, isRight} = getScrollPosition(scrollContainer);\n\n const direction = {\n x: 0,\n y: 0,\n };\n const speed = {\n x: 0,\n y: 0,\n };\n const threshold = {\n height: scrollContainerRect.height * thresholdPercentage.y,\n width: scrollContainerRect.width * thresholdPercentage.x,\n };\n\n if (!isTop && top <= scrollContainerRect.top + threshold.height) {\n // Scroll Up\n direction.y = Direction.Backward;\n speed.y =\n acceleration *\n Math.abs(\n (scrollContainerRect.top + threshold.height - top) / threshold.height\n );\n } else if (\n !isBottom &&\n bottom >= scrollContainerRect.bottom - threshold.height\n ) {\n // Scroll Down\n direction.y = Direction.Forward;\n speed.y =\n acceleration *\n Math.abs(\n (scrollContainerRect.bottom - threshold.height - bottom) /\n threshold.height\n );\n }\n\n if (!isRight && right >= scrollContainerRect.right - threshold.width) {\n // Scroll Right\n direction.x = Direction.Forward;\n speed.x =\n acceleration *\n Math.abs(\n (scrollContainerRect.right - threshold.width - right) / threshold.width\n );\n } else if (!isLeft && left <= scrollContainerRect.left + threshold.width) {\n // Scroll Left\n direction.x = Direction.Backward;\n speed.x =\n acceleration *\n Math.abs(\n (scrollContainerRect.left + threshold.width - left) / threshold.width\n );\n }\n\n return {\n direction,\n speed,\n };\n}\n","export function getScrollElementRect(element: Element) {\n if (element === document.scrollingElement) {\n const {innerWidth, innerHeight} = window;\n\n return {\n top: 0,\n left: 0,\n right: innerWidth,\n bottom: innerHeight,\n width: innerWidth,\n height: innerHeight,\n };\n }\n\n const {top, left, right, bottom} = element.getBoundingClientRect();\n\n return {\n top,\n left,\n right,\n bottom,\n width: element.clientWidth,\n height: element.clientHeight,\n };\n}\n","import {add} from '@dnd-kit/utilities';\n\nimport type {Coordinates} from '../../types';\nimport {\n getScrollCoordinates,\n getScrollXCoordinate,\n getScrollYCoordinate,\n} from './getScrollCoordinates';\nimport {defaultCoordinates} from '../coordinates';\n\nexport function getScrollOffsets(scrollableAncestors: Element[]): Coordinates {\n return scrollableAncestors.reduce<Coordinates>((acc, node) => {\n return add(acc, getScrollCoordinates(node));\n }, defaultCoordinates);\n}\n\nexport function getScrollXOffset(scrollableAncestors: Element[]): number {\n return scrollableAncestors.reduce<number>((acc, node) => {\n return acc + getScrollXCoordinate(node);\n }, 0);\n}\n\nexport function getScrollYOffset(scrollableAncestors: Element[]): number {\n return scrollableAncestors.reduce<number>((acc, node) => {\n return acc + getScrollYCoordinate(node);\n }, 0);\n}\n","import type {ClientRect} from '../../types';\nimport {getClientRect} from '../rect/getRect';\nimport {getFirstScrollableAncestor} from './getScrollableAncestors';\n\nexport function scrollIntoViewIfNeeded(\n element: HTMLElement | null | undefined,\n measure: (node: HTMLElement) => ClientRect = getClientRect\n) {\n if (!element) {\n return;\n }\n\n const {top, left, bottom, right} = measure(element);\n const firstScrollableAncestor = getFirstScrollableAncestor(element);\n\n if (!firstScrollableAncestor) {\n return;\n }\n\n if (\n bottom <= 0 ||\n right <= 0 ||\n top >= window.innerHeight ||\n left >= window.innerWidth\n ) {\n element.scrollIntoView({\n block: 'center',\n inline: 'center',\n });\n }\n}\n","import type {ClientRect} from '../../types/rect';\nimport {\n getScrollableAncestors,\n getScrollOffsets,\n getScrollXOffset,\n getScrollYOffset,\n} from '../scroll';\n\nconst properties = [\n ['x', ['left', 'right'], getScrollXOffset],\n ['y', ['top', 'bottom'], getScrollYOffset],\n] as const;\n\nexport class Rect {\n constructor(rect: ClientRect, element: Element) {\n const scrollableAncestors = getScrollableAncestors(element);\n const scrollOffsets = getScrollOffsets(scrollableAncestors);\n\n this.rect = {...rect};\n this.width = rect.width;\n this.height = rect.height;\n\n for (const [axis, keys, getScrollOffset] of properties) {\n for (const key of keys) {\n Object.defineProperty(this, key, {\n get: () => {\n const currentOffsets = getScrollOffset(scrollableAncestors);\n const scrollOffsetsDeltla = scrollOffsets[axis] - currentOffsets;\n\n return this.rect[key] + scrollOffsetsDeltla;\n },\n enumerable: true,\n });\n }\n }\n\n Object.defineProperty(this, 'rect', {enumerable: false});\n }\n\n private rect: ClientRect;\n\n public width: number;\n\n public height: number;\n\n // The below properties are set by the `Object.defineProperty` calls in the constructor\n // @ts-ignore\n public top: number;\n // @ts-ignore\n public bottom: number;\n // @ts-ignore\n public right: number;\n // @ts-ignore\n public left: number;\n}\n","export class Listeners {\n private listeners: [\n string,\n EventListenerOrEventListenerObject,\n AddEventListenerOptions | boolean | undefined\n ][] = [];\n\n constructor(private target: EventTarget | null) {}\n\n public add<T extends Event>(\n eventName: string,\n handler: (event: T) => void,\n options?: AddEventListenerOptions | boolean\n ) {\n this.target?.addEventListener(eventName, handler as EventListener, options);\n this.listeners.push([eventName, handler as EventListener, options]);\n }\n\n public removeAll = () => {\n this.listeners.forEach((listener) =>\n this.target?.removeEventListener(...listener)\n );\n };\n}\n","import {getOwnerDocument, getWindow} from '@dnd-kit/utilities';\n\nexport function getEventListenerTarget(\n target: EventTarget | null\n): EventTarget | Document {\n // If the `event.target` element is removed from the document events will still be targeted\n // at it, and hence won't always bubble up to the window or document anymore.\n // If there is any risk of an element being removed while it is being dragged,\n // the best practice is to attach the event listeners directly to the target.\n // https://developer.mozilla.org/en-US/docs/Web/API/EventTarget\n\n const {EventTarget} = getWindow(target);\n\n return target instanceof EventTarget ? target : getOwnerDocument(target);\n}\n","import type {Coordinates, DistanceMeasurement} from '../../types';\n\nexport function hasExceededDistance(\n delta: Coordinates,\n measurement: DistanceMeasurement\n): boolean {\n const dx = Math.abs(delta.x);\n const dy = Math.abs(delta.y);\n\n if (typeof measurement === 'number') {\n return Math.sqrt(dx ** 2 + dy ** 2) > measurement;\n }\n\n if ('x' in measurement && 'y' in measurement) {\n return dx > measurement.x && dy > measurement.y;\n }\n\n if ('x' in measurement) {\n return dx > measurement.x;\n }\n\n if ('y' in measurement) {\n return dy > measurement.y;\n }\n\n return false;\n}\n","export enum EventName {\n Click = 'click',\n DragStart = 'dragstart',\n Keydown = 'keydown',\n ContextMenu = 'contextmenu',\n Resize = 'resize',\n SelectionChange = 'selectionchange',\n VisibilityChange = 'visibilitychange',\n}\n\nexport function preventDefault(event: Event) {\n event.preventDefault();\n}\n\nexport function stopPropagation(event: Event) {\n event.stopPropagation();\n}\n","import type {Coordinates, UniqueIdentifier} from '../../types';\nimport type {SensorContext} from '../types';\n\nexport enum KeyboardCode {\n Space = 'Space',\n Down = 'ArrowDown',\n Right = 'ArrowRight',\n Left = 'ArrowLeft',\n Up = 'ArrowUp',\n Esc = 'Escape',\n Enter = 'Enter',\n Tab = 'Tab',\n}\n\nexport type KeyboardCodes = {\n start: KeyboardEvent['code'][];\n cancel: KeyboardEvent['code'][];\n end: KeyboardEvent['code'][];\n};\n\nexport type KeyboardCoordinateGetter = (\n event: KeyboardEvent,\n args: {\n active: UniqueIdentifier;\n currentCoordinates: Coordinates;\n context: SensorContext;\n }\n) => Coordinates | void;\n","import {KeyboardCoordinateGetter, KeyboardCode, KeyboardCodes} from './types';\n\nexport const defaultKeyboardCodes: KeyboardCodes = {\n start: [KeyboardCode.Space, KeyboardCode.Enter],\n cancel: [KeyboardCode.Esc],\n end: [KeyboardCode.Space, KeyboardCode.Enter, KeyboardCode.Tab],\n};\n\nexport const defaultKeyboardCoordinateGetter: KeyboardCoordinateGetter = (\n event,\n {currentCoordinates}\n) => {\n switch (event.code) {\n case KeyboardCode.Right:\n return {\n ...currentCoordinates,\n x: currentCoordinates.x + 25,\n };\n case KeyboardCode.Left:\n return {\n ...currentCoordinates,\n x: currentCoordinates.x - 25,\n };\n case KeyboardCode.Down:\n return {\n ...currentCoordinates,\n y: currentCoordinates.y + 25,\n };\n case KeyboardCode.Up:\n return {\n ...currentCoordinates,\n y: currentCoordinates.y - 25,\n };\n }\n\n return undefined;\n};\n","import {\n add as getAdjustedCoordinates,\n subtract as getCoordinatesDelta,\n getOwnerDocument,\n getWindow,\n isKeyboardEvent,\n} from '@dnd-kit/utilities';\n\nimport type {Coordinates} from '../../types';\nimport {\n defaultCoordinates,\n getScrollPosition,\n getScrollElementRect,\n} from '../../utilities';\nimport {scrollIntoViewIfNeeded} from '../../utilities/scroll';\nimport {EventName} from '../events';\nimport {Listeners} from '../utilities';\nimport type {\n Activators,\n SensorInstance,\n SensorProps,\n SensorOptions,\n} from '../types';\n\nimport {KeyboardCoordinateGetter, KeyboardCode, KeyboardCodes} from './types';\nimport {\n defaultKeyboardCodes,\n defaultKeyboardCoordinateGetter,\n} from './defaults';\n\nexport interface KeyboardSensorOptions extends SensorOptions {\n keyboardCodes?: KeyboardCodes;\n coordinateGetter?: KeyboardCoordinateGetter;\n scrollBehavior?: ScrollBehavior;\n onActivation?({event}: {event: KeyboardEvent}): void;\n}\n\nexport type KeyboardSensorProps = SensorProps<KeyboardSensorOptions>;\n\nexport class KeyboardSensor implements SensorInstance {\n public autoScrollEnabled = false;\n private referenceCoordinates: Coordinates | undefined;\n private listeners: Listeners;\n private windowListeners: Listeners;\n\n constructor(private props: KeyboardSensorProps) {\n const {\n event: {target},\n } = props;\n\n this.props = props;\n this.listeners = new Listeners(getOwnerDocument(target));\n this.windowListeners = new Listeners(getWindow(target));\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n\n this.attach();\n }\n\n private attach() {\n this.handleStart();\n\n this.windowListeners.add(EventName.Resize, this.handleCancel);\n this.windowListeners.add(EventName.VisibilityChange, this.handleCancel);\n\n setTimeout(() => this.listeners.add(EventName.Keydown, this.handleKeyDown));\n }\n\n private handleStart() {\n const {activeNode, onStart} = this.props;\n const node = activeNode.node.current;\n\n if (node) {\n scrollIntoViewIfNeeded(node);\n }\n\n onStart(defaultCoordinates);\n }\n\n private handleKeyDown(event: Event) {\n if (isKeyboardEvent(event)) {\n const {active, context, options} = this.props;\n const {\n keyboardCodes = defaultKeyboardCodes,\n coordinateGetter = defaultKeyboardCoordinateGetter,\n scrollBehavior = 'smooth',\n } = options;\n const {code} = event;\n\n if (keyboardCodes.end.includes(code)) {\n this.handleEnd(event);\n return;\n }\n\n if (keyboardCodes.cancel.includes(code)) {\n this.handleCancel(event);\n return;\n }\n\n const {collisionRect} = context.current;\n const currentCoordinates = collisionRect\n ? {x: collisionRect.left, y: collisionRect.top}\n : defaultCoordinates;\n\n if (!this.referenceCoordinates) {\n this.referenceCoordinates = currentCoordinates;\n }\n\n const newCoordinates = coordinateGetter(event, {\n active,\n context: context.current,\n currentCoordinates,\n });\n\n if (newCoordinates) {\n const coordinatesDelta = getCoordinatesDelta(\n newCoordinates,\n currentCoordinates\n );\n const scrollDelta = {\n x: 0,\n y: 0,\n };\n const {scrollableAncestors} = context.current;\n\n for (const scrollContainer of scrollableAncestors) {\n const direction = event.code;\n const {isTop, isRight, isLeft, isBottom, maxScroll, minScroll} =\n getScrollPosition(scrollContainer);\n const scrollElementRect = getScrollElementRect(scrollContainer);\n\n const clampedCoordinates = {\n x: Math.min(\n direction === KeyboardCode.Right\n ? scrollElementRect.right - scrollElementRect.width / 2\n : scrollElementRect.right,\n Math.max(\n direction === KeyboardCode.Right\n ? scrollElementRect.left\n : scrollElementRect.left + scrollElementRect.width / 2,\n newCoordinates.x\n )\n ),\n y: Math.min(\n direction === KeyboardCode.Down\n ? scrollElementRect.bottom - scrollElementRect.height / 2\n : scrollElementRect.bottom,\n Math.max(\n direction === KeyboardCode.Down\n ? scrollElementRect.top\n : scrollElementRect.top + scrollElementRect.height / 2,\n newCoordinates.y\n )\n ),\n };\n\n const canScrollX =\n (direction === KeyboardCode.Right && !isRight) ||\n (direction === KeyboardCode.Left && !isLeft);\n const canScrollY =\n (direction === KeyboardCode.Down && !isBottom) ||\n (direction === KeyboardCode.Up && !isTop);\n\n if (canScrollX && clampedCoordinates.x !== newCoordinates.x) {\n const newScrollCoordinates =\n scrollContainer.scrollLeft + coordinatesDelta.x;\n const canScrollToNewCoordinates =\n (direction === KeyboardCode.Right &&\n newScrollCoordinates <= maxScroll.x) ||\n (direction === KeyboardCode.Left &&\n newScrollCoordinates >= minScroll.x);\n\n if (canScrollToNewCoordinates && !coordinatesDelta.y) {\n // We don't need to update coordinates, the scroll adjustment alone will trigger\n // logic to auto-detect the new container we are over\n scrollContainer.scrollTo({\n left: newScrollCoordinates,\n behavior: scrollBehavior,\n });\n return;\n }\n\n if (canScrollToNewCoordinates) {\n scrollDelta.x = scrollContainer.scrollLeft - newScrollCoordinates;\n } else {\n scrollDelta.x =\n direction === KeyboardCode.Right\n ? scrollContainer.scrollLeft - maxScroll.x\n : scrollContainer.scrollLeft - minScroll.x;\n }\n\n if (scrollDelta.x) {\n scrollContainer.scrollBy({\n left: -scrollDelta.x,\n behavior: scrollBehavior,\n });\n }\n break;\n } else if (canScrollY && clampedCoordinates.y !== newCoordinates.y) {\n const newScrollCoordinates =\n scrollContainer.scrollTop + coordinatesDelta.y;\n const canScrollToNewCoordinates =\n (direction === KeyboardCode.Down &&\n newScrollCoordinates <= maxScroll.y) ||\n (direction === KeyboardCode.Up &&\n newScrollCoordinates >= minScroll.y);\n\n if (canScrollToNewCoordinates && !coordinatesDelta.x) {\n // We don't need to update coordinates, the scroll adjustment alone will trigger\n // logic to auto-detect the new container we are over\n scrollContainer.scrollTo({\n top: newScrollCoordinates,\n behavior: scrollBehavior,\n });\n return;\n }\n\n if (canScrollToNewCoordinates) {\n scrollDelta.y = scrollContainer.scrollTop - newScrollCoordinates;\n } else {\n scrollDelta.y =\n direction === KeyboardCode.Down\n ? scrollContainer.scrollTop - maxScroll.y\n : scrollContainer.scrollTop - minScroll.y;\n }\n\n if (scrollDelta.y) {\n scrollContainer.scrollBy({\n top: -scrollDelta.y,\n behavior: scrollBehavior,\n });\n }\n\n break;\n }\n }\n\n this.handleMove(\n event,\n getAdjustedCoordinates(\n getCoordinatesDelta(newCoordinates, this.referenceCoordinates),\n scrollDelta\n )\n );\n }\n }\n }\n\n private handleMove(event: Event, coordinates: Coordinates) {\n const {onMove} = this.props;\n\n event.preventDefault();\n onMove(coordinates);\n }\n\n private handleEnd(event: Event) {\n const {onEnd} = this.props;\n\n event.preventDefault();\n this.detach();\n onEnd();\n }\n\n private handleCancel(event: Event) {\n const {onCancel} = this.props;\n\n event.preventDefault();\n this.detach();\n onCancel();\n }\n\n private detach() {\n this.listeners.removeAll();\n this.windowListeners.removeAll();\n }\n\n static activators: Activators<KeyboardSensorOptions> = [\n {\n eventName: 'onKeyDown' as const,\n handler: (\n event: React.KeyboardEvent,\n {keyboardCodes = defaultKeyboardCodes, onActivation},\n {active}\n ) => {\n const {code} = event.nativeEvent;\n\n if (keyboardCodes.start.includes(code)) {\n const activator = active.activatorNode.current;\n\n if (activator && event.target !== activator) {\n return false;\n }\n\n event.preventDefault();\n\n onActivation?.({event: event.nativeEvent});\n\n return true;\n }\n\n return false;\n },\n },\n ];\n}\n","import {\n subtract as getCoordinatesDelta,\n getEventCoordinates,\n getOwnerDocument,\n getWindow,\n} from '@dnd-kit/utilities';\n\nimport {defaultCoordinates} from '../../utilities';\nimport {\n getEventListenerTarget,\n hasExceededDistance,\n Listeners,\n} from '../utilities';\nimport {EventName, preventDefault, stopPropagation} from '../events';\nimport {KeyboardCode} from '../keyboard';\nimport type {SensorInstance, SensorProps, SensorOptions} from '../types';\nimport type {Coordinates, DistanceMeasurement} from '../../types';\n\ninterface DistanceConstraint {\n distance: DistanceMeasurement;\n tolerance?: DistanceMeasurement;\n}\n\ninterface DelayConstraint {\n delay: number;\n tolerance: DistanceMeasurement;\n}\n\ninterface EventDescriptor {\n name: keyof DocumentEventMap;\n passive?: boolean;\n}\n\nexport interface PointerEventHandlers {\n cancel?: EventDescriptor;\n move: EventDescriptor;\n end: EventDescriptor;\n}\n\nexport type PointerActivationConstraint =\n | DelayConstraint\n | DistanceConstraint\n | (DelayConstraint & DistanceConstraint);\n\nfunction isDistanceConstraint(\n constraint: PointerActivationConstraint\n): constraint is PointerActivationConstraint & DistanceConstraint {\n return Boolean(constraint && 'distance' in constraint);\n}\n\nfunction isDelayConstraint(\n constraint: PointerActivationConstraint\n): constraint is DelayConstraint {\n return Boolean(constraint && 'delay' in constraint);\n}\n\nexport interface AbstractPointerSensorOptions extends SensorOptions {\n activationConstraint?: PointerActivationConstraint;\n bypassActivationConstraint?(\n props: Pick<AbstractPointerSensorProps, 'activeNode' | 'event' | 'options'>\n ): boolean;\n onActivation?({event}: {event: Event}): void;\n}\n\nexport type AbstractPointerSensorProps =\n SensorProps<AbstractPointerSensorOptions>;\n\nexport class AbstractPointerSensor implements SensorInstance {\n public autoScrollEnabled = true;\n private document: Document;\n private activated: boolean = false;\n private initialCoordinates: Coordinates;\n private timeoutId: NodeJS.Timeout | null = null;\n private listeners: Listeners;\n private documentListeners: Listeners;\n private windowListeners: Listeners;\n\n constructor(\n private props: AbstractPointerSensorProps,\n private events: PointerEventHandlers,\n listenerTarget = getEventListenerTarget(props.event.target)\n ) {\n const {event} = props;\n const {target} = event;\n\n this.props = props;\n this.events = events;\n this.document = getOwnerDocument(target);\n this.documentListeners = new Listeners(this.document);\n this.listeners = new Listeners(listenerTarget);\n this.windowListeners = new Listeners(getWindow(target));\n this.initialCoordinates = getEventCoordinates(event) ?? defaultCoordinates;\n this.handleStart = this.handleStart.bind(this);\n this.handleMove = this.handleMove.bind(this);\n this.handleEnd = this.handleEnd.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleKeydown = this.handleKeydown.bind(this);\n this.removeTextSelection = this.removeTextSelection.bind(this);\n\n this.attach();\n }\n\n private attach() {\n const {\n events,\n props: {\n options: {activationConstraint, bypassActivationConstraint},\n },\n } = this;\n\n this.listeners.add(events.move.name, this.handleMove, {passive: false});\n this.listeners.add(events.end.name, this.handleEnd);\n\n if (events.cancel) {\n this.listeners.add(events.cancel.name, this.handleCancel);\n }\n\n this.windowListeners.add(EventName.Resize, this.handleCancel);\n this.windowListeners.add(EventName.DragStart, preventDefault);\n this.windowListeners.add(EventName.VisibilityChange, this.handleCancel);\n this.windowListeners.add(EventName.ContextMenu, preventDefault);\n this.documentListeners.add(EventName.Keydown, this.handleKeydown);\n\n if (activationConstraint) {\n if (\n bypassActivationConstraint?.({\n event: this.props.event,\n activeNode: this.props.activeNode,\n options: this.props.options,\n })\n ) {\n return this.handleStart();\n }\n\n if (isDelayConstraint(activationConstraint)) {\n this.timeoutId = setTimeout(\n this.handleStart,\n activationConstraint.delay\n );\n this.handlePending(activationConstraint);\n return;\n }\n\n if (isDistanceConstraint(activationConstraint)) {\n this.handlePending(activationConstraint);\n return;\n }\n }\n\n this.handleStart();\n }\n\n private detach() {\n this.listeners.removeAll();\n this.windowListeners.removeAll();\n\n // Wait until the next event loop before removing document listeners\n // This is necessary because we listen for `click` and `selection` events on the document\n setTimeout(this.documentListeners.removeAll, 50);\n\n if (this.timeoutId !== null) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n }\n\n private handlePending(\n constraint: PointerActivationConstraint,\n offset?: Coordinates | undefined\n ): void {\n const {active, onPending} = this.props;\n onPending(active, constraint, this.initialCoordinates, offset);\n }\n\n private handleStart() {\n const {initialCoordinates} = this;\n const {onStart} = this.props;\n\n if (initialCoordinates) {\n this.activated = true;\n\n // Stop propagation of click events once activation constraints are met\n this.documentListeners.add(EventName.Click, stopPropagation, {\n capture: true,\n });\n\n // Remove any text selection from the document\n this.removeTextSelection();\n\n // Prevent further text selection while dragging\n this.documentListeners.add(\n EventName.SelectionChange,\n this.removeTextSelection\n );\n\n onStart(initialCoordinates);\n }\n }\n\n private handleMove(event: Event) {\n const {activated, initialCoordinates, props} = this;\n const {\n onMove,\n options: {activationConstraint},\n } = props;\n\n if (!initialCoordinates) {\n return;\n }\n\n const coordinates = getEventCoordinates(event) ?? defaultCoordinates;\n const delta = getCoordinatesDelta(initialCoordinates, coordinates);\n\n // Constraint validation\n if (!activated && activationConstraint) {\n if (isDistanceConstraint(activationConstraint)) {\n if (\n activationConstraint.tolerance != null &&\n hasExceededDistance(delta, activationConstraint.tolerance)\n ) {\n return this.handleCancel();\n }\n\n if (hasExceededDistance(delta, activationConstraint.distance)) {\n return this.handleStart();\n }\n }\n\n if (isDelayConstraint(activationConstraint)) {\n if (hasExceededDistance(delta, activationConstraint.tolerance)) {\n return this.handleCancel();\n }\n }\n\n this.handlePending(activationConstraint, delta);\n return;\n }\n\n if (event.cancelable) {\n event.preventDefault();\n }\n\n onMove(coordinates);\n }\n\n private handleEnd() {\n const {onAbort, onEnd} = this.props;\n\n this.detach();\n if (!this.activated) {\n onAbort(this.props.active);\n }\n onEnd();\n }\n\n private handleCancel() {\n const {onAbort, onCancel} = this.props;\n\n this.detach();\n if (!this.activated) {\n onAbort(this.props.active);\n }\n onCancel();\n }\n\n private handleKeydown(event: KeyboardEvent) {\n if (event.code === KeyboardCode.Esc) {\n this.handleCancel();\n }\n }\n\n private removeTextSelection() {\n this.document.getSelection()?.removeAllRanges();\n }\n}\n","import type {PointerEvent} from 'react';\nimport {getOwnerDocument} from '@dnd-kit/utilities';\n\nimport type {SensorProps} from '../types';\nimport {\n AbstractPointerSensor,\n AbstractPointerSensorOptions,\n PointerEventHandlers,\n} from './AbstractPointerSensor';\n\nconst events: PointerEventHandlers = {\n cancel: {name: 'pointercancel'},\n move: {name: 'pointermove'},\n end: {name: 'pointerup'},\n};\n\nexport interface PointerSensorOptions extends AbstractPointerSensorOptions {}\n\nexport type PointerSensorProps = SensorProps<PointerSensorOptions>;\n\nexport class PointerSensor extends AbstractPointerSensor {\n constructor(props: PointerSensorProps) {\n const {event} = props;\n // Pointer events stop firing if the target is unmounted while dragging\n // Therefore we attach listeners to the owner document instead\n const listenerTarget = getOwnerDocument(event.target);\n\n super(props, events, listenerTarget);\n }\n\n static activators = [\n {\n eventName: 'onPointerDown' as const,\n handler: (\n {nativeEvent: event}: PointerEvent,\n {onActivation}: PointerSensorOptions\n ) => {\n if (!event.isPrimary || event.button !== 0) {\n return false;\n }\n\n onActivation?.({event});\n\n return true;\n },\n },\n ];\n}\n","import type {MouseEvent} from 'react';\nimport {getOwnerDocument} from '@dnd-kit/utilities';\n\nimport type {SensorProps} from '../types';\nimport {\n AbstractPointerSensor,\n PointerEventHandlers,\n AbstractPointerSensorOptions,\n} from '../pointer';\n\nconst events: PointerEventHandlers = {\n move: {name: 'mousemove'},\n end: {name: 'mouseup'},\n};\n\nenum MouseButton {\n RightClick = 2,\n}\n\nexport interface MouseSensorOptions extends AbstractPointerSensorOptions {}\n\nexport type MouseSensorProps = SensorProps<MouseSensorOptions>;\n\nexport class MouseSensor extends AbstractPointerSensor {\n constructor(props: MouseSensorProps) {\n super(props, events, getOwnerDocument(props.event.target));\n }\n\n static activators = [\n {\n eventName: 'onMouseDown' as const,\n handler: (\n {nativeEvent: event}: MouseEvent,\n {onActivation}: MouseSensorOptions\n ) => {\n if (event.button === MouseButton.RightClick) {\n return false;\n }\n\n onActivation?.({event});\n\n return true;\n },\n },\n ];\n}\n","import type {TouchEvent} from 'react';\n\nimport {\n AbstractPointerSensor,\n PointerSensorProps,\n PointerEventHandlers,\n PointerSensorOptions,\n} from '../pointer';\nimport type {SensorProps} from '../types';\n\nconst events: PointerEventHandlers = {\n cancel: {name: 'touchcancel'},\n move: {name: 'touchmove'},\n end: {name: 'touchend'},\n};\n\nexport interface TouchSensorOptions extends PointerSensorOptions {}\n\nexport type TouchSensorProps = SensorProps<TouchSensorOptions>;\n\nexport class TouchSensor extends AbstractPointerSensor {\n constructor(props: PointerSensorProps) {\n super(props, events);\n }\n\n static activators = [\n {\n eventName: 'onTouchStart' as const,\n handler: (\n {nativeEvent: event}: TouchEvent,\n {onActivation}: TouchSensorOptions\n ) => {\n const {touches} = event;\n\n if (touches.length > 1) {\n return false;\n }\n\n onActivation?.({event});\n\n return true;\n },\n },\n ];\n\n static setup() {\n // Adding a non-capture and non-passive `touchmove` listener in order\n // to force `event.preventDefault()` calls to work in dynamically added\n // touchmove event handlers. This is required for iOS Safari.\n window.addEventListener(events.move.name, noop, {\n capture: false,\n passive: false,\n });\n\n return function teardown() {\n window.removeEventListener(events.move.name, noop);\n };\n\n // We create a new handler because the teardown function of another sensor\n // could remove our event listener if we use a referentially equal listener.\n function noop() {}\n }\n}\n","import {useCallback, useEffect, useMemo, useRef} from 'react';\nimport {useInterval, useLazyMemo, usePrevious} from '@dnd-kit/utilities';\n\nimport {getScrollDirectionAndSpeed} from '../../utilities';\nimport {Direction} from '../../types';\nimport type {Coordinates, ClientRect} from '../../types';\n\nexport type ScrollAncestorSortingFn = (ancestors: Element[]) => Element[];\n\nexport enum AutoScrollActivator {\n Pointer,\n DraggableRect,\n}\n\nexport interface Options {\n acceleration?: number;\n activator?: AutoScrollActivator;\n canScroll?: CanScroll;\n enabled?: boolean;\n interval?: number;\n layoutShiftCompensation?:\n | boolean\n | {\n x: boolean;\n y: boolean;\n };\n order?: TraversalOrder;\n threshold?: {\n x: number;\n y: number;\n };\n}\n\ninterface Arguments extends Options {\n draggingRect: ClientRect | null;\n enabled: boolean;\n pointerCoordinates: Coordinates | null;\n scrollableAncestors: Element[];\n scrollableAncestorRects: ClientRect[];\n delta: Coordinates;\n}\n\nexport type CanScroll = (element: Element) => boolean;\n\nexport enum TraversalOrder {\n TreeOrder,\n ReversedTreeOrder,\n}\n\ninterface ScrollDirection {\n x: 0 | Direction;\n y: 0 | Direction;\n}\n\nexport function useAutoScroller({\n acceleration,\n activator = AutoScrollActivator.Pointer,\n canScroll,\n draggingRect,\n enabled,\n interval = 5,\n order = TraversalOrder.TreeOrder,\n pointerCoordinates,\n scrollableAncestors,\n scrollableAncestorRects,\n delta,\n threshold,\n}: Arguments) {\n const scrollIntent = useScrollIntent({delta, disabled: !enabled});\n const [setAutoScrollInterval, clearAutoScrollInterval] = useInterval();\n const scrollSpeed = useRef<Coordinates>({x: 0, y: 0});\n const scrollDirection = useRef<ScrollDirection>({x: 0, y: 0});\n const rect = useMemo(() => {\n switch (activator) {\n case AutoScrollActivator.Pointer:\n return pointerCoordinates\n ? {\n top: pointerCoordinates.y,\n bottom: pointerCoordinates.y,\n left: pointerCoordinates.x,\n right: pointerCoordinates.x,\n }\n : null;\n case AutoScrollActivator.DraggableRect:\n return draggingRect;\n }\n }, [activator, draggingRect, pointerCoordinates]);\n const scrollContainerRef = useRef<Element | null>(null);\n const autoScroll = useCallback(() => {\n const scrollContainer = scrollContainerRef.current;\n\n if (!scrollContainer) {\n return;\n }\n\n const scrollLeft = scrollSpeed.current.x * scrollDirection.current.x;\n const scrollTop = scrollSpeed.current.y * scrollDirection.current.y;\n\n scrollContainer.scrollBy(scrollLeft, scrollTop);\n }, []);\n const sortedScrollableAncestors = useMemo(\n () =>\n order === TraversalOrder.TreeOrder\n ? [...scrollableAncestors].reverse()\n : scrollableAncestors,\n [order, scrollableAncestors]\n );\n\n useEffect(\n () => {\n if (!enabled || !scrollableAncestors.length || !rect) {\n clearAutoScrollInterval();\n return;\n }\n\n for (const scrollContainer of sortedScrollableAncestors) {\n if (canScroll?.(scrollContainer) === false) {\n continue;\n }\n\n const index = scrollableAncestors.indexOf(scrollContainer);\n const scrollContainerRect = scrollableAncestorRects[index];\n\n if (!scrollContainerRect) {\n continue;\n }\n\n const {direction, speed} = getScrollDirectionAndSpeed(\n scrollContainer,\n scrollContainerRect,\n rect,\n acceleration,\n threshold\n );\n\n for (const axis of ['x', 'y'] as const) {\n if (!scrollIntent[axis][direction[axis] as Direction]) {\n speed[axis] = 0;\n direction[axis] = 0;\n }\n }\n\n if (speed.x > 0 || speed.y > 0) {\n clearAutoScrollInterval();\n\n scrollContainerRef.current = scrollContainer;\n setAutoScrollInterval(autoScroll, interval);\n\n scrollSpeed.current = speed;\n scrollDirection.current = direction;\n\n return;\n }\n }\n\n scrollSpeed.current = {x: 0, y: 0};\n scrollDirection.current = {x: 0, y: 0};\n clearAutoScrollInterval();\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n acceleration,\n autoScroll,\n canScroll,\n clearAutoScrollInterval,\n enabled,\n interval,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(rect),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(scrollIntent),\n setAutoScrollInterval,\n scrollableAncestors,\n sortedScrollableAncestors,\n scrollableAncestorRects,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(threshold),\n ]\n );\n}\n\ninterface ScrollIntent {\n x: Record<Direction, boolean>;\n y: Record<Direction, boolean>;\n}\n\nconst defaultScrollIntent: ScrollIntent = {\n x: {[Direction.Backward]: false, [Direction.Forward]: false},\n y: {[Direction.Backward]: false, [Direction.Forward]: false},\n};\n\nfunction useScrollIntent({\n delta,\n disabled,\n}: {\n delta: Coordinates;\n disabled: boolean;\n}): ScrollIntent {\n const previousDelta = usePrevious(delta);\n\n return useLazyMemo<ScrollIntent>(\n (previousIntent) => {\n if (disabled || !previousDelta || !previousIntent) {\n // Reset scroll intent tracking when auto-scrolling is disabled\n return defaultScrollIntent;\n }\n\n const direction = {\n x: Math.sign(delta.x - previousDelta.x),\n y: Math.sign(delta.y - previousDelta.y),\n };\n\n // Keep track of the user intent to scroll in each direction for both axis\n return {\n x: {\n [Direction.Backward]:\n previousIntent.x[Direction.Backward] || direction.x === -1,\n [Direction.Forward]:\n previousIntent.x[Direction.Forward] || direction.x === 1,\n },\n y: {\n [Direction.Backward]:\n previousIntent.y[Direction.Backward] || direction.y === -1,\n [Direction.Forward]:\n previousIntent.y[Direction.Forward] || direction.y === 1,\n },\n };\n },\n [disabled, delta, previousDelta]\n );\n}\n","import {useLazyMemo} from '@dnd-kit/utilities';\n\nimport type {DraggableNode, DraggableNodes} from '../../store';\nimport type {UniqueIdentifier} from '../../types';\n\nexport function useCachedNode(\n draggableNodes: DraggableNodes,\n id: UniqueIdentifier | null\n): DraggableNode['node']['current'] {\n const draggableNode = id != null ? draggableNodes.get(id) : undefined;\n const node = draggableNode ? draggableNode.node.current : null;\n\n return useLazyMemo(\n (cachedNode) => {\n if (id == null) {\n return null;\n }\n\n // In some cases, the draggable node can unmount while dragging\n // This is the case for virtualized lists. In those situations,\n // we fall back to the last known value for that node.\n return node ?? cachedNode ?? null;\n },\n [node, id]\n );\n}\n","import {useMemo} from 'react';\n\nimport type {SensorActivatorFunction, SensorDescriptor} from '../../sensors';\nimport type {\n SyntheticListener,\n SyntheticListeners,\n} from './useSyntheticListeners';\n\nexport function useCombineActivators(\n sensors: SensorDescriptor<any>[],\n getSyntheticHandler: (\n handler: SensorActivatorFunction<any>,\n sensor: SensorDescriptor<any>\n ) => SyntheticListener['handler']\n): SyntheticListeners {\n return useMemo(\n () =>\n sensors.reduce<SyntheticListeners>((accumulator, sensor) => {\n const {sensor: Sensor} = sensor;\n\n const sensorActivators = Sensor.activators.map((activator) => ({\n eventName: activator.eventName,\n handler: getSyntheticHandler(activator.handler, sensor),\n }));\n\n return [...accumulator, ...sensorActivators];\n }, []),\n [sensors, getSyntheticHandler]\n );\n}\n","import {useCallback, useEffect, useRef, useState} from 'react';\nimport {useLatestValue, useLazyMemo} from '@dnd-kit/utilities';\n\nimport {Rect} from '../../utilities/rect';\nimport type {DroppableContainer, RectMap} from '../../store/types';\nimport type {ClientRect, UniqueIdentifier} from '../../types';\n\ninterface Arguments {\n dragging: boolean;\n dependencies: any[];\n config: DroppableMeasuring;\n}\n\nexport enum MeasuringStrategy {\n Always,\n BeforeDragging,\n WhileDragging,\n}\n\nexport enum MeasuringFrequency {\n Optimized = 'optimized',\n}\n\ntype MeasuringFunction = (element: HTMLElement) => ClientRect;\n\nexport interface DroppableMeasuring {\n measure: MeasuringFunction;\n strategy: MeasuringStrategy;\n frequency: MeasuringFrequency | number;\n}\n\nconst defaultValue: RectMap = new Map();\n\nexport function useDroppableMeasuring(\n containers: DroppableContainer[],\n {dragging, dependencies, config}: Arguments\n) {\n const [queue, setQueue] = useState<UniqueIdentifier[] | null>(null);\n const {frequency, measure, strategy} = config;\n const containersRef = useRef(containers);\n const disabled = isDisabled();\n const disabledRef = useLatestValue(disabled);\n const measureDroppableContainers = useCallback(\n (ids: UniqueIdentifier[] = []) => {\n if (disabledRef.current) {\n return;\n }\n\n setQueue((value) => {\n if (value === null) {\n return ids;\n }\n\n return value.concat(ids.filter((id) => !value.includes(id)));\n });\n },\n [disabledRef]\n );\n const timeoutId = useRef<NodeJS.Timeout | null>(null);\n const droppableRects = useLazyMemo<RectMap>(\n (previousValue) => {\n if (disabled && !dragging) {\n return defaultValue;\n }\n\n if (\n !previousValue ||\n previousValue === defaultValue ||\n containersRef.current !== containers ||\n queue != null\n ) {\n const map: RectMap = new Map();\n\n for (let container of containers) {\n if (!container) {\n continue;\n }\n\n if (\n queue &&\n queue.length > 0 &&\n !queue.includes(container.id) &&\n container.rect.current\n ) {\n // This container does not need to be re-measured\n map.set(container.id, container.rect.current);\n continue;\n }\n\n const node = container.node.current;\n const rect = node ? new Rect(measure(node), node) : null;\n\n container.rect.current = rect;\n\n if (rect) {\n map.set(container.id, rect);\n }\n }\n\n return map;\n }\n\n return previousValue;\n },\n [containers, queue, dragging, disabled, measure]\n );\n\n useEffect(() => {\n containersRef.current = containers;\n }, [containers]);\n\n useEffect(\n () => {\n if (disabled) {\n return;\n }\n\n measureDroppableContainers();\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [dragging, disabled]\n );\n\n useEffect(\n () => {\n if (queue && queue.length > 0) {\n setQueue(null);\n }\n },\n //eslint-disable-next-line react-hooks/exhaustive-deps\n [JSON.stringify(queue)]\n );\n\n useEffect(\n () => {\n if (\n disabled ||\n typeof frequency !== 'number' ||\n timeoutId.current !== null\n ) {\n return;\n }\n\n timeoutId.current = setTimeout(() => {\n measureDroppableContainers();\n timeoutId.current = null;\n }, frequency);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [frequency, disabled, measureDroppableContainers, ...dependencies]\n );\n\n return {\n droppableRects,\n measureDroppableContainers,\n measuringScheduled: queue != null,\n };\n\n function isDisabled() {\n switch (strategy) {\n case MeasuringStrategy.Always:\n return false;\n case MeasuringStrategy.BeforeDragging:\n return dragging;\n default:\n return !dragging;\n }\n }\n}\n","import {useLazyMemo} from '@dnd-kit/utilities';\n\ntype AnyFunction = (...args: any) => any;\n\nexport function useInitialValue<\n T,\n U extends AnyFunction | undefined = undefined\n>(\n value: T | null,\n computeFn?: U\n): U extends AnyFunction ? ReturnType<U> | null : T | null {\n return useLazyMemo(\n (previousValue) => {\n if (!value) {\n return null;\n }\n\n if (previousValue) {\n return previousValue;\n }\n\n return typeof computeFn === 'function' ? computeFn(value) : value;\n },\n [computeFn, value]\n );\n}\n","import type {ClientRect} from '../../types';\nimport {useInitialValue} from './useInitialValue';\n\nexport function useInitialRect(\n node: HTMLElement | null,\n measure: (node: HTMLElement) => ClientRect\n) {\n return useInitialValue(node, measure);\n}\n","import {useEffect, useMemo} from 'react';\nimport {useEvent} from '@dnd-kit/utilities';\n\ninterface Arguments {\n callback: MutationCallback;\n disabled?: boolean;\n}\n\n/**\n * Returns a new MutationObserver instance.\n * If `MutationObserver` is undefined in the execution environment, returns `undefined`.\n */\nexport function useMutationObserver({callback, disabled}: Arguments) {\n const handleMutations = useEvent(callback);\n const mutationObserver = useMemo(() => {\n if (\n disabled ||\n typeof window === 'undefined' ||\n typeof window.MutationObserver === 'undefined'\n ) {\n return undefined;\n }\n\n const {MutationObserver} = window;\n\n return new MutationObserver(handleMutations);\n }, [handleMutations, disabled]);\n\n useEffect(() => {\n return () => mutationObserver?.disconnect();\n }, [mutationObserver]);\n\n return mutationObserver;\n}\n","import {useEffect, useMemo} from 'react';\nimport {useEvent} from '@dnd-kit/utilities';\n\ninterface Arguments {\n callback: ResizeObserverCallback;\n disabled?: boolean;\n}\n\n/**\n * Returns a new ResizeObserver instance bound to the `onResize` callback.\n * If `ResizeObserver` is undefined in the execution environment, returns `undefined`.\n */\nexport function useResizeObserver({callback, disabled}: Arguments) {\n const handleResize = useEvent(callback);\n const resizeObserver = useMemo(\n () => {\n if (\n disabled ||\n typeof window === 'undefined' ||\n typeof window.ResizeObserver === 'undefined'\n ) {\n return undefined;\n }\n\n const {ResizeObserver} = window;\n\n return new ResizeObserver(handleResize);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [disabled]\n );\n\n useEffect(() => {\n return () => resizeObserver?.disconnect();\n }, [resizeObserver]);\n\n return resizeObserver;\n}\n","import {useState} from 'react';\nimport {useIsomorphicLayoutEffect} from '@dnd-kit/utilities';\n\nimport type {ClientRect} from '../../types';\nimport {getClientRect, Rect} from '../../utilities';\n\nimport {useMutationObserver} from './useMutationObserver';\nimport {useResizeObserver} from './useResizeObserver';\n\nfunction defaultMeasure(element: HTMLElement) {\n return new Rect(getClientRect(element), element);\n}\n\nexport function useRect(\n element: HTMLElement | null,\n measure: (element: HTMLElement) => ClientRect = defaultMeasure,\n fallbackRect?: ClientRect | null\n) {\n const [rect, setRect] = useState<ClientRect | null>(null);\n\n function measureRect() {\n setRect((currentRect): ClientRect | null => {\n if (!element) {\n return null;\n }\n \n if (element.isConnected === false) {\n // Fall back to last rect we measured if the element is\n // no longer connected to the DOM.\n return currentRect ?? fallbackRect ?? null;\n }\n \n const newRect = measure(element);\n \n if (JSON.stringify(currentRect) === JSON.stringify(newRect)) {\n return currentRect;\n }\n \n return newRect;\n });\n }\n \n const mutationObserver = useMutationObserver({\n callback(records) {\n if (!element) {\n return;\n }\n\n for (const record of records) {\n const {type, target} = record;\n\n if (\n type === 'childList' &&\n target instanceof HTMLElement &&\n target.contains(element)\n ) {\n measureRect();\n break;\n }\n }\n },\n });\n const resizeObserver = useResizeObserver({callback: measureRect});\n\n useIsomorphicLayoutEffect(() => {\n measureRect();\n\n if (element) {\n resizeObserver?.observe(element);\n mutationObserver?.observe(document.body, {\n childList: true,\n subtree: true,\n });\n } else {\n resizeObserver?.disconnect();\n mutationObserver?.disconnect();\n }\n }, [element]);\n\n return rect;\n}\n","import type {ClientRect} from '../../types';\nimport {getRectDelta} from '../../utilities';\n\nimport {useInitialValue} from './useInitialValue';\n\nexport function useRectDelta(rect: ClientRect | null) {\n const initialRect = useInitialValue(rect);\n\n return getRectDelta(rect, initialRect);\n}\n","import {useEffect, useRef} from 'react';\nimport {useLazyMemo} from '@dnd-kit/utilities';\n\nimport {getScrollableAncestors} from '../../utilities';\n\nconst defaultValue: Element[] = [];\n\nexport function useScrollableAncestors(node: HTMLElement | null) {\n const previousNode = useRef(node);\n\n const ancestors = useLazyMemo<Element[]>(\n (previousValue) => {\n if (!node) {\n return defaultValue;\n }\n\n if (\n previousValue &&\n previousValue !== defaultValue &&\n node &&\n previousNode.current &&\n node.parentNode === previousNode.current.parentNode\n ) {\n return previousValue;\n }\n\n return getScrollableAncestors(node);\n },\n [node]\n );\n\n useEffect(() => {\n previousNode.current = node;\n }, [node]);\n\n return ancestors;\n}\n","import {useState, useCallback, useMemo, useRef, useEffect} from 'react';\nimport {add} from '@dnd-kit/utilities';\n\nimport {\n defaultCoordinates,\n getScrollableElement,\n getScrollCoordinates,\n getScrollOffsets,\n} from '../../utilities';\nimport type {Coordinates} from '../../types';\n\ntype ScrollCoordinates = Map<HTMLElement | Window, Coordinates>;\n\nexport function useScrollOffsets(elements: Element[]): Coordinates {\n const [\n scrollCoordinates,\n setScrollCoordinates,\n ] = useState<ScrollCoordinates | null>(null);\n const prevElements = useRef(elements);\n\n // To-do: Throttle the handleScroll callback\n const handleScroll = useCallback((event: Event) => {\n const scrollingElement = getScrollableElement(event.target);\n\n if (!scrollingElement) {\n return;\n }\n\n setScrollCoordinates((scrollCoordinates) => {\n if (!scrollCoordinates) {\n return null;\n }\n\n scrollCoordinates.set(\n scrollingElement,\n getScrollCoordinates(scrollingElement)\n );\n\n return new Map(scrollCoordinates);\n });\n }, []);\n\n useEffect(() => {\n const previousElements = prevElements.current;\n\n if (elements !== previousElements) {\n cleanup(previousElements);\n\n const entries = elements\n .map((element) => {\n const scrollableElement = getScrollableElement(element);\n\n if (scrollableElement) {\n scrollableElement.addEventListener('scroll', handleScroll, {\n passive: true,\n });\n\n return [\n scrollableElement,\n getScrollCoordinates(scrollableElement),\n ] as const;\n }\n\n return null;\n })\n .filter(\n (\n entry\n ): entry is [\n HTMLElement | (Window & typeof globalThis),\n Coordinates\n ] => entry != null\n );\n\n setScrollCoordinates(entries.length ? new Map(entries) : null);\n\n prevElements.current = elements;\n }\n\n return () => {\n cleanup(elements);\n cleanup(previousElements);\n };\n\n function cleanup(elements: Element[]) {\n elements.forEach((element) => {\n const scrollableElement = getScrollableElement(element);\n\n scrollableElement?.removeEventListener('scroll', handleScroll);\n });\n }\n }, [handleScroll, elements]);\n\n return useMemo(() => {\n if (elements.length) {\n return scrollCoordinates\n ? Array.from(scrollCoordinates.values()).reduce(\n (acc, coordinates) => add(acc, coordinates),\n defaultCoordinates\n )\n : getScrollOffsets(elements);\n }\n\n return defaultCoordinates;\n }, [elements, scrollCoordinates]);\n}\n","import {useEffect, useRef} from 'react';\nimport {Coordinates, subtract} from '@dnd-kit/utilities';\n\nimport {defaultCoordinates} from '../../utilities';\n\nexport function useScrollOffsetsDelta(\n scrollOffsets: Coordinates,\n dependencies: any[] = []\n) {\n const initialScrollOffsets = useRef<Coordinates | null>(null);\n\n useEffect(\n () => {\n initialScrollOffsets.current = null;\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n dependencies\n );\n\n useEffect(() => {\n const hasScrollOffsets = scrollOffsets !== defaultCoordinates;\n\n if (hasScrollOffsets && !initialScrollOffsets.current) {\n initialScrollOffsets.current = scrollOffsets;\n }\n\n if (!hasScrollOffsets && initialScrollOffsets.current) {\n initialScrollOffsets.current = null;\n }\n }, [scrollOffsets]);\n\n return initialScrollOffsets.current\n ? subtract(scrollOffsets, initialScrollOffsets.current)\n : defaultCoordinates;\n}\n","import {useEffect} from 'react';\nimport {canUseDOM} from '@dnd-kit/utilities';\n\nimport type {SensorDescriptor} from '../../sensors';\n\nexport function useSensorSetup(sensors: SensorDescriptor<any>[]) {\n useEffect(\n () => {\n if (!canUseDOM) {\n return;\n }\n\n const teardownFns = sensors.map(({sensor}) => sensor.setup?.());\n\n return () => {\n for (const teardown of teardownFns) {\n teardown?.();\n }\n };\n },\n // TO-DO: Sensors length could theoretically change which would not be a valid dependency\n // eslint-disable-next-line react-hooks/exhaustive-deps\n sensors.map(({sensor}) => sensor)\n );\n}\n","import {useMemo} from 'react';\n\nimport type {SyntheticEventName, UniqueIdentifier} from '../../types';\n\nexport type SyntheticListener = {\n eventName: SyntheticEventName;\n handler: (event: React.SyntheticEvent, id: UniqueIdentifier) => void;\n};\n\nexport type SyntheticListeners = SyntheticListener[];\n\nexport type SyntheticListenerMap = Record<string, Function>;\n\nexport function useSyntheticListeners(\n listeners: SyntheticListeners,\n id: UniqueIdentifier\n): SyntheticListenerMap {\n return useMemo(() => {\n return listeners.reduce<SyntheticListenerMap>(\n (acc, {eventName, handler}) => {\n acc[eventName] = (event: React.SyntheticEvent) => {\n handler(event, id);\n };\n\n return acc;\n },\n {} as SyntheticListenerMap\n );\n }, [listeners, id]);\n}\n","import {useMemo} from 'react';\n\nimport {getWindowClientRect} from '../../utilities/rect';\n\nexport function useWindowRect(element: typeof window | null) {\n return useMemo(() => (element ? getWindowClientRect(element) : null), [\n element,\n ]);\n}\n","import {useState} from 'react';\nimport {getWindow, useIsomorphicLayoutEffect} from '@dnd-kit/utilities';\n\nimport type {ClientRect} from '../../types';\nimport {Rect, getClientRect} from '../../utilities/rect';\nimport {isDocumentScrollingElement} from '../../utilities';\n\nimport {useResizeObserver} from './useResizeObserver';\nimport {useWindowRect} from './useWindowRect';\n\nconst defaultValue: Rect[] = [];\n\nexport function useRects(\n elements: Element[],\n measure: (element: Element) => ClientRect = getClientRect\n): ClientRect[] {\n const [firstElement] = elements;\n const windowRect = useWindowRect(\n firstElement ? getWindow(firstElement) : null\n );\n const [rects, setRects] = useState<ClientRect[]>(defaultValue);\n\n function measureRects() {\n setRects(() => {\n if (!elements.length) {\n return defaultValue;\n }\n\n return elements.map((element) =>\n isDocumentScrollingElement(element)\n ? (windowRect as ClientRect)\n : new Rect(measure(element), element)\n );\n });\n }\n\n const resizeObserver = useResizeObserver({callback: measureRects});\n\n useIsomorphicLayoutEffect(() => {\n resizeObserver?.disconnect();\n measureRects();\n elements.forEach((element) => resizeObserver?.observe(element));\n }, [elements]);\n\n return rects;\n}\n","import {isHTMLElement} from '@dnd-kit/utilities';\n\nexport function getMeasurableNode(\n node: HTMLElement | undefined | null\n): HTMLElement | null {\n if (!node) {\n return null;\n }\n\n if (node.children.length > 1) {\n return node;\n }\n const firstChild = node.children[0];\n\n return isHTMLElement(firstChild) ? firstChild : node;\n}\n","import {useMemo, useCallback, useState} from 'react';\nimport {isHTMLElement, useNodeRef} from '@dnd-kit/utilities';\n\nimport {useResizeObserver} from './useResizeObserver';\nimport {getMeasurableNode} from '../../utilities/nodes';\nimport type {PublicContextDescriptor} from '../../store';\nimport type {ClientRect} from '../../types';\n\ninterface Arguments {\n measure(element: HTMLElement): ClientRect;\n}\n\nexport function useDragOverlayMeasuring({\n measure,\n}: Arguments): PublicContextDescriptor['dragOverlay'] {\n const [rect, setRect] = useState<ClientRect | null>(null);\n const handleResize = useCallback(\n (entries: ResizeObserverEntry[]) => {\n for (const {target} of entries) {\n if (isHTMLElement(target)) {\n setRect((rect) => {\n const newRect = measure(target);\n\n return rect\n ? {...rect, width: newRect.width, height: newRect.height}\n : newRect;\n });\n break;\n }\n }\n },\n [measure]\n );\n const resizeObserver = useResizeObserver({callback: handleResize});\n const handleNodeChange = useCallback(\n (element) => {\n const node = getMeasurableNode(element);\n\n resizeObserver?.disconnect();\n\n if (node) {\n resizeObserver?.observe(node);\n }\n\n setRect(node ? measure(node) : null);\n },\n [measure, resizeObserver]\n );\n const [nodeRef, setRef] = useNodeRef(handleNodeChange);\n\n return useMemo(\n () => ({\n nodeRef,\n rect,\n setRef,\n }),\n [rect, nodeRef, setRef]\n );\n}\n","import type {DeepRequired} from '@dnd-kit/utilities';\n\nimport type {DataRef} from '../../store/types';\nimport {KeyboardSensor, PointerSensor} from '../../sensors';\nimport {MeasuringStrategy, MeasuringFrequency} from '../../hooks/utilities';\nimport {\n getClientRect,\n getTransformAgnosticClientRect,\n} from '../../utilities/rect';\n\nimport type {MeasuringConfiguration} from './types';\n\nexport const defaultSensors = [\n {sensor: PointerSensor, options: {}},\n {sensor: KeyboardSensor, options: {}},\n];\n\nexport const defaultData: DataRef = {current: {}};\n\nexport const defaultMeasuringConfiguration: DeepRequired<MeasuringConfiguration> = {\n draggable: {\n measure: getTransformAgnosticClientRect,\n },\n droppable: {\n measure: getTransformAgnosticClientRect,\n strategy: MeasuringStrategy.WhileDragging,\n frequency: MeasuringFrequency.Optimized,\n },\n dragOverlay: {\n measure: getClientRect,\n },\n};\n","import type {UniqueIdentifier} from '../types';\nimport type {DroppableContainer} from './types';\n\ntype Identifier = UniqueIdentifier | null | undefined;\n\nexport class DroppableContainersMap extends Map<\n UniqueIdentifier,\n DroppableContainer\n> {\n get(id: Identifier) {\n return id != null ? super.get(id) ?? undefined : undefined;\n }\n\n toArray(): DroppableContainer[] {\n return Array.from(this.values());\n }\n\n getEnabled(): DroppableContainer[] {\n return this.toArray().filter(({disabled}) => !disabled);\n }\n\n getNodeFor(id: Identifier) {\n return this.get(id)?.node.current ?? undefined;\n }\n}\n","import {createContext} from 'react';\n\nimport {noop} from '../utilities/other';\nimport {defaultMeasuringConfiguration} from '../components/DndContext/defaults';\nimport {DroppableContainersMap} from './constructors';\nimport type {InternalContextDescriptor, PublicContextDescriptor} from './types';\n\nexport const defaultPublicContext: PublicContextDescriptor = {\n activatorEvent: null,\n active: null,\n activeNode: null,\n activeNodeRect: null,\n collisions: null,\n containerNodeRect: null,\n draggableNodes: new Map(),\n droppableRects: new Map(),\n droppableContainers: new DroppableContainersMap(),\n over: null,\n dragOverlay: {\n nodeRef: {\n current: null,\n },\n rect: null,\n setRef: noop,\n },\n scrollableAncestors: [],\n scrollableAncestorRects: [],\n measuringConfiguration: defaultMeasuringConfiguration,\n measureDroppableContainers: noop,\n windowRect: null,\n measuringScheduled: false,\n};\n\nexport const defaultInternalContext: InternalContextDescriptor = {\n activatorEvent: null,\n activators: [],\n active: null,\n activeNodeRect: null,\n ariaDescribedById: {\n draggable: '',\n },\n dispatch: noop,\n draggableNodes: new Map(),\n over: null,\n measureDroppableContainers: noop,\n};\n\nexport const InternalContext = createContext<InternalContextDescriptor>(\n defaultInternalContext\n);\n\nexport const PublicContext = createContext<PublicContextDescriptor>(\n defaultPublicContext\n);\n","import {Action, Actions} from './actions';\nimport {DroppableContainersMap} from './constructors';\nimport type {State} from './types';\n\nexport function getInitialState(): State {\n return {\n draggable: {\n active: null,\n initialCoordinates: {x: 0, y: 0},\n nodes: new Map(),\n translate: {x: 0, y: 0},\n },\n droppable: {\n containers: new DroppableContainersMap(),\n },\n };\n}\n\nexport function reducer(state: State, action: Actions): State {\n switch (action.type) {\n case Action.DragStart:\n return {\n ...state,\n draggable: {\n ...state.draggable,\n initialCoordinates: action.initialCoordinates,\n active: action.active,\n },\n };\n case Action.DragMove:\n if (state.draggable.active == null) {\n return state;\n }\n\n return {\n ...state,\n draggable: {\n ...state.draggable,\n translate: {\n x: action.coordinates.x - state.draggable.initialCoordinates.x,\n y: action.coordinates.y - state.draggable.initialCoordinates.y,\n },\n },\n };\n case Action.DragEnd:\n case Action.DragCancel:\n return {\n ...state,\n draggable: {\n ...state.draggable,\n active: null,\n initialCoordinates: {x: 0, y: 0},\n translate: {x: 0, y: 0},\n },\n };\n\n case Action.RegisterDroppable: {\n const {element} = action;\n const {id} = element;\n const containers = new DroppableContainersMap(state.droppable.containers);\n containers.set(id, element);\n\n return {\n ...state,\n droppable: {\n ...state.droppable,\n containers,\n },\n };\n }\n\n case Action.SetDroppableDisabled: {\n const {id, key, disabled} = action;\n const element = state.droppable.containers.get(id);\n\n if (!element || key !== element.key) {\n return state;\n }\n\n const containers = new DroppableContainersMap(state.droppable.containers);\n containers.set(id, {\n ...element,\n disabled,\n });\n\n return {\n ...state,\n droppable: {\n ...state.droppable,\n containers,\n },\n };\n }\n\n case Action.UnregisterDroppable: {\n const {id, key} = action;\n const element = state.droppable.containers.get(id);\n\n if (!element || key !== element.key) {\n return state;\n }\n\n const containers = new DroppableContainersMap(state.droppable.containers);\n containers.delete(id);\n\n return {\n ...state,\n droppable: {\n ...state.droppable,\n containers,\n },\n };\n }\n\n default: {\n return state;\n }\n }\n}\n","import {useContext, useEffect} from 'react';\nimport {\n findFirstFocusableNode,\n isKeyboardEvent,\n usePrevious,\n} from '@dnd-kit/utilities';\n\nimport {InternalContext} from '../../../store';\n\ninterface Props {\n disabled: boolean;\n}\n\nexport function RestoreFocus({disabled}: Props) {\n const {active, activatorEvent, draggableNodes} = useContext(InternalContext);\n const previousActivatorEvent = usePrevious(activatorEvent);\n const previousActiveId = usePrevious(active?.id);\n\n // Restore keyboard focus on the activator node\n useEffect(() => {\n if (disabled) {\n return;\n }\n\n if (!activatorEvent && previousActivatorEvent && previousActiveId != null) {\n if (!isKeyboardEvent(previousActivatorEvent)) {\n return;\n }\n\n if (document.activeElement === previousActivatorEvent.target) {\n // No need to restore focus\n return;\n }\n\n const draggableNode = draggableNodes.get(previousActiveId);\n\n if (!draggableNode) {\n return;\n }\n\n const {activatorNode, node} = draggableNode;\n\n if (!activatorNode.current && !node.current) {\n return;\n }\n\n requestAnimationFrame(() => {\n for (const element of [activatorNode.current, node.current]) {\n if (!element) {\n continue;\n }\n\n const focusableNode = findFirstFocusableNode(element);\n\n if (focusableNode) {\n focusableNode.focus();\n break;\n }\n }\n });\n }\n }, [\n activatorEvent,\n disabled,\n draggableNodes,\n previousActiveId,\n previousActivatorEvent,\n ]);\n\n return null;\n}\n","import type {FirstArgument, Transform} from '@dnd-kit/utilities';\n\nimport type {Modifiers, Modifier} from './types';\n\nexport function applyModifiers(\n modifiers: Modifiers | undefined,\n {transform, ...args}: FirstArgument<Modifier>\n): Transform {\n return modifiers?.length\n ? modifiers.reduce<Transform>((accumulator, modifier) => {\n return modifier({\n transform: accumulator,\n ...args,\n });\n }, transform)\n : transform;\n}\n","import {useMemo} from 'react';\nimport type {DeepRequired} from '@dnd-kit/utilities';\n\nimport {defaultMeasuringConfiguration} from '../defaults';\nimport type {MeasuringConfiguration} from '../types';\n\nexport function useMeasuringConfiguration(\n config: MeasuringConfiguration | undefined\n): DeepRequired<MeasuringConfiguration> {\n return useMemo(\n () => ({\n draggable: {\n ...defaultMeasuringConfiguration.draggable,\n ...config?.draggable,\n },\n droppable: {\n ...defaultMeasuringConfiguration.droppable,\n ...config?.droppable,\n },\n dragOverlay: {\n ...defaultMeasuringConfiguration.dragOverlay,\n ...config?.dragOverlay,\n },\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [config?.draggable, config?.droppable, config?.dragOverlay]\n );\n}\n","import {useRef} from 'react';\nimport {useIsomorphicLayoutEffect} from '@dnd-kit/utilities';\n\nimport {getRectDelta} from '../../../utilities/rect';\nimport {getFirstScrollableAncestor} from '../../../utilities/scroll';\nimport type {ClientRect} from '../../../types';\nimport type {DraggableNode} from '../../../store';\nimport type {MeasuringFunction} from '../types';\n\ninterface Options {\n activeNode: DraggableNode | null | undefined;\n config: boolean | {x: boolean; y: boolean} | undefined;\n initialRect: ClientRect | null;\n measure: MeasuringFunction;\n}\n\nexport function useLayoutShiftScrollCompensation({\n activeNode,\n measure,\n initialRect,\n config = true,\n}: Options) {\n const initialized = useRef(false);\n const {x, y} = typeof config === 'boolean' ? {x: config, y: config} : config;\n\n useIsomorphicLayoutEffect(() => {\n const disabled = !x && !y;\n\n if (disabled || !activeNode) {\n initialized.current = false;\n return;\n }\n\n if (initialized.current || !initialRect) {\n // Return early if layout shift scroll compensation was already attempted\n // or if there is no initialRect to compare to.\n return;\n }\n\n // Get the most up to date node ref for the active draggable\n const node = activeNode?.node.current;\n\n if (!node || node.isConnected === false) {\n // Return early if there is no attached node ref or if the node is\n // disconnected from the document.\n return;\n }\n\n const rect = measure(node);\n const rectDelta = getRectDelta(rect, initialRect);\n\n if (!x) {\n rectDelta.x = 0;\n }\n\n if (!y) {\n rectDelta.y = 0;\n }\n\n // Only perform layout shift scroll compensation once\n initialized.current = true;\n\n if (Math.abs(rectDelta.x) > 0 || Math.abs(rectDelta.y) > 0) {\n const firstScrollableAncestor = getFirstScrollableAncestor(node);\n\n if (firstScrollableAncestor) {\n firstScrollableAncestor.scrollBy({\n top: rectDelta.y,\n left: rectDelta.x,\n });\n }\n }\n }, [activeNode, x, y, initialRect, measure]);\n}\n","import React, {\n memo,\n createContext,\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from 'react';\nimport {unstable_batchedUpdates} from 'react-dom';\nimport {\n add,\n getEventCoordinates,\n getWindow,\n useLatestValue,\n useIsomorphicLayoutEffect,\n useUniqueId,\n} from '@dnd-kit/utilities';\nimport type {Transform} from '@dnd-kit/utilities';\n\nimport {\n Action,\n PublicContext,\n InternalContext,\n PublicContextDescriptor,\n InternalContextDescriptor,\n getInitialState,\n reducer,\n} from '../../store';\nimport {DndMonitorContext, useDndMonitorProvider} from '../DndMonitor';\nimport {\n useAutoScroller,\n useCachedNode,\n useCombineActivators,\n useDragOverlayMeasuring,\n useDroppableMeasuring,\n useInitialRect,\n useRect,\n useRectDelta,\n useRects,\n useScrollableAncestors,\n useScrollOffsets,\n useScrollOffsetsDelta,\n useSensorSetup,\n useWindowRect,\n} from '../../hooks/utilities';\nimport type {AutoScrollOptions, SyntheticListener} from '../../hooks/utilities';\nimport type {\n Sensor,\n SensorContext,\n SensorDescriptor,\n SensorActivatorFunction,\n SensorInstance,\n} from '../../sensors';\nimport {\n adjustScale,\n CollisionDetection,\n defaultCoordinates,\n getAdjustedRect,\n getFirstCollision,\n rectIntersection,\n} from '../../utilities';\nimport {applyModifiers, Modifiers} from '../../modifiers';\nimport type {Active, Over} from '../../store/types';\nimport type {\n DragStartEvent,\n DragCancelEvent,\n DragEndEvent,\n DragMoveEvent,\n DragOverEvent,\n UniqueIdentifier,\n DragPendingEvent,\n DragAbortEvent,\n} from '../../types';\nimport {\n Accessibility,\n Announcements,\n RestoreFocus,\n ScreenReaderInstructions,\n} from '../Accessibility';\n\nimport {defaultData, defaultSensors} from './defaults';\nimport {\n useLayoutShiftScrollCompensation,\n useMeasuringConfiguration,\n} from './hooks';\nimport type {MeasuringConfiguration} from './types';\n\nexport interface Props {\n id?: string;\n accessibility?: {\n announcements?: Announcements;\n container?: Element;\n restoreFocus?: boolean;\n screenReaderInstructions?: ScreenReaderInstructions;\n };\n autoScroll?: boolean | AutoScrollOptions;\n cancelDrop?: CancelDrop;\n children?: React.ReactNode;\n collisionDetection?: CollisionDetection;\n measuring?: MeasuringConfiguration;\n modifiers?: Modifiers;\n sensors?: SensorDescriptor<any>[];\n onDragAbort?(event: DragAbortEvent): void;\n onDragPending?(event: DragPendingEvent): void;\n onDragStart?(event: DragStartEvent): void;\n onDragMove?(event: DragMoveEvent): void;\n onDragOver?(event: DragOverEvent): void;\n onDragEnd?(event: DragEndEvent): void;\n onDragCancel?(event: DragCancelEvent): void;\n}\n\nexport interface CancelDropArguments extends DragEndEvent {}\n\nexport type CancelDrop = (\n args: CancelDropArguments\n) => boolean | Promise<boolean>;\n\ninterface DndEvent extends Event {\n dndKit?: {\n capturedBy: Sensor<any>;\n };\n}\n\nexport const ActiveDraggableContext = createContext<Transform>({\n ...defaultCoordinates,\n scaleX: 1,\n scaleY: 1,\n});\n\nenum Status {\n Uninitialized,\n Initializing,\n Initialized,\n}\n\nexport const DndContext = memo(function DndContext({\n id,\n accessibility,\n autoScroll = true,\n children,\n sensors = defaultSensors,\n collisionDetection = rectIntersection,\n measuring,\n modifiers,\n ...props\n}: Props) {\n const store = useReducer(reducer, undefined, getInitialState);\n const [state, dispatch] = store;\n const [dispatchMonitorEvent, registerMonitorListener] =\n useDndMonitorProvider();\n const [status, setStatus] = useState<Status>(Status.Uninitialized);\n const isInitialized = status === Status.Initialized;\n const {\n draggable: {active: activeId, nodes: draggableNodes, translate},\n droppable: {containers: droppableContainers},\n } = state;\n const node = activeId != null ? draggableNodes.get(activeId) : null;\n const activeRects = useRef<Active['rect']['current']>({\n initial: null,\n translated: null,\n });\n const active = useMemo<Active | null>(\n () =>\n activeId != null\n ? {\n id: activeId,\n // It's possible for the active node to unmount while dragging\n data: node?.data ?? defaultData,\n rect: activeRects,\n }\n : null,\n [activeId, node]\n );\n const activeRef = useRef<UniqueIdentifier | null>(null);\n const [activeSensor, setActiveSensor] = useState<SensorInstance | null>(null);\n const [activatorEvent, setActivatorEvent] = useState<Event | null>(null);\n const latestProps = useLatestValue(props, Object.values(props));\n const draggableDescribedById = useUniqueId(`DndDescribedBy`, id);\n const enabledDroppableContainers = useMemo(\n () => droppableContainers.getEnabled(),\n [droppableContainers]\n );\n const measuringConfiguration = useMeasuringConfiguration(measuring);\n const {droppableRects, measureDroppableContainers, measuringScheduled} =\n useDroppableMeasuring(enabledDroppableContainers, {\n dragging: isInitialized,\n dependencies: [translate.x, translate.y],\n config: measuringConfiguration.droppable,\n });\n const activeNode = useCachedNode(draggableNodes, activeId);\n const activationCoordinates = useMemo(\n () => (activatorEvent ? getEventCoordinates(activatorEvent) : null),\n [activatorEvent]\n );\n const autoScrollOptions = getAutoScrollerOptions();\n const initialActiveNodeRect = useInitialRect(\n activeNode,\n measuringConfiguration.draggable.measure\n );\n\n useLayoutShiftScrollCompensation({\n activeNode: activeId != null ? draggableNodes.get(activeId) : null,\n config: autoScrollOptions.layoutShiftCompensation,\n initialRect: initialActiveNodeRect,\n measure: measuringConfiguration.draggable.measure,\n });\n\n const activeNodeRect = useRect(\n activeNode,\n measuringConfiguration.draggable.measure,\n initialActiveNodeRect\n );\n const containerNodeRect = useRect(\n activeNode ? activeNode.parentElement : null\n );\n const sensorContext = useRef<SensorContext>({\n activatorEvent: null,\n active: null,\n activeNode,\n collisionRect: null,\n collisions: null,\n droppableRects,\n draggableNodes,\n draggingNode: null,\n draggingNodeRect: null,\n droppableContainers,\n over: null,\n scrollableAncestors: [],\n scrollAdjustedTranslate: null,\n });\n const overNode = droppableContainers.getNodeFor(\n sensorContext.current.over?.id\n );\n const dragOverlay = useDragOverlayMeasuring({\n measure: measuringConfiguration.dragOverlay.measure,\n });\n\n // Use the rect of the drag overlay if it is mounted\n const draggingNode = dragOverlay.nodeRef.current ?? activeNode;\n const draggingNodeRect = isInitialized\n ? dragOverlay.rect ?? activeNodeRect\n : null;\n const usesDragOverlay = Boolean(\n dragOverlay.nodeRef.current && dragOverlay.rect\n );\n // The delta between the previous and new position of the draggable node\n // is only relevant when there is no drag overlay\n const nodeRectDelta = useRectDelta(usesDragOverlay ? null : activeNodeRect);\n\n // Get the window rect of the dragging node\n const windowRect = useWindowRect(\n draggingNode ? getWindow(draggingNode) : null\n );\n\n // Get scrollable ancestors of the dragging node\n const scrollableAncestors = useScrollableAncestors(\n isInitialized ? overNode ?? activeNode : null\n );\n const scrollableAncestorRects = useRects(scrollableAncestors);\n\n // Apply modifiers\n const modifiedTranslate = applyModifiers(modifiers, {\n transform: {\n x: translate.x - nodeRectDelta.x,\n y: translate.y - nodeRectDelta.y,\n scaleX: 1,\n scaleY: 1,\n },\n activatorEvent,\n active,\n activeNodeRect,\n containerNodeRect,\n draggingNodeRect,\n over: sensorContext.current.over,\n overlayNodeRect: dragOverlay.rect,\n scrollableAncestors,\n scrollableAncestorRects,\n windowRect,\n });\n\n const pointerCoordinates = activationCoordinates\n ? add(activationCoordinates, translate)\n : null;\n\n const scrollOffsets = useScrollOffsets(scrollableAncestors);\n // Represents the scroll delta since dragging was initiated\n const scrollAdjustment = useScrollOffsetsDelta(scrollOffsets);\n // Represents the scroll delta since the last time the active node rect was measured\n const activeNodeScrollDelta = useScrollOffsetsDelta(scrollOffsets, [\n activeNodeRect,\n ]);\n\n const scrollAdjustedTranslate = add(modifiedTranslate, scrollAdjustment);\n\n const collisionRect = draggingNodeRect\n ? getAdjustedRect(draggingNodeRect, modifiedTranslate)\n : null;\n\n const collisions =\n active && collisionRect\n ? collisionDetection({\n active,\n collisionRect,\n droppableRects,\n droppableContainers: enabledDroppableContainers,\n pointerCoordinates,\n })\n : null;\n const overId = getFirstCollision(collisions, 'id');\n const [over, setOver] = useState<Over | null>(null);\n\n // When there is no drag overlay used, we need to account for the\n // window scroll delta\n const appliedTranslate = usesDragOverlay\n ? modifiedTranslate\n : add(modifiedTranslate, activeNodeScrollDelta);\n\n const transform = adjustScale(\n appliedTranslate,\n over?.rect ?? null,\n activeNodeRect\n );\n\n const activeSensorRef = useRef<SensorInstance | null>(null);\n const instantiateSensor = useCallback(\n (\n event: React.SyntheticEvent,\n {sensor: Sensor, options}: SensorDescriptor<any>\n ) => {\n if (activeRef.current == null) {\n return;\n }\n\n const activeNode = draggableNodes.get(activeRef.current);\n\n if (!activeNode) {\n return;\n }\n\n const activatorEvent = event.nativeEvent;\n\n const sensorInstance = new Sensor({\n active: activeRef.current,\n activeNode,\n event: activatorEvent,\n options,\n // Sensors need to be instantiated with refs for arguments that change over time\n // otherwise they are frozen in time with the stale arguments\n context: sensorContext,\n onAbort(id) {\n const draggableNode = draggableNodes.get(id);\n\n if (!draggableNode) {\n return;\n }\n\n const {onDragAbort} = latestProps.current;\n const event: DragAbortEvent = {id};\n onDragAbort?.(event);\n dispatchMonitorEvent({type: 'onDragAbort', event});\n },\n onPending(id, constraint, initialCoordinates, offset) {\n const draggableNode = draggableNodes.get(id);\n\n if (!draggableNode) {\n return;\n }\n\n const {onDragPending} = latestProps.current;\n const event: DragPendingEvent = {\n id,\n constraint,\n initialCoordinates,\n offset,\n };\n\n onDragPending?.(event);\n dispatchMonitorEvent({type: 'onDragPending', event});\n },\n onStart(initialCoordinates) {\n const id = activeRef.current;\n\n if (id == null) {\n return;\n }\n\n const draggableNode = draggableNodes.get(id);\n\n if (!draggableNode) {\n return;\n }\n\n const {onDragStart} = latestProps.current;\n const event: DragStartEvent = {\n activatorEvent,\n active: {id, data: draggableNode.data, rect: activeRects},\n };\n\n unstable_batchedUpdates(() => {\n onDragStart?.(event);\n setStatus(Status.Initializing);\n dispatch({\n type: Action.DragStart,\n initialCoordinates,\n active: id,\n });\n dispatchMonitorEvent({type: 'onDragStart', event});\n setActiveSensor(activeSensorRef.current);\n setActivatorEvent(activatorEvent);\n });\n },\n onMove(coordinates) {\n dispatch({\n type: Action.DragMove,\n coordinates,\n });\n },\n onEnd: createHandler(Action.DragEnd),\n onCancel: createHandler(Action.DragCancel),\n });\n\n activeSensorRef.current = sensorInstance;\n\n function createHandler(type: Action.DragEnd | Action.DragCancel) {\n return async function handler() {\n const {active, collisions, over, scrollAdjustedTranslate} =\n sensorContext.current;\n let event: DragEndEvent | null = null;\n\n if (active && scrollAdjustedTranslate) {\n const {cancelDrop} = latestProps.current;\n\n event = {\n activatorEvent,\n active: active,\n collisions,\n delta: scrollAdjustedTranslate,\n over,\n };\n\n if (type === Action.DragEnd && typeof cancelDrop === 'function') {\n const shouldCancel = await Promise.resolve(cancelDrop(event));\n\n if (shouldCancel) {\n type = Action.DragCancel;\n }\n }\n }\n\n activeRef.current = null;\n\n unstable_batchedUpdates(() => {\n dispatch({type});\n setStatus(Status.Uninitialized);\n setOver(null);\n setActiveSensor(null);\n setActivatorEvent(null);\n activeSensorRef.current = null;\n\n const eventName =\n type === Action.DragEnd ? 'onDragEnd' : 'onDragCancel';\n\n if (event) {\n const handler = latestProps.current[eventName];\n\n handler?.(event);\n dispatchMonitorEvent({type: eventName, event});\n }\n });\n };\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [draggableNodes]\n );\n\n const bindActivatorToSensorInstantiator = useCallback(\n (\n handler: SensorActivatorFunction<any>,\n sensor: SensorDescriptor<any>\n ): SyntheticListener['handler'] => {\n return (event, active) => {\n const nativeEvent = event.nativeEvent as DndEvent;\n const activeDraggableNode = draggableNodes.get(active);\n\n if (\n // Another sensor is already instantiating\n activeRef.current !== null ||\n // No active draggable\n !activeDraggableNode ||\n // Event has already been captured\n nativeEvent.dndKit ||\n nativeEvent.defaultPrevented\n ) {\n return;\n }\n\n const activationContext = {\n active: activeDraggableNode,\n };\n const shouldActivate = handler(\n event,\n sensor.options,\n activationContext\n );\n\n if (shouldActivate === true) {\n nativeEvent.dndKit = {\n capturedBy: sensor.sensor,\n };\n\n activeRef.current = active;\n instantiateSensor(event, sensor);\n }\n };\n },\n [draggableNodes, instantiateSensor]\n );\n\n const activators = useCombineActivators(\n sensors,\n bindActivatorToSensorInstantiator\n );\n\n useSensorSetup(sensors);\n\n useIsomorphicLayoutEffect(() => {\n if (activeNodeRect && status === Status.Initializing) {\n setStatus(Status.Initialized);\n }\n }, [activeNodeRect, status]);\n\n useEffect(\n () => {\n const {onDragMove} = latestProps.current;\n const {active, activatorEvent, collisions, over} = sensorContext.current;\n\n if (!active || !activatorEvent) {\n return;\n }\n\n const event: DragMoveEvent = {\n active,\n activatorEvent,\n collisions,\n delta: {\n x: scrollAdjustedTranslate.x,\n y: scrollAdjustedTranslate.y,\n },\n over,\n };\n\n unstable_batchedUpdates(() => {\n onDragMove?.(event);\n dispatchMonitorEvent({type: 'onDragMove', event});\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [scrollAdjustedTranslate.x, scrollAdjustedTranslate.y]\n );\n\n useEffect(\n () => {\n const {\n active,\n activatorEvent,\n collisions,\n droppableContainers,\n scrollAdjustedTranslate,\n } = sensorContext.current;\n\n if (\n !active ||\n activeRef.current == null ||\n !activatorEvent ||\n !scrollAdjustedTranslate\n ) {\n return;\n }\n\n const {onDragOver} = latestProps.current;\n const overContainer = droppableContainers.get(overId);\n const over =\n overContainer && overContainer.rect.current\n ? {\n id: overContainer.id,\n rect: overContainer.rect.current,\n data: overContainer.data,\n disabled: overContainer.disabled,\n }\n : null;\n const event: DragOverEvent = {\n active,\n activatorEvent,\n collisions,\n delta: {\n x: scrollAdjustedTranslate.x,\n y: scrollAdjustedTranslate.y,\n },\n over,\n };\n\n unstable_batchedUpdates(() => {\n setOver(over);\n onDragOver?.(event);\n dispatchMonitorEvent({type: 'onDragOver', event});\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [overId]\n );\n\n useIsomorphicLayoutEffect(() => {\n sensorContext.current = {\n activatorEvent,\n active,\n activeNode,\n collisionRect,\n collisions,\n droppableRects,\n draggableNodes,\n draggingNode,\n draggingNodeRect,\n droppableContainers,\n over,\n scrollableAncestors,\n scrollAdjustedTranslate,\n };\n\n activeRects.current = {\n initial: draggingNodeRect,\n translated: collisionRect,\n };\n }, [\n active,\n activeNode,\n collisions,\n collisionRect,\n draggableNodes,\n draggingNode,\n draggingNodeRect,\n droppableRects,\n droppableContainers,\n over,\n scrollableAncestors,\n scrollAdjustedTranslate,\n ]);\n\n useAutoScroller({\n ...autoScrollOptions,\n delta: translate,\n draggingRect: collisionRect,\n pointerCoordinates,\n scrollableAncestors,\n scrollableAncestorRects,\n });\n\n const publicContext = useMemo(() => {\n const context: PublicContextDescriptor = {\n active,\n activeNode,\n activeNodeRect,\n activatorEvent,\n collisions,\n containerNodeRect,\n dragOverlay,\n draggableNodes,\n droppableContainers,\n droppableRects,\n over,\n measureDroppableContainers,\n scrollableAncestors,\n scrollableAncestorRects,\n measuringConfiguration,\n measuringScheduled,\n windowRect,\n };\n\n return context;\n }, [\n active,\n activeNode,\n activeNodeRect,\n activatorEvent,\n collisions,\n containerNodeRect,\n dragOverlay,\n draggableNodes,\n droppableContainers,\n droppableRects,\n over,\n measureDroppableContainers,\n scrollableAncestors,\n scrollableAncestorRects,\n measuringConfiguration,\n measuringScheduled,\n windowRect,\n ]);\n\n const internalContext = useMemo(() => {\n const context: InternalContextDescriptor = {\n activatorEvent,\n activators,\n active,\n activeNodeRect,\n ariaDescribedById: {\n draggable: draggableDescribedById,\n },\n dispatch,\n draggableNodes,\n over,\n measureDroppableContainers,\n };\n\n return context;\n }, [\n activatorEvent,\n activators,\n active,\n activeNodeRect,\n dispatch,\n draggableDescribedById,\n draggableNodes,\n over,\n measureDroppableContainers,\n ]);\n\n return (\n <DndMonitorContext.Provider value={registerMonitorListener}>\n <InternalContext.Provider value={internalContext}>\n <PublicContext.Provider value={publicContext}>\n <ActiveDraggableContext.Provider value={transform}>\n {children}\n </ActiveDraggableContext.Provider>\n </PublicContext.Provider>\n <RestoreFocus disabled={accessibility?.restoreFocus === false} />\n </InternalContext.Provider>\n <Accessibility\n {...accessibility}\n hiddenTextDescribedById={draggableDescribedById}\n />\n </DndMonitorContext.Provider>\n );\n\n function getAutoScrollerOptions() {\n const activeSensorDisablesAutoscroll =\n activeSensor?.autoScrollEnabled === false;\n const autoScrollGloballyDisabled =\n typeof autoScroll === 'object'\n ? autoScroll.enabled === false\n : autoScroll === false;\n const enabled =\n isInitialized &&\n !activeSensorDisablesAutoscroll &&\n !autoScrollGloballyDisabled;\n\n if (typeof autoScroll === 'object') {\n return {\n ...autoScroll,\n enabled,\n };\n }\n\n return {enabled};\n }\n});\n","import {createContext, useContext, useMemo} from 'react';\nimport {\n Transform,\n useNodeRef,\n useIsomorphicLayoutEffect,\n useLatestValue,\n useUniqueId,\n} from '@dnd-kit/utilities';\n\nimport {InternalContext, Data} from '../store';\nimport type {UniqueIdentifier} from '../types';\nimport {ActiveDraggableContext} from '../components/DndContext';\nimport {useSyntheticListeners, SyntheticListenerMap} from './utilities';\n\nexport interface UseDraggableArguments {\n id: UniqueIdentifier;\n data?: Data;\n disabled?: boolean;\n attributes?: {\n role?: string;\n roleDescription?: string;\n tabIndex?: number;\n };\n}\n\nexport interface DraggableAttributes {\n role: string;\n tabIndex: number;\n 'aria-disabled': boolean;\n 'aria-pressed': boolean | undefined;\n 'aria-roledescription': string;\n 'aria-describedby': string;\n}\n\nexport type DraggableSyntheticListeners = SyntheticListenerMap | undefined;\n\nconst NullContext = createContext<any>(null);\n\nconst defaultRole = 'button';\n\nconst ID_PREFIX = 'Draggable';\n\nexport function useDraggable({\n id,\n data,\n disabled = false,\n attributes,\n}: UseDraggableArguments) {\n const key = useUniqueId(ID_PREFIX);\n const {\n activators,\n activatorEvent,\n active,\n activeNodeRect,\n ariaDescribedById,\n draggableNodes,\n over,\n } = useContext(InternalContext);\n const {\n role = defaultRole,\n roleDescription = 'draggable',\n tabIndex = 0,\n } = attributes ?? {};\n const isDragging = active?.id === id;\n const transform: Transform | null = useContext(\n isDragging ? ActiveDraggableContext : NullContext\n );\n const [node, setNodeRef] = useNodeRef();\n const [activatorNode, setActivatorNodeRef] = useNodeRef();\n const listeners = useSyntheticListeners(activators, id);\n const dataRef = useLatestValue(data);\n\n useIsomorphicLayoutEffect(\n () => {\n draggableNodes.set(id, {id, key, node, activatorNode, data: dataRef});\n\n return () => {\n const node = draggableNodes.get(id);\n\n if (node && node.key === key) {\n draggableNodes.delete(id);\n }\n };\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [draggableNodes, id]\n );\n\n const memoizedAttributes: DraggableAttributes = useMemo(\n () => ({\n role,\n tabIndex,\n 'aria-disabled': disabled,\n 'aria-pressed': isDragging && role === defaultRole ? true : undefined,\n 'aria-roledescription': roleDescription,\n 'aria-describedby': ariaDescribedById.draggable,\n }),\n [\n disabled,\n role,\n tabIndex,\n isDragging,\n roleDescription,\n ariaDescribedById.draggable,\n ]\n );\n\n return {\n active,\n activatorEvent,\n activeNodeRect,\n attributes: memoizedAttributes,\n isDragging,\n listeners: disabled ? undefined : listeners,\n node,\n over,\n setNodeRef,\n setActivatorNodeRef,\n transform,\n };\n}\n","import {ContextType, useContext} from 'react';\nimport {PublicContext} from '../store';\n\nexport function useDndContext() {\n return useContext(PublicContext);\n}\n\nexport type UseDndContextReturnValue = ContextType<typeof PublicContext>;\n","import {useCallback, useContext, useEffect, useRef} from 'react';\nimport {useLatestValue, useNodeRef, useUniqueId} from '@dnd-kit/utilities';\n\nimport {InternalContext, Action, Data} from '../store';\nimport type {ClientRect, UniqueIdentifier} from '../types';\n\nimport {useResizeObserver} from './utilities';\n\ninterface ResizeObserverConfig {\n /** Whether the ResizeObserver should be disabled entirely */\n disabled?: boolean;\n /** Resize events may affect the layout and position of other droppable containers.\n * Specify an array of `UniqueIdentifier` of droppable containers that should also be re-measured\n * when this droppable container resizes. Specifying an empty array re-measures all droppable containers.\n */\n updateMeasurementsFor?: UniqueIdentifier[];\n /** Represents the debounce timeout between when resize events are observed and when elements are re-measured */\n timeout?: number;\n}\n\nexport interface UseDroppableArguments {\n id: UniqueIdentifier;\n disabled?: boolean;\n data?: Data;\n resizeObserverConfig?: ResizeObserverConfig;\n}\n\nconst ID_PREFIX = 'Droppable';\n\nconst defaultResizeObserverConfig = {\n timeout: 25,\n};\n\nexport function useDroppable({\n data,\n disabled = false,\n id,\n resizeObserverConfig,\n}: UseDroppableArguments) {\n const key = useUniqueId(ID_PREFIX);\n const {active, dispatch, over, measureDroppableContainers} =\n useContext(InternalContext);\n const previous = useRef({disabled});\n const resizeObserverConnected = useRef(false);\n const rect = useRef<ClientRect | null>(null);\n const callbackId = useRef<NodeJS.Timeout | null>(null);\n const {\n disabled: resizeObserverDisabled,\n updateMeasurementsFor,\n timeout: resizeObserverTimeout,\n } = {\n ...defaultResizeObserverConfig,\n ...resizeObserverConfig,\n };\n const ids = useLatestValue(updateMeasurementsFor ?? id);\n const handleResize = useCallback(\n () => {\n if (!resizeObserverConnected.current) {\n // ResizeObserver invokes the `handleResize` callback as soon as `observe` is called,\n // assuming the element is rendered and displayed.\n resizeObserverConnected.current = true;\n return;\n }\n\n if (callbackId.current != null) {\n clearTimeout(callbackId.current);\n }\n\n callbackId.current = setTimeout(() => {\n measureDroppableContainers(\n Array.isArray(ids.current) ? ids.current : [ids.current]\n );\n callbackId.current = null;\n }, resizeObserverTimeout);\n },\n //eslint-disable-next-line react-hooks/exhaustive-deps\n [resizeObserverTimeout]\n );\n const resizeObserver = useResizeObserver({\n callback: handleResize,\n disabled: resizeObserverDisabled || !active,\n });\n const handleNodeChange = useCallback(\n (newElement: HTMLElement | null, previousElement: HTMLElement | null) => {\n if (!resizeObserver) {\n return;\n }\n\n if (previousElement) {\n resizeObserver.unobserve(previousElement);\n resizeObserverConnected.current = false;\n }\n\n if (newElement) {\n resizeObserver.observe(newElement);\n }\n },\n [resizeObserver]\n );\n const [nodeRef, setNodeRef] = useNodeRef(handleNodeChange);\n const dataRef = useLatestValue(data);\n\n useEffect(() => {\n if (!resizeObserver || !nodeRef.current) {\n return;\n }\n\n resizeObserver.disconnect();\n resizeObserverConnected.current = false;\n resizeObserver.observe(nodeRef.current);\n }, [nodeRef, resizeObserver]);\n\n useEffect(\n () => {\n dispatch({\n type: Action.RegisterDroppable,\n element: {\n id,\n key,\n disabled,\n node: nodeRef,\n rect,\n data: dataRef,\n },\n });\n\n return () =>\n dispatch({\n type: Action.UnregisterDroppable,\n key,\n id,\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [id]\n );\n\n useEffect(() => {\n if (disabled !== previous.current.disabled) {\n dispatch({\n type: Action.SetDroppableDisabled,\n id,\n key,\n disabled,\n });\n\n previous.current.disabled = disabled;\n }\n }, [id, key, disabled, dispatch]);\n\n return {\n active,\n rect,\n isOver: over?.id === id,\n node: nodeRef,\n over,\n setNodeRef,\n };\n}\n","import React, {cloneElement, useState} from 'react';\nimport {useIsomorphicLayoutEffect, usePrevious} from '@dnd-kit/utilities';\n\nimport type {UniqueIdentifier} from '../../../../types';\n\nexport type Animation = (\n key: UniqueIdentifier,\n node: HTMLElement\n) => Promise<void> | void;\n\nexport interface Props {\n animation: Animation;\n children: React.ReactElement | null;\n}\n\nexport function AnimationManager({animation, children}: Props) {\n const [\n clonedChildren,\n setClonedChildren,\n ] = useState<React.ReactElement | null>(null);\n const [element, setElement] = useState<HTMLElement | null>(null);\n const previousChildren = usePrevious(children);\n\n if (!children && !clonedChildren && previousChildren) {\n setClonedChildren(previousChildren);\n }\n\n useIsomorphicLayoutEffect(() => {\n if (!element) {\n return;\n }\n\n const key = clonedChildren?.key;\n const id = clonedChildren?.props.id;\n\n if (key == null || id == null) {\n setClonedChildren(null);\n return;\n }\n\n Promise.resolve(animation(id, element)).then(() => {\n setClonedChildren(null);\n });\n }, [animation, clonedChildren, element]);\n\n return (\n <>\n {children}\n {clonedChildren ? cloneElement(clonedChildren, {ref: setElement}) : null}\n </>\n );\n}\n","import React from 'react';\nimport type {Transform} from '@dnd-kit/utilities';\n\nimport {InternalContext, defaultInternalContext} from '../../../../store';\nimport {ActiveDraggableContext} from '../../../DndContext';\n\ninterface Props {\n children: React.ReactNode;\n}\n\nconst defaultTransform: Transform = {\n x: 0,\n y: 0,\n scaleX: 1,\n scaleY: 1,\n};\n\nexport function NullifiedContextProvider({children}: Props) {\n return (\n <InternalContext.Provider value={defaultInternalContext}>\n <ActiveDraggableContext.Provider value={defaultTransform}>\n {children}\n </ActiveDraggableContext.Provider>\n </InternalContext.Provider>\n );\n}\n","import React, {forwardRef} from 'react';\nimport {CSS, isKeyboardEvent} from '@dnd-kit/utilities';\n\nimport type {Transform} from '@dnd-kit/utilities';\n\nimport {getRelativeTransformOrigin} from '../../../../utilities';\nimport type {ClientRect, UniqueIdentifier} from '../../../../types';\n\ntype TransitionGetter = (\n activatorEvent: Event | null\n) => React.CSSProperties['transition'] | undefined;\n\nexport interface Props {\n as: keyof JSX.IntrinsicElements;\n activatorEvent: Event | null;\n adjustScale?: boolean;\n children?: React.ReactNode;\n className?: string;\n id: UniqueIdentifier;\n rect: ClientRect | null;\n style?: React.CSSProperties;\n transition?: string | TransitionGetter;\n transform: Transform;\n}\n\nconst baseStyles: React.CSSProperties = {\n position: 'fixed',\n touchAction: 'none',\n};\n\nconst defaultTransition: TransitionGetter = (activatorEvent) => {\n const isKeyboardActivator = isKeyboardEvent(activatorEvent);\n\n return isKeyboardActivator ? 'transform 250ms ease' : undefined;\n};\n\nexport const PositionedOverlay = forwardRef<HTMLElement, Props>(\n (\n {\n as,\n activatorEvent,\n adjustScale,\n children,\n className,\n rect,\n style,\n transform,\n transition = defaultTransition,\n },\n ref\n ) => {\n if (!rect) {\n return null;\n }\n\n const scaleAdjustedTransform = adjustScale\n ? transform\n : {\n ...transform,\n scaleX: 1,\n scaleY: 1,\n };\n const styles: React.CSSProperties | undefined = {\n ...baseStyles,\n width: rect.width,\n height: rect.height,\n top: rect.top,\n left: rect.left,\n transform: CSS.Transform.toString(scaleAdjustedTransform),\n transformOrigin:\n adjustScale && activatorEvent\n ? getRelativeTransformOrigin(\n activatorEvent as MouseEvent | KeyboardEvent | TouchEvent,\n rect\n )\n : undefined,\n transition:\n typeof transition === 'function'\n ? transition(activatorEvent)\n : transition,\n ...style,\n };\n\n return React.createElement(\n as,\n {\n className,\n style: styles,\n ref,\n },\n children\n );\n }\n);\n","import {CSS, useEvent, getWindow} from '@dnd-kit/utilities';\nimport type {DeepRequired, Transform} from '@dnd-kit/utilities';\n\nimport type {\n Active,\n DraggableNode,\n DraggableNodes,\n DroppableContainers,\n} from '../../../store';\nimport type {ClientRect, UniqueIdentifier} from '../../../types';\nimport {getMeasurableNode} from '../../../utilities/nodes';\nimport {scrollIntoViewIfNeeded} from '../../../utilities/scroll';\nimport {parseTransform} from '../../../utilities/transform';\nimport type {MeasuringConfiguration} from '../../DndContext';\nimport type {Animation} from '../components';\n\ninterface SharedParameters {\n active: {\n id: UniqueIdentifier;\n data: Active['data'];\n node: HTMLElement;\n rect: ClientRect;\n };\n dragOverlay: {\n node: HTMLElement;\n rect: ClientRect;\n };\n draggableNodes: DraggableNodes;\n droppableContainers: DroppableContainers;\n measuringConfiguration: DeepRequired<MeasuringConfiguration>;\n}\n\nexport interface KeyframeResolverParameters extends SharedParameters {\n transform: {\n initial: Transform;\n final: Transform;\n };\n}\n\nexport type KeyframeResolver = (\n parameters: KeyframeResolverParameters\n) => Keyframe[];\n\nexport interface DropAnimationOptions {\n keyframes?: KeyframeResolver;\n duration?: number;\n easing?: string;\n sideEffects?: DropAnimationSideEffects | null;\n}\n\nexport type DropAnimation = DropAnimationFunction | DropAnimationOptions;\n\ninterface Arguments {\n draggableNodes: DraggableNodes;\n droppableContainers: DroppableContainers;\n measuringConfiguration: DeepRequired<MeasuringConfiguration>;\n config?: DropAnimation | null;\n}\n\nexport interface DropAnimationFunctionArguments extends SharedParameters {\n transform: Transform;\n}\n\nexport type DropAnimationFunction = (\n args: DropAnimationFunctionArguments\n) => Promise<void> | void;\n\ntype CleanupFunction = () => void;\n\nexport interface DropAnimationSideEffectsParameters extends SharedParameters {}\n\nexport type DropAnimationSideEffects = (\n parameters: DropAnimationSideEffectsParameters\n) => CleanupFunction | void;\n\ntype ExtractStringProperties<T> = {\n [K in keyof T]?: T[K] extends string ? string : never;\n};\n\ntype Styles = ExtractStringProperties<CSSStyleDeclaration>;\n\ninterface DefaultDropAnimationSideEffectsOptions {\n className?: {\n active?: string;\n dragOverlay?: string;\n };\n styles?: {\n active?: Styles;\n dragOverlay?: Styles;\n };\n}\n\nexport const defaultDropAnimationSideEffects = (\n options: DefaultDropAnimationSideEffectsOptions\n): DropAnimationSideEffects => ({active, dragOverlay}) => {\n const originalStyles: Record<string, string> = {};\n const {styles, className} = options;\n\n if (styles?.active) {\n for (const [key, value] of Object.entries(styles.active)) {\n if (value === undefined) {\n continue;\n }\n\n originalStyles[key] = active.node.style.getPropertyValue(key);\n active.node.style.setProperty(key, value);\n }\n }\n\n if (styles?.dragOverlay) {\n for (const [key, value] of Object.entries(styles.dragOverlay)) {\n if (value === undefined) {\n continue;\n }\n\n dragOverlay.node.style.setProperty(key, value);\n }\n }\n\n if (className?.active) {\n active.node.classList.add(className.active);\n }\n\n if (className?.dragOverlay) {\n dragOverlay.node.classList.add(className.dragOverlay);\n }\n\n return function cleanup() {\n for (const [key, value] of Object.entries(originalStyles)) {\n active.node.style.setProperty(key, value);\n }\n\n if (className?.active) {\n active.node.classList.remove(className.active);\n }\n };\n};\n\nconst defaultKeyframeResolver: KeyframeResolver = ({\n transform: {initial, final},\n}) => [\n {\n transform: CSS.Transform.toString(initial),\n },\n {\n transform: CSS.Transform.toString(final),\n },\n];\n\nexport const defaultDropAnimationConfiguration: Required<DropAnimationOptions> = {\n duration: 250,\n easing: 'ease',\n keyframes: defaultKeyframeResolver,\n sideEffects: defaultDropAnimationSideEffects({\n styles: {\n active: {\n opacity: '0',\n },\n },\n }),\n};\n\nexport function useDropAnimation({\n config,\n draggableNodes,\n droppableContainers,\n measuringConfiguration,\n}: Arguments) {\n return useEvent<Animation>((id, node) => {\n if (config === null) {\n return;\n }\n\n const activeDraggable: DraggableNode | undefined = draggableNodes.get(id);\n\n if (!activeDraggable) {\n return;\n }\n\n const activeNode = activeDraggable.node.current;\n\n if (!activeNode) {\n return;\n }\n\n const measurableNode = getMeasurableNode(node);\n\n if (!measurableNode) {\n return;\n }\n const {transform} = getWindow(node).getComputedStyle(node);\n const parsedTransform = parseTransform(transform);\n\n if (!parsedTransform) {\n return;\n }\n\n const animation: DropAnimationFunction =\n typeof config === 'function'\n ? config\n : createDefaultDropAnimation(config);\n\n scrollIntoViewIfNeeded(\n activeNode,\n measuringConfiguration.draggable.measure\n );\n\n return animation({\n active: {\n id,\n data: activeDraggable.data,\n node: activeNode,\n rect: measuringConfiguration.draggable.measure(activeNode),\n },\n draggableNodes,\n dragOverlay: {\n node,\n rect: measuringConfiguration.dragOverlay.measure(measurableNode),\n },\n droppableContainers,\n measuringConfiguration,\n transform: parsedTransform,\n });\n });\n}\n\nfunction createDefaultDropAnimation(\n options: DropAnimationOptions | undefined\n): DropAnimationFunction {\n const {duration, easing, sideEffects, keyframes} = {\n ...defaultDropAnimationConfiguration,\n ...options,\n };\n\n return ({active, dragOverlay, transform, ...rest}) => {\n if (!duration) {\n // Do not animate if animation duration is zero.\n return;\n }\n\n const delta = {\n x: dragOverlay.rect.left - active.rect.left,\n y: dragOverlay.rect.top - active.rect.top,\n };\n\n const scale = {\n scaleX:\n transform.scaleX !== 1\n ? (active.rect.width * transform.scaleX) / dragOverlay.rect.width\n : 1,\n scaleY:\n transform.scaleY !== 1\n ? (active.rect.height * transform.scaleY) / dragOverlay.rect.height\n : 1,\n };\n const finalTransform = {\n x: transform.x - delta.x,\n y: transform.y - delta.y,\n ...scale,\n };\n\n const animationKeyframes = keyframes({\n ...rest,\n active,\n dragOverlay,\n transform: {initial: transform, final: finalTransform},\n });\n\n const [firstKeyframe] = animationKeyframes;\n const lastKeyframe = animationKeyframes[animationKeyframes.length - 1];\n\n if (JSON.stringify(firstKeyframe) === JSON.stringify(lastKeyframe)) {\n // The start and end keyframes are the same, infer that there is no animation needed.\n return;\n }\n\n const cleanup = sideEffects?.({active, dragOverlay, ...rest});\n const animation = dragOverlay.node.animate(animationKeyframes, {\n duration,\n easing,\n fill: 'forwards',\n });\n\n return new Promise((resolve) => {\n animation.onfinish = () => {\n cleanup?.();\n resolve();\n };\n });\n };\n}\n","import {useMemo} from 'react';\n\nimport type {UniqueIdentifier} from '../../../types';\n\nlet key = 0;\n\nexport function useKey(id: UniqueIdentifier | undefined) {\n return useMemo(() => {\n if (id == null) {\n return;\n }\n\n key++;\n return key;\n }, [id]);\n}\n","import React, {useContext} from 'react';\n\nimport {applyModifiers, Modifiers} from '../../modifiers';\nimport {ActiveDraggableContext} from '../DndContext';\nimport {useDndContext} from '../../hooks';\nimport {useInitialValue} from '../../hooks/utilities';\n\nimport {\n AnimationManager,\n NullifiedContextProvider,\n PositionedOverlay,\n} from './components';\nimport type {PositionedOverlayProps} from './components';\n\nimport {useDropAnimation, useKey} from './hooks';\nimport type {DropAnimation} from './hooks';\n\nexport interface Props\n extends Pick<\n PositionedOverlayProps,\n 'adjustScale' | 'children' | 'className' | 'style' | 'transition'\n > {\n dropAnimation?: DropAnimation | null | undefined;\n modifiers?: Modifiers;\n wrapperElement?: keyof JSX.IntrinsicElements;\n zIndex?: number;\n}\n\nexport const DragOverlay = React.memo(\n ({\n adjustScale = false,\n children,\n dropAnimation: dropAnimationConfig,\n style,\n transition,\n modifiers,\n wrapperElement = 'div',\n className,\n zIndex = 999,\n }: Props) => {\n const {\n activatorEvent,\n active,\n activeNodeRect,\n containerNodeRect,\n draggableNodes,\n droppableContainers,\n dragOverlay,\n over,\n measuringConfiguration,\n scrollableAncestors,\n scrollableAncestorRects,\n windowRect,\n } = useDndContext();\n const transform = useContext(ActiveDraggableContext);\n const key = useKey(active?.id);\n const modifiedTransform = applyModifiers(modifiers, {\n activatorEvent,\n active,\n activeNodeRect,\n containerNodeRect,\n draggingNodeRect: dragOverlay.rect,\n over,\n overlayNodeRect: dragOverlay.rect,\n scrollableAncestors,\n scrollableAncestorRects,\n transform,\n windowRect,\n });\n const initialRect = useInitialValue(activeNodeRect);\n const dropAnimation = useDropAnimation({\n config: dropAnimationConfig,\n draggableNodes,\n droppableContainers,\n measuringConfiguration,\n });\n // We need to wait for the active node to be measured before connecting the drag overlay ref\n // otherwise collisions can be computed against a mispositioned drag overlay\n const ref = initialRect ? dragOverlay.setRef : undefined;\n\n return (\n <NullifiedContextProvider>\n <AnimationManager animation={dropAnimation}>\n {active && key ? (\n <PositionedOverlay\n key={key}\n id={active.id}\n ref={ref}\n as={wrapperElement}\n activatorEvent={activatorEvent}\n adjustScale={adjustScale}\n className={className}\n transition={transition}\n rect={initialRect}\n style={{\n zIndex,\n ...style,\n }}\n transform={modifiedTransform}\n >\n {children}\n </PositionedOverlay>\n ) : null}\n </AnimationManager>\n </NullifiedContextProvider>\n );\n }\n);\n"],"names":["hiddenStyles","useCombinedRefs","refs","DndMonitorContext","HiddenText","createContext","id","arrayMove","array","from","to","newArray","forEach","ref","slice","node","splice","length","Error","value","canUseDOM","unsubscribe","registerListener","window","listener","document","createElement","element","prototype","toString","call","elementString","announcement","useDndMonitorProvider","ariaLiveType","useState","Set","useCallback","listeners","isNode","add","visuallyHidden","items","rects","position","reduce","accumulator","index","dispatch","rect","get","getWindow","target","height","overflow","Array","clip","type","event","whiteSpace","isValidIndex","style","defaultScreenReaderInstructions","a","b","role","ownerDocument","defaultView","onDragStart","_target$ownerDocument","Document","useAnnouncement","setAnnouncement","active","announce","i","onDragOver","isHTMLElement","over","HTMLElement","normalizeDisabled","disabled","getOwnerDocument","isSVGElement","draggable","SVGElement","droppable","isWindow","onDragEnd","defaultScale","scaleX","scaleY","horizontalListSortingStrategy","useIsomorphicLayoutEffect","activeNodeRect","activeIndex","overIndex","fallbackActiveRect","args","Accessibility","announcements","defaultAnnouncements","hiddenTextDescribedById","itemGap","getItemGap","screenReaderInstructions","intervalRef","newIndexRect","useLayoutEffect","useEffect","handler","handlerRef","liveRegionId","useUniqueId","mounted","current","setMounted","x","left","width","y","useDndMonitor","useMemo","dependencies","useRef","duration","setInterval","clear","onChangeHandler","onDragMove","useLatestValue","previousRect","currentRect","valueRef","nextRect","useLazyMemo","callback","prefix","newValue","rectSortingStrategy","onChange","useEvent","_len","_key","oldRect","newRect","newRects","Object","setNodeRef","key","usePrevious","top","markup","React","createPortal","container","Action","ids","createAdjustmentFn","modifier","object","adjustments","noop","clientX","adjustment","entries","useSensor","sensor","options","CSS","valueAdjustment","useSensors","transform","sensors","Scale","join","defaultCoordinates","freeze","hasViewportRelativeCoordinates","p1","p2","sqrt","Math","pow","getRelativeTransformOrigin","eventCoordinates","KeyboardEvent","getEventCoordinates","isTouchEvent","overIndexRect","transformOrigin","TouchEvent","sortCollisionsAsc","touches","data","changedTouches","clientY","clientRects","ID_PREFIX","Context","containerId","disableTransforms","round","useDragOverlay","strategy","SortableContext","getFirstCollision","collisions","property","children","userDefinedItems","firstCollision","disabledProp","Transform","dragOverlay","droppableRects","measureDroppableContainers","useDndContext","centerOfRectangle","Translate","Boolean","map","item","isDragging","indexOf","previousItemsRef","itemsHaveChanged","itemsEqual","easing","matches","SELECTOR","querySelector","collisionRect","sortedRects","getSortedRects","droppableContainer","droppableContainers","Provider","contextValue","distBetween","distanceBetween","centerRect","push","defaultAnimateLayoutChanges","sort","isSorting","wasDragging","newIndex","previousItems","previousContainerId","transition","closestCorners","corners","cornersOfRectangle","rectCorners","defaultTransition","distances","corner","effectiveDistance","Number","toFixed","transitionProperty","disabledTransition","Transition","defaultAttributes","roleDescription","useDerivedTransform","getIntersectionRatio","entry","max","min","bottom","derivedTransform","right","setDerivedtransform","previousIndex","targetArea","initial","entryArea","getClientRect","intersectionArea","ignoreTransform","intersectionRatio","delta","rectIntersection","useSortable","animateLayoutChanges","attributes","userDefinedAttributes","customData","getNewIndex","defaultNewIndexGetter","localStrategy","resizeObserverConfig","sortCollisionsDesc","globalDisabled","isPointWithinRect","point","globalStrategy","useContext","normalizeLocalDisabled","localDisabled","sortable","itemsAfterCurrentSortable","pointerWithin","setDroppableNodeRef","pointerCoordinates","updateMeasurementsFor","activatorEvent","setActivatorNodeRef","setDraggableNodeRef","shouldDisplaceDragSource","dragSourceDisplacement","displaceItem","finalTransform","adjustScale","rect1","rect2","getRectDelta","activeId","previous","createRectAdjustmentFn","adjustClientRect","shouldAnimateLayoutChanges","acc","getAdjustedRect","parseTransform","startsWith","transformArray","split","inverseTransform","parsedTransform","timeoutId","setTimeout","translateX","clearTimeout","translateY","parseFloat","w","h","defaultOptions","getTransition","getBoundingClientRect","isKeyboardEvent","undefined","getComputedStyle","hasSortableData","getTransformAgnosticClientRect","getWindowClientRect","innerWidth","innerHeight","directions","KeyboardCode","Down","Right","Up","Left","sortableKeyboardCoordinates","scrollableAncestors","isFixed","computedStyle","includes","code","preventDefault","isScrollable","filteredContainers","getEnabled","overflowRegex","properties","some","test","getScrollableAncestors","limit","scrollParents","findScrollableAncestors","isDocument","scrollingElement","parentNode","closestId","getFirstScrollableAncestor","activeDroppable","firstScrollableAncestor","newDroppable","newNode","getScrollableElement","newScrollAncestors","hasDifferentScrollAncestors","hasSameContainer","isSameContainer","isAfterActive","isAfter","offset","rectCoordinates","newCoordinates","subtract","getScrollXCoordinate","scrollX","scrollLeft","getScrollYCoordinate","scrollY","scrollTop","getScrollCoordinates","Direction","isDocumentScrollingElement","getScrollPosition","scrollingContainer","minScroll","dimensions","clientHeight","clientWidth","maxScroll","scrollWidth","scrollHeight","isTop","isLeft","isBottom","isRight","defaultThreshold","getScrollDirectionAndSpeed","scrollContainer","scrollContainerRect","acceleration","thresholdPercentage","direction","speed","threshold","Backward","abs","Forward","getScrollElementRect","getScrollOffsets","getScrollXOffset","getScrollYOffset","scrollIntoViewIfNeeded","measure","scrollIntoView","block","inline","Rect","constructor","scrollOffsets","axis","keys","getScrollOffset","defineProperty","currentOffsets","scrollOffsetsDeltla","enumerable","Listeners","removeAll","removeEventListener","eventName","addEventListener","getEventListenerTarget","EventTarget","hasExceededDistance","measurement","dx","dy","EventName","stopPropagation","defaultKeyboardCodes","start","Space","Enter","cancel","Esc","end","Tab","defaultKeyboardCoordinateGetter","currentCoordinates","KeyboardSensor","props","autoScrollEnabled","referenceCoordinates","windowListeners","handleKeyDown","bind","handleCancel","attach","handleStart","Resize","VisibilityChange","Keydown","activeNode","onStart","context","keyboardCodes","coordinateGetter","scrollBehavior","handleEnd","coordinatesDelta","getCoordinatesDelta","scrollDelta","scrollElementRect","clampedCoordinates","canScrollX","canScrollY","newScrollCoordinates","canScrollToNewCoordinates","scrollTo","behavior","scrollBy","handleMove","getAdjustedCoordinates","coordinates","onMove","onEnd","detach","onCancel","activators","onActivation","nativeEvent","activator","activatorNode","isDistanceConstraint","constraint","isDelayConstraint","AbstractPointerSensor","events","listenerTarget","activated","initialCoordinates","documentListeners","handleKeydown","removeTextSelection","activationConstraint","bypassActivationConstraint","move","name","passive","DragStart","ContextMenu","delay","handlePending","onPending","Click","capture","SelectionChange","tolerance","distance","cancelable","onAbort","getSelection","removeAllRanges","PointerSensor","isPrimary","button","MouseButton","MouseSensor","RightClick","TouchSensor","setup","teardown","AutoScrollActivator","TraversalOrder","useAutoScroller","Pointer","canScroll","draggingRect","enabled","interval","order","TreeOrder","scrollableAncestorRects","scrollIntent","useScrollIntent","setAutoScrollInterval","clearAutoScrollInterval","useInterval","scrollSpeed","scrollDirection","DraggableRect","scrollContainerRef","autoScroll","sortedScrollableAncestors","reverse","JSON","stringify","defaultScrollIntent","previousDelta","previousIntent","sign","useCachedNode","draggableNodes","draggableNode","cachedNode","useCombineActivators","getSyntheticHandler","Sensor","sensorActivators","MeasuringStrategy","MeasuringFrequency","defaultValue","Map","useDroppableMeasuring","containers","dragging","config","queue","setQueue","frequency","containersRef","isDisabled","disabledRef","concat","filter","previousValue","set","measuringScheduled","Always","BeforeDragging","useInitialValue","computeFn","useInitialRect","useMutationObserver","handleMutations","mutationObserver","MutationObserver","disconnect","useResizeObserver","handleResize","resizeObserver","ResizeObserver","defaultMeasure","useRect","fallbackRect","setRect","measureRect","isConnected","records","record","contains","observe","body","childList","subtree","useRectDelta","initialRect","useScrollableAncestors","previousNode","ancestors","useScrollOffsets","elements","scrollCoordinates","setScrollCoordinates","prevElements","handleScroll","previousElements","cleanup","scrollableElement","values","useScrollOffsetsDelta","initialScrollOffsets","hasScrollOffsets","useSensorSetup","teardownFns","useSyntheticListeners","useWindowRect","useRects","firstElement","windowRect","setRects","measureRects","getMeasurableNode","firstChild","useDragOverlayMeasuring","handleNodeChange","nodeRef","setRef","useNodeRef","defaultSensors","defaultData","defaultMeasuringConfiguration","WhileDragging","Optimized","DroppableContainersMap","toArray","getNodeFor","defaultPublicContext","containerNodeRect","measuringConfiguration","defaultInternalContext","ariaDescribedById","InternalContext","PublicContext","getInitialState","nodes","translate","reducer","state","action","DragMove","DragEnd","DragCancel","RegisterDroppable","SetDroppableDisabled","UnregisterDroppable","delete","RestoreFocus","previousActivatorEvent","previousActiveId","activeElement","requestAnimationFrame","focusableNode","findFirstFocusableNode","focus","applyModifiers","modifiers","useMeasuringConfiguration","useLayoutShiftScrollCompensation","initialized","rectDelta","ActiveDraggableContext","Status","DndContext","memo","accessibility","collisionDetection","measuring","store","useReducer","dispatchMonitorEvent","registerMonitorListener","status","setStatus","Uninitialized","isInitialized","Initialized","activeRects","translated","activeRef","activeSensor","setActiveSensor","setActivatorEvent","latestProps","draggableDescribedById","enabledDroppableContainers","activationCoordinates","autoScrollOptions","getAutoScrollerOptions","initialActiveNodeRect","layoutShiftCompensation","parentElement","sensorContext","draggingNode","draggingNodeRect","scrollAdjustedTranslate","overNode","usesDragOverlay","nodeRectDelta","modifiedTranslate","overlayNodeRect","scrollAdjustment","activeNodeScrollDelta","overId","setOver","appliedTranslate","activeSensorRef","instantiateSensor","sensorInstance","onDragAbort","onDragPending","unstable_batchedUpdates","Initializing","createHandler","cancelDrop","shouldCancel","Promise","resolve","bindActivatorToSensorInstantiator","activeDraggableNode","dndKit","defaultPrevented","activationContext","shouldActivate","capturedBy","overContainer","publicContext","internalContext","restoreFocus","activeSensorDisablesAutoscroll","autoScrollGloballyDisabled","NullContext","defaultRole","useDraggable","tabIndex","dataRef","memoizedAttributes","defaultResizeObserverConfig","timeout","useDroppable","resizeObserverConnected","callbackId","resizeObserverDisabled","resizeObserverTimeout","isArray","newElement","previousElement","unobserve","isOver","AnimationManager","animation","clonedChildren","setClonedChildren","setElement","previousChildren","then","cloneElement","defaultTransform","NullifiedContextProvider","baseStyles","touchAction","isKeyboardActivator","PositionedOverlay","forwardRef","as","className","scaleAdjustedTransform","styles","defaultDropAnimationSideEffects","originalStyles","getPropertyValue","setProperty","classList","remove","defaultKeyframeResolver","final","defaultDropAnimationConfiguration","keyframes","sideEffects","opacity","useDropAnimation","activeDraggable","measurableNode","createDefaultDropAnimation","rest","scale","animationKeyframes","firstKeyframe","lastKeyframe","animate","fill","onfinish","useKey","DragOverlay","dropAnimation","dropAnimationConfig","wrapperElement","zIndex","modifiedTransform"],"mappings":"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","ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128]}
|