@sth87/shadcn-design-system 0.1.7 → 0.1.8

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.
Files changed (52) hide show
  1. package/dist/cjs/components/Table/TableFilter/data-table-date-filter.cjs.map +1 -1
  2. package/dist/cjs/components/Table/TableFilter/data-table-filter-popover.cjs.map +1 -1
  3. package/dist/cjs/components/Table/TableFilter/data-table-slider-filter.cjs.map +1 -1
  4. package/dist/cjs/components/Table/data-table-column-header.cjs.map +1 -1
  5. package/dist/cjs/components/Table/data-table-toolbar.cjs +2 -0
  6. package/dist/cjs/components/Table/data-table-toolbar.cjs.map +1 -0
  7. package/dist/cjs/components/Table/data-table-view-options.cjs +2 -0
  8. package/dist/cjs/components/Table/data-table-view-options.cjs.map +1 -0
  9. package/dist/cjs/components/Table/select-column.cjs +2 -0
  10. package/dist/cjs/components/Table/select-column.cjs.map +1 -0
  11. package/dist/cjs/index.cjs +1 -1
  12. package/dist/cjs/node_modules/.pnpm/@dnd-kit_accessibility@3.1.1_react@19.1.1/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.cjs +2 -0
  13. package/dist/cjs/node_modules/.pnpm/@dnd-kit_accessibility@3.1.1_react@19.1.1/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.cjs.map +1 -0
  14. package/dist/cjs/node_modules/.pnpm/@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/@dnd-kit/core/dist/core.esm.cjs +6 -0
  15. package/dist/cjs/node_modules/.pnpm/@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/@dnd-kit/core/dist/core.esm.cjs.map +1 -0
  16. package/dist/cjs/node_modules/.pnpm/@dnd-kit_sortable@10.0.0_@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/@dnd-kit/sortable/dist/sortable.esm.cjs +2 -0
  17. package/dist/cjs/node_modules/.pnpm/@dnd-kit_sortable@10.0.0_@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/@dnd-kit/sortable/dist/sortable.esm.cjs.map +1 -0
  18. package/dist/cjs/node_modules/.pnpm/@dnd-kit_utilities@3.2.2_react@19.1.1/node_modules/@dnd-kit/utilities/dist/utilities.esm.cjs +2 -0
  19. package/dist/cjs/node_modules/.pnpm/@dnd-kit_utilities@3.2.2_react@19.1.1/node_modules/@dnd-kit/utilities/dist/utilities.esm.cjs.map +1 -0
  20. package/dist/esm/components/Table/TableFilter/data-table-date-filter.js.map +1 -1
  21. package/dist/esm/components/Table/TableFilter/data-table-filter-popover.js.map +1 -1
  22. package/dist/esm/components/Table/TableFilter/data-table-slider-filter.js.map +1 -1
  23. package/dist/esm/components/Table/data-table-column-header.js.map +1 -1
  24. package/dist/esm/components/Table/data-table-toolbar.js +116 -0
  25. package/dist/esm/components/Table/data-table-toolbar.js.map +1 -0
  26. package/dist/esm/components/Table/data-table-view-options.js +258 -0
  27. package/dist/esm/components/Table/data-table-view-options.js.map +1 -0
  28. package/dist/esm/components/Table/select-column.js +33 -0
  29. package/dist/esm/components/Table/select-column.js.map +1 -0
  30. package/dist/esm/index.js +211 -197
  31. package/dist/esm/index.js.map +1 -1
  32. package/dist/esm/node_modules/.pnpm/@dnd-kit_accessibility@3.1.1_react@19.1.1/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.js +57 -0
  33. package/dist/esm/node_modules/.pnpm/@dnd-kit_accessibility@3.1.1_react@19.1.1/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.js.map +1 -0
  34. package/dist/esm/node_modules/.pnpm/@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/@dnd-kit/core/dist/core.esm.js +2345 -0
  35. package/dist/esm/node_modules/.pnpm/@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/@dnd-kit/core/dist/core.esm.js.map +1 -0
  36. package/dist/esm/node_modules/.pnpm/@dnd-kit_sortable@10.0.0_@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/@dnd-kit/sortable/dist/sortable.esm.js +440 -0
  37. package/dist/esm/node_modules/.pnpm/@dnd-kit_sortable@10.0.0_@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/@dnd-kit/sortable/dist/sortable.esm.js.map +1 -0
  38. package/dist/esm/node_modules/.pnpm/@dnd-kit_utilities@3.2.2_react@19.1.1/node_modules/@dnd-kit/utilities/dist/utilities.esm.js +236 -0
  39. package/dist/esm/node_modules/.pnpm/@dnd-kit_utilities@3.2.2_react@19.1.1/node_modules/@dnd-kit/utilities/dist/utilities.esm.js.map +1 -0
  40. package/dist/types/components/Table/TableFilter/data-table-date-filter.d.ts +1 -2
  41. package/dist/types/components/Table/TableFilter/data-table-date-filter.d.ts.map +1 -1
  42. package/dist/types/components/Table/TableFilter/data-table-filter-popover.d.ts +1 -2
  43. package/dist/types/components/Table/TableFilter/data-table-filter-popover.d.ts.map +1 -1
  44. package/dist/types/components/Table/TableFilter/data-table-slider-filter.d.ts +1 -2
  45. package/dist/types/components/Table/TableFilter/data-table-slider-filter.d.ts.map +1 -1
  46. package/dist/types/components/Table/data-table-column-header.d.ts +1 -2
  47. package/dist/types/components/Table/data-table-column-header.d.ts.map +1 -1
  48. package/dist/types/components/Table/data-table-toolbar.d.ts +1 -2
  49. package/dist/types/components/Table/data-table-toolbar.d.ts.map +1 -1
  50. package/dist/types/components/Table/index.d.ts +7 -0
  51. package/dist/types/components/Table/index.d.ts.map +1 -1
  52. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"data-table-date-filter.cjs","sources":["../../../../../src/components/Table/TableFilter/data-table-date-filter.tsx"],"sourcesContent":["\"use client\";\n\nimport { formatDate } from \"@/utils/datetime\";\nimport type { Column } from \"@tanstack/react-table\";\nimport { CalendarIcon, XCircle } from \"lucide-react\";\nimport * as React from \"react\";\nimport type { DateRange } from \"react-day-picker\";\nimport { Separator } from \"../../Separator\";\nimport { Popover } from \"../../Popover\";\nimport { Button } from \"../../Button\";\nimport { Calendar } from \"../../Calendar\";\n\ntype DateSelection = Date[] | DateRange;\n\nfunction getIsDateRange(value: DateSelection): value is DateRange {\n return value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction parseAsDate(timestamp: number | string | undefined): Date | undefined {\n if (!timestamp) return undefined;\n const numericTimestamp =\n typeof timestamp === \"string\" ? Number(timestamp) : timestamp;\n const date = new Date(numericTimestamp);\n return !Number.isNaN(date.getTime()) ? date : undefined;\n}\n\nfunction parseColumnFilterValue(value: unknown) {\n if (value === null || value === undefined) {\n return [];\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => {\n if (typeof item === \"number\" || typeof item === \"string\") {\n return item;\n }\n return undefined;\n });\n }\n\n if (typeof value === \"string\" || typeof value === \"number\") {\n return [value];\n }\n\n return [];\n}\n\ninterface DataTableDateFilterProps<TData> {\n column: Column<TData, unknown>;\n title?: string;\n multiple?: boolean;\n}\n\nexport function DataTableDateFilter<TData>({\n column,\n title,\n multiple,\n}: DataTableDateFilterProps<TData>) {\n const columnFilterValue = column.getFilterValue();\n\n const selectedDates = React.useMemo<DateSelection>(() => {\n if (!columnFilterValue) {\n return multiple ? { from: undefined, to: undefined } : [];\n }\n\n if (multiple) {\n const timestamps = parseColumnFilterValue(columnFilterValue);\n return {\n from: parseAsDate(timestamps[0]),\n to: parseAsDate(timestamps[1]),\n };\n }\n\n const timestamps = parseColumnFilterValue(columnFilterValue);\n const date = parseAsDate(timestamps[0]);\n return date ? [date] : [];\n }, [columnFilterValue, multiple]);\n\n const onSelect = React.useCallback(\n (date: Date | DateRange | undefined) => {\n if (!date) {\n column.setFilterValue(undefined);\n return;\n }\n\n if (multiple && !(\"getTime\" in date)) {\n const from = date.from?.getTime();\n const to = date.to?.getTime();\n column.setFilterValue(from || to ? [from, to] : undefined);\n } else if (!multiple && \"getTime\" in date) {\n column.setFilterValue(date.getTime());\n }\n },\n [column, multiple]\n );\n\n const onReset = React.useCallback(\n (event: React.MouseEvent) => {\n event.stopPropagation();\n column.setFilterValue(undefined);\n },\n [column]\n );\n\n const hasValue = React.useMemo(() => {\n if (multiple) {\n if (!getIsDateRange(selectedDates)) return false;\n return selectedDates.from || selectedDates.to;\n }\n if (!Array.isArray(selectedDates)) return false;\n return selectedDates.length > 0;\n }, [multiple, selectedDates]);\n\n const formatDateRange = React.useCallback((range: DateRange) => {\n if (!range.from && !range.to) return \"\";\n if (range.from && range.to) {\n return `${formatDate(range.from)} - ${formatDate(range.to)}`;\n }\n return formatDate(range.from ?? range.to);\n }, []);\n\n const label = React.useMemo(() => {\n if (multiple) {\n if (!getIsDateRange(selectedDates)) return null;\n\n const hasSelectedDates = selectedDates.from || selectedDates.to;\n const dateText = hasSelectedDates\n ? formatDateRange(selectedDates)\n : \"Select date range\";\n\n return (\n <span className=\"ds:flex ds:items-center ds:gap-2\">\n <span>{title}</span>\n {hasSelectedDates && (\n <>\n <Separator\n orientation=\"vertical\"\n className=\"ds:mx-0.5 ds:data-[orientation=vertical]:h-4\"\n />\n <span>{dateText}</span>\n </>\n )}\n </span>\n );\n }\n\n if (getIsDateRange(selectedDates)) return null;\n\n const hasSelectedDate = selectedDates.length > 0;\n const dateText = hasSelectedDate\n ? formatDate(selectedDates[0])\n : \"Select date\";\n\n return (\n <span className=\"ds:flex ds:items-center ds:gap-2\">\n <span>{title}</span>\n {hasSelectedDate && (\n <>\n <Separator\n orientation=\"vertical\"\n className=\"ds:mx-0.5 ds:data-[orientation=vertical]:h-4\"\n />\n <span>{dateText}</span>\n </>\n )}\n </span>\n );\n }, [selectedDates, multiple, formatDateRange, title]);\n\n const PopContent = (\n <div className=\"ds:w-auto ds:p-0\">\n {multiple ? (\n <Calendar\n autoFocus\n captionLayout=\"dropdown\"\n mode=\"range\"\n selected={\n getIsDateRange(selectedDates)\n ? selectedDates\n : { from: undefined, to: undefined }\n }\n onSelect={onSelect}\n />\n ) : (\n <Calendar\n captionLayout=\"dropdown\"\n mode=\"single\"\n selected={\n !getIsDateRange(selectedDates) ? selectedDates[0] : undefined\n }\n onSelect={onSelect}\n />\n )}\n </div>\n );\n\n return (\n <Popover content={PopContent}>\n <Button variant=\"outline\" size=\"sm\" className=\"ds:border-dashed ds:font-normal\">\n {hasValue ? (\n <div\n role=\"button\"\n aria-label={`Clear ${title} filter`}\n tabIndex={0}\n onClick={onReset}\n className=\"ds:rounded-sm ds:opacity-70 ds:transition-opacity ds:hover:opacity-100 ds:focus-visible:outline-none ds:focus-visible:ring-1 ds:focus-visible:ring-ring\"\n >\n <XCircle />\n </div>\n ) : (\n <CalendarIcon />\n )}\n {label}\n </Button>\n </Popover>\n );\n}\n"],"names":["getIsDateRange","value","parseAsDate","timestamp","numericTimestamp","date","parseColumnFilterValue","item","DataTableDateFilter","column","title","multiple","columnFilterValue","selectedDates","React","timestamps","onSelect","from","to","onReset","event","hasValue","formatDateRange","range","formatDate","label","hasSelectedDates","dateText","jsxs","jsx","Fragment","Separator","hasSelectedDate","PopContent","Calendar","Popover","Button","XCircle","CalendarIcon"],"mappings":"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"}
