@dnd-kit/react 0.4.1-beta-20260506012126 → 0.4.1-beta-20260512125751
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/hooks.cjs.map +1 -0
- package/hooks.js.map +1 -0
- package/index.cjs.map +1 -0
- package/index.js.map +1 -0
- package/package.json +13 -5
- package/sortable.cjs.map +1 -0
- package/sortable.js.map +1 -0
- package/utilities.cjs.map +1 -0
- package/utilities.js.map +1 -0
package/hooks.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["src/hooks/useConstant.ts","src/hooks/useIsomorphicLayoutEffect.ts","src/hooks/useForceUpdate.ts","src/hooks/useSignal.ts","src/hooks/useComputed.ts","src/hooks/useDeepSignal.ts","src/hooks/useImmediateEffect.ts","src/hooks/useLatest.ts","src/hooks/useOnValueChange.ts","src/hooks/useOnElementChange.ts"],"names":["useRef","useLayoutEffect","useEffect","useState","useCallback","effect","currentValue","flushSync","useMemo","computed","untracked","target"],"mappings":";;;;;;;AAEO,SAAS,YAAqB,WAAsB,EAAA;AACzD,EAAM,MAAA,GAAA,GAAMA,aAAU,IAAI,CAAA;AAE1B,EAAI,IAAA,CAAC,IAAI,OAAS,EAAA;AAChB,IAAA,GAAA,CAAI,UAAU,WAAY,EAAA;AAAA;AAG5B,EAAA,OAAO,GAAI,CAAA,OAAA;AACb;ACPO,IAAM,SAAA,GACX,OAAO,MAAA,KAAW,WAClB,IAAA,OAAO,MAAO,CAAA,QAAA,KAAa,WAC3B,IAAA,OAAO,MAAO,CAAA,QAAA,CAAS,aAAkB,KAAA,WAAA;AAM9B,IAAA,yBAAA,GAA4B,YACrCC,qBACA,GAAAC;ACZG,SAAS,cAAiB,GAAA;AAC/B,EAAA,MAAM,QAAW,GAAAC,cAAA,CAAS,CAAC,CAAA,CAAE,CAAC,CAAA;AAE9B,EAAA,OAAOC,kBAAY,MAAM;AACvB,IAAS,QAAA,CAAA,CAAC,KAAU,KAAA,KAAA,GAAQ,CAAC,CAAA;AAAA,GAC/B,EAAG,CAAC,QAAQ,CAAC,CAAA;AACf;;;ACAO,SAAS,SAAA,CAAmB,MAAmB,EAAA,IAAA,GAAO,KAAO,EAAA;AAClE,EAAA,MAAM,QAAWJ,GAAAA,YAAAA,CAAO,MAAO,CAAA,IAAA,EAAM,CAAA;AACrC,EAAM,MAAA,IAAA,GAAOA,aAAO,KAAK,CAAA;AACzB,EAAA,MAAM,cAAc,cAAe,EAAA;AAEnC,EAAA,yBAAA;AAAA,IACE,MACEK,aAAO,MAAM;AACX,MAAA,MAAM,gBAAgB,QAAS,CAAA,OAAA;AAC/B,MAAA,MAAMC,gBAAe,MAAO,CAAA,KAAA;AAE5B,MAAA,IAAI,kBAAkBA,aAAc,EAAA;AAClC,QAAA,QAAA,CAAS,OAAUA,GAAAA,aAAAA;AAEnB,QAAI,IAAA,CAAC,KAAK,OAAS,EAAA;AAEnB,QAAA,IAAI,IAAM,EAAA;AACR,UAAAC,kBAAA,CAAU,WAAW,CAAA;AAAA,SAChB,MAAA;AACL,UAAY,WAAA,EAAA;AAAA;AACd;AACF,KACD,CAAA;AAAA,IACH,CAAC,MAAQ,EAAA,IAAA,EAAM,WAAW;AAAA,GAC5B;AAEA,EAAO,OAAA;AAAA,IACL,IAAI,KAAQ,GAAA;AACV,MAAA,IAAA,CAAK,OAAU,GAAA,IAAA;AAEf,MAAA,OAAO,OAAO,IAAK,EAAA;AAAA;AACrB,GACF;AACF;;;ACpCO,SAAS,YACd,OACA,EAAA,YAAA,GAAsB,EAAC,EACvB,OAAO,KACP,EAAA;AACA,EAAM,MAAA,QAAA,GAAWP,aAAO,OAAO,CAAA;AAC/B,EAAA,QAAA,CAAS,OAAU,GAAA,OAAA;AAEnB,EAAO,OAAA,SAAA;AAAA,IACLQ,aAAA,CAAQ,MAAMC,cAAS,CAAA,MAAM,SAAS,OAAQ,EAAC,GAAG,YAAY,CAAA;AAAA,IAC9D;AAAA,GACF;AACF;ACTO,SAAS,aAAA,CACd,QACA,WACG,EAAA;AACH,EAAA,MAAM,OAAUT,GAAAA,YAAAA,iBAAW,IAAA,GAAA,EAA2B,CAAA;AACtD,EAAA,MAAM,cAAc,cAAe,EAAA;AAEnC,EAAA,yBAAA,CAA0B,MAAM;AAC9B,IAAA,IAAI,CAAC,MAAQ,EAAA;AACX,MAAA,OAAA,CAAQ,QAAQ,KAAM,EAAA;AACtB,MAAA;AAAA;AAGF,IAAA,OAAOK,aAAO,MAAM;AArBxB,MAAA,IAAA,EAAA;AAsBM,MAAA,IAAI,KAAQ,GAAA,KAAA;AACZ,MAAA,IAAI,IAAO,GAAA,KAAA;AAEX,MAAW,KAAA,MAAA,KAAA,IAAS,QAAQ,OAAS,EAAA;AACnC,QAAM,MAAA,CAAC,GAAG,CAAI,GAAA,KAAA;AACd,QAAA,MAAM,KAAQ,GAAAK,eAAA,CAAU,MAAM,KAAA,CAAM,CAAC,CAAC,CAAA;AACtC,QAAM,MAAA,WAAA,GAAe,OAAe,GAAG,CAAA;AAEvC,QAAA,IAAI,UAAU,WAAa,EAAA;AACzB,UAAQ,KAAA,GAAA,IAAA;AACR,UAAQ,OAAA,CAAA,OAAA,CAAQ,GAAI,CAAA,GAAA,EAAK,WAAW,CAAA;AACpC,UAAA,IAAA,GAAA,CAAO,EAAc,GAAA,WAAA,IAAA,IAAA,GAAA,MAAA,GAAA,WAAA,CAAA,GAAA,EAAgB,KAAO,EAAA,WAAA,CAAA,KAArC,IAAqD,GAAA,EAAA,GAAA,KAAA;AAAA;AAC9D;AAGF,MAAA,IAAI,KAAO,EAAA;AACT,QAAA,IAAI,IAAM,EAAA;AAIR,UAAe,cAAA,CAAA,MAAMH,kBAAU,CAAA,WAAW,CAAC,CAAA;AAAA,SACtC,MAAA;AACL,UAAY,WAAA,EAAA;AAAA;AACd;AACF,KACD,CAAA;AAAA,GACH,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAOC,OAAAA,aAAAA;AAAA,IACL,MACE,MAAA,GACI,IAAI,KAAA,CAAM,MAAQ,EAAA;AAAA,MAChB,GAAA,CAAIG,SAAQ,GAAK,EAAA;AACf,QAAM,MAAA,KAAA,GAASA,QAAe,GAAG,CAAA;AAEjC,QAAQ,OAAA,CAAA,OAAA,CAAQ,GAAI,CAAA,GAAA,EAAK,KAAK,CAAA;AAE9B,QAAO,OAAA,KAAA;AAAA;AACT,KACD,CACD,GAAA,MAAA;AAAA,IACN,CAAC,MAAM;AAAA,GACT;AACF;;;AC/DO,SAAS,kBAAA,CACd,UACA,CACA,EAAA;AACA,EAAS,QAAA,EAAA;AACX;ACHO,SAAS,UAAa,KAAU,EAAA;AACrC,EAAM,MAAA,QAAA,GAAWX,aAAsB,KAAK,CAAA;AAE5C,EAAA,yBAAA,CAA0B,MAAM;AAC9B,IAAA,QAAA,CAAS,OAAU,GAAA,KAAA;AAAA,GACrB,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAO,OAAA,QAAA;AACT;ACVO,SAAS,iBACd,KACA,EAAA,QAAA,EACAK,UAASH,eACT,EAAA,OAAA,GAAU,OAAO,EACjB,EAAA;AACA,EAAM,MAAA,OAAA,GAAUF,aAAU,KAAK,CAAA;AAE/B,EAAAK,QAAO,MAAM;AACX,IAAA,MAAM,WAAW,OAAQ,CAAA,OAAA;AAEzB,IAAA,IAAI,CAAC,OAAA,CAAQ,KAAO,EAAA,QAAQ,CAAG,EAAA;AAC7B,MAAA,OAAA,CAAQ,OAAU,GAAA,KAAA;AAClB,MAAA,QAAA,CAAS,OAAO,QAAQ,CAAA;AAAA;AAC1B,GACC,EAAA,CAAC,QAAU,EAAA,KAAK,CAAC,CAAA;AACtB;ACbO,SAAS,kBAAA,CACd,OACA,QACA,EAAA;AACA,EAAA,MAAM,QAAWL,GAAAA,YAAAA,CAAOM,sBAAa,CAAA,KAAK,CAAC,CAAA;AAE3C,EAAA,yBAAA,CAA0B,MAAM;AAC9B,IAAM,MAAA,OAAA,GAAUA,uBAAa,KAAK,CAAA;AAElC,IAAI,IAAA,OAAA,KAAY,SAAS,OAAS,EAAA;AAChC,MAAA,QAAA,CAAS,OAAU,GAAA,OAAA;AACnB,MAAA,QAAA,CAAS,OAAO,CAAA;AAAA;AAClB,GACD,CAAA;AACH","file":"hooks.cjs","sourcesContent":["import {type MutableRefObject, useRef} from 'react';\n\nexport function useConstant<T = any>(initializer: () => T) {\n const ref = useRef<T>(null) as MutableRefObject<T>;\n\n if (!ref.current) {\n ref.current = initializer();\n }\n\n return ref.current;\n}\n","import {useEffect, useLayoutEffect} from 'react';\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\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, useState} from 'react';\n\nexport function useForceUpdate() {\n const setState = useState(0)[1];\n\n return useCallback(() => {\n setState((value) => value + 1);\n }, [setState]);\n}\n","import {useRef, useState} from 'react';\nimport {flushSync} from 'react-dom';\nimport {effect, Signal} from '@dnd-kit/state';\n\nimport {useIsomorphicLayoutEffect} from './useIsomorphicLayoutEffect.ts';\nimport {useForceUpdate} from './useForceUpdate.ts';\n\n/** Trigger a re-render when reading a signal. */\nexport function useSignal<T = any>(signal: Signal<T>, sync = false) {\n const previous = useRef(signal.peek());\n const read = useRef(false);\n const forceUpdate = useForceUpdate();\n\n useIsomorphicLayoutEffect(\n () =>\n effect(() => {\n const previousValue = previous.current;\n const currentValue = signal.value;\n\n if (previousValue !== currentValue) {\n previous.current = currentValue;\n\n if (!read.current) return;\n\n if (sync) {\n flushSync(forceUpdate);\n } else {\n forceUpdate();\n }\n }\n }),\n [signal, sync, forceUpdate]\n );\n\n return {\n get value() {\n read.current = true;\n\n return signal.peek();\n },\n };\n}\n","import {useMemo, useRef} from 'react';\nimport {computed} from '@dnd-kit/state';\n\nimport {useSignal} from './useSignal.ts';\n\nexport function useComputed<T = any>(\n compute: () => T,\n dependencies: any[] = [],\n sync = false\n) {\n const $compute = useRef(compute);\n $compute.current = compute;\n\n return useSignal(\n useMemo(() => computed(() => $compute.current()), dependencies),\n sync\n );\n}\n","import {useMemo, useRef} from 'react';\nimport {flushSync} from 'react-dom';\nimport {effect, untracked} from '@dnd-kit/state';\n\nimport {useIsomorphicLayoutEffect} from './useIsomorphicLayoutEffect.ts';\nimport {useForceUpdate} from './useForceUpdate.ts';\n\n/** Trigger a re-render when reading signal properties of an object. */\nexport function useDeepSignal<T extends object | null | undefined>(\n target: T,\n synchronous?: (property: keyof T, oldValue: any, newValue: any) => boolean\n): T {\n const tracked = useRef(new Map<string | symbol, any>());\n const forceUpdate = useForceUpdate();\n\n useIsomorphicLayoutEffect(() => {\n if (!target) {\n tracked.current.clear();\n return;\n }\n\n return effect(() => {\n let stale = false;\n let sync = false;\n\n for (const entry of tracked.current) {\n const [key] = entry;\n const value = untracked(() => entry[1]);\n const latestValue = (target as any)[key];\n\n if (value !== latestValue) {\n stale = true;\n tracked.current.set(key, latestValue);\n sync = synchronous?.(key as keyof T, value, latestValue) ?? false;\n }\n }\n\n if (stale) {\n if (sync) {\n // Defer flushSync to a microtask to avoid calling it from within\n // a React lifecycle method (e.g. useEffect batch), which happens when\n // signal updates are triggered synchronously from a React effect\n queueMicrotask(() => flushSync(forceUpdate));\n } else {\n forceUpdate();\n }\n }\n });\n }, [target]);\n\n return useMemo(\n () =>\n target\n ? new Proxy(target, {\n get(target, key) {\n const value = (target as any)[key];\n\n tracked.current.set(key, value);\n\n return value;\n },\n })\n : target,\n [target]\n );\n}\n","import type {DependencyList, EffectCallback} from 'react';\n\nexport function useImmediateEffect(\n callback: EffectCallback,\n _?: DependencyList\n) {\n callback();\n}\n","import {useRef} from 'react';\n\nimport {useIsomorphicLayoutEffect} from './useIsomorphicLayoutEffect.ts';\n\nexport function useLatest<T>(value: T) {\n const valueRef = useRef<T | undefined>(value);\n\n useIsomorphicLayoutEffect(() => {\n valueRef.current = value;\n }, [value]);\n\n return valueRef;\n}\n","import {useRef, useEffect} from 'react';\n\nexport function useOnValueChange<T>(\n value: T,\n onChange: (value: T, oldValue: T) => void,\n effect = useEffect,\n compare = Object.is\n) {\n const tracked = useRef<T>(value);\n\n effect(() => {\n const oldValue = tracked.current;\n\n if (!compare(value, oldValue)) {\n tracked.current = value;\n onChange(value, oldValue);\n }\n }, [onChange, value]);\n}\n","import {useRef} from 'react';\nimport {currentValue, type RefOrValue} from '@dnd-kit/react/utilities';\n\nimport {useIsomorphicLayoutEffect} from './useIsomorphicLayoutEffect.ts';\n\nexport function useOnElementChange(\n value: RefOrValue<Element>,\n onChange: (value: Element | undefined) => void\n) {\n const previous = useRef(currentValue(value));\n\n useIsomorphicLayoutEffect(() => {\n const current = currentValue(value);\n\n if (current !== previous.current) {\n previous.current = current;\n onChange(current);\n }\n });\n}\n"]}
|
package/hooks.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["src/hooks/useConstant.ts","src/hooks/useIsomorphicLayoutEffect.ts","src/hooks/useForceUpdate.ts","src/hooks/useSignal.ts","src/hooks/useComputed.ts","src/hooks/useDeepSignal.ts","src/hooks/useImmediateEffect.ts","src/hooks/useLatest.ts","src/hooks/useOnValueChange.ts","src/hooks/useOnElementChange.ts"],"names":["useRef","currentValue","effect","flushSync","useMemo","target","useEffect"],"mappings":";;;;;AAEO,SAAS,YAAqB,WAAsB,EAAA;AACzD,EAAM,MAAA,GAAA,GAAM,OAAU,IAAI,CAAA;AAE1B,EAAI,IAAA,CAAC,IAAI,OAAS,EAAA;AAChB,IAAA,GAAA,CAAI,UAAU,WAAY,EAAA;AAAA;AAG5B,EAAA,OAAO,GAAI,CAAA,OAAA;AACb;ACPO,IAAM,SAAA,GACX,OAAO,MAAA,KAAW,WAClB,IAAA,OAAO,MAAO,CAAA,QAAA,KAAa,WAC3B,IAAA,OAAO,MAAO,CAAA,QAAA,CAAS,aAAkB,KAAA,WAAA;AAM9B,IAAA,yBAAA,GAA4B,YACrC,eACA,GAAA;ACZG,SAAS,cAAiB,GAAA;AAC/B,EAAA,MAAM,QAAW,GAAA,QAAA,CAAS,CAAC,CAAA,CAAE,CAAC,CAAA;AAE9B,EAAA,OAAO,YAAY,MAAM;AACvB,IAAS,QAAA,CAAA,CAAC,KAAU,KAAA,KAAA,GAAQ,CAAC,CAAA;AAAA,GAC/B,EAAG,CAAC,QAAQ,CAAC,CAAA;AACf;;;ACAO,SAAS,SAAA,CAAmB,MAAmB,EAAA,IAAA,GAAO,KAAO,EAAA;AAClE,EAAA,MAAM,QAAWA,GAAAA,MAAAA,CAAO,MAAO,CAAA,IAAA,EAAM,CAAA;AACrC,EAAM,MAAA,IAAA,GAAOA,OAAO,KAAK,CAAA;AACzB,EAAA,MAAM,cAAc,cAAe,EAAA;AAEnC,EAAA,yBAAA;AAAA,IACE,MACE,OAAO,MAAM;AACX,MAAA,MAAM,gBAAgB,QAAS,CAAA,OAAA;AAC/B,MAAA,MAAMC,gBAAe,MAAO,CAAA,KAAA;AAE5B,MAAA,IAAI,kBAAkBA,aAAc,EAAA;AAClC,QAAA,QAAA,CAAS,OAAUA,GAAAA,aAAAA;AAEnB,QAAI,IAAA,CAAC,KAAK,OAAS,EAAA;AAEnB,QAAA,IAAI,IAAM,EAAA;AACR,UAAA,SAAA,CAAU,WAAW,CAAA;AAAA,SAChB,MAAA;AACL,UAAY,WAAA,EAAA;AAAA;AACd;AACF,KACD,CAAA;AAAA,IACH,CAAC,MAAQ,EAAA,IAAA,EAAM,WAAW;AAAA,GAC5B;AAEA,EAAO,OAAA;AAAA,IACL,IAAI,KAAQ,GAAA;AACV,MAAA,IAAA,CAAK,OAAU,GAAA,IAAA;AAEf,MAAA,OAAO,OAAO,IAAK,EAAA;AAAA;AACrB,GACF;AACF;;;ACpCO,SAAS,YACd,OACA,EAAA,YAAA,GAAsB,EAAC,EACvB,OAAO,KACP,EAAA;AACA,EAAM,MAAA,QAAA,GAAWD,OAAO,OAAO,CAAA;AAC/B,EAAA,QAAA,CAAS,OAAU,GAAA,OAAA;AAEnB,EAAO,OAAA,SAAA;AAAA,IACL,OAAA,CAAQ,MAAM,QAAS,CAAA,MAAM,SAAS,OAAQ,EAAC,GAAG,YAAY,CAAA;AAAA,IAC9D;AAAA,GACF;AACF;ACTO,SAAS,aAAA,CACd,QACA,WACG,EAAA;AACH,EAAA,MAAM,OAAUA,GAAAA,MAAAA,iBAAW,IAAA,GAAA,EAA2B,CAAA;AACtD,EAAA,MAAM,cAAc,cAAe,EAAA;AAEnC,EAAA,yBAAA,CAA0B,MAAM;AAC9B,IAAA,IAAI,CAAC,MAAQ,EAAA;AACX,MAAA,OAAA,CAAQ,QAAQ,KAAM,EAAA;AACtB,MAAA;AAAA;AAGF,IAAA,OAAOE,OAAO,MAAM;AArBxB,MAAA,IAAA,EAAA;AAsBM,MAAA,IAAI,KAAQ,GAAA,KAAA;AACZ,MAAA,IAAI,IAAO,GAAA,KAAA;AAEX,MAAW,KAAA,MAAA,KAAA,IAAS,QAAQ,OAAS,EAAA;AACnC,QAAM,MAAA,CAAC,GAAG,CAAI,GAAA,KAAA;AACd,QAAA,MAAM,KAAQ,GAAA,SAAA,CAAU,MAAM,KAAA,CAAM,CAAC,CAAC,CAAA;AACtC,QAAM,MAAA,WAAA,GAAe,OAAe,GAAG,CAAA;AAEvC,QAAA,IAAI,UAAU,WAAa,EAAA;AACzB,UAAQ,KAAA,GAAA,IAAA;AACR,UAAQ,OAAA,CAAA,OAAA,CAAQ,GAAI,CAAA,GAAA,EAAK,WAAW,CAAA;AACpC,UAAA,IAAA,GAAA,CAAO,EAAc,GAAA,WAAA,IAAA,IAAA,GAAA,MAAA,GAAA,WAAA,CAAA,GAAA,EAAgB,KAAO,EAAA,WAAA,CAAA,KAArC,IAAqD,GAAA,EAAA,GAAA,KAAA;AAAA;AAC9D;AAGF,MAAA,IAAI,KAAO,EAAA;AACT,QAAA,IAAI,IAAM,EAAA;AAIR,UAAe,cAAA,CAAA,MAAMC,SAAU,CAAA,WAAW,CAAC,CAAA;AAAA,SACtC,MAAA;AACL,UAAY,WAAA,EAAA;AAAA;AACd;AACF,KACD,CAAA;AAAA,GACH,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAOC,OAAAA,OAAAA;AAAA,IACL,MACE,MAAA,GACI,IAAI,KAAA,CAAM,MAAQ,EAAA;AAAA,MAChB,GAAA,CAAIC,SAAQ,GAAK,EAAA;AACf,QAAM,MAAA,KAAA,GAASA,QAAe,GAAG,CAAA;AAEjC,QAAQ,OAAA,CAAA,OAAA,CAAQ,GAAI,CAAA,GAAA,EAAK,KAAK,CAAA;AAE9B,QAAO,OAAA,KAAA;AAAA;AACT,KACD,CACD,GAAA,MAAA;AAAA,IACN,CAAC,MAAM;AAAA,GACT;AACF;;;AC/DO,SAAS,kBAAA,CACd,UACA,CACA,EAAA;AACA,EAAS,QAAA,EAAA;AACX;ACHO,SAAS,UAAa,KAAU,EAAA;AACrC,EAAM,MAAA,QAAA,GAAWL,OAAsB,KAAK,CAAA;AAE5C,EAAA,yBAAA,CAA0B,MAAM;AAC9B,IAAA,QAAA,CAAS,OAAU,GAAA,KAAA;AAAA,GACrB,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAO,OAAA,QAAA;AACT;ACVO,SAAS,iBACd,KACA,EAAA,QAAA,EACAE,UAASI,SACT,EAAA,OAAA,GAAU,OAAO,EACjB,EAAA;AACA,EAAM,MAAA,OAAA,GAAUN,OAAU,KAAK,CAAA;AAE/B,EAAAE,QAAO,MAAM;AACX,IAAA,MAAM,WAAW,OAAQ,CAAA,OAAA;AAEzB,IAAA,IAAI,CAAC,OAAA,CAAQ,KAAO,EAAA,QAAQ,CAAG,EAAA;AAC7B,MAAA,OAAA,CAAQ,OAAU,GAAA,KAAA;AAClB,MAAA,QAAA,CAAS,OAAO,QAAQ,CAAA;AAAA;AAC1B,GACC,EAAA,CAAC,QAAU,EAAA,KAAK,CAAC,CAAA;AACtB;ACbO,SAAS,kBAAA,CACd,OACA,QACA,EAAA;AACA,EAAA,MAAM,QAAWF,GAAAA,MAAAA,CAAO,YAAa,CAAA,KAAK,CAAC,CAAA;AAE3C,EAAA,yBAAA,CAA0B,MAAM;AAC9B,IAAM,MAAA,OAAA,GAAU,aAAa,KAAK,CAAA;AAElC,IAAI,IAAA,OAAA,KAAY,SAAS,OAAS,EAAA;AAChC,MAAA,QAAA,CAAS,OAAU,GAAA,OAAA;AACnB,MAAA,QAAA,CAAS,OAAO,CAAA;AAAA;AAClB,GACD,CAAA;AACH","file":"hooks.js","sourcesContent":["import {type MutableRefObject, useRef} from 'react';\n\nexport function useConstant<T = any>(initializer: () => T) {\n const ref = useRef<T>(null) as MutableRefObject<T>;\n\n if (!ref.current) {\n ref.current = initializer();\n }\n\n return ref.current;\n}\n","import {useEffect, useLayoutEffect} from 'react';\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\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, useState} from 'react';\n\nexport function useForceUpdate() {\n const setState = useState(0)[1];\n\n return useCallback(() => {\n setState((value) => value + 1);\n }, [setState]);\n}\n","import {useRef, useState} from 'react';\nimport {flushSync} from 'react-dom';\nimport {effect, Signal} from '@dnd-kit/state';\n\nimport {useIsomorphicLayoutEffect} from './useIsomorphicLayoutEffect.ts';\nimport {useForceUpdate} from './useForceUpdate.ts';\n\n/** Trigger a re-render when reading a signal. */\nexport function useSignal<T = any>(signal: Signal<T>, sync = false) {\n const previous = useRef(signal.peek());\n const read = useRef(false);\n const forceUpdate = useForceUpdate();\n\n useIsomorphicLayoutEffect(\n () =>\n effect(() => {\n const previousValue = previous.current;\n const currentValue = signal.value;\n\n if (previousValue !== currentValue) {\n previous.current = currentValue;\n\n if (!read.current) return;\n\n if (sync) {\n flushSync(forceUpdate);\n } else {\n forceUpdate();\n }\n }\n }),\n [signal, sync, forceUpdate]\n );\n\n return {\n get value() {\n read.current = true;\n\n return signal.peek();\n },\n };\n}\n","import {useMemo, useRef} from 'react';\nimport {computed} from '@dnd-kit/state';\n\nimport {useSignal} from './useSignal.ts';\n\nexport function useComputed<T = any>(\n compute: () => T,\n dependencies: any[] = [],\n sync = false\n) {\n const $compute = useRef(compute);\n $compute.current = compute;\n\n return useSignal(\n useMemo(() => computed(() => $compute.current()), dependencies),\n sync\n );\n}\n","import {useMemo, useRef} from 'react';\nimport {flushSync} from 'react-dom';\nimport {effect, untracked} from '@dnd-kit/state';\n\nimport {useIsomorphicLayoutEffect} from './useIsomorphicLayoutEffect.ts';\nimport {useForceUpdate} from './useForceUpdate.ts';\n\n/** Trigger a re-render when reading signal properties of an object. */\nexport function useDeepSignal<T extends object | null | undefined>(\n target: T,\n synchronous?: (property: keyof T, oldValue: any, newValue: any) => boolean\n): T {\n const tracked = useRef(new Map<string | symbol, any>());\n const forceUpdate = useForceUpdate();\n\n useIsomorphicLayoutEffect(() => {\n if (!target) {\n tracked.current.clear();\n return;\n }\n\n return effect(() => {\n let stale = false;\n let sync = false;\n\n for (const entry of tracked.current) {\n const [key] = entry;\n const value = untracked(() => entry[1]);\n const latestValue = (target as any)[key];\n\n if (value !== latestValue) {\n stale = true;\n tracked.current.set(key, latestValue);\n sync = synchronous?.(key as keyof T, value, latestValue) ?? false;\n }\n }\n\n if (stale) {\n if (sync) {\n // Defer flushSync to a microtask to avoid calling it from within\n // a React lifecycle method (e.g. useEffect batch), which happens when\n // signal updates are triggered synchronously from a React effect\n queueMicrotask(() => flushSync(forceUpdate));\n } else {\n forceUpdate();\n }\n }\n });\n }, [target]);\n\n return useMemo(\n () =>\n target\n ? new Proxy(target, {\n get(target, key) {\n const value = (target as any)[key];\n\n tracked.current.set(key, value);\n\n return value;\n },\n })\n : target,\n [target]\n );\n}\n","import type {DependencyList, EffectCallback} from 'react';\n\nexport function useImmediateEffect(\n callback: EffectCallback,\n _?: DependencyList\n) {\n callback();\n}\n","import {useRef} from 'react';\n\nimport {useIsomorphicLayoutEffect} from './useIsomorphicLayoutEffect.ts';\n\nexport function useLatest<T>(value: T) {\n const valueRef = useRef<T | undefined>(value);\n\n useIsomorphicLayoutEffect(() => {\n valueRef.current = value;\n }, [value]);\n\n return valueRef;\n}\n","import {useRef, useEffect} from 'react';\n\nexport function useOnValueChange<T>(\n value: T,\n onChange: (value: T, oldValue: T) => void,\n effect = useEffect,\n compare = Object.is\n) {\n const tracked = useRef<T>(value);\n\n effect(() => {\n const oldValue = tracked.current;\n\n if (!compare(value, oldValue)) {\n tracked.current = value;\n onChange(value, oldValue);\n }\n }, [onChange, value]);\n}\n","import {useRef} from 'react';\nimport {currentValue, type RefOrValue} from '@dnd-kit/react/utilities';\n\nimport {useIsomorphicLayoutEffect} from './useIsomorphicLayoutEffect.ts';\n\nexport function useOnElementChange(\n value: RefOrValue<Element>,\n onChange: (value: Element | undefined) => void\n) {\n const previous = useRef(currentValue(value));\n\n useIsomorphicLayoutEffect(() => {\n const current = currentValue(value);\n\n if (current !== previous.current) {\n previous.current = current;\n onChange(current);\n }\n });\n}\n"]}
|
package/index.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["src/core/context/context.ts","src/core/context/renderer.ts","src/core/context/DragDropProvider.tsx","src/core/hooks/useDragDropManager.ts","src/core/hooks/useInstance.ts","src/core/draggable/useDraggable.ts","src/core/draggable/DragOverlay.tsx","../geometry/dist/index.mjs","../collision/dist/index.js","src/core/droppable/useDroppable.ts","src/core/hooks/useDragDropMonitor.ts","src/core/hooks/useDragOperation.ts"],"names":["DragDropManager","createContext","memo","forwardRef","useState","useRef","useMemo","_a","startTransition","useIsomorphicLayoutEffect","useImperativeHandle","deepEqual","resolveCustomizable","defaultPreset","useLatest","useEffect","useOnValueChange","jsxs","jsx","useInsertionEffect","useContext","Draggable","currentValue","useDeepSignal","useOnElementChange","handle","element","useCallback","useComputed","Feedback","createElement","__defProp","__defNormalProp","ValueHistory","derived","batch","CollisionType","CollisionPriority","CollisionType2","CollisionPriority2","Droppable"],"mappings":"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","file":"index.cjs","sourcesContent":["'use client';\n\nimport {createContext} from 'react';\nimport {DragDropManager} from '@dnd-kit/dom';\n\nexport const defaultManager = new DragDropManager();\n\nexport const DragDropContext = createContext<DragDropManager | null>(\n defaultManager\n);\n","import {\n forwardRef,\n memo,\n startTransition,\n useImperativeHandle,\n useState,\n useRef,\n useMemo,\n} from 'react';\nimport type {Renderer as AbstractRenderer} from '@dnd-kit/abstract';\nimport {useIsomorphicLayoutEffect} from '@dnd-kit/react/hooks';\n\nexport type ReactRenderer = {\n renderer: AbstractRenderer;\n trackRendering: (callback: () => void) => void;\n};\n\nexport const Renderer = memo(\n forwardRef<ReactRenderer, {children: React.ReactNode}>(({children}, ref) => {\n const [transitionCount, setTransitionCount] = useState(0);\n const rendering = useRef<Promise<void> | null>(null);\n const resolver = useRef<(() => void) | null>(null);\n const renderer = useMemo<ReactRenderer>(\n () => ({\n renderer: {\n get rendering() {\n return rendering.current ?? Promise.resolve();\n },\n },\n trackRendering(callback: () => void) {\n if (!rendering.current) {\n rendering.current = new Promise<void>((resolve) => {\n resolver.current = resolve;\n });\n }\n\n startTransition(() => {\n callback();\n setTransitionCount((count) => count + 1);\n });\n },\n }),\n []\n );\n\n useIsomorphicLayoutEffect(() => {\n resolver.current?.();\n rendering.current = null;\n }, [children, transitionCount]);\n\n useImperativeHandle(ref, () => renderer);\n\n return null;\n })\n);\n","'use client';\n\nimport {\n useEffect,\n useRef,\n useInsertionEffect,\n type PropsWithChildren,\n} from 'react';\nimport type {Data, DragDropEventHandlers} from '@dnd-kit/abstract';\nimport {\n DragDropManager,\n defaultPreset,\n resolveCustomizable,\n} from '@dnd-kit/dom';\nimport type {DragDropManagerInput, Draggable, Droppable} from '@dnd-kit/dom';\nimport {useLatest, useOnValueChange} from '@dnd-kit/react/hooks';\nimport {deepEqual} from '@dnd-kit/state';\n\nimport {DragDropContext} from './context.ts';\nimport {Renderer, type ReactRenderer} from './renderer.ts';\n\nexport type Events<\n T extends Data = Data,\n U extends Draggable<T> = Draggable<T>,\n V extends Droppable<T> = Droppable<T>,\n W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>,\n> = DragDropEventHandlers<U, V, W>;\n\nexport interface Props<\n T extends Data = Data,\n U extends Draggable<T> = Draggable<T>,\n V extends Droppable<T> = Droppable<T>,\n W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>,\n> extends DragDropManagerInput,\n PropsWithChildren {\n manager?: W;\n onBeforeDragStart?: Events<T, U, V, W>['beforedragstart'];\n onCollision?: Events<T, U, V, W>['collision'];\n onDragStart?: Events<T, U, V, W>['dragstart'];\n onDragMove?: Events<T, U, V, W>['dragmove'];\n onDragOver?: Events<T, U, V, W>['dragover'];\n onDragEnd?: Events<T, U, V, W>['dragend'];\n}\n\nconst options = [undefined, deepEqual] as const;\n\nexport function DragDropProvider<\n T extends Data = Data,\n U extends Draggable<T> = Draggable<T>,\n V extends Droppable<T> = Droppable<T>,\n W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>,\n>({\n children,\n onCollision,\n onBeforeDragStart,\n onDragStart,\n onDragMove,\n onDragOver,\n onDragEnd,\n ...input\n}: Props<T, U, V, W>) {\n const rendererRef = useRef<ReactRenderer | null>(null);\n const {\n plugins: pluginsInput,\n modifiers: modifiersInput,\n sensors: sensorsInput,\n } = input;\n const plugins = resolveCustomizable(pluginsInput, defaultPreset.plugins);\n const sensors = resolveCustomizable(sensorsInput, defaultPreset.sensors);\n const modifiers = resolveCustomizable(\n modifiersInput,\n defaultPreset.modifiers\n );\n const handleBeforeDragStart = useLatest(onBeforeDragStart);\n const handleDragStart = useLatest(onDragStart);\n const handleDragOver = useLatest(onDragOver);\n const handleDragMove = useLatest(onDragMove);\n const handleDragEnd = useLatest(onDragEnd);\n const handleCollision = useLatest(onCollision);\n const manager = useStableInstance<W>(() => {\n return input.manager ?? (new DragDropManager<T, U, V>(input) as W);\n });\n\n useEffect(() => {\n if (!rendererRef.current) throw new Error('Renderer not found');\n\n const {renderer, trackRendering} = rendererRef.current;\n const {monitor} = manager;\n\n manager.renderer = renderer;\n\n const listeners = [\n monitor.addEventListener('beforedragstart', (event) => {\n const callback = handleBeforeDragStart.current;\n\n if (callback) {\n trackRendering(() => callback(event, manager));\n }\n }),\n monitor.addEventListener('dragstart', (event) =>\n handleDragStart.current?.(event, manager)\n ),\n monitor.addEventListener('dragover', (event) => {\n const callback = handleDragOver.current;\n\n if (callback) {\n trackRendering(() => callback(event, manager));\n }\n }),\n monitor.addEventListener('dragmove', (event) => {\n const callback = handleDragMove.current;\n\n if (callback) {\n trackRendering(() => callback(event, manager));\n }\n }),\n monitor.addEventListener('dragend', (event) => {\n const callback = handleDragEnd.current;\n\n if (callback) {\n trackRendering(() => callback(event, manager));\n }\n }),\n monitor.addEventListener('collision', (event) =>\n handleCollision.current?.(event, manager)\n ),\n ];\n\n return () => listeners.forEach((dispose) => dispose());\n }, [manager]);\n\n useOnValueChange(\n plugins,\n () => manager && (manager.plugins = plugins),\n ...options\n );\n useOnValueChange(\n sensors,\n () => manager && (manager.sensors = sensors),\n ...options\n );\n useOnValueChange(\n modifiers,\n () => manager && (manager.modifiers = modifiers),\n ...options\n );\n\n return (\n <DragDropContext.Provider value={manager as any}>\n <Renderer ref={rendererRef}>{children}</Renderer>\n {children}\n </DragDropContext.Provider>\n );\n}\n\nfunction useStableInstance<T extends {destroy(): void}>(create: () => T): T {\n const ref = useRef<T | null>(null);\n\n if (!ref.current) {\n ref.current = create();\n }\n\n useInsertionEffect(() => {\n return () => ref.current?.destroy();\n }, []);\n\n return ref.current;\n}\n","import {useContext} from 'react';\nimport type {Data} from '@dnd-kit/abstract';\nimport type {DragDropManager, Draggable, Droppable} from '@dnd-kit/dom';\n\nimport {DragDropContext} from '../context/context.ts';\n\nexport function useDragDropManager<\n T extends Data = Data,\n U extends Draggable<T> = Draggable<T>,\n V extends Droppable<T> = Droppable<T>,\n W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>,\n>(): W | null {\n return useContext(DragDropContext) as W | null;\n}\n","import {useState} from 'react';\nimport type {DragDropManager} from '@dnd-kit/abstract';\nimport type {CleanupFunction} from '@dnd-kit/state';\nimport {useIsomorphicLayoutEffect} from '@dnd-kit/react/hooks';\n\nimport {useDragDropManager} from './useDragDropManager.ts';\n\nexport interface Instance<\n T extends DragDropManager<any, any> = DragDropManager<any, any>,\n> {\n manager: T | undefined;\n register(): CleanupFunction | void;\n}\n\nexport function useInstance<T extends Instance>(\n initializer: (manager: DragDropManager<any, any> | undefined) => T\n): T {\n const manager = useDragDropManager() ?? undefined;\n const [instance] = useState<T>(() => initializer(manager));\n\n if (instance.manager !== manager) {\n instance.manager = manager;\n }\n\n useIsomorphicLayoutEffect(instance.register, [manager, instance]);\n\n return instance;\n}\n","import {useCallback} from 'react';\nimport type {Data} from '@dnd-kit/abstract';\nimport {deepEqual} from '@dnd-kit/state';\nimport {Draggable} from '@dnd-kit/dom';\nimport type {DraggableInput} from '@dnd-kit/dom';\nimport {\n useOnValueChange,\n useOnElementChange,\n useDeepSignal,\n} from '@dnd-kit/react/hooks';\nimport {currentValue, type RefOrValue} from '@dnd-kit/react/utilities';\n\nimport {useInstance} from '../hooks/useInstance.ts';\n\nexport interface UseDraggableInput<T extends Data = Data>\n extends Omit<DraggableInput<T>, 'handle' | 'element'> {\n handle?: RefOrValue<Element>;\n element?: RefOrValue<Element>;\n}\n\nexport function useDraggable<T extends Data = Data>(\n input: UseDraggableInput<T>\n) {\n const {disabled, data, element, handle, id, modifiers, sensors, plugins} =\n input;\n const draggable = useInstance(\n (manager) =>\n new Draggable(\n {\n ...input,\n register: false,\n handle: currentValue(handle),\n element: currentValue(element),\n },\n manager\n )\n );\n const trackedDraggable = useDeepSignal(draggable, shouldUpdateSynchronously);\n\n useOnValueChange(id, () => (draggable.id = id));\n useOnElementChange(handle, (handle) => (draggable.handle = handle));\n useOnElementChange(element, (element) => (draggable.element = element));\n useOnValueChange(data, () => data && (draggable.data = data));\n useOnValueChange(disabled, () => (draggable.disabled = disabled === true));\n useOnValueChange(\n sensors,\n () => (draggable.sensors = sensors),\n undefined,\n deepEqual\n );\n useOnValueChange(\n modifiers,\n () => (draggable.modifiers = modifiers),\n undefined,\n deepEqual\n );\n useOnValueChange(\n plugins,\n () => (draggable.plugins = plugins),\n undefined,\n deepEqual\n );\n useOnValueChange(\n input.alignment,\n () => (draggable.alignment = input.alignment)\n );\n\n return {\n draggable: trackedDraggable,\n get isDragging() {\n return trackedDraggable.isDragging;\n },\n get isDropping() {\n return trackedDraggable.isDropping;\n },\n get isDragSource() {\n return trackedDraggable.isDragSource;\n },\n handleRef: useCallback(\n (element: Element | null) => {\n draggable.handle = element ?? undefined;\n },\n [draggable]\n ),\n ref: useCallback(\n (element: Element | null) => {\n if (\n !element &&\n draggable.element?.isConnected &&\n !draggable.manager?.dragOperation.status.idle\n ) {\n return;\n }\n\n draggable.element = element ?? undefined;\n },\n [draggable]\n ),\n };\n}\n\nfunction shouldUpdateSynchronously(key: string, oldValue: any, newValue: any) {\n // Update synchronously after drop animation\n if (key === 'isDragSource' && !newValue && oldValue) return true;\n\n return false;\n}\n","import {createElement, useEffect, useMemo, useRef, type ReactNode} from 'react';\nimport {useComputed, useDeepSignal} from '@dnd-kit/react/hooks';\nimport {DragDropManager, Draggable, Feedback} from '@dnd-kit/dom';\nimport type {DropAnimation} from '@dnd-kit/dom';\nimport {Data} from '@dnd-kit/abstract';\n\nimport {useDragDropManager} from '../hooks/useDragDropManager.ts';\nimport {DragDropContext} from '../context/context.ts';\n\nexport interface Props<T extends Data, U extends Draggable<T>> {\n className?: string;\n children: ReactNode | ((source: U) => ReactNode);\n /**\n * Customize or disable the drop animation that plays when a drag operation ends.\n *\n * - `undefined` – use the default animation (250ms ease)\n * - `null` – disable the drop animation entirely\n * - `{duration, easing}` – customize the animation timing\n * - `(context) => Promise<void> | void` – provide a fully custom animation function\n */\n dropAnimation?: DropAnimation | null;\n style?: React.CSSProperties;\n tag?: string;\n disabled?: boolean | ((source: U | null) => boolean);\n}\n\nexport function DragOverlay<T extends Data, U extends Draggable<T>>({\n children,\n className,\n dropAnimation,\n style,\n tag,\n disabled,\n}: Props<T, U>) {\n const ref = useRef<HTMLDivElement | null>(null);\n const manager = useDragDropManager<T, U>();\n const source =\n useComputed(() => manager?.dragOperation.source, [manager]).value ?? null;\n const isDisabled =\n typeof disabled === 'function' ? disabled(source) : disabled;\n\n useEffect(() => {\n if (!ref.current || !manager || isDisabled) return;\n\n const feedback = manager.plugins.find(\n (plugin) => plugin instanceof Feedback\n );\n\n if (!feedback) return;\n\n feedback.overlay = ref.current;\n\n return () => {\n feedback.overlay = undefined;\n };\n }, [manager, isDisabled]);\n\n useEffect(() => {\n if (!manager) return;\n\n const feedback = manager.plugins.find(\n (plugin) => plugin instanceof Feedback\n );\n\n if (!feedback) return;\n\n feedback.dropAnimation = dropAnimation;\n\n return () => {\n feedback.dropAnimation = undefined;\n };\n }, [manager, dropAnimation]);\n\n // Prevent children of the overlay from registering themselves as draggables or droppables\n const patchedManager = useMemo(() => {\n if (!manager) return null;\n\n const patchedRegistry = new Proxy(manager.registry, {\n get(target, property) {\n if (property === 'register' || property === 'unregister') {\n return noop;\n }\n\n return target[property as keyof typeof target];\n },\n });\n\n return new Proxy(manager, {\n get(target, property) {\n if (property === 'registry') {\n return patchedRegistry;\n }\n\n return target[property as keyof typeof target];\n },\n });\n }, [manager]);\n\n return (\n <DragDropContext.Provider value={patchedManager as DragDropManager | null}>\n {createElement(\n tag || 'div',\n {ref, className, style, 'data-dnd-overlay': true},\n\n renderChildren()\n )}\n </DragDropContext.Provider>\n );\n\n function renderChildren() {\n if (!source || isDisabled) return null;\n\n if (typeof children === 'function') {\n return <Children source={source}>{children}</Children>;\n }\n\n return children;\n }\n}\n\nfunction noop() {\n return () => {};\n}\n\nfunction Children<T extends Data, U extends Draggable<T>>({\n children,\n source,\n}: {\n children: (source: U) => ReactNode;\n source: U;\n}) {\n return children(useDeepSignal(source));\n}\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for(\"Symbol.\" + name);\nvar __typeError = (msg) => {\n throw TypeError(msg);\n};\nvar __pow = Math.pow;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __decoratorStart = (base) => {\n var _a2;\n return [, , , __create((_a2 = base == null ? void 0 : base[__knownSymbol(\"metadata\")]) != null ? _a2 : null)];\n};\nvar __decoratorStrings = [\"class\", \"method\", \"getter\", \"setter\", \"accessor\", \"field\", \"value\", \"get\", \"set\"];\nvar __expectFn = (fn) => fn !== void 0 && typeof fn !== \"function\" ? __typeError(\"Function expected\") : fn;\nvar __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError(\"Already initialized\") : fns.push(__expectFn(fn || null)) });\nvar __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol(\"metadata\"), array[3]);\nvar __runInitializers = (array, flags, self, value) => {\n for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);\n return value;\n};\nvar __decorateElement = (array, flags, name, decorators, target, extra) => {\n var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);\n var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];\n var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);\n var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : { get [name]() {\n return __privateGet(this, extra);\n }, set [name](x) {\n return __privateSet(this, extra, x);\n } }, name));\n k ? p && k < 4 && __name(extra, (k > 2 ? \"set \" : k > 1 ? \"get \" : \"\") + name) : __name(target, name);\n for (var i = decorators.length - 1; i >= 0; i--) {\n ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);\n if (k) {\n ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => name in x };\n if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];\n if (k > 2) access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;\n }\n it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1;\n if (k ^ 4 || it === void 0) __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);\n else if (typeof it !== \"object\" || it === null) __typeError(\"Object expected\");\n else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);\n }\n return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;\n};\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the \"in\" operator on this value') : member.has(obj);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateAdd = (obj, member, value) => member.has(obj) ? __typeError(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\nvar __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, \"write to private field\"), setter ? setter.call(obj, value) : member.set(obj, value), value);\nvar __privateMethod = (obj, member, method) => (__accessCheck(obj, member, \"access private method\"), method);\n\n// src/point/Point.ts\nvar Point = class _Point {\n /**\n * @param {number} Coordinate of the point on the horizontal axis\n * @param {number} Coordinate of the point on the vertical axis\n */\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n /**\n * Returns the delta between this point and another point.\n *\n * @param {Point} a - A point\n * @param {Point} b - Another point\n */\n static delta(a, b) {\n return new _Point(a.x - b.x, a.y - b.y);\n }\n /**\n * Returns the distance (hypotenuse) between this point and another point.\n *\n * @param {Point} a - A point\n * @param {Point} b - Another point\n */\n static distance(a, b) {\n return Math.hypot(a.x - b.x, a.y - b.y);\n }\n /**\n * Returns true if both points are equal.\n *\n * @param {Point} a - A point\n * @param {Point} b - Another point\n */\n static equals(a, b) {\n return a.x === b.x && a.y === b.y;\n }\n static from({ x, y }) {\n return new _Point(x, y);\n }\n};\n\n// src/shapes/Rectangle.ts\nvar Rectangle = class _Rectangle {\n constructor(left, top, width, height) {\n this.left = left;\n this.top = top;\n this.width = width;\n this.height = height;\n this.scale = {\n x: 1,\n y: 1\n };\n }\n get inverseScale() {\n return {\n x: 1 / this.scale.x,\n y: 1 / this.scale.y\n };\n }\n translate(x, y) {\n const { top, left, width, height, scale } = this;\n const newShape = new _Rectangle(left + x, top + y, width, height);\n newShape.scale = __spreadValues({}, scale);\n return newShape;\n }\n get boundingRectangle() {\n const { width, height, left, top, right, bottom } = this;\n return { width, height, left, top, right, bottom };\n }\n get center() {\n const { left, top, right, bottom } = this;\n return new Point((left + right) / 2, (top + bottom) / 2);\n }\n get area() {\n const { width, height } = this;\n return width * height;\n }\n equals(shape) {\n if (!(shape instanceof _Rectangle)) {\n return false;\n }\n const { left, top, width, height } = this;\n return left === shape.left && top === shape.top && width === shape.width && height === shape.height;\n }\n containsPoint(point) {\n const { top, left, bottom, right } = this;\n return top <= point.y && point.y <= bottom && left <= point.x && point.x <= right;\n }\n intersectionArea(shape) {\n if (shape instanceof _Rectangle) {\n return rectangleRectangleIntersection(this, shape);\n }\n return 0;\n }\n intersectionRatio(shape) {\n const { area } = this;\n const intersectionArea = this.intersectionArea(shape);\n const intersectionRatio = intersectionArea / (shape.area + area - intersectionArea);\n return intersectionRatio;\n }\n get bottom() {\n const { top, height } = this;\n return top + height;\n }\n get right() {\n const { left, width } = this;\n return left + width;\n }\n get aspectRatio() {\n const { width, height } = this;\n return width / height;\n }\n get corners() {\n return [\n { x: this.left, y: this.top },\n { x: this.right, y: this.top },\n { x: this.left, y: this.bottom },\n { x: this.right, y: this.bottom }\n ];\n }\n static from({ top, left, width, height }) {\n return new _Rectangle(left, top, width, height);\n }\n static delta(a, b, alignment = { x: \"center\", y: \"center\" }) {\n const getCoordinate = (rect, axis) => {\n const align = alignment[axis];\n const start = axis === \"x\" ? rect.left : rect.top;\n const size = axis === \"x\" ? rect.width : rect.height;\n if (align == \"start\") return start;\n if (align == \"end\") return start + size;\n return start + size / 2;\n };\n return Point.delta(\n { x: getCoordinate(a, \"x\"), y: getCoordinate(a, \"y\") },\n { x: getCoordinate(b, \"x\"), y: getCoordinate(b, \"y\") }\n );\n }\n static intersectionRatio(a, b) {\n return _Rectangle.from(a).intersectionRatio(_Rectangle.from(b));\n }\n};\nfunction rectangleRectangleIntersection(a, b) {\n const top = Math.max(b.top, a.top);\n const left = Math.max(b.left, a.left);\n const right = Math.min(b.left + b.width, a.left + a.width);\n const bottom = Math.min(b.top + b.height, a.top + a.height);\n const width = right - left;\n const height = bottom - top;\n if (left < right && top < bottom) {\n const intersectionArea = width * height;\n return intersectionArea;\n }\n return 0;\n}\n\n// src/position/position.ts\nimport { batch, derived, ValueHistory } from \"@dnd-kit/state\";\nvar _direction_dec, _delta_dec, _a, _timestamp, _init;\nvar Position = class extends (_a = ValueHistory, _delta_dec = [derived], _direction_dec = [derived], _a) {\n constructor(initialValue) {\n const point = Point.from(initialValue);\n super(point, (a, b) => Point.equals(a, b));\n __runInitializers(_init, 5, this);\n __privateAdd(this, _timestamp, 0);\n this.velocity = { x: 0, y: 0 };\n }\n get delta() {\n return Point.delta(this.current, this.initial);\n }\n get direction() {\n const { current, previous } = this;\n if (!previous) return null;\n const delta = {\n x: current.x - previous.x,\n y: current.y - previous.y\n };\n if (!delta.x && !delta.y) {\n return null;\n }\n if (Math.abs(delta.x) > Math.abs(delta.y)) {\n return delta.x > 0 ? \"right\" : \"left\";\n }\n return delta.y > 0 ? \"down\" : \"up\";\n }\n get current() {\n return super.current;\n }\n set current(coordinates) {\n const { current } = this;\n const point = Point.from(coordinates);\n const delta = {\n x: point.x - current.x,\n y: point.y - current.y\n };\n const timestamp = Date.now();\n const timeDelta = timestamp - __privateGet(this, _timestamp);\n const velocity = (delta2) => Math.round(delta2 / timeDelta * 100);\n batch(() => {\n __privateSet(this, _timestamp, timestamp);\n this.velocity = {\n x: velocity(delta.x),\n y: velocity(delta.y)\n };\n super.current = point;\n });\n }\n reset(coordinates = this.defaultValue) {\n super.reset(Point.from(coordinates));\n this.velocity = { x: 0, y: 0 };\n }\n};\n_init = __decoratorStart(_a);\n_timestamp = new WeakMap();\n__decorateElement(_init, 2, \"delta\", _delta_dec, Position);\n__decorateElement(_init, 2, \"direction\", _direction_dec, Position);\n__decoratorMetadata(_init, Position);\n\n// src/distance/distance.ts\nfunction exceedsDistance({ x, y }, distance) {\n const dx = Math.abs(x);\n const dy = Math.abs(y);\n if (typeof distance === \"number\") {\n return Math.sqrt(__pow(dx, 2) + __pow(dy, 2)) > distance;\n }\n if (\"x\" in distance && \"y\" in distance) {\n return dx > distance.x && dy > distance.y;\n }\n if (\"x\" in distance) {\n return dx > distance.x;\n }\n if (\"y\" in distance) {\n return dy > distance.y;\n }\n return false;\n}\n\n// src/types/axis.ts\nvar Axis = /* @__PURE__ */ ((Axis2) => {\n Axis2[\"Horizontal\"] = \"x\";\n Axis2[\"Vertical\"] = \"y\";\n return Axis2;\n})(Axis || {});\nvar Axes = Object.values(Axis);\nexport {\n Axes,\n Axis,\n Point,\n Position,\n Rectangle,\n exceedsDistance\n};\n","// src/algorithms/pointerIntersection.ts\nimport { CollisionPriority, CollisionType } from \"@dnd-kit/abstract\";\nimport { Point } from \"@dnd-kit/geometry\";\nvar pointerIntersection = ({\n dragOperation,\n droppable\n}) => {\n const pointerCoordinates = dragOperation.position.current;\n if (!pointerCoordinates) {\n return null;\n }\n const { id } = droppable;\n if (!droppable.shape) {\n return null;\n }\n if (droppable.shape.containsPoint(pointerCoordinates)) {\n const distance = Point.distance(droppable.shape.center, pointerCoordinates);\n return {\n id,\n value: 1 / distance,\n type: CollisionType.PointerIntersection,\n priority: CollisionPriority.High\n };\n }\n return null;\n};\n\n// src/algorithms/shapeIntersection.ts\nimport { CollisionPriority as CollisionPriority2, CollisionType as CollisionType2 } from \"@dnd-kit/abstract\";\nimport { Point as Point2 } from \"@dnd-kit/geometry\";\nvar shapeIntersection = ({\n dragOperation,\n droppable\n}) => {\n const { shape } = dragOperation;\n if (!droppable.shape || !(shape == null ? void 0 : shape.current)) {\n return null;\n }\n const intersectionArea = shape.current.intersectionArea(droppable.shape);\n if (intersectionArea) {\n const { position } = dragOperation;\n const distance = Point2.distance(droppable.shape.center, position.current);\n const intersectionRatio = intersectionArea / (shape.current.area + droppable.shape.area - intersectionArea);\n const value = intersectionRatio / distance;\n return {\n id: droppable.id,\n value,\n type: CollisionType2.ShapeIntersection,\n priority: CollisionPriority2.Normal\n };\n }\n return null;\n};\n\n// src/algorithms/default.ts\nvar defaultCollisionDetection = (args) => {\n var _a;\n return (_a = pointerIntersection(args)) != null ? _a : shapeIntersection(args);\n};\n\n// src/algorithms/closestCorners.ts\nimport { CollisionPriority as CollisionPriority3, CollisionType as CollisionType3 } from \"@dnd-kit/abstract\";\nimport { Point as Point3, Rectangle } from \"@dnd-kit/geometry\";\nvar closestCorners = (input) => {\n const { dragOperation, droppable } = input;\n const { shape, position } = dragOperation;\n if (!droppable.shape) {\n return null;\n }\n const shapeCorners = shape ? Rectangle.from(shape.current.boundingRectangle).corners : void 0;\n const distance = Rectangle.from(\n droppable.shape.boundingRectangle\n ).corners.reduce(\n (acc, corner, index) => {\n var _a;\n return acc + Point3.distance(\n Point3.from(corner),\n (_a = shapeCorners == null ? void 0 : shapeCorners[index]) != null ? _a : position.current\n );\n },\n 0\n );\n const value = distance / 4;\n return {\n id: droppable.id,\n value: 1 / value,\n type: CollisionType3.Collision,\n priority: CollisionPriority3.Normal\n };\n};\n\n// src/algorithms/closestCenter.ts\nimport { CollisionPriority as CollisionPriority4, CollisionType as CollisionType4 } from \"@dnd-kit/abstract\";\nimport { Point as Point4 } from \"@dnd-kit/geometry\";\nvar closestCenter = (input) => {\n var _a;\n const { dragOperation, droppable } = input;\n const { shape, position } = dragOperation;\n if (!droppable.shape) {\n return null;\n }\n const collision = defaultCollisionDetection(input);\n if (collision) {\n return collision;\n }\n const distance = Point4.distance(\n droppable.shape.center,\n (_a = shape == null ? void 0 : shape.current.center) != null ? _a : position.current\n );\n const value = 1 / distance;\n return {\n id: droppable.id,\n value,\n type: CollisionType4.Collision,\n priority: CollisionPriority4.Normal\n };\n};\n\n// src/algorithms/directionBiased.ts\nimport { CollisionPriority as CollisionPriority5, CollisionType as CollisionType5 } from \"@dnd-kit/abstract\";\nimport { Point as Point5 } from \"@dnd-kit/geometry\";\nvar directionBiased = ({\n dragOperation,\n droppable\n}) => {\n if (!droppable.shape) {\n return null;\n }\n const { position, shape } = dragOperation;\n const { direction } = position;\n if (!shape) {\n return null;\n }\n if (direction === null) {\n return defaultCollisionDetection({ dragOperation, droppable });\n }\n const { center } = shape.current;\n const rect = droppable.shape.boundingRectangle;\n const isBelow = rect.bottom >= center.y;\n const isAbove = rect.top <= center.y;\n const isLeft = rect.left <= center.x;\n const isRight = rect.right >= center.x;\n if (direction === \"down\" && isBelow || direction === \"up\" && isAbove || direction === \"left\" && isLeft || direction === \"right\" && isRight) {\n const distance = Point5.distance(droppable.shape.center, center);\n const value = distance === 0 ? 1 : 1 / distance;\n return {\n id: droppable.id,\n value,\n type: CollisionType5.Collision,\n priority: CollisionPriority5.Normal\n };\n }\n return null;\n};\n\n// src/algorithms/pointerDistance.ts\nimport { CollisionPriority as CollisionPriority6, CollisionType as CollisionType6 } from \"@dnd-kit/abstract\";\nimport { Point as Point6 } from \"@dnd-kit/geometry\";\nvar pointerDistance = (input) => {\n const { dragOperation, droppable } = input;\n const { position } = dragOperation;\n if (!droppable.shape) {\n return null;\n }\n const distance = Point6.distance(droppable.shape.center, position.current);\n const value = 1 / distance;\n return {\n id: droppable.id,\n value,\n type: CollisionType6.Collision,\n priority: CollisionPriority6.Normal\n };\n};\nexport {\n closestCenter,\n closestCorners,\n defaultCollisionDetection,\n directionBiased,\n pointerDistance,\n pointerIntersection,\n shapeIntersection\n};\n","import {useCallback} from 'react';\nimport type {Data} from '@dnd-kit/abstract';\nimport {Droppable} from '@dnd-kit/dom';\nimport {deepEqual} from '@dnd-kit/state';\nimport type {DroppableInput} from '@dnd-kit/dom';\nimport {\n useComputed,\n useOnValueChange,\n useOnElementChange,\n useDeepSignal,\n} from '@dnd-kit/react/hooks';\nimport {currentValue, type RefOrValue} from '@dnd-kit/react/utilities';\n\nimport {useInstance} from '../hooks/useInstance.ts';\nimport {defaultCollisionDetection} from '@dnd-kit/collision';\n\nexport interface UseDroppableInput<T extends Data = Data>\n extends Omit<DroppableInput<T>, 'element'> {\n element?: RefOrValue<Element>;\n}\n\nexport function useDroppable<T extends Data = Data>(\n input: UseDroppableInput<T>\n) {\n const {collisionDetector, data, disabled, element, id, accept, type} = input;\n const droppable = useInstance(\n (manager) =>\n new Droppable(\n {\n ...input,\n register: false,\n element: currentValue(element),\n },\n manager\n )\n );\n const trackedDroppalbe = useDeepSignal(droppable);\n\n useOnValueChange(id, () => (droppable.id = id));\n useOnElementChange(element, (element) => (droppable.element = element));\n useOnValueChange(\n accept,\n () => (droppable.accept = accept),\n undefined,\n deepEqual\n );\n useOnValueChange(\n collisionDetector,\n () =>\n (droppable.collisionDetector =\n collisionDetector ?? defaultCollisionDetection)\n );\n useOnValueChange(data, () => data && (droppable.data = data));\n useOnValueChange(disabled, () => (droppable.disabled = disabled === true));\n useOnValueChange(type, () => (droppable.type = type));\n\n return {\n droppable: trackedDroppalbe,\n get isDropTarget() {\n return trackedDroppalbe.isDropTarget;\n },\n ref: useCallback(\n (element: Element | null) => {\n if (\n !element &&\n droppable.element?.isConnected &&\n !droppable.manager?.dragOperation.status.idle\n ) {\n return;\n }\n\n droppable.element = element ?? undefined;\n },\n [droppable]\n ),\n };\n}\n","import {useEffect} from 'react';\nimport type {DragDropEventHandlers, Data} from '@dnd-kit/abstract';\nimport type {Draggable, Droppable, DragDropManager} from '@dnd-kit/dom';\n\nimport {useDragDropManager} from './useDragDropManager.js';\nimport {CleanupFunction} from '@dnd-kit/state';\n\ntype EventNameOverrides = {\n beforedragstart: 'onBeforeDragStart';\n};\n\ntype EventHandlerName<T extends string> = T extends keyof EventNameOverrides\n ? EventNameOverrides[T]\n : T extends `drag${infer Second}${infer Rest}`\n ? `onDrag${Uppercase<Second>}${Rest}`\n : `on${Capitalize<T>}`;\n\n/**\n * Type for all possible event handlers\n */\ntype Events<\n T extends Data,\n U extends Draggable<T>,\n V extends Droppable<T>,\n W extends DragDropManager<T, U, V>,\n> = DragDropEventHandlers<U, V, W>;\n\nexport type EventHandlers<\n T extends Data = Data,\n U extends Draggable<T> = Draggable<T>,\n V extends Droppable<T> = Droppable<T>,\n W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>,\n> = {\n [K in keyof Events<T, U, V, W> as EventHandlerName<K>]: Events<T, U, V, W>[K];\n};\n\n/**\n * Hook to monitor drag and drop events anywhere within a DragDropProvider\n * @param handlers Object containing event handlers for drag and drop events\n */\nexport function useDragDropMonitor<\n T extends Data = Data,\n U extends Draggable<T> = Draggable<T>,\n V extends Droppable<T> = Droppable<T>,\n W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>,\n>(handlers: Partial<EventHandlers<T, U, V, W>>): void {\n const manager = useDragDropManager<T, U, V, W>();\n\n useEffect(() => {\n if (!manager) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'useDndMonitor hook was called outside of a DragDropProvider. ' +\n 'Make sure your app is wrapped in a DragDropProvider component.'\n );\n }\n return;\n }\n\n const cleanupFns = Object.entries(handlers).reduce<CleanupFunction[]>(\n (acc, [handlerName, handler]) => {\n if (handler) {\n // Convert handler name (e.g. 'onDragStart') to event name (e.g. 'dragstart')\n const eventName = handlerName\n .replace(/^on/, '')\n .toLowerCase() as keyof Events<T, U, V, W>;\n\n const unsubscribe = manager.monitor.addEventListener(\n eventName,\n handler as any\n );\n\n acc.push(unsubscribe);\n }\n\n return acc;\n },\n []\n );\n\n return () => cleanupFns.forEach((cleanup) => cleanup?.());\n }, [manager, handlers]);\n}\n","import type {Data} from '@dnd-kit/abstract';\nimport type {Draggable, Droppable, DragDropManager} from '@dnd-kit/dom';\nimport {useComputed} from '@dnd-kit/react/hooks';\n\nimport {useDragDropManager} from './useDragDropManager.ts';\n\nexport function useDragOperation<\n T extends Data = Data,\n U extends Draggable<T> = Draggable<T>,\n V extends Droppable<T> = Droppable<T>,\n W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>,\n>() {\n const manager = useDragDropManager<T, U, V, W>();\n const source = useComputed(() => manager?.dragOperation.source, [manager]);\n const target = useComputed(() => manager?.dragOperation.target, [manager]);\n\n return {\n get source() {\n return source.value;\n },\n get target() {\n return target.value;\n },\n };\n}\n"]}
|
package/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["src/core/context/context.ts","src/core/context/renderer.ts","src/core/context/DragDropProvider.tsx","src/core/hooks/useDragDropManager.ts","src/core/hooks/useInstance.ts","src/core/draggable/useDraggable.ts","src/core/draggable/DragOverlay.tsx","../geometry/dist/index.mjs","../collision/dist/index.js","src/core/droppable/useDroppable.ts","src/core/hooks/useDragDropMonitor.ts","src/core/hooks/useDragOperation.ts"],"names":["_a","useRef","DragDropManager","useState","useIsomorphicLayoutEffect","useOnValueChange","handle","element","deepEqual","useEffect","useMemo","jsx","useDeepSignal","__defProp","__defNormalProp","CollisionType2","CollisionPriority2","currentValue","useOnElementChange","useCallback","useComputed"],"mappings":"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","file":"index.js","sourcesContent":["'use client';\n\nimport {createContext} from 'react';\nimport {DragDropManager} from '@dnd-kit/dom';\n\nexport const defaultManager = new DragDropManager();\n\nexport const DragDropContext = createContext<DragDropManager | null>(\n defaultManager\n);\n","import {\n forwardRef,\n memo,\n startTransition,\n useImperativeHandle,\n useState,\n useRef,\n useMemo,\n} from 'react';\nimport type {Renderer as AbstractRenderer} from '@dnd-kit/abstract';\nimport {useIsomorphicLayoutEffect} from '@dnd-kit/react/hooks';\n\nexport type ReactRenderer = {\n renderer: AbstractRenderer;\n trackRendering: (callback: () => void) => void;\n};\n\nexport const Renderer = memo(\n forwardRef<ReactRenderer, {children: React.ReactNode}>(({children}, ref) => {\n const [transitionCount, setTransitionCount] = useState(0);\n const rendering = useRef<Promise<void> | null>(null);\n const resolver = useRef<(() => void) | null>(null);\n const renderer = useMemo<ReactRenderer>(\n () => ({\n renderer: {\n get rendering() {\n return rendering.current ?? Promise.resolve();\n },\n },\n trackRendering(callback: () => void) {\n if (!rendering.current) {\n rendering.current = new Promise<void>((resolve) => {\n resolver.current = resolve;\n });\n }\n\n startTransition(() => {\n callback();\n setTransitionCount((count) => count + 1);\n });\n },\n }),\n []\n );\n\n useIsomorphicLayoutEffect(() => {\n resolver.current?.();\n rendering.current = null;\n }, [children, transitionCount]);\n\n useImperativeHandle(ref, () => renderer);\n\n return null;\n })\n);\n","'use client';\n\nimport {\n useEffect,\n useRef,\n useInsertionEffect,\n type PropsWithChildren,\n} from 'react';\nimport type {Data, DragDropEventHandlers} from '@dnd-kit/abstract';\nimport {\n DragDropManager,\n defaultPreset,\n resolveCustomizable,\n} from '@dnd-kit/dom';\nimport type {DragDropManagerInput, Draggable, Droppable} from '@dnd-kit/dom';\nimport {useLatest, useOnValueChange} from '@dnd-kit/react/hooks';\nimport {deepEqual} from '@dnd-kit/state';\n\nimport {DragDropContext} from './context.ts';\nimport {Renderer, type ReactRenderer} from './renderer.ts';\n\nexport type Events<\n T extends Data = Data,\n U extends Draggable<T> = Draggable<T>,\n V extends Droppable<T> = Droppable<T>,\n W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>,\n> = DragDropEventHandlers<U, V, W>;\n\nexport interface Props<\n T extends Data = Data,\n U extends Draggable<T> = Draggable<T>,\n V extends Droppable<T> = Droppable<T>,\n W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>,\n> extends DragDropManagerInput,\n PropsWithChildren {\n manager?: W;\n onBeforeDragStart?: Events<T, U, V, W>['beforedragstart'];\n onCollision?: Events<T, U, V, W>['collision'];\n onDragStart?: Events<T, U, V, W>['dragstart'];\n onDragMove?: Events<T, U, V, W>['dragmove'];\n onDragOver?: Events<T, U, V, W>['dragover'];\n onDragEnd?: Events<T, U, V, W>['dragend'];\n}\n\nconst options = [undefined, deepEqual] as const;\n\nexport function DragDropProvider<\n T extends Data = Data,\n U extends Draggable<T> = Draggable<T>,\n V extends Droppable<T> = Droppable<T>,\n W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>,\n>({\n children,\n onCollision,\n onBeforeDragStart,\n onDragStart,\n onDragMove,\n onDragOver,\n onDragEnd,\n ...input\n}: Props<T, U, V, W>) {\n const rendererRef = useRef<ReactRenderer | null>(null);\n const {\n plugins: pluginsInput,\n modifiers: modifiersInput,\n sensors: sensorsInput,\n } = input;\n const plugins = resolveCustomizable(pluginsInput, defaultPreset.plugins);\n const sensors = resolveCustomizable(sensorsInput, defaultPreset.sensors);\n const modifiers = resolveCustomizable(\n modifiersInput,\n defaultPreset.modifiers\n );\n const handleBeforeDragStart = useLatest(onBeforeDragStart);\n const handleDragStart = useLatest(onDragStart);\n const handleDragOver = useLatest(onDragOver);\n const handleDragMove = useLatest(onDragMove);\n const handleDragEnd = useLatest(onDragEnd);\n const handleCollision = useLatest(onCollision);\n const manager = useStableInstance<W>(() => {\n return input.manager ?? (new DragDropManager<T, U, V>(input) as W);\n });\n\n useEffect(() => {\n if (!rendererRef.current) throw new Error('Renderer not found');\n\n const {renderer, trackRendering} = rendererRef.current;\n const {monitor} = manager;\n\n manager.renderer = renderer;\n\n const listeners = [\n monitor.addEventListener('beforedragstart', (event) => {\n const callback = handleBeforeDragStart.current;\n\n if (callback) {\n trackRendering(() => callback(event, manager));\n }\n }),\n monitor.addEventListener('dragstart', (event) =>\n handleDragStart.current?.(event, manager)\n ),\n monitor.addEventListener('dragover', (event) => {\n const callback = handleDragOver.current;\n\n if (callback) {\n trackRendering(() => callback(event, manager));\n }\n }),\n monitor.addEventListener('dragmove', (event) => {\n const callback = handleDragMove.current;\n\n if (callback) {\n trackRendering(() => callback(event, manager));\n }\n }),\n monitor.addEventListener('dragend', (event) => {\n const callback = handleDragEnd.current;\n\n if (callback) {\n trackRendering(() => callback(event, manager));\n }\n }),\n monitor.addEventListener('collision', (event) =>\n handleCollision.current?.(event, manager)\n ),\n ];\n\n return () => listeners.forEach((dispose) => dispose());\n }, [manager]);\n\n useOnValueChange(\n plugins,\n () => manager && (manager.plugins = plugins),\n ...options\n );\n useOnValueChange(\n sensors,\n () => manager && (manager.sensors = sensors),\n ...options\n );\n useOnValueChange(\n modifiers,\n () => manager && (manager.modifiers = modifiers),\n ...options\n );\n\n return (\n <DragDropContext.Provider value={manager as any}>\n <Renderer ref={rendererRef}>{children}</Renderer>\n {children}\n </DragDropContext.Provider>\n );\n}\n\nfunction useStableInstance<T extends {destroy(): void}>(create: () => T): T {\n const ref = useRef<T | null>(null);\n\n if (!ref.current) {\n ref.current = create();\n }\n\n useInsertionEffect(() => {\n return () => ref.current?.destroy();\n }, []);\n\n return ref.current;\n}\n","import {useContext} from 'react';\nimport type {Data} from '@dnd-kit/abstract';\nimport type {DragDropManager, Draggable, Droppable} from '@dnd-kit/dom';\n\nimport {DragDropContext} from '../context/context.ts';\n\nexport function useDragDropManager<\n T extends Data = Data,\n U extends Draggable<T> = Draggable<T>,\n V extends Droppable<T> = Droppable<T>,\n W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>,\n>(): W | null {\n return useContext(DragDropContext) as W | null;\n}\n","import {useState} from 'react';\nimport type {DragDropManager} from '@dnd-kit/abstract';\nimport type {CleanupFunction} from '@dnd-kit/state';\nimport {useIsomorphicLayoutEffect} from '@dnd-kit/react/hooks';\n\nimport {useDragDropManager} from './useDragDropManager.ts';\n\nexport interface Instance<\n T extends DragDropManager<any, any> = DragDropManager<any, any>,\n> {\n manager: T | undefined;\n register(): CleanupFunction | void;\n}\n\nexport function useInstance<T extends Instance>(\n initializer: (manager: DragDropManager<any, any> | undefined) => T\n): T {\n const manager = useDragDropManager() ?? undefined;\n const [instance] = useState<T>(() => initializer(manager));\n\n if (instance.manager !== manager) {\n instance.manager = manager;\n }\n\n useIsomorphicLayoutEffect(instance.register, [manager, instance]);\n\n return instance;\n}\n","import {useCallback} from 'react';\nimport type {Data} from '@dnd-kit/abstract';\nimport {deepEqual} from '@dnd-kit/state';\nimport {Draggable} from '@dnd-kit/dom';\nimport type {DraggableInput} from '@dnd-kit/dom';\nimport {\n useOnValueChange,\n useOnElementChange,\n useDeepSignal,\n} from '@dnd-kit/react/hooks';\nimport {currentValue, type RefOrValue} from '@dnd-kit/react/utilities';\n\nimport {useInstance} from '../hooks/useInstance.ts';\n\nexport interface UseDraggableInput<T extends Data = Data>\n extends Omit<DraggableInput<T>, 'handle' | 'element'> {\n handle?: RefOrValue<Element>;\n element?: RefOrValue<Element>;\n}\n\nexport function useDraggable<T extends Data = Data>(\n input: UseDraggableInput<T>\n) {\n const {disabled, data, element, handle, id, modifiers, sensors, plugins} =\n input;\n const draggable = useInstance(\n (manager) =>\n new Draggable(\n {\n ...input,\n register: false,\n handle: currentValue(handle),\n element: currentValue(element),\n },\n manager\n )\n );\n const trackedDraggable = useDeepSignal(draggable, shouldUpdateSynchronously);\n\n useOnValueChange(id, () => (draggable.id = id));\n useOnElementChange(handle, (handle) => (draggable.handle = handle));\n useOnElementChange(element, (element) => (draggable.element = element));\n useOnValueChange(data, () => data && (draggable.data = data));\n useOnValueChange(disabled, () => (draggable.disabled = disabled === true));\n useOnValueChange(\n sensors,\n () => (draggable.sensors = sensors),\n undefined,\n deepEqual\n );\n useOnValueChange(\n modifiers,\n () => (draggable.modifiers = modifiers),\n undefined,\n deepEqual\n );\n useOnValueChange(\n plugins,\n () => (draggable.plugins = plugins),\n undefined,\n deepEqual\n );\n useOnValueChange(\n input.alignment,\n () => (draggable.alignment = input.alignment)\n );\n\n return {\n draggable: trackedDraggable,\n get isDragging() {\n return trackedDraggable.isDragging;\n },\n get isDropping() {\n return trackedDraggable.isDropping;\n },\n get isDragSource() {\n return trackedDraggable.isDragSource;\n },\n handleRef: useCallback(\n (element: Element | null) => {\n draggable.handle = element ?? undefined;\n },\n [draggable]\n ),\n ref: useCallback(\n (element: Element | null) => {\n if (\n !element &&\n draggable.element?.isConnected &&\n !draggable.manager?.dragOperation.status.idle\n ) {\n return;\n }\n\n draggable.element = element ?? undefined;\n },\n [draggable]\n ),\n };\n}\n\nfunction shouldUpdateSynchronously(key: string, oldValue: any, newValue: any) {\n // Update synchronously after drop animation\n if (key === 'isDragSource' && !newValue && oldValue) return true;\n\n return false;\n}\n","import {createElement, useEffect, useMemo, useRef, type ReactNode} from 'react';\nimport {useComputed, useDeepSignal} from '@dnd-kit/react/hooks';\nimport {DragDropManager, Draggable, Feedback} from '@dnd-kit/dom';\nimport type {DropAnimation} from '@dnd-kit/dom';\nimport {Data} from '@dnd-kit/abstract';\n\nimport {useDragDropManager} from '../hooks/useDragDropManager.ts';\nimport {DragDropContext} from '../context/context.ts';\n\nexport interface Props<T extends Data, U extends Draggable<T>> {\n className?: string;\n children: ReactNode | ((source: U) => ReactNode);\n /**\n * Customize or disable the drop animation that plays when a drag operation ends.\n *\n * - `undefined` – use the default animation (250ms ease)\n * - `null` – disable the drop animation entirely\n * - `{duration, easing}` – customize the animation timing\n * - `(context) => Promise<void> | void` – provide a fully custom animation function\n */\n dropAnimation?: DropAnimation | null;\n style?: React.CSSProperties;\n tag?: string;\n disabled?: boolean | ((source: U | null) => boolean);\n}\n\nexport function DragOverlay<T extends Data, U extends Draggable<T>>({\n children,\n className,\n dropAnimation,\n style,\n tag,\n disabled,\n}: Props<T, U>) {\n const ref = useRef<HTMLDivElement | null>(null);\n const manager = useDragDropManager<T, U>();\n const source =\n useComputed(() => manager?.dragOperation.source, [manager]).value ?? null;\n const isDisabled =\n typeof disabled === 'function' ? disabled(source) : disabled;\n\n useEffect(() => {\n if (!ref.current || !manager || isDisabled) return;\n\n const feedback = manager.plugins.find(\n (plugin) => plugin instanceof Feedback\n );\n\n if (!feedback) return;\n\n feedback.overlay = ref.current;\n\n return () => {\n feedback.overlay = undefined;\n };\n }, [manager, isDisabled]);\n\n useEffect(() => {\n if (!manager) return;\n\n const feedback = manager.plugins.find(\n (plugin) => plugin instanceof Feedback\n );\n\n if (!feedback) return;\n\n feedback.dropAnimation = dropAnimation;\n\n return () => {\n feedback.dropAnimation = undefined;\n };\n }, [manager, dropAnimation]);\n\n // Prevent children of the overlay from registering themselves as draggables or droppables\n const patchedManager = useMemo(() => {\n if (!manager) return null;\n\n const patchedRegistry = new Proxy(manager.registry, {\n get(target, property) {\n if (property === 'register' || property === 'unregister') {\n return noop;\n }\n\n return target[property as keyof typeof target];\n },\n });\n\n return new Proxy(manager, {\n get(target, property) {\n if (property === 'registry') {\n return patchedRegistry;\n }\n\n return target[property as keyof typeof target];\n },\n });\n }, [manager]);\n\n return (\n <DragDropContext.Provider value={patchedManager as DragDropManager | null}>\n {createElement(\n tag || 'div',\n {ref, className, style, 'data-dnd-overlay': true},\n\n renderChildren()\n )}\n </DragDropContext.Provider>\n );\n\n function renderChildren() {\n if (!source || isDisabled) return null;\n\n if (typeof children === 'function') {\n return <Children source={source}>{children}</Children>;\n }\n\n return children;\n }\n}\n\nfunction noop() {\n return () => {};\n}\n\nfunction Children<T extends Data, U extends Draggable<T>>({\n children,\n source,\n}: {\n children: (source: U) => ReactNode;\n source: U;\n}) {\n return children(useDeepSignal(source));\n}\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for(\"Symbol.\" + name);\nvar __typeError = (msg) => {\n throw TypeError(msg);\n};\nvar __pow = Math.pow;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __decoratorStart = (base) => {\n var _a2;\n return [, , , __create((_a2 = base == null ? void 0 : base[__knownSymbol(\"metadata\")]) != null ? _a2 : null)];\n};\nvar __decoratorStrings = [\"class\", \"method\", \"getter\", \"setter\", \"accessor\", \"field\", \"value\", \"get\", \"set\"];\nvar __expectFn = (fn) => fn !== void 0 && typeof fn !== \"function\" ? __typeError(\"Function expected\") : fn;\nvar __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError(\"Already initialized\") : fns.push(__expectFn(fn || null)) });\nvar __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol(\"metadata\"), array[3]);\nvar __runInitializers = (array, flags, self, value) => {\n for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);\n return value;\n};\nvar __decorateElement = (array, flags, name, decorators, target, extra) => {\n var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);\n var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];\n var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);\n var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : { get [name]() {\n return __privateGet(this, extra);\n }, set [name](x) {\n return __privateSet(this, extra, x);\n } }, name));\n k ? p && k < 4 && __name(extra, (k > 2 ? \"set \" : k > 1 ? \"get \" : \"\") + name) : __name(target, name);\n for (var i = decorators.length - 1; i >= 0; i--) {\n ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);\n if (k) {\n ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => name in x };\n if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];\n if (k > 2) access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;\n }\n it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1;\n if (k ^ 4 || it === void 0) __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);\n else if (typeof it !== \"object\" || it === null) __typeError(\"Object expected\");\n else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);\n }\n return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;\n};\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the \"in\" operator on this value') : member.has(obj);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateAdd = (obj, member, value) => member.has(obj) ? __typeError(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\nvar __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, \"write to private field\"), setter ? setter.call(obj, value) : member.set(obj, value), value);\nvar __privateMethod = (obj, member, method) => (__accessCheck(obj, member, \"access private method\"), method);\n\n// src/point/Point.ts\nvar Point = class _Point {\n /**\n * @param {number} Coordinate of the point on the horizontal axis\n * @param {number} Coordinate of the point on the vertical axis\n */\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n /**\n * Returns the delta between this point and another point.\n *\n * @param {Point} a - A point\n * @param {Point} b - Another point\n */\n static delta(a, b) {\n return new _Point(a.x - b.x, a.y - b.y);\n }\n /**\n * Returns the distance (hypotenuse) between this point and another point.\n *\n * @param {Point} a - A point\n * @param {Point} b - Another point\n */\n static distance(a, b) {\n return Math.hypot(a.x - b.x, a.y - b.y);\n }\n /**\n * Returns true if both points are equal.\n *\n * @param {Point} a - A point\n * @param {Point} b - Another point\n */\n static equals(a, b) {\n return a.x === b.x && a.y === b.y;\n }\n static from({ x, y }) {\n return new _Point(x, y);\n }\n};\n\n// src/shapes/Rectangle.ts\nvar Rectangle = class _Rectangle {\n constructor(left, top, width, height) {\n this.left = left;\n this.top = top;\n this.width = width;\n this.height = height;\n this.scale = {\n x: 1,\n y: 1\n };\n }\n get inverseScale() {\n return {\n x: 1 / this.scale.x,\n y: 1 / this.scale.y\n };\n }\n translate(x, y) {\n const { top, left, width, height, scale } = this;\n const newShape = new _Rectangle(left + x, top + y, width, height);\n newShape.scale = __spreadValues({}, scale);\n return newShape;\n }\n get boundingRectangle() {\n const { width, height, left, top, right, bottom } = this;\n return { width, height, left, top, right, bottom };\n }\n get center() {\n const { left, top, right, bottom } = this;\n return new Point((left + right) / 2, (top + bottom) / 2);\n }\n get area() {\n const { width, height } = this;\n return width * height;\n }\n equals(shape) {\n if (!(shape instanceof _Rectangle)) {\n return false;\n }\n const { left, top, width, height } = this;\n return left === shape.left && top === shape.top && width === shape.width && height === shape.height;\n }\n containsPoint(point) {\n const { top, left, bottom, right } = this;\n return top <= point.y && point.y <= bottom && left <= point.x && point.x <= right;\n }\n intersectionArea(shape) {\n if (shape instanceof _Rectangle) {\n return rectangleRectangleIntersection(this, shape);\n }\n return 0;\n }\n intersectionRatio(shape) {\n const { area } = this;\n const intersectionArea = this.intersectionArea(shape);\n const intersectionRatio = intersectionArea / (shape.area + area - intersectionArea);\n return intersectionRatio;\n }\n get bottom() {\n const { top, height } = this;\n return top + height;\n }\n get right() {\n const { left, width } = this;\n return left + width;\n }\n get aspectRatio() {\n const { width, height } = this;\n return width / height;\n }\n get corners() {\n return [\n { x: this.left, y: this.top },\n { x: this.right, y: this.top },\n { x: this.left, y: this.bottom },\n { x: this.right, y: this.bottom }\n ];\n }\n static from({ top, left, width, height }) {\n return new _Rectangle(left, top, width, height);\n }\n static delta(a, b, alignment = { x: \"center\", y: \"center\" }) {\n const getCoordinate = (rect, axis) => {\n const align = alignment[axis];\n const start = axis === \"x\" ? rect.left : rect.top;\n const size = axis === \"x\" ? rect.width : rect.height;\n if (align == \"start\") return start;\n if (align == \"end\") return start + size;\n return start + size / 2;\n };\n return Point.delta(\n { x: getCoordinate(a, \"x\"), y: getCoordinate(a, \"y\") },\n { x: getCoordinate(b, \"x\"), y: getCoordinate(b, \"y\") }\n );\n }\n static intersectionRatio(a, b) {\n return _Rectangle.from(a).intersectionRatio(_Rectangle.from(b));\n }\n};\nfunction rectangleRectangleIntersection(a, b) {\n const top = Math.max(b.top, a.top);\n const left = Math.max(b.left, a.left);\n const right = Math.min(b.left + b.width, a.left + a.width);\n const bottom = Math.min(b.top + b.height, a.top + a.height);\n const width = right - left;\n const height = bottom - top;\n if (left < right && top < bottom) {\n const intersectionArea = width * height;\n return intersectionArea;\n }\n return 0;\n}\n\n// src/position/position.ts\nimport { batch, derived, ValueHistory } from \"@dnd-kit/state\";\nvar _direction_dec, _delta_dec, _a, _timestamp, _init;\nvar Position = class extends (_a = ValueHistory, _delta_dec = [derived], _direction_dec = [derived], _a) {\n constructor(initialValue) {\n const point = Point.from(initialValue);\n super(point, (a, b) => Point.equals(a, b));\n __runInitializers(_init, 5, this);\n __privateAdd(this, _timestamp, 0);\n this.velocity = { x: 0, y: 0 };\n }\n get delta() {\n return Point.delta(this.current, this.initial);\n }\n get direction() {\n const { current, previous } = this;\n if (!previous) return null;\n const delta = {\n x: current.x - previous.x,\n y: current.y - previous.y\n };\n if (!delta.x && !delta.y) {\n return null;\n }\n if (Math.abs(delta.x) > Math.abs(delta.y)) {\n return delta.x > 0 ? \"right\" : \"left\";\n }\n return delta.y > 0 ? \"down\" : \"up\";\n }\n get current() {\n return super.current;\n }\n set current(coordinates) {\n const { current } = this;\n const point = Point.from(coordinates);\n const delta = {\n x: point.x - current.x,\n y: point.y - current.y\n };\n const timestamp = Date.now();\n const timeDelta = timestamp - __privateGet(this, _timestamp);\n const velocity = (delta2) => Math.round(delta2 / timeDelta * 100);\n batch(() => {\n __privateSet(this, _timestamp, timestamp);\n this.velocity = {\n x: velocity(delta.x),\n y: velocity(delta.y)\n };\n super.current = point;\n });\n }\n reset(coordinates = this.defaultValue) {\n super.reset(Point.from(coordinates));\n this.velocity = { x: 0, y: 0 };\n }\n};\n_init = __decoratorStart(_a);\n_timestamp = new WeakMap();\n__decorateElement(_init, 2, \"delta\", _delta_dec, Position);\n__decorateElement(_init, 2, \"direction\", _direction_dec, Position);\n__decoratorMetadata(_init, Position);\n\n// src/distance/distance.ts\nfunction exceedsDistance({ x, y }, distance) {\n const dx = Math.abs(x);\n const dy = Math.abs(y);\n if (typeof distance === \"number\") {\n return Math.sqrt(__pow(dx, 2) + __pow(dy, 2)) > distance;\n }\n if (\"x\" in distance && \"y\" in distance) {\n return dx > distance.x && dy > distance.y;\n }\n if (\"x\" in distance) {\n return dx > distance.x;\n }\n if (\"y\" in distance) {\n return dy > distance.y;\n }\n return false;\n}\n\n// src/types/axis.ts\nvar Axis = /* @__PURE__ */ ((Axis2) => {\n Axis2[\"Horizontal\"] = \"x\";\n Axis2[\"Vertical\"] = \"y\";\n return Axis2;\n})(Axis || {});\nvar Axes = Object.values(Axis);\nexport {\n Axes,\n Axis,\n Point,\n Position,\n Rectangle,\n exceedsDistance\n};\n","// src/algorithms/pointerIntersection.ts\nimport { CollisionPriority, CollisionType } from \"@dnd-kit/abstract\";\nimport { Point } from \"@dnd-kit/geometry\";\nvar pointerIntersection = ({\n dragOperation,\n droppable\n}) => {\n const pointerCoordinates = dragOperation.position.current;\n if (!pointerCoordinates) {\n return null;\n }\n const { id } = droppable;\n if (!droppable.shape) {\n return null;\n }\n if (droppable.shape.containsPoint(pointerCoordinates)) {\n const distance = Point.distance(droppable.shape.center, pointerCoordinates);\n return {\n id,\n value: 1 / distance,\n type: CollisionType.PointerIntersection,\n priority: CollisionPriority.High\n };\n }\n return null;\n};\n\n// src/algorithms/shapeIntersection.ts\nimport { CollisionPriority as CollisionPriority2, CollisionType as CollisionType2 } from \"@dnd-kit/abstract\";\nimport { Point as Point2 } from \"@dnd-kit/geometry\";\nvar shapeIntersection = ({\n dragOperation,\n droppable\n}) => {\n const { shape } = dragOperation;\n if (!droppable.shape || !(shape == null ? void 0 : shape.current)) {\n return null;\n }\n const intersectionArea = shape.current.intersectionArea(droppable.shape);\n if (intersectionArea) {\n const { position } = dragOperation;\n const distance = Point2.distance(droppable.shape.center, position.current);\n const intersectionRatio = intersectionArea / (shape.current.area + droppable.shape.area - intersectionArea);\n const value = intersectionRatio / distance;\n return {\n id: droppable.id,\n value,\n type: CollisionType2.ShapeIntersection,\n priority: CollisionPriority2.Normal\n };\n }\n return null;\n};\n\n// src/algorithms/default.ts\nvar defaultCollisionDetection = (args) => {\n var _a;\n return (_a = pointerIntersection(args)) != null ? _a : shapeIntersection(args);\n};\n\n// src/algorithms/closestCorners.ts\nimport { CollisionPriority as CollisionPriority3, CollisionType as CollisionType3 } from \"@dnd-kit/abstract\";\nimport { Point as Point3, Rectangle } from \"@dnd-kit/geometry\";\nvar closestCorners = (input) => {\n const { dragOperation, droppable } = input;\n const { shape, position } = dragOperation;\n if (!droppable.shape) {\n return null;\n }\n const shapeCorners = shape ? Rectangle.from(shape.current.boundingRectangle).corners : void 0;\n const distance = Rectangle.from(\n droppable.shape.boundingRectangle\n ).corners.reduce(\n (acc, corner, index) => {\n var _a;\n return acc + Point3.distance(\n Point3.from(corner),\n (_a = shapeCorners == null ? void 0 : shapeCorners[index]) != null ? _a : position.current\n );\n },\n 0\n );\n const value = distance / 4;\n return {\n id: droppable.id,\n value: 1 / value,\n type: CollisionType3.Collision,\n priority: CollisionPriority3.Normal\n };\n};\n\n// src/algorithms/closestCenter.ts\nimport { CollisionPriority as CollisionPriority4, CollisionType as CollisionType4 } from \"@dnd-kit/abstract\";\nimport { Point as Point4 } from \"@dnd-kit/geometry\";\nvar closestCenter = (input) => {\n var _a;\n const { dragOperation, droppable } = input;\n const { shape, position } = dragOperation;\n if (!droppable.shape) {\n return null;\n }\n const collision = defaultCollisionDetection(input);\n if (collision) {\n return collision;\n }\n const distance = Point4.distance(\n droppable.shape.center,\n (_a = shape == null ? void 0 : shape.current.center) != null ? _a : position.current\n );\n const value = 1 / distance;\n return {\n id: droppable.id,\n value,\n type: CollisionType4.Collision,\n priority: CollisionPriority4.Normal\n };\n};\n\n// src/algorithms/directionBiased.ts\nimport { CollisionPriority as CollisionPriority5, CollisionType as CollisionType5 } from \"@dnd-kit/abstract\";\nimport { Point as Point5 } from \"@dnd-kit/geometry\";\nvar directionBiased = ({\n dragOperation,\n droppable\n}) => {\n if (!droppable.shape) {\n return null;\n }\n const { position, shape } = dragOperation;\n const { direction } = position;\n if (!shape) {\n return null;\n }\n if (direction === null) {\n return defaultCollisionDetection({ dragOperation, droppable });\n }\n const { center } = shape.current;\n const rect = droppable.shape.boundingRectangle;\n const isBelow = rect.bottom >= center.y;\n const isAbove = rect.top <= center.y;\n const isLeft = rect.left <= center.x;\n const isRight = rect.right >= center.x;\n if (direction === \"down\" && isBelow || direction === \"up\" && isAbove || direction === \"left\" && isLeft || direction === \"right\" && isRight) {\n const distance = Point5.distance(droppable.shape.center, center);\n const value = distance === 0 ? 1 : 1 / distance;\n return {\n id: droppable.id,\n value,\n type: CollisionType5.Collision,\n priority: CollisionPriority5.Normal\n };\n }\n return null;\n};\n\n// src/algorithms/pointerDistance.ts\nimport { CollisionPriority as CollisionPriority6, CollisionType as CollisionType6 } from \"@dnd-kit/abstract\";\nimport { Point as Point6 } from \"@dnd-kit/geometry\";\nvar pointerDistance = (input) => {\n const { dragOperation, droppable } = input;\n const { position } = dragOperation;\n if (!droppable.shape) {\n return null;\n }\n const distance = Point6.distance(droppable.shape.center, position.current);\n const value = 1 / distance;\n return {\n id: droppable.id,\n value,\n type: CollisionType6.Collision,\n priority: CollisionPriority6.Normal\n };\n};\nexport {\n closestCenter,\n closestCorners,\n defaultCollisionDetection,\n directionBiased,\n pointerDistance,\n pointerIntersection,\n shapeIntersection\n};\n","import {useCallback} from 'react';\nimport type {Data} from '@dnd-kit/abstract';\nimport {Droppable} from '@dnd-kit/dom';\nimport {deepEqual} from '@dnd-kit/state';\nimport type {DroppableInput} from '@dnd-kit/dom';\nimport {\n useComputed,\n useOnValueChange,\n useOnElementChange,\n useDeepSignal,\n} from '@dnd-kit/react/hooks';\nimport {currentValue, type RefOrValue} from '@dnd-kit/react/utilities';\n\nimport {useInstance} from '../hooks/useInstance.ts';\nimport {defaultCollisionDetection} from '@dnd-kit/collision';\n\nexport interface UseDroppableInput<T extends Data = Data>\n extends Omit<DroppableInput<T>, 'element'> {\n element?: RefOrValue<Element>;\n}\n\nexport function useDroppable<T extends Data = Data>(\n input: UseDroppableInput<T>\n) {\n const {collisionDetector, data, disabled, element, id, accept, type} = input;\n const droppable = useInstance(\n (manager) =>\n new Droppable(\n {\n ...input,\n register: false,\n element: currentValue(element),\n },\n manager\n )\n );\n const trackedDroppalbe = useDeepSignal(droppable);\n\n useOnValueChange(id, () => (droppable.id = id));\n useOnElementChange(element, (element) => (droppable.element = element));\n useOnValueChange(\n accept,\n () => (droppable.accept = accept),\n undefined,\n deepEqual\n );\n useOnValueChange(\n collisionDetector,\n () =>\n (droppable.collisionDetector =\n collisionDetector ?? defaultCollisionDetection)\n );\n useOnValueChange(data, () => data && (droppable.data = data));\n useOnValueChange(disabled, () => (droppable.disabled = disabled === true));\n useOnValueChange(type, () => (droppable.type = type));\n\n return {\n droppable: trackedDroppalbe,\n get isDropTarget() {\n return trackedDroppalbe.isDropTarget;\n },\n ref: useCallback(\n (element: Element | null) => {\n if (\n !element &&\n droppable.element?.isConnected &&\n !droppable.manager?.dragOperation.status.idle\n ) {\n return;\n }\n\n droppable.element = element ?? undefined;\n },\n [droppable]\n ),\n };\n}\n","import {useEffect} from 'react';\nimport type {DragDropEventHandlers, Data} from '@dnd-kit/abstract';\nimport type {Draggable, Droppable, DragDropManager} from '@dnd-kit/dom';\n\nimport {useDragDropManager} from './useDragDropManager.js';\nimport {CleanupFunction} from '@dnd-kit/state';\n\ntype EventNameOverrides = {\n beforedragstart: 'onBeforeDragStart';\n};\n\ntype EventHandlerName<T extends string> = T extends keyof EventNameOverrides\n ? EventNameOverrides[T]\n : T extends `drag${infer Second}${infer Rest}`\n ? `onDrag${Uppercase<Second>}${Rest}`\n : `on${Capitalize<T>}`;\n\n/**\n * Type for all possible event handlers\n */\ntype Events<\n T extends Data,\n U extends Draggable<T>,\n V extends Droppable<T>,\n W extends DragDropManager<T, U, V>,\n> = DragDropEventHandlers<U, V, W>;\n\nexport type EventHandlers<\n T extends Data = Data,\n U extends Draggable<T> = Draggable<T>,\n V extends Droppable<T> = Droppable<T>,\n W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>,\n> = {\n [K in keyof Events<T, U, V, W> as EventHandlerName<K>]: Events<T, U, V, W>[K];\n};\n\n/**\n * Hook to monitor drag and drop events anywhere within a DragDropProvider\n * @param handlers Object containing event handlers for drag and drop events\n */\nexport function useDragDropMonitor<\n T extends Data = Data,\n U extends Draggable<T> = Draggable<T>,\n V extends Droppable<T> = Droppable<T>,\n W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>,\n>(handlers: Partial<EventHandlers<T, U, V, W>>): void {\n const manager = useDragDropManager<T, U, V, W>();\n\n useEffect(() => {\n if (!manager) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'useDndMonitor hook was called outside of a DragDropProvider. ' +\n 'Make sure your app is wrapped in a DragDropProvider component.'\n );\n }\n return;\n }\n\n const cleanupFns = Object.entries(handlers).reduce<CleanupFunction[]>(\n (acc, [handlerName, handler]) => {\n if (handler) {\n // Convert handler name (e.g. 'onDragStart') to event name (e.g. 'dragstart')\n const eventName = handlerName\n .replace(/^on/, '')\n .toLowerCase() as keyof Events<T, U, V, W>;\n\n const unsubscribe = manager.monitor.addEventListener(\n eventName,\n handler as any\n );\n\n acc.push(unsubscribe);\n }\n\n return acc;\n },\n []\n );\n\n return () => cleanupFns.forEach((cleanup) => cleanup?.());\n }, [manager, handlers]);\n}\n","import type {Data} from '@dnd-kit/abstract';\nimport type {Draggable, Droppable, DragDropManager} from '@dnd-kit/dom';\nimport {useComputed} from '@dnd-kit/react/hooks';\n\nimport {useDragDropManager} from './useDragDropManager.ts';\n\nexport function useDragOperation<\n T extends Data = Data,\n U extends Draggable<T> = Draggable<T>,\n V extends Droppable<T> = Droppable<T>,\n W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>,\n>() {\n const manager = useDragDropManager<T, U, V, W>();\n const source = useComputed(() => manager?.dragOperation.source, [manager]);\n const target = useComputed(() => manager?.dragOperation.target, [manager]);\n\n return {\n get source() {\n return source.value;\n },\n get target() {\n return target.value;\n },\n };\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dnd-kit/react",
|
|
3
|
-
"version": "0.4.1-beta-
|
|
3
|
+
"version": "0.4.1-beta-20260512125751",
|
|
4
4
|
"main": "./index.cjs",
|
|
5
5
|
"module": "./index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -11,17 +11,25 @@
|
|
|
11
11
|
"LICENSE",
|
|
12
12
|
"README.md",
|
|
13
13
|
"index.js",
|
|
14
|
+
"index.js.map",
|
|
14
15
|
"index.d.ts",
|
|
15
16
|
"index.cjs",
|
|
17
|
+
"index.cjs.map",
|
|
16
18
|
"hooks.js",
|
|
19
|
+
"hooks.js.map",
|
|
17
20
|
"hooks.d.ts",
|
|
18
21
|
"hooks.cjs",
|
|
22
|
+
"hooks.cjs.map",
|
|
19
23
|
"sortable.js",
|
|
24
|
+
"sortable.js.map",
|
|
20
25
|
"sortable.d.ts",
|
|
21
26
|
"sortable.cjs",
|
|
27
|
+
"sortable.cjs.map",
|
|
22
28
|
"utilities.js",
|
|
29
|
+
"utilities.js.map",
|
|
23
30
|
"utilities.d.ts",
|
|
24
|
-
"utilities.cjs"
|
|
31
|
+
"utilities.cjs",
|
|
32
|
+
"utilities.cjs.map"
|
|
25
33
|
],
|
|
26
34
|
"exports": {
|
|
27
35
|
".": {
|
|
@@ -56,9 +64,9 @@
|
|
|
56
64
|
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist"
|
|
57
65
|
},
|
|
58
66
|
"dependencies": {
|
|
59
|
-
"@dnd-kit/abstract": "0.4.1-beta-
|
|
60
|
-
"@dnd-kit/dom": "0.4.1-beta-
|
|
61
|
-
"@dnd-kit/state": "0.4.1-beta-
|
|
67
|
+
"@dnd-kit/abstract": "0.4.1-beta-20260512125751",
|
|
68
|
+
"@dnd-kit/dom": "0.4.1-beta-20260512125751",
|
|
69
|
+
"@dnd-kit/state": "0.4.1-beta-20260512125751",
|
|
62
70
|
"tslib": "^2.6.2"
|
|
63
71
|
},
|
|
64
72
|
"peerDependencies": {
|
package/sortable.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["src/sortable/useSortable.ts"],"names":["defaultSortableTransition","sortable","useInstance","Sortable","currentValue","useDeepSignal","useOnValueChange","useIsomorphicLayoutEffect","batch","deepEqual","immediateEffect","useOnElementChange","handle","element","target","useCallback"],"mappings":"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","file":"sortable.cjs","sourcesContent":["import {useCallback} from 'react';\nimport {batch, deepEqual} from '@dnd-kit/state';\nimport {type Data} from '@dnd-kit/abstract';\nimport {Sortable, defaultSortableTransition} from '@dnd-kit/dom/sortable';\nimport type {SortableInput} from '@dnd-kit/dom/sortable';\nimport {useInstance} from '@dnd-kit/react';\nimport {\n useImmediateEffect as immediateEffect,\n useIsomorphicLayoutEffect,\n useOnValueChange,\n useOnElementChange,\n useDeepSignal,\n} from '@dnd-kit/react/hooks';\nimport {currentValue, type RefOrValue} from '@dnd-kit/react/utilities';\n\nexport interface UseSortableInput<T extends Data = Data>\n extends Omit<SortableInput<T>, 'handle' | 'element' | 'target'> {\n handle?: RefOrValue<Element>;\n element?: RefOrValue<Element>;\n target?: RefOrValue<Element>;\n}\n\nexport function useSortable<T extends Data = Data>(input: UseSortableInput<T>) {\n const {\n accept,\n collisionDetector,\n collisionPriority,\n id,\n data,\n element,\n handle,\n index,\n group,\n disabled,\n modifiers,\n sensors,\n target,\n type,\n plugins,\n } = input;\n const transition = {...defaultSortableTransition, ...input.transition};\n const sortable = useInstance((manager) => {\n return new Sortable(\n {\n ...input,\n transition,\n register: false,\n handle: currentValue(handle),\n element: currentValue(element),\n target: currentValue(target),\n },\n manager\n );\n });\n\n const trackedSortable = useDeepSignal(sortable, shouldUpdateSynchronously);\n\n useOnValueChange(id, () => (sortable.id = id));\n\n useIsomorphicLayoutEffect(() => {\n batch(() => {\n sortable.group = group;\n sortable.index = index;\n });\n }, [sortable, group, index]);\n\n useOnValueChange(type, () => (sortable.type = type));\n useOnValueChange(\n accept,\n () => (sortable.accept = accept),\n undefined,\n deepEqual\n );\n useOnValueChange(data, () => data && (sortable.data = data));\n useOnValueChange(\n index,\n () => {\n if (sortable.manager?.dragOperation.status.idle && transition?.idle) {\n sortable.refreshShape();\n }\n },\n immediateEffect\n );\n useOnElementChange(handle, (handle) => (sortable.handle = handle));\n useOnElementChange(element, (element) => (sortable.element = element));\n useOnElementChange(target, (target) => (sortable.target = target));\n useOnValueChange(disabled, () => (sortable.disabled = disabled === true));\n useOnValueChange(\n sensors,\n () => (sortable.sensors = sensors),\n undefined,\n deepEqual\n );\n useOnValueChange(\n collisionDetector,\n () => (sortable.collisionDetector = collisionDetector)\n );\n useOnValueChange(\n collisionPriority,\n () => (sortable.collisionPriority = collisionPriority)\n );\n useOnValueChange(\n plugins,\n () => (sortable.plugins = plugins),\n undefined,\n deepEqual\n );\n useOnValueChange(\n transition,\n () => (sortable.transition = transition),\n undefined,\n deepEqual\n );\n useOnValueChange(\n modifiers,\n () => (sortable.modifiers = modifiers),\n undefined,\n deepEqual\n );\n useOnValueChange(\n input.alignment,\n () => (sortable.alignment = input.alignment)\n );\n\n return {\n sortable: trackedSortable,\n get isDragging() {\n return trackedSortable.isDragging;\n },\n get isDropping() {\n return trackedSortable.isDropping;\n },\n get isDragSource() {\n return trackedSortable.isDragSource;\n },\n get isDropTarget() {\n return trackedSortable.isDropTarget;\n },\n handleRef: useCallback(\n (element: Element | null) => {\n sortable.handle = element ?? undefined;\n },\n [sortable]\n ),\n ref: useCallback(\n (element: Element | null) => {\n if (\n !element &&\n sortable.element?.isConnected &&\n !sortable.manager?.dragOperation.status.idle\n ) {\n return;\n }\n\n sortable.element = element ?? undefined;\n },\n [sortable]\n ),\n sourceRef: useCallback(\n (element: Element | null) => {\n if (\n !element &&\n sortable.source?.isConnected &&\n !sortable.manager?.dragOperation.status.idle\n ) {\n return;\n }\n\n sortable.source = element ?? undefined;\n },\n [sortable]\n ),\n targetRef: useCallback(\n (element: Element | null) => {\n if (\n !element &&\n sortable.target?.isConnected &&\n !sortable.manager?.dragOperation.status.idle\n ) {\n return;\n }\n\n sortable.target = element ?? undefined;\n },\n [sortable]\n ),\n };\n}\n\nfunction shouldUpdateSynchronously(key: string, oldValue: any, newValue: any) {\n // Update synchronously after drop animation\n if (key === 'isDragSource' && !newValue && oldValue) return true;\n\n return false;\n}\n"]}
|
package/sortable.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["src/sortable/useSortable.ts"],"names":["immediateEffect","handle","element","target"],"mappings":"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","file":"sortable.js","sourcesContent":["import {useCallback} from 'react';\nimport {batch, deepEqual} from '@dnd-kit/state';\nimport {type Data} from '@dnd-kit/abstract';\nimport {Sortable, defaultSortableTransition} from '@dnd-kit/dom/sortable';\nimport type {SortableInput} from '@dnd-kit/dom/sortable';\nimport {useInstance} from '@dnd-kit/react';\nimport {\n useImmediateEffect as immediateEffect,\n useIsomorphicLayoutEffect,\n useOnValueChange,\n useOnElementChange,\n useDeepSignal,\n} from '@dnd-kit/react/hooks';\nimport {currentValue, type RefOrValue} from '@dnd-kit/react/utilities';\n\nexport interface UseSortableInput<T extends Data = Data>\n extends Omit<SortableInput<T>, 'handle' | 'element' | 'target'> {\n handle?: RefOrValue<Element>;\n element?: RefOrValue<Element>;\n target?: RefOrValue<Element>;\n}\n\nexport function useSortable<T extends Data = Data>(input: UseSortableInput<T>) {\n const {\n accept,\n collisionDetector,\n collisionPriority,\n id,\n data,\n element,\n handle,\n index,\n group,\n disabled,\n modifiers,\n sensors,\n target,\n type,\n plugins,\n } = input;\n const transition = {...defaultSortableTransition, ...input.transition};\n const sortable = useInstance((manager) => {\n return new Sortable(\n {\n ...input,\n transition,\n register: false,\n handle: currentValue(handle),\n element: currentValue(element),\n target: currentValue(target),\n },\n manager\n );\n });\n\n const trackedSortable = useDeepSignal(sortable, shouldUpdateSynchronously);\n\n useOnValueChange(id, () => (sortable.id = id));\n\n useIsomorphicLayoutEffect(() => {\n batch(() => {\n sortable.group = group;\n sortable.index = index;\n });\n }, [sortable, group, index]);\n\n useOnValueChange(type, () => (sortable.type = type));\n useOnValueChange(\n accept,\n () => (sortable.accept = accept),\n undefined,\n deepEqual\n );\n useOnValueChange(data, () => data && (sortable.data = data));\n useOnValueChange(\n index,\n () => {\n if (sortable.manager?.dragOperation.status.idle && transition?.idle) {\n sortable.refreshShape();\n }\n },\n immediateEffect\n );\n useOnElementChange(handle, (handle) => (sortable.handle = handle));\n useOnElementChange(element, (element) => (sortable.element = element));\n useOnElementChange(target, (target) => (sortable.target = target));\n useOnValueChange(disabled, () => (sortable.disabled = disabled === true));\n useOnValueChange(\n sensors,\n () => (sortable.sensors = sensors),\n undefined,\n deepEqual\n );\n useOnValueChange(\n collisionDetector,\n () => (sortable.collisionDetector = collisionDetector)\n );\n useOnValueChange(\n collisionPriority,\n () => (sortable.collisionPriority = collisionPriority)\n );\n useOnValueChange(\n plugins,\n () => (sortable.plugins = plugins),\n undefined,\n deepEqual\n );\n useOnValueChange(\n transition,\n () => (sortable.transition = transition),\n undefined,\n deepEqual\n );\n useOnValueChange(\n modifiers,\n () => (sortable.modifiers = modifiers),\n undefined,\n deepEqual\n );\n useOnValueChange(\n input.alignment,\n () => (sortable.alignment = input.alignment)\n );\n\n return {\n sortable: trackedSortable,\n get isDragging() {\n return trackedSortable.isDragging;\n },\n get isDropping() {\n return trackedSortable.isDropping;\n },\n get isDragSource() {\n return trackedSortable.isDragSource;\n },\n get isDropTarget() {\n return trackedSortable.isDropTarget;\n },\n handleRef: useCallback(\n (element: Element | null) => {\n sortable.handle = element ?? undefined;\n },\n [sortable]\n ),\n ref: useCallback(\n (element: Element | null) => {\n if (\n !element &&\n sortable.element?.isConnected &&\n !sortable.manager?.dragOperation.status.idle\n ) {\n return;\n }\n\n sortable.element = element ?? undefined;\n },\n [sortable]\n ),\n sourceRef: useCallback(\n (element: Element | null) => {\n if (\n !element &&\n sortable.source?.isConnected &&\n !sortable.manager?.dragOperation.status.idle\n ) {\n return;\n }\n\n sortable.source = element ?? undefined;\n },\n [sortable]\n ),\n targetRef: useCallback(\n (element: Element | null) => {\n if (\n !element &&\n sortable.target?.isConnected &&\n !sortable.manager?.dragOperation.status.idle\n ) {\n return;\n }\n\n sortable.target = element ?? undefined;\n },\n [sortable]\n ),\n };\n}\n\nfunction shouldUpdateSynchronously(key: string, oldValue: any, newValue: any) {\n // Update synchronously after drop animation\n if (key === 'isDragSource' && !newValue && oldValue) return true;\n\n return false;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["src/utilities/currentValue.ts"],"names":[],"mappings":";;;AAMA,SAAS,MAAS,KAAuC,EAAA;AACvD,EAAA,OAAO,KAAS,IAAA,IAAA,IAAQ,OAAO,KAAA,KAAU,YAAY,SAAa,IAAA,KAAA;AACpE;AAEO,SAAS,aACd,KAC4B,EAAA;AAZ9B,EAAA,IAAA,EAAA;AAaE,EAAA,IAAI,SAAS,IAAM,EAAA;AACjB,IAAO,OAAA,MAAA;AAAA;AAGT,EAAI,IAAA,KAAA,CAAM,KAAK,CAAG,EAAA;AAChB,IAAO,OAAA,CAAA,EAAA,GAAA,KAAA,CAAM,YAAN,IAAiB,GAAA,EAAA,GAAA,MAAA;AAAA;AAG1B,EAAO,OAAA,KAAA;AACT","file":"utilities.cjs","sourcesContent":["import type {RefObject, MutableRefObject} from 'react';\n\nexport type Ref<T> = RefObject<T | null | undefined> | MutableRefObject<T>;\n\nexport type RefOrValue<T> = T | Ref<T> | null | undefined;\n\nfunction isRef<T>(value: RefOrValue<T>): value is Ref<T> {\n return value != null && typeof value === 'object' && 'current' in value;\n}\n\nexport function currentValue<T>(\n value: RefOrValue<T>\n): NonNullable<T> | undefined {\n if (value == null) {\n return undefined;\n }\n\n if (isRef(value)) {\n return value.current ?? undefined;\n }\n\n return value;\n}\n"]}
|
package/utilities.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["src/utilities/currentValue.ts"],"names":[],"mappings":";AAMA,SAAS,MAAS,KAAuC,EAAA;AACvD,EAAA,OAAO,KAAS,IAAA,IAAA,IAAQ,OAAO,KAAA,KAAU,YAAY,SAAa,IAAA,KAAA;AACpE;AAEO,SAAS,aACd,KAC4B,EAAA;AAZ9B,EAAA,IAAA,EAAA;AAaE,EAAA,IAAI,SAAS,IAAM,EAAA;AACjB,IAAO,OAAA,MAAA;AAAA;AAGT,EAAI,IAAA,KAAA,CAAM,KAAK,CAAG,EAAA;AAChB,IAAO,OAAA,CAAA,EAAA,GAAA,KAAA,CAAM,YAAN,IAAiB,GAAA,EAAA,GAAA,MAAA;AAAA;AAG1B,EAAO,OAAA,KAAA;AACT","file":"utilities.js","sourcesContent":["import type {RefObject, MutableRefObject} from 'react';\n\nexport type Ref<T> = RefObject<T | null | undefined> | MutableRefObject<T>;\n\nexport type RefOrValue<T> = T | Ref<T> | null | undefined;\n\nfunction isRef<T>(value: RefOrValue<T>): value is Ref<T> {\n return value != null && typeof value === 'object' && 'current' in value;\n}\n\nexport function currentValue<T>(\n value: RefOrValue<T>\n): NonNullable<T> | undefined {\n if (value == null) {\n return undefined;\n }\n\n if (isRef(value)) {\n return value.current ?? undefined;\n }\n\n return value;\n}\n"]}
|