@postxl/ui-components 1.6.0 → 1.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +292 -267
- package/dist/index.js +670 -273
- package/dist/index.js.map +1 -1
- package/package.json +7 -7
package/dist/index.js
CHANGED
|
@@ -2,6 +2,7 @@ import { clsx } from "clsx";
|
|
|
2
2
|
import { twMerge } from "tailwind-merge";
|
|
3
3
|
import * as AccordionPrimitive from "@radix-ui/react-accordion";
|
|
4
4
|
import { ArrowLeftIcon, ArrowRightIcon, CalendarIcon, CaretSortIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, CircleIcon, Cross1Icon, Cross2Icon, DotFilledIcon, DotsHorizontalIcon, DoubleArrowLeftIcon, DoubleArrowRightIcon, DragHandleDots2Icon, EnterFullScreenIcon, MagnifyingGlassIcon } from "@radix-ui/react-icons";
|
|
5
|
+
import * as React$60 from "react";
|
|
5
6
|
import * as React$59 from "react";
|
|
6
7
|
import * as React$58 from "react";
|
|
7
8
|
import * as React$57 from "react";
|
|
@@ -70,7 +71,7 @@ import * as AvatarPrimitive from "@radix-ui/react-avatar";
|
|
|
70
71
|
import { DayPicker, getDefaultClassNames } from "react-day-picker";
|
|
71
72
|
import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
|
|
72
73
|
import useEmblaCarousel from "embla-carousel-react";
|
|
73
|
-
import { BaselineIcon, BookmarkIcon, CalendarIcon as CalendarIcon$1, Check, CheckIcon as CheckIcon$1, CheckSquareIcon, ChevronDownIcon as ChevronDownIcon$1, ChevronRightIcon as ChevronRightIcon$1, ChevronUpIcon as ChevronUpIcon$1, CircleCheckIcon, CopyIcon, DownloadIcon, EraserIcon, EyeIcon, EyeOffIcon, FilterX, GlobeIcon, GripHorizontalIcon, HashIcon, ListChecksIcon, ListIcon, ListTreeIcon, MessageSquareIcon, MinusIcon, PanelLeftIcon, PanelRightIcon, PencilIcon, PinIcon, PinOffIcon, PlusIcon, SaveIcon, Settings2Icon, SquareIcon, TagIcon, TextInitialIcon, Trash2Icon, TrashIcon, XIcon } from "lucide-react";
|
|
74
|
+
import { BaselineIcon, BookmarkIcon, CalendarIcon as CalendarIcon$1, Check, CheckIcon as CheckIcon$1, CheckSquareIcon, ChevronDownIcon as ChevronDownIcon$1, ChevronRightIcon as ChevronRightIcon$1, ChevronUpIcon as ChevronUpIcon$1, CircleCheckIcon, ClipboardCopy, CopyIcon, DownloadIcon, EraserIcon, EyeIcon, EyeOffIcon, FilterX, GlobeIcon, GripHorizontalIcon, GripVerticalIcon, HashIcon, ListChecksIcon, ListIcon, ListTreeIcon, MessageSquareIcon, MinusIcon, PanelLeftIcon, PanelRightIcon, PencilIcon, PinIcon, PinOffIcon, PlusIcon, SaveIcon, Settings2Icon, SquareIcon, TagIcon, TextInitialIcon, Trash2Icon, TrashIcon, XIcon } from "lucide-react";
|
|
74
75
|
import * as CollapsePrimitive from "@radix-ui/react-collapsible";
|
|
75
76
|
import { Command as Command$1 } from "cmdk";
|
|
76
77
|
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
|
@@ -128,13 +129,13 @@ function testId(baseId, suffix) {
|
|
|
128
129
|
//#endregion
|
|
129
130
|
//#region src/accordion/accordion.tsx
|
|
130
131
|
const Accordion = AccordionPrimitive.Root;
|
|
131
|
-
const AccordionItem = React$
|
|
132
|
+
const AccordionItem = React$60.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(AccordionPrimitive.Item, {
|
|
132
133
|
ref,
|
|
133
134
|
className: cn("border-b", className),
|
|
134
135
|
...props
|
|
135
136
|
}));
|
|
136
137
|
AccordionItem.displayName = "AccordionItem";
|
|
137
|
-
const AccordionTrigger = React$
|
|
138
|
+
const AccordionTrigger = React$60.forwardRef(({ className, children,...props }, ref) => /* @__PURE__ */ jsx(AccordionPrimitive.Header, {
|
|
138
139
|
className: "flex",
|
|
139
140
|
children: /* @__PURE__ */ jsxs(AccordionPrimitive.Trigger, {
|
|
140
141
|
ref,
|
|
@@ -144,7 +145,7 @@ const AccordionTrigger = React$59.forwardRef(({ className, children,...props },
|
|
|
144
145
|
})
|
|
145
146
|
}));
|
|
146
147
|
AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
|
|
147
|
-
const AccordionContent = React$
|
|
148
|
+
const AccordionContent = React$60.forwardRef(({ className, children,...props }, ref) => /* @__PURE__ */ jsx(AccordionPrimitive.Content, {
|
|
148
149
|
ref,
|
|
149
150
|
className: "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
|
|
150
151
|
...props,
|
|
@@ -164,21 +165,21 @@ const alertVariants = cva("relative w-full rounded-lg border px-4 py-3 text-sm [
|
|
|
164
165
|
} },
|
|
165
166
|
defaultVariants: { variant: "default" }
|
|
166
167
|
});
|
|
167
|
-
const Alert = React$
|
|
168
|
+
const Alert = React$59.forwardRef(({ className, variant,...props }, ref) => /* @__PURE__ */ jsx("div", {
|
|
168
169
|
ref,
|
|
169
170
|
role: "alert",
|
|
170
171
|
className: cn(alertVariants({ variant }), className),
|
|
171
172
|
...props
|
|
172
173
|
}));
|
|
173
174
|
Alert.displayName = "Alert";
|
|
174
|
-
const AlertTitle = React$
|
|
175
|
+
const AlertTitle = React$59.forwardRef(({ className, children,...props }, ref) => /* @__PURE__ */ jsx("h5", {
|
|
175
176
|
ref,
|
|
176
177
|
className: cn("mb-1 font-medium leading-none tracking-tight", className),
|
|
177
178
|
...props,
|
|
178
179
|
children
|
|
179
180
|
}));
|
|
180
181
|
AlertTitle.displayName = "AlertTitle";
|
|
181
|
-
const AlertDescription = React$
|
|
182
|
+
const AlertDescription = React$59.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("div", {
|
|
182
183
|
ref,
|
|
183
184
|
className: cn("text-sm [&_p]:leading-relaxed", className),
|
|
184
185
|
...props
|
|
@@ -238,13 +239,13 @@ function Button({ className, variant, size, asChild = false, __e2e_test_id__,...
|
|
|
238
239
|
const AlertDialog = AlertDialogPrimitive.Root;
|
|
239
240
|
const AlertDialogTrigger = AlertDialogPrimitive.Trigger;
|
|
240
241
|
const AlertDialogPortal = AlertDialogPrimitive.Portal;
|
|
241
|
-
const AlertDialogOverlay = React$
|
|
242
|
+
const AlertDialogOverlay = React$58.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(AlertDialogPrimitive.Overlay, {
|
|
242
243
|
className: cn("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0", className),
|
|
243
244
|
...props,
|
|
244
245
|
ref
|
|
245
246
|
}));
|
|
246
247
|
AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
|
|
247
|
-
const AlertDialogContent = React$
|
|
248
|
+
const AlertDialogContent = React$58.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [/* @__PURE__ */ jsx(AlertDialogOverlay, {}), /* @__PURE__ */ jsx(AlertDialogPrimitive.Content, {
|
|
248
249
|
ref,
|
|
249
250
|
className: cn("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg", className),
|
|
250
251
|
...props
|
|
@@ -260,25 +261,25 @@ const AlertDialogFooter = ({ className,...props }) => /* @__PURE__ */ jsx("div",
|
|
|
260
261
|
...props
|
|
261
262
|
});
|
|
262
263
|
AlertDialogFooter.displayName = "AlertDialogFooter";
|
|
263
|
-
const AlertDialogTitle = React$
|
|
264
|
+
const AlertDialogTitle = React$58.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(AlertDialogPrimitive.Title, {
|
|
264
265
|
ref,
|
|
265
266
|
className: cn("text-lg font-semibold", className),
|
|
266
267
|
...props
|
|
267
268
|
}));
|
|
268
269
|
AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
|
|
269
|
-
const AlertDialogDescription = React$
|
|
270
|
+
const AlertDialogDescription = React$58.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(AlertDialogPrimitive.Description, {
|
|
270
271
|
ref,
|
|
271
272
|
className: cn("text-sm text-muted-foreground", className),
|
|
272
273
|
...props
|
|
273
274
|
}));
|
|
274
275
|
AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
|
|
275
|
-
const AlertDialogAction = React$
|
|
276
|
+
const AlertDialogAction = React$58.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(AlertDialogPrimitive.Action, {
|
|
276
277
|
ref,
|
|
277
278
|
className: cn(buttonVariants(), className),
|
|
278
279
|
...props
|
|
279
280
|
}));
|
|
280
281
|
AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
|
|
281
|
-
const AlertDialogCancel = React$
|
|
282
|
+
const AlertDialogCancel = React$58.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(AlertDialogPrimitive.Cancel, {
|
|
282
283
|
ref,
|
|
283
284
|
className: cn(buttonVariants({ variant: "outline" }), "mt-2 sm:mt-0", className),
|
|
284
285
|
...props
|
|
@@ -287,19 +288,19 @@ AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;
|
|
|
287
288
|
|
|
288
289
|
//#endregion
|
|
289
290
|
//#region src/avatar/avatar.tsx
|
|
290
|
-
const Avatar = React$
|
|
291
|
+
const Avatar = React$57.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(AvatarPrimitive.Root, {
|
|
291
292
|
ref,
|
|
292
293
|
className: cn("relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full", className),
|
|
293
294
|
...props
|
|
294
295
|
}));
|
|
295
296
|
Avatar.displayName = AvatarPrimitive.Root.displayName;
|
|
296
|
-
const AvatarImage = React$
|
|
297
|
+
const AvatarImage = React$57.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(AvatarPrimitive.Image, {
|
|
297
298
|
ref,
|
|
298
299
|
className: cn("aspect-square h-full w-full", className),
|
|
299
300
|
...props
|
|
300
301
|
}));
|
|
301
302
|
AvatarImage.displayName = AvatarPrimitive.Image.displayName;
|
|
302
|
-
const AvatarFallback = React$
|
|
303
|
+
const AvatarFallback = React$57.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(AvatarPrimitive.Fallback, {
|
|
303
304
|
ref,
|
|
304
305
|
className: cn("flex h-full w-full items-center justify-center rounded-full bg-muted", className),
|
|
305
306
|
...props
|
|
@@ -345,25 +346,25 @@ function Badge({ className, variant, size, asChild = false,...props }) {
|
|
|
345
346
|
|
|
346
347
|
//#endregion
|
|
347
348
|
//#region src/breadcrumb/breadcrumb.tsx
|
|
348
|
-
const Breadcrumb = React$
|
|
349
|
+
const Breadcrumb = React$56.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx("nav", {
|
|
349
350
|
ref,
|
|
350
351
|
"aria-label": "breadcrumb",
|
|
351
352
|
...props
|
|
352
353
|
}));
|
|
353
354
|
Breadcrumb.displayName = "Breadcrumb";
|
|
354
|
-
const BreadcrumbList = React$
|
|
355
|
+
const BreadcrumbList = React$56.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("ol", {
|
|
355
356
|
ref,
|
|
356
357
|
className: cn("flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5", className),
|
|
357
358
|
...props
|
|
358
359
|
}));
|
|
359
360
|
BreadcrumbList.displayName = "BreadcrumbList";
|
|
360
|
-
const BreadcrumbItem = React$
|
|
361
|
+
const BreadcrumbItem = React$56.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("li", {
|
|
361
362
|
ref,
|
|
362
363
|
className: cn("inline-flex items-center gap-1.5", className),
|
|
363
364
|
...props
|
|
364
365
|
}));
|
|
365
366
|
BreadcrumbItem.displayName = "BreadcrumbItem";
|
|
366
|
-
const BreadcrumbLink = React$
|
|
367
|
+
const BreadcrumbLink = React$56.forwardRef(({ asChild, className,...props }, ref) => {
|
|
367
368
|
const Comp = asChild ? Slot : "a";
|
|
368
369
|
return /* @__PURE__ */ jsx(Comp, {
|
|
369
370
|
ref,
|
|
@@ -372,7 +373,7 @@ const BreadcrumbLink = React$55.forwardRef(({ asChild, className,...props }, ref
|
|
|
372
373
|
});
|
|
373
374
|
});
|
|
374
375
|
BreadcrumbLink.displayName = "BreadcrumbLink";
|
|
375
|
-
const BreadcrumbPage = React$
|
|
376
|
+
const BreadcrumbPage = React$56.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("span", {
|
|
376
377
|
ref,
|
|
377
378
|
"aria-disabled": "true",
|
|
378
379
|
"aria-current": "page",
|
|
@@ -402,8 +403,8 @@ BreadcrumbEllipsis.displayName = "BreadcrumbElipssis";
|
|
|
402
403
|
//#region src/calendar/calendar.tsx
|
|
403
404
|
function Calendar({ className, classNames, showOutsideDays = true, captionLayout = "label", buttonVariant = "ghost", showYearNavigation = false, formatters, components, __e2e_test_id__,...props }) {
|
|
404
405
|
const defaultClassNames = getDefaultClassNames();
|
|
405
|
-
const [rangeSelectionStep, setRangeSelectionStep] = React$
|
|
406
|
-
const handleDayClick = React$
|
|
406
|
+
const [rangeSelectionStep, setRangeSelectionStep] = React$55.useState("from");
|
|
407
|
+
const handleDayClick = React$55.useCallback((day, modifiers, e) => {
|
|
407
408
|
if (props.mode === "range") {
|
|
408
409
|
const range = props.selected;
|
|
409
410
|
if (rangeSelectionStep === "from") {
|
|
@@ -433,8 +434,8 @@ function Calendar({ className, classNames, showOutsideDays = true, captionLayout
|
|
|
433
434
|
fromMonth = props.startMonth ?? new Date(nowYear - 100, 0);
|
|
434
435
|
toMonth = props.endMonth ?? new Date(nowYear + 100, 11);
|
|
435
436
|
}
|
|
436
|
-
const [currentMonth, setCurrentMonth] = React$
|
|
437
|
-
React$
|
|
437
|
+
const [currentMonth, setCurrentMonth] = React$55.useState(props.defaultMonth ?? props.month ?? new Date());
|
|
438
|
+
React$55.useEffect(() => {
|
|
438
439
|
if (props.month) setCurrentMonth(props.month);
|
|
439
440
|
}, [props.month]);
|
|
440
441
|
const addMonths = (date, months) => {
|
|
@@ -578,8 +579,8 @@ function Calendar({ className, classNames, showOutsideDays = true, captionLayout
|
|
|
578
579
|
}
|
|
579
580
|
function CalendarDayButton({ className, day, modifiers,...props }) {
|
|
580
581
|
const defaultClassNames = getDefaultClassNames();
|
|
581
|
-
const ref = React$
|
|
582
|
-
React$
|
|
582
|
+
const ref = React$55.useRef(null);
|
|
583
|
+
React$55.useEffect(() => {
|
|
583
584
|
if (modifiers.focused) ref.current?.focus();
|
|
584
585
|
}, [modifiers.focused]);
|
|
585
586
|
return /* @__PURE__ */ jsx(Button, {
|
|
@@ -598,38 +599,38 @@ function CalendarDayButton({ className, day, modifiers,...props }) {
|
|
|
598
599
|
|
|
599
600
|
//#endregion
|
|
600
601
|
//#region src/card/card.tsx
|
|
601
|
-
const Card = React$
|
|
602
|
+
const Card = React$54.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("div", {
|
|
602
603
|
ref,
|
|
603
604
|
className: cn("rounded-xl border bg-card text-card-foreground shadow", className),
|
|
604
605
|
...props
|
|
605
606
|
}));
|
|
606
607
|
Card.displayName = "Card";
|
|
607
|
-
const CardHeader = React$
|
|
608
|
+
const CardHeader = React$54.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("div", {
|
|
608
609
|
ref,
|
|
609
610
|
className: cn("flex flex-col space-y-1.5 p-6", className),
|
|
610
611
|
...props
|
|
611
612
|
}));
|
|
612
613
|
CardHeader.displayName = "CardHeader";
|
|
613
|
-
const CardTitle = React$
|
|
614
|
+
const CardTitle = React$54.forwardRef(({ className, children,...props }, ref) => /* @__PURE__ */ jsx("h3", {
|
|
614
615
|
ref,
|
|
615
616
|
className: cn("font-semibold leading-none tracking-tight", className),
|
|
616
617
|
...props,
|
|
617
618
|
children
|
|
618
619
|
}));
|
|
619
620
|
CardTitle.displayName = "CardTitle";
|
|
620
|
-
const CardDescription = React$
|
|
621
|
+
const CardDescription = React$54.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("p", {
|
|
621
622
|
ref,
|
|
622
623
|
className: cn("text-sm text-muted-foreground", className),
|
|
623
624
|
...props
|
|
624
625
|
}));
|
|
625
626
|
CardDescription.displayName = "CardDescription";
|
|
626
|
-
const CardContent = React$
|
|
627
|
+
const CardContent = React$54.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("div", {
|
|
627
628
|
ref,
|
|
628
629
|
className: cn("p-6 pt-0", className),
|
|
629
630
|
...props
|
|
630
631
|
}));
|
|
631
632
|
CardContent.displayName = "CardContent";
|
|
632
|
-
const CardFooter = React$
|
|
633
|
+
const CardFooter = React$54.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("div", {
|
|
633
634
|
ref,
|
|
634
635
|
className: cn("flex items-center p-6 pt-0", className),
|
|
635
636
|
...props
|
|
@@ -640,7 +641,7 @@ CardFooter.displayName = "CardFooter";
|
|
|
640
641
|
//#region src/card-hover/card-hover.tsx
|
|
641
642
|
const HoverCard = HoverCardPrimitive.Root;
|
|
642
643
|
const HoverCardTrigger = HoverCardPrimitive.Trigger;
|
|
643
|
-
const HoverCardContent = React$
|
|
644
|
+
const HoverCardContent = React$53.forwardRef(({ className, align = "center", sideOffset = 4,...props }, ref) => /* @__PURE__ */ jsx(HoverCardPrimitive.Content, {
|
|
644
645
|
ref,
|
|
645
646
|
align,
|
|
646
647
|
sideOffset,
|
|
@@ -651,31 +652,31 @@ HoverCardContent.displayName = HoverCardPrimitive.Content.displayName;
|
|
|
651
652
|
|
|
652
653
|
//#endregion
|
|
653
654
|
//#region src/carousel/carousel.tsx
|
|
654
|
-
const CarouselContext = React$
|
|
655
|
+
const CarouselContext = React$52.createContext(null);
|
|
655
656
|
function useCarousel() {
|
|
656
|
-
const context = React$
|
|
657
|
+
const context = React$52.useContext(CarouselContext);
|
|
657
658
|
if (!context) throw new Error("useCarousel must be used within a <Carousel />");
|
|
658
659
|
return context;
|
|
659
660
|
}
|
|
660
|
-
const Carousel = React$
|
|
661
|
+
const Carousel = React$52.forwardRef(({ orientation = "horizontal", opts, setApi, plugins, className, children,...props }, ref) => {
|
|
661
662
|
const [carouselRef, api] = useEmblaCarousel({
|
|
662
663
|
...opts,
|
|
663
664
|
axis: orientation === "horizontal" ? "x" : "y"
|
|
664
665
|
}, plugins);
|
|
665
|
-
const [canScrollPrev, setCanScrollPrev] = React$
|
|
666
|
-
const [canScrollNext, setCanScrollNext] = React$
|
|
667
|
-
const onSelect = React$
|
|
666
|
+
const [canScrollPrev, setCanScrollPrev] = React$52.useState(false);
|
|
667
|
+
const [canScrollNext, setCanScrollNext] = React$52.useState(false);
|
|
668
|
+
const onSelect = React$52.useCallback(() => {
|
|
668
669
|
if (!api) return;
|
|
669
670
|
setCanScrollPrev(api.canScrollPrev());
|
|
670
671
|
setCanScrollNext(api.canScrollNext());
|
|
671
672
|
}, [api]);
|
|
672
|
-
const scrollPrev = React$
|
|
673
|
+
const scrollPrev = React$52.useCallback(() => {
|
|
673
674
|
api?.scrollPrev();
|
|
674
675
|
}, [api]);
|
|
675
|
-
const scrollNext = React$
|
|
676
|
+
const scrollNext = React$52.useCallback(() => {
|
|
676
677
|
api?.scrollNext();
|
|
677
678
|
}, [api]);
|
|
678
|
-
const handleKeyDown = React$
|
|
679
|
+
const handleKeyDown = React$52.useCallback((event) => {
|
|
679
680
|
if (event.key === "ArrowLeft") {
|
|
680
681
|
event.preventDefault();
|
|
681
682
|
scrollPrev();
|
|
@@ -684,11 +685,11 @@ const Carousel = React$51.forwardRef(({ orientation = "horizontal", opts, setApi
|
|
|
684
685
|
scrollNext();
|
|
685
686
|
}
|
|
686
687
|
}, [scrollPrev, scrollNext]);
|
|
687
|
-
React$
|
|
688
|
+
React$52.useEffect(() => {
|
|
688
689
|
if (!api || !setApi) return;
|
|
689
690
|
setApi(api);
|
|
690
691
|
}, [api, setApi]);
|
|
691
|
-
React$
|
|
692
|
+
React$52.useEffect(() => {
|
|
692
693
|
if (!api) return;
|
|
693
694
|
onSelect();
|
|
694
695
|
api.on("reInit", onSelect);
|
|
@@ -729,7 +730,7 @@ const Carousel = React$51.forwardRef(({ orientation = "horizontal", opts, setApi
|
|
|
729
730
|
});
|
|
730
731
|
});
|
|
731
732
|
Carousel.displayName = "Carousel";
|
|
732
|
-
const CarouselContent = React$
|
|
733
|
+
const CarouselContent = React$52.forwardRef(({ className,...props }, ref) => {
|
|
733
734
|
const { carouselRef, orientation } = useCarousel();
|
|
734
735
|
return /* @__PURE__ */ jsx("div", {
|
|
735
736
|
ref: carouselRef,
|
|
@@ -742,7 +743,7 @@ const CarouselContent = React$51.forwardRef(({ className,...props }, ref) => {
|
|
|
742
743
|
});
|
|
743
744
|
});
|
|
744
745
|
CarouselContent.displayName = "CarouselContent";
|
|
745
|
-
const CarouselItem = React$
|
|
746
|
+
const CarouselItem = React$52.forwardRef(({ className,...props }, ref) => {
|
|
746
747
|
const { orientation } = useCarousel();
|
|
747
748
|
return /* @__PURE__ */ jsx("div", {
|
|
748
749
|
ref,
|
|
@@ -752,7 +753,7 @@ const CarouselItem = React$51.forwardRef(({ className,...props }, ref) => {
|
|
|
752
753
|
});
|
|
753
754
|
});
|
|
754
755
|
CarouselItem.displayName = "CarouselItem";
|
|
755
|
-
const CarouselPrevious = React$
|
|
756
|
+
const CarouselPrevious = React$52.forwardRef(({ className, variant = "outline", size = "icon",...props }, ref) => {
|
|
756
757
|
const { orientation, scrollPrev, canScrollPrev } = useCarousel();
|
|
757
758
|
return /* @__PURE__ */ jsxs(Button, {
|
|
758
759
|
ref,
|
|
@@ -769,7 +770,7 @@ const CarouselPrevious = React$51.forwardRef(({ className, variant = "outline",
|
|
|
769
770
|
});
|
|
770
771
|
});
|
|
771
772
|
CarouselPrevious.displayName = "CarouselPrevious";
|
|
772
|
-
const CarouselNext = React$
|
|
773
|
+
const CarouselNext = React$52.forwardRef(({ className, variant = "outline", size = "icon",...props }, ref) => {
|
|
773
774
|
const { orientation, scrollNext, canScrollNext } = useCarousel();
|
|
774
775
|
return /* @__PURE__ */ jsxs(Button, {
|
|
775
776
|
ref,
|
|
@@ -1219,7 +1220,7 @@ function DialogDescription({ className,...props }) {
|
|
|
1219
1220
|
|
|
1220
1221
|
//#endregion
|
|
1221
1222
|
//#region src/command-palette/command-palette.tsx
|
|
1222
|
-
const CommandPalette = React$
|
|
1223
|
+
const CommandPalette = React$51.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(Command$1, {
|
|
1223
1224
|
ref,
|
|
1224
1225
|
className: cn("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground", className),
|
|
1225
1226
|
...props
|
|
@@ -1237,7 +1238,7 @@ const CommandPaletteDialog = ({ children,...props }) => {
|
|
|
1237
1238
|
})
|
|
1238
1239
|
});
|
|
1239
1240
|
};
|
|
1240
|
-
const CommandPaletteInput = React$
|
|
1241
|
+
const CommandPaletteInput = React$51.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsxs("div", {
|
|
1241
1242
|
className: "flex items-center border-b px-3",
|
|
1242
1243
|
"data-cmdk-input-wrapper": "",
|
|
1243
1244
|
children: [/* @__PURE__ */ jsx(MagnifyingGlassIcon, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }), /* @__PURE__ */ jsx(Command$1.Input, {
|
|
@@ -1247,31 +1248,31 @@ const CommandPaletteInput = React$50.forwardRef(({ className,...props }, ref) =>
|
|
|
1247
1248
|
})]
|
|
1248
1249
|
}));
|
|
1249
1250
|
CommandPaletteInput.displayName = Command$1.Input.displayName;
|
|
1250
|
-
const CommandPaletteList = React$
|
|
1251
|
+
const CommandPaletteList = React$51.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(Command$1.List, {
|
|
1251
1252
|
ref,
|
|
1252
1253
|
className: cn("max-h-[300px] overflow-y-auto overflow-x-hidden", className),
|
|
1253
1254
|
...props
|
|
1254
1255
|
}));
|
|
1255
1256
|
CommandPaletteList.displayName = Command$1.List.displayName;
|
|
1256
|
-
const CommandPaletteEmpty = React$
|
|
1257
|
+
const CommandPaletteEmpty = React$51.forwardRef((props, ref) => /* @__PURE__ */ jsx(Command$1.Empty, {
|
|
1257
1258
|
ref,
|
|
1258
1259
|
className: "py-6 text-center text-sm",
|
|
1259
1260
|
...props
|
|
1260
1261
|
}));
|
|
1261
1262
|
CommandPaletteEmpty.displayName = Command$1.Empty.displayName;
|
|
1262
|
-
const CommandPaletteGroup = React$
|
|
1263
|
+
const CommandPaletteGroup = React$51.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(Command$1.Group, {
|
|
1263
1264
|
ref,
|
|
1264
1265
|
className: cn("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground", className),
|
|
1265
1266
|
...props
|
|
1266
1267
|
}));
|
|
1267
1268
|
CommandPaletteGroup.displayName = Command$1.Group.displayName;
|
|
1268
|
-
const CommandPaletteSeparator = React$
|
|
1269
|
+
const CommandPaletteSeparator = React$51.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(Command$1.Separator, {
|
|
1269
1270
|
ref,
|
|
1270
1271
|
className: cn("-mx-1 h-px bg-border", className),
|
|
1271
1272
|
...props
|
|
1272
1273
|
}));
|
|
1273
1274
|
CommandPaletteSeparator.displayName = Command$1.Separator.displayName;
|
|
1274
|
-
const CommandPaletteItem = React$
|
|
1275
|
+
const CommandPaletteItem = React$51.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(Command$1.Item, {
|
|
1275
1276
|
ref,
|
|
1276
1277
|
className: cn("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50", className),
|
|
1277
1278
|
...props
|
|
@@ -1347,8 +1348,8 @@ const frameworks = [
|
|
|
1347
1348
|
}
|
|
1348
1349
|
];
|
|
1349
1350
|
function ComboboxDemo() {
|
|
1350
|
-
const [open, setOpen] = React$
|
|
1351
|
-
const [value, setValue] = React$
|
|
1351
|
+
const [open, setOpen] = React$50.useState(false);
|
|
1352
|
+
const [value, setValue] = React$50.useState("");
|
|
1352
1353
|
return /* @__PURE__ */ jsxs(Popover, {
|
|
1353
1354
|
open,
|
|
1354
1355
|
onOpenChange: setOpen,
|
|
@@ -1588,32 +1589,32 @@ const ContextMenuGroup = ContextMenuPrimitive.Group;
|
|
|
1588
1589
|
const ContextMenuPortal = ContextMenuPrimitive.Portal;
|
|
1589
1590
|
const ContextMenuSub = ContextMenuPrimitive.Sub;
|
|
1590
1591
|
const ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;
|
|
1591
|
-
const ContextMenuSubTrigger = React$
|
|
1592
|
+
const ContextMenuSubTrigger = React$49.forwardRef(({ className, inset, children,...props }, ref) => /* @__PURE__ */ jsxs(ContextMenuPrimitive.SubTrigger, {
|
|
1592
1593
|
ref,
|
|
1593
1594
|
className: cn("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground", inset && "pl-8", className),
|
|
1594
1595
|
...props,
|
|
1595
1596
|
children: [children, /* @__PURE__ */ jsx(ChevronRightIcon, { className: "ml-auto h-4 w-4" })]
|
|
1596
1597
|
}));
|
|
1597
1598
|
ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;
|
|
1598
|
-
const ContextMenuSubContent = React$
|
|
1599
|
+
const ContextMenuSubContent = React$49.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(ContextMenuPrimitive.SubContent, {
|
|
1599
1600
|
ref,
|
|
1600
1601
|
className: cn("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", className),
|
|
1601
1602
|
...props
|
|
1602
1603
|
}));
|
|
1603
1604
|
ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;
|
|
1604
|
-
const ContextMenuContent = React$
|
|
1605
|
+
const ContextMenuContent = React$49.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(ContextMenuPrimitive.Content, {
|
|
1605
1606
|
ref,
|
|
1606
1607
|
className: cn("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", className),
|
|
1607
1608
|
...props
|
|
1608
1609
|
}) }));
|
|
1609
1610
|
ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;
|
|
1610
|
-
const ContextMenuItem = React$
|
|
1611
|
+
const ContextMenuItem = React$49.forwardRef(({ className, inset,...props }, ref) => /* @__PURE__ */ jsx(ContextMenuPrimitive.Item, {
|
|
1611
1612
|
ref,
|
|
1612
1613
|
className: cn("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50", inset && "pl-8", className),
|
|
1613
1614
|
...props
|
|
1614
1615
|
}));
|
|
1615
1616
|
ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;
|
|
1616
|
-
const ContextMenuCheckboxItem = React$
|
|
1617
|
+
const ContextMenuCheckboxItem = React$49.forwardRef(({ className, children, checked,...props }, ref) => /* @__PURE__ */ jsxs(ContextMenuPrimitive.CheckboxItem, {
|
|
1617
1618
|
ref,
|
|
1618
1619
|
className: cn("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50", className),
|
|
1619
1620
|
checked,
|
|
@@ -1624,7 +1625,7 @@ const ContextMenuCheckboxItem = React$48.forwardRef(({ className, children, chec
|
|
|
1624
1625
|
}), children]
|
|
1625
1626
|
}));
|
|
1626
1627
|
ContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName;
|
|
1627
|
-
const ContextMenuRadioItem = React$
|
|
1628
|
+
const ContextMenuRadioItem = React$49.forwardRef(({ className, children,...props }, ref) => /* @__PURE__ */ jsxs(ContextMenuPrimitive.RadioItem, {
|
|
1628
1629
|
ref,
|
|
1629
1630
|
className: cn("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50", className),
|
|
1630
1631
|
...props,
|
|
@@ -1634,13 +1635,13 @@ const ContextMenuRadioItem = React$48.forwardRef(({ className, children,...props
|
|
|
1634
1635
|
}), children]
|
|
1635
1636
|
}));
|
|
1636
1637
|
ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;
|
|
1637
|
-
const ContextMenuLabel = React$
|
|
1638
|
+
const ContextMenuLabel = React$49.forwardRef(({ className, inset,...props }, ref) => /* @__PURE__ */ jsx(ContextMenuPrimitive.Label, {
|
|
1638
1639
|
ref,
|
|
1639
1640
|
className: cn("px-2 py-1.5 text-sm font-semibold text-foreground", inset && "pl-8", className),
|
|
1640
1641
|
...props
|
|
1641
1642
|
}));
|
|
1642
1643
|
ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;
|
|
1643
|
-
const ContextMenuSeparator = React$
|
|
1644
|
+
const ContextMenuSeparator = React$49.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(ContextMenuPrimitive.Separator, {
|
|
1644
1645
|
ref,
|
|
1645
1646
|
className: cn("-mx-1 my-1 h-px bg-border", className),
|
|
1646
1647
|
...props
|
|
@@ -1785,7 +1786,7 @@ function DropdownMenuSubContent({ className,...props }) {
|
|
|
1785
1786
|
const TooltipProvider = TooltipPrimitive.Provider;
|
|
1786
1787
|
const Tooltip = TooltipPrimitive.Root;
|
|
1787
1788
|
const TooltipTrigger = TooltipPrimitive.Trigger;
|
|
1788
|
-
const TooltipContent = React$
|
|
1789
|
+
const TooltipContent = React$48.forwardRef(({ className, sideOffset = 4,...props }, ref) => /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx(TooltipPrimitive.Content, {
|
|
1789
1790
|
ref,
|
|
1790
1791
|
sideOffset,
|
|
1791
1792
|
className: cn("z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", className),
|
|
@@ -2270,7 +2271,7 @@ const inputVariants = cva("file:text-foreground placeholder:text-muted-foregroun
|
|
|
2270
2271
|
} },
|
|
2271
2272
|
defaultVariants: { variant: "default" }
|
|
2272
2273
|
});
|
|
2273
|
-
const Input = React$
|
|
2274
|
+
const Input = React$47.forwardRef(({ className, type, variant, __e2e_test_id__, onEnter, wrapperClassName,...props }, ref) => {
|
|
2274
2275
|
const input = /* @__PURE__ */ jsx("input", {
|
|
2275
2276
|
type,
|
|
2276
2277
|
"data-slot": "input",
|
|
@@ -2352,10 +2353,10 @@ const numberInputWrapperVariants = cva("border-input bg-background grid grid-col
|
|
|
2352
2353
|
} },
|
|
2353
2354
|
defaultVariants: { variant: "default" }
|
|
2354
2355
|
});
|
|
2355
|
-
const NumberInput = React$
|
|
2356
|
-
const [isFocused, setIsFocused] = React$
|
|
2357
|
-
const [inputString, setInputString] = React$
|
|
2358
|
-
const intlFormatter = React$
|
|
2356
|
+
const NumberInput = React$46.forwardRef(({ className, wrapperClassName, prefix, suffix, variant, showSpinButtons = false, __e2e_test_id__, onEnter, onChange, format: format$1, value: controlledValue,...props }, ref) => {
|
|
2357
|
+
const [isFocused, setIsFocused] = React$46.useState(false);
|
|
2358
|
+
const [inputString, setInputString] = React$46.useState("");
|
|
2359
|
+
const intlFormatter = React$46.useMemo(() => {
|
|
2359
2360
|
if (!format$1 || typeof format$1 === "function") return void 0;
|
|
2360
2361
|
return new Intl.NumberFormat(format$1.locale, format$1.options);
|
|
2361
2362
|
}, [format$1]);
|
|
@@ -2402,7 +2403,7 @@ const NumberInput = React$45.forwardRef(({ className, wrapperClassName, prefix,
|
|
|
2402
2403
|
setInputString("");
|
|
2403
2404
|
props.onBlur?.(e);
|
|
2404
2405
|
};
|
|
2405
|
-
const displayValue = React$
|
|
2406
|
+
const displayValue = React$46.useMemo(() => {
|
|
2406
2407
|
if (isFocused && format$1) {
|
|
2407
2408
|
if (inputString !== "") return inputString;
|
|
2408
2409
|
if (controlledValue !== void 0) {
|
|
@@ -2479,26 +2480,26 @@ function DataGridCellWrapper({ cell, table, rowIndex, columnId, isEditing, isFoc
|
|
|
2479
2480
|
const rowOriginal = cell?.row?.original ?? {};
|
|
2480
2481
|
const colCellMeta = cell?.column?.columnDef?.meta;
|
|
2481
2482
|
const align = colCellMeta?.align ?? "left";
|
|
2482
|
-
const editableResolver = React$
|
|
2483
|
+
const editableResolver = React$45.useMemo(() => {
|
|
2483
2484
|
const v = colCellMeta?.editable;
|
|
2484
2485
|
if (v === void 0) return () => true;
|
|
2485
2486
|
return typeof v === "function" ? v : () => Boolean(v);
|
|
2486
2487
|
}, [colCellMeta?.editable]);
|
|
2487
2488
|
const isEditable = editableResolver(rowOriginal);
|
|
2488
|
-
const classNameResolver = React$
|
|
2489
|
+
const classNameResolver = React$45.useMemo(() => {
|
|
2489
2490
|
const v = colCellMeta?.className;
|
|
2490
2491
|
return typeof v === "function" ? v : () => v;
|
|
2491
2492
|
}, [colCellMeta?.className]);
|
|
2492
2493
|
const colCellClassName = classNameResolver(rowOriginal);
|
|
2493
2494
|
const rowClassNameMeta = meta?.rowClassName;
|
|
2494
|
-
const rowCellClassName = React$
|
|
2495
|
+
const rowCellClassName = React$45.useMemo(() => {
|
|
2495
2496
|
if (!rowClassNameMeta) return void 0;
|
|
2496
2497
|
if (typeof rowClassNameMeta === "function") return rowClassNameMeta(cell.row);
|
|
2497
2498
|
return rowClassNameMeta;
|
|
2498
2499
|
}, [rowClassNameMeta, cell.row]);
|
|
2499
2500
|
const isSearchMatch = meta?.getIsSearchMatch?.(rowIndex, columnId) ?? false;
|
|
2500
2501
|
const isActiveSearchMatch = meta?.getIsActiveSearchMatch?.(rowIndex, columnId) ?? false;
|
|
2501
|
-
const onClick = React$
|
|
2502
|
+
const onClick = React$45.useCallback((event) => {
|
|
2502
2503
|
if (!isEditing) {
|
|
2503
2504
|
event.preventDefault();
|
|
2504
2505
|
onClickProp?.(event);
|
|
@@ -2511,7 +2512,7 @@ function DataGridCellWrapper({ cell, table, rowIndex, columnId, isEditing, isFoc
|
|
|
2511
2512
|
isEditing,
|
|
2512
2513
|
onClickProp
|
|
2513
2514
|
]);
|
|
2514
|
-
const onContextMenu = React$
|
|
2515
|
+
const onContextMenu = React$45.useCallback((event) => {
|
|
2515
2516
|
if (!isEditing) meta?.onCellContextMenu?.(rowIndex, columnId, event);
|
|
2516
2517
|
}, [
|
|
2517
2518
|
meta,
|
|
@@ -2519,7 +2520,7 @@ function DataGridCellWrapper({ cell, table, rowIndex, columnId, isEditing, isFoc
|
|
|
2519
2520
|
columnId,
|
|
2520
2521
|
isEditing
|
|
2521
2522
|
]);
|
|
2522
|
-
const onMouseDown = React$
|
|
2523
|
+
const onMouseDown = React$45.useCallback((event) => {
|
|
2523
2524
|
if (!isEditing) meta?.onCellMouseDown?.(rowIndex, columnId, event);
|
|
2524
2525
|
}, [
|
|
2525
2526
|
meta,
|
|
@@ -2527,7 +2528,7 @@ function DataGridCellWrapper({ cell, table, rowIndex, columnId, isEditing, isFoc
|
|
|
2527
2528
|
columnId,
|
|
2528
2529
|
isEditing
|
|
2529
2530
|
]);
|
|
2530
|
-
const onMouseEnter = React$
|
|
2531
|
+
const onMouseEnter = React$45.useCallback((event) => {
|
|
2531
2532
|
if (!isEditing) meta?.onCellMouseEnter?.(rowIndex, columnId, event);
|
|
2532
2533
|
}, [
|
|
2533
2534
|
meta,
|
|
@@ -2535,10 +2536,10 @@ function DataGridCellWrapper({ cell, table, rowIndex, columnId, isEditing, isFoc
|
|
|
2535
2536
|
columnId,
|
|
2536
2537
|
isEditing
|
|
2537
2538
|
]);
|
|
2538
|
-
const onMouseUp = React$
|
|
2539
|
+
const onMouseUp = React$45.useCallback(() => {
|
|
2539
2540
|
if (!isEditing) meta?.onCellMouseUp?.();
|
|
2540
2541
|
}, [meta, isEditing]);
|
|
2541
|
-
const onDoubleClick = React$
|
|
2542
|
+
const onDoubleClick = React$45.useCallback((event) => {
|
|
2542
2543
|
if (!isEditing) {
|
|
2543
2544
|
event.preventDefault();
|
|
2544
2545
|
if (isEditable) meta?.onCellDoubleClick?.(rowIndex, columnId);
|
|
@@ -2550,7 +2551,7 @@ function DataGridCellWrapper({ cell, table, rowIndex, columnId, isEditing, isFoc
|
|
|
2550
2551
|
isEditing,
|
|
2551
2552
|
isEditable
|
|
2552
2553
|
]);
|
|
2553
|
-
const onKeyDown = React$
|
|
2554
|
+
const onKeyDown = React$45.useCallback((event) => {
|
|
2554
2555
|
onKeyDownProp?.(event);
|
|
2555
2556
|
if (event.defaultPrevented) return;
|
|
2556
2557
|
if (event.key === "ArrowUp" || event.key === "ArrowDown" || event.key === "ArrowLeft" || event.key === "ArrowRight" || event.key === "Home" || event.key === "End" || event.key === "PageUp" || event.key === "PageDown" || event.key === "Enter" || event.key === "Tab") return;
|
|
@@ -2764,22 +2765,22 @@ function HierarchyItem({ option, selectedValue, expandedIds, onToggleExpand, onS
|
|
|
2764
2765
|
}
|
|
2765
2766
|
function HierarchyCell({ cell, table, rowIndex, columnId, isFocused, isEditing, isSelected }) {
|
|
2766
2767
|
const initialValue = cell.getValue();
|
|
2767
|
-
const [value, setValue] = React$
|
|
2768
|
-
const [open, setOpen] = React$
|
|
2769
|
-
const [searchValue, setSearchValue] = React$
|
|
2770
|
-
const containerRef = React$
|
|
2771
|
-
const inputRef = React$
|
|
2768
|
+
const [value, setValue] = React$44.useState(initialValue);
|
|
2769
|
+
const [open, setOpen] = React$44.useState(false);
|
|
2770
|
+
const [searchValue, setSearchValue] = React$44.useState("");
|
|
2771
|
+
const containerRef = React$44.useRef(null);
|
|
2772
|
+
const inputRef = React$44.useRef(null);
|
|
2772
2773
|
const meta = table.options.meta;
|
|
2773
2774
|
const cellOpts = cell.column.columnDef.meta?.cell;
|
|
2774
2775
|
const sideOffset = -(containerRef.current?.clientHeight ?? 0);
|
|
2775
2776
|
const options = cellOpts?.variant === "hierarchy" ? cellOpts.options : [];
|
|
2776
|
-
const [expandedIds, setExpandedIds] = React$
|
|
2777
|
-
const labelMap = React$
|
|
2778
|
-
const displayLabel = React$
|
|
2777
|
+
const [expandedIds, setExpandedIds] = React$44.useState(() => getInitialExpandedIds(options, initialValue));
|
|
2778
|
+
const labelMap = React$44.useMemo(() => buildLabelMap(options), [options]);
|
|
2779
|
+
const displayLabel = React$44.useMemo(() => {
|
|
2779
2780
|
if (!value) return "";
|
|
2780
2781
|
return labelMap.get(value) ?? value;
|
|
2781
2782
|
}, [value, labelMap]);
|
|
2782
|
-
const toggleExpand = React$
|
|
2783
|
+
const toggleExpand = React$44.useCallback((id) => {
|
|
2783
2784
|
setExpandedIds((prev) => {
|
|
2784
2785
|
const next = new Set(prev);
|
|
2785
2786
|
if (next.has(id)) next.delete(id);
|
|
@@ -2787,7 +2788,7 @@ function HierarchyCell({ cell, table, rowIndex, columnId, isFocused, isEditing,
|
|
|
2787
2788
|
return next;
|
|
2788
2789
|
});
|
|
2789
2790
|
}, []);
|
|
2790
|
-
const onOptionSelect = React$
|
|
2791
|
+
const onOptionSelect = React$44.useCallback((option) => {
|
|
2791
2792
|
const newValue = option.id;
|
|
2792
2793
|
setValue(newValue);
|
|
2793
2794
|
meta?.onDataUpdate?.({
|
|
@@ -2802,18 +2803,18 @@ function HierarchyCell({ cell, table, rowIndex, columnId, isFocused, isEditing,
|
|
|
2802
2803
|
rowIndex,
|
|
2803
2804
|
columnId
|
|
2804
2805
|
]);
|
|
2805
|
-
const onOpenChange = React$
|
|
2806
|
+
const onOpenChange = React$44.useCallback((isOpen) => {
|
|
2806
2807
|
setOpen(isOpen);
|
|
2807
2808
|
if (!isOpen) {
|
|
2808
2809
|
setSearchValue("");
|
|
2809
2810
|
meta?.onCellEditingStop?.();
|
|
2810
2811
|
}
|
|
2811
2812
|
}, [meta]);
|
|
2812
|
-
const onOpenAutoFocus = React$
|
|
2813
|
+
const onOpenAutoFocus = React$44.useCallback((event) => {
|
|
2813
2814
|
event.preventDefault();
|
|
2814
2815
|
inputRef.current?.focus();
|
|
2815
2816
|
}, []);
|
|
2816
|
-
const onWrapperKeyDown = React$
|
|
2817
|
+
const onWrapperKeyDown = React$44.useCallback((event) => {
|
|
2817
2818
|
if (isEditing) {
|
|
2818
2819
|
if (event.key === "Escape") {
|
|
2819
2820
|
event.preventDefault();
|
|
@@ -2833,10 +2834,10 @@ function HierarchyCell({ cell, table, rowIndex, columnId, isFocused, isEditing,
|
|
|
2833
2834
|
initialValue,
|
|
2834
2835
|
meta
|
|
2835
2836
|
]);
|
|
2836
|
-
React$
|
|
2837
|
+
React$44.useEffect(() => {
|
|
2837
2838
|
setValue(initialValue);
|
|
2838
2839
|
}, [initialValue]);
|
|
2839
|
-
React$
|
|
2840
|
+
React$44.useEffect(() => {
|
|
2840
2841
|
if (value) {
|
|
2841
2842
|
const ancestors = getAncestorIds(options, value);
|
|
2842
2843
|
if (ancestors && ancestors.length > 0) setExpandedIds((prev) => {
|
|
@@ -2846,7 +2847,7 @@ function HierarchyCell({ cell, table, rowIndex, columnId, isFocused, isEditing,
|
|
|
2846
2847
|
});
|
|
2847
2848
|
}
|
|
2848
2849
|
}, [value, options]);
|
|
2849
|
-
React$
|
|
2850
|
+
React$44.useEffect(() => {
|
|
2850
2851
|
if (isEditing && !open) setOpen(true);
|
|
2851
2852
|
if (isFocused && !isEditing && !meta?.searchOpen && !meta?.isScrolling && containerRef.current) containerRef.current.focus();
|
|
2852
2853
|
}, [
|
|
@@ -2944,9 +2945,9 @@ function EditorFooter({ count, onApply, onCancel }) {
|
|
|
2944
2945
|
});
|
|
2945
2946
|
}
|
|
2946
2947
|
function BulkEditShortText({ columnId, selectedRowIndices, onApply, onCancel }) {
|
|
2947
|
-
const [value, setValue] = React$
|
|
2948
|
-
const inputRef = React$
|
|
2949
|
-
const handleApply = React$
|
|
2948
|
+
const [value, setValue] = React$43.useState("");
|
|
2949
|
+
const inputRef = React$43.useRef(null);
|
|
2950
|
+
const handleApply = React$43.useCallback(() => {
|
|
2950
2951
|
onApply(selectedRowIndices.map((rowIndex) => ({
|
|
2951
2952
|
rowIndex,
|
|
2952
2953
|
columnId,
|
|
@@ -2958,14 +2959,14 @@ function BulkEditShortText({ columnId, selectedRowIndices, onApply, onCancel })
|
|
|
2958
2959
|
value,
|
|
2959
2960
|
onApply
|
|
2960
2961
|
]);
|
|
2961
|
-
const onKeyDown = React$
|
|
2962
|
+
const onKeyDown = React$43.useCallback((e) => {
|
|
2962
2963
|
stopGridKeys(e);
|
|
2963
2964
|
if (e.key === "Enter") {
|
|
2964
2965
|
e.preventDefault();
|
|
2965
2966
|
handleApply();
|
|
2966
2967
|
}
|
|
2967
2968
|
}, [handleApply]);
|
|
2968
|
-
React$
|
|
2969
|
+
React$43.useEffect(() => {
|
|
2969
2970
|
inputRef.current?.focus();
|
|
2970
2971
|
}, []);
|
|
2971
2972
|
return /* @__PURE__ */ jsxs("div", {
|
|
@@ -2987,9 +2988,9 @@ function BulkEditShortText({ columnId, selectedRowIndices, onApply, onCancel })
|
|
|
2987
2988
|
});
|
|
2988
2989
|
}
|
|
2989
2990
|
function BulkEditLongText({ columnId, selectedRowIndices, onApply, onCancel }) {
|
|
2990
|
-
const [value, setValue] = React$
|
|
2991
|
-
const textareaRef = React$
|
|
2992
|
-
const handleApply = React$
|
|
2991
|
+
const [value, setValue] = React$43.useState("");
|
|
2992
|
+
const textareaRef = React$43.useRef(null);
|
|
2993
|
+
const handleApply = React$43.useCallback(() => {
|
|
2993
2994
|
onApply(selectedRowIndices.map((rowIndex) => ({
|
|
2994
2995
|
rowIndex,
|
|
2995
2996
|
columnId,
|
|
@@ -3001,14 +3002,14 @@ function BulkEditLongText({ columnId, selectedRowIndices, onApply, onCancel }) {
|
|
|
3001
3002
|
value,
|
|
3002
3003
|
onApply
|
|
3003
3004
|
]);
|
|
3004
|
-
const onKeyDown = React$
|
|
3005
|
+
const onKeyDown = React$43.useCallback((e) => {
|
|
3005
3006
|
stopGridKeys(e);
|
|
3006
3007
|
if ((e.ctrlKey || e.metaKey) && e.key === "Enter") {
|
|
3007
3008
|
e.preventDefault();
|
|
3008
3009
|
handleApply();
|
|
3009
3010
|
}
|
|
3010
3011
|
}, [handleApply]);
|
|
3011
|
-
React$
|
|
3012
|
+
React$43.useEffect(() => {
|
|
3012
3013
|
textareaRef.current?.focus();
|
|
3013
3014
|
}, []);
|
|
3014
3015
|
return /* @__PURE__ */ jsxs("div", {
|
|
@@ -3031,12 +3032,12 @@ function BulkEditLongText({ columnId, selectedRowIndices, onApply, onCancel }) {
|
|
|
3031
3032
|
});
|
|
3032
3033
|
}
|
|
3033
3034
|
function BulkEditNumber({ cell, columnId, selectedRowIndices, onApply, onCancel }) {
|
|
3034
|
-
const [value, setValue] = React$
|
|
3035
|
-
const inputRef = React$
|
|
3035
|
+
const [value, setValue] = React$43.useState(void 0);
|
|
3036
|
+
const inputRef = React$43.useRef(null);
|
|
3036
3037
|
const { min, max, step, prefix, suffix } = cell.variant === "number" ? cell : {};
|
|
3037
3038
|
const stringPrefix = typeof prefix === "string" ? prefix : void 0;
|
|
3038
3039
|
const stringSuffix = typeof suffix === "string" ? suffix : void 0;
|
|
3039
|
-
const handleApply = React$
|
|
3040
|
+
const handleApply = React$43.useCallback(() => {
|
|
3040
3041
|
const numValue = value ?? null;
|
|
3041
3042
|
onApply(selectedRowIndices.map((rowIndex) => ({
|
|
3042
3043
|
rowIndex,
|
|
@@ -3049,14 +3050,14 @@ function BulkEditNumber({ cell, columnId, selectedRowIndices, onApply, onCancel
|
|
|
3049
3050
|
value,
|
|
3050
3051
|
onApply
|
|
3051
3052
|
]);
|
|
3052
|
-
const onKeyDown = React$
|
|
3053
|
+
const onKeyDown = React$43.useCallback((e) => {
|
|
3053
3054
|
stopGridKeys(e);
|
|
3054
3055
|
if (e.key === "Enter") {
|
|
3055
3056
|
e.preventDefault();
|
|
3056
3057
|
handleApply();
|
|
3057
3058
|
}
|
|
3058
3059
|
}, [handleApply]);
|
|
3059
|
-
React$
|
|
3060
|
+
React$43.useEffect(() => {
|
|
3060
3061
|
inputRef.current?.focus();
|
|
3061
3062
|
}, []);
|
|
3062
3063
|
return /* @__PURE__ */ jsxs("div", {
|
|
@@ -3085,8 +3086,8 @@ function BulkEditNumber({ cell, columnId, selectedRowIndices, onApply, onCancel
|
|
|
3085
3086
|
}
|
|
3086
3087
|
function BulkEditSelect({ cell, columnId, selectedRowIndices, onApply, onCancel }) {
|
|
3087
3088
|
const { options: arrayOptions, optionsMap, optionsRenderer } = cell.variant === "select" ? cell : {};
|
|
3088
|
-
const inputRef = React$
|
|
3089
|
-
const options = React$
|
|
3089
|
+
const inputRef = React$43.useRef(null);
|
|
3090
|
+
const options = React$43.useMemo(() => {
|
|
3090
3091
|
if (arrayOptions) return arrayOptions.map((opt) => ({
|
|
3091
3092
|
value: opt.value,
|
|
3092
3093
|
data: opt.label
|
|
@@ -3097,7 +3098,7 @@ function BulkEditSelect({ cell, columnId, selectedRowIndices, onApply, onCancel
|
|
|
3097
3098
|
}));
|
|
3098
3099
|
return [];
|
|
3099
3100
|
}, [arrayOptions, optionsMap]);
|
|
3100
|
-
const handleSelect = React$
|
|
3101
|
+
const handleSelect = React$43.useCallback((newValue) => {
|
|
3101
3102
|
onApply(selectedRowIndices.map((rowIndex) => ({
|
|
3102
3103
|
rowIndex,
|
|
3103
3104
|
columnId,
|
|
@@ -3108,7 +3109,7 @@ function BulkEditSelect({ cell, columnId, selectedRowIndices, onApply, onCancel
|
|
|
3108
3109
|
columnId,
|
|
3109
3110
|
onApply
|
|
3110
3111
|
]);
|
|
3111
|
-
React$
|
|
3112
|
+
React$43.useEffect(() => {
|
|
3112
3113
|
inputRef.current?.focus();
|
|
3113
3114
|
}, []);
|
|
3114
3115
|
return /* @__PURE__ */ jsxs("div", {
|
|
@@ -3132,10 +3133,10 @@ function BulkEditSelect({ cell, columnId, selectedRowIndices, onApply, onCancel
|
|
|
3132
3133
|
}
|
|
3133
3134
|
function BulkEditMultiSelect({ cell, columnId, selectedRowIndices, onApply, onCancel }) {
|
|
3134
3135
|
const { options: arrayOptions, optionsMap } = cell.variant === "multi-select" ? cell : {};
|
|
3135
|
-
const [selectedValues, setSelectedValues] = React$
|
|
3136
|
-
const [searchValue, setSearchValue] = React$
|
|
3137
|
-
const inputRef = React$
|
|
3138
|
-
const options = React$
|
|
3136
|
+
const [selectedValues, setSelectedValues] = React$43.useState([]);
|
|
3137
|
+
const [searchValue, setSearchValue] = React$43.useState("");
|
|
3138
|
+
const inputRef = React$43.useRef(null);
|
|
3139
|
+
const options = React$43.useMemo(() => {
|
|
3139
3140
|
if (arrayOptions) return arrayOptions;
|
|
3140
3141
|
if (optionsMap) return Array.from(optionsMap.entries()).map(([id, label]) => ({
|
|
3141
3142
|
value: id,
|
|
@@ -3143,12 +3144,12 @@ function BulkEditMultiSelect({ cell, columnId, selectedRowIndices, onApply, onCa
|
|
|
3143
3144
|
}));
|
|
3144
3145
|
return [];
|
|
3145
3146
|
}, [arrayOptions, optionsMap]);
|
|
3146
|
-
const toggleValue = React$
|
|
3147
|
+
const toggleValue = React$43.useCallback((value) => {
|
|
3147
3148
|
setSelectedValues((prev) => prev.includes(value) ? prev.filter((v) => v !== value) : [...prev, value]);
|
|
3148
3149
|
setSearchValue("");
|
|
3149
3150
|
queueMicrotask(() => inputRef.current?.focus());
|
|
3150
3151
|
}, []);
|
|
3151
|
-
const handleApply = React$
|
|
3152
|
+
const handleApply = React$43.useCallback(() => {
|
|
3152
3153
|
onApply(selectedRowIndices.map((rowIndex) => ({
|
|
3153
3154
|
rowIndex,
|
|
3154
3155
|
columnId,
|
|
@@ -3160,7 +3161,7 @@ function BulkEditMultiSelect({ cell, columnId, selectedRowIndices, onApply, onCa
|
|
|
3160
3161
|
selectedValues,
|
|
3161
3162
|
onApply
|
|
3162
3163
|
]);
|
|
3163
|
-
React$
|
|
3164
|
+
React$43.useEffect(() => {
|
|
3164
3165
|
inputRef.current?.focus();
|
|
3165
3166
|
}, []);
|
|
3166
3167
|
return /* @__PURE__ */ jsxs("div", {
|
|
@@ -3226,7 +3227,7 @@ function BulkEditMultiSelect({ cell, columnId, selectedRowIndices, onApply, onCa
|
|
|
3226
3227
|
});
|
|
3227
3228
|
}
|
|
3228
3229
|
function BulkEditCheckbox({ columnId, selectedRowIndices, onApply, onCancel }) {
|
|
3229
|
-
const setAll = React$
|
|
3230
|
+
const setAll = React$43.useCallback((val) => {
|
|
3230
3231
|
onApply(selectedRowIndices.map((rowIndex) => ({
|
|
3231
3232
|
rowIndex,
|
|
3232
3233
|
columnId,
|
|
@@ -3263,10 +3264,10 @@ function BulkEditCheckbox({ columnId, selectedRowIndices, onApply, onCancel }) {
|
|
|
3263
3264
|
}
|
|
3264
3265
|
function BulkEditHierarchy({ cell, columnId, selectedRowIndices, onApply, onCancel }) {
|
|
3265
3266
|
const options = cell.variant === "hierarchy" ? cell.options : [];
|
|
3266
|
-
const inputRef = React$
|
|
3267
|
-
const [searchValue, setSearchValue] = React$
|
|
3268
|
-
const [expandedIds, setExpandedIds] = React$
|
|
3269
|
-
const toggleExpand = React$
|
|
3267
|
+
const inputRef = React$43.useRef(null);
|
|
3268
|
+
const [searchValue, setSearchValue] = React$43.useState("");
|
|
3269
|
+
const [expandedIds, setExpandedIds] = React$43.useState(() => getInitialExpandedIds(options, null));
|
|
3270
|
+
const toggleExpand = React$43.useCallback((id) => {
|
|
3270
3271
|
setExpandedIds((prev) => {
|
|
3271
3272
|
const next = new Set(prev);
|
|
3272
3273
|
if (next.has(id)) next.delete(id);
|
|
@@ -3274,7 +3275,7 @@ function BulkEditHierarchy({ cell, columnId, selectedRowIndices, onApply, onCanc
|
|
|
3274
3275
|
return next;
|
|
3275
3276
|
});
|
|
3276
3277
|
}, []);
|
|
3277
|
-
const handleSelect = React$
|
|
3278
|
+
const handleSelect = React$43.useCallback((option) => {
|
|
3278
3279
|
onApply(selectedRowIndices.map((rowIndex) => ({
|
|
3279
3280
|
rowIndex,
|
|
3280
3281
|
columnId,
|
|
@@ -3285,7 +3286,7 @@ function BulkEditHierarchy({ cell, columnId, selectedRowIndices, onApply, onCanc
|
|
|
3285
3286
|
columnId,
|
|
3286
3287
|
onApply
|
|
3287
3288
|
]);
|
|
3288
|
-
React$
|
|
3289
|
+
React$43.useEffect(() => {
|
|
3289
3290
|
inputRef.current?.focus();
|
|
3290
3291
|
}, []);
|
|
3291
3292
|
return /* @__PURE__ */ jsxs("div", {
|
|
@@ -3316,7 +3317,7 @@ function BulkEditHierarchy({ cell, columnId, selectedRowIndices, onApply, onCanc
|
|
|
3316
3317
|
});
|
|
3317
3318
|
}
|
|
3318
3319
|
function BulkEditDate({ columnId, selectedRowIndices, onApply, onCancel }) {
|
|
3319
|
-
const onDateSelect = React$
|
|
3320
|
+
const onDateSelect = React$43.useCallback((date) => {
|
|
3320
3321
|
if (!date) return;
|
|
3321
3322
|
const year = date.getFullYear();
|
|
3322
3323
|
const month = String(date.getMonth() + 1).padStart(2, "0");
|
|
@@ -3348,28 +3349,28 @@ function BulkEditDate({ columnId, selectedRowIndices, onApply, onCancel }) {
|
|
|
3348
3349
|
});
|
|
3349
3350
|
}
|
|
3350
3351
|
function BulkEditPopover({ table, cell, columnId, open, onOpenChange, children }) {
|
|
3351
|
-
const selectedRowIndices = React$
|
|
3352
|
+
const selectedRowIndices = React$43.useMemo(() => {
|
|
3352
3353
|
if (!open) return [];
|
|
3353
3354
|
const allRows = table.getRowModel().rows;
|
|
3354
3355
|
const indices = [];
|
|
3355
3356
|
for (let i = 0; i < allRows.length; i++) if (allRows[i].getIsSelected()) indices.push(i);
|
|
3356
3357
|
return indices;
|
|
3357
3358
|
}, [open, table]);
|
|
3358
|
-
React$
|
|
3359
|
+
React$43.useEffect(() => {
|
|
3359
3360
|
if (open && selectedRowIndices.length === 0) onOpenChange(false);
|
|
3360
3361
|
}, [
|
|
3361
3362
|
open,
|
|
3362
3363
|
selectedRowIndices.length,
|
|
3363
3364
|
onOpenChange
|
|
3364
3365
|
]);
|
|
3365
|
-
const onApply = React$
|
|
3366
|
+
const onApply = React$43.useCallback((updates) => {
|
|
3366
3367
|
table.options.meta?.onDataUpdate?.(updates);
|
|
3367
3368
|
onOpenChange(false);
|
|
3368
3369
|
}, [table, onOpenChange]);
|
|
3369
|
-
const onCancel = React$
|
|
3370
|
+
const onCancel = React$43.useCallback(() => {
|
|
3370
3371
|
onOpenChange(false);
|
|
3371
3372
|
}, [onOpenChange]);
|
|
3372
|
-
const onOpenAutoFocus = React$
|
|
3373
|
+
const onOpenAutoFocus = React$43.useCallback((e) => {
|
|
3373
3374
|
e.preventDefault();
|
|
3374
3375
|
}, []);
|
|
3375
3376
|
const editorProps = {
|
|
@@ -3379,7 +3380,7 @@ function BulkEditPopover({ table, cell, columnId, open, onOpenChange, children }
|
|
|
3379
3380
|
onApply,
|
|
3380
3381
|
onCancel
|
|
3381
3382
|
};
|
|
3382
|
-
const editor = React$
|
|
3383
|
+
const editor = React$43.useMemo(() => {
|
|
3383
3384
|
switch (cell.variant) {
|
|
3384
3385
|
case "short-text": return /* @__PURE__ */ jsx(BulkEditShortText, { ...editorProps });
|
|
3385
3386
|
case "long-text": return /* @__PURE__ */ jsx(BulkEditLongText, { ...editorProps });
|
|
@@ -3461,8 +3462,8 @@ function getColumnVariant(variant) {
|
|
|
3461
3462
|
}
|
|
3462
3463
|
}
|
|
3463
3464
|
function DataGridColumnHeader({ header, table, className, onPointerDown,...props }) {
|
|
3464
|
-
const [open, setOpen] = React$
|
|
3465
|
-
const [bulkEditOpen, setBulkEditOpen] = React$
|
|
3465
|
+
const [open, setOpen] = React$42.useState(false);
|
|
3466
|
+
const [bulkEditOpen, setBulkEditOpen] = React$42.useState(false);
|
|
3466
3467
|
const column = header.column;
|
|
3467
3468
|
const label = column.columnDef.meta?.label ? column.columnDef.meta.label : typeof column.columnDef.header === "string" ? column.columnDef.header : column.id;
|
|
3468
3469
|
const isAnyColumnResizing = table.getState().columnSizingInfo.isResizingColumn;
|
|
@@ -3471,13 +3472,13 @@ function DataGridColumnHeader({ header, table, className, onPointerDown,...props
|
|
|
3471
3472
|
const enableBulkEdit = column.columnDef.meta?.enableBulkEdit ?? false;
|
|
3472
3473
|
const selectedRowCount = Object.keys(table.getState().rowSelection).length;
|
|
3473
3474
|
const showBulkEdit = enableBulkEdit && selectedRowCount > 1 && cellVariant != null && EditableCellVariantsSet.has(cellVariant?.variant);
|
|
3474
|
-
React$
|
|
3475
|
+
React$42.useEffect(() => {
|
|
3475
3476
|
if (!showBulkEdit) setBulkEditOpen(false);
|
|
3476
3477
|
}, [showBulkEdit]);
|
|
3477
3478
|
const pinnedPosition = column.getIsPinned();
|
|
3478
3479
|
const isPinnedLeft = pinnedPosition === "left";
|
|
3479
3480
|
const isPinnedRight = pinnedPosition === "right";
|
|
3480
|
-
const onSortingChange = React$
|
|
3481
|
+
const onSortingChange = React$42.useCallback((direction) => {
|
|
3481
3482
|
table.setSorting((prev) => {
|
|
3482
3483
|
const existingSortIndex = prev.findIndex((sort) => sort.id === column.id);
|
|
3483
3484
|
const newSort = {
|
|
@@ -3491,19 +3492,19 @@ function DataGridColumnHeader({ header, table, className, onPointerDown,...props
|
|
|
3491
3492
|
} else return [...prev, newSort];
|
|
3492
3493
|
});
|
|
3493
3494
|
}, [column.id, table]);
|
|
3494
|
-
const onSortRemove = React$
|
|
3495
|
+
const onSortRemove = React$42.useCallback(() => {
|
|
3495
3496
|
table.setSorting((prev) => prev.filter((sort) => sort.id !== column.id));
|
|
3496
3497
|
}, [column.id, table]);
|
|
3497
|
-
const onLeftPin = React$
|
|
3498
|
+
const onLeftPin = React$42.useCallback(() => {
|
|
3498
3499
|
column.pin("left");
|
|
3499
3500
|
}, [column]);
|
|
3500
|
-
const onRightPin = React$
|
|
3501
|
+
const onRightPin = React$42.useCallback(() => {
|
|
3501
3502
|
column.pin("right");
|
|
3502
3503
|
}, [column]);
|
|
3503
|
-
const onUnpin = React$
|
|
3504
|
+
const onUnpin = React$42.useCallback(() => {
|
|
3504
3505
|
column.pin(false);
|
|
3505
3506
|
}, [column]);
|
|
3506
|
-
const onTriggerPointerDown = React$
|
|
3507
|
+
const onTriggerPointerDown = React$42.useCallback((event) => {
|
|
3507
3508
|
onPointerDown?.(event);
|
|
3508
3509
|
if (event.defaultPrevented) return;
|
|
3509
3510
|
if (event.button !== 0) return;
|
|
@@ -3630,7 +3631,7 @@ function DataGridColumnHeader({ header, table, className, onPointerDown,...props
|
|
|
3630
3631
|
})
|
|
3631
3632
|
] });
|
|
3632
3633
|
}
|
|
3633
|
-
const DataGridColumnResizer = React$
|
|
3634
|
+
const DataGridColumnResizer = React$42.memo(DataGridColumnResizerImpl, (prev, next) => {
|
|
3634
3635
|
const prevColumn = prev.header.column;
|
|
3635
3636
|
const nextColumn = next.header.column;
|
|
3636
3637
|
if (prevColumn.getIsResizing() !== nextColumn.getIsResizing() || prevColumn.getSize() !== nextColumn.getSize()) return false;
|
|
@@ -3639,7 +3640,7 @@ const DataGridColumnResizer = React$41.memo(DataGridColumnResizerImpl, (prev, ne
|
|
|
3639
3640
|
});
|
|
3640
3641
|
function DataGridColumnResizerImpl({ header, table, label }) {
|
|
3641
3642
|
const defaultColumnDef = table._getDefaultColumnDef();
|
|
3642
|
-
const onDoubleClick = React$
|
|
3643
|
+
const onDoubleClick = React$42.useCallback(() => {
|
|
3643
3644
|
header.column.resetSize();
|
|
3644
3645
|
}, [header.column]);
|
|
3645
3646
|
return /* @__PURE__ */ jsx("div", {
|
|
@@ -3748,7 +3749,7 @@ function DataGridContextMenu({ table }) {
|
|
|
3748
3749
|
onRowsDelete
|
|
3749
3750
|
});
|
|
3750
3751
|
}
|
|
3751
|
-
const ContextMenu$1 = React$
|
|
3752
|
+
const ContextMenu$1 = React$41.memo(ContextMenuImpl, (prev, next) => {
|
|
3752
3753
|
if (prev.contextMenu.open !== next.contextMenu.open) return false;
|
|
3753
3754
|
if (!next.contextMenu.open) return true;
|
|
3754
3755
|
if (prev.contextMenu.x !== next.contextMenu.x) return false;
|
|
@@ -3759,7 +3760,7 @@ const ContextMenu$1 = React$40.memo(ContextMenuImpl, (prev, next) => {
|
|
|
3759
3760
|
return true;
|
|
3760
3761
|
});
|
|
3761
3762
|
function ContextMenuImpl({ table, dataGridRef, contextMenu, onContextMenuOpenChange, selectionState, onDataUpdate, onRowsDelete }) {
|
|
3762
|
-
const triggerStyle = React$
|
|
3763
|
+
const triggerStyle = React$41.useMemo(() => ({
|
|
3763
3764
|
position: "fixed",
|
|
3764
3765
|
left: `${contextMenu.x}px`,
|
|
3765
3766
|
top: `${contextMenu.y}px`,
|
|
@@ -3772,11 +3773,11 @@ function ContextMenuImpl({ table, dataGridRef, contextMenu, onContextMenuOpenCha
|
|
|
3772
3773
|
pointerEvents: "none",
|
|
3773
3774
|
opacity: 0
|
|
3774
3775
|
}), [contextMenu.x, contextMenu.y]);
|
|
3775
|
-
const onCloseAutoFocus = React$
|
|
3776
|
+
const onCloseAutoFocus = React$41.useCallback((event) => {
|
|
3776
3777
|
event.preventDefault();
|
|
3777
3778
|
dataGridRef?.current?.focus();
|
|
3778
3779
|
}, [dataGridRef]);
|
|
3779
|
-
const onCopy = React$
|
|
3780
|
+
const onCopy = React$41.useCallback(async () => {
|
|
3780
3781
|
if (!selectionState?.selectedCells || selectionState.selectedCells.size === 0) return;
|
|
3781
3782
|
const rows = table.getRowModel().rows;
|
|
3782
3783
|
const columnIds = [];
|
|
@@ -3815,7 +3816,7 @@ function ContextMenuImpl({ table, dataGridRef, contextMenu, onContextMenuOpenCha
|
|
|
3815
3816
|
await navigator.clipboard.writeText(tsvData);
|
|
3816
3817
|
toast$1.success(`${selectionState.selectedCells.size} cell${selectionState.selectedCells.size !== 1 ? "s" : ""} copied`);
|
|
3817
3818
|
}, [table, selectionState]);
|
|
3818
|
-
const canClear = React$
|
|
3819
|
+
const canClear = React$41.useMemo(() => {
|
|
3819
3820
|
if (!selectionState?.selectedCells || selectionState.selectedCells.size === 0) return false;
|
|
3820
3821
|
const visibleCols = table.getVisibleLeafColumns();
|
|
3821
3822
|
const rows = table.getRowModel().rows;
|
|
@@ -3832,7 +3833,7 @@ function ContextMenuImpl({ table, dataGridRef, contextMenu, onContextMenuOpenCha
|
|
|
3832
3833
|
}
|
|
3833
3834
|
return true;
|
|
3834
3835
|
}, [selectionState, table]);
|
|
3835
|
-
const onClear = React$
|
|
3836
|
+
const onClear = React$41.useCallback(() => {
|
|
3836
3837
|
if (!selectionState?.selectedCells || selectionState.selectedCells.size === 0) return;
|
|
3837
3838
|
if (!canClear) return;
|
|
3838
3839
|
const updates = [];
|
|
@@ -3851,7 +3852,7 @@ function ContextMenuImpl({ table, dataGridRef, contextMenu, onContextMenuOpenCha
|
|
|
3851
3852
|
selectionState,
|
|
3852
3853
|
canClear
|
|
3853
3854
|
]);
|
|
3854
|
-
const onDelete = React$
|
|
3855
|
+
const onDelete = React$41.useCallback(async () => {
|
|
3855
3856
|
if (!selectionState?.selectedCells || selectionState.selectedCells.size === 0) return;
|
|
3856
3857
|
const rowIndices = new Set();
|
|
3857
3858
|
for (const cellKey of selectionState.selectedCells) {
|
|
@@ -3928,12 +3929,12 @@ function composeRefs(...refs) {
|
|
|
3928
3929
|
* Accepts callback refs and RefObject(s)
|
|
3929
3930
|
*/
|
|
3930
3931
|
function useComposedRefs(...refs) {
|
|
3931
|
-
return React$
|
|
3932
|
+
return React$40.useCallback(composeRefs(...refs), refs);
|
|
3932
3933
|
}
|
|
3933
3934
|
|
|
3934
3935
|
//#endregion
|
|
3935
3936
|
//#region src/data-grid/data-grid-row.tsx
|
|
3936
|
-
const DataGridRow = React$
|
|
3937
|
+
const DataGridRow = React$39.memo(DataGridRowImpl, (prev, next) => {
|
|
3937
3938
|
if (prev.row.id !== next.row.id) return false;
|
|
3938
3939
|
if (prev.row.original !== next.row.original) return false;
|
|
3939
3940
|
const prevRowIndex = prev.virtualRowIndex;
|
|
@@ -3965,7 +3966,7 @@ function DataGridRowImpl({ row, virtualRowIndex, virtualStart, rowVirtualizer, r
|
|
|
3965
3966
|
}
|
|
3966
3967
|
});
|
|
3967
3968
|
const isRowSelected = row.getIsSelected();
|
|
3968
|
-
const handleRowClick = React$
|
|
3969
|
+
const handleRowClick = React$39.useCallback((event) => {
|
|
3969
3970
|
const target = event.target;
|
|
3970
3971
|
if (target.closest("input, button, [role=\"checkbox\"]")) return;
|
|
3971
3972
|
if (event.detail === 1) onRowClick?.(virtualRowIndex);
|
|
@@ -4015,20 +4016,20 @@ function DataGridRowImpl({ row, virtualRowIndex, virtualStart, rowVirtualizer, r
|
|
|
4015
4016
|
* prop or avoid re-executing effects when passed as a dependency
|
|
4016
4017
|
*/
|
|
4017
4018
|
function useCallbackRef(callback) {
|
|
4018
|
-
const callbackRef = React$
|
|
4019
|
-
React$
|
|
4019
|
+
const callbackRef = React$38.useRef(callback);
|
|
4020
|
+
React$38.useEffect(() => {
|
|
4020
4021
|
callbackRef.current = callback;
|
|
4021
4022
|
});
|
|
4022
|
-
return React$
|
|
4023
|
+
return React$38.useMemo(() => (...args) => callbackRef.current?.(...args), []);
|
|
4023
4024
|
}
|
|
4024
4025
|
|
|
4025
4026
|
//#endregion
|
|
4026
4027
|
//#region src/hooks/use-debounced-callback.ts
|
|
4027
4028
|
function useDebouncedCallback(callback, delay) {
|
|
4028
4029
|
const handleCallback = useCallbackRef(callback);
|
|
4029
|
-
const debounceTimerRef = React$
|
|
4030
|
-
React$
|
|
4031
|
-
const setValue = React$
|
|
4030
|
+
const debounceTimerRef = React$37.useRef(0);
|
|
4031
|
+
React$37.useEffect(() => () => window.clearTimeout(debounceTimerRef.current), []);
|
|
4032
|
+
const setValue = React$37.useCallback((...args) => {
|
|
4032
4033
|
window.clearTimeout(debounceTimerRef.current);
|
|
4033
4034
|
debounceTimerRef.current = window.setTimeout(() => handleCallback(...args), delay);
|
|
4034
4035
|
}, [handleCallback, delay]);
|
|
@@ -4037,7 +4038,7 @@ function useDebouncedCallback(callback, delay) {
|
|
|
4037
4038
|
|
|
4038
4039
|
//#endregion
|
|
4039
4040
|
//#region src/data-grid/data-grid-search.tsx
|
|
4040
|
-
const DataGridSearch = React$
|
|
4041
|
+
const DataGridSearch = React$36.memo(DataGridSearchImpl, (prev, next) => {
|
|
4041
4042
|
if (prev.searchOpen !== next.searchOpen) return false;
|
|
4042
4043
|
if (!next.searchOpen) return true;
|
|
4043
4044
|
if (prev.searchQuery !== next.searchQuery || prev.matchIndex !== next.matchIndex) return false;
|
|
@@ -4051,13 +4052,13 @@ const DataGridSearch = React$35.memo(DataGridSearchImpl, (prev, next) => {
|
|
|
4051
4052
|
return true;
|
|
4052
4053
|
});
|
|
4053
4054
|
function DataGridSearchImpl({ searchMatches, matchIndex, searchOpen, onSearchOpenChange, searchQuery, onSearchQueryChange, onSearch, onNavigateToNextMatch, onNavigateToPrevMatch }) {
|
|
4054
|
-
const inputRef = React$
|
|
4055
|
-
React$
|
|
4055
|
+
const inputRef = React$36.useRef(null);
|
|
4056
|
+
React$36.useEffect(() => {
|
|
4056
4057
|
if (searchOpen) requestAnimationFrame(() => {
|
|
4057
4058
|
inputRef.current?.focus();
|
|
4058
4059
|
});
|
|
4059
4060
|
}, [searchOpen]);
|
|
4060
|
-
React$
|
|
4061
|
+
React$36.useEffect(() => {
|
|
4061
4062
|
if (!searchOpen) return;
|
|
4062
4063
|
function onEscape(event) {
|
|
4063
4064
|
if (event.key === "Escape") {
|
|
@@ -4068,7 +4069,7 @@ function DataGridSearchImpl({ searchMatches, matchIndex, searchOpen, onSearchOpe
|
|
|
4068
4069
|
document.addEventListener("keydown", onEscape);
|
|
4069
4070
|
return () => document.removeEventListener("keydown", onEscape);
|
|
4070
4071
|
}, [searchOpen, onSearchOpenChange]);
|
|
4071
|
-
const onKeyDown = React$
|
|
4072
|
+
const onKeyDown = React$36.useCallback((event) => {
|
|
4072
4073
|
event.stopPropagation();
|
|
4073
4074
|
if (event.key === "Enter") {
|
|
4074
4075
|
event.preventDefault();
|
|
@@ -4079,20 +4080,20 @@ function DataGridSearchImpl({ searchMatches, matchIndex, searchOpen, onSearchOpe
|
|
|
4079
4080
|
const debouncedSearch = useDebouncedCallback((query) => {
|
|
4080
4081
|
onSearch(query);
|
|
4081
4082
|
}, 150);
|
|
4082
|
-
const onChange = React$
|
|
4083
|
+
const onChange = React$36.useCallback((event) => {
|
|
4083
4084
|
const value = event.target.value;
|
|
4084
4085
|
onSearchQueryChange(value);
|
|
4085
4086
|
debouncedSearch(value);
|
|
4086
4087
|
}, [onSearchQueryChange, debouncedSearch]);
|
|
4087
|
-
const onTriggerPointerDown = React$
|
|
4088
|
+
const onTriggerPointerDown = React$36.useCallback((event) => {
|
|
4088
4089
|
const target = event.target;
|
|
4089
4090
|
if (!(target instanceof HTMLElement)) return;
|
|
4090
4091
|
if (target.hasPointerCapture(event.pointerId)) target.releasePointerCapture(event.pointerId);
|
|
4091
4092
|
if (event.button === 0 && event.ctrlKey === false && event.pointerType === "mouse" && !(event.target instanceof HTMLInputElement)) event.preventDefault();
|
|
4092
4093
|
}, []);
|
|
4093
|
-
const onPrevMatchPointerDown = React$
|
|
4094
|
-
const onNextMatchPointerDown = React$
|
|
4095
|
-
const onClose = React$
|
|
4094
|
+
const onPrevMatchPointerDown = React$36.useCallback((event) => onTriggerPointerDown(event), [onTriggerPointerDown]);
|
|
4095
|
+
const onNextMatchPointerDown = React$36.useCallback((event) => onTriggerPointerDown(event), [onTriggerPointerDown]);
|
|
4096
|
+
const onClose = React$36.useCallback(() => {
|
|
4096
4097
|
onSearchOpenChange(false);
|
|
4097
4098
|
}, [onSearchOpenChange]);
|
|
4098
4099
|
if (!searchOpen) return null;
|
|
@@ -4173,15 +4174,15 @@ function DataGrid({ dataGridRef, headerRef, rowMapRef, footerRef, table, rowVirt
|
|
|
4173
4174
|
const visibleColumnIds = table.getVisibleLeafColumns().map((c) => c.id).join(",");
|
|
4174
4175
|
const pinningState = table.getState().columnPinning;
|
|
4175
4176
|
const columnPinningKey = `${(pinningState.left ?? []).join(",")}|${(pinningState.right ?? []).join(",")}`;
|
|
4176
|
-
const prevVisibleColumnIdsRef = React$
|
|
4177
|
+
const prevVisibleColumnIdsRef = React$35.useRef(visibleColumnIds);
|
|
4177
4178
|
if (prevVisibleColumnIdsRef.current !== visibleColumnIds) {
|
|
4178
4179
|
rowMapRef.current.clear();
|
|
4179
4180
|
prevVisibleColumnIdsRef.current = visibleColumnIds;
|
|
4180
4181
|
}
|
|
4181
|
-
const onGridContextMenu = React$
|
|
4182
|
+
const onGridContextMenu = React$35.useCallback((event) => {
|
|
4182
4183
|
event.preventDefault();
|
|
4183
4184
|
}, []);
|
|
4184
|
-
const onAddRowKeyDown = React$
|
|
4185
|
+
const onAddRowKeyDown = React$35.useCallback(async (event) => {
|
|
4185
4186
|
if (!onRowAdd) return;
|
|
4186
4187
|
if (event.key === "Enter" || event.key === "") {
|
|
4187
4188
|
event.preventDefault();
|
|
@@ -4333,17 +4334,17 @@ function DataGrid({ dataGridRef, headerRef, rowMapRef, footerRef, table, rowVirt
|
|
|
4333
4334
|
function CheckboxCell({ cell, table, rowIndex, columnId, isFocused, isSelected }) {
|
|
4334
4335
|
const cellValue = cell.getValue();
|
|
4335
4336
|
const cellValueAsBoolean = Boolean(cellValue);
|
|
4336
|
-
const [value, setValue] = React$
|
|
4337
|
-
const containerRef = React$
|
|
4337
|
+
const [value, setValue] = React$34.useState(cellValueAsBoolean);
|
|
4338
|
+
const containerRef = React$34.useRef(null);
|
|
4338
4339
|
const meta = table.options.meta;
|
|
4339
4340
|
const colMeta = cell.column.columnDef.meta;
|
|
4340
|
-
const editableResolver = React$
|
|
4341
|
+
const editableResolver = React$34.useMemo(() => {
|
|
4341
4342
|
const v = colMeta?.editable;
|
|
4342
4343
|
if (v === void 0) return () => true;
|
|
4343
4344
|
return typeof v === "function" ? v : () => Boolean(v);
|
|
4344
4345
|
}, [colMeta?.editable]);
|
|
4345
4346
|
const isEditable = editableResolver(cell.row.original);
|
|
4346
|
-
const onCheckedChange = React$
|
|
4347
|
+
const onCheckedChange = React$34.useCallback((checked) => {
|
|
4347
4348
|
setValue(checked);
|
|
4348
4349
|
meta?.onDataUpdate?.({
|
|
4349
4350
|
rowIndex,
|
|
@@ -4355,7 +4356,7 @@ function CheckboxCell({ cell, table, rowIndex, columnId, isFocused, isSelected }
|
|
|
4355
4356
|
rowIndex,
|
|
4356
4357
|
columnId
|
|
4357
4358
|
]);
|
|
4358
|
-
const onWrapperKeyDown = React$
|
|
4359
|
+
const onWrapperKeyDown = React$34.useCallback((event) => {
|
|
4359
4360
|
if (!isEditable) return;
|
|
4360
4361
|
if (isFocused && (event.key === "" || event.key === "Enter")) {
|
|
4361
4362
|
event.preventDefault();
|
|
@@ -4368,17 +4369,17 @@ function CheckboxCell({ cell, table, rowIndex, columnId, isFocused, isSelected }
|
|
|
4368
4369
|
onCheckedChange,
|
|
4369
4370
|
isEditable
|
|
4370
4371
|
]);
|
|
4371
|
-
React$
|
|
4372
|
+
React$34.useEffect(() => {
|
|
4372
4373
|
setValue(cellValueAsBoolean);
|
|
4373
4374
|
}, [cellValueAsBoolean]);
|
|
4374
|
-
React$
|
|
4375
|
+
React$34.useEffect(() => {
|
|
4375
4376
|
if (isFocused && !meta?.searchOpen && !meta?.isScrolling && containerRef.current) containerRef.current.focus();
|
|
4376
4377
|
}, [
|
|
4377
4378
|
isFocused,
|
|
4378
4379
|
meta?.searchOpen,
|
|
4379
4380
|
meta?.isScrolling
|
|
4380
4381
|
]);
|
|
4381
|
-
const onWrapperClick = React$
|
|
4382
|
+
const onWrapperClick = React$34.useCallback((event) => {
|
|
4382
4383
|
if (!isEditable) return;
|
|
4383
4384
|
if (isFocused) {
|
|
4384
4385
|
event.preventDefault();
|
|
@@ -4391,13 +4392,13 @@ function CheckboxCell({ cell, table, rowIndex, columnId, isFocused, isSelected }
|
|
|
4391
4392
|
onCheckedChange,
|
|
4392
4393
|
isEditable
|
|
4393
4394
|
]);
|
|
4394
|
-
const onCheckboxClick = React$
|
|
4395
|
+
const onCheckboxClick = React$34.useCallback((event) => {
|
|
4395
4396
|
event.stopPropagation();
|
|
4396
4397
|
}, []);
|
|
4397
|
-
const onCheckboxMouseDown = React$
|
|
4398
|
+
const onCheckboxMouseDown = React$34.useCallback((event) => {
|
|
4398
4399
|
event.stopPropagation();
|
|
4399
4400
|
}, []);
|
|
4400
|
-
const onCheckboxDoubleClick = React$
|
|
4401
|
+
const onCheckboxDoubleClick = React$34.useCallback((event) => {
|
|
4401
4402
|
event.stopPropagation();
|
|
4402
4403
|
}, []);
|
|
4403
4404
|
return /* @__PURE__ */ jsx(DataGridCellWrapper, {
|
|
@@ -4452,20 +4453,20 @@ function formatDateToISOString(date) {
|
|
|
4452
4453
|
}
|
|
4453
4454
|
function DateCell({ cell, table, rowIndex, columnId, isFocused, isEditing, isSelected }) {
|
|
4454
4455
|
const initialValue = cell.getValue();
|
|
4455
|
-
const [value, setValue] = React$
|
|
4456
|
-
const [open, setOpen] = React$
|
|
4457
|
-
const containerRef = React$
|
|
4458
|
-
const hasStoppedRef = React$
|
|
4456
|
+
const [value, setValue] = React$33.useState(parseToLocalDate(initialValue));
|
|
4457
|
+
const [open, setOpen] = React$33.useState(false);
|
|
4458
|
+
const containerRef = React$33.useRef(null);
|
|
4459
|
+
const hasStoppedRef = React$33.useRef(false);
|
|
4459
4460
|
const meta = table.options.meta;
|
|
4460
|
-
const prevInitialValueRef = React$
|
|
4461
|
+
const prevInitialValueRef = React$33.useRef(initialValue);
|
|
4461
4462
|
if (initialValue !== prevInitialValueRef.current) {
|
|
4462
4463
|
prevInitialValueRef.current = initialValue;
|
|
4463
4464
|
setValue(parseToLocalDate(initialValue));
|
|
4464
4465
|
}
|
|
4465
|
-
React$
|
|
4466
|
+
React$33.useEffect(() => {
|
|
4466
4467
|
if (isEditing) hasStoppedRef.current = false;
|
|
4467
4468
|
}, [isEditing]);
|
|
4468
|
-
const onDateSelect = React$
|
|
4469
|
+
const onDateSelect = React$33.useCallback((date) => {
|
|
4469
4470
|
if (!date) return;
|
|
4470
4471
|
setValue(date);
|
|
4471
4472
|
meta?.onDataUpdate?.({
|
|
@@ -4481,14 +4482,14 @@ function DateCell({ cell, table, rowIndex, columnId, isFocused, isEditing, isSel
|
|
|
4481
4482
|
rowIndex,
|
|
4482
4483
|
columnId
|
|
4483
4484
|
]);
|
|
4484
|
-
const onOpenChange = React$
|
|
4485
|
+
const onOpenChange = React$33.useCallback((isOpen) => {
|
|
4485
4486
|
setOpen(isOpen);
|
|
4486
4487
|
if (!isOpen && isEditing && !hasStoppedRef.current) {
|
|
4487
4488
|
hasStoppedRef.current = true;
|
|
4488
4489
|
meta?.onCellEditingStop?.();
|
|
4489
4490
|
}
|
|
4490
4491
|
}, [isEditing, meta]);
|
|
4491
|
-
const onWrapperKeyDown = React$
|
|
4492
|
+
const onWrapperKeyDown = React$33.useCallback((event) => {
|
|
4492
4493
|
if (isEditing) {
|
|
4493
4494
|
if (event.key === "Escape") {
|
|
4494
4495
|
event.preventDefault();
|
|
@@ -4508,10 +4509,10 @@ function DateCell({ cell, table, rowIndex, columnId, isFocused, isEditing, isSel
|
|
|
4508
4509
|
initialValue,
|
|
4509
4510
|
meta
|
|
4510
4511
|
]);
|
|
4511
|
-
React$
|
|
4512
|
+
React$33.useEffect(() => {
|
|
4512
4513
|
setOpen(isEditing);
|
|
4513
4514
|
}, [isEditing]);
|
|
4514
|
-
React$
|
|
4515
|
+
React$33.useEffect(() => {
|
|
4515
4516
|
if (isFocused && !isEditing && !meta?.searchOpen && !meta?.isScrolling && containerRef.current) containerRef.current.focus();
|
|
4516
4517
|
}, [
|
|
4517
4518
|
isFocused,
|
|
@@ -4604,7 +4605,7 @@ function DownloadFileCell({ cell, table, rowIndex, columnId, isEditing, isFocuse
|
|
|
4604
4605
|
//#region src/data-grid/cell-variants/gantt-cell.tsx
|
|
4605
4606
|
function GanttCell({ cell, table, rowIndex, columnId, isFocused, isEditing, isSelected }) {
|
|
4606
4607
|
const initialValue = cell.getValue();
|
|
4607
|
-
const containerRef = React$
|
|
4608
|
+
const containerRef = React$32.useRef(null);
|
|
4608
4609
|
const cellOpts = cell.column.columnDef.meta?.cell;
|
|
4609
4610
|
const ts = cellOpts?.dateRangeFrom ?? cellOpts?.timelineStart;
|
|
4610
4611
|
const te = cellOpts?.dateRangeTo ?? cellOpts?.timelineEnd;
|
|
@@ -4639,6 +4640,191 @@ function GanttCell({ cell, table, rowIndex, columnId, isFocused, isEditing, isSe
|
|
|
4639
4640
|
});
|
|
4640
4641
|
}
|
|
4641
4642
|
|
|
4643
|
+
//#endregion
|
|
4644
|
+
//#region src/data-grid/cell-variants/json-cell.tsx
|
|
4645
|
+
function formatJson(value) {
|
|
4646
|
+
if (value == null || value === "") return null;
|
|
4647
|
+
try {
|
|
4648
|
+
const parsed = typeof value === "string" ? JSON.parse(value) : value;
|
|
4649
|
+
return JSON.stringify(parsed, null, 2);
|
|
4650
|
+
} catch {
|
|
4651
|
+
return typeof value === "string" ? value : String(value);
|
|
4652
|
+
}
|
|
4653
|
+
}
|
|
4654
|
+
function isValidJson(str) {
|
|
4655
|
+
if (!str) return false;
|
|
4656
|
+
try {
|
|
4657
|
+
JSON.parse(str);
|
|
4658
|
+
return true;
|
|
4659
|
+
} catch {
|
|
4660
|
+
return false;
|
|
4661
|
+
}
|
|
4662
|
+
}
|
|
4663
|
+
function JsonCell({ cell, table, rowIndex, columnId, isFocused, isSelected }) {
|
|
4664
|
+
const rawValue = cell.getValue();
|
|
4665
|
+
const [dialogOpen, setDialogOpen] = React$31.useState(false);
|
|
4666
|
+
const [editValue, setEditValue] = React$31.useState("");
|
|
4667
|
+
const [copied, setCopied] = React$31.useState(false);
|
|
4668
|
+
const containerRef = React$31.useRef(null);
|
|
4669
|
+
const copiedTimerRef = React$31.useRef(null);
|
|
4670
|
+
const meta = table.options.meta;
|
|
4671
|
+
const displayValue = React$31.useMemo(() => {
|
|
4672
|
+
if (rawValue == null || rawValue === "") return "";
|
|
4673
|
+
if (typeof rawValue === "string") try {
|
|
4674
|
+
return JSON.stringify(JSON.parse(rawValue));
|
|
4675
|
+
} catch {
|
|
4676
|
+
return rawValue;
|
|
4677
|
+
}
|
|
4678
|
+
return JSON.stringify(rawValue);
|
|
4679
|
+
}, [rawValue]);
|
|
4680
|
+
const formattedJson = React$31.useMemo(() => formatJson(rawValue), [rawValue]);
|
|
4681
|
+
const jsonParseError = React$31.useMemo(() => {
|
|
4682
|
+
if (!editValue) return null;
|
|
4683
|
+
try {
|
|
4684
|
+
JSON.parse(editValue);
|
|
4685
|
+
return null;
|
|
4686
|
+
} catch (e) {
|
|
4687
|
+
return e.message;
|
|
4688
|
+
}
|
|
4689
|
+
}, [editValue]);
|
|
4690
|
+
const hasChanges = React$31.useMemo(() => editValue !== (formattedJson ?? ""), [editValue, formattedJson]);
|
|
4691
|
+
const onContentDoubleClick = React$31.useCallback((event) => {
|
|
4692
|
+
event.stopPropagation();
|
|
4693
|
+
setEditValue(formattedJson ?? "");
|
|
4694
|
+
setCopied(false);
|
|
4695
|
+
setDialogOpen(true);
|
|
4696
|
+
}, [formattedJson]);
|
|
4697
|
+
const onCopy = React$31.useCallback(() => {
|
|
4698
|
+
navigator.clipboard.writeText(editValue).then(() => {
|
|
4699
|
+
if (copiedTimerRef.current) clearTimeout(copiedTimerRef.current);
|
|
4700
|
+
setCopied(true);
|
|
4701
|
+
copiedTimerRef.current = setTimeout(() => setCopied(false), 2e3);
|
|
4702
|
+
}, () => {});
|
|
4703
|
+
}, [editValue]);
|
|
4704
|
+
const onSave = React$31.useCallback(() => {
|
|
4705
|
+
if (!hasChanges) return;
|
|
4706
|
+
if (!editValue) {
|
|
4707
|
+
meta?.onDataUpdate?.({
|
|
4708
|
+
rowIndex,
|
|
4709
|
+
columnId,
|
|
4710
|
+
value: null
|
|
4711
|
+
});
|
|
4712
|
+
setDialogOpen(false);
|
|
4713
|
+
return;
|
|
4714
|
+
}
|
|
4715
|
+
if (jsonParseError) return;
|
|
4716
|
+
const compactValue = JSON.stringify(JSON.parse(editValue));
|
|
4717
|
+
meta?.onDataUpdate?.({
|
|
4718
|
+
rowIndex,
|
|
4719
|
+
columnId,
|
|
4720
|
+
value: compactValue
|
|
4721
|
+
});
|
|
4722
|
+
setDialogOpen(false);
|
|
4723
|
+
}, [
|
|
4724
|
+
editValue,
|
|
4725
|
+
jsonParseError,
|
|
4726
|
+
hasChanges,
|
|
4727
|
+
meta,
|
|
4728
|
+
rowIndex,
|
|
4729
|
+
columnId
|
|
4730
|
+
]);
|
|
4731
|
+
const onFormat = React$31.useCallback(() => {
|
|
4732
|
+
if (isValidJson(editValue)) setEditValue(JSON.stringify(JSON.parse(editValue), null, 2));
|
|
4733
|
+
}, [editValue]);
|
|
4734
|
+
const onCancel = React$31.useCallback(() => {
|
|
4735
|
+
setDialogOpen(false);
|
|
4736
|
+
}, []);
|
|
4737
|
+
React$31.useEffect(() => {
|
|
4738
|
+
return () => {
|
|
4739
|
+
if (copiedTimerRef.current) clearTimeout(copiedTimerRef.current);
|
|
4740
|
+
};
|
|
4741
|
+
}, []);
|
|
4742
|
+
React$31.useEffect(() => {
|
|
4743
|
+
if (isFocused && !meta?.searchOpen && !meta?.isScrolling && containerRef.current) containerRef.current.focus();
|
|
4744
|
+
}, [
|
|
4745
|
+
isFocused,
|
|
4746
|
+
meta?.searchOpen,
|
|
4747
|
+
meta?.isScrolling
|
|
4748
|
+
]);
|
|
4749
|
+
const onKeyDown = React$31.useCallback((event) => {
|
|
4750
|
+
if (event.key === "Enter" && !dialogOpen) {
|
|
4751
|
+
event.preventDefault();
|
|
4752
|
+
setEditValue(formattedJson ?? "");
|
|
4753
|
+
setCopied(false);
|
|
4754
|
+
setDialogOpen(true);
|
|
4755
|
+
}
|
|
4756
|
+
}, [dialogOpen, formattedJson]);
|
|
4757
|
+
const headerLabel = typeof cell.column.columnDef.header === "string" ? cell.column.columnDef.header : "JSON";
|
|
4758
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(DataGridCellWrapper, {
|
|
4759
|
+
ref: containerRef,
|
|
4760
|
+
cell,
|
|
4761
|
+
table,
|
|
4762
|
+
rowIndex,
|
|
4763
|
+
columnId,
|
|
4764
|
+
isEditing: false,
|
|
4765
|
+
isFocused,
|
|
4766
|
+
isSelected,
|
|
4767
|
+
onKeyDown,
|
|
4768
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
4769
|
+
"data-slot": "grid-cell-content",
|
|
4770
|
+
className: "font-mono text-xs text-muted-foreground",
|
|
4771
|
+
onDoubleClick: onContentDoubleClick,
|
|
4772
|
+
children: displayValue
|
|
4773
|
+
})
|
|
4774
|
+
}), /* @__PURE__ */ jsx(Dialog, {
|
|
4775
|
+
open: dialogOpen,
|
|
4776
|
+
onOpenChange: setDialogOpen,
|
|
4777
|
+
children: /* @__PURE__ */ jsxs(DialogContent, {
|
|
4778
|
+
className: "max-w-2xl max-h-[80vh]",
|
|
4779
|
+
children: [
|
|
4780
|
+
/* @__PURE__ */ jsx(DialogHeader, { children: /* @__PURE__ */ jsxs(DialogTitle, { children: [headerLabel, " (JSON)"] }) }),
|
|
4781
|
+
/* @__PURE__ */ jsx(Textarea, {
|
|
4782
|
+
value: editValue,
|
|
4783
|
+
onChange: (e) => setEditValue(e.target.value),
|
|
4784
|
+
className: "min-h-[200px] max-h-[50vh] font-mono text-sm resize-y",
|
|
4785
|
+
spellCheck: false
|
|
4786
|
+
}),
|
|
4787
|
+
jsonParseError && /* @__PURE__ */ jsx("p", {
|
|
4788
|
+
className: "text-sm text-destructive",
|
|
4789
|
+
children: jsonParseError
|
|
4790
|
+
}),
|
|
4791
|
+
/* @__PURE__ */ jsxs(DialogFooter, {
|
|
4792
|
+
className: "flex-row justify-between sm:justify-between gap-2",
|
|
4793
|
+
children: [/* @__PURE__ */ jsxs(Button, {
|
|
4794
|
+
variant: "ghost",
|
|
4795
|
+
size: "sm",
|
|
4796
|
+
onClick: onCopy,
|
|
4797
|
+
children: [copied ? /* @__PURE__ */ jsx(Check, { className: "h-4 w-4 text-green-500" }) : /* @__PURE__ */ jsx(ClipboardCopy, { className: "h-4 w-4" }), copied ? "Copied" : "Copy"]
|
|
4798
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
4799
|
+
className: "flex gap-2",
|
|
4800
|
+
children: [
|
|
4801
|
+
/* @__PURE__ */ jsx(Button, {
|
|
4802
|
+
variant: "outline",
|
|
4803
|
+
size: "sm",
|
|
4804
|
+
onClick: onCancel,
|
|
4805
|
+
children: "Cancel"
|
|
4806
|
+
}),
|
|
4807
|
+
/* @__PURE__ */ jsx(Button, {
|
|
4808
|
+
variant: "outline",
|
|
4809
|
+
size: "sm",
|
|
4810
|
+
onClick: onFormat,
|
|
4811
|
+
disabled: !!jsonParseError || !editValue,
|
|
4812
|
+
children: "Format"
|
|
4813
|
+
}),
|
|
4814
|
+
/* @__PURE__ */ jsx(Button, {
|
|
4815
|
+
size: "sm",
|
|
4816
|
+
onClick: onSave,
|
|
4817
|
+
disabled: !!jsonParseError || !hasChanges,
|
|
4818
|
+
children: "Save"
|
|
4819
|
+
})
|
|
4820
|
+
]
|
|
4821
|
+
})]
|
|
4822
|
+
})
|
|
4823
|
+
]
|
|
4824
|
+
})
|
|
4825
|
+
})] });
|
|
4826
|
+
}
|
|
4827
|
+
|
|
4642
4828
|
//#endregion
|
|
4643
4829
|
//#region src/data-grid/cell-variants/long-text-cell.tsx
|
|
4644
4830
|
function LongTextCell({ cell, table, rowIndex, columnId, isFocused, isEditing, isSelected }) {
|
|
@@ -5655,6 +5841,15 @@ function DataGridCell({ cell, table }) {
|
|
|
5655
5841
|
isFocused,
|
|
5656
5842
|
isSelected
|
|
5657
5843
|
});
|
|
5844
|
+
case "json": return /* @__PURE__ */ jsx(JsonCell, {
|
|
5845
|
+
cell,
|
|
5846
|
+
table,
|
|
5847
|
+
rowIndex,
|
|
5848
|
+
columnId,
|
|
5849
|
+
isEditing,
|
|
5850
|
+
isFocused,
|
|
5851
|
+
isSelected
|
|
5852
|
+
});
|
|
5658
5853
|
case "gantt": return /* @__PURE__ */ jsx(GanttCell, {
|
|
5659
5854
|
cell,
|
|
5660
5855
|
table,
|
|
@@ -11335,114 +11530,316 @@ ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
|
|
|
11335
11530
|
|
|
11336
11531
|
//#endregion
|
|
11337
11532
|
//#region src/tree-view/tree-view.tsx
|
|
11338
|
-
const
|
|
11533
|
+
const DragContext = React$1.createContext({
|
|
11534
|
+
dragState: {
|
|
11535
|
+
draggedNodeId: null,
|
|
11536
|
+
dropTarget: null
|
|
11537
|
+
},
|
|
11538
|
+
setDragState: () => {}
|
|
11539
|
+
});
|
|
11540
|
+
/** Checks if `targetId` is a descendant of `ancestorId` in the tree. Used to prevent dropping a node into itself. */
|
|
11541
|
+
function isDescendant(nodes, ancestorId, targetId) {
|
|
11542
|
+
for (const node of nodes) {
|
|
11543
|
+
if (node.id === ancestorId && node.children) return containsNode(node.children, targetId);
|
|
11544
|
+
if (node.children && isDescendant(node.children, ancestorId, targetId)) return true;
|
|
11545
|
+
}
|
|
11546
|
+
return false;
|
|
11547
|
+
}
|
|
11548
|
+
/** Recursively checks if any node in the subtree has the given id. */
|
|
11549
|
+
function containsNode(nodes, targetId) {
|
|
11550
|
+
for (const node of nodes) {
|
|
11551
|
+
if (node.id === targetId) return true;
|
|
11552
|
+
if (node.children && containsNode(node.children, targetId)) return true;
|
|
11553
|
+
}
|
|
11554
|
+
return false;
|
|
11555
|
+
}
|
|
11556
|
+
/** Finds and returns a node by id from anywhere in the tree. */
|
|
11557
|
+
function findNode(nodes, id) {
|
|
11558
|
+
for (const node of nodes) {
|
|
11559
|
+
if (node.id === id) return node;
|
|
11560
|
+
if (node.children) {
|
|
11561
|
+
const found = findNode(node.children, id);
|
|
11562
|
+
if (found) return found;
|
|
11563
|
+
}
|
|
11564
|
+
}
|
|
11565
|
+
return void 0;
|
|
11566
|
+
}
|
|
11567
|
+
const TreeBranch = ({ node, level, onNodeSelect, onGroupSelect, onToggleGroup, onNodeDelete, onNodeDrop, defaultExpandedIds = [], selectedId, rootData }) => {
|
|
11339
11568
|
const isGroup = node.type === "group";
|
|
11340
11569
|
const hasChildren = node.children && node.children.length > 0;
|
|
11570
|
+
const { dragState, setDragState } = React$1.useContext(DragContext);
|
|
11571
|
+
/** Determines drop position (before/after/inside) based on cursor proximity to element edges. */
|
|
11572
|
+
const handleDragOver = (e) => {
|
|
11573
|
+
if (!dragState.draggedNodeId || dragState.draggedNodeId === node.id) return;
|
|
11574
|
+
if (isDescendant(rootData, dragState.draggedNodeId, node.id)) return;
|
|
11575
|
+
e.preventDefault();
|
|
11576
|
+
e.stopPropagation();
|
|
11577
|
+
const rect = e.currentTarget.getBoundingClientRect();
|
|
11578
|
+
const distFromTop = e.clientY - rect.top;
|
|
11579
|
+
const distFromBottom = rect.bottom - e.clientY;
|
|
11580
|
+
const isExpanded = isGroup && hasChildren && defaultExpandedIds.includes(node.id);
|
|
11581
|
+
let position;
|
|
11582
|
+
if (distFromTop < 10) position = "before";
|
|
11583
|
+
else if (!isExpanded && distFromBottom < 10) position = "after";
|
|
11584
|
+
else position = "inside";
|
|
11585
|
+
if (node.locked && position !== "inside") return;
|
|
11586
|
+
setDragState((prev) => {
|
|
11587
|
+
if (prev.dropTarget?.nodeId === node.id && prev.dropTarget.position === position) return prev;
|
|
11588
|
+
return {
|
|
11589
|
+
...prev,
|
|
11590
|
+
dropTarget: {
|
|
11591
|
+
nodeId: node.id,
|
|
11592
|
+
position
|
|
11593
|
+
}
|
|
11594
|
+
};
|
|
11595
|
+
});
|
|
11596
|
+
};
|
|
11597
|
+
/** Fires onNodeDrop with the source node and target info, then resets drag state. */
|
|
11598
|
+
const handleDrop = (e) => {
|
|
11599
|
+
e.preventDefault();
|
|
11600
|
+
e.stopPropagation();
|
|
11601
|
+
if (!dragState.draggedNodeId || !dragState.dropTarget || !onNodeDrop) return;
|
|
11602
|
+
const sourceNode = findNode(rootData, dragState.draggedNodeId);
|
|
11603
|
+
if (!sourceNode) return;
|
|
11604
|
+
onNodeDrop(sourceNode, {
|
|
11605
|
+
node,
|
|
11606
|
+
position: dragState.dropTarget.position
|
|
11607
|
+
});
|
|
11608
|
+
setDragState({
|
|
11609
|
+
draggedNodeId: null,
|
|
11610
|
+
dropTarget: null
|
|
11611
|
+
});
|
|
11612
|
+
};
|
|
11613
|
+
/** Clears drop target when the cursor leaves this node (but not when moving to a child element). */
|
|
11614
|
+
const handleDragLeave = (e) => {
|
|
11615
|
+
if (!e.currentTarget.contains(e.relatedTarget)) setDragState((prev) => prev.dropTarget?.nodeId === node.id ? {
|
|
11616
|
+
...prev,
|
|
11617
|
+
dropTarget: null
|
|
11618
|
+
} : prev);
|
|
11619
|
+
};
|
|
11620
|
+
const isDraggedOver = dragState.dropTarget?.nodeId === node.id;
|
|
11621
|
+
const dropPosition = dragState.dropTarget?.position;
|
|
11622
|
+
const isDragging = dragState.draggedNodeId === node.id;
|
|
11623
|
+
const indent = level * 24;
|
|
11624
|
+
const dropLineBase = "after:absolute after:right-0 after:h-[2.5px] after:bg-primary after:left-(--drop-left) after:z-10";
|
|
11625
|
+
const showLine = isDraggedOver && dropPosition;
|
|
11626
|
+
const dropLineClass = cn("relative", {
|
|
11627
|
+
[`after:top-0 ${dropLineBase}`]: showLine === "before",
|
|
11628
|
+
[`after:-bottom-px ${dropLineBase}`]: showLine === "after" || showLine === "inside",
|
|
11629
|
+
"opacity-50": isDragging
|
|
11630
|
+
});
|
|
11631
|
+
const dropLineStyle = (offset) => isDraggedOver ? { "--drop-left": `${offset + (dropPosition === "inside" ? 24 : 0)}px` } : {};
|
|
11632
|
+
const dropHighlightClass = cn({ "bg-accent text-accent-foreground": isDraggedOver && dropPosition === "inside" });
|
|
11341
11633
|
if (!isGroup) return /* @__PURE__ */ jsxs("div", {
|
|
11342
11634
|
"data-test-id": `tree-node-${node.id}`,
|
|
11343
|
-
className: cn("relative flex items-center gap-2 py-1.5 px-2 rounded-md cursor-pointer hover:bg-accent hover:text-accent-foreground transition-colors border border-transparent hover:border hover:border-(--discreet-border)", node.className, { "bg-primary text-primary-foreground hover:border hover:border-(--discreet-border)": selectedId === node.id }),
|
|
11344
|
-
style: {
|
|
11345
|
-
|
|
11635
|
+
className: cn("relative group/node flex items-center gap-2 py-1.5 px-2 rounded-md cursor-pointer hover:bg-accent hover:text-accent-foreground transition-colors border border-transparent hover:border hover:border-(--discreet-border)", node.className, { "bg-primary text-primary-foreground hover:border hover:border-(--discreet-border)": selectedId === node.id }, dropLineClass, dropHighlightClass),
|
|
11636
|
+
style: {
|
|
11637
|
+
marginLeft: `${indent}px`,
|
|
11638
|
+
...dropLineStyle(0)
|
|
11639
|
+
},
|
|
11640
|
+
onClick: (e) => {
|
|
11641
|
+
if (e.target.closest("[data-slot=\"drag-handle\"]")) return;
|
|
11642
|
+
onNodeSelect?.(node);
|
|
11643
|
+
},
|
|
11644
|
+
onDragOver: onNodeDrop ? handleDragOver : void 0,
|
|
11645
|
+
onDrop: onNodeDrop ? handleDrop : void 0,
|
|
11646
|
+
onDragLeave: onNodeDrop ? handleDragLeave : void 0,
|
|
11346
11647
|
children: [
|
|
11347
11648
|
node.icon,
|
|
11348
11649
|
/* @__PURE__ */ jsx("span", {
|
|
11349
11650
|
className: "text-sm select-none truncate",
|
|
11350
11651
|
children: node.name
|
|
11351
11652
|
}),
|
|
11352
|
-
node.trailing
|
|
11653
|
+
node.trailing,
|
|
11654
|
+
!node.locked && (onNodeDelete || onNodeDrop) && /* @__PURE__ */ jsx(NodeActions, {
|
|
11655
|
+
node,
|
|
11656
|
+
onNodeDelete,
|
|
11657
|
+
onNodeDrop
|
|
11658
|
+
})
|
|
11353
11659
|
]
|
|
11354
11660
|
});
|
|
11355
11661
|
return /* @__PURE__ */ jsxs(AccordionItem, {
|
|
11356
11662
|
value: node.id,
|
|
11357
|
-
className: "border-0",
|
|
11663
|
+
className: "border-0 overflow-y-visible overflow-x-clip",
|
|
11358
11664
|
"data-test-id": `tree-group-${node.id}`,
|
|
11359
|
-
children: [/* @__PURE__ */ jsxs(
|
|
11360
|
-
|
|
11361
|
-
|
|
11362
|
-
|
|
11363
|
-
|
|
11364
|
-
|
|
11365
|
-
|
|
11366
|
-
|
|
11367
|
-
|
|
11368
|
-
|
|
11369
|
-
|
|
11370
|
-
}
|
|
11371
|
-
|
|
11372
|
-
|
|
11373
|
-
|
|
11374
|
-
|
|
11375
|
-
|
|
11376
|
-
|
|
11377
|
-
|
|
11378
|
-
|
|
11379
|
-
|
|
11380
|
-
}
|
|
11381
|
-
|
|
11382
|
-
|
|
11383
|
-
|
|
11384
|
-
|
|
11385
|
-
|
|
11386
|
-
|
|
11387
|
-
|
|
11388
|
-
|
|
11389
|
-
|
|
11390
|
-
|
|
11391
|
-
|
|
11392
|
-
|
|
11393
|
-
|
|
11394
|
-
|
|
11395
|
-
|
|
11396
|
-
|
|
11397
|
-
|
|
11398
|
-
|
|
11399
|
-
|
|
11665
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
11666
|
+
className: cn("relative group/node overflow-y-visible overflow-x-clip", dropLineClass),
|
|
11667
|
+
style: dropLineStyle(indent),
|
|
11668
|
+
onDragOver: onNodeDrop ? handleDragOver : void 0,
|
|
11669
|
+
onDrop: onNodeDrop ? handleDrop : void 0,
|
|
11670
|
+
onDragLeave: onNodeDrop ? handleDragLeave : void 0,
|
|
11671
|
+
children: [/* @__PURE__ */ jsxs(AccordionTrigger, {
|
|
11672
|
+
style: { "--margin-left": `calc(${level * 24 + 16}px - 16px)` },
|
|
11673
|
+
className: cn("relative flex flex-1 overflow-hidden items-center gap-2 py-1.5 px-2 rounded-md ml-(--margin-left) group-hover/node:bg-accent group-hover/node:text-accent-foreground hover:no-underline transition-colors border border-transparent group-hover/node:border group-hover/node:border-(--discreet-border)", "[&>svg:last-child]:hidden", node.className, { "bg-primary text-primary-foreground": selectedId === node.id }, dropHighlightClass),
|
|
11674
|
+
children: [
|
|
11675
|
+
/* @__PURE__ */ jsx(PlusIcon, {
|
|
11676
|
+
"data-test-id": `tree-expand-${node.id}`,
|
|
11677
|
+
className: "size-4 shrink-0 hidden [[data-state=closed]>&]:block hover:border rounded",
|
|
11678
|
+
onClick: () => {
|
|
11679
|
+
onToggleGroup?.({
|
|
11680
|
+
isExpanded: true,
|
|
11681
|
+
node
|
|
11682
|
+
});
|
|
11683
|
+
}
|
|
11684
|
+
}),
|
|
11685
|
+
/* @__PURE__ */ jsx(MinusIcon, {
|
|
11686
|
+
"data-test-id": `tree-collapse-${node.id}`,
|
|
11687
|
+
className: "size-4 shrink-0 hidden [[data-state=open]>&]:block hover:border rounded",
|
|
11688
|
+
onClick: () => {
|
|
11689
|
+
onToggleGroup?.({
|
|
11690
|
+
isExpanded: false,
|
|
11691
|
+
node
|
|
11692
|
+
});
|
|
11693
|
+
}
|
|
11694
|
+
}),
|
|
11695
|
+
/* @__PURE__ */ jsxs("div", {
|
|
11696
|
+
"data-test-id": `tree-group-label-${node.id}`,
|
|
11697
|
+
className: "flex w-[calc(100%-16px)] gap-2",
|
|
11698
|
+
onClick: (e) => {
|
|
11699
|
+
e.stopPropagation();
|
|
11700
|
+
if (e.target.closest("[data-slot=\"dropdown-menu-trigger\"]")) return;
|
|
11701
|
+
if (e.target.closest("[data-slot=\"drag-handle\"]")) return;
|
|
11702
|
+
onGroupSelect?.(node);
|
|
11703
|
+
},
|
|
11704
|
+
children: [
|
|
11705
|
+
node.icon,
|
|
11706
|
+
/* @__PURE__ */ jsx("span", {
|
|
11707
|
+
className: "text-sm select-none truncate text-left",
|
|
11708
|
+
children: node.name
|
|
11709
|
+
}),
|
|
11710
|
+
node.trailing
|
|
11711
|
+
]
|
|
11712
|
+
})
|
|
11713
|
+
]
|
|
11714
|
+
}), !node.locked && (onNodeDelete || onNodeDrop) && /* @__PURE__ */ jsx(NodeActions, {
|
|
11715
|
+
node,
|
|
11716
|
+
onNodeDelete,
|
|
11717
|
+
onNodeDrop
|
|
11718
|
+
})]
|
|
11400
11719
|
}), hasChildren && /* @__PURE__ */ jsxs(AccordionContent, {
|
|
11401
|
-
className: "pb-0 pt-0 relative",
|
|
11720
|
+
className: "pb-0 pt-0 relative overflow-y-visible overflow-x-clip",
|
|
11402
11721
|
children: [/* @__PURE__ */ jsx("div", {
|
|
11403
11722
|
style: { "--left-offset": `calc(${level * 24 + 32}px - 16px)` },
|
|
11404
11723
|
className: "before:absolute before:top-0 before:start-(--left-offset) before:w-0.5 before:-ms-px before:h-full before:bg-sidebar-ring dark:before:bg-sidebar-ring"
|
|
11405
11724
|
}), /* @__PURE__ */ jsx(Accordion, {
|
|
11406
11725
|
type: "multiple",
|
|
11407
11726
|
value: defaultExpandedIds,
|
|
11408
|
-
children: node.children?.map((child
|
|
11727
|
+
children: node.children?.map((child) => /* @__PURE__ */ jsx(TreeBranch, {
|
|
11409
11728
|
node: child,
|
|
11410
11729
|
level: level + 1,
|
|
11411
11730
|
onNodeSelect,
|
|
11412
11731
|
onGroupSelect,
|
|
11413
11732
|
onToggleGroup,
|
|
11414
|
-
|
|
11415
|
-
|
|
11733
|
+
onNodeDelete,
|
|
11734
|
+
onNodeDrop,
|
|
11416
11735
|
defaultExpandedIds,
|
|
11417
|
-
selectedId
|
|
11736
|
+
selectedId,
|
|
11737
|
+
rootData
|
|
11418
11738
|
}, child.id))
|
|
11419
11739
|
})]
|
|
11420
11740
|
})]
|
|
11421
11741
|
});
|
|
11422
11742
|
};
|
|
11423
|
-
const TreeView = React$1.forwardRef(({ data, onNodeSelect, onGroupSelect, onToggleGroup, className, defaultExpandedIds = [], selectedId }, ref) => {
|
|
11424
|
-
|
|
11425
|
-
|
|
11426
|
-
|
|
11427
|
-
|
|
11428
|
-
|
|
11429
|
-
|
|
11430
|
-
|
|
11431
|
-
|
|
11432
|
-
|
|
11433
|
-
|
|
11434
|
-
|
|
11435
|
-
|
|
11436
|
-
|
|
11437
|
-
|
|
11438
|
-
|
|
11439
|
-
|
|
11440
|
-
|
|
11743
|
+
const TreeView = React$1.forwardRef(({ data, onNodeSelect, onGroupSelect, onToggleGroup, onNodeDelete, onNodeDrop, className, defaultExpandedIds = [], selectedId }, ref) => {
|
|
11744
|
+
const [dragState, setDragState] = React$1.useState({
|
|
11745
|
+
draggedNodeId: null,
|
|
11746
|
+
dropTarget: null
|
|
11747
|
+
});
|
|
11748
|
+
return /* @__PURE__ */ jsx(DragContext.Provider, {
|
|
11749
|
+
value: {
|
|
11750
|
+
dragState,
|
|
11751
|
+
setDragState
|
|
11752
|
+
},
|
|
11753
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
11754
|
+
ref,
|
|
11755
|
+
className: cn("w-full select-none", className),
|
|
11756
|
+
onDragOver: onNodeDrop && dragState.draggedNodeId ? (e) => e.preventDefault() : void 0,
|
|
11757
|
+
children: /* @__PURE__ */ jsx(Accordion, {
|
|
11758
|
+
type: "multiple",
|
|
11759
|
+
value: defaultExpandedIds,
|
|
11760
|
+
children: data.map((node) => /* @__PURE__ */ jsx(TreeBranch, {
|
|
11761
|
+
node,
|
|
11762
|
+
level: 0,
|
|
11763
|
+
onNodeSelect,
|
|
11764
|
+
onGroupSelect,
|
|
11765
|
+
onToggleGroup,
|
|
11766
|
+
onNodeDelete,
|
|
11767
|
+
onNodeDrop,
|
|
11768
|
+
defaultExpandedIds,
|
|
11769
|
+
selectedId,
|
|
11770
|
+
rootData: data
|
|
11771
|
+
}, node.id))
|
|
11772
|
+
})
|
|
11441
11773
|
})
|
|
11442
11774
|
});
|
|
11443
11775
|
});
|
|
11776
|
+
const NodeActions = ({ node, onNodeDelete, onNodeDrop }) => {
|
|
11777
|
+
const [showDeleteConfirmation, setShowDeleteConfirmation] = React$1.useState(false);
|
|
11778
|
+
const containerRef = React$1.useRef(null);
|
|
11779
|
+
const { setDragState } = React$1.useContext(DragContext);
|
|
11780
|
+
React$1.useEffect(() => {
|
|
11781
|
+
if (!showDeleteConfirmation) return;
|
|
11782
|
+
const handleClickOutside = (e) => {
|
|
11783
|
+
if (containerRef.current && !containerRef.current.contains(e.target)) setShowDeleteConfirmation(false);
|
|
11784
|
+
};
|
|
11785
|
+
document.addEventListener("mousedown", handleClickOutside);
|
|
11786
|
+
return () => document.removeEventListener("mousedown", handleClickOutside);
|
|
11787
|
+
}, [showDeleteConfirmation]);
|
|
11788
|
+
return /* @__PURE__ */ jsx("div", {
|
|
11789
|
+
ref: containerRef,
|
|
11790
|
+
className: "absolute top-1/2 -translate-y-1/2 end-1 flex items-center gap-0.5 rounded transition-none group-hover/node:bg-accent",
|
|
11791
|
+
children: showDeleteConfirmation && onNodeDelete ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Button, {
|
|
11792
|
+
variant: "ghost",
|
|
11793
|
+
size: "iconXs",
|
|
11794
|
+
onClick: (e) => {
|
|
11795
|
+
e.stopPropagation();
|
|
11796
|
+
setShowDeleteConfirmation(false);
|
|
11797
|
+
},
|
|
11798
|
+
children: /* @__PURE__ */ jsx(XIcon, { className: "size-4" })
|
|
11799
|
+
}), /* @__PURE__ */ jsx(Button, {
|
|
11800
|
+
variant: "destructive",
|
|
11801
|
+
size: "iconXs",
|
|
11802
|
+
onClick: (e) => {
|
|
11803
|
+
e.stopPropagation();
|
|
11804
|
+
onNodeDelete(node);
|
|
11805
|
+
setShowDeleteConfirmation(false);
|
|
11806
|
+
},
|
|
11807
|
+
children: /* @__PURE__ */ jsx(CheckIcon$1, { className: "size-4" })
|
|
11808
|
+
})] }) : /* @__PURE__ */ jsxs(Fragment, { children: [onNodeDelete && /* @__PURE__ */ jsx(Button, {
|
|
11809
|
+
variant: "ghost",
|
|
11810
|
+
size: "iconXs",
|
|
11811
|
+
className: "opacity-0 group-hover/node:opacity-100",
|
|
11812
|
+
onClick: (e) => {
|
|
11813
|
+
e.stopPropagation();
|
|
11814
|
+
setShowDeleteConfirmation(true);
|
|
11815
|
+
},
|
|
11816
|
+
children: /* @__PURE__ */ jsx(Trash2Icon, { className: "size-4" })
|
|
11817
|
+
}), onNodeDrop && /* @__PURE__ */ jsx(Button, {
|
|
11818
|
+
variant: "ghost",
|
|
11819
|
+
size: "iconXs",
|
|
11820
|
+
"data-slot": "drag-handle",
|
|
11821
|
+
draggable: true,
|
|
11822
|
+
className: "opacity-0 group-hover/node:opacity-100 cursor-grab active:cursor-grabbing bg-transparent",
|
|
11823
|
+
onDragStart: (e) => {
|
|
11824
|
+
e.dataTransfer.effectAllowed = "move";
|
|
11825
|
+
e.dataTransfer.setData("text/plain", node.id);
|
|
11826
|
+
setDragState({
|
|
11827
|
+
draggedNodeId: node.id,
|
|
11828
|
+
dropTarget: null
|
|
11829
|
+
});
|
|
11830
|
+
},
|
|
11831
|
+
onDragEnd: () => {
|
|
11832
|
+
setDragState({
|
|
11833
|
+
draggedNodeId: null,
|
|
11834
|
+
dropTarget: null
|
|
11835
|
+
});
|
|
11836
|
+
},
|
|
11837
|
+
children: /* @__PURE__ */ jsx(GripVerticalIcon, { className: "size-4" })
|
|
11838
|
+
})] })
|
|
11839
|
+
});
|
|
11840
|
+
};
|
|
11444
11841
|
TreeView.displayName = "TreeView";
|
|
11445
11842
|
|
|
11446
11843
|
//#endregion
|
|
11447
|
-
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, Avatar, AvatarFallback, AvatarImage, Badge, KanbanBoard as Board, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, Calendar, CalendarDayButton, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, Checkbox, CheckboxCell, Collapse, CollapseContent, CollapseTrigger, KanbanColumn as Column, KanbanColumnHandle as ColumnHandle, ComboboxDemo, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandPalette, CommandPaletteDialog, CommandPaletteEmpty, CommandPaletteGroup, CommandPaletteInput, CommandPaletteItem, CommandPaletteList, CommandPaletteSeparator, CommandPaletteShortcut, CommandSeparator, CommandShortcut, CommentCreate, CommentList, CommentThread, ContentFrame, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DataGrid, DataGridCell, DataGridCellWrapper, DataGridColumnHeader, DataGridContextMenu, DataGridRow, DataGridSearch, DataGridViewMenu, DateCell, DatePickerDemo, DeferredInput, DeferredNumberInput, DeferredTextarea, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, DynamicTabbedSidebar, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, GanttCell, GanttTimeline, GanttTimerangePicker, HeaderComponents, HierarchyCell, HierarchyItem, HoverCard, HoverCardContent, HoverCardTrigger, InfoCard, Input, KanbanItem as Item, KanbanItemHandle as ItemHandle, KanbanRoot as Kanban, KanbanBoard, KanbanColumn, KanbanColumnHandle, KanbanItem, KanbanItemHandle, KanbanOverlay, Label, Loader, LongTextCell, MarkValueRenderer, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, Modal, MultiSelectCell, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NumberCell, NumberInput, KanbanOverlay as Overlay, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, RadioGroup, RadioGroupItem, ReactNodeCell, ResizableHandle, ResizablePanel, ResizablePanelGroup, KanbanRoot as Root, SIDEBAR_KEYBOARD_SHORTCUT, SIDEBAR_KEYBOARD_SHORTCUT_RIGHT, SIDEBAR_MAX_WIDTH, SIDEBAR_MIN_WIDTH, SIDEBAR_WIDTH, SIDEBAR_WIDTH_ICON, SIDEBAR_WIDTH_MOBILE, ScrollArea, ScrollBar, Select, SelectCell, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, ShortTextCell, Sidebar, SidebarContent, SidebarContext, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarSideContext, SidebarTab, SidebarTabsContext, SidebarTabsProvider, SidebarTrigger, Skeleton, Slicer, SlicerHierarchyItem, Slider, Spinner, Stepper, StepperContent, StepperDescription, StepperIndicator, StepperItem, StepperList, StepperNext, StepperPrev, StepperSeparator, StepperTitle, StepperTrigger, Switch, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TreeBranch, TreeView, badgeVariants, buildLabelMap, buttonVariants, checkboxVariants, cn, commandInputVariants, createSelectColumn, findOptionById, getAllDescendantIds, getAllDescendantValues, getAllIds, getAncestorIds, getCellKey, getCommonPinningStyles, getInitialExpandedIds, getLabelPath, getLineCount, getRowHeightValue, inputVariants, isoToLocalDate, knobVariants, matchesSearch, navigationMenuTriggerStyle, parseCellKey, sliderVariants, testId, toast, toggleVariants, useCallbackRef, useDataGrid, useDebouncedCallback, useIsMobile, useRegisteredSidebars, useSidebar, useSidebarTabs, useStore as useStepper };
|
|
11844
|
+
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, Avatar, AvatarFallback, AvatarImage, Badge, KanbanBoard as Board, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, Calendar, CalendarDayButton, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, Checkbox, CheckboxCell, Collapse, CollapseContent, CollapseTrigger, KanbanColumn as Column, KanbanColumnHandle as ColumnHandle, ComboboxDemo, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandPalette, CommandPaletteDialog, CommandPaletteEmpty, CommandPaletteGroup, CommandPaletteInput, CommandPaletteItem, CommandPaletteList, CommandPaletteSeparator, CommandPaletteShortcut, CommandSeparator, CommandShortcut, CommentCreate, CommentList, CommentThread, ContentFrame, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DataGrid, DataGridCell, DataGridCellWrapper, DataGridColumnHeader, DataGridContextMenu, DataGridRow, DataGridSearch, DataGridViewMenu, DateCell, DatePickerDemo, DeferredInput, DeferredNumberInput, DeferredTextarea, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, DynamicTabbedSidebar, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, GanttCell, GanttTimeline, GanttTimerangePicker, HeaderComponents, HierarchyCell, HierarchyItem, HoverCard, HoverCardContent, HoverCardTrigger, InfoCard, Input, KanbanItem as Item, KanbanItemHandle as ItemHandle, JsonCell, KanbanRoot as Kanban, KanbanBoard, KanbanColumn, KanbanColumnHandle, KanbanItem, KanbanItemHandle, KanbanOverlay, Label, Loader, LongTextCell, MarkValueRenderer, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, Modal, MultiSelectCell, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NumberCell, NumberInput, KanbanOverlay as Overlay, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, RadioGroup, RadioGroupItem, ReactNodeCell, ResizableHandle, ResizablePanel, ResizablePanelGroup, KanbanRoot as Root, SIDEBAR_KEYBOARD_SHORTCUT, SIDEBAR_KEYBOARD_SHORTCUT_RIGHT, SIDEBAR_MAX_WIDTH, SIDEBAR_MIN_WIDTH, SIDEBAR_WIDTH, SIDEBAR_WIDTH_ICON, SIDEBAR_WIDTH_MOBILE, ScrollArea, ScrollBar, Select, SelectCell, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, ShortTextCell, Sidebar, SidebarContent, SidebarContext, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarSideContext, SidebarTab, SidebarTabsContext, SidebarTabsProvider, SidebarTrigger, Skeleton, Slicer, SlicerHierarchyItem, Slider, Spinner, Stepper, StepperContent, StepperDescription, StepperIndicator, StepperItem, StepperList, StepperNext, StepperPrev, StepperSeparator, StepperTitle, StepperTrigger, Switch, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TreeBranch, TreeView, badgeVariants, buildLabelMap, buttonVariants, checkboxVariants, cn, commandInputVariants, createSelectColumn, findOptionById, getAllDescendantIds, getAllDescendantValues, getAllIds, getAncestorIds, getCellKey, getCommonPinningStyles, getInitialExpandedIds, getLabelPath, getLineCount, getRowHeightValue, inputVariants, isoToLocalDate, knobVariants, matchesSearch, navigationMenuTriggerStyle, parseCellKey, sliderVariants, testId, toast, toggleVariants, useCallbackRef, useDataGrid, useDebouncedCallback, useIsMobile, useRegisteredSidebars, useSidebar, useSidebarTabs, useStore as useStepper };
|
|
11448
11845
|
//# sourceMappingURL=index.js.map
|