1
+ {"version":3,"file":"data-table-date-filter.cjs","sources":["../../../../../src/components/Table/TableFilter/data-table-date-filter.tsx"],"sourcesContent":["\"use client\";\n\nimport { formatDate } from \"@/utils/datetime\";\nimport type { Column } from \"@tanstack/react-table\";\nimport { CalendarIcon, XCircle } from \"lucide-react\";\nimport * as React from \"react\";\nimport type { DateRange } from \"react-day-picker\";\nimport { Separator } from \"../../Separator\";\nimport { Popover } from \"../../Popover\";\nimport { Button } from \"../../Button\";\nimport { Calendar } from \"../../Calendar\";\n\ntype DateSelection = Date[] | DateRange;\n\nfunction getIsDateRange(value: DateSelection): value is DateRange {\n return value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction parseAsDate(timestamp: number | string | undefined): Date | undefined {\n if (!timestamp) return undefined;\n const numericTimestamp =\n typeof timestamp === \"string\" ? Number(timestamp) : timestamp;\n const date = new Date(numericTimestamp);\n return !Number.isNaN(date.getTime()) ? date : undefined;\n}\n\nfunction parseColumnFilterValue(value: unknown) {\n if (value === null || value === undefined) {\n return [];\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => {\n if (typeof item === \"number\" || typeof item === \"string\") {\n return item;\n }\n return undefined;\n });\n }\n\n if (typeof value === \"string\" || typeof value === \"number\") {\n return [value];\n }\n\n return [];\n}\n\nexport interface DataTableDateFilterProps<TData> {\n column: Column<TData, unknown>;\n title?: string;\n multiple?: boolean;\n}\n\nexport function DataTableDateFilter<TData>({\n column,\n title,\n multiple,\n}: DataTableDateFilterProps<TData>) {\n const columnFilterValue = column.getFilterValue();\n\n const selectedDates = React.useMemo<DateSelection>(() => {\n if (!columnFilterValue) {\n return multiple ? { from: undefined, to: undefined } : [];\n }\n\n if (multiple) {\n const timestamps = parseColumnFilterValue(columnFilterValue);\n return {\n from: parseAsDate(timestamps[0]),\n to: parseAsDate(timestamps[1]),\n };\n }\n\n const timestamps = parseColumnFilterValue(columnFilterValue);\n const date = parseAsDate(timestamps[0]);\n return date ? [date] : [];\n }, [columnFilterValue, multiple]);\n\n const onSelect = React.useCallback(\n (date: Date | DateRange | undefined) => {\n if (!date) {\n column.setFilterValue(undefined);\n return;\n }\n\n if (multiple && !(\"getTime\" in date)) {\n const from = date.from?.getTime();\n const to = date.to?.getTime();\n column.setFilterValue(from || to ? [from, to] : undefined);\n } else if (!multiple && \"getTime\" in date) {\n column.setFilterValue(date.getTime());\n }\n },\n [column, multiple]\n );\n\n const onReset = React.useCallback(\n (event: React.MouseEvent) => {\n event.stopPropagation();\n column.setFilterValue(undefined);\n },\n [column]\n );\n\n const hasValue = React.useMemo(() => {\n if (multiple) {\n if (!getIsDateRange(selectedDates)) return false;\n return selectedDates.from || selectedDates.to;\n }\n if (!Array.isArray(selectedDates)) return false;\n return selectedDates.length > 0;\n }, [multiple, selectedDates]);\n\n const formatDateRange = React.useCallback((range: DateRange) => {\n if (!range.from && !range.to) return \"\";\n if (range.from && range.to) {\n return `${formatDate(range.from)} - ${formatDate(range.to)}`;\n }\n return formatDate(range.from ?? range.to);\n }, []);\n\n const label = React.useMemo(() => {\n if (multiple) {\n if (!getIsDateRange(selectedDates)) return null;\n\n const hasSelectedDates = selectedDates.from || selectedDates.to;\n const dateText = hasSelectedDates\n ? formatDateRange(selectedDates)\n : \"Select date range\";\n\n return (\n <span className=\"ds:flex ds:items-center ds:gap-2\">\n <span>{title}</span>\n {hasSelectedDates && (\n <>\n <Separator\n orientation=\"vertical\"\n className=\"ds:mx-0.5 ds:data-[orientation=vertical]:h-4\"\n />\n <span>{dateText}</span>\n </>\n )}\n </span>\n );\n }\n\n if (getIsDateRange(selectedDates)) return null;\n\n const hasSelectedDate = selectedDates.length > 0;\n const dateText = hasSelectedDate\n ? formatDate(selectedDates[0])\n : \"Select date\";\n\n return (\n <span className=\"ds:flex ds:items-center ds:gap-2\">\n <span>{title}</span>\n {hasSelectedDate && (\n <>\n <Separator\n orientation=\"vertical\"\n className=\"ds:mx-0.5 ds:data-[orientation=vertical]:h-4\"\n />\n <span>{dateText}</span>\n </>\n )}\n </span>\n );\n }, [selectedDates, multiple, formatDateRange, title]);\n\n const PopContent = (\n <div className=\"ds:w-auto ds:p-0\">\n {multiple ? (\n <Calendar\n autoFocus\n captionLayout=\"dropdown\"\n mode=\"range\"\n selected={\n getIsDateRange(selectedDates)\n ? selectedDates\n : { from: undefined, to: undefined }\n }\n onSelect={onSelect}\n />\n ) : (\n <Calendar\n captionLayout=\"dropdown\"\n mode=\"single\"\n selected={\n !getIsDateRange(selectedDates) ? selectedDates[0] : undefined\n }\n onSelect={onSelect}\n />\n )}\n </div>\n );\n\n return (\n <Popover content={PopContent}>\n <Button variant=\"outline\" size=\"sm\" className=\"ds:border-dashed ds:font-normal\">\n {hasValue ? (\n <div\n role=\"button\"\n aria-label={`Clear ${title} filter`}\n tabIndex={0}\n onClick={onReset}\n className=\"ds:rounded-sm ds:opacity-70 ds:transition-opacity ds:hover:opacity-100 ds:focus-visible:outline-none ds:focus-visible:ring-1 ds:focus-visible:ring-ring\"\n >\n <XCircle />\n </div>\n ) : (\n <CalendarIcon />\n )}\n {label}\n </Button>\n </Popover>\n );\n}\n"],"names":["getIsDateRange","value","parseAsDate","timestamp","numericTimestamp","date","parseColumnFilterValue","item","DataTableDateFilter","column","title","multiple","columnFilterValue","selectedDates","React","timestamps","onSelect","from","to","onReset","event","hasValue","formatDateRange","range","formatDate","label","hasSelectedDates","dateText","jsxs","jsx","Fragment","Separator","hasSelectedDate","PopContent","Calendar","Popover","Button","XCircle","CalendarIcon"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"data-table-filter-popover.cjs","sources":["../../../../../src/components/Table/TableFilter/data-table-filter-popover.tsx"],"sourcesContent":["\"use client\";\n\nimport type { Column } from \"@tanstack/react-table\";\nimport { X } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { Popover } from \"../../Popover\";\nimport { Input } from \"../../Input\";\nimport { Checkbox } from \"../../Checkbox\";\nimport { Radio } from \"../../Radio\";\nimport { DataTableSliderFilter } from \"./data-table-slider-filter\";\nimport { DataTableDateFilter } from \"./data-table-date-filter\";\nimport { Separator } from \"@/components/Separator\";\nimport { Button } from \"@/components/Button\";\n\ninterface DataTableFilterPopoverProps<TData> {\n column: Column<TData>;\n trigger: React.ReactNode;\n open?: boolean;\n onOpenChange?: (isOpen: boolean) => void;\n}\n\nexport function DataTableFilterPopover<TData>({\n column,\n trigger,\n open,\n onOpenChange,\n}: DataTableFilterPopoverProps<TData>) {\n const [internalOpen, setInternalOpen] = React.useState(false);\n\n const isOpen = open !== undefined ? open : internalOpen;\n const setIsOpen = onOpenChange || setInternalOpen;\n\n const columnMeta = column.columnDef.meta;\n\n const renderFilterContent = () => {\n if (!columnMeta?.variant) return <div>No filter available</div>;\n\n switch (columnMeta.variant) {\n case \"text\":\n return (\n <Input\n placeholder={columnMeta.placeholder ?? columnMeta.label}\n value={(column.getFilterValue() as string) ?? \"\"}\n onChange={(event: React.ChangeEvent<HTMLInputElement>) =>\n column.setFilterValue(event.target.value)\n }\n className=\"ds:h-8 ds:w-full\"\n />\n );\n\n case \"number\":\n return (\n <Input\n type=\"number\"\n placeholder={columnMeta.placeholder ?? columnMeta.label}\n value={(column.getFilterValue() as string) ?? \"\"}\n onChange={(event: React.ChangeEvent<HTMLInputElement>) =>\n column.setFilterValue(event.target.value)\n }\n className=\"ds:h-8 ds:w-full\"\n />\n );\n\n case \"date\":\n case \"dateRange\":\n return (\n <DataTableDateFilter\n column={column}\n title={columnMeta.label ?? column.id}\n multiple={columnMeta.variant === \"dateRange\"}\n />\n );\n\n case \"range\":\n return (\n <DataTableSliderFilter\n column={column}\n title={columnMeta.label ?? column.id}\n />\n );\n\n case \"select\":\n case \"multiSelect\": {\n const options = columnMeta.options || [];\n const multiple = columnMeta.variant === \"multiSelect\";\n\n if (multiple) {\n const currentValues = (column.getFilterValue() as string[]) || [];\n return (\n <>\n <div className=\"ds:space-y-2 ds:max-h-48 ds:overflow-y-auto ds:text-sm\">\n {options.map((option) => (\n <div\n key={option.value}\n className=\"ds:flex ds:items-center ds:space-x-2\"\n >\n <Checkbox\n checked={currentValues.includes(option.value)}\n onCheckedChange={(checked) => {\n if (checked) {\n column.setFilterValue([\n ...currentValues,\n option.value,\n ]);\n } else {\n column.setFilterValue(\n currentValues.filter((v) => v !== option.value)\n );\n }\n }}\n label={option.label}\n />\n </div>\n ))}\n </div>\n {/* <Separator className=\"my-2\" /> */}\n {/* <div className=\"flex justify-center gap-0 mt-2\">\n <Button\n variant=\"ghost\"\n onClick={() =>\n column.setFilterValue(options.map((o) => o.value))\n }\n >\n Check All\n </Button>\n <Button\n variant=\"ghost\"\n onClick={() => column.setFilterValue(undefined)}\n >\n <X className=\"size-3\" />\n Clear Filter\n </Button>\n </div> */}\n </>\n );\n } else {\n const currentValue = column.getFilterValue() as string;\n return (\n <Radio\n value={currentValue}\n onValueChange={(value) => column.setFilterValue(value)}\n options={options.map((option) => ({\n label: option.label,\n value: option.value,\n }))}\n className=\"ds:p-1\"\n />\n );\n }\n }\n\n default:\n return <div>No filter available</div>;\n }\n };\n\n const hasFilterValue = column.getFilterValue() != null;\n\n return (\n <Popover\n open={isOpen}\n onOpenChange={setIsOpen}\n trigger={trigger}\n content={\n <div className=\"ds:p-2 ds:min-w-32\">\n {renderFilterContent()}\n {hasFilterValue && (\n <>\n <Separator className=\"ds:mt-3 ds:mb-1\" />\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => column.setFilterValue(undefined)}\n >\n <X className=\"ds:size-3\" />\n Clear Filter\n </Button>\n </>\n )}\n </div>\n }\n contentClassName=\"ds:p-0\"\n />\n );\n}\n"],"names":["DataTableFilterPopover","column","trigger","open","onOpenChange","internalOpen","setInternalOpen","React","isOpen","setIsOpen","columnMeta","renderFilterContent","jsx","Input","event","DataTableDateFilter","DataTableSliderFilter","options","currentValues","Fragment","option","Checkbox","checked","v","currentValue","Radio","value","hasFilterValue","Popover","jsxs","Separator","Button","X"],"mappings":"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"}
1
+ {"version":3,"file":"data-table-filter-popover.cjs","sources":["../../../../../src/components/Table/TableFilter/data-table-filter-popover.tsx"],"sourcesContent":["\"use client\";\n\nimport type { Column } from \"@tanstack/react-table\";\nimport { X } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { Popover } from \"../../Popover\";\nimport { Input } from \"../../Input\";\nimport { Checkbox } from \"../../Checkbox\";\nimport { Radio } from \"../../Radio\";\nimport { DataTableSliderFilter } from \"./data-table-slider-filter\";\nimport { DataTableDateFilter } from \"./data-table-date-filter\";\nimport { Separator } from \"@/components/Separator\";\nimport { Button } from \"@/components/Button\";\n\nexport interface DataTableFilterPopoverProps<TData> {\n column: Column<TData>;\n trigger: React.ReactNode;\n open?: boolean;\n onOpenChange?: (isOpen: boolean) => void;\n}\n\nexport function DataTableFilterPopover<TData>({\n column,\n trigger,\n open,\n onOpenChange,\n}: DataTableFilterPopoverProps<TData>) {\n const [internalOpen, setInternalOpen] = React.useState(false);\n\n const isOpen = open !== undefined ? open : internalOpen;\n const setIsOpen = onOpenChange || setInternalOpen;\n\n const columnMeta = column.columnDef.meta;\n\n const renderFilterContent = () => {\n if (!columnMeta?.variant) return <div>No filter available</div>;\n\n switch (columnMeta.variant) {\n case \"text\":\n return (\n <Input\n placeholder={columnMeta.placeholder ?? columnMeta.label}\n value={(column.getFilterValue() as string) ?? \"\"}\n onChange={(event: React.ChangeEvent<HTMLInputElement>) =>\n column.setFilterValue(event.target.value)\n }\n className=\"ds:h-8 ds:w-full\"\n />\n );\n\n case \"number\":\n return (\n <Input\n type=\"number\"\n placeholder={columnMeta.placeholder ?? columnMeta.label}\n value={(column.getFilterValue() as string) ?? \"\"}\n onChange={(event: React.ChangeEvent<HTMLInputElement>) =>\n column.setFilterValue(event.target.value)\n }\n className=\"ds:h-8 ds:w-full\"\n />\n );\n\n case \"date\":\n case \"dateRange\":\n return (\n <DataTableDateFilter\n column={column}\n title={columnMeta.label ?? column.id}\n multiple={columnMeta.variant === \"dateRange\"}\n />\n );\n\n case \"range\":\n return (\n <DataTableSliderFilter\n column={column}\n title={columnMeta.label ?? column.id}\n />\n );\n\n case \"select\":\n case \"multiSelect\": {\n const options = columnMeta.options || [];\n const multiple = columnMeta.variant === \"multiSelect\";\n\n if (multiple) {\n const currentValues = (column.getFilterValue() as string[]) || [];\n return (\n <>\n <div className=\"ds:space-y-2 ds:max-h-48 ds:overflow-y-auto ds:text-sm\">\n {options.map((option) => (\n <div\n key={option.value}\n className=\"ds:flex ds:items-center ds:space-x-2\"\n >\n <Checkbox\n checked={currentValues.includes(option.value)}\n onCheckedChange={(checked) => {\n if (checked) {\n column.setFilterValue([\n ...currentValues,\n option.value,\n ]);\n } else {\n column.setFilterValue(\n currentValues.filter((v) => v !== option.value)\n );\n }\n }}\n label={option.label}\n />\n </div>\n ))}\n </div>\n {/* <Separator className=\"my-2\" /> */}\n {/* <div className=\"flex justify-center gap-0 mt-2\">\n <Button\n variant=\"ghost\"\n onClick={() =>\n column.setFilterValue(options.map((o) => o.value))\n }\n >\n Check All\n </Button>\n <Button\n variant=\"ghost\"\n onClick={() => column.setFilterValue(undefined)}\n >\n <X className=\"size-3\" />\n Clear Filter\n </Button>\n </div> */}\n </>\n );\n } else {\n const currentValue = column.getFilterValue() as string;\n return (\n <Radio\n value={currentValue}\n onValueChange={(value) => column.setFilterValue(value)}\n options={options.map((option) => ({\n label: option.label,\n value: option.value,\n }))}\n className=\"ds:p-1\"\n />\n );\n }\n }\n\n default:\n return <div>No filter available</div>;\n }\n };\n\n const hasFilterValue = column.getFilterValue() != null;\n\n return (\n <Popover\n open={isOpen}\n onOpenChange={setIsOpen}\n trigger={trigger}\n content={\n <div className=\"ds:p-2 ds:min-w-32\">\n {renderFilterContent()}\n {hasFilterValue && (\n <>\n <Separator className=\"ds:mt-3 ds:mb-1\" />\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => column.setFilterValue(undefined)}\n >\n <X className=\"ds:size-3\" />\n Clear Filter\n </Button>\n </>\n )}\n </div>\n }\n contentClassName=\"ds:p-0\"\n />\n );\n}\n"],"names":["DataTableFilterPopover","column","trigger","open","onOpenChange","internalOpen","setInternalOpen","React","isOpen","setIsOpen","columnMeta","renderFilterContent","jsx","Input","event","DataTableDateFilter","DataTableSliderFilter","options","currentValues","Fragment","option","Checkbox","checked","v","currentValue","Radio","value","hasFilterValue","Popover","jsxs","Separator","Button","X"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"data-table-slider-filter.cjs","sources":["../../../../../src/components/Table/TableFilter/data-table-slider-filter.tsx"],"sourcesContent":["\"use client\";\n\nimport type { Column } from \"@tanstack/react-table\";\nimport { PlusCircle, XCircle } from \"lucide-react\";\nimport * as React from \"react\";\nimport { Button } from \"../../Button\";\nimport { Input } from \"../../Input\";\nimport { Popover } from \"../../Popover\";\nimport { Separator } from \"../../Separator\";\nimport { Slider } from \"../../Slider\";\nimport { cn } from \"@dsui/ui/index\";\n\ninterface Range {\n min: number;\n max: number;\n}\n\ntype RangeValue = [number, number];\n\nfunction getIsValidRange(value: unknown): value is RangeValue {\n return (\n Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === \"number\" &&\n typeof value[1] === \"number\"\n );\n}\n\nfunction parseValuesAsNumbers(value: unknown): RangeValue | undefined {\n if (\n Array.isArray(value) &&\n value.length === 2 &&\n value.every(\n (v) =>\n (typeof v === \"string\" || typeof v === \"number\") && !Number.isNaN(v)\n )\n ) {\n return [Number(value[0]), Number(value[1])];\n }\n\n return undefined;\n}\n\ninterface DataTableSliderFilterProps<TData> {\n column: Column<TData, unknown>;\n title?: string;\n}\n\nexport function DataTableSliderFilter<TData>({\n column,\n title,\n}: DataTableSliderFilterProps<TData>) {\n const id = React.useId();\n\n const columnFilterValue = parseValuesAsNumbers(column.getFilterValue());\n\n const defaultRange = column.columnDef.meta?.range;\n const unit = column.columnDef.meta?.unit;\n\n const { min, max, step } = React.useMemo<Range & { step: number }>(() => {\n let minValue = 0;\n let maxValue = 100;\n\n if (defaultRange && getIsValidRange(defaultRange)) {\n [minValue, maxValue] = defaultRange;\n } else {\n const values = column.getFacetedMinMaxValues();\n if (values && Array.isArray(values) && values.length === 2) {\n const [facetMinValue, facetMaxValue] = values;\n if (\n typeof facetMinValue === \"number\" &&\n typeof facetMaxValue === \"number\"\n ) {\n minValue = facetMinValue;\n maxValue = facetMaxValue;\n }\n }\n }\n\n const rangeSize = maxValue - minValue;\n const step =\n rangeSize <= 20\n ? 1\n : rangeSize <= 100\n ? Math.ceil(rangeSize / 20)\n : Math.ceil(rangeSize / 50);\n\n return { min: minValue, max: maxValue, step };\n }, [column, defaultRange]);\n\n const range = React.useMemo((): RangeValue => {\n return columnFilterValue ?? [min, max];\n }, [columnFilterValue, min, max]);\n\n const formatValue = React.useCallback((value: number) => {\n return value.toLocaleString(undefined, { maximumFractionDigits: 0 });\n }, []);\n\n const onFromInputChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const numValue = Number(event.target.value);\n if (!Number.isNaN(numValue) && numValue >= min && numValue <= range[1]) {\n column.setFilterValue([numValue, range[1]]);\n }\n },\n [column, min, range]\n );\n\n const onToInputChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const numValue = Number(event.target.value);\n if (!Number.isNaN(numValue) && numValue <= max && numValue >= range[0]) {\n column.setFilterValue([range[0], numValue]);\n }\n },\n [column, max, range]\n );\n\n const onSliderValueChange = React.useCallback(\n (value: RangeValue) => {\n if (Array.isArray(value) && value.length === 2) {\n column.setFilterValue(value);\n }\n },\n [column]\n );\n\n const onReset = React.useCallback(\n (event: React.MouseEvent) => {\n if (event.target instanceof HTMLDivElement) {\n event.stopPropagation();\n }\n column.setFilterValue(undefined);\n },\n [column]\n );\n\n const PopContent = (\n <div className=\"ds:flex ds:w-auto ds:flex-col ds:gap-4\">\n <div className=\"ds:flex ds:flex-col ds:gap-3\">\n <p className=\"ds:font-medium ds:leading-none ds:peer-disabled:cursor-not-allowed ds:peer-disabled:opacity-70\">\n {title}\n </p>\n <div className=\"ds:flex ds:items-center ds:gap-4\">\n <label htmlFor={`${id}-from`} className=\"ds:sr-only\">\n From\n </label>\n <div className=\"ds:relative\">\n <Input\n id={`${id}-from`}\n type=\"number\"\n aria-valuemin={min}\n aria-valuemax={max}\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n placeholder={min.toString()}\n min={min}\n max={max}\n value={range[0]?.toString()}\n onChange={onFromInputChange}\n className={cn(\"ds:h-8 ds:w-24\", unit && \"ds:pr-8\")}\n />\n {unit && (\n <span className=\"ds:absolute ds:top-0 ds:right-0 ds:bottom-0 ds:flex ds:items-center ds:rounded-r-md ds:bg-accent ds:px-2 ds:text-muted-foreground ds:text-sm\">\n {unit}\n </span>\n )}\n </div>\n <label htmlFor={`${id}-to`} className=\"ds:sr-only\">\n to\n </label>\n <div className=\"ds:relative\">\n <Input\n id={`${id}-to`}\n type=\"number\"\n aria-valuemin={min}\n aria-valuemax={max}\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n placeholder={max.toString()}\n min={min}\n max={max}\n value={range[1]?.toString()}\n onChange={onToInputChange}\n className={cn(\"ds:h-8 ds:w-24\", unit && \"ds:pr-8\")}\n />\n {unit && (\n <span className=\"ds:absolute ds:top-0 ds:right-0 ds:bottom-0 ds:flex ds:items-center ds:rounded-r-md ds:bg-accent ds:px-2 ds:text-muted-foreground ds:text-sm\">\n {unit}\n </span>\n )}\n </div>\n </div>\n <label htmlFor={`${id}-slider`} className=\"ds:sr-only\">\n {title} slider\n </label>\n <Slider\n id={`${id}-slider`}\n min={min}\n max={max}\n step={step}\n value={range}\n onValueChange={onSliderValueChange}\n />\n </div>\n <Button\n aria-label={`Clear ${title} filter`}\n variant=\"outline\"\n size=\"sm\"\n onClick={onReset}\n >\n Clear\n </Button>\n </div>\n );\n\n return (\n <Popover content={PopContent}>\n <Button variant=\"outline\" size=\"sm\" className=\"ds:border-dashed ds:font-normal\">\n {columnFilterValue ? (\n <div\n role=\"button\"\n aria-label={`Clear ${title} filter`}\n tabIndex={0}\n className=\"ds:rounded-sm ds:opacity-70 ds:transition-opacity ds:hover:opacity-100 ds:focus-visible:outline-none ds:focus-visible:ring-1 ds:focus-visible:ring-ring\"\n onClick={onReset}\n >\n <XCircle />\n </div>\n ) : (\n <PlusCircle />\n )}\n <span>{title}</span>\n {columnFilterValue ? (\n <>\n <Separator\n orientation=\"vertical\"\n className=\"ds:mx-0.5 ds:data-[orientation=vertical]:h-4\"\n />\n {formatValue(columnFilterValue[0])} -{\" \"}\n {formatValue(columnFilterValue[1])}\n {unit ? ` ${unit}` : \"\"}\n </>\n ) : null}\n </Button>\n </Popover>\n );\n}\n"],"names":["getIsValidRange","value","parseValuesAsNumbers","v","DataTableSliderFilter","column","title","id","React","columnFilterValue","defaultRange","unit","min","max","step","minValue","maxValue","values","facetMinValue","facetMaxValue","rangeSize","range","formatValue","onFromInputChange","event","numValue","onToInputChange","onSliderValueChange","onReset","PopContent","jsxs","jsx","Input","cn","Slider","Button","Popover","XCircle","PlusCircle","Fragment","Separator"],"mappings":"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"}
1
+ {"version":3,"file":"data-table-slider-filter.cjs","sources":["../../../../../src/components/Table/TableFilter/data-table-slider-filter.tsx"],"sourcesContent":["\"use client\";\n\nimport type { Column } from \"@tanstack/react-table\";\nimport { PlusCircle, XCircle } from \"lucide-react\";\nimport * as React from \"react\";\nimport { Button } from \"../../Button\";\nimport { Input } from \"../../Input\";\nimport { Popover } from \"../../Popover\";\nimport { Separator } from \"../../Separator\";\nimport { Slider } from \"../../Slider\";\nimport { cn } from \"@dsui/ui/index\";\n\ninterface Range {\n min: number;\n max: number;\n}\n\ntype RangeValue = [number, number];\n\nfunction getIsValidRange(value: unknown): value is RangeValue {\n return (\n Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === \"number\" &&\n typeof value[1] === \"number\"\n );\n}\n\nfunction parseValuesAsNumbers(value: unknown): RangeValue | undefined {\n if (\n Array.isArray(value) &&\n value.length === 2 &&\n value.every(\n (v) =>\n (typeof v === \"string\" || typeof v === \"number\") && !Number.isNaN(v)\n )\n ) {\n return [Number(value[0]), Number(value[1])];\n }\n\n return undefined;\n}\n\nexport interface DataTableSliderFilterProps<TData> {\n column: Column<TData, unknown>;\n title?: string;\n}\n\nexport function DataTableSliderFilter<TData>({\n column,\n title,\n}: DataTableSliderFilterProps<TData>) {\n const id = React.useId();\n\n const columnFilterValue = parseValuesAsNumbers(column.getFilterValue());\n\n const defaultRange = column.columnDef.meta?.range;\n const unit = column.columnDef.meta?.unit;\n\n const { min, max, step } = React.useMemo<Range & { step: number }>(() => {\n let minValue = 0;\n let maxValue = 100;\n\n if (defaultRange && getIsValidRange(defaultRange)) {\n [minValue, maxValue] = defaultRange;\n } else {\n const values = column.getFacetedMinMaxValues();\n if (values && Array.isArray(values) && values.length === 2) {\n const [facetMinValue, facetMaxValue] = values;\n if (\n typeof facetMinValue === \"number\" &&\n typeof facetMaxValue === \"number\"\n ) {\n minValue = facetMinValue;\n maxValue = facetMaxValue;\n }\n }\n }\n\n const rangeSize = maxValue - minValue;\n const step =\n rangeSize <= 20\n ? 1\n : rangeSize <= 100\n ? Math.ceil(rangeSize / 20)\n : Math.ceil(rangeSize / 50);\n\n return { min: minValue, max: maxValue, step };\n }, [column, defaultRange]);\n\n const range = React.useMemo((): RangeValue => {\n return columnFilterValue ?? [min, max];\n }, [columnFilterValue, min, max]);\n\n const formatValue = React.useCallback((value: number) => {\n return value.toLocaleString(undefined, { maximumFractionDigits: 0 });\n }, []);\n\n const onFromInputChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const numValue = Number(event.target.value);\n if (!Number.isNaN(numValue) && numValue >= min && numValue <= range[1]) {\n column.setFilterValue([numValue, range[1]]);\n }\n },\n [column, min, range]\n );\n\n const onToInputChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const numValue = Number(event.target.value);\n if (!Number.isNaN(numValue) && numValue <= max && numValue >= range[0]) {\n column.setFilterValue([range[0], numValue]);\n }\n },\n [column, max, range]\n );\n\n const onSliderValueChange = React.useCallback(\n (value: RangeValue) => {\n if (Array.isArray(value) && value.length === 2) {\n column.setFilterValue(value);\n }\n },\n [column]\n );\n\n const onReset = React.useCallback(\n (event: React.MouseEvent) => {\n if (event.target instanceof HTMLDivElement) {\n event.stopPropagation();\n }\n column.setFilterValue(undefined);\n },\n [column]\n );\n\n const PopContent = (\n <div className=\"ds:flex ds:w-auto ds:flex-col ds:gap-4\">\n <div className=\"ds:flex ds:flex-col ds:gap-3\">\n <p className=\"ds:font-medium ds:leading-none ds:peer-disabled:cursor-not-allowed ds:peer-disabled:opacity-70\">\n {title}\n </p>\n <div className=\"ds:flex ds:items-center ds:gap-4\">\n <label htmlFor={`${id}-from`} className=\"ds:sr-only\">\n From\n </label>\n <div className=\"ds:relative\">\n <Input\n id={`${id}-from`}\n type=\"number\"\n aria-valuemin={min}\n aria-valuemax={max}\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n placeholder={min.toString()}\n min={min}\n max={max}\n value={range[0]?.toString()}\n onChange={onFromInputChange}\n className={cn(\"ds:h-8 ds:w-24\", unit && \"ds:pr-8\")}\n />\n {unit && (\n <span className=\"ds:absolute ds:top-0 ds:right-0 ds:bottom-0 ds:flex ds:items-center ds:rounded-r-md ds:bg-accent ds:px-2 ds:text-muted-foreground ds:text-sm\">\n {unit}\n </span>\n )}\n </div>\n <label htmlFor={`${id}-to`} className=\"ds:sr-only\">\n to\n </label>\n <div className=\"ds:relative\">\n <Input\n id={`${id}-to`}\n type=\"number\"\n aria-valuemin={min}\n aria-valuemax={max}\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n placeholder={max.toString()}\n min={min}\n max={max}\n value={range[1]?.toString()}\n onChange={onToInputChange}\n className={cn(\"ds:h-8 ds:w-24\", unit && \"ds:pr-8\")}\n />\n {unit && (\n <span className=\"ds:absolute ds:top-0 ds:right-0 ds:bottom-0 ds:flex ds:items-center ds:rounded-r-md ds:bg-accent ds:px-2 ds:text-muted-foreground ds:text-sm\">\n {unit}\n </span>\n )}\n </div>\n </div>\n <label htmlFor={`${id}-slider`} className=\"ds:sr-only\">\n {title} slider\n </label>\n <Slider\n id={`${id}-slider`}\n min={min}\n max={max}\n step={step}\n value={range}\n onValueChange={onSliderValueChange}\n />\n </div>\n <Button\n aria-label={`Clear ${title} filter`}\n variant=\"outline\"\n size=\"sm\"\n onClick={onReset}\n >\n Clear\n </Button>\n </div>\n );\n\n return (\n <Popover content={PopContent}>\n <Button variant=\"outline\" size=\"sm\" className=\"ds:border-dashed ds:font-normal\">\n {columnFilterValue ? (\n <div\n role=\"button\"\n aria-label={`Clear ${title} filter`}\n tabIndex={0}\n className=\"ds:rounded-sm ds:opacity-70 ds:transition-opacity ds:hover:opacity-100 ds:focus-visible:outline-none ds:focus-visible:ring-1 ds:focus-visible:ring-ring\"\n onClick={onReset}\n >\n <XCircle />\n </div>\n ) : (\n <PlusCircle />\n )}\n <span>{title}</span>\n {columnFilterValue ? (\n <>\n <Separator\n orientation=\"vertical\"\n className=\"ds:mx-0.5 ds:data-[orientation=vertical]:h-4\"\n />\n {formatValue(columnFilterValue[0])} -{\" \"}\n {formatValue(columnFilterValue[1])}\n {unit ? ` ${unit}` : \"\"}\n </>\n ) : null}\n </Button>\n </Popover>\n );\n}\n"],"names":["getIsValidRange","value","parseValuesAsNumbers","v","DataTableSliderFilter","column","title","id","React","columnFilterValue","defaultRange","unit","min","max","step","minValue","maxValue","values","facetMinValue","facetMaxValue","rangeSize","range","formatValue","onFromInputChange","event","numValue","onToInputChange","onSliderValueChange","onReset","PopContent","jsxs","jsx","Input","cn","Slider","Button","Popover","XCircle","PlusCircle","Fragment","Separator"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"data-table-column-header.cjs","sources":["../../../../src/components/Table/data-table-column-header.tsx"],"sourcesContent":["\"use client\";\n\nimport type { Column } from \"@tanstack/react-table\";\nimport {\n ChevronDown,\n ChevronsUpDown,\n ChevronUp,\n EyeOff,\n Filter,\n X,\n} from \"lucide-react\";\n\nimport { cn } from \"@dsui/ui\";\nimport DropdownMenu, {\n type DropdownMenuItem,\n} from \"../DropdownMenu/DropdownMenu\";\nimport { DataTableFilterPopover } from \"./TableFilter/data-table-filter-popover\";\nimport { Button } from \"../Button\";\n\ninterface DataTableColumnHeaderProps<TData, TValue> {\n column: Column<TData, TValue>;\n label?: string;\n className?: string;\n}\n\nexport function DataTableColumnHeader<TData, TValue>({\n column,\n label,\n className,\n}: DataTableColumnHeaderProps<TData, TValue>) {\n const displayLabel =\n label ||\n (typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : null);\n\n const hasActions =\n column.getCanSort() || column.getCanHide() || column.getCanFilter();\n\n if (!hasActions) {\n return <div className={cn(className)}>{displayLabel}</div>;\n }\n\n const sortTrigger = (\n <button className=\"ds:-ml-1.5 ds:flex ds:h-8 ds:items-center ds:gap-1.5 ds:rounded-md ds:px-2 ds:py-1.5 ds:hover:bg-accent ds:focus:outline-none ds:focus:ring-1 ds:focus:ring-ring ds:data-[state=open]:bg-accent ds:[&_svg]:size-4 ds:[&_svg]:shrink-0 ds:[&_svg]:text-muted-foreground\">\n {displayLabel}\n {column.getCanSort() &&\n (column.getIsSorted() === \"desc\" ? (\n <ChevronDown />\n ) : column.getIsSorted() === \"asc\" ? (\n <ChevronUp />\n ) : (\n <ChevronsUpDown />\n ))}\n </button>\n );\n\n const filterButton =\n column.getCanFilter() && column.columnDef.meta?.variant ? (\n <DataTableFilterPopover\n column={column}\n trigger={\n <Button\n variant=\"ghost\"\n className={cn(\n \"ds:hover:bg-accent ds:rounded ds:p-1\",\n column.getFilterValue() ? \"ds:text-primary\" : \"\"\n )}\n >\n <Filter className=\"ds:size-4\" />\n </Button>\n }\n />\n ) : null;\n\n const items: DropdownMenuItem[] = [];\n\n if (column.getCanSort()) {\n items.push({\n key: \"asc\",\n type: \"checkbox\",\n label: \"Asc\",\n icon: <ChevronUp />,\n checked: column.getIsSorted() === \"asc\",\n onClick: () => column.toggleSorting(false),\n className:\n \"ds:relative ds:pr-8 ds:pl-2 ds:[&>span:first-child]:right-2 ds:[&>span:first-child]:left-auto ds:[&_svg]:text-muted-foreground\",\n });\n items.push({\n key: \"desc\",\n type: \"checkbox\",\n label: \"Desc\",\n icon: <ChevronDown />,\n checked: column.getIsSorted() === \"desc\",\n onClick: () => column.toggleSorting(true),\n className:\n \"ds:relative ds:pr-8 ds:pl-2 ds:[&>span:first-child]:right-2 ds:[&>span:first-child]:left-auto ds:[&_svg]:text-muted-foreground\",\n });\n if (column.getIsSorted()) {\n items.push({\n key: \"reset\",\n type: \"item\",\n label: \"Reset\",\n icon: <X />,\n onClick: () => column.clearSorting(),\n className: \"ds:pl-2 ds:[&_svg]:text-muted-foreground\",\n });\n }\n }\n\n if (column.getCanHide()) {\n items.push({\n key: \"hide\",\n type: \"checkbox\",\n label: \"Hide\",\n icon: <EyeOff />,\n checked: !column.getIsVisible(),\n onClick: () => column.toggleVisibility(false),\n className:\n \"ds:relative ds:pr-8 ds:pl-2 ds:[&>span:first-child]:right-2 ds:[&>span:first-child]:left-auto ds:[&_svg]:text-muted-foreground\",\n });\n }\n\n return (\n <div className={cn(\"ds:flex ds:items-center ds:gap-1.5\", className)}>\n <DropdownMenu\n trigger={sortTrigger}\n items={items}\n align=\"start\"\n contentClassName=\"ds:w-28\"\n />\n {filterButton}\n </div>\n );\n}\n"],"names":["DataTableColumnHeader","column","label","className","displayLabel","cn","sortTrigger","jsxs","jsx","ChevronDown","ChevronUp","ChevronsUpDown","filterButton","DataTableFilterPopover","Button","Filter","items","X","EyeOff","DropdownMenu"],"mappings":"qrDAyBO,SAASA,EAAqC,CACnD,OAAAC,EACA,MAAAC,EACA,UAAAC,CACF,EAA8C,CAC5C,MAAMC,EACJF,IACC,OAAOD,EAAO,UAAU,QAAW,SAChCA,EAAO,UAAU,OACjB,MAKN,GAAI,EAFFA,EAAO,WAAA,GAAgBA,EAAO,WAAA,GAAgBA,EAAO,aAAA,GAGrD,aAAQ,MAAA,CAAI,UAAWI,EAAAA,GAAGF,CAAS,EAAI,SAAAC,EAAa,EAGtD,MAAME,EACJC,EAAAA,KAAC,SAAA,CAAO,UAAU,yQACf,SAAA,CAAAH,EACAH,EAAO,WAAA,IACLA,EAAO,YAAA,IAAkB,OACxBO,EAAAA,IAACC,EAAAA,YAAA,EAAY,EACXR,EAAO,gBAAkB,YAC1BS,EAAAA,UAAA,CAAA,CAAU,QAEVC,EAAAA,eAAA,EAAe,EAAA,EAEtB,EAGIC,EACJX,EAAO,aAAA,GAAkBA,EAAO,UAAU,MAAM,QAC9CO,EAAAA,IAACK,EAAAA,uBAAA,CACC,OAAAZ,EACA,QACEO,EAAAA,IAACM,EAAAA,QAAA,CACC,QAAQ,QACR,UAAWT,EAAAA,GACT,uCACAJ,EAAO,eAAA,EAAmB,kBAAoB,EAAA,EAGhD,SAAAO,EAAAA,IAACO,EAAAA,OAAA,CAAO,UAAU,WAAA,CAAY,CAAA,CAAA,CAChC,CAAA,EAGF,KAEAC,EAA4B,CAAA,EAElC,OAAIf,EAAO,eACTe,EAAM,KAAK,CACT,IAAK,MACL,KAAM,WACN,MAAO,MACP,WAAON,EAAAA,UAAA,EAAU,EACjB,QAAST,EAAO,YAAA,IAAkB,MAClC,QAAS,IAAMA,EAAO,cAAc,EAAK,EACzC,UACE,gIAAA,CACH,EACDe,EAAM,KAAK,CACT,IAAK,OACL,KAAM,WACN,MAAO,OACP,WAAOP,EAAAA,YAAA,EAAY,EACnB,QAASR,EAAO,YAAA,IAAkB,OAClC,QAAS,IAAMA,EAAO,cAAc,EAAI,EACxC,UACE,gIAAA,CACH,EACGA,EAAO,eACTe,EAAM,KAAK,CACT,IAAK,QACL,KAAM,OACN,MAAO,QACP,WAAOC,EAAAA,EAAA,EAAE,EACT,QAAS,IAAMhB,EAAO,aAAA,EACtB,UAAW,0CAAA,CACZ,GAIDA,EAAO,cACTe,EAAM,KAAK,CACT,IAAK,OACL,KAAM,WACN,MAAO,OACP,WAAOE,EAAAA,OAAA,EAAO,EACd,QAAS,CAACjB,EAAO,aAAA,EACjB,QAAS,IAAMA,EAAO,iBAAiB,EAAK,EAC5C,UACE,gIAAA,CACH,SAIA,MAAA,CAAI,UAAWI,EAAAA,GAAG,qCAAsCF,CAAS,EAChE,SAAA,CAAAK,EAAAA,IAACW,EAAAA,QAAA,CACC,QAASb,EACT,MAAAU,EACA,MAAM,QACN,iBAAiB,SAAA,CAAA,EAElBJ,CAAA,EACH,CAEJ"}
1
+ {"version":3,"file":"data-table-column-header.cjs","sources":["../../../../src/components/Table/data-table-column-header.tsx"],"sourcesContent":["\"use client\";\n\nimport type { Column } from \"@tanstack/react-table\";\nimport {\n ChevronDown,\n ChevronsUpDown,\n ChevronUp,\n EyeOff,\n Filter,\n X,\n} from \"lucide-react\";\n\nimport { cn } from \"@dsui/ui\";\nimport DropdownMenu, {\n type DropdownMenuItem,\n} from \"../DropdownMenu/DropdownMenu\";\nimport { DataTableFilterPopover } from \"./TableFilter/data-table-filter-popover\";\nimport { Button } from \"../Button\";\n\nexport interface DataTableColumnHeaderProps<TData, TValue> {\n column: Column<TData, TValue>;\n label?: string;\n className?: string;\n}\n\nexport function DataTableColumnHeader<TData, TValue>({\n column,\n label,\n className,\n}: DataTableColumnHeaderProps<TData, TValue>) {\n const displayLabel =\n label ||\n (typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : null);\n\n const hasActions =\n column.getCanSort() || column.getCanHide() || column.getCanFilter();\n\n if (!hasActions) {\n return <div className={cn(className)}>{displayLabel}</div>;\n }\n\n const sortTrigger = (\n <button className=\"ds:-ml-1.5 ds:flex ds:h-8 ds:items-center ds:gap-1.5 ds:rounded-md ds:px-2 ds:py-1.5 ds:hover:bg-accent ds:focus:outline-none ds:focus:ring-1 ds:focus:ring-ring ds:data-[state=open]:bg-accent ds:[&_svg]:size-4 ds:[&_svg]:shrink-0 ds:[&_svg]:text-muted-foreground\">\n {displayLabel}\n {column.getCanSort() &&\n (column.getIsSorted() === \"desc\" ? (\n <ChevronDown />\n ) : column.getIsSorted() === \"asc\" ? (\n <ChevronUp />\n ) : (\n <ChevronsUpDown />\n ))}\n </button>\n );\n\n const filterButton =\n column.getCanFilter() && column.columnDef.meta?.variant ? (\n <DataTableFilterPopover\n column={column}\n trigger={\n <Button\n variant=\"ghost\"\n className={cn(\n \"ds:hover:bg-accent ds:rounded ds:p-1\",\n column.getFilterValue() ? \"ds:text-primary\" : \"\"\n )}\n >\n <Filter className=\"ds:size-4\" />\n </Button>\n }\n />\n ) : null;\n\n const items: DropdownMenuItem[] = [];\n\n if (column.getCanSort()) {\n items.push({\n key: \"asc\",\n type: \"checkbox\",\n label: \"Asc\",\n icon: <ChevronUp />,\n checked: column.getIsSorted() === \"asc\",\n onClick: () => column.toggleSorting(false),\n className:\n \"ds:relative ds:pr-8 ds:pl-2 ds:[&>span:first-child]:right-2 ds:[&>span:first-child]:left-auto ds:[&_svg]:text-muted-foreground\",\n });\n items.push({\n key: \"desc\",\n type: \"checkbox\",\n label: \"Desc\",\n icon: <ChevronDown />,\n checked: column.getIsSorted() === \"desc\",\n onClick: () => column.toggleSorting(true),\n className:\n \"ds:relative ds:pr-8 ds:pl-2 ds:[&>span:first-child]:right-2 ds:[&>span:first-child]:left-auto ds:[&_svg]:text-muted-foreground\",\n });\n if (column.getIsSorted()) {\n items.push({\n key: \"reset\",\n type: \"item\",\n label: \"Reset\",\n icon: <X />,\n onClick: () => column.clearSorting(),\n className: \"ds:pl-2 ds:[&_svg]:text-muted-foreground\",\n });\n }\n }\n\n if (column.getCanHide()) {\n items.push({\n key: \"hide\",\n type: \"checkbox\",\n label: \"Hide\",\n icon: <EyeOff />,\n checked: !column.getIsVisible(),\n onClick: () => column.toggleVisibility(false),\n className:\n \"ds:relative ds:pr-8 ds:pl-2 ds:[&>span:first-child]:right-2 ds:[&>span:first-child]:left-auto ds:[&_svg]:text-muted-foreground\",\n });\n }\n\n return (\n <div className={cn(\"ds:flex ds:items-center ds:gap-1.5\", className)}>\n <DropdownMenu\n trigger={sortTrigger}\n items={items}\n align=\"start\"\n contentClassName=\"ds:w-28\"\n />\n {filterButton}\n </div>\n );\n}\n"],"names":["DataTableColumnHeader","column","label","className","displayLabel","cn","sortTrigger","jsxs","jsx","ChevronDown","ChevronUp","ChevronsUpDown","filterButton","DataTableFilterPopover","Button","Filter","items","X","EyeOff","DropdownMenu"],"mappings":"qrDAyBO,SAASA,EAAqC,CACnD,OAAAC,EACA,MAAAC,EACA,UAAAC,CACF,EAA8C,CAC5C,MAAMC,EACJF,IACC,OAAOD,EAAO,UAAU,QAAW,SAChCA,EAAO,UAAU,OACjB,MAKN,GAAI,EAFFA,EAAO,WAAA,GAAgBA,EAAO,WAAA,GAAgBA,EAAO,aAAA,GAGrD,aAAQ,MAAA,CAAI,UAAWI,EAAAA,GAAGF,CAAS,EAAI,SAAAC,EAAa,EAGtD,MAAME,EACJC,EAAAA,KAAC,SAAA,CAAO,UAAU,yQACf,SAAA,CAAAH,EACAH,EAAO,WAAA,IACLA,EAAO,YAAA,IAAkB,OACxBO,EAAAA,IAACC,EAAAA,YAAA,EAAY,EACXR,EAAO,gBAAkB,YAC1BS,EAAAA,UAAA,CAAA,CAAU,QAEVC,EAAAA,eAAA,EAAe,EAAA,EAEtB,EAGIC,EACJX,EAAO,aAAA,GAAkBA,EAAO,UAAU,MAAM,QAC9CO,EAAAA,IAACK,EAAAA,uBAAA,CACC,OAAAZ,EACA,QACEO,EAAAA,IAACM,EAAAA,QAAA,CACC,QAAQ,QACR,UAAWT,EAAAA,GACT,uCACAJ,EAAO,eAAA,EAAmB,kBAAoB,EAAA,EAGhD,SAAAO,EAAAA,IAACO,EAAAA,OAAA,CAAO,UAAU,WAAA,CAAY,CAAA,CAAA,CAChC,CAAA,EAGF,KAEAC,EAA4B,CAAA,EAElC,OAAIf,EAAO,eACTe,EAAM,KAAK,CACT,IAAK,MACL,KAAM,WACN,MAAO,MACP,WAAON,EAAAA,UAAA,EAAU,EACjB,QAAST,EAAO,YAAA,IAAkB,MAClC,QAAS,IAAMA,EAAO,cAAc,EAAK,EACzC,UACE,gIAAA,CACH,EACDe,EAAM,KAAK,CACT,IAAK,OACL,KAAM,WACN,MAAO,OACP,WAAOP,EAAAA,YAAA,EAAY,EACnB,QAASR,EAAO,YAAA,IAAkB,OAClC,QAAS,IAAMA,EAAO,cAAc,EAAI,EACxC,UACE,gIAAA,CACH,EACGA,EAAO,eACTe,EAAM,KAAK,CACT,IAAK,QACL,KAAM,OACN,MAAO,QACP,WAAOC,EAAAA,EAAA,EAAE,EACT,QAAS,IAAMhB,EAAO,aAAA,EACtB,UAAW,0CAAA,CACZ,GAIDA,EAAO,cACTe,EAAM,KAAK,CACT,IAAK,OACL,KAAM,WACN,MAAO,OACP,WAAOE,EAAAA,OAAA,EAAO,EACd,QAAS,CAACjB,EAAO,aAAA,EACjB,QAAS,IAAMA,EAAO,iBAAiB,EAAK,EAC5C,UACE,gIAAA,CACH,SAIA,MAAA,CAAI,UAAWI,EAAAA,GAAG,qCAAsCF,CAAS,EAChE,SAAA,CAAAK,EAAAA,IAACW,EAAAA,QAAA,CACC,QAASb,EACT,MAAAU,EACA,MAAM,QACN,iBAAiB,SAAA,CAAA,EAElBJ,CAAA,EACH,CAEJ"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),u=require("lucide-react"),g=require("react"),m=require("./TableFilter/data-table-filter-popover.cjs"),j=require("./data-table-view-options.cjs");require("@radix-ui/react-slot");require("../../packages/ui/src/components/button.cjs");require("../../packages/ui/src/components/button-group.cjs");require("../../packages/ui/src/components/input.cjs");require("../../packages/ui/src/components/textarea.cjs");require("@radix-ui/react-label");const x=require("../../packages/ui/src/lib/utils.cjs");require("../../packages/ui/src/components/select.cjs");require("../../packages/ui/src/components/combobox.cjs");require("@radix-ui/react-tooltip");require("react-day-picker");require("../../packages/ui/src/components/popover.cjs");require("@radix-ui/react-separator");require("../../packages/ui/src/components/switch.cjs");require("vaul");require("@radix-ui/react-scroll-area");require("../../packages/ui/src/components/tree-view.cjs");require("@radix-ui/react-alert-dialog");require("@radix-ui/react-avatar");require("../../packages/ui/src/components/badge.cjs");require("../../packages/ui/src/components/checkbox.cjs");require("@radix-ui/react-collapsible");require("cmdk");require("@radix-ui/react-dialog");require("@radix-ui/react-dropdown-menu");require("../../packages/ui/src/components/input-otp.cjs");require("../../packages/ui/src/components/radio-group.cjs");require("../../packages/ui/src/components/sidebar.cjs");require("@radix-ui/react-slider");require("../../packages/ui/src/components/tabs.cjs");require("../../packages/ui/src/components/toggle.cjs");const o=require("../Button/Button.cjs");function p(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const i in e)if(i!=="default"){const s=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(t,i,s.get?s:{enumerable:!0,get:()=>e[i]})}}return t.default=e,Object.freeze(t)}const n=p(g);function T({table:e,children:t,className:i,showColumnFilters:s=!1,showColumnVisibilityToggle:l=!1,columnVisibilityOptions:c,...d}){const q=e.getState().columnFilters.length>0,f=n.useMemo(()=>e.getAllColumns().filter(a=>a.getCanFilter()),[e]),b=n.useCallback(()=>{e.resetColumnFilters()},[e]);return r.jsxs("div",{role:"toolbar","aria-orientation":"horizontal",className:x.cn("ds:flex ds:w-full ds:items-start ds:justify-between ds:gap-2 ds:p-1",i),...d,children:[s?r.jsxs("div",{className:"ds:flex ds:flex-1 ds:flex-wrap ds:items-center ds:justify-start ds:gap-2",children:[f.map(a=>r.jsx(h,{column:a},a.id)),q&&r.jsxs(o.default,{"aria-label":"Reset filters",variant:"outline",size:"sm",className:"ds:border-dashed",onClick:b,children:[r.jsx(u.X,{}),"Reset"]})]}):r.jsx("div",{}),r.jsxs("div",{className:"ds:flex ds:items-center ds:gap-2",children:[t,l&&r.jsx(j.DataTableViewOptions,{table:e,align:"end",...c})]})]})}function h({column:e}){const t=e.columnDef.meta;if(!t?.variant)return null;const s=e.getFilterValue()!=null?r.jsx(u.XCircle,{}):r.jsx(u.PlusCircle,{}),l=()=>t.label??e.id;return r.jsx(m.DataTableFilterPopover,{column:e,trigger:r.jsxs(o.default,{variant:"outline",size:"sm",className:"ds:border-dashed",children:[s,l()]})})}exports.DataTableToolbar=T;
2
+ //# sourceMappingURL=data-table-toolbar.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-toolbar.cjs","sources":["../../../../src/components/Table/data-table-toolbar.tsx"],"sourcesContent":["\"use client\";\n\nimport type { Column, Table } from \"@tanstack/react-table\";\nimport { PlusCircle, X, XCircle } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { DataTableFilterPopover } from \"./TableFilter/data-table-filter-popover\";\nimport {\n DataTableViewOptions,\n type DataTableViewOptionsProps,\n} from \"./data-table-view-options\";\nimport { Button } from \"../Button\";\nimport { cn } from \"@dsui/ui\";\n\nexport interface DataTableToolbarProps<TData>\n extends React.ComponentProps<\"div\"> {\n table: Table<TData>;\n showColumnFilters?: boolean;\n showColumnVisibilityToggle?: boolean;\n columnVisibilityOptions?: Omit<\n DataTableViewOptionsProps<TData>,\n \"table\" | \"align\"\n >;\n}\n\nexport function DataTableToolbar<TData>({\n table,\n children,\n className,\n showColumnFilters = false,\n showColumnVisibilityToggle = false,\n columnVisibilityOptions,\n ...props\n}: DataTableToolbarProps<TData>) {\n const isFiltered = table.getState().columnFilters.length > 0;\n\n const columns = React.useMemo(\n () => table.getAllColumns().filter((column) => column.getCanFilter()),\n [table]\n );\n\n const onReset = React.useCallback(() => {\n table.resetColumnFilters();\n }, [table]);\n\n return (\n <div\n role=\"toolbar\"\n aria-orientation=\"horizontal\"\n className={cn(\n \"ds:flex ds:w-full ds:items-start ds:justify-between ds:gap-2 ds:p-1\",\n className\n )}\n {...props}\n >\n {showColumnFilters ? (\n <div className=\"ds:flex ds:flex-1 ds:flex-wrap ds:items-center ds:justify-start ds:gap-2\">\n {columns.map((column) => (\n <DataTableToolbarFilter key={column.id} column={column} />\n ))}\n {isFiltered && (\n <Button\n aria-label=\"Reset filters\"\n variant=\"outline\"\n size=\"sm\"\n className=\"ds:border-dashed\"\n onClick={onReset}\n >\n <X />\n Reset\n </Button>\n )}\n </div>\n ) : (\n <div />\n )}\n <div className=\"ds:flex ds:items-center ds:gap-2\">\n {children}\n {showColumnVisibilityToggle && (\n <DataTableViewOptions\n table={table}\n align=\"end\"\n {...columnVisibilityOptions}\n />\n )}\n </div>\n </div>\n );\n}\ninterface DataTableToolbarFilterProps<TData> {\n column: Column<TData>;\n}\n\nfunction DataTableToolbarFilter<TData>({\n column,\n}: DataTableToolbarFilterProps<TData>) {\n const columnMeta = column.columnDef.meta;\n\n if (!columnMeta?.variant) return null;\n\n const hasFilterValue = column.getFilterValue() != null;\n const icon = hasFilterValue ? <XCircle /> : <PlusCircle />;\n\n const getTriggerLabel = () => {\n return columnMeta.label ?? column.id;\n };\n\n return (\n <DataTableFilterPopover\n column={column}\n trigger={\n <Button variant=\"outline\" size=\"sm\" className=\"ds:border-dashed\">\n {icon}\n {getTriggerLabel()}\n </Button>\n }\n />\n );\n}\n"],"names":["DataTableToolbar","table","children","className","showColumnFilters","showColumnVisibilityToggle","columnVisibilityOptions","props","isFiltered","columns","React","column","onReset","jsxs","cn","jsx","DataTableToolbarFilter","Button","X","DataTableViewOptions","columnMeta","icon","XCircle","PlusCircle","getTriggerLabel","DataTableFilterPopover"],"mappings":"88DAyBO,SAASA,EAAwB,CACtC,MAAAC,EACA,SAAAC,EACA,UAAAC,EACA,kBAAAC,EAAoB,GACpB,2BAAAC,EAA6B,GAC7B,wBAAAC,EACA,GAAGC,CACL,EAAiC,CAC/B,MAAMC,EAAaP,EAAM,SAAA,EAAW,cAAc,OAAS,EAErDQ,EAAUC,EAAM,QACpB,IAAMT,EAAM,gBAAgB,OAAQU,GAAWA,EAAO,cAAc,EACpE,CAACV,CAAK,CAAA,EAGFW,EAAUF,EAAM,YAAY,IAAM,CACtCT,EAAM,mBAAA,CACR,EAAG,CAACA,CAAK,CAAC,EAEV,OACEY,EAAAA,KAAC,MAAA,CACC,KAAK,UACL,mBAAiB,aACjB,UAAWC,EAAAA,GACT,sEACAX,CAAA,EAED,GAAGI,EAEH,SAAA,CAAAH,EACCS,EAAAA,KAAC,MAAA,CAAI,UAAU,2EACZ,SAAA,CAAAJ,EAAQ,IAAKE,GACZI,EAAAA,IAACC,GAAuC,OAAAL,CAAA,EAAXA,EAAO,EAAoB,CACzD,EACAH,GACCK,EAAAA,KAACI,EAAAA,QAAA,CACC,aAAW,gBACX,QAAQ,UACR,KAAK,KACL,UAAU,mBACV,QAASL,EAET,SAAA,CAAAG,EAAAA,IAACG,EAAAA,EAAA,EAAE,EAAE,OAAA,CAAA,CAAA,CAEP,CAAA,CAEJ,QAEC,MAAA,EAAI,EAEPL,EAAAA,KAAC,MAAA,CAAI,UAAU,mCACZ,SAAA,CAAAX,EACAG,GACCU,EAAAA,IAACI,EAAAA,qBAAA,CACC,MAAAlB,EACA,MAAM,MACL,GAAGK,CAAA,CAAA,CACN,CAAA,CAEJ,CAAA,CAAA,CAAA,CAGN,CAKA,SAASU,EAA8B,CACrC,OAAAL,CACF,EAAuC,CACrC,MAAMS,EAAaT,EAAO,UAAU,KAEpC,GAAI,CAACS,GAAY,QAAS,OAAO,KAGjC,MAAMC,EADiBV,EAAO,eAAA,GAAoB,KACpBI,MAACO,EAAAA,QAAA,CAAA,CAAQ,QAAMC,EAAAA,WAAA,EAAW,EAElDC,EAAkB,IACfJ,EAAW,OAAST,EAAO,GAGpC,OACEI,EAAAA,IAACU,EAAAA,uBAAA,CACC,OAAAd,EACA,eACGM,UAAA,CAAO,QAAQ,UAAU,KAAK,KAAK,UAAU,mBAC3C,SAAA,CAAAI,EACAG,EAAA,CAAgB,CAAA,CACnB,CAAA,CAAA,CAIR"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),g=require("../../node_modules/.pnpm/@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/@dnd-kit/core/dist/core.esm.cjs"),b=require("../../node_modules/.pnpm/@dnd-kit_sortable@10.0.0_@dnd-kit_core@6.3.1_react-dom@19.1.1_react@19.1.1__react@19.1.1__react@19.1.1/node_modules/@dnd-kit/sortable/dist/sortable.esm.cjs"),F=require("../../node_modules/.pnpm/@dnd-kit_utilities@3.2.2_react@19.1.1/node_modules/@dnd-kit/utilities/dist/utilities.esm.cjs"),v=require("lucide-react"),G=require("react"),K=require("../Command/Command.cjs"),$=require("../Popover/index.cjs");require("@radix-ui/react-slot");require("../../packages/ui/src/components/button.cjs");require("../../packages/ui/src/components/button-group.cjs");require("../../packages/ui/src/components/input.cjs");require("../../packages/ui/src/components/textarea.cjs");require("@radix-ui/react-label");const I=require("../../packages/ui/src/lib/utils.cjs");require("../../packages/ui/src/components/select.cjs");require("../../packages/ui/src/components/combobox.cjs");require("@radix-ui/react-tooltip");require("react-day-picker");require("../../packages/ui/src/components/popover.cjs");require("@radix-ui/react-separator");require("../../packages/ui/src/components/switch.cjs");require("vaul");require("@radix-ui/react-scroll-area");require("../../packages/ui/src/components/tree-view.cjs");require("@radix-ui/react-alert-dialog");require("@radix-ui/react-avatar");require("../../packages/ui/src/components/badge.cjs");require("../../packages/ui/src/components/checkbox.cjs");require("@radix-ui/react-collapsible");require("cmdk");require("@radix-ui/react-dialog");require("@radix-ui/react-dropdown-menu");require("../../packages/ui/src/components/input-otp.cjs");require("../../packages/ui/src/components/radio-group.cjs");require("../../packages/ui/src/components/sidebar.cjs");require("@radix-ui/react-slider");require("../../packages/ui/src/components/tabs.cjs");require("../../packages/ui/src/components/toggle.cjs");const D=require("../Checkbox/Checkbox.cjs"),V=require("../Button/Button.cjs");function H(r){const i=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const n in r)if(n!=="default"){const d=Object.getOwnPropertyDescriptor(r,n);Object.defineProperty(i,n,d.get?d:{enumerable:!0,get:()=>r[n]})}}return i.default=r,Object.freeze(i)}const p=H(G);function J({table:r,variant:i="command",labels:n,triggerIcon:d=t.jsx(v.Settings2,{className:"ds:text-muted-foreground"}),trigger:l,content:x,contentClassName:m,...h}){const a=r.getState().columnOrder,c=r.getState().columnPinning,o=p.useMemo(()=>k(r,a,c).filter(e=>typeof e.accessorFn<"u"&&e.getCanHide()),[r,a,c]),q=p.useCallback(e=>e.columnDef.meta?.label??(typeof e.columnDef.header=="string"?e.columnDef.header:e.id),[]),y=g.useSensors(g.useSensor(g.PointerSensor),g.useSensor(g.KeyboardSensor,{coordinateGetter:b.sortableKeyboardCoordinates})),s=p.useMemo(()=>o.map(e=>e.id),[o]),w=o.every(e=>e.getIsVisible()),T=o.some(e=>e.getIsVisible()),z=p.useCallback(e=>{o.forEach(f=>f.toggleVisibility(e))},[o]),M=p.useCallback(e=>{const{active:f,over:j}=e;if(!j||f.id===j.id)return;const N=s.indexOf(String(f.id)),P=s.indexOf(String(j.id));if(N===-1||P===-1)return;const A=b.arrayMove(s,N,P),S=new Set(s),L=[...A],B=k(r).map(u=>S.has(u.id)?L.shift()??u.id:u.id),O=r.getState().columnPinning,E={...O,left:O?.left?.filter(u=>!S.has(u)),right:O?.right?.filter(u=>!S.has(u))};r.setColumnOrder(B),r.setColumnPinning(E)},[s,r]),R=[{type:"group",heading:"",items:o.map(e=>({type:"item",onClick:()=>e.toggleVisibility(!e.getIsVisible()),children:t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"ds:truncate",children:q(e)}),t.jsx(v.Check,{className:I.cn("ds:ml-auto ds:size-4 ds:shrink-0",e.getIsVisible()?"ds:opacity-100":"ds:opacity-0")})]})}))}],C={trigger:n?.trigger??"View",searchPlaceholder:n?.searchPlaceholder??"Search columns...",selectAll:n?.selectAll??"Chọn tất cả",reset:n?.reset??"Đặt lại"},_=t.jsxs("div",{className:"ds:flex ds:w-full ds:flex-col",children:[t.jsxs("div",{className:"ds:flex ds:items-center ds:gap-3 ds:px-3 ds:py-3",children:[t.jsx(D.default,{"aria-label":"Toggle all columns",checked:w?!0:T?"indeterminate":!1,onCheckedChange:e=>z(e===!0)}),t.jsx("span",{className:"ds:text-sm ds:font-medium ds:text-foreground",children:C.selectAll})]}),t.jsx("div",{className:"ds:mx-3 ds:h-px ds:bg-border"}),t.jsx(g.DndContext,{sensors:y,collisionDetection:g.closestCenter,onDragEnd:M,children:t.jsx(b.SortableContext,{items:s,strategy:b.verticalListSortingStrategy,children:t.jsx("div",{className:"ds:flex ds:max-h-80 ds:flex-col ds:overflow-y-auto ds:py-2",children:o.map(e=>t.jsx(Q,{id:e.id,label:q(e),checked:e.getIsVisible(),onCheckedChange:f=>e.toggleVisibility(f===!0)},e.id))})})}),t.jsx("div",{className:"ds:mx-3 ds:h-px ds:bg-border"}),t.jsx(V.default,{type:"button",variant:"ghost",size:"sm",className:"ds:mx-3 ds:my-2 ds:text-primary hover:ds:text-primary",onClick:()=>{r.resetColumnVisibility(),r.resetColumnOrder(),r.resetColumnPinning()},children:C.reset})]});return t.jsx($.Popover,{trigger:l??t.jsxs(V.default,{"aria-label":"Toggle columns",role:"combobox",variant:"outline",size:"sm",className:"ds:ml-auto ds:h-8 ds:font-normal ds:lg:flex",children:[d,C.trigger]}),content:x??(i==="draggable"?_:t.jsx(K.default,{items:R,search:C.searchPlaceholder})),contentClassName:I.cn("ds:p-0",i==="draggable"?"ds:w-72":"ds:w-44",m),...h})}function k(r,i=r.getState().columnOrder,n=r.getState().columnPinning){const d=r.getAllLeafColumns(),l=new Map(d.map(s=>[s.id,s])),x=d.map(s=>s.id),m=i??[],h=[...m.filter(s=>l.has(s)),...x.filter(s=>!m.includes(s))],a=n??{},c=(a.left??[]).filter(s=>l.has(s)),o=(a.right??[]).filter(s=>l.has(s)),q=new Set([...c,...o]),y=h.filter(s=>!q.has(s));return[...c,...y,...o].map(s=>l.get(s)).filter(s=>!!s)}function Q({id:r,label:i,checked:n,onCheckedChange:d}){const{attributes:l,listeners:x,setNodeRef:m,transform:h,transition:a,isDragging:c}=b.useSortable({id:r});return t.jsxs("div",{ref:m,className:I.cn("ds:flex ds:min-h-11 ds:items-center ds:gap-3 ds:px-3 ds:text-sm ds:text-foreground",c&&"ds:bg-accent"),style:{transform:F.CSS.Transform.toString(h),transition:a},children:[t.jsx("button",{type:"button",className:"ds:flex ds:size-5 ds:shrink-0 ds:cursor-grab ds:items-center ds:justify-center ds:text-muted-foreground active:ds:cursor-grabbing","aria-label":`Reorder ${i}`,...l,...x,children:t.jsx(v.GripVertical,{className:"ds:size-4"})}),t.jsx(D.default,{"aria-label":`Toggle ${i}`,checked:n,onCheckedChange:d}),t.jsx("span",{className:"ds:min-w-0 ds:flex-1 ds:truncate ds:font-medium",children:i})]})}exports.DataTableViewOptions=J;
2
+ //# sourceMappingURL=data-table-view-options.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-view-options.cjs","sources":["../../../../src/components/Table/data-table-view-options.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n closestCenter,\n DndContext,\n type DragEndEvent,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\";\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n useSortable,\n verticalListSortingStrategy,\n} from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport type {\n Column,\n ColumnOrderState,\n ColumnPinningState,\n Table,\n} from \"@tanstack/react-table\";\nimport { Check, GripVertical, Settings2 } from \"lucide-react\";\nimport * as React from \"react\";\nimport { Button } from \"../Button\";\nimport { Checkbox } from \"../Checkbox\";\nimport Command, { type CommandItemType } from \"../Command/Command\";\nimport { Popover } from \"../Popover\";\nimport { cn } from \"@dsui/ui\";\n\nexport type DataTableViewOptionsVariant = \"command\" | \"draggable\";\n\nexport interface DataTableViewOptionsLabels {\n trigger?: React.ReactNode;\n searchPlaceholder?: string;\n selectAll?: React.ReactNode;\n reset?: React.ReactNode;\n}\n\nexport interface DataTableViewOptionsProps<TData> extends React.ComponentProps<\n typeof Popover\n> {\n table: Table<TData>;\n variant?: DataTableViewOptionsVariant;\n labels?: DataTableViewOptionsLabels;\n triggerIcon?: React.ReactNode;\n}\n\nexport function DataTableViewOptions<TData>({\n table,\n variant = \"command\",\n labels,\n triggerIcon = <Settings2 className=\"ds:text-muted-foreground\" />,\n trigger,\n content,\n contentClassName,\n ...props\n}: DataTableViewOptionsProps<TData>) {\n const columnOrder = table.getState().columnOrder;\n const columnPinning = table.getState().columnPinning;\n\n const columns = React.useMemo(\n () =>\n getOrderedTableColumns(table, columnOrder, columnPinning).filter(\n (column) =>\n typeof column.accessorFn !== \"undefined\" && column.getCanHide()\n ),\n [table, columnOrder, columnPinning]\n );\n\n const getColumnLabel = React.useCallback(\n (column: (typeof columns)[number]) =>\n column.columnDef.meta?.label ??\n (typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : column.id),\n []\n );\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n );\n\n const columnIds = React.useMemo(\n () => columns.map((column) => column.id),\n [columns]\n );\n\n const allColumnsVisible = columns.every((column) => column.getIsVisible());\n const someColumnsVisible = columns.some((column) => column.getIsVisible());\n\n const onToggleAll = React.useCallback(\n (checked: boolean) => {\n columns.forEach((column) => column.toggleVisibility(checked));\n },\n [columns]\n );\n\n const onDragEnd = React.useCallback(\n (event: DragEndEvent) => {\n const { active, over } = event;\n\n if (!over || active.id === over.id) return;\n\n const oldIndex = columnIds.indexOf(String(active.id));\n const newIndex = columnIds.indexOf(String(over.id));\n\n if (oldIndex === -1 || newIndex === -1) return;\n\n const orderedOptionIds = arrayMove(columnIds, oldIndex, newIndex);\n const optionIdSet = new Set(columnIds);\n const pendingOptionIds = [...orderedOptionIds];\n const nextColumnOrder = getOrderedTableColumns(table).map((column) =>\n optionIdSet.has(column.id)\n ? (pendingOptionIds.shift() ?? column.id)\n : column.id\n );\n const currentColumnPinning = table.getState().columnPinning;\n const nextColumnPinning = {\n ...currentColumnPinning,\n left: currentColumnPinning?.left?.filter((id) => !optionIdSet.has(id)),\n right: currentColumnPinning?.right?.filter(\n (id) => !optionIdSet.has(id)\n ),\n };\n\n table.setColumnOrder(nextColumnOrder);\n table.setColumnPinning(nextColumnPinning);\n },\n [columnIds, table]\n );\n\n const items: CommandItemType[] = [\n {\n type: \"group\",\n heading: \"\",\n items: columns.map((column) => ({\n type: \"item\" as const,\n onClick: () => column.toggleVisibility(!column.getIsVisible()),\n children: (\n <>\n <span className=\"ds:truncate\">{getColumnLabel(column)}</span>\n <Check\n className={cn(\n \"ds:ml-auto ds:size-4 ds:shrink-0\",\n column.getIsVisible() ? \"ds:opacity-100\" : \"ds:opacity-0\"\n )}\n />\n </>\n ),\n })),\n },\n ];\n\n const resolvedLabels = {\n trigger: labels?.trigger ?? \"View\",\n searchPlaceholder: labels?.searchPlaceholder ?? \"Search columns...\",\n selectAll: labels?.selectAll ?? \"Chọn tất cả\",\n reset: labels?.reset ?? \"Đặt lại\",\n };\n\n const defaultDraggableContent = (\n <div className=\"ds:flex ds:w-full ds:flex-col\">\n <div className=\"ds:flex ds:items-center ds:gap-3 ds:px-3 ds:py-3\">\n <Checkbox\n aria-label=\"Toggle all columns\"\n checked={\n allColumnsVisible\n ? true\n : someColumnsVisible\n ? \"indeterminate\"\n : false\n }\n onCheckedChange={(checked) => onToggleAll(checked === true)}\n />\n <span className=\"ds:text-sm ds:font-medium ds:text-foreground\">\n {resolvedLabels.selectAll}\n </span>\n </div>\n <div className=\"ds:mx-3 ds:h-px ds:bg-border\" />\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={onDragEnd}\n >\n <SortableContext\n items={columnIds}\n strategy={verticalListSortingStrategy}\n >\n <div className=\"ds:flex ds:max-h-80 ds:flex-col ds:overflow-y-auto ds:py-2\">\n {columns.map((column) => (\n <DataTableDraggableColumnOption\n key={column.id}\n id={column.id}\n label={getColumnLabel(column)}\n checked={column.getIsVisible()}\n onCheckedChange={(checked) =>\n column.toggleVisibility(checked === true)\n }\n />\n ))}\n </div>\n </SortableContext>\n </DndContext>\n <div className=\"ds:mx-3 ds:h-px ds:bg-border\" />\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"ds:mx-3 ds:my-2 ds:text-primary hover:ds:text-primary\"\n onClick={() => {\n table.resetColumnVisibility();\n table.resetColumnOrder();\n table.resetColumnPinning();\n }}\n >\n {resolvedLabels.reset}\n </Button>\n </div>\n );\n\n return (\n <Popover\n trigger={\n trigger ?? (\n <Button\n aria-label=\"Toggle columns\"\n role=\"combobox\"\n variant=\"outline\"\n size=\"sm\"\n className=\"ds:ml-auto ds:h-8 ds:font-normal ds:lg:flex\"\n >\n {triggerIcon}\n {resolvedLabels.trigger}\n </Button>\n )\n }\n content={\n content ??\n (variant === \"draggable\" ? (\n defaultDraggableContent\n ) : (\n <Command items={items} search={resolvedLabels.searchPlaceholder} />\n ))\n }\n contentClassName={cn(\n \"ds:p-0\",\n variant === \"draggable\" ? \"ds:w-72\" : \"ds:w-44\",\n contentClassName\n )}\n {...props}\n />\n );\n}\n\nfunction getOrderedTableColumns<TData>(\n table: Table<TData>,\n columnOrder: ColumnOrderState = table.getState().columnOrder,\n columnPinning: ColumnPinningState = table.getState().columnPinning\n) {\n const allColumns = table.getAllLeafColumns();\n const columnById = new Map(allColumns.map((column) => [column.id, column]));\n const columnIds = allColumns.map((column) => column.id);\n const order = columnOrder ?? [];\n const orderedIds = [\n ...order.filter((id) => columnById.has(id)),\n ...columnIds.filter((id) => !order.includes(id)),\n ];\n const pinning = columnPinning ?? {};\n const leftIds = (pinning.left ?? []).filter((id) => columnById.has(id));\n const rightIds = (pinning.right ?? []).filter((id) => columnById.has(id));\n const pinnedIds = new Set([...leftIds, ...rightIds]);\n const centerIds = orderedIds.filter((id) => !pinnedIds.has(id));\n\n return [...leftIds, ...centerIds, ...rightIds]\n .map((id) => columnById.get(id))\n .filter((column): column is Column<TData, unknown> => Boolean(column));\n}\n\ninterface DataTableDraggableColumnOptionProps {\n id: string;\n label: React.ReactNode;\n checked: boolean;\n onCheckedChange: React.ComponentProps<typeof Checkbox>[\"onCheckedChange\"];\n}\n\nfunction DataTableDraggableColumnOption({\n id,\n label,\n checked,\n onCheckedChange,\n}: DataTableDraggableColumnOptionProps) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id });\n\n return (\n <div\n ref={setNodeRef}\n className={cn(\n \"ds:flex ds:min-h-11 ds:items-center ds:gap-3 ds:px-3 ds:text-sm ds:text-foreground\",\n isDragging && \"ds:bg-accent\"\n )}\n style={{\n transform: CSS.Transform.toString(transform),\n transition,\n }}\n >\n <button\n type=\"button\"\n className=\"ds:flex ds:size-5 ds:shrink-0 ds:cursor-grab ds:items-center ds:justify-center ds:text-muted-foreground active:ds:cursor-grabbing\"\n aria-label={`Reorder ${label}`}\n {...attributes}\n {...listeners}\n >\n <GripVertical className=\"ds:size-4\" />\n </button>\n <Checkbox\n aria-label={`Toggle ${label}`}\n checked={checked}\n onCheckedChange={onCheckedChange}\n />\n <span className=\"ds:min-w-0 ds:flex-1 ds:truncate ds:font-medium\">\n {label}\n </span>\n </div>\n );\n}\n"],"names":["DataTableViewOptions","table","variant","labels","triggerIcon","jsx","Settings2","trigger","content","contentClassName","props","columnOrder","columnPinning","columns","React","getOrderedTableColumns","column","getColumnLabel","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","columnIds","allColumnsVisible","someColumnsVisible","onToggleAll","checked","onDragEnd","event","active","over","oldIndex","newIndex","orderedOptionIds","arrayMove","optionIdSet","pendingOptionIds","nextColumnOrder","currentColumnPinning","nextColumnPinning","id","items","jsxs","Fragment","Check","cn","resolvedLabels","defaultDraggableContent","Checkbox","DndContext","closestCenter","SortableContext","verticalListSortingStrategy","DataTableDraggableColumnOption","Button","Popover","Command","allColumns","columnById","order","orderedIds","pinning","leftIds","rightIds","pinnedIds","centerIds","label","onCheckedChange","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","CSS","GripVertical"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react/jsx-runtime"),s=require("../Checkbox/Checkbox.cjs");function n(c){return{id:"select",header:({table:e})=>l.jsx("div",{className:"ds:flex ds:items-center ds:justify-center",children:l.jsx(s.default,{checked:e.getIsAllPageRowsSelected()||e.getIsSomePageRowsSelected()&&"indeterminate",onCheckedChange:t=>e.toggleAllPageRowsSelected(!!t),"aria-label":"Select all"})}),cell:({row:e})=>l.jsx("div",{className:"ds:flex ds:items-center ds:justify-center",children:l.jsx(s.default,{checked:e.getIsSelected(),onCheckedChange:t=>e.toggleSelected(!!t),"aria-label":"Select row"})}),size:36,enableSorting:!1,enableHiding:!1,enableColumnFilter:!1,...c}}const a=n;exports.selectColumn=a;
2
+ //# sourceMappingURL=select-column.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select-column.cjs","sources":["../../../../src/components/Table/select-column.tsx"],"sourcesContent":["import type {\n CellContext,\n ColumnDef,\n HeaderContext,\n} from \"@tanstack/react-table\";\nimport { Checkbox } from \"@/components/Checkbox\";\n\nfunction createSelectColumn<TData>(\n props?: Partial<ColumnDef<TData>>\n): ColumnDef<TData> {\n return {\n id: \"select\",\n header: ({ table }: HeaderContext<TData, unknown>) => (\n <div className=\"ds:flex ds:items-center ds:justify-center\">\n <Checkbox\n checked={\n table.getIsAllPageRowsSelected() ||\n (table.getIsSomePageRowsSelected() && \"indeterminate\")\n }\n onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\n aria-label=\"Select all\"\n />\n </div>\n ),\n cell: ({ row }: CellContext<TData, unknown>) => (\n <div className=\"ds:flex ds:items-center ds:justify-center\">\n <Checkbox\n checked={row.getIsSelected()}\n onCheckedChange={(value) => row.toggleSelected(!!value)}\n aria-label=\"Select row\"\n />\n </div>\n ),\n size: 36,\n enableSorting: false,\n enableHiding: false,\n enableColumnFilter: false,\n ...props,\n };\n}\n\nexport const selectColumn = createSelectColumn;\n"],"names":["createSelectColumn","props","table","jsx","Checkbox","value","row","selectColumn"],"mappings":"2JAOA,SAASA,EACPC,EACkB,CAClB,MAAO,CACL,GAAI,SACJ,OAAQ,CAAC,CAAE,MAAAC,CAAA,IACTC,EAAAA,IAAC,MAAA,CAAI,UAAU,4CACb,SAAAA,EAAAA,IAACC,EAAAA,QAAA,CACC,QACEF,EAAM,yBAAA,GACLA,EAAM,6BAA+B,gBAExC,gBAAkBG,GAAUH,EAAM,0BAA0B,CAAC,CAACG,CAAK,EACnE,aAAW,YAAA,CAAA,EAEf,EAEF,KAAM,CAAC,CAAE,IAAAC,CAAA,IACPH,EAAAA,IAAC,MAAA,CAAI,UAAU,4CACb,SAAAA,EAAAA,IAACC,EAAAA,QAAA,CACC,QAASE,EAAI,cAAA,EACb,gBAAkBD,GAAUC,EAAI,eAAe,CAAC,CAACD,CAAK,EACtD,aAAW,YAAA,CAAA,EAEf,EAEF,KAAM,GACN,cAAe,GACf,aAAc,GACd,mBAAoB,GACpB,GAAGJ,CAAA,CAEP,CAEO,MAAMM,EAAeP"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const C=require("./components/Command/index.cjs"),g=require("./components/Popover/index.cjs"),m=require("./components/Tour/index.cjs"),c=require("./components/QrCode/index.cjs"),x=require("./components/Stepper/index.cjs"),f=require("./components/Pagination/index.cjs"),R=require("./components/DropdownMenu/index.cjs"),I=require("./components/ContextMenu/index.cjs"),M=require("./components/FloatLabel.cjs"),P=require("./components/TimeGridView.cjs"),G=require("./components/WheelColumn.cjs"),k=require("./components/Marquee/index.cjs");require("@radix-ui/react-slot");require("./packages/ui/src/components/button.cjs");const d=require("./packages/ui/src/components/button-group.cjs");require("./packages/ui/src/components/input.cjs");require("./packages/ui/src/components/textarea.cjs");const w=require("./packages/ui/src/components/label.cjs");require("./packages/ui/src/components/select.cjs");require("./packages/ui/src/components/combobox.cjs");require("react/jsx-runtime");require("@radix-ui/react-tooltip");const B=require("./packages/ui/src/lib/utils.cjs");require("react");require("lucide-react");require("react-day-picker");require("./packages/ui/src/components/popover.cjs");require("@radix-ui/react-separator");require("./packages/ui/src/components/switch.cjs");require("vaul");require("@radix-ui/react-scroll-area");require("./packages/ui/src/components/tree-view.cjs");require("@radix-ui/react-alert-dialog");require("@radix-ui/react-avatar");require("./packages/ui/src/components/badge.cjs");require("./packages/ui/src/components/checkbox.cjs");require("@radix-ui/react-collapsible");require("cmdk");require("@radix-ui/react-dialog");require("@radix-ui/react-dropdown-menu");require("./packages/ui/src/components/input-otp.cjs");require("./packages/ui/src/components/radio-group.cjs");const A=require("./packages/ui/src/components/sidebar.cjs");require("@radix-ui/react-slider");require("./packages/ui/src/components/tabs.cjs");require("./packages/ui/src/components/toggle.cjs");const D=require("./hooks/use-callback-ref.cjs"),v=require("./hooks/use-debounced-callback.cjs"),y=require("./hooks/use-debounced-value.cjs"),V=require("./hooks/use-intersection-observer.cjs"),F=require("./hooks/use-script.cjs"),E=require("./hooks/use-scroll-lock.cjs"),O=require("./hooks/use-on-click-outside.cjs"),z=require("./hooks/use-event-listener.cjs"),L=require("./hooks/use-media-query.cjs"),h=require("./hooks/use-data-table.cjs"),W=require("./components/Badge/Badge.cjs"),Q=require("./components/Breadcrumb/Breadcrumb.cjs"),H=require("./components/Button/Button.cjs"),$=require("./components/Button/ButtonGroup.cjs"),N=require("./components/Checkbox/Checkbox.cjs"),U=require("./components/Collapsible/Collapsible.cjs"),_=require("./components/Dialog/Dialog.cjs"),j=require("./components/Glass/Glass.cjs"),J=require("./components/Input/Input.cjs"),K=require("./components/InputOTP/InputOTP.cjs"),X=require("./components/Radio/Radio.cjs"),Y=require("./components/ScrollArea/ScrollArea.cjs"),Z=require("./components/Select/Select.cjs"),ee=require("./components/Separator/Separator.cjs"),re=require("./components/Sheet/Sheet.cjs"),te=require("./components/Skeleton/Skeleton.cjs"),oe=require("./components/Slider/Slider.cjs"),ie=require("./components/Switch/Switch.cjs"),ue=require("./components/Tabs/Tabs.cjs"),ae=require("./components/Textarea/Textarea.cjs"),ne=require("./components/Toggle/Toggle.cjs"),se=require("./components/Rate/Rate.cjs"),i=require("./components/Resizable/Resizable.cjs"),le=require("./components/Accordion/Accordion.cjs"),ce=require("./lib/TextAnimation/BlurText.cjs"),de=require("./lib/TextAnimation/CircularText.cjs"),qe=require("./lib/TextAnimation/TextPressureEffect.cjs"),be=require("./lib/TextAnimation/TypingText.cjs"),Se=require("./components/Avatar/Avatar.cjs"),q=require("./components/Calendar/Calendar.cjs"),pe=require("./components/DatePicker/DatePicker.cjs"),Te=require("./components/DatePicker/RangePicker.cjs"),Ce=require("./components/DatePicker/TimePicker.cjs"),e=require("./components/Sidebar/Sidebar.cjs"),a=require("./components/Toast/Toast.cjs"),ge=require("./components/Tooltip/Tooltip.cjs"),me=require("./components/Upload/Upload.cjs"),xe=require("./components/QrCode/QrCode.cjs"),fe=require("./components/Stepper/Stepper.cjs"),Re=require("./components/Table/data-table.cjs"),Ie=require("./components/Table/data-table-pagination.cjs"),b=require("./components/TreeSelect/TreeSelect.cjs"),n=require("./packages/ui/src/components/resizable.cjs"),s=require("./packages/ui/src/components/accordion.cjs"),l=require("./components/ImageViewer/ImageViewer.cjs"),S=require("./components/Carousel/Carousel.cjs"),t=require("./components/Cropper/Cropper.cjs"),p=require("./components/Cropper/CropperTool.cjs"),o=require("./components/Cropper/utils.cjs"),r=require("./components/Interactive/CursorFollow.cjs"),u=require("./components/Masonry/Masonry.cjs"),T=require("./components/Masonry/MasonryWrapper.cjs"),Me=require("./lib/TextAnimation/RotatingText.cjs"),Pe=require("./lib/TextAnimation/FlipWords.cjs"),Ge=require("./lib/TextAnimation/GradientText.cjs"),ke=require("./lib/TextAnimation/RollingText.cjs"),we=require("./lib/TextAnimation/ShimmeringText.cjs"),Be=require("./lib/TextAnimation/SplittingText.cjs"),Ae=require("./lib/TextAnimation/TextGenerateEffect.cjs"),De=require("./lib/TextAnimation/TextHoverEffect.cjs"),ve=require("./lib/TextAnimation/WritingText.cjs");exports.Command=C.Command;exports.Popover=g.Popover;exports.Tour=m.Tour;exports.QRCode=c.QRCode;exports.QrCode=c.QRCode;exports.Stepper=x.Stepper;exports.Pagination=f.Pagination;exports.DropdownMenu=R.DropdownMenu;exports.ContextMenu=I.ContextMenu;exports.FloatingLabel=M.FloatingLabel;exports.TimeGridView=P.TimeGridView;exports.WheelColumn=G.TimeColumnwheel;exports.Marquee=k.Marquee;exports.ButtonGroupSeparator=d.ButtonGroupSeparator;exports.ButtonGroupText=d.ButtonGroupText;exports.Label=w.Label;exports.cn=B.cn;exports.useSidebar=A.useSidebar;exports.useCallbackRef=D.useCallbackRef;exports.useDebouncedCallback=v.useDebouncedCallback;exports.useDebounceValue=y.useDebounceValue;exports.useIntersectionObserver=V.useIntersectionObserver;exports.useScript=F.useScript;exports.useScrollLock=E.useScrollLock;exports.useOnClickOutside=O.useOnClickOutside;exports.useEventListener=z.useEventListener;exports.useMediaQuery=L.useMediaQuery;exports.useDataTable=h.useDataTable;exports.Badge=W.default;exports.Breadcrumb=Q.default;exports.Button=H.default;exports.ButtonGroup=$.default;exports.Checkbox=N.default;exports.Collapsible=U.default;exports.Dialog=_.default;exports.Glass=j.default;exports.Input=J.default;exports.InputOTP=K.default;exports.Radio=X.default;exports.ScrollArea=Y.ScrollArea;exports.Select=Z.default;exports.Separator=ee.default;exports.Sheet=re.default;exports.Skeleton=te.default;exports.Slider=oe.default;exports.Switch=ie.default;exports.Tabs=ue.default;exports.Textarea=ae.default;exports.Toggle=ne.default;exports.Rate=se.default;exports.Handle=i.Handle;exports.Panel=i.Panel;exports.Resizable=i.default;exports.ResizableWrapper=i.ResizableWrapper;exports.Accordion=le.default;exports.BlurText=ce.default;exports.CircularText=de.default;exports.TextPressure=qe.default;exports.TypingText=be.default;exports.Avatar=Se.Avatar;exports.Calendar=q.Calendar;exports.CalendarDayButton=q.CalendarDayButton;exports.DatePicker=pe.DatePicker;exports.RangePicker=Te.RangePicker;exports.TimePicker=Ce.TimePicker;exports.Sidebar=e.Sidebar;exports.SidebarContent=e.SidebarContent;exports.SidebarFooter=e.SidebarFooter;exports.SidebarGroup=e.SidebarGroup;exports.SidebarGroupAction=e.SidebarGroupAction;exports.SidebarGroupContent=e.SidebarGroupContent;exports.SidebarGroupLabel=e.SidebarGroupLabel;exports.SidebarHeader=e.SidebarHeader;exports.SidebarInput=e.SidebarInput;exports.SidebarInset=e.SidebarInset;exports.SidebarMenu=e.SidebarMenu;exports.SidebarMenuAction=e.SidebarMenuAction;exports.SidebarMenuBadge=e.SidebarMenuBadge;exports.SidebarMenuButton=e.SidebarMenuButton;exports.SidebarMenuItem=e.SidebarMenuItem;exports.SidebarMenuSkeleton=e.SidebarMenuSkeleton;exports.SidebarMenuSub=e.SidebarMenuSub;exports.SidebarMenuSubButton=e.SidebarMenuSubButton;exports.SidebarMenuSubItem=e.SidebarMenuSubItem;exports.SidebarProvider=e.SidebarProvider;exports.SidebarRail=e.SidebarRail;exports.SidebarSeparator=e.SidebarSeparator;exports.SidebarTrigger=e.SidebarTrigger;exports.Toast=a.toast;exports.Toaster=a.Toaster;exports.toast=a.toast;exports.Tooltip=ge.Tooltip;exports.Upload=me.Upload;exports.useQRCode=xe.useQRCode;exports.useStepper=fe.useStepper;exports.DataTable=Re.DataTable;exports.DataTablePagination=Ie.DataTablePagination;exports.TreeSelect=b.TreeSelect;exports.TreeView=b.TreeView;exports.ResizableHandle=n.ResizableHandle;exports.ResizablePanel=n.ResizablePanel;exports.ResizablePanelGroup=n.ResizablePanelGroup;exports.AccordionContent=s.AccordionContent;exports.AccordionItem=s.AccordionItem;exports.AccordionTrigger=s.AccordionTrigger;exports.ImageViewer=l.ImageViewer;exports.ImageViewerGroup=l.ImageViewerGroup;exports.ImageViewerImage=l.ImageViewerImage;exports.Carousel=S.Carousel;exports.CarouselSlide=S.CarouselSlide;exports.Cropper=t.Root;exports.CropperArea=t.Area;exports.CropperImage=t.Image;exports.CropperVideo=t.Video;exports.useCropper=t.useCropper;exports.CropperTool=p.CropperTool;exports.useCropperTool=p.useCropperTool;exports.base64ToBlob=o.base64ToBlob;exports.base64ToFile=o.base64ToFile;exports.downloadImage=o.downloadImage;exports.getCroppedImg=o.getCroppedImg;exports.rotateSize=o.rotateSize;exports.Cursor=r.Cursor;exports.CursorFollow=r.CursorFollow;exports.CursorProvider=r.CursorProvider;exports.TRANSITION_PRESETS=r.TRANSITION_PRESETS;exports.useCursor=r.useCursor;exports.useCursorFollow=r.useCursorFollow;exports.Item=u.Item;exports.MasonryItem=u.MasonryItem;exports.MasonryRoot=u.MasonryRoot;exports.Root=u.Root;exports.Masonry=T.Masonry;exports.MasonryComponent=T.MasonryComponent;exports.RotatingText=Me.RotatingText;exports.FlipWords=Pe.FlipWords;exports.GradientText=Ge.GradientText;exports.RollingText=ke.RollingText;exports.ShimmeringText=we.ShimmeringText;exports.SplittingText=Be.SplittingText;exports.TextGenerateEffect=Ae.TextGenerateEffect;exports.TextHoverEffect=De.TextHoverEffect;exports.WritingText=ve.WritingText;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const C=require("./components/Command/index.cjs"),g=require("./components/Popover/index.cjs"),m=require("./components/Tour/index.cjs"),c=require("./components/QrCode/index.cjs"),x=require("./components/Stepper/index.cjs"),f=require("./components/Pagination/index.cjs"),R=require("./components/DropdownMenu/index.cjs"),I=require("./components/ContextMenu/index.cjs"),M=require("./components/FloatLabel.cjs"),D=require("./components/TimeGridView.cjs"),P=require("./components/WheelColumn.cjs"),G=require("./components/Marquee/index.cjs");require("@radix-ui/react-slot");require("./packages/ui/src/components/button.cjs");const d=require("./packages/ui/src/components/button-group.cjs");require("./packages/ui/src/components/input.cjs");require("./packages/ui/src/components/textarea.cjs");const k=require("./packages/ui/src/components/label.cjs");require("./packages/ui/src/components/select.cjs");require("./packages/ui/src/components/combobox.cjs");require("react/jsx-runtime");require("@radix-ui/react-tooltip");const w=require("./packages/ui/src/lib/utils.cjs");require("react");require("lucide-react");require("react-day-picker");require("./packages/ui/src/components/popover.cjs");require("@radix-ui/react-separator");require("./packages/ui/src/components/switch.cjs");require("vaul");require("@radix-ui/react-scroll-area");require("./packages/ui/src/components/tree-view.cjs");require("@radix-ui/react-alert-dialog");require("@radix-ui/react-avatar");require("./packages/ui/src/components/badge.cjs");require("./packages/ui/src/components/checkbox.cjs");require("@radix-ui/react-collapsible");require("cmdk");require("@radix-ui/react-dialog");require("@radix-ui/react-dropdown-menu");require("./packages/ui/src/components/input-otp.cjs");require("./packages/ui/src/components/radio-group.cjs");const B=require("./packages/ui/src/components/sidebar.cjs");require("@radix-ui/react-slider");require("./packages/ui/src/components/tabs.cjs");require("./packages/ui/src/components/toggle.cjs");const F=require("./hooks/use-callback-ref.cjs"),v=require("./hooks/use-debounced-callback.cjs"),A=require("./hooks/use-debounced-value.cjs"),V=require("./hooks/use-intersection-observer.cjs"),y=require("./hooks/use-script.cjs"),O=require("./hooks/use-scroll-lock.cjs"),E=require("./hooks/use-on-click-outside.cjs"),z=require("./hooks/use-event-listener.cjs"),L=require("./hooks/use-media-query.cjs"),h=require("./hooks/use-data-table.cjs"),H=require("./components/Badge/Badge.cjs"),W=require("./components/Breadcrumb/Breadcrumb.cjs"),Q=require("./components/Button/Button.cjs"),$=require("./components/Button/ButtonGroup.cjs"),N=require("./components/Checkbox/Checkbox.cjs"),U=require("./components/Collapsible/Collapsible.cjs"),_=require("./components/Dialog/Dialog.cjs"),j=require("./components/Glass/Glass.cjs"),J=require("./components/Input/Input.cjs"),K=require("./components/InputOTP/InputOTP.cjs"),X=require("./components/Radio/Radio.cjs"),Y=require("./components/ScrollArea/ScrollArea.cjs"),Z=require("./components/Select/Select.cjs"),ee=require("./components/Separator/Separator.cjs"),re=require("./components/Sheet/Sheet.cjs"),te=require("./components/Skeleton/Skeleton.cjs"),oe=require("./components/Slider/Slider.cjs"),ae=require("./components/Switch/Switch.cjs"),ie=require("./components/Tabs/Tabs.cjs"),ue=require("./components/Textarea/Textarea.cjs"),ne=require("./components/Toggle/Toggle.cjs"),le=require("./components/Rate/Rate.cjs"),a=require("./components/Resizable/Resizable.cjs"),se=require("./components/Accordion/Accordion.cjs"),ce=require("./lib/TextAnimation/BlurText.cjs"),de=require("./lib/TextAnimation/CircularText.cjs"),be=require("./lib/TextAnimation/TextPressureEffect.cjs"),qe=require("./lib/TextAnimation/TypingText.cjs"),Te=require("./components/Avatar/Avatar.cjs"),b=require("./components/Calendar/Calendar.cjs"),Se=require("./components/DatePicker/DatePicker.cjs"),pe=require("./components/DatePicker/RangePicker.cjs"),Ce=require("./components/DatePicker/TimePicker.cjs"),e=require("./components/Sidebar/Sidebar.cjs"),u=require("./components/Toast/Toast.cjs"),ge=require("./components/Tooltip/Tooltip.cjs"),me=require("./components/Upload/Upload.cjs"),xe=require("./components/QrCode/QrCode.cjs"),fe=require("./components/Stepper/Stepper.cjs"),Re=require("./components/Table/data-table.cjs"),Ie=require("./components/Table/data-table-column-header.cjs"),Me=require("./components/Table/data-table-pagination.cjs"),De=require("./components/Table/data-table-toolbar.cjs"),Pe=require("./components/Table/data-table-view-options.cjs"),Ge=require("./components/Table/select-column.cjs"),ke=require("./components/Table/TableFilter/data-table-date-filter.cjs"),we=require("./components/Table/TableFilter/data-table-filter-popover.cjs"),Be=require("./components/Table/TableFilter/data-table-slider-filter.cjs"),q=require("./components/TreeSelect/TreeSelect.cjs"),n=require("./packages/ui/src/components/resizable.cjs"),l=require("./packages/ui/src/components/accordion.cjs"),s=require("./components/ImageViewer/ImageViewer.cjs"),T=require("./components/Carousel/Carousel.cjs"),t=require("./components/Cropper/Cropper.cjs"),S=require("./components/Cropper/CropperTool.cjs"),o=require("./components/Cropper/utils.cjs"),r=require("./components/Interactive/CursorFollow.cjs"),i=require("./components/Masonry/Masonry.cjs"),p=require("./components/Masonry/MasonryWrapper.cjs"),Fe=require("./lib/TextAnimation/RotatingText.cjs"),ve=require("./lib/TextAnimation/FlipWords.cjs"),Ae=require("./lib/TextAnimation/GradientText.cjs"),Ve=require("./lib/TextAnimation/RollingText.cjs"),ye=require("./lib/TextAnimation/ShimmeringText.cjs"),Oe=require("./lib/TextAnimation/SplittingText.cjs"),Ee=require("./lib/TextAnimation/TextGenerateEffect.cjs"),ze=require("./lib/TextAnimation/TextHoverEffect.cjs"),Le=require("./lib/TextAnimation/WritingText.cjs");exports.Command=C.Command;exports.Popover=g.Popover;exports.Tour=m.Tour;exports.QRCode=c.QRCode;exports.QrCode=c.QRCode;exports.Stepper=x.Stepper;exports.Pagination=f.Pagination;exports.DropdownMenu=R.DropdownMenu;exports.ContextMenu=I.ContextMenu;exports.FloatingLabel=M.FloatingLabel;exports.TimeGridView=D.TimeGridView;exports.WheelColumn=P.TimeColumnwheel;exports.Marquee=G.Marquee;exports.ButtonGroupSeparator=d.ButtonGroupSeparator;exports.ButtonGroupText=d.ButtonGroupText;exports.Label=k.Label;exports.cn=w.cn;exports.useSidebar=B.useSidebar;exports.useCallbackRef=F.useCallbackRef;exports.useDebouncedCallback=v.useDebouncedCallback;exports.useDebounceValue=A.useDebounceValue;exports.useIntersectionObserver=V.useIntersectionObserver;exports.useScript=y.useScript;exports.useScrollLock=O.useScrollLock;exports.useOnClickOutside=E.useOnClickOutside;exports.useEventListener=z.useEventListener;exports.useMediaQuery=L.useMediaQuery;exports.useDataTable=h.useDataTable;exports.Badge=H.default;exports.Breadcrumb=W.default;exports.Button=Q.default;exports.ButtonGroup=$.default;exports.Checkbox=N.default;exports.Collapsible=U.default;exports.Dialog=_.default;exports.Glass=j.default;exports.Input=J.default;exports.InputOTP=K.default;exports.Radio=X.default;exports.ScrollArea=Y.ScrollArea;exports.Select=Z.default;exports.Separator=ee.default;exports.Sheet=re.default;exports.Skeleton=te.default;exports.Slider=oe.default;exports.Switch=ae.default;exports.Tabs=ie.default;exports.Textarea=ue.default;exports.Toggle=ne.default;exports.Rate=le.default;exports.Handle=a.Handle;exports.Panel=a.Panel;exports.Resizable=a.default;exports.ResizableWrapper=a.ResizableWrapper;exports.Accordion=se.default;exports.BlurText=ce.default;exports.CircularText=de.default;exports.TextPressure=be.default;exports.TypingText=qe.default;exports.Avatar=Te.Avatar;exports.Calendar=b.Calendar;exports.CalendarDayButton=b.CalendarDayButton;exports.DatePicker=Se.DatePicker;exports.RangePicker=pe.RangePicker;exports.TimePicker=Ce.TimePicker;exports.Sidebar=e.Sidebar;exports.SidebarContent=e.SidebarContent;exports.SidebarFooter=e.SidebarFooter;exports.SidebarGroup=e.SidebarGroup;exports.SidebarGroupAction=e.SidebarGroupAction;exports.SidebarGroupContent=e.SidebarGroupContent;exports.SidebarGroupLabel=e.SidebarGroupLabel;exports.SidebarHeader=e.SidebarHeader;exports.SidebarInput=e.SidebarInput;exports.SidebarInset=e.SidebarInset;exports.SidebarMenu=e.SidebarMenu;exports.SidebarMenuAction=e.SidebarMenuAction;exports.SidebarMenuBadge=e.SidebarMenuBadge;exports.SidebarMenuButton=e.SidebarMenuButton;exports.SidebarMenuItem=e.SidebarMenuItem;exports.SidebarMenuSkeleton=e.SidebarMenuSkeleton;exports.SidebarMenuSub=e.SidebarMenuSub;exports.SidebarMenuSubButton=e.SidebarMenuSubButton;exports.SidebarMenuSubItem=e.SidebarMenuSubItem;exports.SidebarProvider=e.SidebarProvider;exports.SidebarRail=e.SidebarRail;exports.SidebarSeparator=e.SidebarSeparator;exports.SidebarTrigger=e.SidebarTrigger;exports.Toast=u.toast;exports.Toaster=u.Toaster;exports.toast=u.toast;exports.Tooltip=ge.Tooltip;exports.Upload=me.Upload;exports.useQRCode=xe.useQRCode;exports.useStepper=fe.useStepper;exports.DataTable=Re.DataTable;exports.DataTableColumnHeader=Ie.DataTableColumnHeader;exports.DataTablePagination=Me.DataTablePagination;exports.DataTableToolbar=De.DataTableToolbar;exports.DataTableViewOptions=Pe.DataTableViewOptions;exports.selectColumn=Ge.selectColumn;exports.DataTableDateFilter=ke.DataTableDateFilter;exports.DataTableFilterPopover=we.DataTableFilterPopover;exports.DataTableSliderFilter=Be.DataTableSliderFilter;exports.TreeSelect=q.TreeSelect;exports.TreeView=q.TreeView;exports.ResizableHandle=n.ResizableHandle;exports.ResizablePanel=n.ResizablePanel;exports.ResizablePanelGroup=n.ResizablePanelGroup;exports.AccordionContent=l.AccordionContent;exports.AccordionItem=l.AccordionItem;exports.AccordionTrigger=l.AccordionTrigger;exports.ImageViewer=s.ImageViewer;exports.ImageViewerGroup=s.ImageViewerGroup;exports.ImageViewerImage=s.ImageViewerImage;exports.Carousel=T.Carousel;exports.CarouselSlide=T.CarouselSlide;exports.Cropper=t.Root;exports.CropperArea=t.Area;exports.CropperImage=t.Image;exports.CropperVideo=t.Video;exports.useCropper=t.useCropper;exports.CropperTool=S.CropperTool;exports.useCropperTool=S.useCropperTool;exports.base64ToBlob=o.base64ToBlob;exports.base64ToFile=o.base64ToFile;exports.downloadImage=o.downloadImage;exports.getCroppedImg=o.getCroppedImg;exports.rotateSize=o.rotateSize;exports.Cursor=r.Cursor;exports.CursorFollow=r.CursorFollow;exports.CursorProvider=r.CursorProvider;exports.TRANSITION_PRESETS=r.TRANSITION_PRESETS;exports.useCursor=r.useCursor;exports.useCursorFollow=r.useCursorFollow;exports.Item=i.Item;exports.MasonryItem=i.MasonryItem;exports.MasonryRoot=i.MasonryRoot;exports.Root=i.Root;exports.Masonry=p.Masonry;exports.MasonryComponent=p.MasonryComponent;exports.RotatingText=Fe.RotatingText;exports.FlipWords=ve.FlipWords;exports.GradientText=Ae.GradientText;exports.RollingText=Ve.RollingText;exports.ShimmeringText=ye.ShimmeringText;exports.SplittingText=Oe.SplittingText;exports.TextGenerateEffect=Ee.TextGenerateEffect;exports.TextHoverEffect=ze.TextHoverEffect;exports.WritingText=Le.WritingText;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react"),c={display:"none"};function r(e){let{id:n,value:t}=e;return o.createElement("div",{id:n,style:c},t)}function u(e){let{id:n,announcement:t,ariaLiveType:i="assertive"}=e;const a={position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"};return o.createElement("div",{id:n,style:a,role:"status","aria-live":i,"aria-atomic":!0},t)}function d(){const[e,n]=o.useState("");return{announce:o.useCallback(i=>{i!=null&&n(i)},[]),announcement:e}}exports.HiddenText=r;exports.LiveRegion=u;exports.useAnnouncement=d;
2
+ //# sourceMappingURL=accessibility.esm.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accessibility.esm.cjs","sources":["../../../../../../../../../../../node_modules/.pnpm/@dnd-kit+accessibility@3.1.1_react@19.1.1/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.js"],"sourcesContent":["import React, { useState, useCallback } from 'react';\n\nconst hiddenStyles = {\n display: 'none'\n};\nfunction HiddenText(_ref) {\n let {\n id,\n value\n } = _ref;\n return React.createElement(\"div\", {\n id: id,\n style: hiddenStyles\n }, value);\n}\n\nfunction LiveRegion(_ref) {\n let {\n id,\n announcement,\n ariaLiveType = \"assertive\"\n } = _ref;\n // Hide element visually but keep it readable by screen readers\n const visuallyHidden = {\n position: 'fixed',\n top: 0,\n left: 0,\n width: 1,\n height: 1,\n margin: -1,\n border: 0,\n padding: 0,\n overflow: 'hidden',\n clip: 'rect(0 0 0 0)',\n clipPath: 'inset(100%)',\n whiteSpace: 'nowrap'\n };\n return React.createElement(\"div\", {\n id: id,\n style: visuallyHidden,\n role: \"status\",\n \"aria-live\": ariaLiveType,\n \"aria-atomic\": true\n }, announcement);\n}\n\nfunction useAnnouncement() {\n const [announcement, setAnnouncement] = useState('');\n const announce = useCallback(value => {\n if (value != null) {\n setAnnouncement(value);\n }\n }, []);\n return {\n announce,\n announcement\n };\n}\n\nexport { HiddenText, LiveRegion, useAnnouncement };\n//# sourceMappingURL=accessibility.esm.js.map\n"],"names":["hiddenStyles","HiddenText","_ref","id","value","React","LiveRegion","announcement","ariaLiveType","visuallyHidden","useAnnouncement","setAnnouncement","useState","useCallback"],"mappings":"yGAEMA,EAAe,CACnB,QAAS,MACX,EACA,SAASC,EAAWC,EAAM,CACxB,GAAI,CACF,GAAAC,EACA,MAAAC,CACJ,EAAMF,EACJ,OAAOG,EAAM,cAAc,MAAO,CAChC,GAAIF,EACJ,MAAOH,CACX,EAAKI,CAAK,CACV,CAEA,SAASE,EAAWJ,EAAM,CACxB,GAAI,CACF,GAAAC,EACA,aAAAI,EACA,aAAAC,EAAe,WACnB,EAAMN,EAEJ,MAAMO,EAAiB,CACrB,SAAU,QACV,IAAK,EACL,KAAM,EACN,MAAO,EACP,OAAQ,EACR,OAAQ,GACR,OAAQ,EACR,QAAS,EACT,SAAU,SACV,KAAM,gBACN,SAAU,cACV,WAAY,QAChB,EACE,OAAOJ,EAAM,cAAc,MAAO,CAChC,GAAIF,EACJ,MAAOM,EACP,KAAM,SACN,YAAaD,EACb,cAAe,EACnB,EAAKD,CAAY,CACjB,CAEA,SAASG,GAAkB,CACzB,KAAM,CAACH,EAAcI,CAAe,EAAIC,EAAAA,SAAS,EAAE,EAMnD,MAAO,CACL,SANeC,EAAAA,YAAYT,GAAS,CAChCA,GAAS,MACXO,EAAgBP,CAAK,CAEzB,EAAG,CAAA,CAAE,EAGH,aAAAG,CACJ,CACA","x_google_ignoreList":[0]}
@@ -0,0 +1,6 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react"),ve=require("react-dom"),u=require("../../../../../@dnd-kit_utilities@3.2.2_react@19.1.1/node_modules/@dnd-kit/utilities/dist/utilities.esm.cjs"),Te=require("../../../../../@dnd-kit_accessibility@3.1.1_react@19.1.1/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.cjs"),pt=i.createContext(null);function yt(e){const t=i.useContext(pt);i.useEffect(()=>{if(!t)throw new Error("useDndMonitor must be used within a children of <DndContext>");return t(e)},[e,t])}function Vt(){const[e]=i.useState(()=>new Set),t=i.useCallback(r=>(e.add(r),()=>e.delete(r)),[e]);return[i.useCallback(r=>{let{type:s,event:o}=r;e.forEach(l=>{var a;return(a=l[s])==null?void 0:a.call(l,o)})},[e]),t]}const wt={draggable:`
2
+ To pick up a draggable item, press the space bar.
3
+ While dragging, use the arrow keys to move the item.
4
+ Press space again to drop the item in its new position, or press escape to cancel.
5
+ `},mt={onDragStart(e){let{active:t}=e;return"Picked up draggable item "+t.id+"."},onDragOver(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was moved over droppable area "+n.id+".":"Draggable item "+t.id+" is no longer over a droppable area."},onDragEnd(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was dropped over droppable area "+n.id:"Draggable item "+t.id+" was dropped."},onDragCancel(e){let{active:t}=e;return"Dragging was cancelled. Draggable item "+t.id+" was dropped."}};function Jt(e){let{announcements:t=mt,container:n,hiddenTextDescribedById:r,screenReaderInstructions:s=wt}=e;const{announce:o,announcement:l}=Te.useAnnouncement(),a=u.useUniqueId("DndLiveRegion"),[c,d]=i.useState(!1);if(i.useEffect(()=>{d(!0)},[]),yt(i.useMemo(()=>({onDragStart(f){let{active:b}=f;o(t.onDragStart({active:b}))},onDragMove(f){let{active:b,over:g}=f;t.onDragMove&&o(t.onDragMove({active:b,over:g}))},onDragOver(f){let{active:b,over:g}=f;o(t.onDragOver({active:b,over:g}))},onDragEnd(f){let{active:b,over:g}=f;o(t.onDragEnd({active:b,over:g}))},onDragCancel(f){let{active:b,over:g}=f;o(t.onDragCancel({active:b,over:g}))}}),[o,t])),!c)return null;const h=i.createElement(i.Fragment,null,i.createElement(Te.HiddenText,{id:r,value:s.draggable}),i.createElement(Te.LiveRegion,{id:a,announcement:l}));return n?ve.createPortal(h,n):h}var E;(function(e){e.DragStart="dragStart",e.DragMove="dragMove",e.DragEnd="dragEnd",e.DragCancel="dragCancel",e.DragOver="dragOver",e.RegisterDroppable="registerDroppable",e.SetDroppableDisabled="setDroppableDisabled",e.UnregisterDroppable="unregisterDroppable"})(E||(E={}));function xe(){}function Gt(e,t){return i.useMemo(()=>({sensor:e,options:t??{}}),[e,t])}function Qt(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return i.useMemo(()=>[...t].filter(r=>r!=null),[...t])}const F=Object.freeze({x:0,y:0});function Ct(e,t){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function Dt(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return n-r}function Zt(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return r-n}function st(e){let{left:t,top:n,height:r,width:s}=e;return[{x:t,y:n},{x:t+s,y:n},{x:t,y:n+r},{x:t+s,y:n+r}]}function xt(e,t){if(!e||e.length===0)return null;const[n]=e;return n[t]}function it(e,t,n){return t===void 0&&(t=e.left),n===void 0&&(n=e.top),{x:t+e.width*.5,y:n+e.height*.5}}const en=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e;const s=it(t,t.left,t.top),o=[];for(const l of r){const{id:a}=l,c=n.get(a);if(c){const d=Ct(it(c),s);o.push({id:a,data:{droppableContainer:l,value:d}})}}return o.sort(Dt)},tn=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e;const s=st(t),o=[];for(const l of r){const{id:a}=l,c=n.get(a);if(c){const d=st(c),h=s.reduce((b,g,x)=>b+Ct(d[x],g),0),f=Number((h/4).toFixed(4));o.push({id:a,data:{droppableContainer:l,value:f}})}}return o.sort(Dt)};function nn(e,t){const n=Math.max(t.top,e.top),r=Math.max(t.left,e.left),s=Math.min(t.left+t.width,e.left+e.width),o=Math.min(t.top+t.height,e.top+e.height),l=s-r,a=o-n;if(r<s&&n<o){const c=t.width*t.height,d=e.width*e.height,h=l*a,f=h/(c+d-h);return Number(f.toFixed(4))}return 0}const St=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e;const s=[];for(const o of r){const{id:l}=o,a=n.get(l);if(a){const c=nn(a,t);c>0&&s.push({id:l,data:{droppableContainer:o,value:c}})}}return s.sort(Zt)};function rn(e,t,n){return{...e,scaleX:t&&n?t.width/n.width:1,scaleY:t&&n?t.height/n.height:1}}function Rt(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:F}function on(e){return function(n){for(var r=arguments.length,s=new Array(r>1?r-1:0),o=1;o<r;o++)s[o-1]=arguments[o];return s.reduce((l,a)=>({...l,top:l.top+e*a.y,bottom:l.bottom+e*a.y,left:l.left+e*a.x,right:l.right+e*a.x}),{...n})}}const sn=on(1);function an(e){if(e.startsWith("matrix3d(")){const t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}else if(e.startsWith("matrix(")){const t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}function ln(e,t,n){const r=an(t);if(!r)return e;const{scaleX:s,scaleY:o,x:l,y:a}=r,c=e.left-l-(1-s)*parseFloat(n),d=e.top-a-(1-o)*parseFloat(n.slice(n.indexOf(" ")+1)),h=s?e.width/s:e.width,f=o?e.height/o:e.height;return{width:h,height:f,top:d,right:c+h,bottom:d+f,left:c}}const cn={ignoreTransform:!1};function ue(e,t){t===void 0&&(t=cn);let n=e.getBoundingClientRect();if(t.ignoreTransform){const{transform:d,transformOrigin:h}=u.getWindow(e).getComputedStyle(e);d&&(n=ln(n,d,h))}const{top:r,left:s,width:o,height:l,bottom:a,right:c}=n;return{top:r,left:s,width:o,height:l,bottom:a,right:c}}function at(e){return ue(e,{ignoreTransform:!0})}function un(e){const t=e.innerWidth,n=e.innerHeight;return{top:0,left:0,right:t,bottom:n,width:t,height:n}}function dn(e,t){return t===void 0&&(t=u.getWindow(e).getComputedStyle(e)),t.position==="fixed"}function fn(e,t){t===void 0&&(t=u.getWindow(e).getComputedStyle(e));const n=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(s=>{const o=t[s];return typeof o=="string"?n.test(o):!1})}function Se(e,t){const n=[];function r(s){if(t!=null&&n.length>=t||!s)return n;if(u.isDocument(s)&&s.scrollingElement!=null&&!n.includes(s.scrollingElement))return n.push(s.scrollingElement),n;if(!u.isHTMLElement(s)||u.isSVGElement(s)||n.includes(s))return n;const o=u.getWindow(e).getComputedStyle(s);return s!==e&&fn(s,o)&&n.push(s),dn(s,o)?n:r(s.parentNode)}return e?r(e):n}function Et(e){const[t]=Se(e,1);return t??null}function Ie(e){return!u.canUseDOM||!e?null:u.isWindow(e)?e:u.isNode(e)?u.isDocument(e)||e===u.getOwnerDocument(e).scrollingElement?window:u.isHTMLElement(e)?e:null:null}function Mt(e){return u.isWindow(e)?e.scrollX:e.scrollLeft}function At(e){return u.isWindow(e)?e.scrollY:e.scrollTop}function Ke(e){return{x:Mt(e),y:At(e)}}var O;(function(e){e[e.Forward=1]="Forward",e[e.Backward=-1]="Backward"})(O||(O={}));function Ot(e){return!u.canUseDOM||!e?!1:e===document.scrollingElement}function Lt(e){const t={x:0,y:0},n=Ot(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},r={x:e.scrollWidth-n.width,y:e.scrollHeight-n.height},s=e.scrollTop<=t.y,o=e.scrollLeft<=t.x,l=e.scrollTop>=r.y,a=e.scrollLeft>=r.x;return{isTop:s,isLeft:o,isBottom:l,isRight:a,maxScroll:r,minScroll:t}}const hn={x:.2,y:.2};function gn(e,t,n,r,s){let{top:o,left:l,right:a,bottom:c}=n;r===void 0&&(r=10),s===void 0&&(s=hn);const{isTop:d,isBottom:h,isLeft:f,isRight:b}=Lt(e),g={x:0,y:0},x={x:0,y:0},v={height:t.height*s.y,width:t.width*s.x};return!d&&o<=t.top+v.height?(g.y=O.Backward,x.y=r*Math.abs((t.top+v.height-o)/v.height)):!h&&c>=t.bottom-v.height&&(g.y=O.Forward,x.y=r*Math.abs((t.bottom-v.height-c)/v.height)),!b&&a>=t.right-v.width?(g.x=O.Forward,x.x=r*Math.abs((t.right-v.width-a)/v.width)):!f&&l<=t.left+v.width&&(g.x=O.Backward,x.x=r*Math.abs((t.left+v.width-l)/v.width)),{direction:g,speed:x}}function vn(e){if(e===document.scrollingElement){const{innerWidth:o,innerHeight:l}=window;return{top:0,left:0,right:o,bottom:l,width:o,height:l}}const{top:t,left:n,right:r,bottom:s}=e.getBoundingClientRect();return{top:t,left:n,right:r,bottom:s,width:e.clientWidth,height:e.clientHeight}}function Nt(e){return e.reduce((t,n)=>u.add(t,Ke(n)),F)}function bn(e){return e.reduce((t,n)=>t+Mt(n),0)}function pn(e){return e.reduce((t,n)=>t+At(n),0)}function yn(e,t){if(t===void 0&&(t=ue),!e)return;const{top:n,left:r,bottom:s,right:o}=t(e);Et(e)&&(s<=0||o<=0||n>=window.innerHeight||r>=window.innerWidth)&&e.scrollIntoView({block:"center",inline:"center"})}const wn=[["x",["left","right"],bn],["y",["top","bottom"],pn]];class Be{constructor(t,n){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const r=Se(n),s=Nt(r);this.rect={...t},this.width=t.width,this.height=t.height;for(const[o,l,a]of wn)for(const c of l)Object.defineProperty(this,c,{get:()=>{const d=a(r),h=s[o]-d;return this.rect[c]+h},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class be{constructor(t){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(n=>{var r;return(r=this.target)==null?void 0:r.removeEventListener(...n)})},this.target=t}add(t,n,r){var s;(s=this.target)==null||s.addEventListener(t,n,r),this.listeners.push([t,n,r])}}function mn(e){const{EventTarget:t}=u.getWindow(e);return e instanceof t?e:u.getOwnerDocument(e)}function ke(e,t){const n=Math.abs(e.x),r=Math.abs(e.y);return typeof t=="number"?Math.sqrt(n**2+r**2)>t:"x"in t&&"y"in t?n>t.x&&r>t.y:"x"in t?n>t.x:"y"in t?r>t.y:!1}var B;(function(e){e.Click="click",e.DragStart="dragstart",e.Keydown="keydown",e.ContextMenu="contextmenu",e.Resize="resize",e.SelectionChange="selectionchange",e.VisibilityChange="visibilitychange"})(B||(B={}));function lt(e){e.preventDefault()}function Cn(e){e.stopPropagation()}exports.KeyboardCode=void 0;(function(e){e.Space="Space",e.Down="ArrowDown",e.Right="ArrowRight",e.Left="ArrowLeft",e.Up="ArrowUp",e.Esc="Escape",e.Enter="Enter",e.Tab="Tab"})(exports.KeyboardCode||(exports.KeyboardCode={}));const Tt={start:[exports.KeyboardCode.Space,exports.KeyboardCode.Enter],cancel:[exports.KeyboardCode.Esc],end:[exports.KeyboardCode.Space,exports.KeyboardCode.Enter,exports.KeyboardCode.Tab]},It=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case exports.KeyboardCode.Right:return{...n,x:n.x+25};case exports.KeyboardCode.Left:return{...n,x:n.x-25};case exports.KeyboardCode.Down:return{...n,y:n.y+25};case exports.KeyboardCode.Up:return{...n,y:n.y-25}}};class Fe{constructor(t){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=t;const{event:{target:n}}=t;this.props=t,this.listeners=new be(u.getOwnerDocument(n)),this.windowListeners=new be(u.getWindow(n)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(B.Resize,this.handleCancel),this.windowListeners.add(B.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(B.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:t,onStart:n}=this.props,r=t.node.current;r&&yn(r),n(F)}handleKeyDown(t){if(u.isKeyboardEvent(t)){const{active:n,context:r,options:s}=this.props,{keyboardCodes:o=Tt,coordinateGetter:l=It,scrollBehavior:a="smooth"}=s,{code:c}=t;if(o.end.includes(c)){this.handleEnd(t);return}if(o.cancel.includes(c)){this.handleCancel(t);return}const{collisionRect:d}=r.current,h=d?{x:d.left,y:d.top}:F;this.referenceCoordinates||(this.referenceCoordinates=h);const f=l(t,{active:n,context:r.current,currentCoordinates:h});if(f){const b=u.subtract(f,h),g={x:0,y:0},{scrollableAncestors:x}=r.current;for(const v of x){const p=t.code,{isTop:C,isRight:D,isLeft:m,isBottom:N,maxScroll:S,minScroll:R}=Lt(v),w=vn(v),y={x:Math.min(p===exports.KeyboardCode.Right?w.right-w.width/2:w.right,Math.max(p===exports.KeyboardCode.Right?w.left:w.left+w.width/2,f.x)),y:Math.min(p===exports.KeyboardCode.Down?w.bottom-w.height/2:w.bottom,Math.max(p===exports.KeyboardCode.Down?w.top:w.top+w.height/2,f.y))},M=p===exports.KeyboardCode.Right&&!D||p===exports.KeyboardCode.Left&&!m,I=p===exports.KeyboardCode.Down&&!N||p===exports.KeyboardCode.Up&&!C;if(M&&y.x!==f.x){const A=v.scrollLeft+b.x,X=p===exports.KeyboardCode.Right&&A<=S.x||p===exports.KeyboardCode.Left&&A>=R.x;if(X&&!b.y){v.scrollTo({left:A,behavior:a});return}X?g.x=v.scrollLeft-A:g.x=p===exports.KeyboardCode.Right?v.scrollLeft-S.x:v.scrollLeft-R.x,g.x&&v.scrollBy({left:-g.x,behavior:a});break}else if(I&&y.y!==f.y){const A=v.scrollTop+b.y,X=p===exports.KeyboardCode.Down&&A<=S.y||p===exports.KeyboardCode.Up&&A>=R.y;if(X&&!b.x){v.scrollTo({top:A,behavior:a});return}X?g.y=v.scrollTop-A:g.y=p===exports.KeyboardCode.Down?v.scrollTop-S.y:v.scrollTop-R.y,g.y&&v.scrollBy({top:-g.y,behavior:a});break}}this.handleMove(t,u.add(u.subtract(f,this.referenceCoordinates),g))}}}handleMove(t,n){const{onMove:r}=this.props;t.preventDefault(),r(n)}handleEnd(t){const{onEnd:n}=this.props;t.preventDefault(),this.detach(),n()}handleCancel(t){const{onCancel:n}=this.props;t.preventDefault(),this.detach(),n()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}Fe.activators=[{eventName:"onKeyDown",handler:(e,t,n)=>{let{keyboardCodes:r=Tt,onActivation:s}=t,{active:o}=n;const{code:l}=e.nativeEvent;if(r.start.includes(l)){const a=o.activatorNode.current;return a&&e.target!==a?!1:(e.preventDefault(),s?.({event:e.nativeEvent}),!0)}return!1}}];function ct(e){return!!(e&&"distance"in e)}function ut(e){return!!(e&&"delay"in e)}class We{constructor(t,n,r){var s;r===void 0&&(r=mn(t.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=t,this.events=n;const{event:o}=t,{target:l}=o;this.props=t,this.events=n,this.document=u.getOwnerDocument(l),this.documentListeners=new be(this.document),this.listeners=new be(r),this.windowListeners=new be(u.getWindow(l)),this.initialCoordinates=(s=u.getEventCoordinates(o))!=null?s:F,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:t,props:{options:{activationConstraint:n,bypassActivationConstraint:r}}}=this;if(this.listeners.add(t.move.name,this.handleMove,{passive:!1}),this.listeners.add(t.end.name,this.handleEnd),t.cancel&&this.listeners.add(t.cancel.name,this.handleCancel),this.windowListeners.add(B.Resize,this.handleCancel),this.windowListeners.add(B.DragStart,lt),this.windowListeners.add(B.VisibilityChange,this.handleCancel),this.windowListeners.add(B.ContextMenu,lt),this.documentListeners.add(B.Keydown,this.handleKeydown),n){if(r!=null&&r({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(ut(n)){this.timeoutId=setTimeout(this.handleStart,n.delay),this.handlePending(n);return}if(ct(n)){this.handlePending(n);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(t,n){const{active:r,onPending:s}=this.props;s(r,t,this.initialCoordinates,n)}handleStart(){const{initialCoordinates:t}=this,{onStart:n}=this.props;t&&(this.activated=!0,this.documentListeners.add(B.Click,Cn,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(B.SelectionChange,this.removeTextSelection),n(t))}handleMove(t){var n;const{activated:r,initialCoordinates:s,props:o}=this,{onMove:l,options:{activationConstraint:a}}=o;if(!s)return;const c=(n=u.getEventCoordinates(t))!=null?n:F,d=u.subtract(s,c);if(!r&&a){if(ct(a)){if(a.tolerance!=null&&ke(d,a.tolerance))return this.handleCancel();if(ke(d,a.distance))return this.handleStart()}if(ut(a)&&ke(d,a.tolerance))return this.handleCancel();this.handlePending(a,d);return}t.cancelable&&t.preventDefault(),l(c)}handleEnd(){const{onAbort:t,onEnd:n}=this.props;this.detach(),this.activated||t(this.props.active),n()}handleCancel(){const{onAbort:t,onCancel:n}=this.props;this.detach(),this.activated||t(this.props.active),n()}handleKeydown(t){t.code===exports.KeyboardCode.Esc&&this.handleCancel()}removeTextSelection(){var t;(t=this.document.getSelection())==null||t.removeAllRanges()}}const Dn={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class Ue extends We{constructor(t){const{event:n}=t,r=u.getOwnerDocument(n.target);super(t,Dn,r)}}Ue.activators=[{eventName:"onPointerDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return!n.isPrimary||n.button!==0?!1:(r?.({event:n}),!0)}}];const xn={move:{name:"mousemove"},end:{name:"mouseup"}};var Pe;(function(e){e[e.RightClick=2]="RightClick"})(Pe||(Pe={}));class kt extends We{constructor(t){super(t,xn,u.getOwnerDocument(t.event.target))}}kt.activators=[{eventName:"onMouseDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button===Pe.RightClick?!1:(r?.({event:n}),!0)}}];const ze={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class zt extends We{constructor(t){super(t,ze)}static setup(){return window.addEventListener(ze.move.name,t,{capture:!1,passive:!1}),function(){window.removeEventListener(ze.move.name,t)};function t(){}}}zt.activators=[{eventName:"onTouchStart",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;const{touches:s}=n;return s.length>1?!1:(r?.({event:n}),!0)}}];exports.AutoScrollActivator=void 0;(function(e){e[e.Pointer=0]="Pointer",e[e.DraggableRect=1]="DraggableRect"})(exports.AutoScrollActivator||(exports.AutoScrollActivator={}));exports.TraversalOrder=void 0;(function(e){e[e.TreeOrder=0]="TreeOrder",e[e.ReversedTreeOrder=1]="ReversedTreeOrder"})(exports.TraversalOrder||(exports.TraversalOrder={}));function Sn(e){let{acceleration:t,activator:n=exports.AutoScrollActivator.Pointer,canScroll:r,draggingRect:s,enabled:o,interval:l=5,order:a=exports.TraversalOrder.TreeOrder,pointerCoordinates:c,scrollableAncestors:d,scrollableAncestorRects:h,delta:f,threshold:b}=e;const g=En({delta:f,disabled:!o}),[x,v]=u.useInterval(),p=i.useRef({x:0,y:0}),C=i.useRef({x:0,y:0}),D=i.useMemo(()=>{switch(n){case exports.AutoScrollActivator.Pointer:return c?{top:c.y,bottom:c.y,left:c.x,right:c.x}:null;case exports.AutoScrollActivator.DraggableRect:return s}},[n,s,c]),m=i.useRef(null),N=i.useCallback(()=>{const R=m.current;if(!R)return;const w=p.current.x*C.current.x,y=p.current.y*C.current.y;R.scrollBy(w,y)},[]),S=i.useMemo(()=>a===exports.TraversalOrder.TreeOrder?[...d].reverse():d,[a,d]);i.useEffect(()=>{if(!o||!d.length||!D){v();return}for(const R of S){if(r?.(R)===!1)continue;const w=d.indexOf(R),y=h[w];if(!y)continue;const{direction:M,speed:I}=gn(R,y,D,t,b);for(const A of["x","y"])g[A][M[A]]||(I[A]=0,M[A]=0);if(I.x>0||I.y>0){v(),m.current=R,x(N,l),p.current=I,C.current=M;return}}p.current={x:0,y:0},C.current={x:0,y:0},v()},[t,N,r,v,o,l,JSON.stringify(D),JSON.stringify(g),x,d,S,h,JSON.stringify(b)])}const Rn={x:{[O.Backward]:!1,[O.Forward]:!1},y:{[O.Backward]:!1,[O.Forward]:!1}};function En(e){let{delta:t,disabled:n}=e;const r=u.usePrevious(t);return u.useLazyMemo(s=>{if(n||!r||!s)return Rn;const o={x:Math.sign(t.x-r.x),y:Math.sign(t.y-r.y)};return{x:{[O.Backward]:s.x[O.Backward]||o.x===-1,[O.Forward]:s.x[O.Forward]||o.x===1},y:{[O.Backward]:s.y[O.Backward]||o.y===-1,[O.Forward]:s.y[O.Forward]||o.y===1}}},[n,t,r])}function Mn(e,t){const n=t!=null?e.get(t):void 0,r=n?n.node.current:null;return u.useLazyMemo(s=>{var o;return t==null?null:(o=r??s)!=null?o:null},[r,t])}function An(e,t){return i.useMemo(()=>e.reduce((n,r)=>{const{sensor:s}=r,o=s.activators.map(l=>({eventName:l.eventName,handler:t(l.handler,r)}));return[...n,...o]},[]),[e,t])}exports.MeasuringStrategy=void 0;(function(e){e[e.Always=0]="Always",e[e.BeforeDragging=1]="BeforeDragging",e[e.WhileDragging=2]="WhileDragging"})(exports.MeasuringStrategy||(exports.MeasuringStrategy={}));exports.MeasuringFrequency=void 0;(function(e){e.Optimized="optimized"})(exports.MeasuringFrequency||(exports.MeasuringFrequency={}));const dt=new Map;function On(e,t){let{dragging:n,dependencies:r,config:s}=t;const[o,l]=i.useState(null),{frequency:a,measure:c,strategy:d}=s,h=i.useRef(e),f=p(),b=u.useLatestValue(f),g=i.useCallback(function(C){C===void 0&&(C=[]),!b.current&&l(D=>D===null?C:D.concat(C.filter(m=>!D.includes(m))))},[b]),x=i.useRef(null),v=u.useLazyMemo(C=>{if(f&&!n)return dt;if(!C||C===dt||h.current!==e||o!=null){const D=new Map;for(let m of e){if(!m)continue;if(o&&o.length>0&&!o.includes(m.id)&&m.rect.current){D.set(m.id,m.rect.current);continue}const N=m.node.current,S=N?new Be(c(N),N):null;m.rect.current=S,S&&D.set(m.id,S)}return D}return C},[e,o,n,f,c]);return i.useEffect(()=>{h.current=e},[e]),i.useEffect(()=>{f||g()},[n,f]),i.useEffect(()=>{o&&o.length>0&&l(null)},[JSON.stringify(o)]),i.useEffect(()=>{f||typeof a!="number"||x.current!==null||(x.current=setTimeout(()=>{g(),x.current=null},a))},[a,f,g,...r]),{droppableRects:v,measureDroppableContainers:g,measuringScheduled:o!=null};function p(){switch(d){case exports.MeasuringStrategy.Always:return!1;case exports.MeasuringStrategy.BeforeDragging:return n;default:return!n}}}function Kt(e,t){return u.useLazyMemo(n=>e?n||(typeof t=="function"?t(e):e):null,[t,e])}function Ln(e,t){return Kt(e,t)}function Nn(e){let{callback:t,disabled:n}=e;const r=u.useEvent(t),s=i.useMemo(()=>{if(n||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:o}=window;return new o(r)},[r,n]);return i.useEffect(()=>()=>s?.disconnect(),[s]),s}function Re(e){let{callback:t,disabled:n}=e;const r=u.useEvent(t),s=i.useMemo(()=>{if(n||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:o}=window;return new o(r)},[n]);return i.useEffect(()=>()=>s?.disconnect(),[s]),s}function Tn(e){return new Be(ue(e),e)}function ft(e,t,n){t===void 0&&(t=Tn);const[r,s]=i.useState(null);function o(){s(c=>{if(!e)return null;if(e.isConnected===!1){var d;return(d=c??n)!=null?d:null}const h=t(e);return JSON.stringify(c)===JSON.stringify(h)?c:h})}const l=Nn({callback(c){if(e)for(const d of c){const{type:h,target:f}=d;if(h==="childList"&&f instanceof HTMLElement&&f.contains(e)){o();break}}}}),a=Re({callback:o});return u.useIsomorphicLayoutEffect(()=>{o(),e?(a?.observe(e),l?.observe(document.body,{childList:!0,subtree:!0})):(a?.disconnect(),l?.disconnect())},[e]),r}function In(e){const t=Kt(e);return Rt(e,t)}const ht=[];function kn(e){const t=i.useRef(e),n=u.useLazyMemo(r=>e?r&&r!==ht&&e&&t.current&&e.parentNode===t.current.parentNode?r:Se(e):ht,[e]);return i.useEffect(()=>{t.current=e},[e]),n}function zn(e){const[t,n]=i.useState(null),r=i.useRef(e),s=i.useCallback(o=>{const l=Ie(o.target);l&&n(a=>a?(a.set(l,Ke(l)),new Map(a)):null)},[]);return i.useEffect(()=>{const o=r.current;if(e!==o){l(o);const a=e.map(c=>{const d=Ie(c);return d?(d.addEventListener("scroll",s,{passive:!0}),[d,Ke(d)]):null}).filter(c=>c!=null);n(a.length?new Map(a):null),r.current=e}return()=>{l(e),l(o)};function l(a){a.forEach(c=>{const d=Ie(c);d?.removeEventListener("scroll",s)})}},[s,e]),i.useMemo(()=>e.length?t?Array.from(t.values()).reduce((o,l)=>u.add(o,l),F):Nt(e):F,[e,t])}function gt(e,t){t===void 0&&(t=[]);const n=i.useRef(null);return i.useEffect(()=>{n.current=null},t),i.useEffect(()=>{const r=e!==F;r&&!n.current&&(n.current=e),!r&&n.current&&(n.current=null)},[e]),n.current?u.subtract(e,n.current):F}function Kn(e){i.useEffect(()=>{if(!u.canUseDOM)return;const t=e.map(n=>{let{sensor:r}=n;return r.setup==null?void 0:r.setup()});return()=>{for(const n of t)n?.()}},e.map(t=>{let{sensor:n}=t;return n}))}function Pn(e,t){return i.useMemo(()=>e.reduce((n,r)=>{let{eventName:s,handler:o}=r;return n[s]=l=>{o(l,t)},n},{}),[e,t])}function Pt(e){return i.useMemo(()=>e?un(e):null,[e])}const vt=[];function Bn(e,t){t===void 0&&(t=ue);const[n]=e,r=Pt(n?u.getWindow(n):null),[s,o]=i.useState(vt);function l(){o(()=>e.length?e.map(c=>Ot(c)?r:new Be(t(c),c)):vt)}const a=Re({callback:l});return u.useIsomorphicLayoutEffect(()=>{a?.disconnect(),l(),e.forEach(c=>a?.observe(c))},[e]),s}function Fn(e){if(!e)return null;if(e.children.length>1)return e;const t=e.children[0];return u.isHTMLElement(t)?t:e}function Wn(e){let{measure:t}=e;const[n,r]=i.useState(null),s=i.useCallback(d=>{for(const{target:h}of d)if(u.isHTMLElement(h)){r(f=>{const b=t(h);return f?{...f,width:b.width,height:b.height}:b});break}},[t]),o=Re({callback:s}),l=i.useCallback(d=>{const h=Fn(d);o?.disconnect(),h&&o?.observe(h),r(h?t(h):null)},[t,o]),[a,c]=u.useNodeRef(l);return i.useMemo(()=>({nodeRef:a,rect:n,setRef:c}),[n,a,c])}const Un=[{sensor:Ue,options:{}},{sensor:Fe,options:{}}],$n={current:{}},De={draggable:{measure:at},droppable:{measure:at,strategy:exports.MeasuringStrategy.WhileDragging,frequency:exports.MeasuringFrequency.Optimized},dragOverlay:{measure:ue}};class pe extends Map{get(t){var n;return t!=null&&(n=super.get(t))!=null?n:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(t=>{let{disabled:n}=t;return!n})}getNodeFor(t){var n,r;return(n=(r=this.get(t))==null?void 0:r.node.current)!=null?n:void 0}}const qn={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new pe,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:xe},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:De,measureDroppableContainers:xe,windowRect:null,measuringScheduled:!1},Xn={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:xe,draggableNodes:new Map,over:null,measureDroppableContainers:xe},Ee=i.createContext(Xn),Bt=i.createContext(qn);function Hn(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new pe}}}function _n(e,t){switch(t.type){case E.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case E.DragMove:return e.draggable.active==null?e:{...e,draggable:{...e.draggable,translate:{x:t.coordinates.x-e.draggable.initialCoordinates.x,y:t.coordinates.y-e.draggable.initialCoordinates.y}}};case E.DragEnd:case E.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case E.RegisterDroppable:{const{element:n}=t,{id:r}=n,s=new pe(e.droppable.containers);return s.set(r,n),{...e,droppable:{...e.droppable,containers:s}}}case E.SetDroppableDisabled:{const{id:n,key:r,disabled:s}=t,o=e.droppable.containers.get(n);if(!o||r!==o.key)return e;const l=new pe(e.droppable.containers);return l.set(n,{...o,disabled:s}),{...e,droppable:{...e.droppable,containers:l}}}case E.UnregisterDroppable:{const{id:n,key:r}=t,s=e.droppable.containers.get(n);if(!s||r!==s.key)return e;const o=new pe(e.droppable.containers);return o.delete(n),{...e,droppable:{...e.droppable,containers:o}}}default:return e}}function jn(e){let{disabled:t}=e;const{active:n,activatorEvent:r,draggableNodes:s}=i.useContext(Ee),o=u.usePrevious(r),l=u.usePrevious(n?.id);return i.useEffect(()=>{if(!t&&!r&&o&&l!=null){if(!u.isKeyboardEvent(o)||document.activeElement===o.target)return;const a=s.get(l);if(!a)return;const{activatorNode:c,node:d}=a;if(!c.current&&!d.current)return;requestAnimationFrame(()=>{for(const h of[c.current,d.current]){if(!h)continue;const f=u.findFirstFocusableNode(h);if(f){f.focus();break}}})}},[r,t,s,l,o]),null}function Ft(e,t){let{transform:n,...r}=t;return e!=null&&e.length?e.reduce((s,o)=>o({transform:s,...r}),n):n}function Yn(e){return i.useMemo(()=>({draggable:{...De.draggable,...e?.draggable},droppable:{...De.droppable,...e?.droppable},dragOverlay:{...De.dragOverlay,...e?.dragOverlay}}),[e?.draggable,e?.droppable,e?.dragOverlay])}function Vn(e){let{activeNode:t,measure:n,initialRect:r,config:s=!0}=e;const o=i.useRef(!1),{x:l,y:a}=typeof s=="boolean"?{x:s,y:s}:s;u.useIsomorphicLayoutEffect(()=>{if(!l&&!a||!t){o.current=!1;return}if(o.current||!r)return;const d=t?.node.current;if(!d||d.isConnected===!1)return;const h=n(d),f=Rt(h,r);if(l||(f.x=0),a||(f.y=0),o.current=!0,Math.abs(f.x)>0||Math.abs(f.y)>0){const b=Et(d);b&&b.scrollBy({top:f.y,left:f.x})}},[t,l,a,r,n])}const Wt=i.createContext({...F,scaleX:1,scaleY:1});var ee;(function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Initializing=1]="Initializing",e[e.Initialized=2]="Initialized"})(ee||(ee={}));const Jn=i.memo(function(t){var n,r,s,o;let{id:l,accessibility:a,autoScroll:c=!0,children:d,sensors:h=Un,collisionDetection:f=St,measuring:b,modifiers:g,...x}=t;const v=i.useReducer(_n,void 0,Hn),[p,C]=v,[D,m]=Vt(),[N,S]=i.useState(ee.Uninitialized),R=N===ee.Initialized,{draggable:{active:w,nodes:y,translate:M},droppable:{containers:I}}=p,A=w!=null?y.get(w):null,X=i.useRef({initial:null,translated:null}),H=i.useMemo(()=>{var T;return w!=null?{id:w,data:(T=A?.data)!=null?T:$n,rect:X}:null},[w,A]),Y=i.useRef(null),[$e,qe]=i.useState(null),[_,Xe]=i.useState(null),te=u.useLatestValue(x,Object.values(x)),Me=u.useUniqueId("DndDescribedBy",l),He=i.useMemo(()=>I.getEnabled(),[I]),ne=Yn(b),{droppableRects:se,measureDroppableContainers:ye,measuringScheduled:_e}=On(He,{dragging:R,dependencies:[M.x,M.y],config:ne.droppable}),W=Mn(y,w),je=i.useMemo(()=>_?u.getEventCoordinates(_):null,[_]),Ye=Yt(),Ve=Ln(W,ne.draggable.measure);Vn({activeNode:w!=null?y.get(w):null,config:Ye.layoutShiftCompensation,initialRect:Ve,measure:ne.draggable.measure});const U=ft(W,ne.draggable.measure,Ve),Ae=ft(W?W.parentElement:null),re=i.useRef({activatorEvent:null,active:null,activeNode:W,collisionRect:null,collisions:null,droppableRects:se,draggableNodes:y,draggingNode:null,draggingNodeRect:null,droppableContainers:I,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),Je=I.getNodeFor((n=re.current.over)==null?void 0:n.id),oe=Wn({measure:ne.dragOverlay.measure}),we=(r=oe.nodeRef.current)!=null?r:W,ie=R?(s=oe.rect)!=null?s:U:null,Ge=!!(oe.nodeRef.current&&oe.rect),Qe=In(Ge?null:U),Oe=Pt(we?u.getWindow(we):null),V=kn(R?Je??W:null),me=Bn(V),Ce=Ft(g,{transform:{x:M.x-Qe.x,y:M.y-Qe.y,scaleX:1,scaleY:1},activatorEvent:_,active:H,activeNodeRect:U,containerNodeRect:Ae,draggingNodeRect:ie,over:re.current.over,overlayNodeRect:oe.rect,scrollableAncestors:V,scrollableAncestorRects:me,windowRect:Oe}),Ze=je?u.add(je,M):null,et=zn(V),Ut=gt(et),$t=gt(et,[U]),ae=u.add(Ce,Ut),le=ie?sn(ie,Ce):null,de=H&&le?f({active:H,collisionRect:le,droppableRects:se,droppableContainers:He,pointerCoordinates:Ze}):null,tt=xt(de,"id"),[J,nt]=i.useState(null),qt=Ge?Ce:u.add(Ce,$t),Xt=rn(qt,(o=J?.rect)!=null?o:null,U),Le=i.useRef(null),rt=i.useCallback((T,k)=>{let{sensor:z,options:G}=k;if(Y.current==null)return;const P=y.get(Y.current);if(!P)return;const K=T.nativeEvent,$=new z({active:Y.current,activeNode:P,event:K,options:G,context:re,onAbort(L){if(!y.get(L))return;const{onDragAbort:q}=te.current,j={id:L};q?.(j),D({type:"onDragAbort",event:j})},onPending(L,Q,q,j){if(!y.get(L))return;const{onDragPending:he}=te.current,Z={id:L,constraint:Q,initialCoordinates:q,offset:j};he?.(Z),D({type:"onDragPending",event:Z})},onStart(L){const Q=Y.current;if(Q==null)return;const q=y.get(Q);if(!q)return;const{onDragStart:j}=te.current,fe={activatorEvent:K,active:{id:Q,data:q.data,rect:X}};ve.unstable_batchedUpdates(()=>{j?.(fe),S(ee.Initializing),C({type:E.DragStart,initialCoordinates:L,active:Q}),D({type:"onDragStart",event:fe}),qe(Le.current),Xe(K)})},onMove(L){C({type:E.DragMove,coordinates:L})},onEnd:ce(E.DragEnd),onCancel:ce(E.DragCancel)});Le.current=$;function ce(L){return async function(){const{active:q,collisions:j,over:fe,scrollAdjustedTranslate:he}=re.current;let Z=null;if(q&&he){const{cancelDrop:ge}=te.current;Z={activatorEvent:K,active:q,collisions:j,delta:he,over:fe},L===E.DragEnd&&typeof ge=="function"&&await Promise.resolve(ge(Z))&&(L=E.DragCancel)}Y.current=null,ve.unstable_batchedUpdates(()=>{C({type:L}),S(ee.Uninitialized),nt(null),qe(null),Xe(null),Le.current=null;const ge=L===E.DragEnd?"onDragEnd":"onDragCancel";if(Z){const Ne=te.current[ge];Ne?.(Z),D({type:ge,event:Z})}})}}},[y]),Ht=i.useCallback((T,k)=>(z,G)=>{const P=z.nativeEvent,K=y.get(G);if(Y.current!==null||!K||P.dndKit||P.defaultPrevented)return;const $={active:K};T(z,k.options,$)===!0&&(P.dndKit={capturedBy:k.sensor},Y.current=G,rt(z,k))},[y,rt]),ot=An(h,Ht);Kn(h),u.useIsomorphicLayoutEffect(()=>{U&&N===ee.Initializing&&S(ee.Initialized)},[U,N]),i.useEffect(()=>{const{onDragMove:T}=te.current,{active:k,activatorEvent:z,collisions:G,over:P}=re.current;if(!k||!z)return;const K={active:k,activatorEvent:z,collisions:G,delta:{x:ae.x,y:ae.y},over:P};ve.unstable_batchedUpdates(()=>{T?.(K),D({type:"onDragMove",event:K})})},[ae.x,ae.y]),i.useEffect(()=>{const{active:T,activatorEvent:k,collisions:z,droppableContainers:G,scrollAdjustedTranslate:P}=re.current;if(!T||Y.current==null||!k||!P)return;const{onDragOver:K}=te.current,$=G.get(tt),ce=$&&$.rect.current?{id:$.id,rect:$.rect.current,data:$.data,disabled:$.disabled}:null,L={active:T,activatorEvent:k,collisions:z,delta:{x:P.x,y:P.y},over:ce};ve.unstable_batchedUpdates(()=>{nt(ce),K?.(L),D({type:"onDragOver",event:L})})},[tt]),u.useIsomorphicLayoutEffect(()=>{re.current={activatorEvent:_,active:H,activeNode:W,collisionRect:le,collisions:de,droppableRects:se,draggableNodes:y,draggingNode:we,draggingNodeRect:ie,droppableContainers:I,over:J,scrollableAncestors:V,scrollAdjustedTranslate:ae},X.current={initial:ie,translated:le}},[H,W,de,le,y,we,ie,se,I,J,V,ae]),Sn({...Ye,delta:M,draggingRect:le,pointerCoordinates:Ze,scrollableAncestors:V,scrollableAncestorRects:me});const _t=i.useMemo(()=>({active:H,activeNode:W,activeNodeRect:U,activatorEvent:_,collisions:de,containerNodeRect:Ae,dragOverlay:oe,draggableNodes:y,droppableContainers:I,droppableRects:se,over:J,measureDroppableContainers:ye,scrollableAncestors:V,scrollableAncestorRects:me,measuringConfiguration:ne,measuringScheduled:_e,windowRect:Oe}),[H,W,U,_,de,Ae,oe,y,I,se,J,ye,V,me,ne,_e,Oe]),jt=i.useMemo(()=>({activatorEvent:_,activators:ot,active:H,activeNodeRect:U,ariaDescribedById:{draggable:Me},dispatch:C,draggableNodes:y,over:J,measureDroppableContainers:ye}),[_,ot,H,U,C,Me,y,J,ye]);return i.createElement(pt.Provider,{value:m},i.createElement(Ee.Provider,{value:jt},i.createElement(Bt.Provider,{value:_t},i.createElement(Wt.Provider,{value:Xt},d)),i.createElement(jn,{disabled:a?.restoreFocus===!1})),i.createElement(Jt,{...a,hiddenTextDescribedById:Me}));function Yt(){const T=$e?.autoScrollEnabled===!1,k=typeof c=="object"?c.enabled===!1:c===!1,z=R&&!T&&!k;return typeof c=="object"?{...c,enabled:z}:{enabled:z}}}),Gn=i.createContext(null),bt="button",Qn="Draggable";function Zn(e){let{id:t,data:n,disabled:r=!1,attributes:s}=e;const o=u.useUniqueId(Qn),{activators:l,activatorEvent:a,active:c,activeNodeRect:d,ariaDescribedById:h,draggableNodes:f,over:b}=i.useContext(Ee),{role:g=bt,roleDescription:x="draggable",tabIndex:v=0}=s??{},p=c?.id===t,C=i.useContext(p?Wt:Gn),[D,m]=u.useNodeRef(),[N,S]=u.useNodeRef(),R=Pn(l,t),w=u.useLatestValue(n);u.useIsomorphicLayoutEffect(()=>(f.set(t,{id:t,key:o,node:D,activatorNode:N,data:w}),()=>{const M=f.get(t);M&&M.key===o&&f.delete(t)}),[f,t]);const y=i.useMemo(()=>({role:g,tabIndex:v,"aria-disabled":r,"aria-pressed":p&&g===bt?!0:void 0,"aria-roledescription":x,"aria-describedby":h.draggable}),[r,g,v,p,x,h.draggable]);return{active:c,activatorEvent:a,activeNodeRect:d,attributes:y,isDragging:p,listeners:r?void 0:R,node:D,over:b,setNodeRef:m,setActivatorNodeRef:S,transform:C}}function er(){return i.useContext(Bt)}const tr="Droppable",nr={timeout:25};function rr(e){let{data:t,disabled:n=!1,id:r,resizeObserverConfig:s}=e;const o=u.useUniqueId(tr),{active:l,dispatch:a,over:c,measureDroppableContainers:d}=i.useContext(Ee),h=i.useRef({disabled:n}),f=i.useRef(!1),b=i.useRef(null),g=i.useRef(null),{disabled:x,updateMeasurementsFor:v,timeout:p}={...nr,...s},C=u.useLatestValue(v??r),D=i.useCallback(()=>{if(!f.current){f.current=!0;return}g.current!=null&&clearTimeout(g.current),g.current=setTimeout(()=>{d(Array.isArray(C.current)?C.current:[C.current]),g.current=null},p)},[p]),m=Re({callback:D,disabled:x||!l}),N=i.useCallback((y,M)=>{m&&(M&&(m.unobserve(M),f.current=!1),y&&m.observe(y))},[m]),[S,R]=u.useNodeRef(N),w=u.useLatestValue(t);return i.useEffect(()=>{!m||!S.current||(m.disconnect(),f.current=!1,m.observe(S.current))},[S,m]),i.useEffect(()=>(a({type:E.RegisterDroppable,element:{id:r,key:o,disabled:n,node:S,rect:b,data:w}}),()=>a({type:E.UnregisterDroppable,key:o,id:r})),[r]),i.useEffect(()=>{n!==h.current.disabled&&(a({type:E.SetDroppableDisabled,id:r,key:o,disabled:n}),h.current.disabled=n)},[r,o,n,a]),{active:l,rect:b,isOver:c?.id===r,node:S,over:c,setNodeRef:R}}exports.DndContext=Jn;exports.KeyboardSensor=Fe;exports.MouseSensor=kt;exports.PointerSensor=Ue;exports.TouchSensor=zt;exports.applyModifiers=Ft;exports.closestCenter=en;exports.closestCorners=tn;exports.defaultAnnouncements=mt;exports.defaultCoordinates=F;exports.defaultKeyboardCoordinateGetter=It;exports.defaultScreenReaderInstructions=wt;exports.getClientRect=ue;exports.getFirstCollision=xt;exports.getScrollableAncestors=Se;exports.rectIntersection=St;exports.useDndContext=er;exports.useDndMonitor=yt;exports.useDraggable=Zn;exports.useDroppable=rr;exports.useSensor=Gt;exports.useSensors=Qt;
6
+ //# sourceMappingURL=core.esm.cjs.map