ezux 1.1.13 → 1.1.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -0
- package/dist/EzContextMenu-9STA_8UL.cjs +1 -0
- package/dist/EzContextMenu-vcwZjlYv.js +288 -0
- package/dist/EzErrorBoundary-C7R4h7QH.cjs +1 -0
- package/dist/EzErrorBoundary-b-fGQvjw.js +74 -0
- package/dist/EzEventModal-C1ItJBxp.cjs +1 -0
- package/dist/EzEventModal-MDtx4Gwd.js +720 -0
- package/dist/EzFlow-B3oi5QvJ.js +2533 -0
- package/dist/EzFlow-BeiFmX7h.cjs +5 -0
- package/dist/EzGroupingPanel-B1B2B3Sc.js +107 -0
- package/dist/EzGroupingPanel-BGHywLsj.cjs +1 -0
- package/dist/EzKanban-CEPmBCZV.js +1589 -0
- package/dist/EzKanban-CsnJ80LW.cjs +2 -0
- package/dist/EzLayout-DYRKNOrI.cjs +1 -0
- package/dist/EzLayout-DyMI9A92.js +6986 -0
- package/dist/EzProvider-Df2qgeDn.js +975 -0
- package/dist/EzProvider-DntSad5M.cjs +1 -0
- package/dist/EzScheduler-CTYXyOG8.js +2737 -0
- package/dist/EzScheduler-CzL68fTe.cjs +1 -0
- package/dist/EzSchedulerQuickAdd-CPSPAjdk.cjs +1 -0
- package/dist/EzSchedulerQuickAdd-wXGn1L1c.js +124 -0
- package/dist/EzSchedulerToolbar-B5iXsdn2.cjs +1 -0
- package/dist/EzSchedulerToolbar-NdKzGgMo.js +306 -0
- package/dist/EzSignature-Bg9jJvHp.cjs +1 -0
- package/dist/EzSignature-CZk-iAb3.js +375 -0
- package/dist/EzTable-Bde5BUoE.cjs +3 -0
- package/dist/EzTable-CaCyWXNv.js +4291 -0
- package/dist/EzTableEditDialog-5CJ-i5FI.js +84 -0
- package/dist/EzTableEditDialog-DAPhmWxI.cjs +1 -0
- package/dist/EzTableFooter-B347PRkZ.js +35 -0
- package/dist/EzTableFooter-ZqHoQKYB.cjs +1 -0
- package/dist/EzTableToolbar-D4Qw-fwb.js +161 -0
- package/dist/EzTableToolbar-DNxAgMdI.cjs +1 -0
- package/dist/EzTreeView-ChsTltti.js +819 -0
- package/dist/EzTreeView-D8k-Wmxa.cjs +1 -0
- package/dist/HighlightText-BZ_1jMaA.js +56 -0
- package/dist/HighlightText-V5NgtV18.cjs +1 -0
- package/dist/KanbanBoard-BzIhmn-2.cjs +1 -0
- package/dist/KanbanBoard-DTsy_GAc.js +1698 -0
- package/dist/NotificationPanel-B0pVgPcO.js +55 -0
- package/dist/NotificationPanel-ulIs4r-0.cjs +1 -0
- package/dist/TooltipWrapper-66yWxRSD.js +44 -0
- package/dist/TooltipWrapper-QRc3qTIG.cjs +1 -0
- package/dist/advanced.cjs +10 -0
- package/dist/advanced.d.ts +2616 -0
- package/dist/advanced.es.js +401 -0
- package/dist/avatar-DOjSWi4R.js +24 -0
- package/dist/avatar-hWg4zkh7.cjs +1 -0
- package/dist/button-BN0DK137.js +42 -0
- package/dist/button-CfngAt_5.cjs +1 -0
- package/dist/calendar-DEtDSI0W.js +112 -0
- package/dist/calendar-DroJGSPS.cjs +1 -0
- package/dist/card-CswobLmE.cjs +1 -0
- package/dist/card-vtDNxeL3.js +50 -0
- package/dist/checkbox-BpxQa4HQ.cjs +1 -0
- package/dist/checkbox-CS_BOaA6.js +22 -0
- package/dist/chunk-D-qHiVGv.cjs +1 -0
- package/dist/date-time-picker-C6i4TdP7.js +127 -0
- package/dist/date-time-picker-CfHnqJDm.cjs +1 -0
- package/dist/dropdown-menu-HrOgNiFv.js +78 -0
- package/dist/dropdown-menu-Xjuk1Xa-.cjs +1 -0
- package/dist/ezux.css +2 -1
- package/dist/flow.cjs +1 -0
- package/dist/flow.d.ts +539 -0
- package/dist/flow.es.js +2 -0
- package/dist/index.cjs +3 -12
- package/dist/index.d.ts +385 -1368
- package/dist/index.es.js +230 -1041
- package/dist/input-BE8Mmo8X.js +13 -0
- package/dist/input-DPWRzn7K.cjs +1 -0
- package/dist/kanban.cjs +1 -1
- package/dist/kanban.es.js +4 -17
- package/dist/label-4cHst7uN.cjs +1 -0
- package/dist/label-BLMeK8-Z.js +14 -0
- package/dist/layout.cjs +1 -1
- package/dist/layout.d.ts +4 -0
- package/dist/layout.es.js +2 -20
- package/dist/mock-services.cjs +1 -0
- package/dist/mock-services.d.ts +273 -0
- package/dist/mock-services.es.js +161 -0
- package/dist/popover--Cf3FJ0g.cjs +1 -0
- package/dist/popover-CbakOivq.js +15 -0
- package/dist/rolldown-runtime-CAFD8bLK.js +11 -0
- package/dist/scheduler.cjs +1 -1
- package/dist/scheduler.d.ts +78 -3
- package/dist/scheduler.es.js +2 -11
- package/dist/scroll-area-CBllCk9n.js +35 -0
- package/dist/scroll-area-COOakfzY.cjs +1 -0
- package/dist/select-1vYIUsge.cjs +1 -0
- package/dist/select-Bes3Q6zL.js +43 -0
- package/dist/signature.cjs +1 -1
- package/dist/signature.es.js +2 -4
- package/dist/table.cjs +1 -1
- package/dist/table.d.ts +78 -24
- package/dist/table.es.js +2 -17
- package/dist/theme-vars.css +143 -135
- package/dist/tooltip-BRCnO0kH.cjs +1 -0
- package/dist/tooltip-CrhCAu6_.js +14 -0
- package/dist/treeview.cjs +1 -1
- package/dist/treeview.es.js +2 -954
- package/dist/useComponentState-CYR9x36s.js +57 -0
- package/dist/useComponentState-DqA-gi3-.cjs +1 -0
- package/dist/useImperativeAPI-CPRA9SCj.js +7 -0
- package/dist/useImperativeAPI-KOlk1Cvt.cjs +1 -0
- package/dist/useInitCoreServices-CRq0kPGA.cjs +1 -0
- package/dist/useInitCoreServices-lkTv2its.js +40 -0
- package/dist/useService-BkqWkhiU.js +10 -0
- package/dist/useService-CKITee_1.cjs +1 -0
- package/dist/useServiceState-BDTGXKyx.cjs +1 -0
- package/dist/useServiceState-CInpkGt2.js +21 -0
- package/dist/utils-DyS9jpam.cjs +1 -0
- package/dist/utils-hFRduYmq.js +8 -0
- package/package.json +42 -16
- package/dist/EzContextMenu-B6HBUjWv.cjs +0 -5
- package/dist/EzContextMenu-BSA_B6Pr.js +0 -3500
- package/dist/EzErrorBoundary-CEdz_hDo.cjs +0 -41
- package/dist/EzErrorBoundary-D4NBadES.js +0 -3727
- package/dist/EzEventModal-BUMp_BFi.js +0 -689
- package/dist/EzEventModal-xzHfzi0O.cjs +0 -1
- package/dist/EzGroupingPanel-BUsIYDRi.js +0 -143
- package/dist/EzGroupingPanel-D0HdSomF.cjs +0 -1
- package/dist/EzSchedulerQuickAdd-C653LTGh.js +0 -118
- package/dist/EzSchedulerQuickAdd-UnOWCpJd.cjs +0 -1
- package/dist/EzSchedulerToolbar-C-5OdRY6.cjs +0 -1
- package/dist/EzSchedulerToolbar-CO5jjDQg.js +0 -240
- package/dist/EzSignature-BaNesxwC.cjs +0 -1
- package/dist/EzSignature-D4EYwo9W.js +0 -419
- package/dist/EzTableEditDialog-Cd948V1C.js +0 -63
- package/dist/EzTableEditDialog-NiOubaMT.cjs +0 -1
- package/dist/EzTableFooter-CWjfGCjL.cjs +0 -1
- package/dist/EzTableFooter-DveD12RC.js +0 -54
- package/dist/EzTableToolbar-Bz8UWv6j.js +0 -246
- package/dist/EzTableToolbar-DHE7Bb1R.cjs +0 -1
- package/dist/HighlightText-8D6KEyBw.js +0 -68
- package/dist/HighlightText-LtZmzCle.cjs +0 -1
- package/dist/NotificationPanel-D2Y-_ahk.js +0 -68
- package/dist/NotificationPanel-zLxrtTGf.cjs +0 -1
- package/dist/TooltipWrapper-BrRTi5EJ.js +0 -2021
- package/dist/TooltipWrapper-DWts4bAI.cjs +0 -1
- package/dist/avatar-BeK0E4mn.js +0 -41
- package/dist/avatar-DZAaTK2f.cjs +0 -1
- package/dist/bell-DAz8P0BR.js +0 -14
- package/dist/bell-DOX2y38e.cjs +0 -1
- package/dist/calendar-BMZ8ddOf.cjs +0 -1
- package/dist/calendar-Dy3rVMW2.js +0 -90
- package/dist/checkbox-B0lGHUyy.cjs +0 -1
- package/dist/checkbox-boJRxICT.js +0 -46
- package/dist/chevron-down-C3s8jU6B.js +0 -5
- package/dist/chevron-down-DZVL7VHW.cjs +0 -1
- package/dist/chevron-left-BFr8XZyF.js +0 -5
- package/dist/chevron-left-HWhRo6IH.cjs +0 -1
- package/dist/circle-alert-77QqFR-z.cjs +0 -1
- package/dist/circle-alert-B2AMDd8N.js +0 -9
- package/dist/circle-x-Cv7bfIC_.js +0 -9
- package/dist/circle-x-DwVXxhXr.cjs +0 -1
- package/dist/date-time-picker-DTxHdPgQ.cjs +0 -1
- package/dist/date-time-picker-Dj2eftJI.js +0 -1636
- package/dist/download-0ZhO2XaW.cjs +0 -1
- package/dist/download-panVHmk6.js +0 -9
- package/dist/ellipsis-CuqNthAj.js +0 -9
- package/dist/ellipsis-CzlqJf-i.cjs +0 -1
- package/dist/grip-vertical-CSyDKBul.js +0 -12
- package/dist/grip-vertical-DZNBW1Dn.cjs +0 -1
- package/dist/index-B3ipEEhH.cjs +0 -2
- package/dist/index-BPPb7bcs.js +0 -3220
- package/dist/index-BQKw_Vho.js +0 -9604
- package/dist/index-C5STgBSy.js +0 -5203
- package/dist/index-C6NfgycP.js +0 -4644
- package/dist/index-D4f2ZdrG.cjs +0 -2
- package/dist/index-DUY1SqMo.cjs +0 -1
- package/dist/index-c1Zg--dt.cjs +0 -7
- package/dist/input-BgM_la4k.cjs +0 -1
- package/dist/input-jYQ5VKNR.js +0 -21
- package/dist/isBefore-C3Y_wbk3.js +0 -15
- package/dist/isBefore-Cp1ttk6q.cjs +0 -1
- package/dist/label-ClOW9UCt.js +0 -55
- package/dist/label-Dx6oDB-X.cjs +0 -1
- package/dist/layers-BA4i1fYX.js +0 -27
- package/dist/layers-xSPd-hz3.cjs +0 -1
- package/dist/popover-BJq1CKmi.cjs +0 -1
- package/dist/popover-Cmlb7w3R.js +0 -341
- package/dist/scroll-area-9fwpVNxT.js +0 -573
- package/dist/scroll-area-CwwZSSA4.cjs +0 -1
- package/dist/select-GxA46anr.cjs +0 -1
- package/dist/select-mDCun_IR.js +0 -35
- package/dist/settings-CvyjK75A.js +0 -31
- package/dist/settings-DKPknrt8.cjs +0 -1
- package/dist/sortable.esm-CsRPuXyD.cjs +0 -1
- package/dist/sortable.esm-CzMCDPet.js +0 -477
- package/dist/tooltip-B41iztKT.cjs +0 -1
- package/dist/tooltip-BCtrEe0z.js +0 -490
- package/dist/useComponentState-C87xXa5d.js +0 -64
- package/dist/useComponentState-DDgGbBXv.cjs +0 -1
- package/dist/useImperativeAPI-DXmCQvPL.js +0 -7
- package/dist/useImperativeAPI-DbZ3owSV.cjs +0 -1
- package/dist/useInitCoreServices-CwXv2p4S.cjs +0 -1
- package/dist/useInitCoreServices-D1WaWlaI.js +0 -3929
- package/dist/useService-8OoezWr8.cjs +0 -1
- package/dist/useService-BUi3uAqE.js +0 -10
- package/dist/useServiceState-BjpCjUn2.cjs +0 -1
- package/dist/useServiceState-VE-viK8b.js +0 -24
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
const e=require(`./chunk-D-qHiVGv.cjs`),t=require(`./utils-DyS9jpam.cjs`),n=require(`./button-CfngAt_5.cjs`),r=require(`./input-DPWRzn7K.cjs`),i=require(`./select-1vYIUsge.cjs`),a=require(`./card-CswobLmE.cjs`);let o=require(`react`);o=e.n(o,1);let s=require(`lucide-react`),c=require(`react/jsx-runtime`),l=require(`@xyflow/react`);var u=o.default.memo(({data:e,selected:n})=>{let{label:r,description:i}=e;return(0,c.jsxs)(`div`,{className:t.t(`group relative flex flex-col items-center gap-1 px-6 py-3 rounded-full`,`border-2 transition-all duration-200`,`bg-emerald-500/10 border-emerald-500/40 text-emerald-500`,`shadow-[0_0_20px_rgba(16,185,129,0.08)]`,n&&`ring-4 ring-emerald-500/20 scale-105 border-emerald-500 shadow-[0_0_30px_rgba(16,185,129,0.2)]`),role:`group`,"aria-label":`Start node: ${r||`Start`}`,children:[(0,c.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,c.jsx)(s.Play,{size:14,className:`fill-emerald-500`}),(0,c.jsx)(`span`,{className:`text-[11px] font-black uppercase tracking-[0.2em]`,children:r||`START`})]}),i&&(0,c.jsx)(`span`,{className:`text-[8px] opacity-50 uppercase tracking-tight`,children:i}),(0,c.jsx)(l.Handle,{type:`source`,position:l.Position.Bottom,className:`!w-4 !h-4 !bg-emerald-500 !border-[3px] !border-background !-bottom-2 shadow-lg shadow-emerald-500/30`,"aria-label":`Output connection`})]})});u.displayName=`StartNode`;var d=o.default.memo(({data:e,selected:n})=>{let{label:r,description:i}=e;return(0,c.jsxs)(`div`,{className:t.t(`group relative flex items-center gap-3 px-6 py-3 rounded-full`,`border-2 transition-all duration-200`,`bg-rose-500/10 border-rose-500/30 text-rose-400`,`shadow-xl`,n&&`ring-4 ring-rose-500/20 scale-105 border-rose-500/60`),role:`group`,"aria-label":`End node: ${r||`End`}`,children:[(0,c.jsx)(l.Handle,{type:`target`,position:l.Position.Top,className:`!w-4 !h-4 !bg-rose-500 !border-[3px] !border-background`,"aria-label":`Input connection`}),(0,c.jsx)(s.Square,{size:10,className:`fill-rose-500 text-rose-500`}),(0,c.jsxs)(`div`,{className:`flex flex-col`,children:[(0,c.jsx)(`span`,{className:`text-[11px] font-black uppercase tracking-[0.2em]`,children:r||`END`}),i&&(0,c.jsx)(`span`,{className:`text-[8px] opacity-40 uppercase tracking-tight`,children:i})]})]})});d.displayName=`EndNode`;var f=o.default.memo(({data:e,selected:n})=>{let{label:r}=e,[i,a]=o.default.useState(!1);return(0,c.jsxs)(`div`,{className:`relative w-full h-full group`,onPointerDownCapture:e=>{let t=e.target.closest(`.react-flow__resize-control`);if(t){let e=t.getAttribute(`data-handlepos`)?.includes(`-`);a(!!e)}},role:`group`,"aria-label":`Decision node: ${r||`Decision`}`,children:[(0,c.jsx)(l.NodeResizer,{color:`oklch(var(--primary))`,isVisible:n,minWidth:100,minHeight:100,keepAspectRatio:i,handleClassName:t.t(`!w-3 !h-3 !bg-white !border-2 transition-all hover:!scale-125 !z-[70] shadow-sm`,`data-[handlepos^='top-']:!rounded-sm data-[handlepos^='bottom-']:!rounded-sm !border-indigo-600`,`data-[handlepos='top']:!rounded-full data-[handlepos='bottom']:!rounded-full data-[handlepos='left']:!rounded-full data-[handlepos='right']:!rounded-full !border-slate-400`),lineClassName:`!border-indigo-500/30`}),(0,c.jsx)(l.Handle,{type:`target`,position:l.Position.Top,className:`!w-4 !h-4 !bg-amber-500 !border-2 !border-background !z-50`,style:{top:-8},"aria-label":`Input connection`}),(0,c.jsx)(l.Handle,{type:`source`,position:l.Position.Right,id:`yes`,className:`!w-4 !h-4 !bg-emerald-500 !border-2 !border-background !z-50`,style:{right:-8,top:`50%`},"aria-label":`Yes path`}),(0,c.jsx)(l.Handle,{type:`source`,position:l.Position.Bottom,id:`no`,className:`!w-4 !h-4 !bg-rose-500 !border-2 !border-background !z-50`,style:{bottom:-8},"aria-label":`No path`}),(0,c.jsx)(`div`,{className:t.t(`absolute inset-0 transition-all duration-200`,`border-2 border-amber-500/40 bg-amber-500/10 backdrop-blur-xl`,n&&`border-amber-500 bg-amber-500/20 shadow-[0_0_30px_rgba(245,158,11,0.3)]`),style:{clipPath:`polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)`}}),(0,c.jsxs)(`div`,{className:`absolute inset-0 flex flex-col items-center justify-center z-10 pointer-events-none px-6`,children:[(0,c.jsx)(`span`,{className:`text-[8px] uppercase font-black tracking-widest text-amber-500/80 mb-0.5`,children:`Decision`}),(0,c.jsx)(`span`,{className:`text-[11px] font-bold leading-tight text-foreground text-center max-w-[70px] truncate`,children:r})]}),(0,c.jsx)(`div`,{className:`absolute -right-8 top-1/2 -translate-y-1/2 text-[9px] font-black text-emerald-400 pointer-events-none tracking-widest select-none z-20`,children:`YES`}),(0,c.jsx)(`div`,{className:`absolute -bottom-5 left-1/2 -translate-x-1/2 text-[9px] font-black text-rose-400 pointer-events-none tracking-widest select-none z-20`,children:`NO`})]})});f.displayName=`DecisionNode`;var p=o.default.memo(({data:e,selected:n})=>{let{label:r,description:i,maxIterations:u}=e,[d,f]=o.default.useState(!1);return(0,c.jsxs)(`div`,{className:`w-full h-full relative group`,onPointerDownCapture:e=>{let t=e.target.closest(`.react-flow__resize-control`);if(t){let e=t.getAttribute(`data-handlepos`)?.includes(`-`);f(!!e)}},children:[(0,c.jsx)(l.NodeResizer,{color:`oklch(var(--primary))`,isVisible:n,minWidth:160,minHeight:80,keepAspectRatio:d,handleClassName:t.t(`!w-3 !h-3 !bg-white !border-2 transition-all hover:!scale-125 !z-[70] shadow-sm`,`data-[handlepos^='top-']:!rounded-sm data-[handlepos^='bottom-']:!rounded-sm !border-indigo-600`,`data-[handlepos='top']:!rounded-full data-[handlepos='bottom']:!rounded-full data-[handlepos='left']:!rounded-full data-[handlepos='right']:!rounded-full !border-slate-400`),lineClassName:`!border-indigo-500/30`}),(0,c.jsxs)(a.t,{className:t.t(`w-full h-full rounded-2xl transition-all duration-200 overflow-hidden`,`border-2 border-orange-500/30 bg-orange-500/5 backdrop-blur-xl`,n&&`ring-2 ring-orange-500/40 border-orange-500 shadow-lg`),role:`group`,"aria-label":`Loop node: ${r||`Loop`}`,children:[(0,c.jsx)(l.Handle,{type:`target`,position:l.Position.Top,className:`!w-3.5 !h-3.5 !bg-orange-500 !border-[3px] !border-background !z-50`,"aria-label":`Input connection`}),(0,c.jsxs)(a.a,{className:`p-4 space-y-1`,children:[(0,c.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,c.jsx)(`div`,{className:`flex items-center justify-center w-8 h-8 rounded-lg bg-orange-500/15`,children:(0,c.jsx)(s.Repeat,{size:16,className:`text-orange-500`})}),(0,c.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,c.jsx)(`div`,{className:`text-[9px] uppercase font-bold tracking-widest text-orange-500/70`,children:`Loop`}),(0,c.jsx)(a.o,{className:`text-sm font-semibold truncate`,children:r})]})]}),i&&(0,c.jsx)(a.r,{className:`text-xs line-clamp-2`,children:i}),u&&(0,c.jsxs)(`div`,{className:`text-[10px] text-orange-400/80 font-medium`,children:[`Max: `,u,` iterations`]})]}),(0,c.jsx)(l.Handle,{type:`source`,position:l.Position.Bottom,className:`!w-3.5 !h-3.5 !bg-orange-500 !border-[3px] !border-background !z-50`,"aria-label":`Output connection`}),(0,c.jsx)(l.Handle,{type:`source`,position:l.Position.Left,id:`loop-back`,className:`!w-3 !h-3 !bg-orange-400/70 !border-2 !border-background !z-50`,"aria-label":`Loop back connection`})]})]})});p.displayName=`LoopNode`;var m=o.default.memo(({data:e,selected:n})=>{let{label:r,description:i,actionType:u}=e,[d,f]=o.default.useState(!1);return(0,c.jsxs)(`div`,{className:`w-full h-full relative group`,onPointerDownCapture:e=>{let t=e.target.closest(`.react-flow__resize-control`);if(t){let e=t.getAttribute(`data-handlepos`)?.includes(`-`);f(!!e)}},children:[(0,c.jsx)(l.NodeResizer,{color:`oklch(var(--primary))`,isVisible:n,minWidth:160,minHeight:80,keepAspectRatio:d,handleClassName:t.t(`!w-3 !h-3 !bg-white !border-2 transition-all hover:!scale-125 !z-[70] shadow-sm`,`data-[handlepos^='top-']:!rounded-sm data-[handlepos^='bottom-']:!rounded-sm !border-indigo-600`,`data-[handlepos='top']:!rounded-full data-[handlepos='bottom']:!rounded-full data-[handlepos='left']:!rounded-full data-[handlepos='right']:!rounded-full !border-slate-400`),lineClassName:`!border-indigo-500/30`}),(0,c.jsxs)(a.t,{className:t.t(`w-full h-full rounded-2xl transition-all duration-200 overflow-hidden`,`border-2 border-blue-500/30 bg-blue-500/5 backdrop-blur-xl`,n&&`ring-2 ring-blue-500/40 border-blue-500 shadow-lg`),role:`group`,"aria-label":`Action node: ${r||`Action`}`,children:[(0,c.jsx)(l.Handle,{type:`target`,position:l.Position.Top,className:`!w-3.5 !h-3.5 !bg-blue-500 !border-[3px] !border-background !z-50`,"aria-label":`Input connection`}),(0,c.jsxs)(a.a,{className:`p-4 space-y-1`,children:[(0,c.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,c.jsx)(`div`,{className:`flex items-center justify-center w-8 h-8 rounded-lg bg-blue-500/15`,children:(0,c.jsx)(s.Zap,{size:16,className:`text-blue-500`})}),(0,c.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,c.jsx)(`div`,{className:`text-[9px] uppercase font-bold tracking-widest text-blue-500/70`,children:`Action`}),(0,c.jsx)(a.o,{className:`text-sm font-semibold truncate`,children:r})]})]}),i&&(0,c.jsx)(a.r,{className:`text-xs line-clamp-2`,children:i}),u&&(0,c.jsx)(`div`,{className:`text-[10px] text-blue-400/80 font-medium mt-1`,children:u})]}),(0,c.jsx)(l.Handle,{type:`source`,position:l.Position.Bottom,className:`!w-3.5 !h-3.5 !bg-blue-500 !border-[3px] !border-background !z-50`,"aria-label":`Output connection`})]})]})});m.displayName=`ActionNode`;var h=o.default.memo(({data:e,selected:n})=>{let{label:r,description:i,method:u,url:d}=e,[f,p]=o.default.useState(!1);return(0,c.jsxs)(`div`,{className:`w-full h-full relative group`,onPointerDownCapture:e=>{let t=e.target.closest(`.react-flow__resize-control`);if(t){let e=t.getAttribute(`data-handlepos`)?.includes(`-`);p(!!e)}},children:[(0,c.jsx)(l.NodeResizer,{color:`oklch(var(--primary))`,isVisible:n,minWidth:200,minHeight:100,keepAspectRatio:f,handleClassName:t.t(`!w-3 !h-3 !bg-white !border-2 transition-all hover:!scale-125 !z-[70] shadow-sm`,`data-[handlepos^='top-']:!rounded-sm data-[handlepos^='bottom-']:!rounded-sm !border-indigo-600`,`data-[handlepos='top']:!rounded-full data-[handlepos='bottom']:!rounded-full data-[handlepos='left']:!rounded-full data-[handlepos='right']:!rounded-full !border-slate-400`),lineClassName:`!border-indigo-500/30`}),(0,c.jsxs)(a.t,{className:t.t(`w-full h-full rounded-2xl transition-all duration-200 overflow-hidden`,`border-2 border-indigo-500/30 bg-indigo-500/5 backdrop-blur-xl`,n&&`ring-2 ring-indigo-500/40 border-indigo-500 shadow-lg`),role:`group`,"aria-label":`Request node: ${r||`HTTP Request`}`,children:[(0,c.jsx)(l.Handle,{type:`target`,position:l.Position.Top,className:`!w-3.5 !h-3.5 !bg-indigo-500 !border-[3px] !border-background !z-50`,"aria-label":`Input connection`}),(0,c.jsxs)(a.a,{className:`p-4 space-y-1`,children:[(0,c.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,c.jsx)(`div`,{className:`flex items-center justify-center w-8 h-8 rounded-lg bg-indigo-500/15`,children:(0,c.jsx)(s.Cloud,{size:16,className:`text-indigo-500`})}),(0,c.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,c.jsx)(`div`,{className:`text-[9px] uppercase font-bold tracking-widest text-indigo-500/70`,children:`HTTP Request`}),(0,c.jsx)(a.o,{className:`text-sm font-semibold truncate`,children:r})]})]}),i&&(0,c.jsx)(a.r,{className:`text-xs line-clamp-2`,children:i}),(u||d)&&(0,c.jsxs)(`div`,{className:`flex items-center gap-2 mt-1`,children:[u&&(0,c.jsx)(`span`,{className:`text-[9px] font-black uppercase tracking-wider px-2 py-0.5 rounded-full bg-indigo-500/20 text-indigo-400`,children:u}),d&&(0,c.jsx)(`span`,{className:`text-[10px] text-muted-foreground truncate max-w-[120px]`,children:d})]})]}),(0,c.jsx)(l.Handle,{type:`source`,position:l.Position.Bottom,className:`!w-3.5 !h-3.5 !bg-indigo-500 !border-[3px] !border-background !z-50`,"aria-label":`Output connection`})]})]})});h.displayName=`RequestNode`;var g=o.default.memo(({data:e,selected:n})=>{let{label:r,description:i,duration:u,unit:d}=e,f=()=>u?`${u} ${d||`minutes`}`:null,[p,m]=o.default.useState(!1);return(0,c.jsxs)(`div`,{className:`w-full h-full relative group`,onPointerDownCapture:e=>{let t=e.target.closest(`.react-flow__resize-control`);if(t){let e=t.getAttribute(`data-handlepos`)?.includes(`-`);m(!!e)}},children:[(0,c.jsx)(l.NodeResizer,{color:`oklch(var(--primary))`,isVisible:n,minWidth:160,minHeight:80,keepAspectRatio:p,handleClassName:t.t(`!w-3 !h-3 !bg-white !border-2 transition-all hover:!scale-125 !z-[70] shadow-sm`,`data-[handlepos^='top-']:!rounded-sm data-[handlepos^='bottom-']:!rounded-sm !border-indigo-600`,`data-[handlepos='top']:!rounded-full data-[handlepos='bottom']:!rounded-full data-[handlepos='left']:!rounded-full data-[handlepos='right']:!rounded-full !border-slate-400`),lineClassName:`!border-indigo-500/30`}),(0,c.jsxs)(a.t,{className:t.t(`w-full h-full rounded-2xl transition-all duration-200 overflow-hidden`,`border-2 border-gray-400/30 bg-gray-500/5 backdrop-blur-xl`,n&&`ring-2 ring-gray-400/40 border-gray-400 shadow-lg`),role:`group`,"aria-label":`Delay node: ${r||`Delay`}`,children:[(0,c.jsx)(l.Handle,{type:`target`,position:l.Position.Top,className:`!w-3.5 !h-3.5 !bg-gray-400 !border-[3px] !border-background !z-50`,"aria-label":`Input connection`}),(0,c.jsxs)(a.a,{className:`p-4 space-y-1`,children:[(0,c.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,c.jsx)(`div`,{className:`flex items-center justify-center w-8 h-8 rounded-lg bg-gray-500/15`,children:(0,c.jsx)(s.Clock,{size:16,className:`text-gray-400`})}),(0,c.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,c.jsx)(`div`,{className:`text-[9px] uppercase font-bold tracking-widest text-gray-400/70`,children:`Delay`}),(0,c.jsx)(a.o,{className:`text-sm font-semibold truncate`,children:r})]})]}),i&&(0,c.jsx)(a.r,{className:`text-xs line-clamp-2`,children:i}),f()&&(0,c.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[10px] text-gray-400/80 font-medium mt-1`,children:[(0,c.jsx)(s.Clock,{size:10}),f()]})]}),(0,c.jsx)(l.Handle,{type:`source`,position:l.Position.Bottom,className:`!w-3.5 !h-3.5 !bg-gray-400 !border-[3px] !border-background !z-50`,"aria-label":`Output connection`})]})]})});g.displayName=`DelayNode`;var _=o.default.memo(({data:e,selected:n})=>{let{label:r,description:i,approverRole:u,slaHours:d}=e,[f,p]=o.default.useState(!1);return(0,c.jsxs)(`div`,{className:`w-full h-full relative group`,onPointerDownCapture:e=>{let t=e.target.closest(`.react-flow__resize-control`);if(t){let e=t.getAttribute(`data-handlepos`)?.includes(`-`);p(!!e)}},children:[(0,c.jsx)(l.NodeResizer,{color:`oklch(var(--primary))`,isVisible:n,minWidth:200,minHeight:100,keepAspectRatio:f,handleClassName:t.t(`!w-3 !h-3 !bg-white !border-2 transition-all hover:!scale-125 !z-[70] shadow-sm`,`data-[handlepos^='top-']:!rounded-sm data-[handlepos^='bottom-']:!rounded-sm !border-indigo-600`,`data-[handlepos='top']:!rounded-full data-[handlepos='bottom']:!rounded-full data-[handlepos='left']:!rounded-full data-[handlepos='right']:!rounded-full !border-slate-400`),lineClassName:`!border-indigo-500/30`}),(0,c.jsxs)(a.t,{className:t.t(`w-full h-full rounded-2xl transition-all duration-200 overflow-hidden`,`border-2 border-purple-500/30 bg-purple-500/5 backdrop-blur-xl`,n&&`ring-2 ring-purple-500/40 border-purple-500 shadow-lg`),role:`group`,"aria-label":`Approval node: ${r||`Approval`}`,children:[(0,c.jsx)(l.Handle,{type:`target`,position:l.Position.Top,className:`!w-3.5 !h-3.5 !bg-purple-500 !border-[3px] !border-background !z-50`,"aria-label":`Input connection`}),(0,c.jsxs)(a.a,{className:`p-4 space-y-1`,children:[(0,c.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,c.jsx)(`div`,{className:`flex items-center justify-center w-8 h-8 rounded-lg bg-purple-500/15`,children:(0,c.jsx)(s.User,{size:16,className:`text-purple-500`})}),(0,c.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,c.jsx)(`div`,{className:`text-[9px] uppercase font-bold tracking-widest text-purple-500/70`,children:`Approval`}),(0,c.jsx)(a.o,{className:`text-sm font-semibold truncate`,children:r})]})]}),i&&(0,c.jsx)(a.r,{className:`text-xs line-clamp-2`,children:i}),(0,c.jsxs)(`div`,{className:`flex flex-col gap-1 mt-1`,children:[u&&(0,c.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[10px] text-purple-400/80 font-medium`,children:[(0,c.jsx)(s.User,{size:10}),` `,u]}),d&&(0,c.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[10px] text-purple-400/60 font-medium`,children:[(0,c.jsx)(s.Clock,{size:10}),` `,d,`h SLA`]})]})]}),(0,c.jsx)(l.Handle,{type:`source`,position:l.Position.Bottom,id:`approved`,className:`!w-3.5 !h-3.5 !bg-emerald-500 !border-[3px] !border-background !z-50`,"aria-label":`Approved path`}),(0,c.jsx)(l.Handle,{type:`source`,position:l.Position.Right,id:`rejected`,className:`!w-3 !h-3 !bg-rose-500 !border-2 !border-background !z-50`,"aria-label":`Rejected path`})]})]})});_.displayName=`ApprovalNode`;var v=o.default.memo(({data:e,selected:n})=>{let{label:r,description:i}=e,[a,u]=o.default.useState(!1);return(0,c.jsxs)(`div`,{className:t.t(`w-full h-full rounded-2xl transition-all duration-200 relative group`,`border-2 border-dashed border-muted-foreground/20 bg-muted/5 backdrop-blur-sm`,`p-4`,n&&`ring-2 ring-primary/30 border-primary/40 bg-muted/10`),onPointerDownCapture:e=>{let t=e.target.closest(`.react-flow__resize-control`);if(t){let e=t.getAttribute(`data-handlepos`)?.includes(`-`);u(!!e)}},role:`group`,"aria-label":`Group node: ${r||`Group`}`,children:[(0,c.jsx)(l.NodeResizer,{color:`oklch(var(--primary))`,isVisible:n,minWidth:200,minHeight:150,keepAspectRatio:a,handleClassName:t.t(`!w-3 !h-3 !bg-white !border-2 transition-all hover:!scale-125 !z-[70] shadow-sm`,`data-[handlepos^='top-']:!rounded-sm data-[handlepos^='bottom-']:!rounded-sm !border-indigo-600`,`data-[handlepos='top']:!rounded-full data-[handlepos='bottom']:!rounded-full data-[handlepos='left']:!rounded-full data-[handlepos='right']:!rounded-full !border-slate-400`),lineClassName:`!border-indigo-500/30`}),(0,c.jsxs)(`div`,{className:`flex items-center gap-2 mb-4 pb-2 border-b border-dashed border-muted-foreground/10`,children:[(0,c.jsx)(s.Box,{size:14,className:`text-muted-foreground/60`}),(0,c.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-widest text-muted-foreground/60`,children:r||`Sub-process`})]}),i&&(0,c.jsx)(`p`,{className:`text-[10px] text-muted-foreground/40 mb-4`,children:i}),(0,c.jsx)(l.Handle,{type:`target`,position:l.Position.Top,className:`!w-3 !h-3 !bg-muted-foreground/40 !border-2 !border-background`,"aria-label":`Input connection`}),(0,c.jsx)(l.Handle,{type:`source`,position:l.Position.Bottom,className:`!w-3 !h-3 !bg-muted-foreground/40 !border-2 !border-background`,"aria-label":`Output connection`})]})});v.displayName=`GroupNode`;var y=({sourceX:e,sourceY:t,targetX:r,targetY:i,sourcePosition:a,targetPosition:o,style:u={},markerEnd:d,selected:f,label:p,data:m,id:h,onDelete:g})=>{let[_,v,y]=(0,l.getSmoothStepPath)({sourceX:e,sourceY:t,sourcePosition:a,targetX:r,targetY:i,targetPosition:o,borderRadius:16});return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(l.BaseEdge,{path:_,markerEnd:d,style:{...u,strokeWidth:f?3:2,stroke:f?`oklch(var(--primary))`:`oklch(var(--foreground))`,transition:`stroke-width 0.2s ease, stroke 0.2s ease`}}),(p||m?.label)&&(0,c.jsx)(l.EdgeLabelRenderer,{children:(0,c.jsx)(`div`,{style:{position:`absolute`,transform:`translate(-50%, -50%) translate(${v}px,${y}px)`,pointerEvents:`all`},className:`nodrag nopan`,children:(0,c.jsx)(`div`,{className:`px-3 py-1 rounded-full bg-background/80 backdrop-blur-md border border-border text-[10px] font-bold uppercase tracking-widest text-primary shadow-lg`,children:p||m?.label})})}),f&&(0,c.jsx)(l.EdgeLabelRenderer,{children:(0,c.jsx)(`div`,{style:{position:`absolute`,transform:`translate(-50%, -50%) translate(${v}px,${y+22}px)`,pointerEvents:`all`},className:`nodrag nopan`,children:(0,c.jsx)(n.t,{variant:`destructive`,size:`icon`,className:`w-5 h-5 rounded-full shadow-md`,"aria-label":`Delete edge`,onClick:()=>g?.(h),children:(0,c.jsx)(s.X,{className:`w-3 h-3`})})})})]})};y.displayName=`EzFlowEdge`;var b=({fromX:e,fromY:t,toX:n,toY:r,fromPosition:i,toPosition:a,fromHandle:o})=>{let[s]=(0,l.getSmoothStepPath)({sourceX:e,sourceY:t,sourcePosition:i,targetX:n,targetY:r,targetPosition:a,borderRadius:16}),u=o?.id===`yes`||o?.id===`approved`,d=o?.id===`no`||o?.id===`rejected`,f=o?.id===`loop-back`,p=u?`oklch(0.627 0.154 160.06)`:d?`oklch(0.577 0.245 27.325)`:f?`oklch(0.7 0.15 45)`:`oklch(var(--primary))`,m=u?`YES?`:d?`NO?`:f?`LOOP`:`CONNECT`;return(0,c.jsxs)(`g`,{children:[(0,c.jsx)(`path`,{fill:`none`,stroke:p,strokeWidth:2,d:s,style:{strokeDasharray:`6,4`}}),(0,c.jsx)(`circle`,{cx:n,cy:r,fill:`oklch(var(--background))`,r:4,stroke:p,strokeWidth:1.5}),(0,c.jsx)(`foreignObject`,{x:n+10,y:r-12,width:80,height:30,className:`pointer-events-none`,children:(0,c.jsx)(`div`,{className:`flex items-center`,children:(0,c.jsx)(`div`,{className:`px-2 py-0.5 rounded-full bg-background/80 backdrop-blur-md border border-border text-[8px] font-black uppercase tracking-tighter shadow-xl whitespace-nowrap`,style:{color:p},children:m})})})]})};b.displayName=`EzConnectionLine`;var x=e=>(0,c.jsx)(l.Background,{...e,color:`oklch(var(--border))`,variant:`dots`,gap:24,size:1,className:`opacity-40`});x.displayName=`EzFlowBackground`;var S=e=>(0,c.jsx)(l.Controls,{...e,className:`!bg-card/80 !backdrop-blur-md !border !border-border !shadow-2xl !rounded-2xl !p-1 !flex !flex-row !gap-1 !m-4 !overflow-hidden`,showInteractive:!1,"aria-label":`Canvas zoom and fit controls`});S.displayName=`EzFlowControls`;var C={startNode:u,endNode:d,decisionNode:f,loopNode:p,actionNode:m,requestNode:h,delayNode:g,approvalNode:_,groupNode:v},w=o.default.forwardRef(({nodes:e,edges:n,onNodesChange:r,onEdgesChange:i,onConnect:a,onDrop:s,onDragOver:u,onNodeClick:d,onNodeDoubleClick:f,onEdgeClick:p,onEdgeDelete:m,onPaneClick:h,nodeTypes:g=C,edgeTypes:_,isValidConnection:v,snapToGrid:w=!0,snapGrid:T=[15,15],showGrid:E=!0,fitView:ee=!1,readOnly:D=!1,className:O,style:k,...A},j)=>{let M=o.default.useMemo(()=>_??{ezEdge:e=>(0,c.jsx)(y,{...e,onDelete:m})},[_,m]),N=o.default.useCallback(t=>{if(v)return v(t);if(!t.source||!t.target||t.source===t.target)return!1;let r=new Map(e.map(e=>[e.id,e])),i=new Set,a=[{id:t.target,path:[t.target]}];for(;a.length>0;){let e=a.shift();if(!(!e||i.has(e.id))){i.add(e.id);for(let i of n)if(i.source===e.id){if(i.target===t.source)return[...e.path,i.target].some(e=>r.get(e)?.type===`loopNode`);a.push({id:i.target,path:[...e.path,i.target]})}}}return!0},[n,v,e]);return(0,c.jsx)(`div`,{ref:j,className:t.t(`w-full h-full min-h-0 relative`,O),style:k,...A,children:(0,c.jsxs)(l.ReactFlow,{nodes:e,edges:n,onNodesChange:D?void 0:r,onEdgesChange:D?void 0:i,onConnect:D?void 0:a,onDrop:D?void 0:s,onDragOver:D?void 0:u,onNodeClick:d,onNodeDoubleClick:f,onEdgeClick:p,onPaneClick:h,nodeTypes:g,edgeTypes:M,connectionLineComponent:b,isValidConnection:N,fitView:ee,defaultViewport:{x:0,y:0,zoom:1},panOnScroll:!0,zoomOnScroll:!1,snapToGrid:w,snapGrid:T,nodesDraggable:!D,nodesConnectable:!D,elementsSelectable:!D,defaultEdgeOptions:{type:`ezEdge`,animated:!0,selectable:!0},proOptions:{hideAttribution:!0},children:[E&&(0,c.jsx)(x,{gap:T[0],size:1.5}),(0,c.jsx)(S,{"aria-label":`Canvas controls`})]})})});w.displayName=`EzFlowCanvas`;var T=({category:e,isExpanded:t,onToggle:n,onNodeActivate:r})=>{let i=(e,t)=>{e.dataTransfer.setData(`application/reactflow`,t),e.dataTransfer.setData(`text/plain`,t),e.dataTransfer.effectAllowed=`move`};return(0,c.jsxs)(`div`,{className:`mb-2`,children:[(0,c.jsxs)(`button`,{className:`w-full flex items-center gap-2 px-3 py-2 rounded-xl text-[10px] font-black uppercase tracking-widest text-muted-foreground/60 hover:bg-muted/30 transition-colors`,onClick:n,"aria-expanded":t,"aria-label":`Toggle ${e.categoryKey} section`,children:[t?(0,c.jsx)(s.ChevronDown,{size:12}):(0,c.jsx)(s.ChevronRight,{size:12}),e.categoryKey]}),t&&(0,c.jsx)(`div`,{className:`flex flex-col gap-1.5 mt-1 px-1`,children:e.items.map(e=>(0,c.jsxs)(`div`,{className:`group relative flex items-center gap-3 p-3 rounded-xl bg-background/30 border border-transparent hover:border-primary/30 hover:bg-primary/5 transition-all cursor-grab active:cursor-grabbing`,onDragStart:t=>i(t,e.type),onDoubleClick:()=>r?.(e),onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),r?.(e))},draggable:!0,role:`button`,tabIndex:0,"aria-label":`Drag ${e.labelKey} node`,"data-ezflow-node-type":e.type,children:[(0,c.jsx)(`div`,{className:`absolute left-1 top-1/2 -translate-y-1/2 opacity-0 group-hover:opacity-30 transition-opacity`,children:(0,c.jsx)(s.GripVertical,{size:12})}),(0,c.jsx)(`div`,{className:`flex items-center justify-center w-8 h-8 rounded-lg bg-primary/10 text-primary group-hover:scale-110 transition-transform ml-2`,children:e.icon}),(0,c.jsxs)(`div`,{className:`flex flex-col min-w-0`,children:[(0,c.jsx)(`span`,{className:`text-xs font-bold leading-none mb-0.5 truncate`,children:e.labelKey}),e.descriptionKey&&(0,c.jsx)(`span`,{className:`text-[10px] text-muted-foreground leading-tight line-clamp-1`,children:e.descriptionKey})]})]},e.type))})]})},E=({categories:e,title:r=`Node Library`,className:i,collapsed:a=!1,onCollapsedChange:l,onNodeActivate:u})=>{let[d,f]=o.default.useState(new Set(e.map(e=>e.category))),p=e=>{f(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})};return a?(0,c.jsxs)(`aside`,{className:t.t(`p-2 border-r border-border bg-card/30 backdrop-blur-md flex flex-col items-center`,i),"aria-label":`Node Library (collapsed)`,children:[(0,c.jsx)(n.t,{variant:`ghost`,size:`icon`,className:`rounded-xl mb-2`,onClick:()=>l?.(!1),"aria-label":`Expand node library`,children:(0,c.jsx)(s.PanelLeft,{size:16})}),e.flatMap(e=>e.items.map(e=>(0,c.jsx)(`div`,{className:`w-10 h-10 flex items-center justify-center rounded-xl hover:bg-primary/10 cursor-grab active:cursor-grabbing transition-colors mb-1`,onDragStart:t=>{t.dataTransfer.setData(`application/reactflow`,e.type),t.dataTransfer.setData(`text/plain`,e.type),t.dataTransfer.effectAllowed=`move`},onDoubleClick:()=>u?.(e),onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),u?.(e))},draggable:!0,title:e.labelKey,role:`button`,tabIndex:0,"aria-label":`Drag ${e.labelKey} node`,"data-ezflow-node-type":e.type,children:e.icon},e.type)))]}):(0,c.jsxs)(`aside`,{className:t.t(`w-72 p-4 border-r border-border bg-card/30 backdrop-blur-md flex flex-col gap-2 overflow-y-auto`,i),"aria-label":`Node Library`,children:[(0,c.jsxs)(`div`,{className:`flex items-center justify-between mb-2`,children:[(0,c.jsx)(`div`,{className:`text-[10px] uppercase font-black tracking-widest text-primary/60 px-1`,children:r}),l&&(0,c.jsx)(n.t,{variant:`ghost`,size:`icon`,className:`rounded-xl w-7 h-7`,onClick:()=>l(!0),"aria-label":`Collapse node library`,children:(0,c.jsx)(s.PanelLeftClose,{size:14})})]}),e.map(e=>(0,c.jsx)(T,{category:e,isExpanded:d.has(e.category),onToggle:()=>p(e.category),onNodeActivate:u},e.category))]})};E.displayName=`EzFlowToolbox`;var ee={draft:{className:`bg-amber-500/15 text-amber-500 border-amber-500/30`,label:`Draft`},live:{className:`bg-emerald-500/15 text-emerald-500 border-emerald-500/30`,label:`Live`},archived:{className:`bg-gray-500/15 text-gray-400 border-gray-500/30`,label:`Archived`}},D=({title:e,description:r,status:i=`draft`,isDirty:a=!1,onTitleChange:l,onDescriptionChange:u,onSave:d,onPublish:f,onCancel:p,showGrid:m=!0,onShowGridChange:h,snapToGrid:g=!0,onSnapToGridChange:_,className:v})=>{let[y,b]=o.default.useState(!1),[x,S]=o.default.useState(!1),[C,w]=o.default.useState(e),[T,E]=o.default.useState(r||``),D=o.default.useRef(null),O=o.default.useRef(null);o.default.useEffect(()=>{w(e)},[e]),o.default.useEffect(()=>{E(r||``)},[r]);let k=()=>{b(!1),C!==e&&l?.(C)},A=()=>{S(!1),T!==r&&u?.(T)},j=()=>{a&&!window.confirm(`You have unsaved changes. Discard and exit?`)||p?.()},M=ee[i];return(0,c.jsxs)(`header`,{className:t.t(`h-16 border-b border-border flex items-center justify-between px-6 bg-card/50 backdrop-blur-xl shrink-0`,v),role:`banner`,"aria-label":`Workflow designer header`,children:[(0,c.jsxs)(`div`,{className:`flex items-center gap-4 min-w-0`,children:[(0,c.jsx)(n.t,{variant:`ghost`,size:`icon`,className:`rounded-xl shrink-0`,onClick:j,"aria-label":`Go back`,children:(0,c.jsx)(s.ChevronLeft,{size:18})}),(0,c.jsx)(`div`,{className:`h-6 w-px bg-border shrink-0`}),(0,c.jsxs)(`div`,{className:`flex flex-col min-w-0`,children:[y?(0,c.jsx)(`input`,{ref:D,value:C,onChange:e=>w(e.target.value),onBlur:k,onKeyDown:t=>{t.key===`Enter`&&k(),t.key===`Escape`&&(w(e),b(!1))},className:`text-base font-bold bg-transparent border-none outline-none ring-0 p-0 text-foreground w-full`,autoFocus:!0,"aria-label":`Workflow title`}):(0,c.jsxs)(`button`,{className:`text-base font-bold text-left hover:text-primary transition-colors cursor-text truncate`,onClick:()=>{b(!0),setTimeout(()=>D.current?.focus(),0)},"aria-label":`Workflow title: ${C}. Click to edit`,children:[C||`Untitled Workflow`,a&&(0,c.jsx)(`span`,{className:`ml-2 text-[9px] text-muted-foreground/50 font-normal`,children:`(unsaved)`})]}),x?(0,c.jsx)(`input`,{ref:O,value:T,onChange:e=>E(e.target.value),onBlur:A,onKeyDown:e=>{e.key===`Enter`&&A(),e.key===`Escape`&&(E(r||``),S(!1))},className:`text-[10px] uppercase tracking-widest text-muted-foreground bg-transparent border-none outline-none ring-0 p-0 w-full`,autoFocus:!0,"aria-label":`Workflow description`}):(0,c.jsx)(`button`,{className:`text-[10px] uppercase tracking-widest text-muted-foreground/50 text-left hover:text-muted-foreground transition-colors cursor-text truncate`,onClick:()=>{S(!0),setTimeout(()=>O.current?.focus(),0)},"aria-label":`Description: ${T||`Click to add description`}`,children:T||`Click to add description`})]}),(0,c.jsx)(`div`,{className:t.t(`shrink-0 px-3 py-1 rounded-full border text-[10px] font-bold uppercase tracking-widest`,M.className),role:`status`,"aria-label":`Status: ${M.label}`,children:M.label})]}),(0,c.jsxs)(`div`,{className:`flex items-center gap-6 shrink-0`,children:[(0,c.jsxs)(`div`,{className:`flex items-center gap-4 bg-background/40 px-4 py-1.5 rounded-2xl border border-border/10`,children:[(0,c.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer group`,children:[(0,c.jsx)(`input`,{type:`checkbox`,checked:m,onChange:e=>h?.(e.target.checked),className:`w-4 h-4 rounded border-border text-primary focus:ring-primary/20 transition-all cursor-pointer`}),(0,c.jsx)(`span`,{className:`text-[10px] uppercase tracking-wider font-bold text-muted-foreground group-hover:text-foreground transition-colors`,children:`Grid`})]}),(0,c.jsx)(`div`,{className:`w-px h-4 bg-border/20`}),(0,c.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer group`,children:[(0,c.jsx)(`input`,{type:`checkbox`,checked:g,onChange:e=>_?.(e.target.checked),className:`w-4 h-4 rounded border-border text-primary focus:ring-primary/20 transition-all cursor-pointer`}),(0,c.jsx)(`span`,{className:`text-[10px] uppercase tracking-wider font-bold text-muted-foreground group-hover:text-foreground transition-colors`,children:`Snap`})]})]}),(0,c.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,c.jsxs)(n.t,{variant:`ghost`,className:`rounded-xl h-9 px-4 text-xs gap-2`,onClick:j,"aria-label":`Cancel changes`,children:[(0,c.jsx)(s.X,{size:14}),`Cancel`]}),(0,c.jsxs)(n.t,{className:`rounded-xl h-9 px-6 bg-primary text-primary-foreground gap-2 shadow-lg shadow-primary/20 text-xs font-bold`,onClick:d,"aria-label":`Save workflow`,children:[(0,c.jsx)(s.Save,{size:14}),`Save`]}),f&&(0,c.jsxs)(n.t,{variant:`secondary`,className:`rounded-xl h-9 px-4 text-xs gap-2 font-bold`,onClick:f,"aria-label":`Publish workflow`,children:[(0,c.jsx)(s.Rocket,{size:14}),`Publish`]})]})]})]})};D.displayName=`EzFlowHeader`;var O={nodes:[],edges:[],viewport:{x:0,y:0,zoom:1},metadata:{title:`Untitled Workflow`,status:`draft`,version:1}},k={startNode:{label:`Start`,triggerType:`manual`},endNode:{label:`End`,outcome:`success`},decisionNode:{label:`Decision`,branches:[]},loopNode:{label:`Loop`,iteratorSource:``,maxIterations:10},actionNode:{label:`Action`,actionType:``,config:{}},requestNode:{label:`API Request`,method:`GET`,url:``},delayNode:{label:`Delay`,duration:1,unit:`hours`},approvalNode:{label:`Approval`,approverRole:``},groupNode:{label:`Group`,collapsed:!1}},A={startNode:{type:`startNode`,label:`Start`,description:`Workflow entry point`,category:`flow_control`,icon:(0,c.jsx)(s.Play,{size:16}),component:u,defaultData:k.startNode},endNode:{type:`endNode`,label:`End`,description:`Workflow completion`,category:`flow_control`,icon:(0,c.jsx)(s.CheckCircle2,{size:16}),component:d,defaultData:k.endNode},decisionNode:{type:`decisionNode`,label:`Decision`,description:`Branch by condition`,category:`logic`,icon:(0,c.jsx)(s.Diamond,{size:16}),component:f,defaultData:k.decisionNode,requiredDataKeys:[`branches`]},loopNode:{type:`loopNode`,label:`Loop`,description:`Repeat a path`,category:`flow_control`,icon:(0,c.jsx)(s.GitBranch,{size:16}),component:p,defaultData:k.loopNode,requiredDataKeys:[`iteratorSource`]},actionNode:{type:`actionNode`,label:`Action`,description:`Run an action`,category:`execution`,icon:(0,c.jsx)(s.Circle,{size:16}),component:m,defaultData:k.actionNode,requiredDataKeys:[`actionType`]},requestNode:{type:`requestNode`,label:`API Request`,description:`Call an HTTP endpoint`,category:`execution`,icon:(0,c.jsx)(s.Send,{size:16}),component:h,defaultData:k.requestNode,requiredDataKeys:[`url`]},delayNode:{type:`delayNode`,label:`Delay`,description:`Pause execution`,category:`logic`,icon:(0,c.jsx)(s.Clock,{size:16}),component:g,defaultData:k.delayNode,requiredDataKeys:[`duration`]},approvalNode:{type:`approvalNode`,label:`Approval`,description:`Wait for a person`,category:`human`,icon:(0,c.jsx)(s.Hand,{size:16}),component:_,defaultData:k.approvalNode,requiredDataKeys:[`approverRole`]},groupNode:{type:`groupNode`,label:`Group`,description:`Organize nodes`,category:`structural`,icon:(0,c.jsx)(s.SquareStack,{size:16}),component:v,defaultData:k.groupNode}},j=[`flow_control`,`logic`,`execution`,`human`,`structural`],M={flow_control:`Flow`,logic:`Logic`,execution:`Work`,human:`Human`,structural:`Structure`},N=e=>({...e,nodes:e.nodes.map(e=>({...e,data:{...e.data}})),edges:e.edges.map(e=>({...e,data:e.data?{...e.data}:e.data})),metadata:e.metadata?{...e.metadata}:void 0,viewport:e.viewport?{...e.viewport}:void 0}),te=e=>e==null||e===``||Array.isArray(e)&&e.length===0,ne=(e,t)=>t.filter(t=>t.source===e).map(e=>e.target),re=(e=A)=>{let t=new Map;return Object.values(e).forEach(e=>{let n=t.get(e.category)??{categoryKey:M[e.category]??e.category,category:e.category,items:[]};n.items.push({type:e.type,labelKey:e.label,descriptionKey:e.description,category:e.category,icon:e.icon??(0,c.jsx)(s.Circle,{size:16}),defaultData:e.defaultData}),t.set(e.category,n)}),Array.from(t.values()).sort((e,t)=>j.indexOf(e.category)-j.indexOf(t.category))},P=(e,t=A)=>{let n=[],r=e.nodes.filter(e=>e.type===`startNode`),i=e.nodes.filter(e=>e.type===`endNode`),a=new Set(i.map(e=>e.id)),o=new Map(e.nodes.map(e=>[e.id,e])),s=new Map,c=new Map;e.edges.forEach(e=>{s.set(e.target,(s.get(e.target)??0)+1),c.set(e.source,(c.get(e.source)??0)+1)}),r.length===0&&n.push({code:`missing_start`,severity:`error`,message:`Workflow requires a start node.`}),i.length===0&&n.push({code:`missing_end`,severity:`error`,message:`Workflow requires an end node.`}),e.nodes.forEach(r=>{r.type!==`startNode`&&r.type!==`groupNode`&&(s.get(r.id)??0)===0&&n.push({code:`orphan_node`,severity:`error`,message:`Node has no incoming path.`,nodeId:r.id});let i=t[String(r.type??``)];if(i?.requiredDataKeys?.forEach(e=>{te(r.data?.[e])&&n.push({code:`missing_required_config`,severity:`error`,message:`${i.label} requires ${e}.`,nodeId:r.id,field:e})}),r.data?.label||n.push({code:`missing_required_config`,severity:`error`,message:`Node label is required.`,nodeId:r.id,field:`label`}),r.type===`decisionNode`){let e=Array.isArray(r.data?.branches)?r.data.branches:[];(e.length<2||(c.get(r.id)??0)<e.length)&&n.push({code:`missing_decision_branch`,severity:`error`,message:`Decision nodes require branch coverage for each outcome.`,nodeId:r.id,field:`branches`})}n.push(...i?.validate?.(r,e)??[])}),e.nodes.forEach(t=>{if(t.type===`endNode`||t.type===`groupNode`)return;let r=new Set,i=[t.id],o=!1;for(;i.length>0;){let t=i.shift();if(!(!t||r.has(t))){if(r.add(t),a.has(t)){o=!0;break}i.push(...ne(t,e.edges))}}o||n.push({code:`missing_end_path`,severity:`error`,message:`Node has no path to an end node.`,nodeId:t.id})});let l=new Set,u=new Set,d=(t,r)=>{if(l.has(t)){r.slice(r.indexOf(t)).some(e=>o.get(e)?.type===`loopNode`)||n.push({code:`invalid_cycle`,severity:`error`,message:`Workflow cycles require a loop node.`,nodeId:t});return}u.has(t)||(l.add(t),ne(t,e.edges).forEach(e=>d(e,[...r,e])),l.delete(t),u.add(t))};return e.nodes.forEach(e=>d(e.id,[e.id])),{valid:!n.some(e=>e.severity===`error`),issues:n}},ie=P,F=e=>e==null?``:String(e),I=e=>e.split(`
|
|
2
|
+
`).map(e=>e.trim()).filter(Boolean).reduce((e,t)=>{let[n,...r]=t.split(`:`);return n&&r.length>0&&(e[n.trim()]=r.join(`:`).trim()),e},{}),ae=e=>e&&typeof e==`object`?Object.entries(e).map(([e,t])=>`${e}: ${t}`).join(`
|
|
3
|
+
`):``,oe=({node:e,registry:o,issues:l,readOnly:u,onChange:d,onDelete:f,onClose:p,className:m})=>{if(!e)return(0,c.jsxs)(`aside`,{className:t.t(`w-80 border-l border-border bg-card/35 p-4`,m),"aria-label":`Workflow inspector`,children:[(0,c.jsx)(`div`,{className:`text-xs font-bold uppercase tracking-wide text-muted-foreground`,children:`Inspector`}),(0,c.jsx)(`div`,{className:`mt-6 rounded-lg border border-dashed border-border p-4 text-sm text-muted-foreground`,children:`Select a node to edit its configuration.`})]});let h=o[String(e.type??``)],g=e.data,_=h?.editor,v=(e,n,r)=>(0,c.jsxs)(`label`,{className:`grid gap-1.5`,children:[(0,c.jsx)(`span`,{className:t.t(`text-[11px] font-semibold uppercase tracking-wide text-muted-foreground`,(r?l.some(e=>e.field===r):!1)&&`text-destructive`),children:e}),n]}),y=e=>d(e);return(0,c.jsxs)(`aside`,{className:t.t(`w-80 border-l border-border bg-card/35 p-4 overflow-y-auto`,m),"aria-label":`Workflow inspector`,children:[(0,c.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,c.jsxs)(`div`,{className:`min-w-0`,children:[(0,c.jsx)(`div`,{className:`text-xs font-bold uppercase tracking-wide text-muted-foreground`,children:`Inspector`}),(0,c.jsx)(`div`,{className:`truncate text-sm font-semibold`,children:h?.label??e.type??`Node`})]}),(0,c.jsx)(n.t,{variant:`ghost`,size:`icon`,onClick:p,"aria-label":`Close inspector`,children:(0,c.jsx)(s.X,{size:16})})]}),(0,c.jsxs)(`div`,{className:`mt-4 grid gap-4`,children:[v(`Label`,(0,c.jsx)(r.t,{value:F(g.label),onChange:e=>y({label:e.target.value}),disabled:u}),`label`),v(`Description`,(0,c.jsx)(a.s,{value:F(g.description),onChange:e=>y({description:e.target.value}),disabled:u})),(()=>{if(_)return(0,c.jsx)(_,{node:e,data:g,onChange:y,readOnly:u,issues:l});switch(e.type){case`startNode`:return v(`Trigger`,(0,c.jsxs)(i.t,{value:F(`triggerType`in g?g.triggerType:`manual`),onValueChange:u?void 0:e=>y({triggerType:e}),children:[(0,c.jsx)(i.i,{children:(0,c.jsx)(i.a,{})}),(0,c.jsxs)(i.n,{children:[(0,c.jsx)(i.r,{value:`manual`,children:`Manual`}),(0,c.jsx)(i.r,{value:`scheduled`,children:`Scheduled`}),(0,c.jsx)(i.r,{value:`webhook`,children:`Webhook`})]})]}));case`endNode`:return v(`Outcome`,(0,c.jsxs)(i.t,{value:F(`outcome`in g?g.outcome:`success`),onValueChange:u?void 0:e=>y({outcome:e}),children:[(0,c.jsx)(i.i,{children:(0,c.jsx)(i.a,{})}),(0,c.jsxs)(i.n,{children:[(0,c.jsx)(i.r,{value:`success`,children:`Success`}),(0,c.jsx)(i.r,{value:`failure`,children:`Failure`}),(0,c.jsx)(i.r,{value:`cancelled`,children:`Cancelled`})]})]}));case`decisionNode`:return(0,c.jsxs)(c.Fragment,{children:[v(`Condition`,(0,c.jsx)(a.s,{value:F(`condition`in g?g.condition:``),onChange:e=>y({condition:e.target.value}),disabled:u})),v(`Branches`,(0,c.jsx)(a.s,{value:(`branches`in g&&Array.isArray(g.branches)?g.branches:[]).map(e=>e.label).join(`
|
|
4
|
+
`),onChange:e=>y({branches:e.target.value.split(`
|
|
5
|
+
`).filter(Boolean).map((e,t)=>({id:`branch-${t+1}`,label:e}))}),disabled:u}),`branches`)]});case`loopNode`:return(0,c.jsxs)(c.Fragment,{children:[v(`Iterator source`,(0,c.jsx)(r.t,{value:F(`iteratorSource`in g?g.iteratorSource:``),onChange:e=>y({iteratorSource:e.target.value}),disabled:u}),`iteratorSource`),v(`Max iterations`,(0,c.jsx)(r.t,{type:`number`,min:1,value:F(`maxIterations`in g?g.maxIterations:10),onChange:e=>y({maxIterations:Number(e.target.value)}),disabled:u}))]});case`actionNode`:return v(`Action type`,(0,c.jsx)(r.t,{value:F(`actionType`in g?g.actionType:``),onChange:e=>y({actionType:e.target.value}),disabled:u}),`actionType`);case`requestNode`:return(0,c.jsxs)(c.Fragment,{children:[v(`Method`,(0,c.jsxs)(i.t,{value:F(`method`in g?g.method:`GET`),onValueChange:u?void 0:e=>y({method:e}),children:[(0,c.jsx)(i.i,{children:(0,c.jsx)(i.a,{})}),(0,c.jsxs)(i.n,{children:[(0,c.jsx)(i.r,{value:`GET`,children:`GET`}),(0,c.jsx)(i.r,{value:`POST`,children:`POST`}),(0,c.jsx)(i.r,{value:`PUT`,children:`PUT`}),(0,c.jsx)(i.r,{value:`PATCH`,children:`PATCH`}),(0,c.jsx)(i.r,{value:`DELETE`,children:`DELETE`})]})]})),v(`URL`,(0,c.jsx)(r.t,{value:F(`url`in g?g.url:``),onChange:e=>y({url:e.target.value}),disabled:u}),`url`),v(`Headers`,(0,c.jsx)(a.s,{value:ae(`headers`in g?g.headers:void 0),onChange:e=>y({headers:I(e.target.value)}),disabled:u}))]});case`delayNode`:return(0,c.jsxs)(c.Fragment,{children:[v(`Duration`,(0,c.jsx)(r.t,{type:`number`,min:1,value:F(`duration`in g?g.duration:1),onChange:e=>y({duration:Number(e.target.value)}),disabled:u}),`duration`),v(`Unit`,(0,c.jsxs)(i.t,{value:F(`unit`in g?g.unit:`hours`),onValueChange:u?void 0:e=>y({unit:e}),children:[(0,c.jsx)(i.i,{children:(0,c.jsx)(i.a,{})}),(0,c.jsxs)(i.n,{children:[(0,c.jsx)(i.r,{value:`seconds`,children:`Seconds`}),(0,c.jsx)(i.r,{value:`minutes`,children:`Minutes`}),(0,c.jsx)(i.r,{value:`hours`,children:`Hours`}),(0,c.jsx)(i.r,{value:`days`,children:`Days`})]})]}))]});case`approvalNode`:return(0,c.jsxs)(c.Fragment,{children:[v(`Approver role`,(0,c.jsx)(r.t,{value:F(`approverRole`in g?g.approverRole:``),onChange:e=>y({approverRole:e.target.value}),disabled:u}),`approverRole`),v(`Escalation role`,(0,c.jsx)(r.t,{value:F(`escalationRole`in g?g.escalationRole:``),onChange:e=>y({escalationRole:e.target.value}),disabled:u})),v(`SLA hours`,(0,c.jsx)(r.t,{type:`number`,min:1,value:F(`slaHours`in g?g.slaHours:``),onChange:e=>y({slaHours:Number(e.target.value)}),disabled:u}))]});default:return v(`Description`,(0,c.jsx)(a.s,{value:F(g.description),onChange:e=>y({description:e.target.value}),disabled:u}))}})()]}),l.length>0&&(0,c.jsx)(`div`,{className:`mt-4 grid gap-2 rounded-lg border border-destructive/30 bg-destructive/5 p-3`,children:l.map((e,t)=>(0,c.jsxs)(`div`,{className:`flex gap-2 text-xs text-destructive`,children:[(0,c.jsx)(s.AlertCircle,{size:14,className:`mt-0.5 shrink-0`}),(0,c.jsx)(`span`,{children:e.message})]},`${e.code}-${t}`))}),!u&&(0,c.jsxs)(n.t,{variant:`destructive`,className:`mt-4 w-full gap-2`,onClick:f,children:[(0,c.jsx)(s.Trash2,{size:14}),`Delete node`]})]})},se=o.default.forwardRef((e,r)=>{let{workflow:i,defaultWorkflow:a=O,workflowId:u,service:d,nodeRegistry:f,onWorkflowChange:p,onNodeAdd:m,onNodeUpdate:h,onNodeDelete:g,onConnectionCreate:_,onValidationChange:v,onSave:y,onPublish:b,onError:x,title:S,description:C,status:T,toolboxTitle:ee=`Node Library`,showHeader:k=!0,showToolbox:j=!0,showInspector:M=!0,showValidationPanel:te=!0,showActionBar:ne=!0,autoValidate:ie=!0,readOnly:F=!1,showGrid:I=!0,snapToGrid:ae=!0,fitView:se=!0,exportFileName:L=`workflow.json`,className:ce,classNames:R,...z}=e,B=o.default.useMemo(()=>({...A,...f}),[f]),le=o.default.useMemo(()=>{let e={};return Object.values(B).forEach(t=>{t.component&&(e[t.type]=t.component)}),e},[B]),ue=o.default.useMemo(()=>re(B),[B]),V=i!==void 0,[de,fe]=o.default.useState(()=>N(a)),[pe,me]=o.default.useState(I),[he,ge]=o.default.useState(ae),[_e,ve]=o.default.useState(!1),[ye,H]=o.default.useState(null),[U,W]=o.default.useState(()=>P(i??de,B)),[be,xe]=o.default.useState(!1),[Se,Ce]=o.default.useState(!1),[we,Te]=o.default.useState(!1),[Ee,De]=o.default.useState(void 0),[Oe,G]=o.default.useState(null),ke=o.default.useRef(null),K=o.default.useRef(i??de),q=o.default.useRef([]),J=o.default.useRef([]),{fitView:Ae,screenToFlowPosition:je}=(0,l.useReactFlow)(),Y=i??de;o.default.useEffect(()=>{K.current=Y},[Y]),o.default.useEffect(()=>me(I),[I]),o.default.useEffect(()=>ge(ae),[ae]);let X=o.default.useCallback((e=K.current)=>P(e,B),[B]),Z=o.default.useCallback((e,t=!0)=>{let n=N({...e,metadata:{...e.metadata,updatedAt:new Date().toISOString()}});if(t&&(q.current=[...q.current,N(K.current)],J.current=[]),K.current=n,V||fe(n),p?.(n),ie){let e=X(n);W(e),v?.(e)}},[ie,V,v,p,X]),Q=o.default.useCallback(e=>{let t=B[String(e.type)],n={id:e.id??`${e.type}-${Date.now()}`,type:e.type,position:e.position??{x:120,y:120},data:{...t?.defaultData??{label:e.type},...e.data??{}}},r={...K.current,nodes:[...K.current.nodes,n]};Z(r),m?.({node:n,workflow:N(r)})},[Z,B,m]),Me=o.default.useCallback((e,t)=>{let n,r=K.current.nodes.map(r=>r.id===e?(n={...r,data:{...r.data,...t}},n):r);if(!n)return;let i={...K.current,nodes:r};Z(i),h?.({node:n,workflow:N(i)})},[Z,h]),Ne=o.default.useCallback(e=>{let t=K.current.nodes.find(t=>t.id===e);if(!t)return;let n={...K.current,nodes:K.current.nodes.filter(t=>t.id!==e),edges:K.current.edges.filter(t=>t.source!==e&&t.target!==e)};H(t=>t===e?null:t),Z(n),g?.({node:t,workflow:N(n)})},[Z,g]),Pe=o.default.useCallback((e,t)=>{let n={id:`${e}-${t}-${Date.now()}`,source:e,target:t,type:`ezEdge`,animated:!0},r={...K.current,edges:(0,l.addEdge)(n,K.current.edges)};Z(r),_?.({edge:n,sourceId:e,targetId:t,workflow:N(r)})},[Z,_]);o.default.useEffect(()=>{if(!d||!u||V)return;let e=!0;return xe(!0),G(null),d.loadWorkflow(u).then(t=>{e&&Z(t,!1)}).catch(t=>{e&&(G(t.message),x?.(t,`load`))}).finally(()=>{e&&xe(!1)}),()=>{e=!1}},[V,Z,x,d,u]),o.default.useEffect(()=>{let e=X(Y);W(e),v?.(e)},[Y,v,X]),o.default.useImperativeHandle(r,()=>({getWorkflow:()=>N(K.current),setWorkflow:e=>Z(e),validate:()=>X(),addNode:Q,updateNode:Me,deleteNode:Ne,connect:Pe,undo:()=>{let e=q.current[q.current.length-1];e&&(q.current=q.current.slice(0,-1),J.current=[N(K.current),...J.current],Z(e,!1))},redo:()=>{let e=J.current[0];e&&(J.current=J.current.slice(1),q.current=[...q.current,N(K.current)],Z(e,!1))},canUndo:()=>q.current.length>0,canRedo:()=>J.current.length>0,fitView:()=>Ae(),exportJson:()=>JSON.stringify(K.current,null,2),importJson:e=>{try{Z(JSON.parse(e)),G(null)}catch(e){let t=e instanceof Error?e:Error(`Invalid workflow JSON.`);G(t.message),x?.(t,`import`)}}}),[Q,Pe,Ne,Z,Ae,x,Me,X]);let Fe=o.default.useCallback(e=>{let t=(0,l.applyNodeChanges)(e,K.current.nodes);Z({...K.current,nodes:t})},[Z]),Ie=o.default.useCallback(e=>{Z({...K.current,edges:(0,l.applyEdgeChanges)(e,K.current.edges)})},[Z]),Le=o.default.useCallback(e=>{Z({...K.current,edges:K.current.edges.filter(t=>t.id!==e)})},[Z]),Re=o.default.useCallback(e=>{e.source&&e.target&&Pe(e.source,e.target)},[Pe]),ze=o.default.useCallback(e=>{e.preventDefault();let t=e.dataTransfer.getData(`application/reactflow`)||e.dataTransfer.getData(`text/plain`);t&&Q({type:t,position:je({x:e.clientX,y:e.clientY})})},[Q,je]),Be=o.default.useCallback(async()=>{let e=N(K.current),t=X(e);if(W(t),v?.(t),t.valid){Ce(!0),G(null);try{d&&u&&await d.saveWorkflow(u,e),await y?.(e),De(new Date().toISOString())}catch(e){let t=e instanceof Error?e:Error(`Failed to save workflow.`);G(t.message),x?.(t,`save`)}finally{Ce(!1)}}},[x,y,v,d,X,u]),Ve=o.default.useCallback(async()=>{let e=N({...K.current,metadata:{...K.current.metadata,status:`live`,publishedAt:new Date().toISOString()}}),t=X(e);if(W(t),v?.(t),t.valid){Te(!0),G(null);try{d&&u&&await d.publishWorkflow(u,e),await b?.(e),Z(e,!1)}catch(e){let t=e instanceof Error?e:Error(`Failed to publish workflow.`);G(t.message),x?.(t,`publish`)}finally{Te(!1)}}},[Z,x,b,v,d,X,u]),He=o.default.useCallback(()=>{try{let e=X();W(e),v?.(e),G(null)}catch(e){let t=e instanceof Error?e:Error(`Failed to validate workflow.`);G(t.message),x?.(t,`validate`)}},[x,v,X]),Ue=o.default.useCallback(e=>{let t=e.target.files?.[0];t&&t.text().then(t=>{try{Z(JSON.parse(t)),G(null)}catch(e){let t=e instanceof Error?e:Error(`Invalid workflow JSON.`);G(t.message),x?.(t,`import`)}finally{e.target.value=``}})},[Z,x]),We=o.default.useCallback(()=>{let e=new Blob([JSON.stringify(K.current,null,2)],{type:`application/json`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=L,n.click(),URL.revokeObjectURL(t)},[L]),Ge=S??Y.metadata?.title??`Untitled Workflow`,Ke=C??Y.metadata?.description,$=ye?Y.nodes.find(e=>e.id===ye):void 0,qe=ye?U.issues.filter(e=>e.nodeId===ye):[],Je=U.issues.filter(e=>e.severity===`error`).length,Ye=U.issues.filter(e=>e.severity===`warning`).length,Xe=q.current.length>0,Ze=J.current.length>0;return(0,c.jsxs)(`div`,{className:t.t(`ez-workflow flex h-full min-h-[560px] flex-col overflow-hidden bg-background`,R?.root,ce),...z,children:[(0,c.jsx)(`input`,{ref:ke,type:`file`,accept:`application/json,.json`,className:`hidden`,onChange:Ue}),k&&(0,c.jsx)(D,{title:Ge,description:Ke,status:T??Y.metadata?.status,isDirty:q.current.length>0,onTitleChange:e=>Z({...K.current,metadata:{...K.current.metadata,title:e}}),onDescriptionChange:e=>Z({...K.current,metadata:{...K.current.metadata,description:e}}),onSave:Be,onPublish:Ve,showGrid:pe,onShowGridChange:me,snapToGrid:he,onSnapToGridChange:ge,className:R?.header}),(0,c.jsxs)(`div`,{className:t.t(`flex min-h-0 flex-1`,R?.body),children:[j&&(0,c.jsx)(E,{categories:ue,title:ee,collapsed:_e,onCollapsedChange:ve,onNodeActivate:e=>Q({type:e.type}),className:R?.toolbox}),(0,c.jsx)(w,{nodes:Y.nodes,edges:Y.edges,onNodesChange:Fe,onEdgesChange:Ie,onConnect:Re,onDrop:ze,onDragOver:e=>{e.preventDefault(),e.dataTransfer.dropEffect=`move`},onNodeClick:(e,t)=>H(t.id),onNodeDoubleClick:(e,t)=>H(t.id),onEdgeDelete:Le,onPaneClick:()=>H(null),nodeTypes:le,showGrid:pe,snapToGrid:he,fitView:se,readOnly:F,className:t.t(`flex-1`,R?.canvas)}),M&&(0,c.jsx)(oe,{node:$,registry:B,issues:qe,readOnly:F,onChange:e=>$&&Me($.id,e),onDelete:()=>$&&Ne($.id),onClose:()=>H(null),className:R?.inspector})]}),(ne||te)&&(0,c.jsxs)(`footer`,{className:t.t(`flex min-h-14 items-center justify-between gap-3 border-t border-border bg-card/50 px-4 py-2`,R?.actionBar),"aria-label":`Workflow actions`,children:[(0,c.jsx)(`div`,{className:`flex min-w-0 items-center gap-2`,children:ne&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(n.t,{variant:`outline`,size:`sm`,className:`gap-2`,disabled:!Xe||F,onClick:()=>{let e=q.current[q.current.length-1];e&&(q.current=q.current.slice(0,-1),J.current=[N(K.current),...J.current],Z(e,!1))},children:[(0,c.jsx)(s.Undo2,{size:14}),`Undo`]}),(0,c.jsxs)(n.t,{variant:`outline`,size:`sm`,className:`gap-2`,disabled:!Ze||F,onClick:()=>{let e=J.current[0];e&&(J.current=J.current.slice(1),q.current=[...q.current,N(K.current)],Z(e,!1))},children:[(0,c.jsx)(s.Redo2,{size:14}),`Redo`]}),(0,c.jsxs)(n.t,{variant:`outline`,size:`sm`,className:`gap-2`,onClick:He,children:[(0,c.jsx)(s.Wand2,{size:14}),`Validate`]}),(0,c.jsxs)(n.t,{variant:`outline`,size:`sm`,className:`gap-2`,onClick:()=>ke.current?.click(),disabled:F,children:[(0,c.jsx)(s.Upload,{size:14}),`Import`]}),(0,c.jsxs)(n.t,{variant:`outline`,size:`sm`,className:`gap-2`,onClick:We,children:[(0,c.jsx)(s.Download,{size:14}),`Export`]})]})}),te&&(0,c.jsxs)(`div`,{className:t.t(`flex min-w-0 items-center gap-3 text-xs`,R?.validationPanel),children:[be||Se||we?(0,c.jsxs)(`span`,{className:`inline-flex items-center gap-2 text-muted-foreground`,children:[(0,c.jsx)(s.RefreshCw,{size:14,className:`animate-spin`}),be?`Loading`:we?`Publishing`:`Saving`]}):U.valid?(0,c.jsxs)(`span`,{className:`inline-flex items-center gap-2 text-emerald-600`,children:[(0,c.jsx)(s.CheckCircle2,{size:14}),`Valid`]}):(0,c.jsxs)(`span`,{className:`inline-flex items-center gap-2 text-destructive`,children:[(0,c.jsx)(s.AlertCircle,{size:14}),Je,` error`,Je===1?``:`s`,Ye>0?`, ${Ye} warning${Ye===1?``:`s`}`:``]}),Ee&&(0,c.jsxs)(`span`,{className:`hidden text-muted-foreground md:inline`,children:[`Saved `,new Date(Ee).toLocaleTimeString()]}),Oe&&(0,c.jsx)(`span`,{className:`max-w-[320px] truncate text-destructive`,children:Oe}),U.issues.slice(0,2).map((e,t)=>(0,c.jsx)(`button`,{type:`button`,className:`hidden max-w-[260px] truncate rounded border border-border px-2 py-1 text-left text-muted-foreground hover:bg-muted lg:block`,"aria-label":`Go to validation issue: ${e.message}`,onClick:()=>e.nodeId&&H(e.nodeId),children:e.message},`${e.code}-${e.nodeId??t}`))]})]})]})});se.displayName=`EzWorkflowInner`;var L=o.default.forwardRef((e,t)=>(0,c.jsx)(l.ReactFlowProvider,{children:(0,c.jsx)(se,{...e,ref:t})}));L.displayName=`EzWorkflow`;var ce=o.default.forwardRef((e,t)=>(0,c.jsx)(L,{...e,ref:t}));ce.displayName=`EzFlow`;var R=async e=>({"content-type":`application/json`,...(typeof e==`function`?await e():e)??{}}),z=async(e,t)=>{if(e.ok)return;let n=await e.text().catch(()=>``);throw Error(n||`Workflow ${t} failed with ${e.status}.`)},B=class{baseUrl;fetcher;headers;constructor(e){this.baseUrl=e.baseUrl.replace(/\/$/,``),this.fetcher=e.fetcher??fetch,this.headers=e.headers}async loadWorkflow(e){let t=await this.fetcher(`${this.baseUrl}/workflows/${encodeURIComponent(e)}`);return await z(t,`load`),t.json()}async saveWorkflow(e,t){await z(await this.fetcher(`${this.baseUrl}/workflows/${encodeURIComponent(e)}`,{method:`PUT`,headers:await R(this.headers),body:JSON.stringify(t)}),`save`)}async publishWorkflow(e,t){await z(await this.fetcher(`${this.baseUrl}/workflows/${encodeURIComponent(e)}/publish`,{method:`POST`,headers:await R(this.headers),body:JSON.stringify(t)}),`publish`)}async validateWorkflow(e){let t=await this.fetcher(`${this.baseUrl}/workflows/validate`,{method:`POST`,headers:await R(this.headers),body:JSON.stringify(e)});return await z(t,`validate`),t.json()}},le=class{lastStableWorkflow;constructor(e){this.service=e}getRollbackWorkflow(){return this.lastStableWorkflow}async loadWorkflow(e){let t=await this.service.loadWorkflow(e);return this.lastStableWorkflow=t,t}async saveWorkflow(e,t){let n=this.lastStableWorkflow;this.lastStableWorkflow=t;try{await this.service.saveWorkflow(e,t)}catch(e){throw this.lastStableWorkflow=n,e}}async publishWorkflow(e,t){let n=this.lastStableWorkflow;this.lastStableWorkflow=t;try{await this.service.publishWorkflow(e,t)}catch(e){throw this.lastStableWorkflow=n,e}}validateWorkflow(e){return this.service.validateWorkflow(e)}},ue=(e={})=>{let t=new Map(Object.entries(e));return{workflows:t,async loadWorkflow(e){let n=t.get(e);if(!n)throw Error(`Workflow ${e} was not found.`);return n},async saveWorkflow(e,n){t.set(e,n)},async publishWorkflow(e,n){t.set(e,{...n,metadata:{...n.metadata,status:`live`,publishedAt:n.metadata?.publishedAt??new Date().toISOString()}})},async validateWorkflow(e){return P(e)}}},V=e=>{let t=Math.max(2,Math.floor(e)),n=Array.from({length:t},(e,n)=>n===0?{id:`node-0`,type:`startNode`,position:{x:0,y:0},data:{label:`Start`}}:n===t-1?{id:`node-${n}`,type:`endNode`,position:{x:n*180,y:0},data:{label:`End`}}:{id:`node-${n}`,type:`actionNode`,position:{x:n*180,y:n%5*120},data:{label:`Action ${n}`,actionType:`noop`}});return{nodes:n,edges:n.slice(0,-1).map((e,t)=>({id:`${e.id}-${n[t+1].id}`,source:e.id,target:n[t+1].id,type:`ezEdge`})),metadata:{title:`${t} node performance workflow`,status:`draft`,version:1}}},de=e=>{let t=V(e),n=typeof performance<`u`?()=>performance.now():()=>Date.now(),r=n(),i=P(t);return{nodeCount:t.nodes.length,edgeCount:t.edges.length,validateMs:n()-r,valid:i.valid,issueCount:i.issues.length}},fe={nodes:[{id:`start`,type:`startNode`,position:{x:0,y:120},data:{label:`Request submitted`,triggerType:`manual`}},{id:`approval`,type:`approvalNode`,position:{x:280,y:120},data:{label:`Manager approval`,approverRole:`manager`,slaHours:24}},{id:`decision`,type:`decisionNode`,position:{x:560,y:120},data:{label:`Approved?`,branches:[{id:`yes`,label:`Approved`},{id:`no`,label:`Rejected`}]}},{id:`end-success`,type:`endNode`,position:{x:840,y:40},data:{label:`Approved`,outcome:`success`}},{id:`end-failure`,type:`endNode`,position:{x:840,y:200},data:{label:`Rejected`,outcome:`failure`}}],edges:[{id:`start-approval`,source:`start`,target:`approval`,type:`ezEdge`},{id:`approval-decision`,source:`approval`,target:`decision`,type:`ezEdge`},{id:`decision-success`,source:`decision`,target:`end-success`,type:`ezEdge`},{id:`decision-failure`,source:`decision`,target:`end-failure`,type:`ezEdge`}],metadata:{title:`Approval workflow`,description:`Human approval with positive and negative outcomes.`,status:`draft`,version:1}},pe={nodes:[{id:`start`,type:`startNode`,position:{x:0,y:100},data:{label:`Webhook received`,triggerType:`webhook`}},{id:`request`,type:`requestNode`,position:{x:280,y:100},data:{label:`Create ticket`,method:`POST`,url:`https://api.example.com/tickets`}},{id:`end`,type:`endNode`,position:{x:560,y:100},data:{label:`Ticket created`,outcome:`success`}}],edges:[{id:`start-request`,source:`start`,target:`request`,type:`ezEdge`},{id:`request-end`,source:`request`,target:`end`,type:`ezEdge`}],metadata:{title:`API request workflow`,description:`Webhook to HTTP request.`,status:`draft`,version:1}},me={nodes:[{id:`start`,type:`startNode`,position:{x:0,y:100},data:{label:`Nightly schedule`,triggerType:`scheduled`}},{id:`delay`,type:`delayNode`,position:{x:280,y:100},data:{label:`Wait for upstream data`,duration:30,unit:`minutes`}},{id:`action`,type:`actionNode`,position:{x:560,y:100},data:{label:`Run reconciliation`,actionType:`reconcile`}},{id:`end`,type:`endNode`,position:{x:840,y:100},data:{label:`Completed`,outcome:`success`}}],edges:[{id:`start-delay`,source:`start`,target:`delay`,type:`ezEdge`},{id:`delay-action`,source:`delay`,target:`action`,type:`ezEdge`},{id:`action-end`,source:`action`,target:`end`,type:`ezEdge`}],metadata:{title:`Scheduled workflow`,description:`Scheduled job with delayed execution.`,status:`draft`,version:1}},he={nodes:[{id:`start`,type:`startNode`,position:{x:0,y:100},data:{label:`Case opened`,triggerType:`manual`}},{id:`review`,type:`approvalNode`,position:{x:280,y:100},data:{label:`Specialist review`,approverRole:`specialist`,escalationRole:`team-lead`,slaHours:8}},{id:`action`,type:`actionNode`,position:{x:560,y:100},data:{label:`Apply decision`,actionType:`apply-review-outcome`}},{id:`end`,type:`endNode`,position:{x:840,y:100},data:{label:`Case closed`,outcome:`success`}}],edges:[{id:`start-review`,source:`start`,target:`review`,type:`ezEdge`},{id:`review-action`,source:`review`,target:`action`,type:`ezEdge`},{id:`action-end`,source:`action`,target:`end`,type:`ezEdge`}],metadata:{title:`Human review workflow`,description:`Human review followed by an automated action.`,status:`draft`,version:1}};Object.defineProperty(exports,`A`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`C`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`D`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`E`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`O`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`S`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`T`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return re}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return ie}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return me}}),Object.defineProperty(exports,`j`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`k`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return ue}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return fe}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return de}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return he}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return le}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return pe}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return ce}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`w`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`x`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return S}});
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { t as e } from "./utils-hFRduYmq.js";
|
|
2
|
+
import "react";
|
|
3
|
+
import { ChevronRight as t, GripVertical as n, Layers as r, X as i } from "lucide-react";
|
|
4
|
+
import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
5
|
+
import { DndContext as s, KeyboardSensor as c, PointerSensor as l, closestCenter as u, useDroppable as d, useSensor as f, useSensors as p } from "@dnd-kit/core";
|
|
6
|
+
import { CSS as m } from "@dnd-kit/utilities";
|
|
7
|
+
import { SortableContext as h, arrayMove as g, horizontalListSortingStrategy as _, sortableKeyboardCoordinates as v, useSortable as y, verticalListSortingStrategy as b } from "@dnd-kit/sortable";
|
|
8
|
+
//#region src/components/shared/components/EzSortableList.tsx
|
|
9
|
+
function x({ items: e, onReorder: t, renderItem: n, getId: r, strategy: i = b, className: o }) {
|
|
10
|
+
let d = p(f(l, { activationConstraint: { distance: 8 } }), f(c, { coordinateGetter: v }));
|
|
11
|
+
function m(n) {
|
|
12
|
+
let { active: i, over: a } = n;
|
|
13
|
+
a && i.id !== a.id && t(g(e, e.findIndex((e) => r(e) === i.id), e.findIndex((e) => r(e) === a.id)));
|
|
14
|
+
}
|
|
15
|
+
return /* @__PURE__ */ a(s, {
|
|
16
|
+
sensors: d,
|
|
17
|
+
collisionDetection: u,
|
|
18
|
+
onDragEnd: m,
|
|
19
|
+
children: /* @__PURE__ */ a(h, {
|
|
20
|
+
items: e.map(r),
|
|
21
|
+
strategy: i,
|
|
22
|
+
children: /* @__PURE__ */ a("div", {
|
|
23
|
+
className: o,
|
|
24
|
+
children: e.map((e, t) => n(e, t))
|
|
25
|
+
})
|
|
26
|
+
})
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
//#endregion
|
|
30
|
+
//#region src/components/EzTable/EzGroupingPanel.tsx
|
|
31
|
+
var S = ({ id: r, label: s, onRemove: c, showSeparator: l }) => {
|
|
32
|
+
let { attributes: u, listeners: d, setNodeRef: f, transform: p, transition: h, isDragging: g } = y({ id: r });
|
|
33
|
+
return /* @__PURE__ */ o("div", {
|
|
34
|
+
ref: f,
|
|
35
|
+
style: {
|
|
36
|
+
transform: m.Transform.toString(p),
|
|
37
|
+
transition: h,
|
|
38
|
+
zIndex: g ? 50 : void 0
|
|
39
|
+
},
|
|
40
|
+
className: "flex items-center",
|
|
41
|
+
children: [l && /* @__PURE__ */ a("div", {
|
|
42
|
+
className: "flex items-center text-muted-foreground mr-2",
|
|
43
|
+
children: /* @__PURE__ */ a(t, { className: "w-4 h-4" })
|
|
44
|
+
}), /* @__PURE__ */ o("div", {
|
|
45
|
+
className: e("flex items-center gap-1.5 px-2 py-1 bg-card border border-border rounded-md shadow-sm transition-all duration-200", g ? "opacity-50 scale-105 border-primary shadow-lg" : "hover:border-primary/50"),
|
|
46
|
+
children: [
|
|
47
|
+
/* @__PURE__ */ a("div", {
|
|
48
|
+
...u,
|
|
49
|
+
...d,
|
|
50
|
+
className: "cursor-grab active:cursor-grabbing text-muted-foreground/50 hover:text-primary transition-colors",
|
|
51
|
+
children: /* @__PURE__ */ a(n, { className: "w-3.5 h-3.5" })
|
|
52
|
+
}),
|
|
53
|
+
/* @__PURE__ */ a("span", {
|
|
54
|
+
className: "text-sm font-medium text-foreground",
|
|
55
|
+
children: s
|
|
56
|
+
}),
|
|
57
|
+
/* @__PURE__ */ a("button", {
|
|
58
|
+
onClick: (e) => {
|
|
59
|
+
e.stopPropagation(), c();
|
|
60
|
+
},
|
|
61
|
+
className: "p-0.5 hover:bg-muted rounded transition-colors",
|
|
62
|
+
children: /* @__PURE__ */ a(i, { className: "w-3 h-3 text-muted-foreground hover:text-destructive" })
|
|
63
|
+
})
|
|
64
|
+
]
|
|
65
|
+
})]
|
|
66
|
+
});
|
|
67
|
+
}, C = ({ grouping: t, onGroupingChange: n, columns: i }) => {
|
|
68
|
+
let { setNodeRef: s, isOver: c } = d({ id: "grouping-panel" }), l = (e) => i.find((t) => t.id === e)?.columnDef.header || e;
|
|
69
|
+
return /* @__PURE__ */ o("div", {
|
|
70
|
+
ref: s,
|
|
71
|
+
className: e("flex items-center gap-2 p-2 min-h-[40px] border rounded-md transition-all duration-200", "bg-muted/40 border-dashed border-border", c && "bg-highlight border-selection ring-1 ring-selection"),
|
|
72
|
+
children: [/* @__PURE__ */ o("div", {
|
|
73
|
+
className: "flex items-center gap-2 text-muted-foreground mr-2",
|
|
74
|
+
children: [/* @__PURE__ */ a(r, { className: "w-4 h-4" }), /* @__PURE__ */ a("span", {
|
|
75
|
+
className: "text-[10px] font-black uppercase tracking-wider",
|
|
76
|
+
children: "Group By"
|
|
77
|
+
})]
|
|
78
|
+
}), /* @__PURE__ */ o("div", {
|
|
79
|
+
className: "flex flex-wrap gap-2",
|
|
80
|
+
children: [
|
|
81
|
+
t.length === 0 && !c && /* @__PURE__ */ a("span", {
|
|
82
|
+
className: "text-sm text-muted-foreground/70 italic",
|
|
83
|
+
children: "Drag columns here to group"
|
|
84
|
+
}),
|
|
85
|
+
/* @__PURE__ */ a(x, {
|
|
86
|
+
items: t,
|
|
87
|
+
onReorder: n,
|
|
88
|
+
getId: (e) => e,
|
|
89
|
+
strategy: _,
|
|
90
|
+
className: "flex flex-wrap gap-y-2",
|
|
91
|
+
renderItem: (e, r) => /* @__PURE__ */ a(S, {
|
|
92
|
+
id: e,
|
|
93
|
+
label: l(e),
|
|
94
|
+
onRemove: () => n(t.filter((t) => t !== e)),
|
|
95
|
+
showSeparator: r > 0
|
|
96
|
+
}, e)
|
|
97
|
+
}),
|
|
98
|
+
c && /* @__PURE__ */ a("div", {
|
|
99
|
+
className: "px-2 py-1 border border-selection border-dashed bg-highlight/50 rounded-md text-sm text-selection animate-pulse",
|
|
100
|
+
children: "Drop to Group"
|
|
101
|
+
})
|
|
102
|
+
]
|
|
103
|
+
})]
|
|
104
|
+
});
|
|
105
|
+
};
|
|
106
|
+
//#endregion
|
|
107
|
+
export { C as EzGroupingPanel };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`./chunk-D-qHiVGv.cjs`),t=require(`./utils-DyS9jpam.cjs`);let n=require(`react`);n=e.n(n,1);let r=require(`lucide-react`),i=require(`react/jsx-runtime`),a=require(`@dnd-kit/core`),o=require(`@dnd-kit/utilities`),s=require(`@dnd-kit/sortable`);function c({items:e,onReorder:t,renderItem:n,getId:r,strategy:o=s.verticalListSortingStrategy,className:c}){let l=(0,a.useSensors)((0,a.useSensor)(a.PointerSensor,{activationConstraint:{distance:8}}),(0,a.useSensor)(a.KeyboardSensor,{coordinateGetter:s.sortableKeyboardCoordinates}));function u(n){let{active:i,over:a}=n;a&&i.id!==a.id&&t((0,s.arrayMove)(e,e.findIndex(e=>r(e)===i.id),e.findIndex(e=>r(e)===a.id)))}return(0,i.jsx)(a.DndContext,{sensors:l,collisionDetection:a.closestCenter,onDragEnd:u,children:(0,i.jsx)(s.SortableContext,{items:e.map(r),strategy:o,children:(0,i.jsx)(`div`,{className:c,children:e.map((e,t)=>n(e,t))})})})}var l=({id:e,label:n,onRemove:a,showSeparator:c})=>{let{attributes:l,listeners:u,setNodeRef:d,transform:f,transition:p,isDragging:m}=(0,s.useSortable)({id:e});return(0,i.jsxs)(`div`,{ref:d,style:{transform:o.CSS.Transform.toString(f),transition:p,zIndex:m?50:void 0},className:`flex items-center`,children:[c&&(0,i.jsx)(`div`,{className:`flex items-center text-muted-foreground mr-2`,children:(0,i.jsx)(r.ChevronRight,{className:`w-4 h-4`})}),(0,i.jsxs)(`div`,{className:t.t(`flex items-center gap-1.5 px-2 py-1 bg-card border border-border rounded-md shadow-sm transition-all duration-200`,m?`opacity-50 scale-105 border-primary shadow-lg`:`hover:border-primary/50`),children:[(0,i.jsx)(`div`,{...l,...u,className:`cursor-grab active:cursor-grabbing text-muted-foreground/50 hover:text-primary transition-colors`,children:(0,i.jsx)(r.GripVertical,{className:`w-3.5 h-3.5`})}),(0,i.jsx)(`span`,{className:`text-sm font-medium text-foreground`,children:n}),(0,i.jsx)(`button`,{onClick:e=>{e.stopPropagation(),a()},className:`p-0.5 hover:bg-muted rounded transition-colors`,children:(0,i.jsx)(r.X,{className:`w-3 h-3 text-muted-foreground hover:text-destructive`})})]})]})},u=({grouping:e,onGroupingChange:n,columns:o})=>{let{setNodeRef:u,isOver:d}=(0,a.useDroppable)({id:`grouping-panel`}),f=e=>o.find(t=>t.id===e)?.columnDef.header||e;return(0,i.jsxs)(`div`,{ref:u,className:t.t(`flex items-center gap-2 p-2 min-h-[40px] border rounded-md transition-all duration-200`,`bg-muted/40 border-dashed border-border`,d&&`bg-highlight border-selection ring-1 ring-selection`),children:[(0,i.jsxs)(`div`,{className:`flex items-center gap-2 text-muted-foreground mr-2`,children:[(0,i.jsx)(r.Layers,{className:`w-4 h-4`}),(0,i.jsx)(`span`,{className:`text-[10px] font-black uppercase tracking-wider`,children:`Group By`})]}),(0,i.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[e.length===0&&!d&&(0,i.jsx)(`span`,{className:`text-sm text-muted-foreground/70 italic`,children:`Drag columns here to group`}),(0,i.jsx)(c,{items:e,onReorder:n,getId:e=>e,strategy:s.horizontalListSortingStrategy,className:`flex flex-wrap gap-y-2`,renderItem:(t,r)=>(0,i.jsx)(l,{id:t,label:f(t),onRemove:()=>n(e.filter(e=>e!==t)),showSeparator:r>0},t)}),d&&(0,i.jsx)(`div`,{className:`px-2 py-1 border border-selection border-dashed bg-highlight/50 rounded-md text-sm text-selection animate-pulse`,children:`Drop to Group`})]})]})};exports.EzGroupingPanel=u;
|