ezux 1.1.19 → 1.1.21

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 (75) hide show
  1. package/README.md +7 -1
  2. package/dist/{DeleteConfirmationModal-CukNDgtX.cjs → DeleteConfirmationModal-BM1PoL6P.cjs} +1 -1
  3. package/dist/{DeleteConfirmationModal-p8XGDGIw.js → DeleteConfirmationModal-B_tXm0N0.js} +4 -4
  4. package/dist/{EzEventModal-BrCBSXBM.cjs → EzEventModal-D1EzXBsQ.cjs} +1 -1
  5. package/dist/{EzEventModal-BDSHG11m.js → EzEventModal-D5lX9XuW.js} +2 -2
  6. package/dist/{EzFlow-CQFeY7DL.cjs → EzFlow-B4qRm5KH.cjs} +3 -3
  7. package/dist/{EzFlow-C74NbZA9.js → EzFlow-CEfPykao.js} +278 -278
  8. package/dist/EzKanban-2b9skOep.cjs +2 -0
  9. package/dist/{EzKanban-COcGidzh.js → EzKanban-CpYH8b8g.js} +86 -80
  10. package/dist/{EzLayout-CiaPLniV.js → EzLayout-DFxegglu.js} +30 -24
  11. package/dist/EzLayout-EYOfpFXs.cjs +1 -0
  12. package/dist/{EzScheduler-CjQbi1Na.js → EzScheduler-D7aH4KCY.js} +60 -55
  13. package/dist/EzScheduler-hC9PsLrI.cjs +1 -0
  14. package/dist/{EzSchedulerQuickAdd-BeNfGdWs.cjs → EzSchedulerQuickAdd-BYrV9PQ-.cjs} +1 -1
  15. package/dist/{EzSchedulerQuickAdd-BIC8xbSn.js → EzSchedulerQuickAdd-D0kGTzE3.js} +2 -2
  16. package/dist/{EzSchedulerToolbar-jMw8KB8k.js → EzSchedulerToolbar-BhlCMeOT.js} +2 -2
  17. package/dist/{EzSchedulerToolbar-ihfe-5Yd.cjs → EzSchedulerToolbar-Dy62PVnH.cjs} +1 -1
  18. package/dist/{EzSignature-7UHO5lSP.js → EzSignature-B-CPcf7e.js} +5 -2
  19. package/dist/{EzSignature-Df7UZ-IS.cjs → EzSignature-DcmWBPIL.cjs} +1 -1
  20. package/dist/EzTable-Bcq7TByw.cjs +3 -0
  21. package/dist/{EzTable-D2p1IWHc.js → EzTable-DLbb3nl7.js} +1296 -1161
  22. package/dist/EzTableEditDialog--8pD39Rp.cjs +1 -0
  23. package/dist/EzTableEditDialog-m0zW6r6z.js +100 -0
  24. package/dist/{EzTableFooter-DrLoWelo.js → EzTableFooter-BuTS3wDK.js} +1 -1
  25. package/dist/{EzTableToolbar-DwuumvWP.cjs → EzTableToolbar-BWjqKfwx.cjs} +1 -1
  26. package/dist/{EzTableToolbar-BH5z9fSJ.js → EzTableToolbar-BiRfKm9d.js} +2 -2
  27. package/dist/{EzTreeView-D1G0Aomc.js → EzTreeView-B2B_Ruwm.js} +37 -37
  28. package/dist/EzTreeView-DLoPKe2i.cjs +1 -0
  29. package/dist/{KanbanBoard-BsZP_PJi.js → KanbanBoard-CRF0-mYa.js} +119 -119
  30. package/dist/{KanbanBoard-C9bjU_gk.cjs → KanbanBoard-DdXD-Zjt.cjs} +1 -1
  31. package/dist/advanced.cjs +2 -2
  32. package/dist/advanced.es.js +30 -29
  33. package/dist/card-NlCLCGFb.cjs +1 -0
  34. package/dist/{card-ZUNxcdIM.js → card-urNaa5h-.js} +1 -1
  35. package/dist/{checkbox-BrCh_Iid.cjs → checkbox-B9yPkCYi.cjs} +1 -1
  36. package/dist/{checkbox-DRkQuB4W.js → checkbox-BTuckDEm.js} +1 -1
  37. package/dist/components/EzTable/EzTableEditDialog.d.ts +1 -1
  38. package/dist/components/EzTable/hooks/useTableFiltering.d.ts +6 -6
  39. package/dist/components/EzTable/hooks/useTableHistory.d.ts +3 -3
  40. package/dist/components/EzTable/hooks/useTableImperative.d.ts +9 -6
  41. package/dist/components/EzTable/hooks/useTableState.d.ts +12 -12
  42. package/dist/components/EzTable/types/EzTableProps.d.ts +9 -1
  43. package/dist/ezux.css +1 -1
  44. package/dist/flow.cjs +1 -1
  45. package/dist/flow.es.js +1 -1
  46. package/dist/index.cjs +2 -2
  47. package/dist/index.es.js +20 -20
  48. package/dist/input-CcRi0LeO.js +14 -0
  49. package/dist/input-DOh8O0iX.cjs +1 -0
  50. package/dist/kanban.cjs +1 -1
  51. package/dist/kanban.es.js +2 -2
  52. package/dist/layout.cjs +1 -1
  53. package/dist/layout.es.js +1 -1
  54. package/dist/mock-services.cjs +1 -1
  55. package/dist/mock-services.es.js +1 -1
  56. package/dist/scheduler.cjs +1 -1
  57. package/dist/scheduler.es.js +1 -1
  58. package/dist/signature.cjs +1 -1
  59. package/dist/signature.es.js +1 -1
  60. package/dist/table.cjs +1 -1
  61. package/dist/table.es.js +1 -1
  62. package/dist/theme-vars.css +25 -5
  63. package/dist/treeview.cjs +1 -1
  64. package/dist/treeview.es.js +1 -1
  65. package/package.json +39 -36
  66. package/dist/EzKanban-DokdXGqQ.cjs +0 -2
  67. package/dist/EzLayout-BGnqFtvO.cjs +0 -1
  68. package/dist/EzScheduler-B8nV1VWY.cjs +0 -1
  69. package/dist/EzTable-CEXvJR1t.cjs +0 -3
  70. package/dist/EzTableEditDialog-BXnnYSSy.cjs +0 -1
  71. package/dist/EzTableEditDialog-Ccd5XoHm.js +0 -84
  72. package/dist/EzTreeView-KMGlU4ax.cjs +0 -1
  73. package/dist/card-CPlRZxbq.cjs +0 -1
  74. package/dist/input-CYlvlbF7.cjs +0 -1
  75. package/dist/input-Cj3sQK3M.js +0 -14
