maquinaweb-ui 2.53.0 → 2.54.0

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.
@@ -1,5 +1,5 @@
1
1
  import { ComponentProps, ElementType } from "react";
2
- import * as react_jsx_runtime1 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/components/container-animation/container-animation.d.ts
5
5
  type ContainerAnimationProps<T extends ElementType = 'div'> = ComponentProps<'div'> & ComponentProps<T> & {
@@ -23,7 +23,7 @@ declare const ContainerAnimation: <T extends ElementType = "div">({
23
23
  distance,
24
24
  hideNotInView,
25
25
  ...props
26
- }: ContainerAnimationProps<T>) => react_jsx_runtime1.JSX.Element;
26
+ }: ContainerAnimationProps<T>) => react_jsx_runtime0.JSX.Element;
27
27
  //#endregion
28
28
  export { ContainerAnimation, type ContainerAnimationProps };
29
29
  //# sourceMappingURL=container-animation.d.ts.map
@@ -1,5 +1,5 @@
1
1
  import { FieldPath, FieldValues, UseControllerProps } from "react-hook-form";
2
- import * as react_jsx_runtime4 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime2 from "react/jsx-runtime";
3
3
  import { Matcher } from "react-day-picker";
4
4
 
5
5
  //#region src/components/date-field/DateField.d.ts
@@ -29,7 +29,7 @@ declare function DateField<TFieldValues extends FieldValues = FieldValues, TFiel
29
29
  required,
30
30
  help,
31
31
  dateOnly
32
- }: DateFieldProps<TFieldValues, TFieldName>): react_jsx_runtime4.JSX.Element;
32
+ }: DateFieldProps<TFieldValues, TFieldName>): react_jsx_runtime2.JSX.Element;
33
33
  //#endregion
34
34
  export { DateField, type DateFieldProps };
35
35
  //# sourceMappingURL=date-field.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"kanban-dnd.d.ts","names":[],"sources":["../src/components/kanban-dnd/types.ts","../src/components/kanban-dnd/context.tsx","../src/components/kanban-dnd/kanban-card-item.tsx","../src/components/kanban-dnd/kanban-dnd-monitor.tsx","../src/components/kanban-dnd/kanban-dropzone.tsx","../src/components/kanban-dnd/kanban-selector.tsx","../src/components/kanban-dnd/move-cards.ts","../src/components/kanban-dnd/use-kanban-column-dnd.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"kanban-dnd.d.ts","names":[],"sources":["../src/components/kanban-dnd/types.ts","../src/components/kanban-dnd/context.tsx","../src/components/kanban-dnd/kanban-card-item.tsx","../src/components/kanban-dnd/kanban-dnd-monitor.tsx","../src/components/kanban-dnd/kanban-dropzone.tsx","../src/components/kanban-dnd/kanban-selector.tsx","../src/components/kanban-dnd/move-cards.ts","../src/components/kanban-dnd/use-kanban-column-dnd.ts"],"sourcesContent":[],"mappings":"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"}
@@ -546,101 +546,51 @@ function KanbanDropZone({ children, id, className, isOverClassName }) {
546
546
  }
547
547
 
548
548
  //#endregion
