@lucasols/dnd-kit-sortable 0.1.4 → 0.2.1
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/dist/index.d.ts +137 -9
- package/dist/index.js +520 -7
- package/dist/index.js.map +1 -0
- package/package.json +21 -17
- package/dist/components/SortableContext.d.ts +0 -26
- package/dist/components/index.d.ts +0 -2
- package/dist/dnd-kit-sortable.cjs.development.js +0 -801
- package/dist/dnd-kit-sortable.cjs.development.js.map +0 -1
- package/dist/dnd-kit-sortable.cjs.production.min.js +0 -2
- package/dist/dnd-kit-sortable.cjs.production.min.js.map +0 -1
- package/dist/dnd-kit-sortable.esm.js +0 -783
- package/dist/dnd-kit-sortable.esm.js.map +0 -1
- package/dist/hooks/defaults.d.ts +0 -9
- package/dist/hooks/index.d.ts +0 -4
- package/dist/hooks/types.d.ts +0 -24
- package/dist/hooks/useSortable.d.ts +0 -36
- package/dist/hooks/utilities/index.d.ts +0 -1
- package/dist/hooks/utilities/useDerivedTransform.d.ts +0 -11
- package/dist/sensors/index.d.ts +0 -1
- package/dist/sensors/keyboard/index.d.ts +0 -1
- package/dist/sensors/keyboard/sortableKeyboardCoordinates.d.ts +0 -2
- package/dist/strategies/horizontalListSorting.d.ts +0 -2
- package/dist/strategies/index.d.ts +0 -4
- package/dist/strategies/rectSorting.d.ts +0 -2
- package/dist/strategies/rectSwapping.d.ts +0 -2
- package/dist/strategies/verticalListSorting.d.ts +0 -2
- package/dist/types/data.d.ts +0 -8
- package/dist/types/disabled.d.ts +0 -4
- package/dist/types/index.d.ts +0 -4
- package/dist/types/strategies.d.ts +0 -9
- package/dist/types/type-guard.d.ts +0 -7
- package/dist/utilities/arrayMove.d.ts +0 -4
- package/dist/utilities/arraySwap.d.ts +0 -4
- package/dist/utilities/getSortedRects.d.ts +0 -2
- package/dist/utilities/index.d.ts +0 -6
- package/dist/utilities/isValidIndex.d.ts +0 -1
- package/dist/utilities/itemsEqual.d.ts +0 -2
- package/dist/utilities/normalizeDisabled.d.ts +0 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["defaultScale","getItemGap"],"sources":["../src/utilities/arrayMove.ts","../src/utilities/arraySwap.ts","../src/utilities/getSortedRects.ts","../src/utilities/isValidIndex.ts","../src/utilities/itemsEqual.ts","../src/utilities/normalizeDisabled.ts","../src/strategies/horizontalListSorting.ts","../src/strategies/rectSorting.ts","../src/strategies/rectSwapping.ts","../src/strategies/verticalListSorting.ts","../src/components/SortableContext.tsx","../src/hooks/defaults.ts","../src/hooks/utilities/useDerivedTransform.ts","../src/hooks/useSortable.ts","../src/types/type-guard.ts","../src/sensors/keyboard/sortableKeyboardCoordinates.ts"],"sourcesContent":["/**\n * Move an array item to a different position. Returns a new array with the item moved to the new position.\n */\nexport function arrayMove<T>(array: T[], from: number, to: number): T[] {\n const newArray = array.slice();\n newArray.splice(\n to < 0 ? newArray.length + to : to,\n 0,\n newArray.splice(from, 1)[0]\n );\n\n return newArray;\n}\n","/**\n * Swap an array item to a different position. Returns a new array with the item swapped to the new position.\n */\nexport function arraySwap<T>(array: T[], from: number, to: number): T[] {\n const newArray = array.slice();\n\n newArray[from] = array[to];\n newArray[to] = array[from];\n\n return newArray;\n}\n","import type {\n ClientRect,\n UniqueIdentifier,\n UseDndContextReturnValue,\n} from '@lucasols/dnd-kit-core';\n\nexport function getSortedRects(\n items: UniqueIdentifier[],\n rects: UseDndContextReturnValue['droppableRects']\n) {\n return items.reduce<ClientRect[]>((accumulator, id, index) => {\n const rect = rects.get(id);\n\n if (rect) {\n accumulator[index] = rect;\n }\n\n return accumulator;\n }, Array(items.length));\n}\n","export function isValidIndex(index: number | null): index is number {\n return index !== null && index >= 0;\n}\n","import type {UniqueIdentifier} from '@lucasols/dnd-kit-core';\n\nexport function itemsEqual(a: UniqueIdentifier[], b: UniqueIdentifier[]) {\n if (a === b) {\n return true;\n }\n\n if (a.length !== b.length) {\n return false;\n }\n\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n\n return true;\n}\n","import type {Disabled} from '../types';\n\nexport function normalizeDisabled(disabled: boolean | Disabled): Disabled {\n if (typeof disabled === 'boolean') {\n return {\n draggable: disabled,\n droppable: disabled,\n };\n }\n\n return disabled;\n}\n","import type {ClientRect} from '@lucasols/dnd-kit-core';\nimport type {SortingStrategy} from '../types';\n\n// To-do: We should be calculating scale transformation\nconst defaultScale = {\n scaleX: 1,\n scaleY: 1,\n};\n\nexport const horizontalListSortingStrategy: SortingStrategy = ({\n rects,\n activeNodeRect: fallbackActiveRect,\n activeIndex,\n overIndex,\n index,\n}) => {\n const activeNodeRect = rects[activeIndex] ?? fallbackActiveRect;\n\n if (!activeNodeRect) {\n return null;\n }\n\n const itemGap = getItemGap(rects, index, activeIndex);\n\n if (index === activeIndex) {\n const newIndexRect = rects[overIndex];\n\n if (!newIndexRect) {\n return null;\n }\n\n return {\n x:\n activeIndex < overIndex\n ? newIndexRect.left +\n newIndexRect.width -\n (activeNodeRect.left + activeNodeRect.width)\n : newIndexRect.left - activeNodeRect.left,\n y: 0,\n ...defaultScale,\n };\n }\n\n if (index > activeIndex && index <= overIndex) {\n return {\n x: -activeNodeRect.width - itemGap,\n y: 0,\n ...defaultScale,\n };\n }\n\n if (index < activeIndex && index >= overIndex) {\n return {\n x: activeNodeRect.width + itemGap,\n y: 0,\n ...defaultScale,\n };\n }\n\n return {\n x: 0,\n y: 0,\n ...defaultScale,\n };\n};\n\nfunction getItemGap(rects: ClientRect[], index: number, activeIndex: number) {\n const currentRect: ClientRect | undefined = rects[index];\n const previousRect: ClientRect | undefined = rects[index - 1];\n const nextRect: ClientRect | undefined = rects[index + 1];\n\n if (!currentRect || (!previousRect && !nextRect)) {\n return 0;\n }\n\n if (activeIndex < index) {\n return previousRect\n ? currentRect.left - (previousRect.left + previousRect.width)\n : nextRect.left - (currentRect.left + currentRect.width);\n }\n\n return nextRect\n ? nextRect.left - (currentRect.left + currentRect.width)\n : currentRect.left - (previousRect.left + previousRect.width);\n}\n","import {arrayMove} from '../utilities';\nimport type {SortingStrategy} from '../types';\n\nexport const rectSortingStrategy: SortingStrategy = ({\n rects,\n activeIndex,\n overIndex,\n index,\n}) => {\n const newRects = arrayMove(rects, overIndex, activeIndex);\n\n const oldRect = rects[index];\n const newRect = newRects[index];\n\n if (!newRect || !oldRect) {\n return null;\n }\n\n return {\n x: newRect.left - oldRect.left,\n y: newRect.top - oldRect.top,\n scaleX: newRect.width / oldRect.width,\n scaleY: newRect.height / oldRect.height,\n };\n};\n","import type {SortingStrategy} from '../types';\n\nexport const rectSwappingStrategy: SortingStrategy = ({\n activeIndex,\n index,\n rects,\n overIndex,\n}) => {\n let oldRect;\n let newRect;\n\n if (index === activeIndex) {\n oldRect = rects[index];\n newRect = rects[overIndex];\n }\n\n if (index === overIndex) {\n oldRect = rects[index];\n newRect = rects[activeIndex];\n }\n\n if (!newRect || !oldRect) {\n return null;\n }\n\n return {\n x: newRect.left - oldRect.left,\n y: newRect.top - oldRect.top,\n scaleX: newRect.width / oldRect.width,\n scaleY: newRect.height / oldRect.height,\n };\n};\n","import type {ClientRect} from '@lucasols/dnd-kit-core';\nimport type {SortingStrategy} from '../types';\n\n// To-do: We should be calculating scale transformation\nconst defaultScale = {\n scaleX: 1,\n scaleY: 1,\n};\n\nexport const verticalListSortingStrategy: SortingStrategy = ({\n activeIndex,\n activeNodeRect: fallbackActiveRect,\n index,\n rects,\n overIndex,\n}) => {\n const activeNodeRect = rects[activeIndex] ?? fallbackActiveRect;\n\n if (!activeNodeRect) {\n return null;\n }\n\n if (index === activeIndex) {\n const overIndexRect = rects[overIndex];\n\n if (!overIndexRect) {\n return null;\n }\n\n return {\n x: 0,\n y:\n activeIndex < overIndex\n ? overIndexRect.top +\n overIndexRect.height -\n (activeNodeRect.top + activeNodeRect.height)\n : overIndexRect.top - activeNodeRect.top,\n ...defaultScale,\n };\n }\n\n const itemGap = getItemGap(rects, index, activeIndex);\n\n if (index > activeIndex && index <= overIndex) {\n return {\n x: 0,\n y: -activeNodeRect.height - itemGap,\n ...defaultScale,\n };\n }\n\n if (index < activeIndex && index >= overIndex) {\n return {\n x: 0,\n y: activeNodeRect.height + itemGap,\n ...defaultScale,\n };\n }\n\n return {\n x: 0,\n y: 0,\n ...defaultScale,\n };\n};\n\nfunction getItemGap(\n clientRects: ClientRect[],\n index: number,\n activeIndex: number\n) {\n const currentRect: ClientRect | undefined = clientRects[index];\n const previousRect: ClientRect | undefined = clientRects[index - 1];\n const nextRect: ClientRect | undefined = clientRects[index + 1];\n\n if (!currentRect) {\n return 0;\n }\n\n if (activeIndex < index) {\n return previousRect\n ? currentRect.top - (previousRect.top + previousRect.height)\n : nextRect\n ? nextRect.top - (currentRect.top + currentRect.height)\n : 0;\n }\n\n return nextRect\n ? nextRect.top - (currentRect.top + currentRect.height)\n : previousRect\n ? currentRect.top - (previousRect.top + previousRect.height)\n : 0;\n}\n","import React, {useEffect, useMemo, useRef} from 'react';\nimport {\n useDndContext,\n ClientRect,\n UniqueIdentifier,\n} from '@lucasols/dnd-kit-core';\nimport {\n useIsomorphicLayoutEffect,\n useUniqueId,\n} from '@lucasols/dnd-kit-utilities';\n\nimport type {Disabled, SortingStrategy} from '../types';\nimport {getSortedRects, itemsEqual, normalizeDisabled} from '../utilities';\nimport {rectSortingStrategy} from '../strategies';\n\nexport interface Props {\n children: React.ReactNode;\n items: (UniqueIdentifier | {id: UniqueIdentifier})[];\n strategy?: SortingStrategy;\n id?: string;\n disabled?: boolean | Disabled;\n}\n\nconst ID_PREFIX = 'Sortable';\n\ninterface ContextDescriptor {\n activeIndex: number;\n containerId: string;\n disabled: Disabled;\n disableTransforms: boolean;\n items: UniqueIdentifier[];\n overIndex: number;\n useDragOverlay: boolean;\n sortedRects: ClientRect[];\n strategy: SortingStrategy;\n}\n\nexport const Context = React.createContext<ContextDescriptor>({\n activeIndex: -1,\n containerId: ID_PREFIX,\n disableTransforms: false,\n items: [],\n overIndex: -1,\n useDragOverlay: false,\n sortedRects: [],\n strategy: rectSortingStrategy,\n disabled: {\n draggable: false,\n droppable: false,\n },\n});\n\nexport function SortableContext({\n children,\n id,\n items: userDefinedItems,\n strategy = rectSortingStrategy,\n disabled: disabledProp = false,\n}: Props): React.JSX.Element {\n const {\n active,\n dragOverlay,\n droppableRects,\n over,\n measureDroppableContainers,\n } = useDndContext();\n const containerId = useUniqueId(ID_PREFIX, id);\n const useDragOverlay = Boolean(dragOverlay.rect !== null);\n const items = useMemo<UniqueIdentifier[]>(\n () =>\n userDefinedItems.map((item) =>\n typeof item === 'object' && 'id' in item ? item.id : item\n ),\n [userDefinedItems]\n );\n const isDragging = active != null;\n const activeIndex = active ? items.indexOf(active.id) : -1;\n const overIndex = over ? items.indexOf(over.id) : -1;\n const previousItemsRef = useRef(items);\n const itemsHaveChanged = !itemsEqual(items, previousItemsRef.current);\n const disableTransforms =\n (overIndex !== -1 && activeIndex === -1) || itemsHaveChanged;\n const disabled = normalizeDisabled(disabledProp);\n\n useIsomorphicLayoutEffect(() => {\n if (itemsHaveChanged && isDragging) {\n measureDroppableContainers(items);\n }\n }, [itemsHaveChanged, items, isDragging, measureDroppableContainers]);\n\n useEffect(() => {\n previousItemsRef.current = items;\n }, [items]);\n\n const contextValue = useMemo(\n (): ContextDescriptor => ({\n activeIndex,\n containerId,\n disabled,\n disableTransforms,\n items,\n overIndex,\n useDragOverlay,\n sortedRects: getSortedRects(items, droppableRects),\n strategy,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n activeIndex,\n containerId,\n disabled.draggable,\n disabled.droppable,\n disableTransforms,\n items,\n overIndex,\n droppableRects,\n useDragOverlay,\n strategy,\n ]\n );\n\n return <Context.Provider value={contextValue}>{children}</Context.Provider>;\n}\n","import {CSS} from '@lucasols/dnd-kit-utilities';\n\nimport {arrayMove} from '../utilities';\n\nimport type {\n AnimateLayoutChanges,\n NewIndexGetter,\n SortableTransition,\n} from './types';\n\nexport const defaultNewIndexGetter: NewIndexGetter = ({\n id,\n items,\n activeIndex,\n overIndex,\n}) => arrayMove(items, activeIndex, overIndex).indexOf(id);\n\nexport const defaultAnimateLayoutChanges: AnimateLayoutChanges = ({\n containerId,\n isSorting,\n wasDragging,\n index,\n items,\n newIndex,\n previousItems,\n previousContainerId,\n transition,\n}) => {\n if (!transition || !wasDragging) {\n return false;\n }\n\n if (previousItems !== items && index === newIndex) {\n return false;\n }\n\n if (isSorting) {\n return true;\n }\n\n return newIndex !== index && containerId === previousContainerId;\n};\n\nexport const defaultTransition: SortableTransition = {\n duration: 200,\n easing: 'ease',\n};\n\nexport const transitionProperty = 'transform';\n\nexport const disabledTransition = CSS.Transition.toString({\n property: transitionProperty,\n duration: 0,\n easing: 'linear',\n});\n\nexport const defaultAttributes = {\n roleDescription: 'sortable',\n};\n","import {useEffect, useRef, useState} from 'react';\nimport {getClientRect, ClientRect} from '@lucasols/dnd-kit-core';\nimport {\n Transform,\n useIsomorphicLayoutEffect,\n} from '@lucasols/dnd-kit-utilities';\n\ninterface Arguments {\n rect: React.MutableRefObject<ClientRect | null>;\n disabled: boolean;\n index: number;\n node: React.MutableRefObject<HTMLElement | null>;\n}\n\n/*\n * When the index of an item changes while sorting,\n * we need to temporarily disable the transforms\n */\nexport function useDerivedTransform({disabled, index, node, rect}: Arguments) {\n const [derivedTransform, setDerivedtransform] = useState<Transform | null>(\n null\n );\n const previousIndex = useRef(index);\n\n useIsomorphicLayoutEffect(() => {\n if (!disabled && index !== previousIndex.current && node.current) {\n const initial = rect.current;\n\n if (initial) {\n const current = getClientRect(node.current, {\n ignoreTransform: true,\n });\n\n const delta = {\n x: initial.left - current.left,\n y: initial.top - current.top,\n scaleX: initial.width / current.width,\n scaleY: initial.height / current.height,\n };\n\n if (delta.x || delta.y) {\n setDerivedtransform(delta);\n }\n }\n }\n\n if (index !== previousIndex.current) {\n previousIndex.current = index;\n }\n }, [disabled, index, node, rect]);\n\n useEffect(() => {\n if (derivedTransform) {\n setDerivedtransform(null);\n }\n }, [derivedTransform]);\n\n return derivedTransform;\n}\n","import {useContext, useEffect, useMemo, useRef} from 'react';\nimport {\n useDraggable,\n useDroppable,\n UseDraggableArguments,\n UseDroppableArguments,\n} from '@lucasols/dnd-kit-core';\nimport type {Data} from '@lucasols/dnd-kit-core';\nimport {\n CSS,\n isKeyboardEvent,\n useCombinedRefs,\n} from '@lucasols/dnd-kit-utilities';\n\nimport {Context} from '../components';\nimport type {Disabled, SortableData, SortingStrategy} from '../types';\nimport {isValidIndex} from '../utilities';\nimport {\n defaultAnimateLayoutChanges,\n defaultAttributes,\n defaultNewIndexGetter,\n defaultTransition,\n disabledTransition,\n transitionProperty,\n} from './defaults';\nimport type {\n AnimateLayoutChanges,\n NewIndexGetter,\n SortableTransition,\n} from './types';\nimport {useDerivedTransform} from './utilities';\n\nexport interface Arguments\n extends\n Omit<UseDraggableArguments, 'disabled'>,\n Pick<UseDroppableArguments, 'resizeObserverConfig'> {\n animateLayoutChanges?: AnimateLayoutChanges;\n disabled?: boolean | Disabled;\n getNewIndex?: NewIndexGetter;\n strategy?: SortingStrategy;\n transition?: SortableTransition | null;\n}\n\nexport function useSortable({\n animateLayoutChanges = defaultAnimateLayoutChanges,\n attributes: userDefinedAttributes,\n disabled: localDisabled,\n data: customData,\n getNewIndex = defaultNewIndexGetter,\n id,\n strategy: localStrategy,\n resizeObserverConfig,\n transition = defaultTransition,\n}: Arguments) {\n const {\n items,\n containerId,\n activeIndex,\n disabled: globalDisabled,\n disableTransforms,\n sortedRects,\n overIndex,\n useDragOverlay,\n strategy: globalStrategy,\n } = useContext(Context);\n const disabled: Disabled = normalizeLocalDisabled(\n localDisabled,\n globalDisabled\n );\n const index = items.indexOf(id);\n const data = useMemo<SortableData & Data>(\n () => ({sortable: {containerId, index, items}, ...customData}),\n [containerId, customData, index, items]\n );\n const itemsAfterCurrentSortable = useMemo(\n () => items.slice(items.indexOf(id)),\n [items, id]\n );\n const {\n rect,\n node,\n isOver,\n setNodeRef: setDroppableNodeRef,\n } = useDroppable({\n id,\n data,\n disabled: disabled.droppable,\n resizeObserverConfig: {\n updateMeasurementsFor: itemsAfterCurrentSortable,\n ...resizeObserverConfig,\n },\n });\n const {\n active,\n activatorEvent,\n activeNodeRect,\n attributes,\n setNodeRef: setDraggableNodeRef,\n listeners,\n isDragging,\n over,\n setActivatorNodeRef,\n transform,\n } = useDraggable({\n id,\n data,\n attributes: {\n ...defaultAttributes,\n ...userDefinedAttributes,\n },\n disabled: disabled.draggable,\n });\n const setNodeRef = useCombinedRefs(setDroppableNodeRef, setDraggableNodeRef);\n const isSorting = Boolean(active);\n const displaceItem =\n isSorting &&\n !disableTransforms &&\n isValidIndex(activeIndex) &&\n isValidIndex(overIndex);\n const shouldDisplaceDragSource = !useDragOverlay && isDragging;\n const dragSourceDisplacement =\n shouldDisplaceDragSource && displaceItem ? transform : null;\n const strategy = localStrategy ?? globalStrategy;\n const finalTransform = displaceItem\n ? (dragSourceDisplacement ??\n strategy({\n rects: sortedRects,\n activeNodeRect,\n activeIndex,\n overIndex,\n index,\n }))\n : null;\n const newIndex =\n isValidIndex(activeIndex) && isValidIndex(overIndex)\n ? getNewIndex({id, items, activeIndex, overIndex})\n : index;\n const activeId = active?.id;\n const previous = useRef({\n activeId,\n items,\n newIndex,\n containerId,\n });\n const itemsHaveChanged = items !== previous.current.items;\n const shouldAnimateLayoutChanges = animateLayoutChanges({\n active,\n containerId,\n isDragging,\n isSorting,\n id,\n index,\n items,\n newIndex: previous.current.newIndex,\n previousItems: previous.current.items,\n previousContainerId: previous.current.containerId,\n transition,\n wasDragging: previous.current.activeId != null,\n });\n\n const derivedTransform = useDerivedTransform({\n disabled: !shouldAnimateLayoutChanges,\n index,\n node,\n rect,\n });\n\n useEffect(() => {\n if (isSorting && previous.current.newIndex !== newIndex) {\n previous.current.newIndex = newIndex;\n }\n\n if (containerId !== previous.current.containerId) {\n previous.current.containerId = containerId;\n }\n\n if (items !== previous.current.items) {\n previous.current.items = items;\n }\n }, [isSorting, newIndex, containerId, items]);\n\n useEffect(() => {\n if (activeId === previous.current.activeId) {\n return;\n }\n\n if (activeId && !previous.current.activeId) {\n previous.current.activeId = activeId;\n return;\n }\n\n const timeoutId = setTimeout(() => {\n previous.current.activeId = activeId;\n }, 50);\n\n return () => clearTimeout(timeoutId);\n }, [activeId]);\n\n return {\n active,\n activeIndex,\n attributes,\n data,\n rect,\n index,\n newIndex,\n items,\n isOver,\n isSorting,\n isDragging,\n listeners,\n node,\n overIndex,\n over,\n setNodeRef,\n setActivatorNodeRef,\n setDroppableNodeRef,\n setDraggableNodeRef,\n transform: derivedTransform ?? finalTransform,\n transition: getTransition(),\n };\n\n function getTransition() {\n if (\n // Temporarily disable transitions for a single frame to set up derived transforms\n derivedTransform ||\n // Or to prevent items jumping to back to their \"new\" position when items change\n (itemsHaveChanged && previous.current.newIndex === index)\n ) {\n return disabledTransition;\n }\n\n if (\n (shouldDisplaceDragSource && !isKeyboardEvent(activatorEvent)) ||\n !transition\n ) {\n return undefined;\n }\n\n if (isSorting || shouldAnimateLayoutChanges) {\n return CSS.Transition.toString({\n ...transition,\n property: transitionProperty,\n });\n }\n\n return undefined;\n }\n}\n\nfunction normalizeLocalDisabled(\n localDisabled: Arguments['disabled'],\n globalDisabled: Disabled\n) {\n if (typeof localDisabled === 'boolean') {\n return {\n draggable: localDisabled,\n // Backwards compatibility\n droppable: false,\n };\n }\n\n return {\n draggable: localDisabled?.draggable ?? globalDisabled.draggable,\n droppable: localDisabled?.droppable ?? globalDisabled.droppable,\n };\n}\n","import type {\n Active,\n Data,\n DroppableContainer,\n DraggableNode,\n Over,\n} from '@lucasols/dnd-kit-core';\n\nimport type {SortableData} from './data';\n\nexport function hasSortableData<\n T extends Active | Over | DraggableNode | DroppableContainer,\n>(\n entry: T | null | undefined\n): entry is T & {data: {current: Data<SortableData>}} {\n if (!entry) {\n return false;\n }\n\n const data = entry.data.current;\n\n if (\n data &&\n 'sortable' in data &&\n typeof data.sortable === 'object' &&\n 'containerId' in data.sortable &&\n 'items' in data.sortable &&\n 'index' in data.sortable\n ) {\n return true;\n }\n\n return false;\n}\n","import {\n closestCorners,\n getScrollableAncestors,\n getFirstCollision,\n KeyboardCode,\n DroppableContainer,\n KeyboardCoordinateGetter,\n} from '@lucasols/dnd-kit-core';\nimport {subtract} from '@lucasols/dnd-kit-utilities';\n\nimport {hasSortableData} from '../../types';\n\nconst directions: string[] = [\n KeyboardCode.Down,\n KeyboardCode.Right,\n KeyboardCode.Up,\n KeyboardCode.Left,\n];\n\nexport const sortableKeyboardCoordinates: KeyboardCoordinateGetter = (\n event,\n {\n context: {\n active,\n collisionRect,\n droppableRects,\n droppableContainers,\n over,\n scrollableAncestors,\n },\n }\n) => {\n if (directions.includes(event.code)) {\n event.preventDefault();\n\n if (!active || !collisionRect) {\n return;\n }\n\n const filteredContainers: DroppableContainer[] = [];\n\n droppableContainers.getEnabled().forEach((entry) => {\n if (!entry || entry?.disabled) {\n return;\n }\n\n const rect = droppableRects.get(entry.id);\n\n if (!rect) {\n return;\n }\n\n switch (event.code) {\n case KeyboardCode.Down:\n if (collisionRect.top < rect.top) {\n filteredContainers.push(entry);\n }\n break;\n case KeyboardCode.Up:\n if (collisionRect.top > rect.top) {\n filteredContainers.push(entry);\n }\n break;\n case KeyboardCode.Left:\n if (collisionRect.left > rect.left) {\n filteredContainers.push(entry);\n }\n break;\n case KeyboardCode.Right:\n if (collisionRect.left < rect.left) {\n filteredContainers.push(entry);\n }\n break;\n }\n });\n\n const collisions = closestCorners({\n active,\n collisionRect: collisionRect,\n droppableRects,\n droppableContainers: filteredContainers,\n pointerCoordinates: null,\n });\n let closestId = getFirstCollision(collisions, 'id');\n\n if (closestId === over?.id && collisions.length > 1) {\n closestId = collisions[1].id;\n }\n\n if (closestId != null) {\n const activeDroppable = droppableContainers.get(active.id);\n const newDroppable = droppableContainers.get(closestId);\n const newRect = newDroppable ? droppableRects.get(newDroppable.id) : null;\n const newNode = newDroppable?.node.current;\n\n if (newNode && newRect && activeDroppable && newDroppable) {\n const newScrollAncestors = getScrollableAncestors(newNode);\n const hasDifferentScrollAncestors = newScrollAncestors.some(\n (element, index) => scrollableAncestors[index] !== element\n );\n const hasSameContainer = isSameContainer(activeDroppable, newDroppable);\n const isAfterActive = isAfter(activeDroppable, newDroppable);\n const offset =\n hasDifferentScrollAncestors || !hasSameContainer\n ? {\n x: 0,\n y: 0,\n }\n : {\n x: isAfterActive ? collisionRect.width - newRect.width : 0,\n y: isAfterActive ? collisionRect.height - newRect.height : 0,\n };\n const rectCoordinates = {\n x: newRect.left,\n y: newRect.top,\n };\n\n const newCoordinates =\n offset.x && offset.y\n ? rectCoordinates\n : subtract(rectCoordinates, offset);\n\n return newCoordinates;\n }\n }\n }\n\n return undefined;\n};\n\nfunction isSameContainer(a: DroppableContainer, b: DroppableContainer) {\n if (!hasSortableData(a) || !hasSortableData(b)) {\n return false;\n }\n\n return (\n a.data.current.sortable.containerId === b.data.current.sortable.containerId\n );\n}\n\nfunction isAfter(a: DroppableContainer, b: DroppableContainer) {\n if (!hasSortableData(a) || !hasSortableData(b)) {\n return false;\n }\n\n if (!isSameContainer(a, b)) {\n return false;\n }\n\n return a.data.current.sortable.index < b.data.current.sortable.index;\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lucasols/dnd-kit-sortable",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Official sortable preset and sensors for dnd kit",
|
|
5
5
|
"author": "Claudéric Demers",
|
|
6
6
|
"license": "MIT",
|
|
@@ -9,16 +9,17 @@
|
|
|
9
9
|
"url": "git+https://github.com/clauderic/dnd-kit.git",
|
|
10
10
|
"directory": "packages/sortable"
|
|
11
11
|
},
|
|
12
|
-
"
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
"
|
|
12
|
+
"type": "module",
|
|
13
|
+
"main": "./dist/index.js",
|
|
14
|
+
"module": "./dist/index.js",
|
|
15
|
+
"typings": "./dist/index.d.ts",
|
|
16
|
+
"exports": {
|
|
17
|
+
".": {
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"import": "./dist/index.js"
|
|
20
|
+
},
|
|
21
|
+
"./package.json": "./package.json"
|
|
18
22
|
},
|
|
19
|
-
"main": "dist/index.js",
|
|
20
|
-
"module": "dist/dnd-kit-sortable.esm.js",
|
|
21
|
-
"typings": "dist/index.d.ts",
|
|
22
23
|
"files": [
|
|
23
24
|
"README.md",
|
|
24
25
|
"CHANGELOG.md",
|
|
@@ -26,18 +27,21 @@
|
|
|
26
27
|
"dist"
|
|
27
28
|
],
|
|
28
29
|
"dependencies": {
|
|
29
|
-
"@lucasols/dnd-kit-utilities": "^0.1
|
|
30
|
-
"tslib": "^2.0.0"
|
|
30
|
+
"@lucasols/dnd-kit-utilities": "^0.2.1"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
|
-
"@lucasols/dnd-kit-core": "^0.1
|
|
34
|
-
"react": "
|
|
33
|
+
"@lucasols/dnd-kit-core": "^0.2.1",
|
|
34
|
+
"react": "^19.0.0"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@lucasols/dnd-kit-core": "^0.1
|
|
37
|
+
"@lucasols/dnd-kit-core": "^0.2.1"
|
|
38
38
|
},
|
|
39
39
|
"publishConfig": {
|
|
40
40
|
"access": "public"
|
|
41
41
|
},
|
|
42
|
-
"
|
|
43
|
-
|
|
42
|
+
"scripts": {
|
|
43
|
+
"start": "tsdown --config ../../tsdown.config.mts --watch",
|
|
44
|
+
"build": "tsdown --config ../../tsdown.config.mts",
|
|
45
|
+
"test": "vitest run --config ../../vitest.config.mts"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { ClientRect, UniqueIdentifier } from '@lucasols/dnd-kit-core';
|
|
3
|
-
import type { Disabled, SortingStrategy } from '../types';
|
|
4
|
-
export interface Props {
|
|
5
|
-
children: React.ReactNode;
|
|
6
|
-
items: (UniqueIdentifier | {
|
|
7
|
-
id: UniqueIdentifier;
|
|
8
|
-
})[];
|
|
9
|
-
strategy?: SortingStrategy;
|
|
10
|
-
id?: string;
|
|
11
|
-
disabled?: boolean | Disabled;
|
|
12
|
-
}
|
|
13
|
-
interface ContextDescriptor {
|
|
14
|
-
activeIndex: number;
|
|
15
|
-
containerId: string;
|
|
16
|
-
disabled: Disabled;
|
|
17
|
-
disableTransforms: boolean;
|
|
18
|
-
items: UniqueIdentifier[];
|
|
19
|
-
overIndex: number;
|
|
20
|
-
useDragOverlay: boolean;
|
|
21
|
-
sortedRects: ClientRect[];
|
|
22
|
-
strategy: SortingStrategy;
|
|
23
|
-
}
|
|
24
|
-
export declare const Context: React.Context<ContextDescriptor>;
|
|
25
|
-
export declare function SortableContext({ children, id, items: userDefinedItems, strategy, disabled: disabledProp, }: Props): JSX.Element;
|
|
26
|
-
export {};
|