@@ -0,0 +1 @@
1
+ const e=require("./button-BBMwzUtG.cjs"),t=require("./input-DOh8O0iX.cjs"),n=require("./label-BGgvoZWD.cjs");let r=require("react"),i=require("react/jsx-runtime");var a=({open:a,onClose:o,onSave:s,columns:c,initialData:l,isNew:u,onFormRender:d})=>{let[f,p]=(0,r.useState)({});(0,r.useEffect)(()=>{a&&(p(l||{}),d?.({form:{data:l||{},columns:c},mode:u?`Add`:`Edit`}))},[a,l,c,u,d]);let[m,h]=(0,r.useOptimistic)(f,(e,t)=>({...e,...t})),[g,_,v]=(0,r.useActionState)(async(e,t)=>{let n={...f};return b.forEach(e=>{let r=e.accessorKey,i=t.get(r);i!==null&&(n[r]=i)}),(0,r.startTransition)(()=>{h(n)}),await s(n),o(),n},l||{});if(!a)return null;let y=(e,t)=>{p(n=>({...n,[e]:t}))},b=c.filter(e=>e.accessorKey&&e.meta?.isEditable!==!1&&e.id!==`actions`&&e.id!==`select`);return(0,i.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm animate-in fade-in-0`,children:(0,i.jsxs)(`form`,{action:_,className:`bg-background w-full max-w-lg rounded-lg border shadow-lg p-6 space-y-6 animate-in zoom-in-95 slide-in-from-bottom-2`,role:`dialog`,"aria-modal":`true`,children:[(0,i.jsxs)(`div`,{className:`flex flex-col space-y-1.5 text-center sm:text-left`,children:[(0,i.jsx)(`h2`,{className:`text-lg font-semibold leading-none tracking-tight`,children:u?`Add New Record`:`Edit Record`}),(0,i.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:u?`Enter details for the new record.`:`Make changes to the record below.`})]}),(0,i.jsx)(`div`,{className:`grid gap-4 py-4 max-h-[60vh] overflow-y-auto pr-2`,children:b.map(e=>{let r=e.accessorKey,a=m[r]??``;return(0,i.jsxs)(`div`,{className:`grid grid-cols-4 items-center gap-4`,children:[(0,i.jsx)(n.t,{htmlFor:r,className:`text-right`,children:typeof e.header==`string`?e.header:r}),(0,i.jsx)(t.t,{id:r,name:r,value:a,onChange:e=>y(r,e.target.value),className:`col-span-3`})]},r)})}),(0,i.jsxs)(`div`,{className:`flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2`,children:[(0,i.jsx)(e.t,{variant:`outline`,type:`button`,onClick:o,disabled:v,children:`Cancel`}),(0,i.jsx)(e.t,{type:`submit`,disabled:v,children:v?`Saving...`:`Save Changes`})]})]})})};exports.EzTableEditDialog=a;
@@ -0,0 +1,100 @@
1
+ import { t as e } from "./button-CYyNwV8S.js";
2
+ import { t } from "./input-CcRi0LeO.js";
3
+ import { t as n } from "./label-DWEV--5W.js";
4
+ import { startTransition as r, useActionState as i, useEffect as a, useOptimistic as o, useState as s } from "react";
5
+ import { jsx as c, jsxs as l } from "react/jsx-runtime";
6
+ //#region src/components/EzTable/EzTableEditDialog.tsx
7
+ var u = ({ open: u, onClose: d, onSave: f, columns: p, initialData: m, isNew: h, onFormRender: g }) => {
8
+ let [_, v] = s({});
9
+ a(() => {
10
+ u && (v(m || {}), g?.({
11
+ form: {
12
+ data: m || {},
13
+ columns: p
14
+ },
15
+ mode: h ? "Add" : "Edit"
16
+ }));
17
+ }, [
18
+ u,
19
+ m,
20
+ p,
21
+ h,
22
+ g
23
+ ]);
24
+ let [y, b] = o(_, (e, t) => ({
25
+ ...e,
26
+ ...t
27
+ })), [x, S, C] = i(async (e, t) => {
28
+ let n = { ..._ };
29
+ return T.forEach((e) => {
30
+ let r = e.accessorKey, i = t.get(r);
31
+ i !== null && (n[r] = i);
32
+ }), r(() => {
33
+ b(n);
34
+ }), await f(n), d(), n;
35
+ }, m || {});
36
+ if (!u) return null;
37
+ let w = (e, t) => {
38
+ v((n) => ({
39
+ ...n,
40
+ [e]: t
41
+ }));
42
+ }, T = p.filter((e) => e.accessorKey && e.meta?.isEditable !== !1 && e.id !== "actions" && e.id !== "select");
43
+ return /* @__PURE__ */ c("div", {
44
+ className: "fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm animate-in fade-in-0",
45
+ children: /* @__PURE__ */ l("form", {
46
+ action: S,
47
+ className: "bg-background w-full max-w-lg rounded-lg border shadow-lg p-6 space-y-6 animate-in zoom-in-95 slide-in-from-bottom-2",
48
+ role: "dialog",
49
+ "aria-modal": "true",
50
+ children: [
51
+ /* @__PURE__ */ l("div", {
52
+ className: "flex flex-col space-y-1.5 text-center sm:text-left",
53
+ children: [/* @__PURE__ */ c("h2", {
54
+ className: "text-lg font-semibold leading-none tracking-tight",
55
+ children: h ? "Add New Record" : "Edit Record"
56
+ }), /* @__PURE__ */ c("p", {
57
+ className: "text-sm text-muted-foreground",
58
+ children: h ? "Enter details for the new record." : "Make changes to the record below."
59
+ })]
60
+ }),
61
+ /* @__PURE__ */ c("div", {
62
+ className: "grid gap-4 py-4 max-h-[60vh] overflow-y-auto pr-2",
63
+ children: T.map((e) => {
64
+ let r = e.accessorKey, i = y[r] ?? "";
65
+ return /* @__PURE__ */ l("div", {
66
+ className: "grid grid-cols-4 items-center gap-4",
67
+ children: [/* @__PURE__ */ c(n, {
68
+ htmlFor: r,
69
+ className: "text-right",
70
+ children: typeof e.header == "string" ? e.header : r
71
+ }), /* @__PURE__ */ c(t, {
72
+ id: r,
73
+ name: r,
74
+ value: i,
75
+ onChange: (e) => w(r, e.target.value),
76
+ className: "col-span-3"
77
+ })]
78
+ }, r);
79
+ })
80
+ }),
81
+ /* @__PURE__ */ l("div", {
82
+ className: "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
83
+ children: [/* @__PURE__ */ c(e, {
84
+ variant: "outline",
85
+ type: "button",
86
+ onClick: d,
87
+ disabled: C,
88
+ children: "Cancel"
89
+ }), /* @__PURE__ */ c(e, {
90
+ type: "submit",
91
+ disabled: C,
92
+ children: C ? "Saving..." : "Save Changes"
93
+ })]
94
+ })
95
+ ]
96
+ })
97
+ });
98
+ };
99
+ //#endregion
100
+ export { u as EzTableEditDialog };
@@ -1,4 +1,4 @@
1
- import { p as e } from "./EzLayout-CiaPLniV.js";
1
+ import { p as e } from "./EzLayout-DFxegglu.js";
2
2
  import { _ as t } from "./EzProvider-AlmsYIDk.js";
3
3
  import { Fragment as n, jsx as r, jsxs as i } from "react/jsx-runtime";
4
4
  import { flexRender as a } from "@tanstack/react-table";
@@ -1 +1 @@
1
- const e=require("./EzProvider-L2qQMq-v.cjs"),t=require("./button-BBMwzUtG.cjs"),n=require("./input-CYlvlbF7.cjs"),r=require("./dropdown-menu-BRP0tyR_.cjs");let i=require("react");i=e.y(i,1);let a=require("lucide-react"),o=require("react/jsx-runtime");var s=e.v({EzTableToolbar:()=>c}),c=(0,i.memo)(({globalFilter:s,setGlobalFilter:c,onExportExcel:l,onExportCSV:u,onExportPDF:d,enableChangeTracking:f,canUndo:p,canRedo:m,undo:h,redo:g,isPending:_,onAdd:v,onSave:y,onDiscard:b,enableEditing:x,enableHiding:S,changes:C,table:w})=>{let T=e.n(),E=(typeof s==`string`?s:s?.quickSearch)??``,[D,O]=(0,i.useState)(E);(0,i.useEffect)(()=>{O(E)},[E]),(0,i.useEffect)(()=>{let e=setTimeout(()=>{D!==E&&c(typeof s==`object`&&s?{...s,quickSearch:D}:D)},300);return()=>clearTimeout(e)},[D,c,E]);let k=(0,i.useCallback)(e=>{O(e.target.value)},[]);return(0,o.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-y-2 px-1`,children:[(0,o.jsxs)(`div`,{className:`flex flex-1 flex-wrap items-center gap-2`,children:[x&&v&&(0,o.jsxs)(t.t,{variant:`default`,size:`sm`,className:`h-8 shadow-sm bg-primary hover:bg-primary/90 text-primary-foreground`,onClick:v,children:[(0,o.jsx)(a.Plus,{className:`mr-1.5 h-3.5 w-3.5`}),`Add New`]}),x&&(C?.added||0)+(C?.edited||0)+(C?.deleted||0)>0&&(0,o.jsxs)(`div`,{className:`flex items-center gap-2 animate-in fade-in slide-in-from-left-2 duration-300`,children:[(0,o.jsxs)(t.t,{variant:`default`,size:`sm`,className:`h-8 bg-success hover:bg-success/90 text-success-foreground shadow-sm font-bold gap-1.5`,onClick:y,children:[(0,o.jsx)(a.Save,{className:`h-3.5 w-3.5`}),`Save`]}),(0,o.jsxs)(t.t,{variant:`outline`,size:`sm`,className:`h-8 border-error/20 text-error hover:bg-error/5 hover:text-error font-bold gap-1.5`,onClick:b,children:[(0,o.jsx)(a.XCircle,{className:`h-3.5 w-3.5`}),`Discard`]})]}),(0,o.jsxs)(`div`,{className:`relative`,children:[(0,o.jsx)(n.t,{placeholder:`Filter all columns...`,value:D,onChange:k,className:e._(`h-8 min-w-[150px] flex-1 lg:max-w-[250px]`,_&&`opacity-70`)}),_&&(0,o.jsx)(a.Loader2,{className:`absolute right-2 top-1/2 -translate-y-1/2 w-4 h-4 animate-spin text-muted-foreground`})]}),f&&(0,o.jsxs)(`div`,{className:`flex items-center gap-1 ml-2 border-l border-border pl-2`,children:[(0,o.jsx)(t.t,{variant:`ghost`,size:`icon`,className:`h-8 w-8`,disabled:!p,onClick:h,title:`Undo`,children:(0,o.jsx)(a.Undo,{className:`h-4 w-4`})}),(0,o.jsx)(t.t,{variant:`ghost`,size:`icon`,className:`h-8 w-8`,disabled:!m,onClick:g,title:`Redo`,children:(0,o.jsx)(a.Redo,{className:`h-4 w-4`})})]})]}),(0,o.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[S&&w&&(0,o.jsxs)(r.t,{children:[(0,o.jsx)(r.h,{asChild:!0,children:(0,o.jsxs)(t.t,{variant:`outline`,size:`sm`,className:`h-8 gap-2`,children:[(0,o.jsx)(a.Columns3,{className:`w-4 h-4`}),` Columns`]})}),(0,o.jsx)(r.r,{align:`end`,className:`w-[180px]`,children:w.getAllLeafColumns().filter(e=>e.accessorFn!==void 0&&e.getCanHide()).map(e=>(0,o.jsx)(r.n,{className:`capitalize`,checked:e.getIsVisible(),onCheckedChange:t=>e.toggleVisibility(!!t),children:typeof e.columnDef.header==`string`?e.columnDef.header:e.id.replace(/_/g,` `)||`Unnamed Column`},e.id))})]}),(u||l||d)&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(t.t,{variant:`outline`,size:`sm`,onClick:()=>window.print(),className:`h-8 gap-2`,children:[(0,o.jsx)(a.Printer,{className:`w-4 h-4`}),` Print`]}),u&&(0,o.jsxs)(t.t,{variant:`secondary`,size:`sm`,onClick:()=>{u?.(),T.get(`NotificationService`)?.add({type:`info`,message:`Preparing CSV export...`,duration:8e3})},className:`h-8 gap-2`,children:[(0,o.jsx)(a.Download,{className:`w-4 h-4`}),` Export CSV`]}),l&&(0,o.jsxs)(t.t,{variant:`secondary`,size:`sm`,onClick:()=>{l?.(),T.get(`NotificationService`)?.add({type:`info`,message:`Preparing Excel export...`,duration:8e3})},className:`h-8 gap-2`,children:[(0,o.jsx)(a.Download,{className:`w-4 h-4`}),` Export Excel`]}),d&&(0,o.jsxs)(t.t,{variant:`secondary`,size:`sm`,onClick:()=>{d?.(),T.get(`NotificationService`)?.add({type:`info`,message:`Preparing PDF export...`,duration:8e3})},className:`h-8 gap-2`,children:[(0,o.jsx)(a.Download,{className:`w-4 h-4`}),` Export PDF`]})]})]})]})});c.displayName=`EzTableToolbar`,Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return c}});
1
+ const e=require("./EzProvider-L2qQMq-v.cjs"),t=require("./button-BBMwzUtG.cjs"),n=require("./input-DOh8O0iX.cjs"),r=require("./dropdown-menu-BRP0tyR_.cjs");let i=require("react");i=e.y(i,1);let a=require("lucide-react"),o=require("react/jsx-runtime");var s=e.v({EzTableToolbar:()=>c}),c=(0,i.memo)(({globalFilter:s,setGlobalFilter:c,onExportExcel:l,onExportCSV:u,onExportPDF:d,enableChangeTracking:f,canUndo:p,canRedo:m,undo:h,redo:g,isPending:_,onAdd:v,onSave:y,onDiscard:b,enableEditing:x,enableHiding:S,changes:C,table:w})=>{let T=e.n(),E=(typeof s==`string`?s:s?.quickSearch)??``,[D,O]=(0,i.useState)(E);(0,i.useEffect)(()=>{O(E)},[E]),(0,i.useEffect)(()=>{let e=setTimeout(()=>{D!==E&&c(typeof s==`object`&&s?{...s,quickSearch:D}:D)},300);return()=>clearTimeout(e)},[D,c,E]);let k=(0,i.useCallback)(e=>{O(e.target.value)},[]);return(0,o.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-y-2 px-1`,children:[(0,o.jsxs)(`div`,{className:`flex flex-1 flex-wrap items-center gap-2`,children:[x&&v&&(0,o.jsxs)(t.t,{variant:`default`,size:`sm`,className:`h-8 shadow-sm bg-primary hover:bg-primary/90 text-primary-foreground`,onClick:v,children:[(0,o.jsx)(a.Plus,{className:`mr-1.5 h-3.5 w-3.5`}),`Add New`]}),x&&(C?.added||0)+(C?.edited||0)+(C?.deleted||0)>0&&(0,o.jsxs)(`div`,{className:`flex items-center gap-2 animate-in fade-in slide-in-from-left-2 duration-300`,children:[(0,o.jsxs)(t.t,{variant:`default`,size:`sm`,className:`h-8 bg-success hover:bg-success/90 text-success-foreground shadow-sm font-bold gap-1.5`,onClick:y,children:[(0,o.jsx)(a.Save,{className:`h-3.5 w-3.5`}),`Save`]}),(0,o.jsxs)(t.t,{variant:`outline`,size:`sm`,className:`h-8 border-error/20 text-error hover:bg-error/5 hover:text-error font-bold gap-1.5`,onClick:b,children:[(0,o.jsx)(a.XCircle,{className:`h-3.5 w-3.5`}),`Discard`]})]}),(0,o.jsxs)(`div`,{className:`relative`,children:[(0,o.jsx)(n.t,{placeholder:`Filter all columns...`,value:D,onChange:k,className:e._(`h-8 min-w-[150px] flex-1 lg:max-w-[250px]`,_&&`opacity-70`)}),_&&(0,o.jsx)(a.Loader2,{className:`absolute right-2 top-1/2 -translate-y-1/2 w-4 h-4 animate-spin text-muted-foreground`})]}),f&&(0,o.jsxs)(`div`,{className:`flex items-center gap-1 ml-2 border-l border-border pl-2`,children:[(0,o.jsx)(t.t,{variant:`ghost`,size:`icon`,className:`h-8 w-8`,disabled:!p,onClick:h,title:`Undo`,children:(0,o.jsx)(a.Undo,{className:`h-4 w-4`})}),(0,o.jsx)(t.t,{variant:`ghost`,size:`icon`,className:`h-8 w-8`,disabled:!m,onClick:g,title:`Redo`,children:(0,o.jsx)(a.Redo,{className:`h-4 w-4`})})]})]}),(0,o.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[S&&w&&(0,o.jsxs)(r.t,{children:[(0,o.jsx)(r.h,{asChild:!0,children:(0,o.jsxs)(t.t,{variant:`outline`,size:`sm`,className:`h-8 gap-2`,children:[(0,o.jsx)(a.Columns3,{className:`w-4 h-4`}),` Columns`]})}),(0,o.jsx)(r.r,{align:`end`,className:`w-[180px]`,children:w.getAllLeafColumns().filter(e=>e.accessorFn!==void 0&&e.getCanHide()).map(e=>(0,o.jsx)(r.n,{className:`capitalize`,checked:e.getIsVisible(),onCheckedChange:t=>e.toggleVisibility(!!t),children:typeof e.columnDef.header==`string`?e.columnDef.header:e.id.replace(/_/g,` `)||`Unnamed Column`},e.id))})]}),(u||l||d)&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(t.t,{variant:`outline`,size:`sm`,onClick:()=>window.print(),className:`h-8 gap-2`,children:[(0,o.jsx)(a.Printer,{className:`w-4 h-4`}),` Print`]}),u&&(0,o.jsxs)(t.t,{variant:`secondary`,size:`sm`,onClick:()=>{u?.(),T.get(`NotificationService`)?.add({type:`info`,message:`Preparing CSV export...`,duration:8e3})},className:`h-8 gap-2`,children:[(0,o.jsx)(a.Download,{className:`w-4 h-4`}),` Export CSV`]}),l&&(0,o.jsxs)(t.t,{variant:`secondary`,size:`sm`,onClick:()=>{l?.(),T.get(`NotificationService`)?.add({type:`info`,message:`Preparing Excel export...`,duration:8e3})},className:`h-8 gap-2`,children:[(0,o.jsx)(a.Download,{className:`w-4 h-4`}),` Export Excel`]}),d&&(0,o.jsxs)(t.t,{variant:`secondary`,size:`sm`,onClick:()=>{d?.(),T.get(`NotificationService`)?.add({type:`info`,message:`Preparing PDF export...`,duration:8e3})},className:`h-8 gap-2`,children:[(0,o.jsx)(a.Download,{className:`w-4 h-4`}),` Export PDF`]})]})]})]})});c.displayName=`EzTableToolbar`,Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return c}});
@@ -1,7 +1,7 @@
1
- import { p as e } from "./EzLayout-CiaPLniV.js";
1
+ import { p as e } from "./EzLayout-DFxegglu.js";
2
2
  import { _ as t, n } from "./EzProvider-AlmsYIDk.js";
3
3
  import { t as r } from "./button-CYyNwV8S.js";
4
- import { t as i } from "./input-Cj3sQK3M.js";
4
+ import { t as i } from "./input-CcRi0LeO.js";
5
5
  import { h as a, n as o, r as s, t as c } from "./dropdown-menu-B_7_K13o.js";
6
6
  import { memo as l, useCallback as u, useEffect as d, useState as f } from "react";
7
7
  import { Columns3 as p, Download as m, Loader2 as h, Plus as g, Printer as _, Redo as v, Save as y, Undo as b, XCircle as x } from "lucide-react";
@@ -3,9 +3,9 @@ import { n, t as r } from "./EzErrorBoundary-C7a6VisX.js";
3
3
  import { t as i } from "./useService-CnCBGG3G.js";
4
4
  import { t as a } from "./useComponentState-DiSFLYju.js";
5
5
  import { n as o, t as s } from "./useInitCoreServices-CuBrviDM.js";
6
- import { t as c } from "./useServiceState-CkrJZm1D.js";
7
- import { a as l, i as u, t as d } from "./HighlightText-DNA2R2uf.js";
8
- import { _ as f, t as p } from "./EzContextMenu-srLxujt8.js";
6
+ import { _ as c, t as l } from "./EzContextMenu-srLxujt8.js";
7
+ import { t as u } from "./useServiceState-CkrJZm1D.js";
8
+ import { a as d, i as f, t as p } from "./HighlightText-DNA2R2uf.js";
9
9
  import { memo as m, useCallback as h, useEffect as g, useMemo as _, useRef as v, useState as y } from "react";
10
10
  import { AlertTriangle as b, Check as x, ChevronDown as S, ChevronRight as C, Loader2 as w, RefreshCw as T } from "lucide-react";
11
11
  import { Fragment as E, jsx as D, jsxs as O } from "react/jsx-runtime";
@@ -64,7 +64,7 @@ var R = class {
64
64
  }).map((e) => ({
65
65
  ...e,
66
66
  children: e.children ? B(e.children, t) : void 0
67
- })), V = u, H = l, U = (e) => {
67
+ })), V = f, H = d, U = (e) => {
68
68
  let { data: t, fields: n, sortOrder: r, onDataSourceChanged: i, onDataBound: o } = e, { state: s, setState: c } = a({ initialState: {
69
69
  internalTreeData: t,
70
70
  loadingNodes: /* @__PURE__ */ new Set()
@@ -252,7 +252,7 @@ var R = class {
252
252
  let n = [], r = (e, a = 0) => {
253
253
  e.forEach((e) => {
254
254
  let o = i ? i.get(e.id) : void 0;
255
- if ((i ? o?.matches : !0) === !1) return;
255
+ if ((!i || o?.matches) === !1) return;
256
256
  n.push({
257
257
  node: e,
258
258
  level: a
@@ -423,7 +423,7 @@ var R = class {
423
423
  g
424
424
  ]));
425
425
  }, q = (e) => {
426
- let n = t(), r = c("I18nService")?.dir || "ltr", { serviceRegistry: a, api: s } = o(e), { dir: l, apiRef: u, searchTerm: d } = e, f = l === "auto" || !l ? r : l, { treeData: p, setInternalTreeData: m, loadingNodes: v, setLoadingNodes: b, updateNode: x } = U(e), S = _(() => e.service ? e.service : e.serviceName ? n.get(e.serviceName) : null, [e.service, e.serviceName]);
426
+ let n = t(), r = u("I18nService")?.dir || "ltr", { serviceRegistry: a, api: s } = o(e), { dir: c, apiRef: l, searchTerm: d } = e, f = c === "auto" || !c ? r : c, { treeData: p, setInternalTreeData: m, loadingNodes: v, setLoadingNodes: b, updateNode: x } = U(e), S = _(() => e.service ? e.service : e.serviceName ? n.get(e.serviceName) : null, [e.service, e.serviceName]);
427
427
  g(() => {
428
428
  S && S.loadNodes().then((e) => {
429
429
  m(e);
@@ -450,7 +450,7 @@ var R = class {
450
450
  let { selectedNodes: T, setInternalSelectedNodes: E, toggleSelect: D, checkedNodes: O, setInternalCheckedNodes: k, indeterminateNodes: A, setIndeterminateNodes: j, toggleCheck: M, updateCheckState: N } = W(e, C, p), { expandedNodes: P, setInternalExpandedNodes: F, toggleExpand: I } = ee(e, p, x, b, S), { flattenedNodes: L } = G(p, P, d), [z, B] = y(null), V = h((t, n) => {
451
451
  x(t, { label: n }), e.onNodeRename?.(t, n);
452
452
  }, [x, e.onNodeRename]);
453
- return K(e, p, m, P, F, O, k, E, j, N, L, C, B, u, s), {
453
+ return K(e, p, m, P, F, O, k, E, j, N, L, C, B, l, s), {
454
454
  state: {
455
455
  treeData: p,
456
456
  expandedNodes: P,
@@ -507,7 +507,7 @@ var R = class {
507
507
  })
508
508
  ]
509
509
  })
510
- }), Y = m(({ node: t, level: n, isExpanded: r, isSelected: i, isChecked: a, isIndeterminate: o, isLoading: s, onToggleExpand: c, onToggleSelect: l, onToggleCheck: u, onRename: f, showCheckboxes: m, allowEditing: h, searchTerm: _, style: b, onKeyDown: T, tabIndex: k, autoFocus: A, slots: j, slotProps: M, allowTextWrap: N, animation: F, checkOnClick: L, fullRowSelect: R, fullRowNavigable: z, onNodeClicked: B, onDrawNode: V, isEditing: H, onEditingChange: U, dir: ee }) => {
510
+ }), Y = m(({ node: t, level: n, isExpanded: r, isSelected: i, isChecked: a, isIndeterminate: o, isLoading: s, onToggleExpand: c, onToggleSelect: u, onToggleCheck: d, onRename: f, showCheckboxes: m, allowEditing: h, searchTerm: _, style: b, onKeyDown: T, tabIndex: k, autoFocus: A, slots: j, slotProps: M, allowTextWrap: N, animation: F, checkOnClick: L, fullRowSelect: R, fullRowNavigable: z, onNodeClicked: B, onDrawNode: V, isEditing: H, onEditingChange: U, dir: ee }) => {
511
511
  let [W, G] = y(!1), [K, q] = y(t.label);
512
512
  g(() => {
513
513
  H !== void 0 && H !== W && (G(H), H && q(t.label));
@@ -548,17 +548,17 @@ var R = class {
548
548
  }) : D(r ? S : C, { className: "w-4 h-4" }) : null, fe = () => m ? ue ? /* @__PURE__ */ D(ue, {
549
549
  checked: a,
550
550
  indeterminate: o,
551
- onChange: () => u(t.id),
551
+ onChange: () => d(t.id),
552
552
  ...M?.checkbox
553
553
  }) : /* @__PURE__ */ O("div", {
554
554
  "data-testid": `tree-checkbox-${t.id}`,
555
555
  onClick: (e) => {
556
- e.stopPropagation(), u(t.id);
556
+ e.stopPropagation(), d(t.id);
557
557
  },
558
558
  className: e("w-4 h-4 me-2 flex items-center justify-center rounded border-2 transition-all cursor-pointer", a ? "bg-primary border-primary text-primary-foreground" : o ? "bg-background border-primary shadow-[0_0_0_1px_inset_rgba(var(--primary),0.1)]" : "bg-background border-slate-500 dark:border-slate-400 hover:border-primary/50"),
559
559
  children: [a && /* @__PURE__ */ D(x, { className: "w-3.5 h-3.5 stroke-[3]" }), o && /* @__PURE__ */ D("div", { className: "w-2.5 h-0.5 bg-primary rounded-full" })]
560
560
  }) : null;
561
- return /* @__PURE__ */ D(p, {
561
+ return /* @__PURE__ */ D(l, {
562
562
  contextId: "tree-node",
563
563
  data: t,
564
564
  onAction: (e) => {
@@ -577,7 +577,7 @@ var R = class {
577
577
  h && e.key === "F2" && (e.stopPropagation(), G(!0), q(t.label)), Z?.onKeyDown && Z.onKeyDown(e), T(e, t.id);
578
578
  },
579
579
  onClick: () => {
580
- l(t.id), B?.(t.id), L && m && u(t.id);
580
+ u(t.id), B?.(t.id), L && m && d(t.id);
581
581
  },
582
582
  className: e("flex items-center py-1.5 px-2 cursor-pointer hover:bg-muted/50 rounded-md w-full group outline-none focus:ring-1 focus:ring-primary/30 select-none", i ? "bg-primary/10 text-primary" : "text-foreground", X ? "bg-primary/5" : "", F ? "transition-all duration-200" : ""),
583
583
  style: {
@@ -592,8 +592,8 @@ var R = class {
592
592
  isChecked: a,
593
593
  isIndeterminate: o,
594
594
  onToggleExpand: () => c(t.id),
595
- onToggleSelect: () => l(t.id),
596
- onToggleCheck: () => u(t.id),
595
+ onToggleSelect: () => u(t.id),
596
+ onToggleCheck: () => d(t.id),
597
597
  ...M?.node || {}
598
598
  }) : /* @__PURE__ */ O(E, { children: [
599
599
  $ || s ? /* @__PURE__ */ D("button", {
@@ -625,7 +625,7 @@ var R = class {
625
625
  onDoubleClick: (e) => {
626
626
  e.stopPropagation(), ie();
627
627
  },
628
- children: /* @__PURE__ */ D(d, {
628
+ children: /* @__PURE__ */ D(p, {
629
629
  text: t.label,
630
630
  highlight: _
631
631
  })
@@ -637,8 +637,8 @@ var R = class {
637
637
  Y.displayName = "EzTreeViewItem";
638
638
  //#endregion
639
639
  //#region src/components/EzTreeView/EzVirtualTree.tsx
640
- var X = m(({ items: t, expandedNodes: n, selectedNodes: r, checkedNodes: i, indeterminateNodes: a, loadingNodes: o, onToggleExpand: s, onToggleSelect: c, onToggleCheck: l, onNodeRename: u, className: d, dir: p, showCheckboxes: m, allowEditing: g, searchTerm: v, slots: b, slotProps: x, allowTextWrap: S, animation: C, checkOnClick: w, fullRowSelect: T, fullRowNavigable: E, onKeyPress: O, onNodeClicked: k, onDrawNode: A, editingNodeId: j, setEditingNodeId: M }) => {
641
- let { rowVirtualizer: N, parentRef: P, getVirtualItems: I } = f({
640
+ var X = m(({ items: t, expandedNodes: n, selectedNodes: r, checkedNodes: i, indeterminateNodes: a, loadingNodes: o, onToggleExpand: s, onToggleSelect: l, onToggleCheck: u, onNodeRename: d, className: f, dir: p, showCheckboxes: m, allowEditing: g, searchTerm: v, slots: b, slotProps: x, allowTextWrap: S, animation: C, checkOnClick: w, fullRowSelect: T, fullRowNavigable: E, onKeyPress: O, onNodeClicked: k, onDrawNode: A, editingNodeId: j, setEditingNodeId: M }) => {
641
+ let { rowVirtualizer: N, parentRef: P, getVirtualItems: I } = c({
642
642
  rowCount: t.length,
643
643
  rowHeight: 32,
644
644
  overscanCount: 10,
@@ -647,7 +647,7 @@ var X = m(({ items: t, expandedNodes: n, selectedNodes: r, checkedNodes: i, inde
647
647
  let e = /* @__PURE__ */ new Map();
648
648
  return t.forEach((t, n) => e.set(t.node.id, n)), e;
649
649
  }, [t]), V = h((e, r, i) => {
650
- let a = p === "rtl", o = a ? "ArrowLeft" : "ArrowRight", u = a ? "ArrowRight" : "ArrowLeft";
650
+ let a = p === "rtl", o = a ? "ArrowLeft" : "ArrowRight", c = a ? "ArrowRight" : "ArrowLeft";
651
651
  if (e.key === "ArrowDown") {
652
652
  e.preventDefault();
653
653
  let n = Math.min(t.length - 1, r + 1);
@@ -657,26 +657,26 @@ var X = m(({ items: t, expandedNodes: n, selectedNodes: r, checkedNodes: i, inde
657
657
  let t = Math.max(0, r - 1);
658
658
  z(t), N.scrollToIndex(t);
659
659
  } else if (e.key === o) e.preventDefault(), (i.children?.length || i.children && !i.isLeaf || !i.isLoaded && !i.isLeaf) && !n.has(i.id) ? s(i.id) : i.children?.length && n.has(i.id) && r + 1 < t.length && t[r + 1].level > (i.level ?? 0) && (z(r + 1), N.scrollToIndex(r + 1));
660
- else if (e.key === u) {
660
+ else if (e.key === c) {
661
661
  if (e.preventDefault(), n.has(i.id)) s(i.id);
662
662
  else if (i.parentId) {
663
663
  let e = B.get(i.parentId);
664
664
  e !== void 0 && (z(e), N.scrollToIndex(e));
665
665
  }
666
- } else (e.key === "Enter" || e.key === " ") && (e.preventDefault(), m ? l(i.id) : c(i.id));
666
+ } else (e.key === "Enter" || e.key === " ") && (e.preventDefault(), m ? u(i.id) : l(i.id));
667
667
  }, [
668
668
  t,
669
669
  n,
670
670
  s,
671
- c,
672
671
  l,
672
+ u,
673
673
  m,
674
674
  B,
675
675
  N
676
676
  ]);
677
677
  return /* @__PURE__ */ D("div", {
678
678
  ref: P,
679
- className: e("absolute inset-0 overflow-y-auto bg-background border rounded-lg shadow-sm focus:outline-none focus:ring-1 focus:ring-primary/20", d),
679
+ className: e("absolute inset-0 overflow-y-auto bg-background border rounded-lg shadow-sm focus:outline-none focus:ring-1 focus:ring-primary/20", f),
680
680
  dir: p,
681
681
  role: "tree",
682
682
  onKeyDown: (e) => O?.(e),
@@ -690,24 +690,24 @@ var X = m(({ items: t, expandedNodes: n, selectedNodes: r, checkedNodes: i, inde
690
690
  items: t.map((e) => e.node.id),
691
691
  strategy: L,
692
692
  children: I().map((e) => {
693
- let { node: d, level: f } = t[e.index], h = R === e.index;
693
+ let { node: c, level: f } = t[e.index], h = R === e.index;
694
694
  return /* @__PURE__ */ D(Y, {
695
- node: d,
695
+ node: c,
696
696
  level: f,
697
- isExpanded: n.has(d.id),
698
- isSelected: r.has(d.id),
699
- isChecked: i.has(d.id),
700
- isIndeterminate: a.has(d.id),
701
- isLoading: o.has(d.id),
702
- hasChildren: !!d.children?.length || d.children && !d.isLeaf || !d.isLoaded && !d.isLeaf,
697
+ isExpanded: n.has(c.id),
698
+ isSelected: r.has(c.id),
699
+ isChecked: i.has(c.id),
700
+ isIndeterminate: a.has(c.id),
701
+ isLoading: o.has(c.id),
702
+ hasChildren: !!c.children?.length || c.children && !c.isLeaf || !c.isLoaded && !c.isLeaf,
703
703
  onToggleExpand: s,
704
- onToggleSelect: c,
705
- onToggleCheck: l,
706
- onRename: u,
704
+ onToggleSelect: l,
705
+ onToggleCheck: u,
706
+ onRename: d,
707
707
  showCheckboxes: m,
708
708
  allowEditing: g,
709
709
  searchTerm: v,
710
- onKeyDown: (t) => V(t, e.index, d),
710
+ onKeyDown: (t) => V(t, e.index, c),
711
711
  style: {
712
712
  position: "absolute",
713
713
  top: `${e.start}px`,
@@ -726,10 +726,10 @@ var X = m(({ items: t, expandedNodes: n, selectedNodes: r, checkedNodes: i, inde
726
726
  fullRowNavigable: E,
727
727
  onNodeClicked: k,
728
728
  onDrawNode: A,
729
- isEditing: j === d.id,
730
- onEditingChange: (e) => M(e ? d.id : null),
729
+ isEditing: j === c.id,
730
+ onEditingChange: (e) => M(e ? c.id : null),
731
731
  dir: p
732
- }, d.id);
732
+ }, c.id);
733
733
  })
734
734
  })
735
735
  })
@@ -0,0 +1 @@
1
+ const e=require("./EzProvider-L2qQMq-v.cjs"),t=require("./EzErrorBoundary-d_2g-_EK.cjs"),n=require("./useService-CyF782jv.cjs"),r=require("./useComponentState-Wcz6pjd6.cjs"),i=require("./useInitCoreServices-DlALVDNx.cjs"),a=require("./EzContextMenu-BCUoEQp5.cjs"),o=require("./useServiceState-PyYQWxHi.cjs"),s=require("./HighlightText-BViuwe03.cjs");let c=require("react");c=e.y(c,1);let l=require("lucide-react"),u=require("react/jsx-runtime"),d=require("@dnd-kit/core"),f=require("@dnd-kit/utilities"),p=require("@dnd-kit/sortable");var m=class{name=`HierarchyService`;nodeMap=new Map;constructor(){}registerNode(e){this.nodeMap.set(e.id,e)}unregisterNode(e){this.nodeMap.delete(e)}getParent(e){let t=this.nodeMap.get(e);if(t&&t.parentId)return this.nodeMap.get(t.parentId)}getChildren(e){let t=this.nodeMap.get(e);return t&&t.children?t.children.map(e=>this.nodeMap.get(e)).filter(e=>!!e):[]}getDescendants(e){let t=[],n=[...this.nodeMap.get(e)?.children||[]];for(;n.length>0;){let e=n.pop();t.push(e);let r=this.nodeMap.get(e);r?.children&&n.push(...r.children)}return t}getAncestors(e){let t=[],n=this.nodeMap.get(e)?.parentId;for(;n;)t.push(n),n=this.nodeMap.get(n)?.parentId;return t}getNode(e){return this.nodeMap.get(e)}cleanup(){this.nodeMap.clear()}},h=(e,t)=>t?{id:t.id?e[t.id]:e.id,label:t.text?e[t.text]:e.label,children:t.children?e[t.children]:e.children,icon:t.icon?e[t.icon]:e.icon,...e}:e,g=(e,t)=>!t||t===`None`?e:[...e].sort((e,n)=>{let r=e.label.localeCompare(n.label);return t===`Ascending`?r:-r}).map(e=>({...e,children:e.children?g(e.children,t):void 0})),_=s.i,v=s.a,y=e=>{let{data:t,fields:n,sortOrder:i,onDataSourceChanged:a,onDataBound:o}=e,{state:s,setState:l}=r.t({initialState:{internalTreeData:t,loadingNodes:new Set}}),u=(0,c.useRef)(!1),d=(0,c.useCallback)(e=>{l(t=>({...t,internalTreeData:typeof e==`function`?e(t.internalTreeData):e}))},[l]),f=(0,c.useCallback)(e=>{l(t=>({...t,loadingNodes:typeof e==`function`?e(t.loadingNodes):e}))},[l]),{internalTreeData:p,loadingNodes:m}=s,_=(0,c.useMemo)(()=>{let e=p;if(n){let t=e=>e.map(e=>{let r=h(e,n);return r.children&&=t(r.children),r});e=t(e)}return i&&(e=g(e,i)),e},[p,n,i]),y=(0,c.useRef)(t);return(0,c.useEffect)(()=>{y.current!==t&&(d(t),a?.(),y.current=t)},[t,a]),(0,c.useEffect)(()=>{u.current&&o?.()},[_,o]),(0,c.useEffect)(()=>(u.current=!0,()=>{u.current=!1}),[]),{treeData:_,setInternalTreeData:d,loadingNodes:m,setLoadingNodes:f,updateNode:(0,c.useCallback)((e,t)=>{d(n=>v(n,e,t))},[d])}},b=(e,t,n,r,i)=>{let{expandedNodes:a,onNodeExpanding:o,onNodeExpanded:s,onNodeCollapsing:l,onNodeCollapsed:u,onNodeExpand:d,onLoadChildren:f,onActionFailure:p}=e,[m,h]=(0,c.useState)(new Set),g=a?new Set(a):m;return{expandedNodes:g,setInternalExpandedNodes:h,toggleExpand:(0,c.useCallback)(async e=>{let c=g.has(e),m=!c;if(m){if(o?.(e)===!1)return}else if(l?.(e)===!1)return;if(m&&(f||i)){let a=_(t,e);if(a&&!a.isLoaded&&!a.isLeaf){r(t=>new Set(t).add(e));try{n(e,{children:i?await i.loadNodes(e):await f(e),isLoaded:!0})}catch(e){p?.(e);return}finally{r(t=>{let n=new Set(t);return n.delete(e),n})}}}let v=new Set(g);c?v.delete(e):v.add(e),a||h(v),d?.(e,m),m?s?.(e):u?.(e)},[g,t,f,d,a,o,l,s,u,p,n,r,i])}},x=(e,t,n)=>{let{selectedNodes:r,checkedNodes:i,selectionMode:a=`single`,onSelectionChange:o,onCheckedChange:s,onNodeSelecting:l,onNodeSelected:u,onNodeChecking:d,onNodeChecked:f,autoCheck:p=!0}=e,[m,h]=(0,c.useState)(new Set),g=r?new Set(r):m,[_,v]=(0,c.useState)(new Set),y=i?new Set(i):_,[b,x]=(0,c.useState)(new Set),S=(0,c.useCallback)(e=>{if(l?.(e)===!1)return;let t=new Set(a===`multiple`?g:[]);t.has(e)?t.delete(e):t.add(e),r||h(t),o?.(Array.from(t)),u?.(e)},[g,a,o,r,l,u]),C=(0,c.useCallback)((e,n)=>{let r=new Set(y),a=new Set(b),o=t.getDescendants(e),c=t.getAncestors(e);n?(r.add(e),a.delete(e),p&&o.forEach(e=>{r.add(e),a.delete(e)})):(r.delete(e),a.delete(e),p&&o.forEach(e=>{r.delete(e),a.delete(e)})),p&&c.forEach(e=>{let n=t.getChildren(e),i=n.every(e=>r.has(e.id)),o=n.every(e=>!r.has(e.id)&&!a.has(e.id));i?(r.add(e),a.delete(e)):o?(r.delete(e),a.delete(e)):(r.delete(e),a.add(e))}),x(a),i||v(r),s?.(Array.from(r)),f?.(e,n)},[y,b,t,s,p,i,f]),w=(0,c.useCallback)(e=>{let t=y.has(e);d?.(e,!t)!==!1&&C(e,!t)},[y,C,d]);return(0,c.useEffect)(()=>{if(!p||!t||!n.length)return;let e=new Set,r=new Set(y),a=t=>{if(!(t.children&&t.children.length>0))return{isChecked:r.has(t.id),isIndeterminate:!1};let n=t.children.map(e=>a(e)),i=n.every(e=>!e.isChecked&&!e.isIndeterminate);return n.every(e=>e.isChecked&&!e.isIndeterminate)?(r.add(t.id),{isChecked:!0,isIndeterminate:!1}):i?(r.delete(t.id),{isChecked:!1,isIndeterminate:!1}):(r.delete(t.id),e.add(t.id),{isChecked:!1,isIndeterminate:!0})};n.forEach(e=>a(e)),Array.from(b).sort().join(`,`)!==Array.from(e).sort().join(`,`)&&x(e),Array.from(y).sort().join(`,`)!==Array.from(r).sort().join(`,`)&&(i||v(r),s?.(Array.from(r)))},[y,t,p,n,i,s,v]),{selectedNodes:g,setInternalSelectedNodes:h,toggleSelect:S,checkedNodes:y,setInternalCheckedNodes:v,indeterminateNodes:b,setIndeterminateNodes:x,toggleCheck:w,updateCheckState:C}},S=(e,t,n=``)=>{let r=n.toLowerCase(),i=(0,c.useMemo)(()=>{if(!r)return null;let t=new Map,n=e=>{if(t.has(e.id))return t.get(e.id);let i=(e.label||``).toLowerCase().includes(r),a=!1;if(e.children)for(let t of e.children)n(t).matches&&(a=!0);let o={matches:i||a,hasChildMatch:a};return t.set(e.id,o),o};return e.forEach(e=>n(e)),t},[e,r]);return{flattenedNodes:(0,c.useMemo)(()=>{let n=[],r=(e,a=0)=>{e.forEach(e=>{let o=i?i.get(e.id):void 0;if((!i||o?.matches)===!1)return;n.push({node:e,level:a});let s=i&&o?.hasChildMatch;(t.has(e.id)||s)&&e.children&&r(e.children,a+1)})};return r(e),n},[e,t,i])}},C=(n,r,i,a,o,s,l,u,d,f,p,m,h,g,y={})=>{let b=e.n(),{expandedNodes:x,checkedNodes:S,selectedNodes:C,onNodeExpand:w,onCheckedChange:T,onSelectionChange:E,onNodeEditing:D}=n;t.n(g,(0,c.useMemo)(()=>{let e={expandAll:()=>{let e=Array.from(m.nodeMap.keys());x?w?.(e[0],!0):o(new Set(e))},collapseAll:()=>{x?w?.(``,!1):o(new Set)},checkAll:()=>{let e=Array.from(m.nodeMap.keys());S?T?.(e):(l(new Set(e)),d(new Set))},uncheckAll:()=>{S?T?.([]):(l(new Set),d(new Set))},selectNode:e=>{C?E?.([e]):u(new Set([e]))},expandNode:(e,t=!0)=>{x?w?.(e,t):o(n=>{let r=new Set(n);return t?r.add(e):r.delete(e),r})},checkNode:(e,t=!0)=>f(e,t),getFlattenedNodes:()=>p,addNodes:(e,t,n)=>{if(!t)i(t=>{let r=[...t];return n===void 0?r.push(...e):r.splice(n,0,...e),r});else{let r=i=>i.map(i=>{if(i.id===t){let t=[...i.children||[]];return n===void 0?t.push(...e):t.splice(n,0,...e),{...i,children:t}}return i.children?{...i,children:r(i.children)}:i});i(e=>r(e))}b.get(`NotificationService`)?.show({type:`success`,message:`${e.length} Node(s) Added`,duration:2e3})},removeNodes:e=>{let t=new Set(e),n=e=>e.filter(e=>!t.has(e.id)).map(e=>({...e,children:e.children?n(e.children):void 0}));i(e=>n(e)),b.get(`NotificationService`)?.show({type:`success`,message:`${e.length} Node(s) Removed`,duration:2e3})},updateNode:(e,t)=>{i(n=>v(n,e,t)),b.get(`NotificationService`)?.show({type:`success`,message:`Node Updated Successfully`,duration:2e3})},moveNodes:(e,t,n)=>{let a=[],o=new Set(e),s=e=>e.filter(e=>o.has(e.id)?(a.push(e),!1):!0).map(e=>({...e,children:e.children?s(e.children):void 0})),c=s(r),l=e=>e.map(e=>{if(e.id===t){let t=[...e.children||[]];return n===void 0?t.push(...a):t.splice(n,0,...a),{...e,children:t}}return e.children?{...e,children:l(e.children)}:e});i(l(c)),b.get(`NotificationService`)?.show({type:`success`,message:`Nodes Moved Successfully`,duration:2e3})},getNode:e=>_(r,e),getTreeData:()=>r,ensureVisible:e=>{let t=m.getAncestors(e);x?(t.forEach(e=>w?.(e,!0)),w?.(e,!0)):o(n=>{let r=new Set(n);return t.forEach(e=>r.add(e)),r.add(e),r})},beginEdit:e=>{_(r,e)&&D?.(e)!==!1&&h(e)},disableNodes:(e,t=!0)=>{e.forEach(e=>{i(n=>v(n,e,{disabled:t}))})},enableNodes:e=>{e.forEach(e=>{i(t=>v(t,e,{disabled:!1}))})},getAllCheckedNodes:()=>Array.from(s),getDisabledNodes:()=>{let e=[],t=n=>{n.forEach(n=>{n.disabled&&e.push(n.id),n.children&&t(n.children)})};return t(r),e}};return{...y,...e}},[m,r,a,s,x,S,C,w,T,E,D,i,o,l,u,d,f,p,h,y]))},w=t=>{let r=e.n(),a=o.t(`I18nService`)?.dir||`ltr`,{serviceRegistry:s,api:l}=i.n(t),{dir:u,apiRef:d,searchTerm:f}=t,p=u===`auto`||!u?a:u,{treeData:h,setInternalTreeData:g,loadingNodes:_,setLoadingNodes:v,updateNode:w}=y(t),T=(0,c.useMemo)(()=>t.service?t.service:t.serviceName?r.get(t.serviceName):null,[t.service,t.serviceName]);(0,c.useEffect)(()=>{T&&T.loadNodes().then(e=>{g(e)})},[T,g]);let E=n.t(`HierarchyService`,()=>new m,s||r),D=(0,c.useCallback)((e,t=0,n)=>{e.forEach(e=>{let r={id:e.id,level:t,parentId:n,children:e.children?.map(e=>e.id)};E.registerNode(r),e.children&&D(e.children,t+1,e.id)})},[E]);(0,c.useEffect)(()=>{E&&(E.cleanup(),D(h))},[h,E,D]);let{selectedNodes:O,setInternalSelectedNodes:k,toggleSelect:A,checkedNodes:j,setInternalCheckedNodes:M,indeterminateNodes:N,setIndeterminateNodes:P,toggleCheck:F,updateCheckState:I}=x(t,E,h),{expandedNodes:L,setInternalExpandedNodes:R,toggleExpand:z}=b(t,h,w,v,T),{flattenedNodes:B}=S(h,L,f),[V,H]=(0,c.useState)(null),U=(0,c.useCallback)((e,n)=>{w(e,{label:n}),t.onNodeRename?.(e,n)},[w,t.onNodeRename]);return C(t,h,g,L,R,j,M,k,P,I,B,E,H,d,l),{state:{treeData:h,expandedNodes:L,selectedNodes:O,checkedNodes:j,indeterminateNodes:N,loadingNodes:_,flattenedNodes:B,editingNodeId:V},actions:{toggleExpand:z,toggleSelect:A,toggleCheck:F,handleNodeRename:U,setEditingNodeId:H},config:{allowTextWrap:t.allowTextWrap,animation:t.animation,checkOnClick:t.checkOnClick,fullRowSelect:t.fullRowSelect,fullRowNavigable:t.fullRowNavigable,onKeyPress:t.onKeyPress,onNodeClicked:t.onNodeClicked,onDrawNode:t.onDrawNode},dir:p,baseApi:l}},T=()=>(0,u.jsx)(`div`,{className:`flex flex-col items-center justify-center min-h-screen p-4`,children:(0,u.jsxs)(`div`,{className:`flex flex-col items-center gap-4 max-w-md w-full`,children:[(0,u.jsx)(`div`,{className:`flex items-center justify-center w-16 h-16 rounded-full bg-destructive/10`,children:(0,u.jsx)(l.AlertTriangle,{className:`w-8 h-8 text-destructive`})}),(0,u.jsxs)(`div`,{className:`flex flex-col items-center gap-2 text-center`,children:[(0,u.jsx)(`h2`,{className:`text-lg font-semibold`,children:`Tree View Error`}),(0,u.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Something went wrong with the tree view. Please refresh the page or try again.`})]}),(0,u.jsxs)(`button`,{onClick:()=>window.location.reload(),className:`flex items-center gap-2 px-4 py-2 text-sm font-medium text-primary hover:bg-primary/10 rounded-md transition-colors`,children:[(0,u.jsx)(l.RefreshCw,{className:`w-4 h-4`}),`Refresh Page`]})]})}),E=(0,c.memo)(({node:t,level:n,isExpanded:r,isSelected:i,isChecked:o,isIndeterminate:d,isLoading:m,onToggleExpand:h,onToggleSelect:g,onToggleCheck:_,onRename:v,showCheckboxes:y,allowEditing:b,searchTerm:x,style:S,onKeyDown:C,tabIndex:w,autoFocus:T,slots:E,slotProps:D,allowTextWrap:O,animation:k,checkOnClick:A,fullRowSelect:j,fullRowNavigable:M,onNodeClicked:N,onDrawNode:P,isEditing:F,onEditingChange:I,dir:L})=>{let[R,z]=(0,c.useState)(!1),[B,V]=(0,c.useState)(t.label);(0,c.useEffect)(()=>{F!==void 0&&F!==R&&(z(F),F&&V(t.label))},[F,R,t.label]),(0,c.useEffect)(()=>{P?.(t)},[t,P]);let{setNodeRef:H,transform:U,isDragging:W,attributes:G,listeners:K,transition:q}=(0,p.useSortable)({id:t.id,data:{node:t,type:`tree-item`,level:n}}),J=(0,c.useRef)(null),Y=e=>{H(e),J.current=e};(0,c.useEffect)(()=>{T&&J.current&&!R&&J.current.focus({preventScroll:!0})},[T,R]);let ee=()=>{b&&(z(!0),V(t.label),I?.(!0))},te=e=>{e.key===`Enter`?(v(t.id,B),z(!1),I?.(!1)):e.key===`Escape`&&(V(t.label),z(!1),I?.(!1))},X=t.children&&t.children.length>0||t.children&&!t.isLeaf||!t.isLoaded&&!t.isLeaf,ne=n*20+(X?0:20),re={...S,transform:f.CSS.Translate.toString(U)?`${S.transform||``} ${f.CSS.Translate.toString(U)}`:S.transform,transition:q||S.transition,opacity:W?.3:1,zIndex:W?999:`auto`},Z=E?.node,Q=E?.expandIcon,$=E?.checkbox,ie=()=>m?(0,u.jsx)(l.Loader2,{className:`w-3.5 h-3.5 animate-spin`}):X?Q?(0,u.jsx)(Q,{isExpanded:r,isLoading:m,...D?.expandIcon}):r?(0,u.jsx)(l.ChevronDown,{className:`w-4 h-4`}):(0,u.jsx)(l.ChevronRight,{className:`w-4 h-4`}):null,ae=()=>y?$?(0,u.jsx)($,{checked:o,indeterminate:d,onChange:()=>_(t.id),...D?.checkbox}):(0,u.jsxs)(`div`,{"data-testid":`tree-checkbox-${t.id}`,onClick:e=>{e.stopPropagation(),_(t.id)},className:e._(`w-4 h-4 me-2 flex items-center justify-center rounded border-2 transition-all cursor-pointer`,o?`bg-primary border-primary text-primary-foreground`:d?`bg-background border-primary shadow-[0_0_0_1px_inset_rgba(var(--primary),0.1)]`:`bg-background border-slate-500 dark:border-slate-400 hover:border-primary/50`),children:[o&&(0,u.jsx)(l.Check,{className:`w-3.5 h-3.5 stroke-[3]`}),d&&(0,u.jsx)(`div`,{className:`w-2.5 h-0.5 bg-primary rounded-full`})]}):null;return(0,u.jsx)(a.t,{contextId:`tree-node`,data:t,onAction:e=>{e===`edit`&&b&&(z(!0),V(t.label))},children:(0,u.jsx)(`div`,{ref:Y,...G,...K,role:`treeitem`,"data-testid":`tree-item-${t.id}`,"aria-expanded":X?r:void 0,"aria-selected":i,tabIndex:w,onKeyDown:e=>{b&&e.key===`F2`&&(e.stopPropagation(),z(!0),V(t.label)),K?.onKeyDown&&K.onKeyDown(e),C(e,t.id)},onClick:()=>{g(t.id),N?.(t.id),A&&y&&_(t.id)},className:e._(`flex items-center py-1.5 px-2 cursor-pointer hover:bg-muted/50 rounded-md w-full group outline-none focus:ring-1 focus:ring-primary/30 select-none`,i?`bg-primary/10 text-primary`:`text-foreground`,W?`bg-primary/5`:``,k?`transition-all duration-200`:``),style:{...re,paddingInlineStart:`${ne}px`},children:Z?(0,u.jsx)(Z,{node:t,level:n,isExpanded:r,isSelected:i,isChecked:o,isIndeterminate:d,onToggleExpand:()=>h(t.id),onToggleSelect:()=>g(t.id),onToggleCheck:()=>_(t.id),...D?.node||{}}):(0,u.jsxs)(u.Fragment,{children:[X||m?(0,u.jsx)(`button`,{"data-testid":`expand-button`,onClick:e=>{e.stopPropagation(),h(t.id)},onPointerDown:e=>e.stopPropagation(),className:`w-5 h-5 flex items-center justify-center me-1 text-muted-foreground hover:text-foreground hover:bg-muted rounded focus:outline-none transition-colors`,tabIndex:-1,children:ie()}):null,ae(),t.icon&&(0,u.jsx)(`span`,{className:`me-2 flex-shrink-0 text-muted-foreground group-hover:text-foreground transition-colors`,children:t.icon}),R?(0,u.jsx)(`input`,{"data-testid":`tree-item-edit-input`,autoFocus:!0,value:B,onChange:e=>V(e.target.value),onKeyDown:te,onBlur:()=>z(!1),onClick:e=>e.stopPropagation(),className:`flex-1 bg-background border border-primary rounded px-1 text-sm outline-none`}):(0,u.jsx)(`span`,{className:`text-base font-semibold flex-1 ${O?`whitespace-normal`:`truncate`}`,onDoubleClick:e=>{e.stopPropagation(),ee()},children:(0,u.jsx)(s.t,{text:t.label,highlight:x})})]})})})});E.displayName=`EzTreeViewItem`;var D=(0,c.memo)(({items:t,expandedNodes:n,selectedNodes:r,checkedNodes:i,indeterminateNodes:o,loadingNodes:s,onToggleExpand:l,onToggleSelect:d,onToggleCheck:f,onNodeRename:m,className:h,dir:g,showCheckboxes:_,allowEditing:v,searchTerm:y,slots:b,slotProps:x,allowTextWrap:S,animation:C,checkOnClick:w,fullRowSelect:T,fullRowNavigable:D,onKeyPress:O,onNodeClicked:k,onDrawNode:A,editingNodeId:j,setEditingNodeId:M})=>{let{rowVirtualizer:N,parentRef:P,getVirtualItems:F}=a._({rowCount:t.length,rowHeight:32,overscanCount:10,progressiveRendering:!0}),[I,L]=(0,c.useState)(0),R=(0,c.useMemo)(()=>{let e=new Map;return t.forEach((t,n)=>e.set(t.node.id,n)),e},[t]),z=(0,c.useCallback)((e,r,i)=>{let a=g===`rtl`,o=a?`ArrowLeft`:`ArrowRight`,s=a?`ArrowRight`:`ArrowLeft`;if(e.key===`ArrowDown`){e.preventDefault();let n=Math.min(t.length-1,r+1);L(n),N.scrollToIndex(n)}else if(e.key===`ArrowUp`){e.preventDefault();let t=Math.max(0,r-1);L(t),N.scrollToIndex(t)}else if(e.key===o)e.preventDefault(),(i.children?.length||i.children&&!i.isLeaf||!i.isLoaded&&!i.isLeaf)&&!n.has(i.id)?l(i.id):i.children?.length&&n.has(i.id)&&r+1<t.length&&t[r+1].level>(i.level??0)&&(L(r+1),N.scrollToIndex(r+1));else if(e.key===s){if(e.preventDefault(),n.has(i.id))l(i.id);else if(i.parentId){let e=R.get(i.parentId);e!==void 0&&(L(e),N.scrollToIndex(e))}}else(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),_?f(i.id):d(i.id))},[t,n,l,d,f,_,R,N]);return(0,u.jsx)(`div`,{ref:P,className:e._(`absolute inset-0 overflow-y-auto bg-background border rounded-lg shadow-sm focus:outline-none focus:ring-1 focus:ring-primary/20`,h),dir:g,role:`tree`,onKeyDown:e=>O?.(e),children:(0,u.jsx)(`div`,{style:{height:`${N.getTotalSize()}px`,width:`100%`,position:`relative`},children:(0,u.jsx)(p.SortableContext,{items:t.map(e=>e.node.id),strategy:p.verticalListSortingStrategy,children:F().map(e=>{let{node:a,level:c}=t[e.index],p=I===e.index;return(0,u.jsx)(E,{node:a,level:c,isExpanded:n.has(a.id),isSelected:r.has(a.id),isChecked:i.has(a.id),isIndeterminate:o.has(a.id),isLoading:s.has(a.id),hasChildren:!!a.children?.length||a.children&&!a.isLeaf||!a.isLoaded&&!a.isLeaf,onToggleExpand:l,onToggleSelect:d,onToggleCheck:f,onRename:m,showCheckboxes:_,allowEditing:v,searchTerm:y,onKeyDown:t=>z(t,e.index,a),style:{position:`absolute`,top:`${e.start}px`,left:0,width:`100%`,height:`${e.size}px`},tabIndex:p?0:-1,autoFocus:p,slots:b,slotProps:x,allowTextWrap:S,animation:C,checkOnClick:w,fullRowSelect:T,fullRowNavigable:D,onNodeClicked:k,onDrawNode:A,isEditing:j===a.id,onEditingChange:e=>M(e?a.id:null),dir:g},a.id)})})})})});D.displayName=`EzVirtualTree`;var O=({onDragEnd:e,onDragStart:t})=>{let[n,r]=(0,c.useState)(null),[i,a]=(0,c.useState)(null),[o,s]=(0,c.useState)(`inside`);return{sensors:(0,d.useSensors)((0,d.useSensor)(d.PointerSensor,{activationConstraint:{distance:8}})),activeNode:n,dragOverNode:i,dragPosition:o,handleDragStart:(0,c.useCallback)(e=>{let{active:n}=e,i=n.data.current?.node;i&&(r(i),t?.(i))},[t]),handleDragOver:(0,c.useCallback)(e=>{e.preventDefault();let{active:t,over:n}=e;if(!n)return;let r=t.data.current?.node,i=n.data.current?.node;if(r&&i&&r.id!==i.id){let e=n.rect,t=e.top+e.height/2;t<e.top+10?s(`before`):t>e.bottom-10?s(`after`):s(`inside`),a(i)}},[]),handleDragEnd:(0,c.useCallback)(t=>{let{active:c,over:l}=t;c&&l&&n&&i&&e(n,i,o),r(null),a(null),s(`inside`)},[n,i,o,e])}},k=n=>{i.t();let{state:{expandedNodes:r,selectedNodes:a,checkedNodes:o,indeterminateNodes:s,loadingNodes:c,flattenedNodes:l,editingNodeId:f},actions:{toggleExpand:p,toggleSelect:m,toggleCheck:h,handleNodeRename:g,setEditingNodeId:_},config:{allowTextWrap:v,animation:y,checkOnClick:b,fullRowSelect:x,fullRowNavigable:S,onKeyPress:C,onNodeClicked:E,onDrawNode:k},dir:A}=w(n),{handleDragEnd:j,sensors:M}=O({onDragEnd:(e,t,r)=>{n.onNodeDrop&&n.onNodeDrop(e,t,r)}});return(0,u.jsx)(t.t,{fallback:(0,u.jsx)(T,{}),children:(0,u.jsx)(`div`,{className:e._(`relative flex-1 w-full h-full min-h-0`,n.className),children:(0,u.jsx)(d.DndContext,{sensors:M,collisionDetection:d.closestCenter,onDragEnd:j,children:(0,u.jsx)(D,{items:l,expandedNodes:r,selectedNodes:a,checkedNodes:o,indeterminateNodes:s,loadingNodes:c,onToggleExpand:p,onToggleSelect:m,onToggleCheck:h,onNodeRename:g,dir:A,showCheckboxes:n.showCheckboxes,allowEditing:n.allowEditing,searchTerm:n.searchTerm,slots:n.slots,slotProps:n.slotProps,allowTextWrap:v,animation:y,checkOnClick:b,fullRowSelect:x,fullRowNavigable:S,onKeyPress:C,onNodeClicked:E,onDrawNode:k,editingNodeId:f,setEditingNodeId:_})})})})};Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return k}});