549
- //#region src/components/kanban-dnd/kanban-selector.tsx
550
- const DEFAULT_DRAG_AREA_ID = "draggable-area";
551
- const DEFAULT_AUTO_SCROLL_MARGIN = 120;
552
- const DEFAULT_IGNORED_SLOTS = [
553
- "sheet-content",
554
- "popover-content",
555
- "select-content",
556
- "dialog-content",
557
- "dialog-overlay"
558
- ];
559
- const SELECTION_STYLE = {
560
- pointerEvents: "none",
561
- position: "fixed",
562
- inset: 0,
563
- zIndex: 50
564
- };
565
- const clampDelta = (delta, current, max) => delta > 0 ? Math.min(delta, max - current) : Math.max(delta, -current);
566
- const uniqueIds = (ids) => Array.from(new Set(ids.map(String)));
567
- const hasSameCardSet = (a, b) => {
568
- const aIds = uniqueIds(a);
569
- const bIds = uniqueIds(b);
570
- if (aIds.length !== bIds.length) return false;
571
- const aSet = new Set(aIds);
572
- return bIds.every((id) => aSet.has(id));
573
- };
574
- const toggleSelectionByArea = (baseSelection, intersectingIds) => {
575
- const nextSelection = new Set(uniqueIds(baseSelection));
576
- uniqueIds(intersectingIds).forEach((id) => {
577
- if (nextSelection.has(id)) {
578
- nextSelection.delete(id);
579
- return;
580
- }
581
- nextSelection.add(id);
582
- });
583
- return Array.from(nextSelection);
584
- };
585
- const edgeDelta = (pointer, start, end, margin, dt) => {
586
- if (pointer < start + margin) return (pointer - (start + margin)) / margin * dt;
587
- if (pointer > end - margin) return (pointer - (end - margin)) / margin * dt;
588
- return 0;
589
- };
590
- function findScrollable(node, axis) {
591
- if (!node) return null;
592
- const style = window.getComputedStyle(node);
593
- const canScrollX = /(auto|scroll)/.test(style.overflowX) && node.scrollWidth > node.clientWidth;
594
- const canScrollY = /(auto|scroll)/.test(style.overflowY) && node.scrollHeight > node.clientHeight;
595
- if (axis === "x" && canScrollX || axis === "y" && canScrollY) return node;
596
- return findScrollable(node.parentElement, axis);
597
- }
598
- function getContainerBounds(container) {
599
- if (!container || container === document.documentElement || container === document.body) return {
600
- left: 0,
601
- right: window.innerWidth,
602
- top: 0,
603
- bottom: window.innerHeight
604
- };
605
- const rect = container.getBoundingClientRect();
606
- return {
607
- left: Math.max(0, rect.left),
608
- right: Math.min(window.innerWidth, rect.right),
609
- top: Math.max(0, rect.top),
610
- bottom: Math.min(window.innerHeight, rect.bottom)
611
- };
612
- }
613
- function shouldStartSelecting(target, ignoredSlots) {
614
- if (!(target instanceof Element)) return false;
615
- return !(target.closest("[data-draggable=\"true\"]") || ignoredSlots.some((slot) => target.closest(`[data-slot="${slot}"]`)));
616
- }
617
- function getIntersectingCardIds(selection, getSelectableItems) {
618
- const selectedIds = [];
619
- getSelectableItems().forEach((item) => {
620
- if (!item.element) return;
621
- const rect = item.element.getBoundingClientRect();
622
- if (boxesIntersect(selection, {
623
- ...rect,
624
- left: rect.left + window.scrollX,
625
- top: rect.top,
626
- width: rect.width,
627
- height: rect.height
628
- })) selectedIds.push(String(item.id));
629
- });
630
- return uniqueIds(selectedIds);
631
- }
632
- function useAutoScroll({ isSelectingRef, dragAreaId, autoScrollMargin }) {
549
+ //#region src/components/kanban-dnd/use-kanban-selector-auto-scroll.ts
550
+ function useKanbanSelectorAutoScroll({ isSelectingRef, dragAreaId, autoScrollMargin }) {
633
551
  useEffect(() => {
552
+ const clamp = (delta, current, max) => delta > 0 ? Math.min(delta, max - current) : Math.max(delta, -current);
553
+ const edge = (point, start, end, margin, dt) => {
554
+ if (point < start + margin) return (point - (start + margin)) / margin * dt;
555
+ if (point > end - margin) return (point - (end - margin)) / margin * dt;
556
+ return 0;
557
+ };
558
+ const bounds = (el) => {
559
+ if (!el || el === document.documentElement || el === document.body) return {
560
+ left: 0,
561
+ right: window.innerWidth,
562
+ top: 0,
563
+ bottom: window.innerHeight
564
+ };
565
+ const rect = el.getBoundingClientRect();
566
+ return {
567
+ left: Math.max(0, rect.left),
568
+ right: Math.min(window.innerWidth, rect.right),
569
+ top: Math.max(0, rect.top),
570
+ bottom: Math.min(window.innerHeight, rect.bottom)
571
+ };
572
+ };
573
+ const findScrollable = (node, axis) => {
574
+ let current = node;
575
+ while (current) {
576
+ const style = window.getComputedStyle(current);
577
+ if (axis === "x" ? /(auto|scroll)/.test(style.overflowX) && current.scrollWidth > current.clientWidth : /(auto|scroll)/.test(style.overflowY) && current.scrollHeight > current.clientHeight) return current;
578
+ current = current.parentElement;
579
+ }
580
+ return null;
581
+ };
634
582
  let raf = 0;
635
583
  let lastTime = performance.now();
636
- const pos = {
584
+ const pointer = {
637
585
  x: 0,
638
586
  y: 0
639
587
  };
640
- let scrollState = null;
641
- const onMove = (e) => (pos.x = e.clientX, pos.y = e.clientY);
642
- window.addEventListener("pointermove", onMove, { passive: true });
643
- const buildScrollState = () => {
588
+ let state = null;
589
+ const onPointerMove = (e) => {
590
+ pointer.x = e.clientX;
591
+ pointer.y = e.clientY;
592
+ };
593
+ const getState = () => {
644
594
  const startNode = document.getElementById(dragAreaId)?.parentElement ?? null;
645
595
  const xContainer = findScrollable(startNode, "x");
646
596
  const yContainer = findScrollable(startNode, "y");
@@ -653,56 +603,62 @@ function useAutoScroll({ isSelectingRef, dragAreaId, autoScrollMargin }) {
653
603
  yMax: useWindowY ? document.documentElement.scrollHeight - window.innerHeight : yContainer ? yContainer.scrollHeight - yContainer.clientHeight : 0
654
604
  };
655
605
  };
656
- const step = (time) => {
657
- const dt = time - lastTime;
658
- lastTime = time;
606
+ const tick = (now) => {
607
+ const dt = now - lastTime;
608
+ lastTime = now;
659
609
  if (!isSelectingRef.current) {
660
- scrollState = null;
661
- raf = requestAnimationFrame(step);
610
+ state = null;
611
+ raf = requestAnimationFrame(tick);
612
+ return;
613
+ }
614
+ state ??= getState();
615
+ const scrollState = state;
616
+ if (!scrollState) {
617
+ raf = requestAnimationFrame(tick);
662
618
  return;
663
619
  }
664
- if (!scrollState) scrollState = buildScrollState();
665
- const xBounds = getContainerBounds(scrollState.xContainer);
620
+ const xBounds = bounds(scrollState.xContainer);
666
621
  const yBounds = scrollState.useWindowY ? {
667
622
  top: 0,
668
623
  bottom: window.innerHeight
669
- } : getContainerBounds(scrollState.yContainer);
670
- const dx = edgeDelta(pos.x, xBounds.left, xBounds.right, autoScrollMargin, dt);
671
- const dy = edgeDelta(pos.y, yBounds.top, yBounds.bottom, autoScrollMargin, dt);
624
+ } : bounds(scrollState.yContainer);
625
+ const dx = edge(pointer.x, xBounds.left, xBounds.right, autoScrollMargin, dt);
626
+ const dy = edge(pointer.y, yBounds.top, yBounds.bottom, autoScrollMargin, dt);
672
627
  let didScroll = false;
673
628
  if (dx && scrollState.xContainer && scrollState.xMax > 0) {
674
- const clampedDx = clampDelta(dx, scrollState.xContainer.scrollLeft, scrollState.xMax);
675
- if (clampedDx) {
676
- scrollState.xContainer.scrollBy(clampedDx, 0);
629
+ const nextDx = clamp(dx, scrollState.xContainer.scrollLeft, scrollState.xMax);
630
+ if (nextDx) {
631
+ scrollState.xContainer.scrollBy(nextDx, 0);
677
632
  didScroll = true;
678
633
  }
679
634
  }
680
635
  if (dy && scrollState.yMax > 0) {
681
636
  if (scrollState.useWindowY) {
682
- const clampedDy = clampDelta(dy, window.scrollY || document.documentElement.scrollTop, scrollState.yMax);
683
- if (clampedDy) {
684
- window.scrollBy(0, clampedDy);
637
+ const nextDy = clamp(dy, window.scrollY || document.documentElement.scrollTop, scrollState.yMax);
638
+ if (nextDy) {
639
+ window.scrollBy(0, nextDy);
685
640
  didScroll = true;
686
641
  }
687
642
  } else if (scrollState.yContainer) {
688
- const clampedDy = clampDelta(dy, scrollState.yContainer.scrollTop, scrollState.yMax);
689
- if (clampedDy) {
690
- scrollState.yContainer.scrollBy(0, clampedDy);
643
+ const nextDy = clamp(dy, scrollState.yContainer.scrollTop, scrollState.yMax);
644
+ if (nextDy) {
645
+ scrollState.yContainer.scrollBy(0, nextDy);
691
646
  didScroll = true;
692
647
  }
693
648
  }
694
649
  }
695
650
  if (didScroll) document.body.dispatchEvent(new MouseEvent("mousemove", {
696
- clientX: pos.x,
697
- clientY: pos.y,
651
+ clientX: pointer.x,
652
+ clientY: pointer.y,
698
653
  bubbles: true,
699
654
  cancelable: true
700
655
  }));
701
- raf = requestAnimationFrame(step);
656
+ raf = requestAnimationFrame(tick);
702
657
  };
703
- raf = requestAnimationFrame(step);
658
+ window.addEventListener("pointermove", onPointerMove, { passive: true });
659
+ raf = requestAnimationFrame(tick);
704
660
  return () => {
705
- window.removeEventListener("pointermove", onMove);
661
+ window.removeEventListener("pointermove", onPointerMove);
706
662
  cancelAnimationFrame(raf);
707
663
  };
708
664
  }, [
@@ -711,47 +667,97 @@ function useAutoScroll({ isSelectingRef, dragAreaId, autoScrollMargin }) {
711
667
  isSelectingRef
712
668
  ]);
713
669
  }
670
+
671
+ //#endregion
672
+ //#region src/components/kanban-dnd/kanban-selector.tsx
673
+ const DEFAULT_DRAG_AREA_ID = "draggable-area";
674
+ const DEFAULT_AUTO_SCROLL_MARGIN = 120;
675
+ const DEFAULT_IGNORED_SLOTS = [
676
+ "sheet-content",
677
+ "popover-content",
678
+ "select-content",
679
+ "dialog-content",
680
+ "dialog-overlay"
681
+ ];
682
+ const SELECTION_STYLE = {
683
+ pointerEvents: "none",
684
+ position: "fixed",
685
+ inset: 0,
686
+ zIndex: 50
687
+ };
688
+ function shouldStartSelecting(target, ignoredSlots) {
689
+ if (!(target instanceof Element)) return false;
690
+ return !(target.closest("[data-draggable=\"true\"]") || ignoredSlots.some((slot) => target.closest(`[data-slot="${slot}"]`)));
691
+ }
692
+ const toUniqueStringIds = (ids) => Array.from(new Set(ids.map(String)));
693
+ const haveSameIds = (a, b) => {
694
+ if (a.length !== b.length) return false;
695
+ const set = new Set(a);
696
+ return b.every((id) => set.has(id));
697
+ };
698
+ const xorSelection = (base, ids) => {
699
+ const next = new Set(base);
700
+ ids.forEach((id) => next.has(id) ? next.delete(id) : next.add(id));
701
+ return Array.from(next);
702
+ };
714
703
  function KanbanSelector({ dragAreaId = DEFAULT_DRAG_AREA_ID, autoScrollMargin = DEFAULT_AUTO_SCROLL_MARGIN, ignoredSlots = DEFAULT_IGNORED_SLOTS }) {
715
704
  const context = useKanbanDndContext();
716
705
  const isSelectingRef = useRef(false);
717
- const isShiftPressedOnPointerDownRef = useRef(false);
718
- const shouldToggleFromBaseRef = useRef(false);
719
- const baseSelectedCardIdsRef = useRef([]);
720
- useAutoScroll({
706
+ const shiftOnPointerDownRef = useRef(false);
707
+ const sessionRef = useRef({
708
+ toggle: false,
709
+ base: []
710
+ });
711
+ useKanbanSelectorAutoScroll({
721
712
  isSelectingRef,
722
713
  dragAreaId,
723
714
  autoScrollMargin
724
715
  });
725
716
  const { DragSelection } = useSelectionContainer({
726
- shouldStartSelecting: useMemo(() => (target) => shouldStartSelecting(target, ignoredSlots), [ignoredSlots]),
717
+ shouldStartSelecting: (target) => shouldStartSelecting(target, ignoredSlots),
727
718
  onSelectionChange: (selection) => {
728
719
  if (!context) return;
729
- const selectedIds = getIntersectingCardIds(selection, context.getSelectableItems);
730
- const nextIds = shouldToggleFromBaseRef.current ? toggleSelectionByArea(baseSelectedCardIdsRef.current, selectedIds) : selectedIds;
731
- if (hasSameCardSet(nextIds, context.getSelectedCardIds())) return;
720
+ const selectedIds = toUniqueStringIds(context.getSelectableItems().flatMap((item) => {
721
+ const element = item.element;
722
+ if (!element) return [];
723
+ const rect = element.getBoundingClientRect();
724
+ return boxesIntersect(selection, {
725
+ ...rect,
726
+ left: rect.left + window.scrollX,
727
+ top: rect.top,
728
+ width: rect.width,
729
+ height: rect.height
730
+ }) ? [String(item.id)] : [];
731
+ }));
732
+ const nextIds = sessionRef.current.toggle ? xorSelection(sessionRef.current.base, selectedIds) : selectedIds;
733
+ if (haveSameIds(nextIds, context.getSelectedCardIds())) return;
732
734
  context.setSelectedCardIds(nextIds);
733
735
  },
734
736
  onSelectionEnd: () => {
735
737
  isSelectingRef.current = false;
736
- shouldToggleFromBaseRef.current = false;
737
- baseSelectedCardIdsRef.current = [];
738
+ sessionRef.current = {
739
+ toggle: false,
740
+ base: []
741
+ };
738
742
  },
739
743
  onSelectionStart: () => {
740
744
  isSelectingRef.current = true;
741
- shouldToggleFromBaseRef.current = isShiftPressedOnPointerDownRef.current;
742
- baseSelectedCardIdsRef.current = context?.getSelectedCardIds() ?? [];
745
+ sessionRef.current = {
746
+ toggle: shiftOnPointerDownRef.current,
747
+ base: context?.getSelectedCardIds() ?? []
748
+ };
743
749
  },
744
750
  selectionProps: { style: SELECTION_STYLE }
745
751
  });
746
752
  useEffect(() => {
747
753
  if (!context) return;
748
754
  const handlePointerDown = (e) => {
749
- isShiftPressedOnPointerDownRef.current = e.shiftKey;
755
+ shiftOnPointerDownRef.current = e.shiftKey;
750
756
  };
751
757
  const handlePointerUp = (e) => {
752
758
  const target = e.target;
753
759
  if (!isSelectingRef.current && !context.getIsDragging() && !target?.closest("[data-draggable=\"true\"]")) context.clearSelectedCards();
754
- isShiftPressedOnPointerDownRef.current = false;
760
+ shiftOnPointerDownRef.current = false;
755
761
  };
756
762
  document.addEventListener("pointerdown", handlePointerDown);
757
763
  document.addEventListener("pointerup", handlePointerUp);
@@ -1 +1 @@
1
- {"version":3,"file":"kanban-dnd.js","names":["STACKED_CLONE_BASE_STYLE: Partial<CSSStyleDeclaration>","defaultGetColumnId","cardsToMove: TCard[]","nextOrder: number | null","selectedIds: string[]","scrollState: {\n xContainer: HTMLElement | null;\n yContainer: HTMLElement | null;\n xMax: number;\n yMax: number;\n useWindowY: boolean;\n } | null"],"sources":["../src/components/kanban-dnd/context.tsx","../src/components/kanban-dnd/constants.ts","../src/components/kanban-dnd/utils.ts","../src/components/kanban-dnd/drag-preview.ts","../src/components/kanban-dnd/kanban-card-item.tsx","../src/components/kanban-dnd/move-cards.ts","../src/components/kanban-dnd/kanban-dnd-monitor.tsx","../src/components/kanban-dnd/kanban-dropzone.tsx","../src/components/kanban-dnd/kanban-selector.tsx","../src/components/kanban-dnd/use-kanban-column-dnd.ts"],"sourcesContent":["'use client';\n\nimport { createContext, useContext, useSyncExternalStore } from 'react';\n\nimport type { KanbanSelectableItem } from './types';\n\ntype KanbanDndContextValue = {\n getIsDragging: () => boolean;\n getSelectedCardIds: () => string[];\n subscribeSelection: (listener: () => void) => () => void;\n setSelectedCardIds: (cardIds: string[]) => void;\n addSelectedCardId: (cardId: string) => void;\n clearSelectedCards: () => void;\n toggleSelectedCardId: (cardId: string) => void;\n registerSelectableItem: (id: string, element: HTMLElement | null) => void;\n getSelectableItems: () => KanbanSelectableItem[];\n};\n\nconst KanbanDndContext = createContext<KanbanDndContextValue | null>(null);\n\nexport function KanbanDndProvider({\n children,\n value,\n}: {\n children: React.ReactNode;\n value: KanbanDndContextValue;\n}) {\n return (\n <KanbanDndContext.Provider value={value}>\n {children}\n </KanbanDndContext.Provider>\n );\n}\n\nexport function useKanbanDndContext() {\n return useContext(KanbanDndContext);\n}\n\nexport function useKanbanSelection() {\n const context = useKanbanDndContext();\n\n if (!context) {\n return {\n selectedCardIds: [] as string[],\n isSelected: () => false,\n setSelectedCardIds: () => {},\n addSelectedCardId: () => {},\n clearSelectedCards: () => {},\n toggleSelectedCardId: () => {},\n };\n }\n\n const selectedCardIds = useSyncExternalStore(\n context.subscribeSelection,\n context.getSelectedCardIds,\n () => []\n );\n\n return {\n selectedCardIds,\n isSelected: (cardId: string) => selectedCardIds.includes(cardId),\n setSelectedCardIds: context.setSelectedCardIds,\n addSelectedCardId: context.addSelectedCardId,\n clearSelectedCards: context.clearSelectedCards,\n toggleSelectedCardId: context.toggleSelectedCardId,\n };\n}\n\nexport function useKanbanCardSelected(cardId: string | number) {\n const context = useKanbanDndContext();\n\n if (!context) return false;\n\n const normalizedId = String(cardId);\n\n return useSyncExternalStore(\n context.subscribeSelection,\n () => context.getSelectedCardIds().includes(normalizedId),\n () => false\n );\n}\n\nexport function useKanbanSelectionActions() {\n const context = useKanbanDndContext();\n\n if (!context) {\n return {\n setSelectedCardIds: (_cardIds: string[]) => {},\n addSelectedCardId: (_cardId: string) => {},\n clearSelectedCards: () => {},\n toggleSelectedCardId: (_cardId: string) => {},\n };\n }\n\n return {\n setSelectedCardIds: context.setSelectedCardIds,\n addSelectedCardId: context.addSelectedCardId,\n clearSelectedCards: context.clearSelectedCards,\n toggleSelectedCardId: context.toggleSelectedCardId,\n };\n}\n","export const PREVIEW_STACK_LIMIT = 10;\nexport const PREVIEW_STACK_X_OFFSET = 10;\nexport const PREVIEW_STACK_Y_OFFSET = 8;\nexport const PREVIEW_STACK_MIN_OPACITY = 0.75;\n\nexport const STACKED_CLONE_BASE_STYLE: Partial<CSSStyleDeclaration> = {\n pointerEvents: 'none',\n margin: '0',\n width: '100%',\n top: '0',\n left: '0',\n};\n\nexport const DEFAULT_AUTO_SCROLL_OVERFLOW = {\n forLeftEdge: {\n left: 320,\n top: 160,\n bottom: 160,\n },\n forRightEdge: {\n right: 160,\n top: 120,\n bottom: 120,\n },\n};\n","import type { DropTarget } from './types';\n\nexport function applyStyles(\n element: HTMLElement,\n styles: Partial<CSSStyleDeclaration>\n) {\n Object.assign(element.style, styles);\n}\n\nexport function getTargetColumnId(\n dropTargets: DropTarget[],\n targetType: string\n) {\n const target = dropTargets.find((item) => item.data.type === targetType);\n return target ? String(target.data.columnId ?? '') : '';\n}\n","import {\n PREVIEW_STACK_LIMIT,\n PREVIEW_STACK_MIN_OPACITY,\n PREVIEW_STACK_X_OFFSET,\n PREVIEW_STACK_Y_OFFSET,\n STACKED_CLONE_BASE_STYLE,\n} from './constants';\nimport type { KanbanSelectableItem } from './types';\nimport { applyStyles } from './utils';\n\nfunction createStackedClone(original: HTMLElement, index: number) {\n const clone = original.cloneNode(true) as HTMLElement;\n const xOffset = index * PREVIEW_STACK_X_OFFSET;\n const yOffset = index * PREVIEW_STACK_Y_OFFSET;\n const opacity = Math.max(1 - index * 0.1, PREVIEW_STACK_MIN_OPACITY);\n\n applyStyles(clone, {\n ...STACKED_CLONE_BASE_STYLE,\n position: index === 0 ? 'relative' : 'absolute',\n transform: `translate(${xOffset}px, ${yOffset}px)`,\n opacity: String(opacity),\n });\n\n return clone;\n}\n\nfunction createFallbackClone(sourceElement: HTMLElement) {\n const fallback = sourceElement.cloneNode(true) as HTMLElement;\n\n applyStyles(fallback, {\n pointerEvents: 'none',\n margin: '0',\n });\n\n return fallback;\n}\n\nexport function buildDragPreview({\n cardId,\n sourceElement,\n getSelectableItems,\n getSelectedCardIds,\n}: {\n cardId: string;\n sourceElement: HTMLElement;\n getSelectableItems?: () => KanbanSelectableItem[];\n getSelectedCardIds?: () => string[];\n}) {\n const selectedIds = getSelectedCardIds?.() ?? [];\n const idsToPreview = Array.from(new Set([...selectedIds, String(cardId)]));\n const root = document.createElement('div');\n\n applyStyles(root, {\n position: 'relative',\n });\n\n const selectableItems = getSelectableItems?.() ?? [];\n const itemElementById = new Map(\n selectableItems\n .filter((item) => item.element)\n .map((item) => [String(item.id), item.element as HTMLElement])\n );\n\n idsToPreview.slice(0, PREVIEW_STACK_LIMIT).forEach((previewId, index) => {\n const original = itemElementById.get(String(previewId));\n if (!original) return;\n\n root.appendChild(createStackedClone(original, index));\n });\n\n if (!root.childElementCount) {\n root.appendChild(createFallbackClone(sourceElement));\n }\n\n return root;\n}\n","'use client';\n\nimport { useEffect, useRef } from 'react';\n\nimport { draggable } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { preserveOffsetOnSource } from '@atlaskit/pragmatic-drag-and-drop/element/preserve-offset-on-source';\nimport { setCustomNativeDragPreview } from '@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview';\nimport { useKanbanDndContext } from './context';\nimport { buildDragPreview } from './drag-preview';\nimport type { KanbanCardItemProps } from './types';\n\nexport function KanbanCardItem({\n id,\n children,\n className,\n getSelectedCardIds,\n getSelectableItems,\n}: KanbanCardItemProps) {\n const ref = useRef<HTMLDivElement>(null);\n const context = useKanbanDndContext();\n\n const getSelectedCardIdsSafe =\n getSelectedCardIds ?? context?.getSelectedCardIds;\n const getSelectableItemsSafe =\n getSelectableItems ?? context?.getSelectableItems;\n\n useEffect(() => {\n context?.registerSelectableItem(String(id), ref.current);\n\n return () => {\n context?.registerSelectableItem(String(id), null);\n };\n }, [context, id]);\n\n useEffect(() => {\n const element = ref.current;\n if (!element) return;\n\n return draggable({\n element,\n getInitialData: () => ({\n type: 'card',\n cardId: String(id),\n }),\n onGenerateDragPreview: ({ nativeSetDragImage, source, location }) => {\n setCustomNativeDragPreview({\n getOffset: preserveOffsetOnSource({\n element: source.element,\n input: location.current.input,\n }),\n render({ container }) {\n const root = buildDragPreview({\n cardId: String(id),\n sourceElement: source.element,\n getSelectableItems: getSelectableItemsSafe,\n getSelectedCardIds: getSelectedCardIdsSafe,\n });\n\n container.appendChild(root);\n\n return () => {\n if (root.parentElement === container) {\n container.removeChild(root);\n }\n };\n },\n nativeSetDragImage,\n });\n },\n });\n }, [getSelectableItemsSafe, getSelectedCardIdsSafe, id]);\n\n return (\n <div\n className={className}\n data-draggable=\"true\"\n id={`kanban-card-item-${id}`}\n ref={ref}\n suppressHydrationWarning\n >\n {children}\n </div>\n );\n}\n","type AnyObject = Record<string, unknown>;\n\ntype MoveCardsResolvers<TColumn, TCard> = {\n getColumnId: (column: TColumn) => string;\n getCards: (column: TColumn) => TCard[];\n setCards: (column: TColumn, cards: TCard[]) => TColumn;\n getCardId: (card: TCard) => string;\n};\n\nfunction hasObjectValue(value: unknown): value is AnyObject {\n return typeof value === 'object' && value !== null;\n}\n\nfunction defaultGetColumnId<TColumn>(column: TColumn): string {\n if (!hasObjectValue(column)) return '';\n const id = column.id;\n return id === undefined || id === null ? '' : String(id);\n}\n\nfunction defaultGetCards<TColumn, TCard>(column: TColumn): TCard[] {\n if (!hasObjectValue(column)) return [];\n const cards = column.cards;\n return Array.isArray(cards) ? (cards as TCard[]) : [];\n}\n\nfunction defaultSetCards<TColumn, TCard>(\n column: TColumn,\n cards: TCard[]\n): TColumn {\n if (!hasObjectValue(column)) return column;\n return { ...column, cards } as TColumn;\n}\n\nfunction defaultGetCardId<TCard>(card: TCard): string {\n if (!hasObjectValue(card)) return '';\n const id = card.id;\n return id === undefined || id === null ? '' : String(id);\n}\n\nexport function moveCardsInColumns<TColumn, TCard>(\n columns: TColumn[],\n cardIds: string[],\n targetColumnId: string,\n resolvers: Partial<MoveCardsResolvers<TColumn, TCard>> = {}\n): TColumn[] {\n const getColumnId = resolvers.getColumnId ?? defaultGetColumnId<TColumn>;\n const getCards = resolvers.getCards ?? defaultGetCards<TColumn, TCard>;\n const setCards = resolvers.setCards ?? defaultSetCards<TColumn, TCard>;\n const getCardId = resolvers.getCardId ?? defaultGetCardId<TCard>;\n\n const selectedIds = new Set(cardIds);\n if (selectedIds.size === 0) return columns;\n\n const cardsToMove: TCard[] = [];\n let didRemoveCards = false;\n\n const columnsWithoutMovedCards = columns.map((column) => {\n const currentCards = getCards(column);\n const remainingCards = currentCards.filter((card) => {\n if (selectedIds.has(getCardId(card))) {\n cardsToMove.push(card);\n return false;\n }\n\n return true;\n });\n\n if (remainingCards.length === currentCards.length) {\n return column;\n }\n\n didRemoveCards = true;\n return setCards(column, remainingCards);\n });\n\n if (cardsToMove.length === 0) return columns;\n\n let didAddCards = false;\n\n const nextColumns = columnsWithoutMovedCards.map((column) => {\n const currentCards = getCards(column);\n\n if (getColumnId(column) === targetColumnId) {\n const existingIds = new Set(currentCards.map((card) => getCardId(card)));\n const incomingCards = cardsToMove.filter(\n (card) => !existingIds.has(getCardId(card))\n );\n\n if (incomingCards.length === 0) {\n return column;\n }\n\n didAddCards = true;\n return setCards(column, [...currentCards, ...incomingCards]);\n }\n\n return column;\n });\n\n return didRemoveCards || didAddCards ? nextColumns : columns;\n}\n","'use client';\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { cn } from '@/lib/utils';\nimport { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';\nimport { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { reorder } from '@atlaskit/pragmatic-drag-and-drop/reorder';\nimport { autoScrollForElements } from '@atlaskit/pragmatic-drag-and-drop-auto-scroll/element';\nimport { unsafeOverflowAutoScrollForElements } from '@atlaskit/pragmatic-drag-and-drop-auto-scroll/unsafe-overflow/element';\nimport { DEFAULT_AUTO_SCROLL_OVERFLOW } from './constants';\nimport { KanbanDndProvider } from './context';\nimport { moveCardsInColumns } from './move-cards';\nimport type { DropTarget, KanbanDndMonitorProps } from './types';\nimport { getTargetColumnId } from './utils';\n\nfunction areSameCardSet(a: string[], b: string[]) {\n if (a.length !== b.length) return false;\n const aSet = new Set(a.map(String));\n if (aSet.size !== b.length) return false;\n return b.every((id) => aSet.has(String(id)));\n}\n\nfunction defaultGetColumnId<TColumn>(column: TColumn): string {\n const maybeColumn = column as Record<string, unknown>;\n const id = maybeColumn?.id;\n return id === undefined || id === null ? '' : String(id);\n}\n\nexport function KanbanDndMonitor<TColumn>({\n onCardsMove,\n onColumnReorder,\n scrollContainerId,\n setColumns,\n children,\n getColumnId,\n moveCards,\n getCardsFromColumn,\n setCardsInColumn,\n getCardId,\n getSelectedCardIds,\n setSelectedCardIds,\n addSelectedCardId,\n clearSelectedCards,\n onSelectionChange,\n setIsDragging,\n autoScrollOverflow,\n isAutoScrollEnabled = true,\n renderIdleLayer,\n className,\n}: KanbanDndMonitorProps<TColumn>) {\n const [isDragging, setLocalIsDragging] = useState(false);\n const isDraggingRef = useRef(false);\n const selectedCardIdsRef = useRef<string[]>([]);\n const selectableItemMapRef = useRef(new Map<string, HTMLElement>());\n const selectionListenersRef = useRef(new Set<() => void>());\n\n const notifySelectionListeners = useCallback(() => {\n selectionListenersRef.current.forEach((listener) => listener());\n }, []);\n\n const subscribeSelection = useCallback((listener: () => void) => {\n selectionListenersRef.current.add(listener);\n return () => {\n selectionListenersRef.current.delete(listener);\n };\n }, []);\n const getColumnIdSafe = useCallback(\n (column: TColumn) =>\n getColumnId ? getColumnId(column) : defaultGetColumnId(column),\n [getColumnId]\n );\n\n const getSelectedCardIdsSafe = useCallback(\n () => getSelectedCardIds?.() ?? selectedCardIdsRef.current,\n [getSelectedCardIds]\n );\n\n const setInternalSelectedCardIdsSafe = useCallback(\n (nextIds: string[]) => {\n selectedCardIdsRef.current = nextIds;\n notifySelectionListeners();\n onSelectionChange?.(nextIds);\n },\n [notifySelectionListeners, onSelectionChange]\n );\n\n const addSelectedCardIdSafe = useCallback(\n (cardId: string) => {\n const selectedIds = getSelectedCardIdsSafe();\n if (selectedIds.includes(cardId)) {\n return;\n }\n\n const nextIds = [...selectedIds, cardId];\n\n if (addSelectedCardId) {\n addSelectedCardId(cardId);\n notifySelectionListeners();\n onSelectionChange?.(nextIds);\n return;\n }\n\n setInternalSelectedCardIdsSafe(nextIds);\n },\n [\n addSelectedCardId,\n getSelectedCardIdsSafe,\n notifySelectionListeners,\n onSelectionChange,\n setInternalSelectedCardIdsSafe,\n ]\n );\n\n const clearSelectedCardsSafe = useCallback(() => {\n const currentIds = getSelectedCardIdsSafe();\n if (currentIds.length === 0) {\n return;\n }\n\n if (clearSelectedCards) {\n clearSelectedCards();\n notifySelectionListeners();\n onSelectionChange?.([]);\n return;\n }\n\n setInternalSelectedCardIdsSafe([]);\n }, [\n clearSelectedCards,\n getSelectedCardIdsSafe,\n notifySelectionListeners,\n onSelectionChange,\n setInternalSelectedCardIdsSafe,\n ]);\n\n const setSelectedCardIdsSafe = useCallback(\n (cardIds: string[]) => {\n const nextIds = Array.from(new Set(cardIds.map(String)));\n const currentIds = getSelectedCardIdsSafe();\n\n if (areSameCardSet(nextIds, currentIds)) {\n return;\n }\n\n if (setSelectedCardIds) {\n setSelectedCardIds(nextIds);\n notifySelectionListeners();\n onSelectionChange?.(nextIds);\n return;\n }\n\n if (getSelectedCardIds && clearSelectedCards && addSelectedCardId) {\n clearSelectedCards();\n nextIds.forEach((cardId) => addSelectedCardId(cardId));\n notifySelectionListeners();\n onSelectionChange?.(nextIds);\n return;\n }\n\n setInternalSelectedCardIdsSafe(nextIds);\n },\n [\n addSelectedCardId,\n clearSelectedCards,\n getSelectedCardIdsSafe,\n getSelectedCardIds,\n notifySelectionListeners,\n onSelectionChange,\n setSelectedCardIds,\n setInternalSelectedCardIdsSafe,\n ]\n );\n\n const toggleSelectedCardIdSafe = useCallback(\n (cardId: string) => {\n const selectedIds = getSelectedCardIdsSafe();\n if (selectedIds.includes(cardId)) {\n setSelectedCardIdsSafe(\n selectedIds.filter((selectedId) => selectedId !== cardId)\n );\n return;\n }\n\n addSelectedCardIdSafe(cardId);\n },\n [addSelectedCardIdSafe, getSelectedCardIdsSafe, setSelectedCardIdsSafe]\n );\n\n const registerSelectableItem = useCallback(\n (id: string, element: HTMLElement | null) => {\n if (!element) {\n selectableItemMapRef.current.delete(id);\n return;\n }\n\n selectableItemMapRef.current.set(id, element);\n },\n []\n );\n\n const getSelectableItems = useCallback(\n () =>\n Array.from(selectableItemMapRef.current.entries()).map(\n ([id, element]) => ({\n id,\n element,\n })\n ),\n []\n );\n\n const contextValue = useMemo(\n () => ({\n getIsDragging: () => isDraggingRef.current,\n getSelectedCardIds: getSelectedCardIdsSafe,\n subscribeSelection,\n setSelectedCardIds: setSelectedCardIdsSafe,\n addSelectedCardId: addSelectedCardIdSafe,\n clearSelectedCards: clearSelectedCardsSafe,\n toggleSelectedCardId: toggleSelectedCardIdSafe,\n registerSelectableItem,\n getSelectableItems,\n }),\n [\n addSelectedCardIdSafe,\n clearSelectedCardsSafe,\n getSelectableItems,\n getSelectedCardIdsSafe,\n registerSelectableItem,\n setSelectedCardIdsSafe,\n subscribeSelection,\n toggleSelectedCardIdSafe,\n ]\n );\n\n const setDraggingState = useCallback(\n (value: boolean) => {\n isDraggingRef.current = value;\n if (renderIdleLayer) {\n setLocalIsDragging(value);\n }\n },\n [renderIdleLayer]\n );\n\n const finishDrag = () => {\n setDraggingState(false);\n setIsDragging?.(false);\n clearSelectedCardsSafe();\n };\n\n const startDrag = (source: { data: Record<string, unknown> }) => {\n if (source.data.type !== 'column' && source.data.type !== 'card') return;\n\n if (source.data.type === 'card') {\n const cardId = String(source.data.cardId ?? '');\n const selectedIds = getSelectedCardIdsSafe();\n if (!selectedIds.includes(cardId)) {\n addSelectedCardIdSafe(cardId);\n }\n }\n\n setIsDragging?.(true);\n setDraggingState(true);\n };\n\n const dropColumn = (sourceColumnId: string, targetColumnId: string) => {\n if (!sourceColumnId || sourceColumnId === targetColumnId) return;\n\n let nextOrder: number | null = null;\n\n setColumns((prev) => {\n const oldIndex = prev.findIndex(\n (col) => getColumnIdSafe(col) === sourceColumnId\n );\n const newIndex = prev.findIndex(\n (col) => getColumnIdSafe(col) === targetColumnId\n );\n\n if (oldIndex < 0 || newIndex < 0 || oldIndex === newIndex) {\n return prev;\n }\n\n nextOrder = newIndex + 1;\n return reorder({\n list: prev,\n startIndex: oldIndex,\n finishIndex: newIndex,\n });\n });\n\n if (nextOrder !== null) {\n onColumnReorder?.({ columnId: sourceColumnId, order: nextOrder });\n }\n };\n\n const dropCard = (cardId: string, targetColumnId: string) => {\n if (!cardId || !targetColumnId) return;\n\n const selectedIds = getSelectedCardIdsSafe();\n const idsToMove = selectedIds.length > 0 ? selectedIds : [cardId];\n\n setColumns((prev) => {\n if (moveCards) {\n return moveCards(prev, idsToMove, targetColumnId);\n }\n\n return moveCardsInColumns(prev, idsToMove, targetColumnId, {\n getColumnId: getColumnIdSafe,\n getCards: getCardsFromColumn as\n | ((column: TColumn) => unknown[])\n | undefined,\n setCards: setCardsInColumn as\n | ((column: TColumn, cards: unknown[]) => TColumn)\n | undefined,\n getCardId,\n });\n });\n onCardsMove?.({ cardIds: idsToMove, targetColumnId });\n };\n\n useEffect(() => {\n const monitorCleanup = monitorForElements({\n onDragStart: ({ source }) => startDrag(source),\n onDrop: ({ source, location }) => {\n const dropTargets = location.current.dropTargets as DropTarget[];\n\n if (source.data.type === 'column') {\n dropColumn(\n String(source.data.columnId ?? ''),\n getTargetColumnId(dropTargets, 'column')\n );\n finishDrag();\n return;\n }\n\n if (source.data.type === 'card') {\n dropCard(\n String(source.data.cardId ?? ''),\n getTargetColumnId(dropTargets, 'column-drop')\n );\n finishDrag();\n return;\n }\n\n finishDrag();\n },\n });\n\n if (!isAutoScrollEnabled || !scrollContainerId) {\n return monitorCleanup;\n }\n\n const scrollContainer = document.getElementById(scrollContainerId);\n if (!scrollContainer) {\n return monitorCleanup;\n }\n\n return combine(\n monitorCleanup,\n autoScrollForElements({\n element: scrollContainer,\n canScroll: ({ source }) =>\n source.data.type === 'card' || source.data.type === 'column',\n getAllowedAxis: () => 'horizontal',\n }),\n unsafeOverflowAutoScrollForElements({\n element: scrollContainer,\n canScroll: ({ source }) =>\n source.data.type === 'card' || source.data.type === 'column',\n getAllowedAxis: () => 'horizontal',\n getOverflow: () => autoScrollOverflow ?? DEFAULT_AUTO_SCROLL_OVERFLOW,\n })\n );\n }, [\n addSelectedCardIdSafe,\n autoScrollOverflow,\n clearSelectedCardsSafe,\n getCardId,\n getCardsFromColumn,\n getColumnIdSafe,\n getSelectedCardIdsSafe,\n isAutoScrollEnabled,\n moveCards,\n onCardsMove,\n onColumnReorder,\n setCardsInColumn,\n scrollContainerId,\n setSelectedCardIds,\n setColumns,\n setIsDragging,\n ]);\n\n return (\n <KanbanDndProvider value={contextValue}>\n <div\n className={cn('contain-layout h-full', className)}\n id=\"draggable-area\"\n >\n {!isDragging && renderIdleLayer}\n {children}\n </div>\n </KanbanDndProvider>\n );\n}\n","'use client';\n\nimport { useEffect, useRef, useState } from 'react';\n\nimport { cn } from '@/lib/utils';\nimport { dropTargetForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport type { KanbanDropZoneProps } from './types';\n\nexport function KanbanDropZone({\n children,\n id,\n className,\n isOverClassName,\n}: KanbanDropZoneProps) {\n const [isOver, setIsOver] = useState(false);\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const element = ref.current;\n if (!element) return;\n\n return dropTargetForElements({\n element,\n canDrop: ({ source }) => source.data.type === 'card',\n getData: () => ({\n type: 'column-drop',\n columnId: String(id),\n }),\n onDragEnter: () => setIsOver(true),\n onDragLeave: () => setIsOver(false),\n onDrop: () => setIsOver(false),\n });\n }, [id]);\n\n return (\n <div\n className={cn(\n 'border flex-1 border-transparent rounded-xl transition-colors',\n isOver && (isOverClassName ?? 'border-border'),\n className\n )}\n id={`kanban-drop-zone-${id}`}\n ref={ref}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport type { MutableRefObject } from 'react';\nimport { useEffect, useMemo, useRef } from 'react';\n\nimport {\n boxesIntersect,\n useSelectionContainer,\n} from '@air/react-drag-to-select';\nimport { useKanbanDndContext } from './context';\nimport type { KanbanSelectableItem, KanbanSelectorProps } from './types';\n\nconst DEFAULT_DRAG_AREA_ID = 'draggable-area';\nconst DEFAULT_AUTO_SCROLL_MARGIN = 120;\nconst DEFAULT_IGNORED_SLOTS = [\n 'sheet-content',\n 'popover-content',\n 'select-content',\n 'dialog-content',\n 'dialog-overlay',\n];\n\nconst SELECTION_STYLE = {\n pointerEvents: 'none',\n position: 'fixed',\n inset: 0,\n zIndex: 50,\n} as const;\n\ntype SelectionBox = Parameters<typeof boxesIntersect>[0];\n\nconst clampDelta = (delta: number, current: number, max: number) =>\n delta > 0 ? Math.min(delta, max - current) : Math.max(delta, -current);\n\nconst uniqueIds = (ids: Array<string | number>) =>\n Array.from(new Set(ids.map(String)));\n\nconst hasSameCardSet = (a: string[], b: string[]) => {\n const aIds = uniqueIds(a);\n const bIds = uniqueIds(b);\n if (aIds.length !== bIds.length) return false;\n\n const aSet = new Set(aIds);\n return bIds.every((id) => aSet.has(id));\n};\n\nconst toggleSelectionByArea = (\n baseSelection: string[],\n intersectingIds: string[]\n) => {\n const nextSelection = new Set(uniqueIds(baseSelection));\n\n uniqueIds(intersectingIds).forEach((id) => {\n if (nextSelection.has(id)) {\n nextSelection.delete(id);\n return;\n }\n\n nextSelection.add(id);\n });\n\n return Array.from(nextSelection);\n};\n\nconst edgeDelta = (\n pointer: number,\n start: number,\n end: number,\n margin: number,\n dt: number\n) => {\n if (pointer < start + margin)\n return ((pointer - (start + margin)) / margin) * dt;\n if (pointer > end - margin) return ((pointer - (end - margin)) / margin) * dt;\n return 0;\n};\n\nfunction findScrollable(\n node: HTMLElement | null,\n axis: 'x' | 'y'\n): HTMLElement | null {\n if (!node) return null;\n\n const style = window.getComputedStyle(node);\n const canScrollX =\n /(auto|scroll)/.test(style.overflowX) &&\n node.scrollWidth > node.clientWidth;\n const canScrollY =\n /(auto|scroll)/.test(style.overflowY) &&\n node.scrollHeight > node.clientHeight;\n\n if ((axis === 'x' && canScrollX) || (axis === 'y' && canScrollY)) return node;\n return findScrollable(node.parentElement, axis);\n}\n\nfunction getContainerBounds(container: HTMLElement | null) {\n if (\n !container ||\n container === document.documentElement ||\n container === document.body\n ) {\n return {\n left: 0,\n right: window.innerWidth,\n top: 0,\n bottom: window.innerHeight,\n };\n }\n\n const rect = container.getBoundingClientRect();\n return {\n left: Math.max(0, rect.left),\n right: Math.min(window.innerWidth, rect.right),\n top: Math.max(0, rect.top),\n bottom: Math.min(window.innerHeight, rect.bottom),\n };\n}\n\nfunction shouldStartSelecting(\n target: EventTarget | null,\n ignoredSlots: string[]\n): boolean {\n if (!(target instanceof Element)) return false;\n\n return !(\n target.closest('[data-draggable=\"true\"]') ||\n ignoredSlots.some((slot) => target.closest(`[data-slot=\"${slot}\"]`))\n );\n}\n\nfunction getIntersectingCardIds(\n selection: SelectionBox,\n getSelectableItems: () => KanbanSelectableItem[]\n) {\n const selectedIds: string[] = [];\n\n getSelectableItems().forEach((item) => {\n if (!item.element) return;\n\n const rect = item.element.getBoundingClientRect();\n const cardRect = {\n ...rect,\n left: rect.left + window.scrollX,\n top: rect.top,\n width: rect.width,\n height: rect.height,\n };\n\n if (boxesIntersect(selection, cardRect)) {\n selectedIds.push(String(item.id));\n }\n });\n\n return uniqueIds(selectedIds);\n}\n\nfunction useAutoScroll({\n isSelectingRef,\n dragAreaId,\n autoScrollMargin,\n}: {\n isSelectingRef: MutableRefObject<boolean>;\n dragAreaId: string;\n autoScrollMargin: number;\n}) {\n useEffect(() => {\n let raf = 0;\n let lastTime = performance.now();\n const pos = { x: 0, y: 0 };\n let scrollState: {\n xContainer: HTMLElement | null;\n yContainer: HTMLElement | null;\n xMax: number;\n yMax: number;\n useWindowY: boolean;\n } | null = null;\n\n const onMove = (e: PointerEvent) => (\n (pos.x = e.clientX), (pos.y = e.clientY)\n );\n\n window.addEventListener('pointermove', onMove, { passive: true });\n\n const buildScrollState = () => {\n const startNode =\n document.getElementById(dragAreaId)?.parentElement ?? null;\n const xContainer = findScrollable(startNode, 'x');\n const yContainer = findScrollable(startNode, 'y');\n const useWindowY = !yContainer;\n\n return {\n xContainer,\n yContainer,\n useWindowY,\n xMax: xContainer ? xContainer.scrollWidth - xContainer.clientWidth : 0,\n yMax: useWindowY\n ? document.documentElement.scrollHeight - window.innerHeight\n : yContainer\n ? yContainer.scrollHeight - yContainer.clientHeight\n : 0,\n };\n };\n\n const step = (time: number) => {\n const dt = time - lastTime;\n lastTime = time;\n\n if (!isSelectingRef.current) {\n scrollState = null;\n raf = requestAnimationFrame(step);\n return;\n }\n\n if (!scrollState) {\n scrollState = buildScrollState();\n }\n\n const xBounds = getContainerBounds(scrollState.xContainer);\n const yBounds = scrollState.useWindowY\n ? { top: 0, bottom: window.innerHeight }\n : getContainerBounds(scrollState.yContainer);\n\n const dx = edgeDelta(\n pos.x,\n xBounds.left,\n xBounds.right,\n autoScrollMargin,\n dt\n );\n const dy = edgeDelta(\n pos.y,\n yBounds.top,\n yBounds.bottom,\n autoScrollMargin,\n dt\n );\n\n let didScroll = false;\n\n if (dx && scrollState.xContainer && scrollState.xMax > 0) {\n const clampedDx = clampDelta(\n dx,\n scrollState.xContainer.scrollLeft,\n scrollState.xMax\n );\n if (clampedDx) {\n scrollState.xContainer.scrollBy(clampedDx, 0);\n didScroll = true;\n }\n }\n\n if (dy && scrollState.yMax > 0) {\n if (scrollState.useWindowY) {\n const clampedDy = clampDelta(\n dy,\n window.scrollY || document.documentElement.scrollTop,\n scrollState.yMax\n );\n if (clampedDy) {\n window.scrollBy(0, clampedDy);\n didScroll = true;\n }\n } else if (scrollState.yContainer) {\n const clampedDy = clampDelta(\n dy,\n scrollState.yContainer.scrollTop,\n scrollState.yMax\n );\n if (clampedDy) {\n scrollState.yContainer.scrollBy(0, clampedDy);\n didScroll = true;\n }\n }\n }\n\n if (didScroll) {\n document.body.dispatchEvent(\n new MouseEvent('mousemove', {\n clientX: pos.x,\n clientY: pos.y,\n bubbles: true,\n cancelable: true,\n })\n );\n }\n\n raf = requestAnimationFrame(step);\n };\n\n raf = requestAnimationFrame(step);\n\n return () => {\n window.removeEventListener('pointermove', onMove);\n cancelAnimationFrame(raf);\n };\n }, [autoScrollMargin, dragAreaId, isSelectingRef]);\n}\n\nexport function KanbanSelector({\n dragAreaId = DEFAULT_DRAG_AREA_ID,\n autoScrollMargin = DEFAULT_AUTO_SCROLL_MARGIN,\n ignoredSlots = DEFAULT_IGNORED_SLOTS,\n}: KanbanSelectorProps) {\n const context = useKanbanDndContext();\n const isSelectingRef = useRef(false);\n const isShiftPressedOnPointerDownRef = useRef(false);\n const shouldToggleFromBaseRef = useRef(false);\n const baseSelectedCardIdsRef = useRef<string[]>([]);\n\n useAutoScroll({ isSelectingRef, dragAreaId, autoScrollMargin });\n\n const shouldStart = useMemo(\n () => (target: EventTarget | null) =>\n shouldStartSelecting(target, ignoredSlots),\n [ignoredSlots]\n );\n\n const { DragSelection } = useSelectionContainer({\n shouldStartSelecting: shouldStart,\n onSelectionChange: (selection: SelectionBox) => {\n if (!context) return;\n\n const selectedIds = getIntersectingCardIds(\n selection,\n context.getSelectableItems\n );\n\n const nextIds = shouldToggleFromBaseRef.current\n ? toggleSelectionByArea(baseSelectedCardIdsRef.current, selectedIds)\n : selectedIds;\n\n if (hasSameCardSet(nextIds, context.getSelectedCardIds())) {\n return;\n }\n\n context.setSelectedCardIds(nextIds);\n },\n onSelectionEnd: () => {\n isSelectingRef.current = false;\n shouldToggleFromBaseRef.current = false;\n baseSelectedCardIdsRef.current = [];\n },\n onSelectionStart: () => {\n isSelectingRef.current = true;\n shouldToggleFromBaseRef.current = isShiftPressedOnPointerDownRef.current;\n baseSelectedCardIdsRef.current = context?.getSelectedCardIds() ?? [];\n },\n selectionProps: {\n style: SELECTION_STYLE,\n },\n });\n\n useEffect(() => {\n if (!context) return;\n\n const handlePointerDown = (e: PointerEvent) => {\n isShiftPressedOnPointerDownRef.current = e.shiftKey;\n };\n\n const handlePointerUp = (e: PointerEvent) => {\n const target = e.target as Element | null;\n if (\n !isSelectingRef.current &&\n !context.getIsDragging() &&\n !target?.closest('[data-draggable=\"true\"]')\n ) {\n context.clearSelectedCards();\n }\n\n isShiftPressedOnPointerDownRef.current = false;\n };\n\n document.addEventListener('pointerdown', handlePointerDown);\n document.addEventListener('pointerup', handlePointerUp);\n return () => {\n document.removeEventListener('pointerdown', handlePointerDown);\n document.removeEventListener('pointerup', handlePointerUp);\n };\n }, [context]);\n\n if (!context) return null;\n\n return <DragSelection />;\n}\n","'use client';\n\nimport { useEffect } from 'react';\n\nimport { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';\nimport {\n draggable,\n dropTargetForElements,\n} from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport type { UseKanbanColumnDnDProps } from './types';\n\nexport function useKanbanColumnDnD({\n columnId,\n elementRef,\n dragHandleRef,\n}: UseKanbanColumnDnDProps) {\n useEffect(() => {\n const element = elementRef.current;\n if (!element) return;\n\n return combine(\n draggable({\n element,\n dragHandle: dragHandleRef?.current ?? undefined,\n getInitialData: () => ({\n type: 'column',\n columnId: String(columnId),\n }),\n }),\n dropTargetForElements({\n element,\n canDrop: ({ source }) =>\n source.data.type === 'column' &&\n String(source.data.columnId) !== String(columnId),\n getData: () => ({\n type: 'column',\n columnId: String(columnId),\n }),\n })\n );\n }, [columnId, dragHandleRef, elementRef]);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"kanban-dnd.js","names":["STACKED_CLONE_BASE_STYLE: Partial<CSSStyleDeclaration>","defaultGetColumnId","cardsToMove: TCard[]","nextOrder: number | null","state: {\n xContainer: HTMLElement | null;\n yContainer: HTMLElement | null;\n xMax: number;\n yMax: number;\n useWindowY: boolean;\n } | null"],"sources":["../src/components/kanban-dnd/context.tsx","../src/components/kanban-dnd/constants.ts","../src/components/kanban-dnd/utils.ts","../src/components/kanban-dnd/drag-preview.ts","../src/components/kanban-dnd/kanban-card-item.tsx","../src/components/kanban-dnd/move-cards.ts","../src/components/kanban-dnd/kanban-dnd-monitor.tsx","../src/components/kanban-dnd/kanban-dropzone.tsx","../src/components/kanban-dnd/use-kanban-selector-auto-scroll.ts","../src/components/kanban-dnd/kanban-selector.tsx","../src/components/kanban-dnd/use-kanban-column-dnd.ts"],"sourcesContent":["'use client';\n\nimport { createContext, useContext, useSyncExternalStore } from 'react';\n\nimport type { KanbanSelectableItem } from './types';\n\ntype KanbanDndContextValue = {\n getIsDragging: () => boolean;\n getSelectedCardIds: () => string[];\n subscribeSelection: (listener: () => void) => () => void;\n setSelectedCardIds: (cardIds: string[]) => void;\n addSelectedCardId: (cardId: string) => void;\n clearSelectedCards: () => void;\n toggleSelectedCardId: (cardId: string) => void;\n registerSelectableItem: (id: string, element: HTMLElement | null) => void;\n getSelectableItems: () => KanbanSelectableItem[];\n};\n\nconst KanbanDndContext = createContext<KanbanDndContextValue | null>(null);\n\nexport function KanbanDndProvider({\n children,\n value,\n}: {\n children: React.ReactNode;\n value: KanbanDndContextValue;\n}) {\n return (\n <KanbanDndContext.Provider value={value}>\n {children}\n </KanbanDndContext.Provider>\n );\n}\n\nexport function useKanbanDndContext() {\n return useContext(KanbanDndContext);\n}\n\nexport function useKanbanSelection() {\n const context = useKanbanDndContext();\n\n if (!context) {\n return {\n selectedCardIds: [] as string[],\n isSelected: () => false,\n setSelectedCardIds: () => {},\n addSelectedCardId: () => {},\n clearSelectedCards: () => {},\n toggleSelectedCardId: () => {},\n };\n }\n\n const selectedCardIds = useSyncExternalStore(\n context.subscribeSelection,\n context.getSelectedCardIds,\n () => []\n );\n\n return {\n selectedCardIds,\n isSelected: (cardId: string) => selectedCardIds.includes(cardId),\n setSelectedCardIds: context.setSelectedCardIds,\n addSelectedCardId: context.addSelectedCardId,\n clearSelectedCards: context.clearSelectedCards,\n toggleSelectedCardId: context.toggleSelectedCardId,\n };\n}\n\nexport function useKanbanCardSelected(cardId: string | number) {\n const context = useKanbanDndContext();\n\n if (!context) return false;\n\n const normalizedId = String(cardId);\n\n return useSyncExternalStore(\n context.subscribeSelection,\n () => context.getSelectedCardIds().includes(normalizedId),\n () => false\n );\n}\n\nexport function useKanbanSelectionActions() {\n const context = useKanbanDndContext();\n\n if (!context) {\n return {\n setSelectedCardIds: (_cardIds: string[]) => {},\n addSelectedCardId: (_cardId: string) => {},\n clearSelectedCards: () => {},\n toggleSelectedCardId: (_cardId: string) => {},\n };\n }\n\n return {\n setSelectedCardIds: context.setSelectedCardIds,\n addSelectedCardId: context.addSelectedCardId,\n clearSelectedCards: context.clearSelectedCards,\n toggleSelectedCardId: context.toggleSelectedCardId,\n };\n}\n","export const PREVIEW_STACK_LIMIT = 10;\nexport const PREVIEW_STACK_X_OFFSET = 10;\nexport const PREVIEW_STACK_Y_OFFSET = 8;\nexport const PREVIEW_STACK_MIN_OPACITY = 0.75;\n\nexport const STACKED_CLONE_BASE_STYLE: Partial<CSSStyleDeclaration> = {\n pointerEvents: 'none',\n margin: '0',\n width: '100%',\n top: '0',\n left: '0',\n};\n\nexport const DEFAULT_AUTO_SCROLL_OVERFLOW = {\n forLeftEdge: {\n left: 320,\n top: 160,\n bottom: 160,\n },\n forRightEdge: {\n right: 160,\n top: 120,\n bottom: 120,\n },\n};\n","import type { DropTarget } from './types';\n\nexport function applyStyles(\n element: HTMLElement,\n styles: Partial<CSSStyleDeclaration>\n) {\n Object.assign(element.style, styles);\n}\n\nexport function getTargetColumnId(\n dropTargets: DropTarget[],\n targetType: string\n) {\n const target = dropTargets.find((item) => item.data.type === targetType);\n return target ? String(target.data.columnId ?? '') : '';\n}\n","import {\n PREVIEW_STACK_LIMIT,\n PREVIEW_STACK_MIN_OPACITY,\n PREVIEW_STACK_X_OFFSET,\n PREVIEW_STACK_Y_OFFSET,\n STACKED_CLONE_BASE_STYLE,\n} from './constants';\nimport type { KanbanSelectableItem } from './types';\nimport { applyStyles } from './utils';\n\nfunction createStackedClone(original: HTMLElement, index: number) {\n const clone = original.cloneNode(true) as HTMLElement;\n const xOffset = index * PREVIEW_STACK_X_OFFSET;\n const yOffset = index * PREVIEW_STACK_Y_OFFSET;\n const opacity = Math.max(1 - index * 0.1, PREVIEW_STACK_MIN_OPACITY);\n\n applyStyles(clone, {\n ...STACKED_CLONE_BASE_STYLE,\n position: index === 0 ? 'relative' : 'absolute',\n transform: `translate(${xOffset}px, ${yOffset}px)`,\n opacity: String(opacity),\n });\n\n return clone;\n}\n\nfunction createFallbackClone(sourceElement: HTMLElement) {\n const fallback = sourceElement.cloneNode(true) as HTMLElement;\n\n applyStyles(fallback, {\n pointerEvents: 'none',\n margin: '0',\n });\n\n return fallback;\n}\n\nexport function buildDragPreview({\n cardId,\n sourceElement,\n getSelectableItems,\n getSelectedCardIds,\n}: {\n cardId: string;\n sourceElement: HTMLElement;\n getSelectableItems?: () => KanbanSelectableItem[];\n getSelectedCardIds?: () => string[];\n}) {\n const selectedIds = getSelectedCardIds?.() ?? [];\n const idsToPreview = Array.from(new Set([...selectedIds, String(cardId)]));\n const root = document.createElement('div');\n\n applyStyles(root, {\n position: 'relative',\n });\n\n const selectableItems = getSelectableItems?.() ?? [];\n const itemElementById = new Map(\n selectableItems\n .filter((item) => item.element)\n .map((item) => [String(item.id), item.element as HTMLElement])\n );\n\n idsToPreview.slice(0, PREVIEW_STACK_LIMIT).forEach((previewId, index) => {\n const original = itemElementById.get(String(previewId));\n if (!original) return;\n\n root.appendChild(createStackedClone(original, index));\n });\n\n if (!root.childElementCount) {\n root.appendChild(createFallbackClone(sourceElement));\n }\n\n return root;\n}\n","'use client';\n\nimport { useEffect, useRef } from 'react';\n\nimport { draggable } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { preserveOffsetOnSource } from '@atlaskit/pragmatic-drag-and-drop/element/preserve-offset-on-source';\nimport { setCustomNativeDragPreview } from '@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview';\nimport { useKanbanDndContext } from './context';\nimport { buildDragPreview } from './drag-preview';\nimport type { KanbanCardItemProps } from './types';\n\nexport function KanbanCardItem({\n id,\n children,\n className,\n getSelectedCardIds,\n getSelectableItems,\n}: KanbanCardItemProps) {\n const ref = useRef<HTMLDivElement>(null);\n const context = useKanbanDndContext();\n\n const getSelectedCardIdsSafe =\n getSelectedCardIds ?? context?.getSelectedCardIds;\n const getSelectableItemsSafe =\n getSelectableItems ?? context?.getSelectableItems;\n\n useEffect(() => {\n context?.registerSelectableItem(String(id), ref.current);\n\n return () => {\n context?.registerSelectableItem(String(id), null);\n };\n }, [context, id]);\n\n useEffect(() => {\n const element = ref.current;\n if (!element) return;\n\n return draggable({\n element,\n getInitialData: () => ({\n type: 'card',\n cardId: String(id),\n }),\n onGenerateDragPreview: ({ nativeSetDragImage, source, location }) => {\n setCustomNativeDragPreview({\n getOffset: preserveOffsetOnSource({\n element: source.element,\n input: location.current.input,\n }),\n render({ container }) {\n const root = buildDragPreview({\n cardId: String(id),\n sourceElement: source.element,\n getSelectableItems: getSelectableItemsSafe,\n getSelectedCardIds: getSelectedCardIdsSafe,\n });\n\n container.appendChild(root);\n\n return () => {\n if (root.parentElement === container) {\n container.removeChild(root);\n }\n };\n },\n nativeSetDragImage,\n });\n },\n });\n }, [getSelectableItemsSafe, getSelectedCardIdsSafe, id]);\n\n return (\n <div\n className={className}\n data-draggable=\"true\"\n id={`kanban-card-item-${id}`}\n ref={ref}\n suppressHydrationWarning\n >\n {children}\n </div>\n );\n}\n","type AnyObject = Record<string, unknown>;\n\ntype MoveCardsResolvers<TColumn, TCard> = {\n getColumnId: (column: TColumn) => string;\n getCards: (column: TColumn) => TCard[];\n setCards: (column: TColumn, cards: TCard[]) => TColumn;\n getCardId: (card: TCard) => string;\n};\n\nfunction hasObjectValue(value: unknown): value is AnyObject {\n return typeof value === 'object' && value !== null;\n}\n\nfunction defaultGetColumnId<TColumn>(column: TColumn): string {\n if (!hasObjectValue(column)) return '';\n const id = column.id;\n return id === undefined || id === null ? '' : String(id);\n}\n\nfunction defaultGetCards<TColumn, TCard>(column: TColumn): TCard[] {\n if (!hasObjectValue(column)) return [];\n const cards = column.cards;\n return Array.isArray(cards) ? (cards as TCard[]) : [];\n}\n\nfunction defaultSetCards<TColumn, TCard>(\n column: TColumn,\n cards: TCard[]\n): TColumn {\n if (!hasObjectValue(column)) return column;\n return { ...column, cards } as TColumn;\n}\n\nfunction defaultGetCardId<TCard>(card: TCard): string {\n if (!hasObjectValue(card)) return '';\n const id = card.id;\n return id === undefined || id === null ? '' : String(id);\n}\n\nexport function moveCardsInColumns<TColumn, TCard>(\n columns: TColumn[],\n cardIds: string[],\n targetColumnId: string,\n resolvers: Partial<MoveCardsResolvers<TColumn, TCard>> = {}\n): TColumn[] {\n const getColumnId = resolvers.getColumnId ?? defaultGetColumnId<TColumn>;\n const getCards = resolvers.getCards ?? defaultGetCards<TColumn, TCard>;\n const setCards = resolvers.setCards ?? defaultSetCards<TColumn, TCard>;\n const getCardId = resolvers.getCardId ?? defaultGetCardId<TCard>;\n\n const selectedIds = new Set(cardIds);\n if (selectedIds.size === 0) return columns;\n\n const cardsToMove: TCard[] = [];\n let didRemoveCards = false;\n\n const columnsWithoutMovedCards = columns.map((column) => {\n const currentCards = getCards(column);\n const remainingCards = currentCards.filter((card) => {\n if (selectedIds.has(getCardId(card))) {\n cardsToMove.push(card);\n return false;\n }\n\n return true;\n });\n\n if (remainingCards.length === currentCards.length) {\n return column;\n }\n\n didRemoveCards = true;\n return setCards(column, remainingCards);\n });\n\n if (cardsToMove.length === 0) return columns;\n\n let didAddCards = false;\n\n const nextColumns = columnsWithoutMovedCards.map((column) => {\n const currentCards = getCards(column);\n\n if (getColumnId(column) === targetColumnId) {\n const existingIds = new Set(currentCards.map((card) => getCardId(card)));\n const incomingCards = cardsToMove.filter(\n (card) => !existingIds.has(getCardId(card))\n );\n\n if (incomingCards.length === 0) {\n return column;\n }\n\n didAddCards = true;\n return setCards(column, [...currentCards, ...incomingCards]);\n }\n\n return column;\n });\n\n return didRemoveCards || didAddCards ? nextColumns : columns;\n}\n","'use client';\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { cn } from '@/lib/utils';\nimport { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';\nimport { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { reorder } from '@atlaskit/pragmatic-drag-and-drop/reorder';\nimport { autoScrollForElements } from '@atlaskit/pragmatic-drag-and-drop-auto-scroll/element';\nimport { unsafeOverflowAutoScrollForElements } from '@atlaskit/pragmatic-drag-and-drop-auto-scroll/unsafe-overflow/element';\nimport { DEFAULT_AUTO_SCROLL_OVERFLOW } from './constants';\nimport { KanbanDndProvider } from './context';\nimport { moveCardsInColumns } from './move-cards';\nimport type { DropTarget, KanbanDndMonitorProps } from './types';\nimport { getTargetColumnId } from './utils';\n\nfunction areSameCardSet(a: string[], b: string[]) {\n if (a.length !== b.length) return false;\n const aSet = new Set(a.map(String));\n if (aSet.size !== b.length) return false;\n return b.every((id) => aSet.has(String(id)));\n}\n\nfunction defaultGetColumnId<TColumn>(column: TColumn): string {\n const maybeColumn = column as Record<string, unknown>;\n const id = maybeColumn?.id;\n return id === undefined || id === null ? '' : String(id);\n}\n\nexport function KanbanDndMonitor<TColumn>({\n onCardsMove,\n onColumnReorder,\n scrollContainerId,\n setColumns,\n children,\n getColumnId,\n moveCards,\n getCardsFromColumn,\n setCardsInColumn,\n getCardId,\n getSelectedCardIds,\n setSelectedCardIds,\n addSelectedCardId,\n clearSelectedCards,\n onSelectionChange,\n setIsDragging,\n autoScrollOverflow,\n isAutoScrollEnabled = true,\n renderIdleLayer,\n className,\n}: KanbanDndMonitorProps<TColumn>) {\n const [isDragging, setLocalIsDragging] = useState(false);\n const isDraggingRef = useRef(false);\n const selectedCardIdsRef = useRef<string[]>([]);\n const selectableItemMapRef = useRef(new Map<string, HTMLElement>());\n const selectionListenersRef = useRef(new Set<() => void>());\n\n const notifySelectionListeners = useCallback(() => {\n selectionListenersRef.current.forEach((listener) => listener());\n }, []);\n\n const subscribeSelection = useCallback((listener: () => void) => {\n selectionListenersRef.current.add(listener);\n return () => {\n selectionListenersRef.current.delete(listener);\n };\n }, []);\n const getColumnIdSafe = useCallback(\n (column: TColumn) =>\n getColumnId ? getColumnId(column) : defaultGetColumnId(column),\n [getColumnId]\n );\n\n const getSelectedCardIdsSafe = useCallback(\n () => getSelectedCardIds?.() ?? selectedCardIdsRef.current,\n [getSelectedCardIds]\n );\n\n const setInternalSelectedCardIdsSafe = useCallback(\n (nextIds: string[]) => {\n selectedCardIdsRef.current = nextIds;\n notifySelectionListeners();\n onSelectionChange?.(nextIds);\n },\n [notifySelectionListeners, onSelectionChange]\n );\n\n const addSelectedCardIdSafe = useCallback(\n (cardId: string) => {\n const selectedIds = getSelectedCardIdsSafe();\n if (selectedIds.includes(cardId)) {\n return;\n }\n\n const nextIds = [...selectedIds, cardId];\n\n if (addSelectedCardId) {\n addSelectedCardId(cardId);\n notifySelectionListeners();\n onSelectionChange?.(nextIds);\n return;\n }\n\n setInternalSelectedCardIdsSafe(nextIds);\n },\n [\n addSelectedCardId,\n getSelectedCardIdsSafe,\n notifySelectionListeners,\n onSelectionChange,\n setInternalSelectedCardIdsSafe,\n ]\n );\n\n const clearSelectedCardsSafe = useCallback(() => {\n const currentIds = getSelectedCardIdsSafe();\n if (currentIds.length === 0) {\n return;\n }\n\n if (clearSelectedCards) {\n clearSelectedCards();\n notifySelectionListeners();\n onSelectionChange?.([]);\n return;\n }\n\n setInternalSelectedCardIdsSafe([]);\n }, [\n clearSelectedCards,\n getSelectedCardIdsSafe,\n notifySelectionListeners,\n onSelectionChange,\n setInternalSelectedCardIdsSafe,\n ]);\n\n const setSelectedCardIdsSafe = useCallback(\n (cardIds: string[]) => {\n const nextIds = Array.from(new Set(cardIds.map(String)));\n const currentIds = getSelectedCardIdsSafe();\n\n if (areSameCardSet(nextIds, currentIds)) {\n return;\n }\n\n if (setSelectedCardIds) {\n setSelectedCardIds(nextIds);\n notifySelectionListeners();\n onSelectionChange?.(nextIds);\n return;\n }\n\n if (getSelectedCardIds && clearSelectedCards && addSelectedCardId) {\n clearSelectedCards();\n nextIds.forEach((cardId) => addSelectedCardId(cardId));\n notifySelectionListeners();\n onSelectionChange?.(nextIds);\n return;\n }\n\n setInternalSelectedCardIdsSafe(nextIds);\n },\n [\n addSelectedCardId,\n clearSelectedCards,\n getSelectedCardIdsSafe,\n getSelectedCardIds,\n notifySelectionListeners,\n onSelectionChange,\n setSelectedCardIds,\n setInternalSelectedCardIdsSafe,\n ]\n );\n\n const toggleSelectedCardIdSafe = useCallback(\n (cardId: string) => {\n const selectedIds = getSelectedCardIdsSafe();\n if (selectedIds.includes(cardId)) {\n setSelectedCardIdsSafe(\n selectedIds.filter((selectedId) => selectedId !== cardId)\n );\n return;\n }\n\n addSelectedCardIdSafe(cardId);\n },\n [addSelectedCardIdSafe, getSelectedCardIdsSafe, setSelectedCardIdsSafe]\n );\n\n const registerSelectableItem = useCallback(\n (id: string, element: HTMLElement | null) => {\n if (!element) {\n selectableItemMapRef.current.delete(id);\n return;\n }\n\n selectableItemMapRef.current.set(id, element);\n },\n []\n );\n\n const getSelectableItems = useCallback(\n () =>\n Array.from(selectableItemMapRef.current.entries()).map(\n ([id, element]) => ({\n id,\n element,\n })\n ),\n []\n );\n\n const contextValue = useMemo(\n () => ({\n getIsDragging: () => isDraggingRef.current,\n getSelectedCardIds: getSelectedCardIdsSafe,\n subscribeSelection,\n setSelectedCardIds: setSelectedCardIdsSafe,\n addSelectedCardId: addSelectedCardIdSafe,\n clearSelectedCards: clearSelectedCardsSafe,\n toggleSelectedCardId: toggleSelectedCardIdSafe,\n registerSelectableItem,\n getSelectableItems,\n }),\n [\n addSelectedCardIdSafe,\n clearSelectedCardsSafe,\n getSelectableItems,\n getSelectedCardIdsSafe,\n registerSelectableItem,\n setSelectedCardIdsSafe,\n subscribeSelection,\n toggleSelectedCardIdSafe,\n ]\n );\n\n const setDraggingState = useCallback(\n (value: boolean) => {\n isDraggingRef.current = value;\n if (renderIdleLayer) {\n setLocalIsDragging(value);\n }\n },\n [renderIdleLayer]\n );\n\n const finishDrag = () => {\n setDraggingState(false);\n setIsDragging?.(false);\n clearSelectedCardsSafe();\n };\n\n const startDrag = (source: { data: Record<string, unknown> }) => {\n if (source.data.type !== 'column' && source.data.type !== 'card') return;\n\n if (source.data.type === 'card') {\n const cardId = String(source.data.cardId ?? '');\n const selectedIds = getSelectedCardIdsSafe();\n if (!selectedIds.includes(cardId)) {\n addSelectedCardIdSafe(cardId);\n }\n }\n\n setIsDragging?.(true);\n setDraggingState(true);\n };\n\n const dropColumn = (sourceColumnId: string, targetColumnId: string) => {\n if (!sourceColumnId || sourceColumnId === targetColumnId) return;\n\n let nextOrder: number | null = null;\n\n setColumns((prev) => {\n const oldIndex = prev.findIndex(\n (col) => getColumnIdSafe(col) === sourceColumnId\n );\n const newIndex = prev.findIndex(\n (col) => getColumnIdSafe(col) === targetColumnId\n );\n\n if (oldIndex < 0 || newIndex < 0 || oldIndex === newIndex) {\n return prev;\n }\n\n nextOrder = newIndex + 1;\n return reorder({\n list: prev,\n startIndex: oldIndex,\n finishIndex: newIndex,\n });\n });\n\n if (nextOrder !== null) {\n onColumnReorder?.({ columnId: sourceColumnId, order: nextOrder });\n }\n };\n\n const dropCard = (cardId: string, targetColumnId: string) => {\n if (!cardId || !targetColumnId) return;\n\n const selectedIds = getSelectedCardIdsSafe();\n const idsToMove = selectedIds.length > 0 ? selectedIds : [cardId];\n\n setColumns((prev) => {\n if (moveCards) {\n return moveCards(prev, idsToMove, targetColumnId);\n }\n\n return moveCardsInColumns(prev, idsToMove, targetColumnId, {\n getColumnId: getColumnIdSafe,\n getCards: getCardsFromColumn as\n | ((column: TColumn) => unknown[])\n | undefined,\n setCards: setCardsInColumn as\n | ((column: TColumn, cards: unknown[]) => TColumn)\n | undefined,\n getCardId,\n });\n });\n onCardsMove?.({ cardIds: idsToMove, targetColumnId });\n };\n\n useEffect(() => {\n const monitorCleanup = monitorForElements({\n onDragStart: ({ source }) => startDrag(source),\n onDrop: ({ source, location }) => {\n const dropTargets = location.current.dropTargets as DropTarget[];\n\n if (source.data.type === 'column') {\n dropColumn(\n String(source.data.columnId ?? ''),\n getTargetColumnId(dropTargets, 'column')\n );\n finishDrag();\n return;\n }\n\n if (source.data.type === 'card') {\n dropCard(\n String(source.data.cardId ?? ''),\n getTargetColumnId(dropTargets, 'column-drop')\n );\n finishDrag();\n return;\n }\n\n finishDrag();\n },\n });\n\n if (!isAutoScrollEnabled || !scrollContainerId) {\n return monitorCleanup;\n }\n\n const scrollContainer = document.getElementById(scrollContainerId);\n if (!scrollContainer) {\n return monitorCleanup;\n }\n\n return combine(\n monitorCleanup,\n autoScrollForElements({\n element: scrollContainer,\n canScroll: ({ source }) =>\n source.data.type === 'card' || source.data.type === 'column',\n getAllowedAxis: () => 'horizontal',\n }),\n unsafeOverflowAutoScrollForElements({\n element: scrollContainer,\n canScroll: ({ source }) =>\n source.data.type === 'card' || source.data.type === 'column',\n getAllowedAxis: () => 'horizontal',\n getOverflow: () => autoScrollOverflow ?? DEFAULT_AUTO_SCROLL_OVERFLOW,\n })\n );\n }, [\n addSelectedCardIdSafe,\n autoScrollOverflow,\n clearSelectedCardsSafe,\n getCardId,\n getCardsFromColumn,\n getColumnIdSafe,\n getSelectedCardIdsSafe,\n isAutoScrollEnabled,\n moveCards,\n onCardsMove,\n onColumnReorder,\n setCardsInColumn,\n scrollContainerId,\n setSelectedCardIds,\n setColumns,\n setIsDragging,\n ]);\n\n return (\n <KanbanDndProvider value={contextValue}>\n <div\n className={cn('contain-layout h-full', className)}\n id=\"draggable-area\"\n >\n {!isDragging && renderIdleLayer}\n {children}\n </div>\n </KanbanDndProvider>\n );\n}\n","'use client';\n\nimport { useEffect, useRef, useState } from 'react';\n\nimport { cn } from '@/lib/utils';\nimport { dropTargetForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport type { KanbanDropZoneProps } from './types';\n\nexport function KanbanDropZone({\n children,\n id,\n className,\n isOverClassName,\n}: KanbanDropZoneProps) {\n const [isOver, setIsOver] = useState(false);\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const element = ref.current;\n if (!element) return;\n\n return dropTargetForElements({\n element,\n canDrop: ({ source }) => source.data.type === 'card',\n getData: () => ({\n type: 'column-drop',\n columnId: String(id),\n }),\n onDragEnter: () => setIsOver(true),\n onDragLeave: () => setIsOver(false),\n onDrop: () => setIsOver(false),\n });\n }, [id]);\n\n return (\n <div\n className={cn(\n 'border flex-1 border-transparent rounded-xl transition-colors',\n isOver && (isOverClassName ?? 'border-border'),\n className\n )}\n id={`kanban-drop-zone-${id}`}\n ref={ref}\n >\n {children}\n </div>\n );\n}\n","import type { MutableRefObject } from 'react';\nimport { useEffect } from 'react';\n\nexport function useKanbanSelectorAutoScroll({\n isSelectingRef,\n dragAreaId,\n autoScrollMargin,\n}: {\n isSelectingRef: MutableRefObject<boolean>;\n dragAreaId: string;\n autoScrollMargin: number;\n}) {\n useEffect(() => {\n const clamp = (delta: number, current: number, max: number) =>\n delta > 0 ? Math.min(delta, max - current) : Math.max(delta, -current);\n\n const edge = (\n point: number,\n start: number,\n end: number,\n margin: number,\n dt: number\n ) => {\n if (point < start + margin)\n return ((point - (start + margin)) / margin) * dt;\n if (point > end - margin) return ((point - (end - margin)) / margin) * dt;\n return 0;\n };\n\n const bounds = (el: HTMLElement | null) => {\n if (!el || el === document.documentElement || el === document.body) {\n return {\n left: 0,\n right: window.innerWidth,\n top: 0,\n bottom: window.innerHeight,\n };\n }\n\n const rect = el.getBoundingClientRect();\n return {\n left: Math.max(0, rect.left),\n right: Math.min(window.innerWidth, rect.right),\n top: Math.max(0, rect.top),\n bottom: Math.min(window.innerHeight, rect.bottom),\n };\n };\n\n const findScrollable = (node: HTMLElement | null, axis: 'x' | 'y') => {\n let current = node;\n while (current) {\n const style = window.getComputedStyle(current);\n const canScroll =\n axis === 'x'\n ? /(auto|scroll)/.test(style.overflowX) &&\n current.scrollWidth > current.clientWidth\n : /(auto|scroll)/.test(style.overflowY) &&\n current.scrollHeight > current.clientHeight;\n if (canScroll) return current;\n current = current.parentElement;\n }\n\n return null;\n };\n\n let raf = 0;\n let lastTime = performance.now();\n const pointer = { x: 0, y: 0 };\n let state: {\n xContainer: HTMLElement | null;\n yContainer: HTMLElement | null;\n xMax: number;\n yMax: number;\n useWindowY: boolean;\n } | null = null;\n\n const onPointerMove = (e: PointerEvent) => {\n pointer.x = e.clientX;\n pointer.y = e.clientY;\n };\n\n const getState = () => {\n const startNode =\n document.getElementById(dragAreaId)?.parentElement ?? null;\n const xContainer = findScrollable(startNode, 'x');\n const yContainer = findScrollable(startNode, 'y');\n const useWindowY = !yContainer;\n\n return {\n xContainer,\n yContainer,\n useWindowY,\n xMax: xContainer ? xContainer.scrollWidth - xContainer.clientWidth : 0,\n yMax: useWindowY\n ? document.documentElement.scrollHeight - window.innerHeight\n : yContainer\n ? yContainer.scrollHeight - yContainer.clientHeight\n : 0,\n };\n };\n\n const tick = (now: number) => {\n const dt = now - lastTime;\n lastTime = now;\n\n if (!isSelectingRef.current) {\n state = null;\n raf = requestAnimationFrame(tick);\n return;\n }\n\n state ??= getState();\n const scrollState = state;\n if (!scrollState) {\n raf = requestAnimationFrame(tick);\n return;\n }\n\n const xBounds = bounds(scrollState.xContainer);\n const yBounds = scrollState.useWindowY\n ? { top: 0, bottom: window.innerHeight }\n : bounds(scrollState.yContainer);\n\n const dx = edge(\n pointer.x,\n xBounds.left,\n xBounds.right,\n autoScrollMargin,\n dt\n );\n const dy = edge(\n pointer.y,\n yBounds.top,\n yBounds.bottom,\n autoScrollMargin,\n dt\n );\n\n let didScroll = false;\n\n if (dx && scrollState.xContainer && scrollState.xMax > 0) {\n const nextDx = clamp(\n dx,\n scrollState.xContainer.scrollLeft,\n scrollState.xMax\n );\n if (nextDx) {\n scrollState.xContainer.scrollBy(nextDx, 0);\n didScroll = true;\n }\n }\n\n if (dy && scrollState.yMax > 0) {\n if (scrollState.useWindowY) {\n const top = window.scrollY || document.documentElement.scrollTop;\n const nextDy = clamp(dy, top, scrollState.yMax);\n if (nextDy) {\n window.scrollBy(0, nextDy);\n didScroll = true;\n }\n } else if (scrollState.yContainer) {\n const nextDy = clamp(\n dy,\n scrollState.yContainer.scrollTop,\n scrollState.yMax\n );\n if (nextDy) {\n scrollState.yContainer.scrollBy(0, nextDy);\n didScroll = true;\n }\n }\n }\n\n if (didScroll) {\n document.body.dispatchEvent(\n new MouseEvent('mousemove', {\n clientX: pointer.x,\n clientY: pointer.y,\n bubbles: true,\n cancelable: true,\n })\n );\n }\n\n raf = requestAnimationFrame(tick);\n };\n\n window.addEventListener('pointermove', onPointerMove, { passive: true });\n raf = requestAnimationFrame(tick);\n\n return () => {\n window.removeEventListener('pointermove', onPointerMove);\n cancelAnimationFrame(raf);\n };\n }, [autoScrollMargin, dragAreaId, isSelectingRef]);\n}\n","'use client';\n\nimport { useEffect, useRef } from 'react';\n\nimport {\n boxesIntersect,\n useSelectionContainer,\n} from '@air/react-drag-to-select';\nimport { useKanbanDndContext } from './context';\nimport type { KanbanSelectorProps } from './types';\nimport { useKanbanSelectorAutoScroll } from './use-kanban-selector-auto-scroll';\n\nconst DEFAULT_DRAG_AREA_ID = 'draggable-area';\nconst DEFAULT_AUTO_SCROLL_MARGIN = 120;\nconst DEFAULT_IGNORED_SLOTS = [\n 'sheet-content',\n 'popover-content',\n 'select-content',\n 'dialog-content',\n 'dialog-overlay',\n];\nconst SELECTION_STYLE = {\n pointerEvents: 'none',\n position: 'fixed',\n inset: 0,\n zIndex: 50,\n} as const;\n\ntype SelectionBox = Parameters<typeof boxesIntersect>[0];\nfunction shouldStartSelecting(\n target: EventTarget | null,\n ignoredSlots: string[]\n): boolean {\n if (!(target instanceof Element)) return false;\n return !(\n target.closest('[data-draggable=\"true\"]') ||\n ignoredSlots.some((slot) => target.closest(`[data-slot=\"${slot}\"]`))\n );\n}\nconst toUniqueStringIds = (ids: Array<string | number>) =>\n Array.from(new Set(ids.map(String)));\nconst haveSameIds = (a: string[], b: string[]) => {\n if (a.length !== b.length) return false;\n const set = new Set(a);\n return b.every((id) => set.has(id));\n};\nconst xorSelection = (base: string[], ids: string[]) => {\n const next = new Set(base);\n ids.forEach((id) => (next.has(id) ? next.delete(id) : next.add(id)));\n return Array.from(next);\n};\n\nexport function KanbanSelector({\n dragAreaId = DEFAULT_DRAG_AREA_ID,\n autoScrollMargin = DEFAULT_AUTO_SCROLL_MARGIN,\n ignoredSlots = DEFAULT_IGNORED_SLOTS,\n}: KanbanSelectorProps) {\n const context = useKanbanDndContext();\n const isSelectingRef = useRef(false);\n const shiftOnPointerDownRef = useRef(false);\n const sessionRef = useRef<{ toggle: boolean; base: string[] }>({\n toggle: false,\n base: [],\n });\n\n useKanbanSelectorAutoScroll({ isSelectingRef, dragAreaId, autoScrollMargin });\n\n const { DragSelection } = useSelectionContainer({\n shouldStartSelecting: (target) =>\n shouldStartSelecting(target, ignoredSlots),\n onSelectionChange: (selection: SelectionBox) => {\n if (!context) return;\n const selectedIds = toUniqueStringIds(\n context.getSelectableItems().flatMap((item) => {\n const element = item.element;\n if (!element) return [];\n const rect = element.getBoundingClientRect();\n const intersects = boxesIntersect(selection, {\n ...rect,\n left: rect.left + window.scrollX,\n top: rect.top,\n width: rect.width,\n height: rect.height,\n });\n return intersects ? [String(item.id)] : [];\n })\n );\n const nextIds = sessionRef.current.toggle\n ? xorSelection(sessionRef.current.base, selectedIds)\n : selectedIds;\n if (haveSameIds(nextIds, context.getSelectedCardIds())) return;\n context.setSelectedCardIds(nextIds);\n },\n onSelectionEnd: () => {\n isSelectingRef.current = false;\n sessionRef.current = { toggle: false, base: [] };\n },\n onSelectionStart: () => {\n isSelectingRef.current = true;\n sessionRef.current = {\n toggle: shiftOnPointerDownRef.current,\n base: context?.getSelectedCardIds() ?? [],\n };\n },\n selectionProps: { style: SELECTION_STYLE },\n });\n\n useEffect(() => {\n if (!context) return;\n\n const handlePointerDown = (e: PointerEvent) => {\n shiftOnPointerDownRef.current = e.shiftKey;\n };\n\n const handlePointerUp = (e: PointerEvent) => {\n const target = e.target as Element | null;\n if (\n !isSelectingRef.current &&\n !context.getIsDragging() &&\n !target?.closest('[data-draggable=\"true\"]')\n ) {\n context.clearSelectedCards();\n }\n shiftOnPointerDownRef.current = false;\n };\n\n document.addEventListener('pointerdown', handlePointerDown);\n document.addEventListener('pointerup', handlePointerUp);\n\n return () => {\n document.removeEventListener('pointerdown', handlePointerDown);\n document.removeEventListener('pointerup', handlePointerUp);\n };\n }, [context]);\n\n if (!context) return null;\n\n return <DragSelection />;\n}\n","'use client';\n\nimport { useEffect } from 'react';\n\nimport { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';\nimport {\n draggable,\n dropTargetForElements,\n} from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport type { UseKanbanColumnDnDProps } from './types';\n\nexport function useKanbanColumnDnD({\n columnId,\n elementRef,\n dragHandleRef,\n}: UseKanbanColumnDnDProps) {\n useEffect(() => {\n const element = elementRef.current;\n if (!element) return;\n\n return combine(\n draggable({\n element,\n dragHandle: dragHandleRef?.current ?? undefined,\n getInitialData: () => ({\n type: 'column',\n columnId: String(columnId),\n }),\n }),\n dropTargetForElements({\n element,\n canDrop: ({ source }) =>\n source.data.type === 'column' &&\n String(source.data.columnId) !== String(columnId),\n getData: () => ({\n type: 'column',\n columnId: String(columnId),\n }),\n })\n );\n }, [columnId, dragHandleRef, elementRef]);\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime2 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime8 from "react/jsx-runtime";
2
2
 
3
3
  //#region src/components/page-header/page-header.d.ts
4
4
  interface PageHeaderProps {
@@ -10,7 +10,7 @@ declare function PageHeader({
10
10
  title,
11
11
  help,
12
12
  description
13
- }: PageHeaderProps): react_jsx_runtime2.JSX.Element;
13
+ }: PageHeaderProps): react_jsx_runtime8.JSX.Element;
14
14
  //#endregion
15
15
  export { PageHeader, type PageHeaderProps };
16
16
  //# sourceMappingURL=page-header.d.ts.map
@@ -1,6 +1,6 @@
1
1
  import { n as Options$1 } from "./with-mask-Chm8kVE1.js";
2
2
  import { FieldPath, FieldPathValue, FieldValues, UseControllerProps } from "react-hook-form";
3
- import * as react_jsx_runtime5 from "react/jsx-runtime";
3
+ import * as react_jsx_runtime4 from "react/jsx-runtime";
4
4
  import { Options } from "nuqs";
5
5
 
6
6
  //#region src/components/text-field/TextField.d.ts
@@ -57,7 +57,7 @@ declare function InputText({
57
57
  name,
58
58
  onChange,
59
59
  ...props
60
- }: InputTextProps): react_jsx_runtime5.JSX.Element;
60
+ }: InputTextProps): react_jsx_runtime4.JSX.Element;
61
61
  interface TextFieldProps<TFieldValues extends FieldValues = FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> extends UseControllerProps<TFieldValues, TFieldName> {
62
62
  disabled?: boolean;
63
63
  required?: boolean;
@@ -75,7 +75,7 @@ declare function TextField<TFieldValues extends FieldValues = FieldValues, TFiel
75
75
  transform,
76
76
  prefix,
77
77
  ...props
78
- }: TextFieldProps<TFieldValues, TFieldName> & Omit<InputTextProps, 'onChange'>): react_jsx_runtime5.JSX.Element;
78
+ }: TextFieldProps<TFieldValues, TFieldName> & Omit<InputTextProps, 'onChange'>): react_jsx_runtime4.JSX.Element;
79
79
  interface QueryTextFieldProps extends Omit<InputTextProps, 'onChange'> {
80
80
  name: string;
81
81
  defaultValue?: string;
@@ -87,7 +87,7 @@ declare function QueryTextField({
87
87
  defaultValue,
88
88
  options,
89
89
  ...props
90
- }: QueryTextFieldProps): react_jsx_runtime5.JSX.Element;
90
+ }: QueryTextFieldProps): react_jsx_runtime4.JSX.Element;
91
91
  interface CookieTextFieldProps extends InputTextProps {
92
92
  name: string;
93
93
  maxAge?: number;
@@ -97,7 +97,7 @@ declare function CookieTextField({
97
97
  maxAge,
98
98
  onChange,
99
99
  ...inputProps
100
- }: CookieTextFieldProps): react_jsx_runtime5.JSX.Element;
100
+ }: CookieTextFieldProps): react_jsx_runtime4.JSX.Element;
101
101
  //#endregion
102
102
  export { CookieTextField, type CookieTextFieldProps, InputText, type InputTextProps, QueryTextField, type QueryTextFieldProps, TextField, type TextFieldProps };
103
103
  //# sourceMappingURL=text-field.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "maquinaweb-ui",
3
- "version": "2.53.0",
3
+ "version": "2.54.0",
4
4
  "description": "A minimal React component library",
5
5
  "type": "module",
6
6
  "sideEffects": false,