@dnd-kit/solid 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/useDeepSignal.ts"],"names":["createSignal","createEffect","effect","untracked","onCleanup","target"],"mappings":";;;;;;AAIO,SAAS,cACd,MACa,EAAA;AACb,EAAM,MAAA,OAAA,uBAAc,GAA0B,EAAA;AAC9C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,qBAAa,CAAC,CAAA;AAIxC,EAAAC,oBAAA,CAAa,MAAM;AACjB,IAAA,MAAM,UAAU,MAAO,EAAA;AACvB,IAAA,IAAI,CAAC,OAAS,EAAA;AACZ,MAAA,OAAA,CAAQ,KAAM,EAAA;AACd,MAAA;AAAA;AAGF,IAAM,MAAA,OAAA,GAAUC,aAAO,MAAM;AAC3B,MAAA,IAAI,KAAQ,GAAA,KAAA;AAEZ,MAAA,KAAA,MAAW,SAAS,OAAS,EAAA;AAC3B,QAAM,MAAA,CAAC,GAAG,CAAI,GAAA,KAAA;AACd,QAAA,MAAM,KAAQ,GAAAC,eAAA,CAAU,MAAM,KAAA,CAAM,CAAC,CAAC,CAAA;AACtC,QAAM,MAAA,WAAA,GAAe,QAAgB,GAAG,CAAA;AAExC,QAAA,IAAI,UAAU,WAAa,EAAA;AACzB,UAAQ,KAAA,GAAA,IAAA;AACR,UAAQ,OAAA,CAAA,GAAA,CAAI,KAAK,WAAW,CAAA;AAAA;AAC9B;AAGF,MAAA,IAAI,KAAO,EAAA;AACT,QAAS,QAAA,CAAA,CAAC,CAAM,KAAA,CAAA,GAAI,CAAC,CAAA;AAAA;AACvB,KACD,CAAA;AAED,IAAAC,iBAAA,CAAU,OAAO,CAAA;AAAA,GAClB,CAAA;AAED,EAAA,OAAO,MAAM;AACX,IAAA,MAAM,UAAU,MAAO,EAAA;AAEvB,IAAA,KAAK,KAAM,EAAA;AAEX,IAAO,OAAA,OAAA,GACH,IAAI,KAAA,CAAM,OAAS,EAAA;AAAA,MACjB,GAAA,CAAIC,SAAQ,GAAK,EAAA;AACf,QAAM,MAAA,KAAA,GAASA,QAAe,GAAG,CAAA;AACjC,QAAQ,OAAA,CAAA,GAAA,CAAI,KAAK,KAAK,CAAA;AACtB,QAAO,OAAA,KAAA;AAAA;AACT,KACD,CACD,GAAA,OAAA;AAAA,GACN;AACF","file":"hooks.cjs","sourcesContent":["import {effect, untracked} from '@dnd-kit/state';\nimport {createEffect, createSignal, onCleanup, type Accessor} from 'solid-js';\n\n/** Trigger a re-render when reading signal properties of an object. */\nexport function useDeepSignal<T extends object | null | undefined>(\n target: Accessor<T>\n): Accessor<T> {\n const tracked = new Map<string | symbol, any>();\n const [dirty, setDirty] = createSignal(0);\n\n // Create the preact effect AFTER the first render,\n // when tracked has been populated by Proxy getters.\n createEffect(() => {\n const _target = target();\n if (!_target) {\n tracked.clear();\n return;\n }\n\n const dispose = effect(() => {\n let stale = false;\n\n for (const entry of tracked) {\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.set(key, latestValue);\n }\n }\n\n if (stale) {\n setDirty((v) => v + 1);\n }\n });\n\n onCleanup(dispose);\n });\n\n return () => {\n const _target = target();\n\n void dirty();\n\n return _target\n ? new Proxy(_target, {\n get(target, key) {\n const value = (target as any)[key];\n tracked.set(key, value);\n return value;\n },\n })\n : _target;\n };\n}\n"]}
|
package/hooks.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["src/hooks/useDeepSignal.ts"],"names":["target"],"mappings":";;;;AAIO,SAAS,cACd,MACa,EAAA;AACb,EAAM,MAAA,OAAA,uBAAc,GAA0B,EAAA;AAC9C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,aAAa,CAAC,CAAA;AAIxC,EAAA,YAAA,CAAa,MAAM;AACjB,IAAA,MAAM,UAAU,MAAO,EAAA;AACvB,IAAA,IAAI,CAAC,OAAS,EAAA;AACZ,MAAA,OAAA,CAAQ,KAAM,EAAA;AACd,MAAA;AAAA;AAGF,IAAM,MAAA,OAAA,GAAU,OAAO,MAAM;AAC3B,MAAA,IAAI,KAAQ,GAAA,KAAA;AAEZ,MAAA,KAAA,MAAW,SAAS,OAAS,EAAA;AAC3B,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,QAAgB,GAAG,CAAA;AAExC,QAAA,IAAI,UAAU,WAAa,EAAA;AACzB,UAAQ,KAAA,GAAA,IAAA;AACR,UAAQ,OAAA,CAAA,GAAA,CAAI,KAAK,WAAW,CAAA;AAAA;AAC9B;AAGF,MAAA,IAAI,KAAO,EAAA;AACT,QAAS,QAAA,CAAA,CAAC,CAAM,KAAA,CAAA,GAAI,CAAC,CAAA;AAAA;AACvB,KACD,CAAA;AAED,IAAA,SAAA,CAAU,OAAO,CAAA;AAAA,GAClB,CAAA;AAED,EAAA,OAAO,MAAM;AACX,IAAA,MAAM,UAAU,MAAO,EAAA;AAEvB,IAAA,KAAK,KAAM,EAAA;AAEX,IAAO,OAAA,OAAA,GACH,IAAI,KAAA,CAAM,OAAS,EAAA;AAAA,MACjB,GAAA,CAAIA,SAAQ,GAAK,EAAA;AACf,QAAM,MAAA,KAAA,GAASA,QAAe,GAAG,CAAA;AACjC,QAAQ,OAAA,CAAA,GAAA,CAAI,KAAK,KAAK,CAAA;AACtB,QAAO,OAAA,KAAA;AAAA;AACT,KACD,CACD,GAAA,OAAA;AAAA,GACN;AACF","file":"hooks.js","sourcesContent":["import {effect, untracked} from '@dnd-kit/state';\nimport {createEffect, createSignal, onCleanup, type Accessor} from 'solid-js';\n\n/** Trigger a re-render when reading signal properties of an object. */\nexport function useDeepSignal<T extends object | null | undefined>(\n target: Accessor<T>\n): Accessor<T> {\n const tracked = new Map<string | symbol, any>();\n const [dirty, setDirty] = createSignal(0);\n\n // Create the preact effect AFTER the first render,\n // when tracked has been populated by Proxy getters.\n createEffect(() => {\n const _target = target();\n if (!_target) {\n tracked.clear();\n return;\n }\n\n const dispose = effect(() => {\n let stale = false;\n\n for (const entry of tracked) {\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.set(key, latestValue);\n }\n }\n\n if (stale) {\n setDirty((v) => v + 1);\n }\n });\n\n onCleanup(dispose);\n });\n\n return () => {\n const _target = target();\n\n void dirty();\n\n return _target\n ? new Proxy(_target, {\n get(target, key) {\n const value = (target as any)[key];\n tracked.set(key, value);\n return value;\n },\n })\n : _target;\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/utilities/saveElementPosition.ts","src/core/context/DragDropProvider.tsx","src/hooks/useDeepSignal.ts","src/core/hooks/useDragDropManager.ts","src/core/hooks/useInstance.ts","src/core/draggable/useDraggable.ts","src/core/hooks/useDragOperation.ts","src/core/draggable/DragOverlay.tsx","src/core/droppable/useDroppable.ts","src/core/hooks/useDragDropMonitor.ts"],"names":["createContext","createSignal","createEffect","on","batch","DragDropProvider","props","savePosition","restorePosition","clearPosition","createSaveElementPosition","renderer","trackRendering","useRenderer","managerProps","splitProps","manager","createMemo","DragDropManager","onCleanup","destroy","_manager","plugins","resolveCustomizable","defaultPreset","sensors","modifiers","disposers","monitor","push","addEventListener","event","isSortable","operation","source","callback","onBeforeDragStart","onDragStart","onDragOver","queueMicrotask","onDragMove","element","onDragEnd","onCollision","forEach","cleanup","_$createComponent","DragDropContext","Provider","value","children","effect","untracked","target","useContext","Draggable","DragOverlay","setElement","useDragDropManager","patchedManager","createPatchedManager","dragOperation","useDragOperation","isDisabled","disabled","undefined","feedback","find","plugin","Feedback","overlay","dropAnimation","Show","when","_$memo","src","Dynamic","component","tag","class","style","ref","patchedRegistry","Proxy","registry","get","property","noop","Droppable"],"mappings":"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","file":"index.cjs","sourcesContent":["import {DragDropManager} from '@dnd-kit/dom';\nimport {createContext} from 'solid-js';\n\nexport const DragDropContext = createContext<DragDropManager | null>(null);\n","import {batch, createEffect, createSignal, on} from 'solid-js';\n\nimport type {DragDropManager} from '@dnd-kit/dom';\n\ntype Renderer = DragDropManager['renderer'];\n\nexport function useRenderer(): {\n renderer: Renderer;\n trackRendering: (callback: () => void) => void;\n} {\n const [transitionCount, setTransitionCount] = createSignal(0);\n let rendering: Promise<void> | null = null;\n let resolver: (() => void) | null = null;\n\n createEffect(\n on(transitionCount, () => {\n resolver?.();\n rendering = null;\n })\n );\n\n return {\n renderer: {\n get rendering() {\n return rendering ?? Promise.resolve();\n },\n },\n trackRendering(callback: () => void) {\n if (!rendering) {\n rendering = new Promise<void>((resolve) => {\n resolver = resolve;\n });\n }\n\n batch(() => {\n callback();\n setTransitionCount((c) => c + 1);\n });\n },\n };\n}\n","import type {UniqueIdentifier} from '@dnd-kit/abstract';\nimport type {Draggable} from '@dnd-kit/dom';\n\n// Workaround for SolidJS issue:\n// https://github.com/solidjs/solid/issues/2515\nexport function createSaveElementPosition() {\n let savedPosition: {\n id: UniqueIdentifier | null;\n element: Element;\n prevElement: Element | null;\n nextElement: Element | null;\n parentElement: HTMLElement | null;\n } | null = null;\n\n const savePosition = (source: Draggable) => {\n const element = source.element!;\n const id = source.id;\n\n const prevElement = element.previousElementSibling;\n const nextElement = element.nextElementSibling;\n const parentElement = element.parentElement;\n\n savedPosition = {\n id,\n element,\n prevElement: prevElement === element ? null : prevElement,\n nextElement: nextElement === element ? null : nextElement,\n parentElement,\n };\n };\n\n const restorePosition = (element: Element) => {\n if (!savedPosition) return;\n\n const {prevElement, nextElement, parentElement} = savedPosition;\n\n if (prevElement && element.previousElementSibling !== prevElement) {\n prevElement.insertAdjacentElement('afterend', element);\n } else if (nextElement && element.nextElementSibling !== nextElement) {\n nextElement.insertAdjacentElement('beforebegin', element);\n } else if (!prevElement && !nextElement && parentElement) {\n parentElement.appendChild(element);\n }\n };\n\n const clearPosition = () => {\n savedPosition = null;\n };\n\n return {\n savePosition,\n clearPosition,\n restorePosition,\n };\n}\n","import {createEffect, createMemo, onCleanup, splitProps} from 'solid-js';\nimport {DragDropManager, defaultPreset, resolveCustomizable} from '@dnd-kit/dom';\nimport {isSortable} from '@dnd-kit/dom/sortable';\n\nimport {DragDropContext} from './context.ts';\nimport {useRenderer} from './renderer.ts';\nimport {createSaveElementPosition} from '../../utilities/saveElementPosition.ts';\n\nimport type {DragDropEventHandlers} from '@dnd-kit/abstract';\nimport type {DragDropManagerInput, Draggable, Droppable} from '@dnd-kit/dom';\nimport type {ParentProps} from 'solid-js';\n\nexport type Events = DragDropEventHandlers<Draggable, Droppable, DragDropManager>;\n\nexport interface DragDropProviderProps\n extends DragDropManagerInput,\n ParentProps {\n manager?: DragDropManager;\n onBeforeDragStart?: Events['beforedragstart'];\n onCollision?: Events['collision'];\n onDragStart?: Events['dragstart'];\n onDragMove?: Events['dragmove'];\n onDragOver?: Events['dragover'];\n onDragEnd?: Events['dragend'];\n}\n\nexport function DragDropProvider(props: DragDropProviderProps) {\n const {savePosition, restorePosition, clearPosition} = createSaveElementPosition();\n const {renderer, trackRendering} = useRenderer();\n // Strip `children` before forwarding props to `DragDropManager`. The manager\n // constructor spreads its input (`{...input}`) which would otherwise invoke\n // Solid's `children` getter and synthesize an orphan component subtree on\n // every memo recomputation. See #2015.\n const [, managerProps] = splitProps(props, ['children']);\n const manager = createMemo(\n () => props.manager ?? new DragDropManager(managerProps)\n );\n\n onCleanup(() => {\n if (!props.manager) {\n manager().destroy();\n }\n });\n\n createEffect(() => {\n const _manager = manager();\n\n _manager.renderer = renderer;\n _manager.plugins = resolveCustomizable(props.plugins, defaultPreset.plugins);\n _manager.sensors = resolveCustomizable(props.sensors, defaultPreset.sensors);\n _manager.modifiers = resolveCustomizable(props.modifiers, defaultPreset.modifiers);\n });\n\n createEffect(() => {\n const disposers: (() => void)[] = [];\n const monitor = manager().monitor;\n\n disposers.push(\n monitor.addEventListener('beforedragstart', (event, manager) => {\n if (isSortable(event.operation.source)) {\n savePosition(event.operation.source);\n }\n\n const callback = props.onBeforeDragStart;\n if (callback) {\n trackRendering(() => callback(event, manager));\n }\n }),\n monitor.addEventListener('dragstart', (event, manager) => {\n props.onDragStart?.(event, manager);\n }),\n monitor.addEventListener('dragover', (event, manager) => {\n const callback = props.onDragOver;\n if (callback) {\n trackRendering(() => callback(event, manager));\n\n\n // Update saved position to match what Solid just rendered.\n if (isSortable(event.operation.source)) {\n const source = event.operation.source;\n\n queueMicrotask(() => savePosition(source));\n }\n }\n }),\n monitor.addEventListener('dragmove', (event, manager) => {\n const callback = props.onDragMove;\n if (callback) {\n trackRendering(() => callback(event, manager));\n }\n }),\n monitor.addEventListener('dragend', (event, manager) => {\n if (isSortable(event.operation.source)) {\n restorePosition(event.operation.source!.element!);\n }\n\n const callback = props.onDragEnd;\n if (callback) {\n trackRendering(() => callback(event, manager));\n }\n\n clearPosition();\n }),\n monitor.addEventListener('collision', (event, manager) => {\n props.onCollision?.(event, manager);\n })\n );\n\n onCleanup(() => {\n disposers.forEach((cleanup) => cleanup());\n });\n });\n\n return (\n <DragDropContext.Provider value={manager()}>\n {props.children}\n </DragDropContext.Provider>\n );\n}\n","import {effect, untracked} from '@dnd-kit/state';\nimport {createEffect, createSignal, onCleanup, type Accessor} from 'solid-js';\n\n/** Trigger a re-render when reading signal properties of an object. */\nexport function useDeepSignal<T extends object | null | undefined>(\n target: Accessor<T>\n): Accessor<T> {\n const tracked = new Map<string | symbol, any>();\n const [dirty, setDirty] = createSignal(0);\n\n // Create the preact effect AFTER the first render,\n // when tracked has been populated by Proxy getters.\n createEffect(() => {\n const _target = target();\n if (!_target) {\n tracked.clear();\n return;\n }\n\n const dispose = effect(() => {\n let stale = false;\n\n for (const entry of tracked) {\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.set(key, latestValue);\n }\n }\n\n if (stale) {\n setDirty((v) => v + 1);\n }\n });\n\n onCleanup(dispose);\n });\n\n return () => {\n const _target = target();\n\n void dirty();\n\n return _target\n ? new Proxy(_target, {\n get(target, key) {\n const value = (target as any)[key];\n tracked.set(key, value);\n return value;\n },\n })\n : _target;\n };\n}\n","import {useContext} from 'solid-js';\n\nimport {DragDropContext} from '../context/context.ts';\n\nexport function useDragDropManager() {\n return useContext(DragDropContext);\n}\n","import type {DragDropManager} from '@dnd-kit/dom';\nimport type {CleanupFunction} from '@dnd-kit/state';\nimport {createEffect, onCleanup} from 'solid-js';\n\nimport {useDragDropManager} from './useDragDropManager.ts';\n\nexport interface Instance<T extends DragDropManager = DragDropManager> {\n manager: T | undefined;\n register(): CleanupFunction | void;\n}\n\nexport function useInstance<T extends Instance>(\n initializer: (manager: DragDropManager | undefined) => T\n): T {\n const manager = useDragDropManager() ?? undefined;\n const instance = initializer(manager);\n\n createEffect(() => {\n instance.manager = manager;\n const cleanup = instance.register();\n\n onCleanup(() => cleanup?.());\n });\n\n return instance;\n}\n","import type {Data} from '@dnd-kit/abstract';\nimport type {DraggableInput} from '@dnd-kit/dom';\nimport {Draggable} from '@dnd-kit/dom';\nimport {createEffect, createSignal} from 'solid-js';\n\nimport {useDeepSignal} from '../../hooks/useDeepSignal.ts';\nimport {useInstance} from '../hooks/useInstance.ts';\n\nexport interface UseDraggableInput<T extends Data = Data>\n extends Omit<DraggableInput<T>, 'handle' | 'element'> {\n handle?: Element;\n element?: Element;\n}\n\nexport function useDraggable<T extends Data = Data>(\n input: UseDraggableInput<T>\n) {\n const draggable = useInstance(\n (manager) =>\n new Draggable(\n {\n ...input,\n register: false,\n element: input.element,\n handle: input.handle,\n },\n manager\n )\n );\n const trackedDraggable = useDeepSignal(() => draggable);\n\n const [element, setElement] = createSignal<Element | undefined>(\n input.element\n );\n const [handle, setHandle] = createSignal<Element | undefined>(input.handle);\n\n createEffect(() => {\n const el = element();\n if (el) draggable.element = el;\n\n const h = handle();\n if (h) draggable.handle = h;\n\n draggable.id = input.id;\n draggable.disabled = input.disabled ?? false;\n draggable.alignment = input.alignment;\n draggable.plugins = input.plugins;\n draggable.modifiers = input.modifiers;\n draggable.sensors = input.sensors;\n\n if (input.data) {\n draggable.data = input.data;\n }\n });\n\n return {\n get draggable() {\n return draggable;\n },\n isDragging: () => trackedDraggable().isDragging,\n isDropping: () => trackedDraggable().isDropping,\n isDragSource: () => trackedDraggable().isDragSource,\n ref: setElement,\n handleRef: setHandle,\n };\n}\n","import {useDeepSignal} from '../../hooks/useDeepSignal.ts';\nimport {useDragDropManager} from './useDragDropManager.ts';\n\nexport function useDragOperation() {\n const manager = useDragDropManager();\n const trackedDragOperation = useDeepSignal(\n () => manager?.dragOperation\n );\n\n return {\n source: () => trackedDragOperation()?.source,\n target: () => trackedDragOperation()?.target,\n status: () => trackedDragOperation()?.status,\n };\n}\n","import {Feedback} from '@dnd-kit/dom';\nimport {Show, createEffect, createMemo, createSignal, onCleanup} from 'solid-js';\nimport {Dynamic} from 'solid-js/web';\n\nimport {DragDropContext} from '../context/context.ts';\nimport {useDragDropManager} from '../hooks/useDragDropManager.ts';\nimport {useDragOperation} from '../hooks/useDragOperation.ts';\n\nimport type {DragDropManager, Draggable, Droppable, DropAnimation} from '@dnd-kit/dom';\nimport type {JSX, ValidComponent} from 'solid-js';\nimport type {Data} from '@dnd-kit/abstract';\n\nexport interface DragOverlayProps<\n T extends Data,\n U extends Draggable<T>,\n> {\n class?: string;\n children: JSX.Element | ((source: U) => JSX.Element);\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?: JSX.CSSProperties;\n tag?: ValidComponent;\n disabled?: boolean | ((source: U | null) => boolean);\n}\n\nexport function DragOverlay<T extends Data, U extends Draggable<T>>(\n props: DragOverlayProps<T, U>\n) {\n const [element, setElement] = createSignal<HTMLElement>();\n const manager = useDragDropManager();\n const patchedManager = createPatchedManager(() => manager);\n const dragOperation = useDragOperation();\n\n const source = () => dragOperation.source() as U | null;\n\n const isDisabled = () => {\n if (typeof props.disabled === 'function') {\n return props.disabled(source());\n }\n return props.disabled ?? false;\n };\n\n createEffect(() => {\n if (!source()) {\n setElement(undefined);\n }\n });\n\n createEffect(() => {\n const _manager = manager;\n\n if (!_manager || isDisabled()) return;\n\n const feedback = _manager.plugins.find(\n (plugin): plugin is Feedback => plugin instanceof Feedback\n );\n\n if (!feedback) return;\n\n feedback.overlay = element();\n feedback.dropAnimation = props.dropAnimation;\n\n onCleanup(() => {\n feedback.overlay = undefined;\n feedback.dropAnimation = undefined;\n });\n });\n\n return (\n <DragDropContext.Provider value={patchedManager()}>\n <Show when={!isDisabled() ? source() : undefined}>\n {(src) => (\n <Dynamic\n component={props.tag || 'div'}\n class={props.class}\n style={props.style}\n data-dnd-overlay\n ref={setElement}\n >\n {typeof props.children === 'function'\n ? props.children(src() as unknown as U)\n : props.children}\n </Dynamic>\n )}\n </Show>\n </DragDropContext.Provider>\n );\n}\n\nfunction createPatchedManager<\n T extends Data,\n U extends Draggable<T>,\n V extends Droppable<T>,\n W extends DragDropManager<T, U, V>,\n>(manager: () => W | null) {\n return createMemo(() => {\n const _manager = manager();\n\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 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 return target[property as keyof typeof target];\n },\n });\n });\n}\n\nfunction noop() {\n return () => {};\n}\n","import type {Data} from '@dnd-kit/abstract';\nimport type {DroppableInput} from '@dnd-kit/dom';\nimport {Droppable} from '@dnd-kit/dom';\nimport {createEffect, createSignal} from 'solid-js';\n\nimport {useDeepSignal} from '../../hooks/useDeepSignal.ts';\nimport {useInstance} from '../hooks/useInstance.ts';\n\nexport interface UseDroppableInput<T extends Data = Data>\n extends Omit<DroppableInput<T>, 'element'> {\n element?: Element;\n}\n\nexport function useDroppable<T extends Data = Data>(\n input: UseDroppableInput<T>\n) {\n const droppable = useInstance(\n (manager) =>\n new Droppable(\n {\n ...input,\n register: false,\n element: input.element,\n },\n manager\n )\n );\n const trackedDroppable = useDeepSignal(() => droppable);\n\n const [element, setElement] = createSignal<Element | undefined>(\n input.element\n );\n\n createEffect(() => {\n const el = element();\n if (el) droppable.element = el;\n\n droppable.id = input.id;\n droppable.accept = input.accept;\n droppable.type = input.type;\n droppable.disabled = input.disabled ?? false;\n\n if (input.collisionDetector) {\n droppable.collisionDetector = input.collisionDetector;\n }\n\n if (input.data) {\n droppable.data = input.data;\n }\n });\n\n return {\n get droppable() {\n return droppable;\n },\n isDropTarget: () => trackedDroppable().isDropTarget,\n ref: setElement,\n };\n}\n","import type {DragDropEventHandlers, Data} from '@dnd-kit/abstract';\nimport type {Draggable, Droppable, DragDropManager} from '@dnd-kit/dom';\nimport {createEffect, onCleanup} from 'solid-js';\nimport type {CleanupFunction} from '@dnd-kit/state';\n\nimport {useDragDropManager} from './useDragDropManager.ts';\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\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<\n T,\n U,\n V,\n W\n >[K];\n};\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: EventHandlers<T, U, V, W>): void {\n const manager = useDragDropManager();\n\n createEffect(() => {\n if (!manager) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'useDragDropMonitor 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 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 onCleanup(() => cleanupFns.forEach((cleanup) => cleanup()));\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/utilities/saveElementPosition.ts","src/core/context/DragDropProvider.tsx","src/hooks/useDeepSignal.ts","src/core/hooks/useDragDropManager.ts","src/core/hooks/useInstance.ts","src/core/draggable/useDraggable.ts","src/core/hooks/useDragOperation.ts","src/core/draggable/DragOverlay.tsx","src/core/droppable/useDroppable.ts","src/core/hooks/useDragDropMonitor.ts"],"names":["DragDropProvider","props","savePosition","restorePosition","clearPosition","createSaveElementPosition","renderer","trackRendering","useRenderer","managerProps","splitProps","manager","createMemo","DragDropManager","onCleanup","destroy","createEffect","_manager","plugins","resolveCustomizable","defaultPreset","sensors","modifiers","disposers","monitor","push","addEventListener","event","isSortable","operation","source","callback","onBeforeDragStart","onDragStart","onDragOver","queueMicrotask","onDragMove","element","onDragEnd","onCollision","forEach","cleanup","_$createComponent","DragDropContext","Provider","value","children","createSignal","target","DragOverlay","setElement","useDragDropManager","patchedManager","createPatchedManager","dragOperation","useDragOperation","isDisabled","disabled","undefined","feedback","find","plugin","Feedback","overlay","dropAnimation","Show","when","_$memo","src","Dynamic","component","tag","class","style","ref","patchedRegistry","Proxy","registry","get","property","noop"],"mappings":"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","file":"index.js","sourcesContent":["import {DragDropManager} from '@dnd-kit/dom';\nimport {createContext} from 'solid-js';\n\nexport const DragDropContext = createContext<DragDropManager | null>(null);\n","import {batch, createEffect, createSignal, on} from 'solid-js';\n\nimport type {DragDropManager} from '@dnd-kit/dom';\n\ntype Renderer = DragDropManager['renderer'];\n\nexport function useRenderer(): {\n renderer: Renderer;\n trackRendering: (callback: () => void) => void;\n} {\n const [transitionCount, setTransitionCount] = createSignal(0);\n let rendering: Promise<void> | null = null;\n let resolver: (() => void) | null = null;\n\n createEffect(\n on(transitionCount, () => {\n resolver?.();\n rendering = null;\n })\n );\n\n return {\n renderer: {\n get rendering() {\n return rendering ?? Promise.resolve();\n },\n },\n trackRendering(callback: () => void) {\n if (!rendering) {\n rendering = new Promise<void>((resolve) => {\n resolver = resolve;\n });\n }\n\n batch(() => {\n callback();\n setTransitionCount((c) => c + 1);\n });\n },\n };\n}\n","import type {UniqueIdentifier} from '@dnd-kit/abstract';\nimport type {Draggable} from '@dnd-kit/dom';\n\n// Workaround for SolidJS issue:\n// https://github.com/solidjs/solid/issues/2515\nexport function createSaveElementPosition() {\n let savedPosition: {\n id: UniqueIdentifier | null;\n element: Element;\n prevElement: Element | null;\n nextElement: Element | null;\n parentElement: HTMLElement | null;\n } | null = null;\n\n const savePosition = (source: Draggable) => {\n const element = source.element!;\n const id = source.id;\n\n const prevElement = element.previousElementSibling;\n const nextElement = element.nextElementSibling;\n const parentElement = element.parentElement;\n\n savedPosition = {\n id,\n element,\n prevElement: prevElement === element ? null : prevElement,\n nextElement: nextElement === element ? null : nextElement,\n parentElement,\n };\n };\n\n const restorePosition = (element: Element) => {\n if (!savedPosition) return;\n\n const {prevElement, nextElement, parentElement} = savedPosition;\n\n if (prevElement && element.previousElementSibling !== prevElement) {\n prevElement.insertAdjacentElement('afterend', element);\n } else if (nextElement && element.nextElementSibling !== nextElement) {\n nextElement.insertAdjacentElement('beforebegin', element);\n } else if (!prevElement && !nextElement && parentElement) {\n parentElement.appendChild(element);\n }\n };\n\n const clearPosition = () => {\n savedPosition = null;\n };\n\n return {\n savePosition,\n clearPosition,\n restorePosition,\n };\n}\n","import {createEffect, createMemo, onCleanup, splitProps} from 'solid-js';\nimport {DragDropManager, defaultPreset, resolveCustomizable} from '@dnd-kit/dom';\nimport {isSortable} from '@dnd-kit/dom/sortable';\n\nimport {DragDropContext} from './context.ts';\nimport {useRenderer} from './renderer.ts';\nimport {createSaveElementPosition} from '../../utilities/saveElementPosition.ts';\n\nimport type {DragDropEventHandlers} from '@dnd-kit/abstract';\nimport type {DragDropManagerInput, Draggable, Droppable} from '@dnd-kit/dom';\nimport type {ParentProps} from 'solid-js';\n\nexport type Events = DragDropEventHandlers<Draggable, Droppable, DragDropManager>;\n\nexport interface DragDropProviderProps\n extends DragDropManagerInput,\n ParentProps {\n manager?: DragDropManager;\n onBeforeDragStart?: Events['beforedragstart'];\n onCollision?: Events['collision'];\n onDragStart?: Events['dragstart'];\n onDragMove?: Events['dragmove'];\n onDragOver?: Events['dragover'];\n onDragEnd?: Events['dragend'];\n}\n\nexport function DragDropProvider(props: DragDropProviderProps) {\n const {savePosition, restorePosition, clearPosition} = createSaveElementPosition();\n const {renderer, trackRendering} = useRenderer();\n // Strip `children` before forwarding props to `DragDropManager`. The manager\n // constructor spreads its input (`{...input}`) which would otherwise invoke\n // Solid's `children` getter and synthesize an orphan component subtree on\n // every memo recomputation. See #2015.\n const [, managerProps] = splitProps(props, ['children']);\n const manager = createMemo(\n () => props.manager ?? new DragDropManager(managerProps)\n );\n\n onCleanup(() => {\n if (!props.manager) {\n manager().destroy();\n }\n });\n\n createEffect(() => {\n const _manager = manager();\n\n _manager.renderer = renderer;\n _manager.plugins = resolveCustomizable(props.plugins, defaultPreset.plugins);\n _manager.sensors = resolveCustomizable(props.sensors, defaultPreset.sensors);\n _manager.modifiers = resolveCustomizable(props.modifiers, defaultPreset.modifiers);\n });\n\n createEffect(() => {\n const disposers: (() => void)[] = [];\n const monitor = manager().monitor;\n\n disposers.push(\n monitor.addEventListener('beforedragstart', (event, manager) => {\n if (isSortable(event.operation.source)) {\n savePosition(event.operation.source);\n }\n\n const callback = props.onBeforeDragStart;\n if (callback) {\n trackRendering(() => callback(event, manager));\n }\n }),\n monitor.addEventListener('dragstart', (event, manager) => {\n props.onDragStart?.(event, manager);\n }),\n monitor.addEventListener('dragover', (event, manager) => {\n const callback = props.onDragOver;\n if (callback) {\n trackRendering(() => callback(event, manager));\n\n\n // Update saved position to match what Solid just rendered.\n if (isSortable(event.operation.source)) {\n const source = event.operation.source;\n\n queueMicrotask(() => savePosition(source));\n }\n }\n }),\n monitor.addEventListener('dragmove', (event, manager) => {\n const callback = props.onDragMove;\n if (callback) {\n trackRendering(() => callback(event, manager));\n }\n }),\n monitor.addEventListener('dragend', (event, manager) => {\n if (isSortable(event.operation.source)) {\n restorePosition(event.operation.source!.element!);\n }\n\n const callback = props.onDragEnd;\n if (callback) {\n trackRendering(() => callback(event, manager));\n }\n\n clearPosition();\n }),\n monitor.addEventListener('collision', (event, manager) => {\n props.onCollision?.(event, manager);\n })\n );\n\n onCleanup(() => {\n disposers.forEach((cleanup) => cleanup());\n });\n });\n\n return (\n <DragDropContext.Provider value={manager()}>\n {props.children}\n </DragDropContext.Provider>\n );\n}\n","import {effect, untracked} from '@dnd-kit/state';\nimport {createEffect, createSignal, onCleanup, type Accessor} from 'solid-js';\n\n/** Trigger a re-render when reading signal properties of an object. */\nexport function useDeepSignal<T extends object | null | undefined>(\n target: Accessor<T>\n): Accessor<T> {\n const tracked = new Map<string | symbol, any>();\n const [dirty, setDirty] = createSignal(0);\n\n // Create the preact effect AFTER the first render,\n // when tracked has been populated by Proxy getters.\n createEffect(() => {\n const _target = target();\n if (!_target) {\n tracked.clear();\n return;\n }\n\n const dispose = effect(() => {\n let stale = false;\n\n for (const entry of tracked) {\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.set(key, latestValue);\n }\n }\n\n if (stale) {\n setDirty((v) => v + 1);\n }\n });\n\n onCleanup(dispose);\n });\n\n return () => {\n const _target = target();\n\n void dirty();\n\n return _target\n ? new Proxy(_target, {\n get(target, key) {\n const value = (target as any)[key];\n tracked.set(key, value);\n return value;\n },\n })\n : _target;\n };\n}\n","import {useContext} from 'solid-js';\n\nimport {DragDropContext} from '../context/context.ts';\n\nexport function useDragDropManager() {\n return useContext(DragDropContext);\n}\n","import type {DragDropManager} from '@dnd-kit/dom';\nimport type {CleanupFunction} from '@dnd-kit/state';\nimport {createEffect, onCleanup} from 'solid-js';\n\nimport {useDragDropManager} from './useDragDropManager.ts';\n\nexport interface Instance<T extends DragDropManager = DragDropManager> {\n manager: T | undefined;\n register(): CleanupFunction | void;\n}\n\nexport function useInstance<T extends Instance>(\n initializer: (manager: DragDropManager | undefined) => T\n): T {\n const manager = useDragDropManager() ?? undefined;\n const instance = initializer(manager);\n\n createEffect(() => {\n instance.manager = manager;\n const cleanup = instance.register();\n\n onCleanup(() => cleanup?.());\n });\n\n return instance;\n}\n","import type {Data} from '@dnd-kit/abstract';\nimport type {DraggableInput} from '@dnd-kit/dom';\nimport {Draggable} from '@dnd-kit/dom';\nimport {createEffect, createSignal} from 'solid-js';\n\nimport {useDeepSignal} from '../../hooks/useDeepSignal.ts';\nimport {useInstance} from '../hooks/useInstance.ts';\n\nexport interface UseDraggableInput<T extends Data = Data>\n extends Omit<DraggableInput<T>, 'handle' | 'element'> {\n handle?: Element;\n element?: Element;\n}\n\nexport function useDraggable<T extends Data = Data>(\n input: UseDraggableInput<T>\n) {\n const draggable = useInstance(\n (manager) =>\n new Draggable(\n {\n ...input,\n register: false,\n element: input.element,\n handle: input.handle,\n },\n manager\n )\n );\n const trackedDraggable = useDeepSignal(() => draggable);\n\n const [element, setElement] = createSignal<Element | undefined>(\n input.element\n );\n const [handle, setHandle] = createSignal<Element | undefined>(input.handle);\n\n createEffect(() => {\n const el = element();\n if (el) draggable.element = el;\n\n const h = handle();\n if (h) draggable.handle = h;\n\n draggable.id = input.id;\n draggable.disabled = input.disabled ?? false;\n draggable.alignment = input.alignment;\n draggable.plugins = input.plugins;\n draggable.modifiers = input.modifiers;\n draggable.sensors = input.sensors;\n\n if (input.data) {\n draggable.data = input.data;\n }\n });\n\n return {\n get draggable() {\n return draggable;\n },\n isDragging: () => trackedDraggable().isDragging,\n isDropping: () => trackedDraggable().isDropping,\n isDragSource: () => trackedDraggable().isDragSource,\n ref: setElement,\n handleRef: setHandle,\n };\n}\n","import {useDeepSignal} from '../../hooks/useDeepSignal.ts';\nimport {useDragDropManager} from './useDragDropManager.ts';\n\nexport function useDragOperation() {\n const manager = useDragDropManager();\n const trackedDragOperation = useDeepSignal(\n () => manager?.dragOperation\n );\n\n return {\n source: () => trackedDragOperation()?.source,\n target: () => trackedDragOperation()?.target,\n status: () => trackedDragOperation()?.status,\n };\n}\n","import {Feedback} from '@dnd-kit/dom';\nimport {Show, createEffect, createMemo, createSignal, onCleanup} from 'solid-js';\nimport {Dynamic} from 'solid-js/web';\n\nimport {DragDropContext} from '../context/context.ts';\nimport {useDragDropManager} from '../hooks/useDragDropManager.ts';\nimport {useDragOperation} from '../hooks/useDragOperation.ts';\n\nimport type {DragDropManager, Draggable, Droppable, DropAnimation} from '@dnd-kit/dom';\nimport type {JSX, ValidComponent} from 'solid-js';\nimport type {Data} from '@dnd-kit/abstract';\n\nexport interface DragOverlayProps<\n T extends Data,\n U extends Draggable<T>,\n> {\n class?: string;\n children: JSX.Element | ((source: U) => JSX.Element);\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?: JSX.CSSProperties;\n tag?: ValidComponent;\n disabled?: boolean | ((source: U | null) => boolean);\n}\n\nexport function DragOverlay<T extends Data, U extends Draggable<T>>(\n props: DragOverlayProps<T, U>\n) {\n const [element, setElement] = createSignal<HTMLElement>();\n const manager = useDragDropManager();\n const patchedManager = createPatchedManager(() => manager);\n const dragOperation = useDragOperation();\n\n const source = () => dragOperation.source() as U | null;\n\n const isDisabled = () => {\n if (typeof props.disabled === 'function') {\n return props.disabled(source());\n }\n return props.disabled ?? false;\n };\n\n createEffect(() => {\n if (!source()) {\n setElement(undefined);\n }\n });\n\n createEffect(() => {\n const _manager = manager;\n\n if (!_manager || isDisabled()) return;\n\n const feedback = _manager.plugins.find(\n (plugin): plugin is Feedback => plugin instanceof Feedback\n );\n\n if (!feedback) return;\n\n feedback.overlay = element();\n feedback.dropAnimation = props.dropAnimation;\n\n onCleanup(() => {\n feedback.overlay = undefined;\n feedback.dropAnimation = undefined;\n });\n });\n\n return (\n <DragDropContext.Provider value={patchedManager()}>\n <Show when={!isDisabled() ? source() : undefined}>\n {(src) => (\n <Dynamic\n component={props.tag || 'div'}\n class={props.class}\n style={props.style}\n data-dnd-overlay\n ref={setElement}\n >\n {typeof props.children === 'function'\n ? props.children(src() as unknown as U)\n : props.children}\n </Dynamic>\n )}\n </Show>\n </DragDropContext.Provider>\n );\n}\n\nfunction createPatchedManager<\n T extends Data,\n U extends Draggable<T>,\n V extends Droppable<T>,\n W extends DragDropManager<T, U, V>,\n>(manager: () => W | null) {\n return createMemo(() => {\n const _manager = manager();\n\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 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 return target[property as keyof typeof target];\n },\n });\n });\n}\n\nfunction noop() {\n return () => {};\n}\n","import type {Data} from '@dnd-kit/abstract';\nimport type {DroppableInput} from '@dnd-kit/dom';\nimport {Droppable} from '@dnd-kit/dom';\nimport {createEffect, createSignal} from 'solid-js';\n\nimport {useDeepSignal} from '../../hooks/useDeepSignal.ts';\nimport {useInstance} from '../hooks/useInstance.ts';\n\nexport interface UseDroppableInput<T extends Data = Data>\n extends Omit<DroppableInput<T>, 'element'> {\n element?: Element;\n}\n\nexport function useDroppable<T extends Data = Data>(\n input: UseDroppableInput<T>\n) {\n const droppable = useInstance(\n (manager) =>\n new Droppable(\n {\n ...input,\n register: false,\n element: input.element,\n },\n manager\n )\n );\n const trackedDroppable = useDeepSignal(() => droppable);\n\n const [element, setElement] = createSignal<Element | undefined>(\n input.element\n );\n\n createEffect(() => {\n const el = element();\n if (el) droppable.element = el;\n\n droppable.id = input.id;\n droppable.accept = input.accept;\n droppable.type = input.type;\n droppable.disabled = input.disabled ?? false;\n\n if (input.collisionDetector) {\n droppable.collisionDetector = input.collisionDetector;\n }\n\n if (input.data) {\n droppable.data = input.data;\n }\n });\n\n return {\n get droppable() {\n return droppable;\n },\n isDropTarget: () => trackedDroppable().isDropTarget,\n ref: setElement,\n };\n}\n","import type {DragDropEventHandlers, Data} from '@dnd-kit/abstract';\nimport type {Draggable, Droppable, DragDropManager} from '@dnd-kit/dom';\nimport {createEffect, onCleanup} from 'solid-js';\nimport type {CleanupFunction} from '@dnd-kit/state';\n\nimport {useDragDropManager} from './useDragDropManager.ts';\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\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<\n T,\n U,\n V,\n W\n >[K];\n};\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: EventHandlers<T, U, V, W>): void {\n const manager = useDragDropManager();\n\n createEffect(() => {\n if (!manager) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'useDragDropMonitor 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 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 onCleanup(() => cleanupFns.forEach((cleanup) => cleanup()));\n });\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dnd-kit/solid",
|
|
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
|
".": {
|
|
@@ -55,9 +63,9 @@
|
|
|
55
63
|
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist"
|
|
56
64
|
},
|
|
57
65
|
"dependencies": {
|
|
58
|
-
"@dnd-kit/abstract": "0.4.1-beta-
|
|
59
|
-
"@dnd-kit/dom": "0.4.1-beta-
|
|
60
|
-
"@dnd-kit/state": "0.4.1-beta-
|
|
66
|
+
"@dnd-kit/abstract": "0.4.1-beta-20260512125751",
|
|
67
|
+
"@dnd-kit/dom": "0.4.1-beta-20260512125751",
|
|
68
|
+
"@dnd-kit/state": "0.4.1-beta-20260512125751",
|
|
61
69
|
"tslib": "^2.6.2"
|
|
62
70
|
},
|
|
63
71
|
"peerDependencies": {
|
package/sortable.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["src/sortable/useSortable.ts"],"names":["defaultSortableTransition","sortable","useInstance","Sortable","useDeepSignal","createSignal","createEffect","on","batch"],"mappings":"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","file":"sortable.cjs","sourcesContent":["import {type Data} from '@dnd-kit/abstract';\nimport type {SortableInput} from '@dnd-kit/dom/sortable';\nimport {defaultSortableTransition, Sortable} from '@dnd-kit/dom/sortable';\nimport {batch} from '@dnd-kit/state';\nimport {createEffect, createSignal, on} from 'solid-js';\n\nimport {useDeepSignal} from '@dnd-kit/solid/hooks';\nimport {useInstance} from '@dnd-kit/solid';\n\nexport interface UseSortableInput<T extends Data = Data>\n extends Omit<SortableInput<T>, 'handle' | 'element' | 'source' | 'target'> {\n handle?: Element;\n element?: Element;\n source?: Element;\n target?: Element;\n}\n\nexport function useSortable<T extends Data = Data>(\n input: UseSortableInput<T>\n) {\n const transition = {\n ...defaultSortableTransition,\n ...input.transition,\n };\n\n const sortable = useInstance((manager) => {\n return new Sortable(\n {\n ...input,\n register: false,\n transition,\n element: input.element,\n handle: input.handle,\n target: input.target,\n },\n manager\n );\n });\n const trackedSortable = useDeepSignal(() => sortable);\n\n const [element, setElement] = createSignal<Element | undefined>(\n input.element\n );\n const [handle, setHandle] = createSignal<Element | undefined>(input.handle);\n const [source, setSource] = createSignal<Element | undefined>(input.source);\n const [target, setTarget] = createSignal<Element | undefined>(input.target);\n\n createEffect(() => {\n const el = element();\n if (el) sortable.element = el;\n\n const h = handle();\n if (h) sortable.handle = h;\n\n const s = source();\n if (s) sortable.source = s;\n\n const t = target();\n if (t) sortable.target = t;\n\n sortable.id = input.id;\n sortable.disabled = input.disabled ?? false;\n sortable.alignment = input.alignment;\n sortable.plugins = input.plugins;\n sortable.modifiers = input.modifiers;\n sortable.sensors = input.sensors;\n sortable.accept = input.accept;\n sortable.type = input.type;\n sortable.collisionPriority = input.collisionPriority;\n sortable.transition = input.transition\n ? {...defaultSortableTransition, ...input.transition}\n : defaultSortableTransition;\n\n if (input.collisionDetector) {\n sortable.collisionDetector = input.collisionDetector;\n }\n\n if (input.data) {\n sortable.data = input.data;\n }\n });\n\n // Batch group + index updates\n createEffect(\n on(\n () => [input.group, input.index],\n () => {\n batch(() => {\n sortable.group = input.group;\n sortable.index = input.index;\n });\n }\n )\n );\n\n // Refresh shape when index changes while idle\n createEffect(\n on(\n () => input.index,\n () => {\n if (\n sortable.manager?.dragOperation.status.idle &&\n sortable.transition?.idle\n ) {\n sortable.refreshShape();\n }\n }\n )\n );\n\n return {\n get sortable() {\n return sortable;\n },\n isDragging: () => trackedSortable().isDragging,\n isDropping: () => trackedSortable().isDropping,\n isDragSource: () => trackedSortable().isDragSource,\n isDropTarget: () => trackedSortable().isDropTarget,\n ref: setElement,\n handleRef: setHandle,\n sourceRef: setSource,\n targetRef: setTarget,\n };\n}\n"]}
|
package/sortable.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["src/sortable/useSortable.ts"],"names":[],"mappings":"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","file":"sortable.js","sourcesContent":["import {type Data} from '@dnd-kit/abstract';\nimport type {SortableInput} from '@dnd-kit/dom/sortable';\nimport {defaultSortableTransition, Sortable} from '@dnd-kit/dom/sortable';\nimport {batch} from '@dnd-kit/state';\nimport {createEffect, createSignal, on} from 'solid-js';\n\nimport {useDeepSignal} from '@dnd-kit/solid/hooks';\nimport {useInstance} from '@dnd-kit/solid';\n\nexport interface UseSortableInput<T extends Data = Data>\n extends Omit<SortableInput<T>, 'handle' | 'element' | 'source' | 'target'> {\n handle?: Element;\n element?: Element;\n source?: Element;\n target?: Element;\n}\n\nexport function useSortable<T extends Data = Data>(\n input: UseSortableInput<T>\n) {\n const transition = {\n ...defaultSortableTransition,\n ...input.transition,\n };\n\n const sortable = useInstance((manager) => {\n return new Sortable(\n {\n ...input,\n register: false,\n transition,\n element: input.element,\n handle: input.handle,\n target: input.target,\n },\n manager\n );\n });\n const trackedSortable = useDeepSignal(() => sortable);\n\n const [element, setElement] = createSignal<Element | undefined>(\n input.element\n );\n const [handle, setHandle] = createSignal<Element | undefined>(input.handle);\n const [source, setSource] = createSignal<Element | undefined>(input.source);\n const [target, setTarget] = createSignal<Element | undefined>(input.target);\n\n createEffect(() => {\n const el = element();\n if (el) sortable.element = el;\n\n const h = handle();\n if (h) sortable.handle = h;\n\n const s = source();\n if (s) sortable.source = s;\n\n const t = target();\n if (t) sortable.target = t;\n\n sortable.id = input.id;\n sortable.disabled = input.disabled ?? false;\n sortable.alignment = input.alignment;\n sortable.plugins = input.plugins;\n sortable.modifiers = input.modifiers;\n sortable.sensors = input.sensors;\n sortable.accept = input.accept;\n sortable.type = input.type;\n sortable.collisionPriority = input.collisionPriority;\n sortable.transition = input.transition\n ? {...defaultSortableTransition, ...input.transition}\n : defaultSortableTransition;\n\n if (input.collisionDetector) {\n sortable.collisionDetector = input.collisionDetector;\n }\n\n if (input.data) {\n sortable.data = input.data;\n }\n });\n\n // Batch group + index updates\n createEffect(\n on(\n () => [input.group, input.index],\n () => {\n batch(() => {\n sortable.group = input.group;\n sortable.index = input.index;\n });\n }\n )\n );\n\n // Refresh shape when index changes while idle\n createEffect(\n on(\n () => input.index,\n () => {\n if (\n sortable.manager?.dragOperation.status.idle &&\n sortable.transition?.idle\n ) {\n sortable.refreshShape();\n }\n }\n )\n );\n\n return {\n get sortable() {\n return sortable;\n },\n isDragging: () => trackedSortable().isDragging,\n isDropping: () => trackedSortable().isDropping,\n isDragSource: () => trackedSortable().isDragSource,\n isDropTarget: () => trackedSortable().isDropTarget,\n ref: setElement,\n handleRef: setHandle,\n sourceRef: setSource,\n targetRef: setTarget,\n };\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["src/utilities/saveElementPosition.ts"],"names":[],"mappings":";;;AAKO,SAAS,yBAA4B,GAAA;AAC1C,EAAA,IAAI,aAMO,GAAA,IAAA;AAEX,EAAM,MAAA,YAAA,GAAe,CAAC,MAAsB,KAAA;AAC1C,IAAA,MAAM,UAAU,MAAO,CAAA,OAAA;AACvB,IAAA,MAAM,KAAK,MAAO,CAAA,EAAA;AAElB,IAAA,MAAM,cAAc,OAAQ,CAAA,sBAAA;AAC5B,IAAA,MAAM,cAAc,OAAQ,CAAA,kBAAA;AAC5B,IAAA,MAAM,gBAAgB,OAAQ,CAAA,aAAA;AAE9B,IAAgB,aAAA,GAAA;AAAA,MACd,EAAA;AAAA,MACA,OAAA;AAAA,MACA,WAAA,EAAa,WAAgB,KAAA,OAAA,GAAU,IAAO,GAAA,WAAA;AAAA,MAC9C,WAAA,EAAa,WAAgB,KAAA,OAAA,GAAU,IAAO,GAAA,WAAA;AAAA,MAC9C;AAAA,KACF;AAAA,GACF;AAEA,EAAM,MAAA,eAAA,GAAkB,CAAC,OAAqB,KAAA;AAC5C,IAAA,IAAI,CAAC,aAAe,EAAA;AAEpB,IAAA,MAAM,EAAC,WAAA,EAAa,WAAa,EAAA,aAAA,EAAiB,GAAA,aAAA;AAElD,IAAI,IAAA,WAAA,IAAe,OAAQ,CAAA,sBAAA,KAA2B,WAAa,EAAA;AACjE,MAAY,WAAA,CAAA,qBAAA,CAAsB,YAAY,OAAO,CAAA;AAAA,KAC5C,MAAA,IAAA,WAAA,IAAe,OAAQ,CAAA,kBAAA,KAAuB,WAAa,EAAA;AACpE,MAAY,WAAA,CAAA,qBAAA,CAAsB,eAAe,OAAO,CAAA;AAAA,KAC/C,MAAA,IAAA,CAAC,WAAe,IAAA,CAAC,eAAe,aAAe,EAAA;AACxD,MAAA,aAAA,CAAc,YAAY,OAAO,CAAA;AAAA;AACnC,GACF;AAEA,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAgB,aAAA,GAAA,IAAA;AAAA,GAClB;AAEA,EAAO,OAAA;AAAA,IACL,YAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,GACF;AACF","file":"utilities.cjs","sourcesContent":["import type {UniqueIdentifier} from '@dnd-kit/abstract';\nimport type {Draggable} from '@dnd-kit/dom';\n\n// Workaround for SolidJS issue:\n// https://github.com/solidjs/solid/issues/2515\nexport function createSaveElementPosition() {\n let savedPosition: {\n id: UniqueIdentifier | null;\n element: Element;\n prevElement: Element | null;\n nextElement: Element | null;\n parentElement: HTMLElement | null;\n } | null = null;\n\n const savePosition = (source: Draggable) => {\n const element = source.element!;\n const id = source.id;\n\n const prevElement = element.previousElementSibling;\n const nextElement = element.nextElementSibling;\n const parentElement = element.parentElement;\n\n savedPosition = {\n id,\n element,\n prevElement: prevElement === element ? null : prevElement,\n nextElement: nextElement === element ? null : nextElement,\n parentElement,\n };\n };\n\n const restorePosition = (element: Element) => {\n if (!savedPosition) return;\n\n const {prevElement, nextElement, parentElement} = savedPosition;\n\n if (prevElement && element.previousElementSibling !== prevElement) {\n prevElement.insertAdjacentElement('afterend', element);\n } else if (nextElement && element.nextElementSibling !== nextElement) {\n nextElement.insertAdjacentElement('beforebegin', element);\n } else if (!prevElement && !nextElement && parentElement) {\n parentElement.appendChild(element);\n }\n };\n\n const clearPosition = () => {\n savedPosition = null;\n };\n\n return {\n savePosition,\n clearPosition,\n restorePosition,\n };\n}\n"]}
|
package/utilities.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["src/utilities/saveElementPosition.ts"],"names":[],"mappings":";AAKO,SAAS,yBAA4B,GAAA;AAC1C,EAAA,IAAI,aAMO,GAAA,IAAA;AAEX,EAAM,MAAA,YAAA,GAAe,CAAC,MAAsB,KAAA;AAC1C,IAAA,MAAM,UAAU,MAAO,CAAA,OAAA;AACvB,IAAA,MAAM,KAAK,MAAO,CAAA,EAAA;AAElB,IAAA,MAAM,cAAc,OAAQ,CAAA,sBAAA;AAC5B,IAAA,MAAM,cAAc,OAAQ,CAAA,kBAAA;AAC5B,IAAA,MAAM,gBAAgB,OAAQ,CAAA,aAAA;AAE9B,IAAgB,aAAA,GAAA;AAAA,MACd,EAAA;AAAA,MACA,OAAA;AAAA,MACA,WAAA,EAAa,WAAgB,KAAA,OAAA,GAAU,IAAO,GAAA,WAAA;AAAA,MAC9C,WAAA,EAAa,WAAgB,KAAA,OAAA,GAAU,IAAO,GAAA,WAAA;AAAA,MAC9C;AAAA,KACF;AAAA,GACF;AAEA,EAAM,MAAA,eAAA,GAAkB,CAAC,OAAqB,KAAA;AAC5C,IAAA,IAAI,CAAC,aAAe,EAAA;AAEpB,IAAA,MAAM,EAAC,WAAA,EAAa,WAAa,EAAA,aAAA,EAAiB,GAAA,aAAA;AAElD,IAAI,IAAA,WAAA,IAAe,OAAQ,CAAA,sBAAA,KAA2B,WAAa,EAAA;AACjE,MAAY,WAAA,CAAA,qBAAA,CAAsB,YAAY,OAAO,CAAA;AAAA,KAC5C,MAAA,IAAA,WAAA,IAAe,OAAQ,CAAA,kBAAA,KAAuB,WAAa,EAAA;AACpE,MAAY,WAAA,CAAA,qBAAA,CAAsB,eAAe,OAAO,CAAA;AAAA,KAC/C,MAAA,IAAA,CAAC,WAAe,IAAA,CAAC,eAAe,aAAe,EAAA;AACxD,MAAA,aAAA,CAAc,YAAY,OAAO,CAAA;AAAA;AACnC,GACF;AAEA,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAgB,aAAA,GAAA,IAAA;AAAA,GAClB;AAEA,EAAO,OAAA;AAAA,IACL,YAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,GACF;AACF","file":"utilities.js","sourcesContent":["import type {UniqueIdentifier} from '@dnd-kit/abstract';\nimport type {Draggable} from '@dnd-kit/dom';\n\n// Workaround for SolidJS issue:\n// https://github.com/solidjs/solid/issues/2515\nexport function createSaveElementPosition() {\n let savedPosition: {\n id: UniqueIdentifier | null;\n element: Element;\n prevElement: Element | null;\n nextElement: Element | null;\n parentElement: HTMLElement | null;\n } | null = null;\n\n const savePosition = (source: Draggable) => {\n const element = source.element!;\n const id = source.id;\n\n const prevElement = element.previousElementSibling;\n const nextElement = element.nextElementSibling;\n const parentElement = element.parentElement;\n\n savedPosition = {\n id,\n element,\n prevElement: prevElement === element ? null : prevElement,\n nextElement: nextElement === element ? null : nextElement,\n parentElement,\n };\n };\n\n const restorePosition = (element: Element) => {\n if (!savedPosition) return;\n\n const {prevElement, nextElement, parentElement} = savedPosition;\n\n if (prevElement && element.previousElementSibling !== prevElement) {\n prevElement.insertAdjacentElement('afterend', element);\n } else if (nextElement && element.nextElementSibling !== nextElement) {\n nextElement.insertAdjacentElement('beforebegin', element);\n } else if (!prevElement && !nextElement && parentElement) {\n parentElement.appendChild(element);\n }\n };\n\n const clearPosition = () => {\n savedPosition = null;\n };\n\n return {\n savePosition,\n clearPosition,\n restorePosition,\n };\n}\n"]}
|