@objectstack/console 11.3.0 → 11.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/dist/.objectui-sha +1 -0
  2. package/dist/assets/{AdapterProvider-BiTdGDAR.js → AdapterProvider-BoIMfid0.js} +1 -1
  3. package/dist/assets/{AiPendingActionsPage-pA6WQiJs.js → AiPendingActionsPage-C2yWGA5c.js} +1 -1
  4. package/dist/assets/ApiConsolePage-CbOA7yU_.js +1 -0
  5. package/dist/assets/{AppDocsIndex-4jDRVpod.js → AppDocsIndex-DG7I33Q0.js} +1 -1
  6. package/dist/assets/{AppManagementPage-D4Qdfc-k.js → AppManagementPage-pZT1FFC3.js} +1 -1
  7. package/dist/assets/ApprovalsInboxPage-Bf1G6M2j.js +1 -0
  8. package/dist/assets/AuditLogPage-DhCB5Z43.js +1 -0
  9. package/dist/assets/{ComponentNavView-HWYwp2J3.js → ComponentNavView-DytkOwgZ.js} +1 -1
  10. package/dist/assets/{ConsoleFloatingChatbot-CYQ0DGQS.js → ConsoleFloatingChatbot-5PFTo79W.js} +1 -1
  11. package/dist/assets/DashboardView-DfLxEvu6.js +1 -0
  12. package/dist/assets/DashboardWidgetInspector-kTGmMwv9.js +1 -0
  13. package/dist/assets/{DeveloperHubPage-BSqHoM6g.js → DeveloperHubPage-D754TyQo.js} +1 -1
  14. package/dist/assets/{ExpressionProvider-BeRnSjp4.js → ExpressionProvider-4nWMRYZf.js} +1 -1
  15. package/dist/assets/FlowRunsPage-vP2vIZpQ.js +1 -0
  16. package/dist/assets/{IntegrationsPage-COUMVn63.js → IntegrationsPage-CUcCoo0I.js} +2 -2
  17. package/dist/assets/{InterfaceListPage-DyRkCp_l.js → InterfaceListPage-BnbDtTf1.js} +1 -1
  18. package/dist/assets/{ManagedByBadge-CorAI3gR.js → ManagedByBadge-BOZOeONh.js} +1 -1
  19. package/dist/assets/{MarketplaceAccessDenied-BQ6-NcgV.js → MarketplaceAccessDenied-DQriAyJJ.js} +1 -1
  20. package/dist/assets/{MarketplaceInstalledPage-CUPRsl4f.js → MarketplaceInstalledPage-HCwduRx9.js} +1 -1
  21. package/dist/assets/MarketplacePackagePage-zwcTnk73.js +4 -0
  22. package/dist/assets/MarketplacePage-Cr5TJn45.js +1 -0
  23. package/dist/assets/MetadataInspector-uzqN-c_S.js +1 -0
  24. package/dist/assets/{MetadataProvider-CkIT9awy.js → MetadataProvider-C517hbHZ.js} +1 -1
  25. package/dist/assets/{PageView-B82BdAMg.js → PageView-C902zOSZ.js} +1 -1
  26. package/dist/assets/ProfilePage-D4ODPlXD.js +1 -0
  27. package/dist/assets/PublicFormsPage-DyuMcLOS.js +1 -0
  28. package/dist/assets/RecordDetailView-VR81HXSp.js +9 -0
  29. package/dist/assets/{RecordFormPage-BXLWOLOE.js → RecordFormPage-Brux9Pwn.js} +1 -1
  30. package/dist/assets/ReportDefaultInspector-D5vXyOGX.js +11 -0
  31. package/dist/assets/{ReportView-BWv6u_ys.js → ReportView-C-5CEger.js} +1 -1
  32. package/dist/assets/{SearchResultsPage-DvvT6E4h.js → SearchResultsPage-DXcagT6P.js} +1 -1
  33. package/dist/assets/{SettingsHub-CDaz4A8F.js → SettingsHub-D7rRZ-on.js} +1 -1
  34. package/dist/assets/{SettingsView-CkL3YJNr.js → SettingsView-D0ApSSCe.js} +1 -1
  35. package/dist/assets/{SystemHubPage-DRMrwvla.js → SystemHubPage-Do0l-rwF.js} +1 -1
  36. package/dist/assets/data-adapter-BCQWtGB_.js +1 -0
  37. package/dist/assets/framework-C3RMhKDr.js +35 -0
  38. package/dist/assets/{highlighted-body-OFNGDK62-D9Y-fWz-.js → highlighted-body-OFNGDK62-DLIcWL3h.js} +1 -1
  39. package/dist/assets/index-C_-Pgv1J.css +2 -0
  40. package/dist/assets/index-D27qs-mG.js +2 -0
  41. package/dist/assets/mermaid-GHXKKRXX-Du2PFYcS.js +1 -0
  42. package/dist/assets/metadata-admin-DigQrDYj.js +22 -0
  43. package/dist/assets/plugin-calendar-Dt70natA.js +1 -0
  44. package/dist/assets/plugin-charts-8ZEdKLDL.js +7 -0
  45. package/dist/assets/{plugin-chatbot-C7dKmmA6.js → plugin-chatbot-CHOTmGHB.js} +6 -6
  46. package/dist/assets/plugin-dashboard-Dpzs7Slc.js +6 -0
  47. package/dist/assets/plugin-form-ji-Rgf2e.js +1 -0
  48. package/dist/assets/plugin-gantt-DH-QLptQ.js +93 -0
  49. package/dist/assets/plugin-grid-D1F45Vnr.js +8 -0
  50. package/dist/assets/plugin-kanban-BRV0WN7L.js +1 -0
  51. package/dist/assets/plugin-map-CAe_xoWI.js +1 -0
  52. package/dist/assets/{plugin-markdown-PeIRJlRw.js → plugin-markdown-DVImgQYk.js} +1 -1
  53. package/dist/assets/plugin-report-B6rh7YXX.js +59 -0
  54. package/dist/assets/plugin-timeline-ZyTfjz7e.js +1 -0
  55. package/dist/assets/{plugin-tree-KBPNkKuR.js → plugin-tree-DGkyQ0lj.js} +1 -1
  56. package/dist/assets/plugin-view-24sHw0Ev.js +1 -0
  57. package/dist/assets/plugins-views-BT7UDPqk.js +4 -0
  58. package/dist/assets/{skeletons-CZdepTdC.js → skeletons-C-42w_MY.js} +1 -1
  59. package/dist/assets/src-BvIm_4jD.js +135 -0
  60. package/dist/assets/src-rCeRf142.js +12 -0
  61. package/dist/assets/{src-DzNV76wU.js → src-yxeLzGBZ.js} +1 -1
  62. package/dist/assets/{types-CoZkCf64.js → types-ChDtzQZB.js} +1 -1
  63. package/dist/assets/ui-components-CqkwtQve.js +42 -0
  64. package/dist/assets/{ui-layout-DQDnaREz.js → ui-layout-D1KjRJsh.js} +1 -1
  65. package/dist/assets/{useActionModal-DI7oaRiK.js → useActionModal-CsAqakCv.js} +1 -1
  66. package/dist/assets/{useOpenRecordList-pMYhKC_q.js → useOpenRecordList-BYOFaY8y.js} +1 -1
  67. package/dist/assets/{useReconcileOnError-p9SZCLMb.js → useReconcileOnError-_QGJOfLf.js} +1 -1
  68. package/dist/assets/vendor-dndkit-0M_nRjzm.js +5 -0
  69. package/dist/index.html +4 -4
  70. package/package.json +1 -1
  71. package/dist/assets/ApiConsolePage-C2RUq2a1.js +0 -1
  72. package/dist/assets/ApprovalsInboxPage-97ofFRyB.js +0 -1
  73. package/dist/assets/AuditLogPage-CE9VainX.js +0 -1
  74. package/dist/assets/DashboardView-_v1xyHY7.js +0 -1
  75. package/dist/assets/DashboardWidgetInspector-CagpzDS6.js +0 -1
  76. package/dist/assets/FlowRunsPage-dzQVp59a.js +0 -1
  77. package/dist/assets/MarketplacePackagePage-CiSZE5lH.js +0 -4
  78. package/dist/assets/MarketplacePage-CzTXmemx.js +0 -1
  79. package/dist/assets/MetadataInspector-Ci4IEXl6.js +0 -1
  80. package/dist/assets/ProfilePage-BbTxTg63.js +0 -1
  81. package/dist/assets/PublicFormsPage-CHmoVuOC.js +0 -1
  82. package/dist/assets/RecordDetailView-Bo53OY-a.js +0 -9
  83. package/dist/assets/ReportDefaultInspector-BxP74HM2.js +0 -11
  84. package/dist/assets/data-adapter-B9YoyoUW.js +0 -1
  85. package/dist/assets/framework-BGQ7DoWM.js +0 -35
  86. package/dist/assets/index-0xh0t0SY.css +0 -2
  87. package/dist/assets/index-BzqR5LGR.js +0 -2
  88. package/dist/assets/mermaid-GHXKKRXX-DfINr0ix.js +0 -1
  89. package/dist/assets/metadata-admin-CWGl9yQd.js +0 -22
  90. package/dist/assets/plugin-calendar-Bvz5MlbF.js +0 -1
  91. package/dist/assets/plugin-charts-BQs_--tP.js +0 -7
  92. package/dist/assets/plugin-dashboard-CWaZph1r.js +0 -6
  93. package/dist/assets/plugin-form-B73E4Mbd.js +0 -1
  94. package/dist/assets/plugin-gantt-Bf38rZLK.js +0 -93
  95. package/dist/assets/plugin-grid-a4T-OeTY.js +0 -6
  96. package/dist/assets/plugin-kanban-Co4jnw0I.js +0 -1
  97. package/dist/assets/plugin-map-Cr2T-pjl.js +0 -1
  98. package/dist/assets/plugin-report-DacHRf4i.js +0 -59
  99. package/dist/assets/plugin-timeline-ueCjCHSY.js +0 -1
  100. package/dist/assets/plugin-view-CbNN954o.js +0 -1
  101. package/dist/assets/plugins-views-C-R-Gk81.js +0 -4
  102. package/dist/assets/src-DRWgP_lu.js +0 -2
  103. package/dist/assets/ui-components-J75dr3Ae.js +0 -42
  104. package/dist/assets/vendor-dndkit-DoPtQigN.js +0 -5
@@ -1 +1 @@
1
- import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{_ as t,l as n,r,t as i}from"./vendor-react-slxo-5GC.js";import{$n as a,At as o,Dt as s,Et as c,Ft as l,Ht as u,Jt as d,Mc as f,Mt as p,Nt as m,Ot as h,Pt as g,Ro as _,Us as v,er as y,fi as b,jt as x,lr as S,na as C,ot as w,ra as T,tr as E,yo as D}from"./ui-components-J75dr3Ae.js";import{_ as O,c as k,d as A,g as j,h as M,n as N,o as P,p as F,s as I,t as L,u as R}from"./vendor-dndkit-DoPtQigN.js";var z=e(t(),1),B=i();function V(e){let t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);if(!t)return null;let n=parseInt(t[1],16)/255,r=parseInt(t[2],16)/255,i=parseInt(t[3],16)/255,a=Math.max(n,r,i),o=Math.min(n,r,i),s=0,c=0,l=(a+o)/2;if(a!==o){let e=a-o;switch(c=l>.5?e/(2-a-o):e/(a+o),a){case n:s=((r-i)/e+(r<i?6:0))/6;break;case r:s=((i-n)/e+2)/6;break;case i:s=((n-r)/e+4)/6;break}}return{h:s*360,s:c*100,l:l*100}}function H(e){let t=V(e);return t?`${Math.round(t.h)} ${Math.round(t.s)}% ${Math.round(t.l)}%`:null}function U(e){let t=V(e);if(!t)return null;let n=Math.max(t.l,65),r=t.s>80?Math.max(t.s-10,70):t.s;return`${Math.round(t.h)} ${Math.round(r)}% ${Math.round(n)}%`}function W(e){let t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);if(!t)return`0 0% 100%`;let n=e=>{let t=e/255;return t<=.03928?t/12.92:((t+.055)/1.055)**2.4},r=n(parseInt(t[1],16)),i=n(parseInt(t[2],16)),a=n(parseInt(t[3],16));return .2126*r+.7152*i+.0722*a>.6?`222 47% 11%`:`0 0% 100%`}function ee(e,t){(0,z.useEffect)(()=>{let n=document.documentElement,r=()=>n.classList.contains(`dark`),i=()=>{if(e?.primaryColor){let t=H(e.primaryColor),i=U(e.primaryColor),a=r()&&i||t;a&&(n.style.setProperty(`--brand-primary`,e.primaryColor),n.style.setProperty(`--brand-primary-hsl`,t||a),n.style.setProperty(`--primary`,a),n.style.setProperty(`--primary-foreground`,r()?`222 47% 11%`:W(e.primaryColor)),n.style.setProperty(`--ring`,a),n.style.setProperty(`--sidebar-primary`,a),n.style.setProperty(`--sidebar-ring`,a))}else n.style.removeProperty(`--brand-primary`),n.style.removeProperty(`--brand-primary-hsl`),n.style.removeProperty(`--primary`),n.style.removeProperty(`--primary-foreground`),n.style.removeProperty(`--ring`),n.style.removeProperty(`--sidebar-primary`),n.style.removeProperty(`--sidebar-ring`);if(e?.accentColor){let t=H(e.accentColor),i=U(e.accentColor),a=r()&&i||t;a&&(n.style.setProperty(`--brand-accent`,e.accentColor),n.style.setProperty(`--brand-accent-hsl`,t||a),n.style.setProperty(`--accent`,a),n.style.setProperty(`--accent-foreground`,r()?`222 47% 11%`:W(e.accentColor)))}else n.style.removeProperty(`--brand-accent`),n.style.removeProperty(`--brand-accent-hsl`),n.style.removeProperty(`--accent`),n.style.removeProperty(`--accent-foreground`)};i();let a=new MutationObserver(e=>{for(let t of e)if(t.type===`attributes`&&t.attributeName===`class`){i();break}});if(a.observe(n,{attributes:!0,attributeFilter:[`class`]}),e?.favicon){let t=document.querySelector(`#favicon`)||document.querySelector(`link[rel="icon"]`);t&&(t.href=e.favicon)}return t&&(document.title=t),()=>{a.disconnect(),n.style.removeProperty(`--brand-primary`),n.style.removeProperty(`--brand-primary-hsl`),n.style.removeProperty(`--brand-accent`),n.style.removeProperty(`--brand-accent-hsl`),n.style.removeProperty(`--primary`),n.style.removeProperty(`--primary-foreground`),n.style.removeProperty(`--ring`),n.style.removeProperty(`--sidebar-primary`),n.style.removeProperty(`--sidebar-ring`),n.style.removeProperty(`--accent`),n.style.removeProperty(`--accent-foreground`)}},[e?.primaryColor,e?.accentColor,e?.favicon,t])}function G({sidebar:e,navbar:t,children:n,className:r,defaultOpen:i=!0,branding:a}){return ee(a,a?.title),(0,B.jsxs)(l,{defaultOpen:i,className:`!flex-col h-svh overflow-hidden`,children:[(0,B.jsx)(`header`,{className:`sticky top-0 z-30 flex h-14 w-full shrink-0 items-center gap-2 border-b bg-background px-2 sm:px-4`,children:t}),(0,B.jsxs)(`div`,{className:`flex flex-1 min-h-0 w-full`,children:[e,(0,B.jsx)(o,{className:`min-w-0`,children:(0,B.jsx)(`main`,{className:f(`flex-1 min-w-0 overflow-auto p-3 sm:p-4 md:p-6 pb-20 sm:pb-4 md:pb-6`,r),children:n})})]})]})}function te(e){return e?w(e):_}function K(e,t){if(typeof e==`string`)return e;if(t){let n=t(e.key,{defaultValue:e.defaultValue,...e.params});if(n&&n!==e.key)return n}return e.defaultValue||e.key}function ne(e,t,n,r,i,a,o){let s=K(e.label,n);if(typeof e.label!=`string`)return s;if(e.type===`object`&&e.objectName){if(e.viewName)return a?a(e.objectName,e.viewName,s):s;if(t)return t(e.objectName,s)}return r&&e.type===`dashboard`&&e.dashboardName?r(e.dashboardName,s):i&&e.type===`group`&&e.id?i(e.id,s):o&&e.id?o(e.id,s):s}var q=e=>!(e===!1||e===`false`),re=()=>!0,J=()=>!0,ie=/\{(current_user_id|current_org_id|[a-z][a-z0-9_]*)\}/g;function Y(e,t){if(!e.includes(`{`))return e;let n=!1,r=e.replace(ie,(e,r)=>{let i;return i=r===`current_user_id`?t?.currentUserId:r===`current_org_id`?t?.currentOrgId:t?.contextValues?.[r],i||(n=!0,``)});return n?null:r}function X(e,t,n){switch(e.type){case`object`:{let r=`${t}/${e.objectName??``}`,i=e.recordId;if(i){let t=Y(i,n);if(t){let n=`${r}/record/${encodeURIComponent(t)}`;return{href:e.recordMode===`edit`?`${n}/edit`:n,external:!1}}}return{href:e.viewName?`${r}/view/${e.viewName}`:r,external:!1}}case`dashboard`:return{href:e.dashboardName?`${t}/dashboard/${e.dashboardName}`:`#`,external:!1};case`page`:{if(!e.pageName)return{href:`#`,external:!1};let r=e.params,i=`${t}/page/${e.pageName}`;if(r&&typeof r==`object`){let e=new URLSearchParams;for(let[t,i]of Object.entries(r))if(i!=null)if(typeof i==`string`){let r=Y(i,n);r!==null&&e.set(t,r)}else e.set(t,JSON.stringify(i));let t=e.toString();t&&(i+=`?${t}`)}return{href:i,external:!1}}case`report`:return{href:e.reportName?`${t}/report/${e.reportName}`:`#`,external:!1};case`url`:return{href:e.url??`#`,external:e.target===`_blank`};case`component`:{let r=e.componentRef;if(!r)return{href:`#`,external:!1};let i=r.split(`:`).filter(Boolean);if(i.length===0)return{href:`#`,external:!1};let a=e.params;if(i[0]===`metadata`){let e=i[1],r=a&&typeof a.type==`string`?a.type:void 0,o=a&&typeof a.name==`string`?a.name:void 0,s=``;if(a&&typeof a==`object`){let e=new URLSearchParams;for(let[t,r]of Object.entries(a))if(!(t===`type`||t===`name`)&&r!=null)if(typeof r==`string`){let i=Y(r,n);i&&e.set(t,i)}else e.set(t,JSON.stringify(r));let t=e.toString();t&&(s=`?${t}`)}return e===`directory`||!e?{href:`${t}/metadata${s}`,external:!1}:e===`resource`&&r?{href:`${t}/metadata${o?`/${encodeURIComponent(r)}/${encodeURIComponent(o)}`:`/${encodeURIComponent(r)}`}${s}`,external:!1}:{href:`${t}/metadata${s}`,external:!1}}let o=`${t}/component/${i.join(`/`)}`;if(a&&typeof a==`object`){let e=new URLSearchParams;for(let[t,n]of Object.entries(a))n!=null&&e.set(t,typeof n==`string`?n:JSON.stringify(n));let t=e.toString();t&&(o+=`?${t}`)}return{href:o,external:!1}}default:return{href:`#`,external:!1}}}function ae(e,t,n){if(t===`#`)return!1;if(n===t)return!0;let r=e.componentRef;return r&&r.split(`:`)[1]===`directory`?!1:e.type===`object`&&e.objectName?!(e.viewName||!n.startsWith(`${t}/`)||n.slice(t.length+1).startsWith(`view/`)):n.startsWith(`${t}/`)}function Z(e,t){if(!t.trim())return e;let n=t.toLowerCase().trim();return e.reduce((e,r)=>{if(r.type===`separator`)return e;if(r.type===`group`&&r.children?.length){let n=Z(r.children,t);return n.length>0&&e.push({...r,children:n}),e}return K(r.label).toLowerCase().includes(n)&&e.push(r),e},[])}var Q=5;function oe({item:e,basePath:t,evalVis:n,checkPerm:r,checkCap:i,onAction:a,enablePinning:o,onPinToggle:s,enableReorder:c,resolveObjectLabel:l,resolveDashboardLabel:u,resolveGroupLabel:d,resolveViewLabel:f,resolveItemLabel:p,t:m,templateContext:h}){let{attributes:g,listeners:_,setNodeRef:v,transform:y,transition:b,isDragging:x}=P({id:e.id,disabled:!c});return(0,B.jsx)(`div`,{ref:v,style:{transform:O.Transform.toString(y),transition:b,opacity:x?.5:void 0,zIndex:x?10:void 0},...g,children:(0,B.jsx)($,{item:e,basePath:t,evalVis:n,checkPerm:r,checkCap:i,onAction:a,enablePinning:o,onPinToggle:s,dragListeners:c?_:void 0,resolveObjectLabel:l,resolveDashboardLabel:u,resolveGroupLabel:d,resolveViewLabel:f,resolveItemLabel:p,t:m,templateContext:h})})}function $({item:e,basePath:t,evalVis:i,checkPerm:o,checkCap:l,onAction:_,enablePinning:b,onPinToggle:w,dragListeners:O,resolveObjectLabel:k,resolveDashboardLabel:A,resolveGroupLabel:j,resolveViewLabel:M,resolveItemLabel:N,t:P,templateContext:F}){let I=n(),L=u(),R=L?`min-h-[44px] text-[15px] gap-3 rounded-xl`:void 0,V=f(`shrink-0`,L?`h-5 w-5`:`h-4 w-4`),H=(()=>{let t=e.expanded;if(typeof t==`boolean`)return t;if(typeof e.defaultOpen==`boolean`)return e.defaultOpen})(),U=e.type===`group`?e.children?.length??0:0,[W,ee]=(0,z.useState)(z.useMemo(()=>{if(e.type!==`group`)return!1;let n=e=>{if(!e)return!1;for(let r of e){if(r.type===`group`){if(n(r.children))return!0;continue}let{href:e}=X(r,t,F);if(ae(r,e,I.pathname))return!0}return!1};return n(e.children)},[e,t,I.pathname])?!0:H??!(U>=8));if(!i(e.visible)||e.requiredPermissions?.length&&!o(e.requiredPermissions))return null;let G=e.requiresObject,q=e.requiresService;if(G&&!l(`object`,G)||q&&!l(`service`,q))return null;if(e.type===`separator`)return(0,B.jsx)(d,{className:`my-2`});if(e.type===`group`){let n=(e.children??[]).slice().sort((e,t)=>(e.order??0)-(t.order??0)),r=ne(e,k,P,A,j,M,N);return(0,B.jsx)(a,{open:W,onOpenChange:ee,children:(0,B.jsxs)(c,{children:[(0,B.jsx)(h,{asChild:!0,children:(0,B.jsxs)(E,{className:f(`flex w-full items-center justify-between`,L&&`min-h-[44px] text-[15px] rounded-xl`),children:[r,(0,B.jsx)(v,{className:f(`ml-auto transition-transform`,L?`h-5 w-5`:`h-4 w-4`,W&&`rotate-90`)})]})}),(0,B.jsx)(y,{children:(0,B.jsx)(s,{children:(0,B.jsx)(x,{children:n.map(e=>(0,B.jsx)($,{item:e,basePath:t,evalVis:i,checkPerm:o,checkCap:l,onAction:_,enablePinning:b,onPinToggle:w,resolveObjectLabel:k,resolveDashboardLabel:A,resolveGroupLabel:j,resolveViewLabel:M,resolveItemLabel:N,t:P,templateContext:F},e.id))})})})]})})}if(e.type===`action`){let n=te(e.icon),r=K(e.label,P);return(0,B.jsxs)(g,{children:[O&&(0,B.jsx)(`span`,{className:`absolute left-0.5 top-1/2 -translate-y-1/2 cursor-grab text-muted-foreground`,"aria-label":P?P(`console.nav.dragToReorder`,{defaultValue:`Drag to reorder`}):`Drag to reorder`,...O,children:(0,B.jsx)(D,{className:`h-3.5 w-3.5`})}),(0,B.jsxs)(m,{tooltip:r,onClick:()=>_?.(e),className:R,children:[(0,B.jsx)(n,{className:V}),(0,B.jsx)(`span`,{children:r}),e.badge!=null&&(0,B.jsx)(S,{variant:e.badgeVariant??`default`,className:`ml-auto text-[10px] px-1.5 py-0`,children:e.badge})]}),b&&w&&(0,B.jsx)(p,{showOnHover:!0,onClick:()=>w(e.id,!e.pinned,e,t),"aria-label":P?P(e.pinned?`console.nav.unpinItem`:`console.nav.pinItem`,{defaultValue:e.pinned?`Unpin ${r}`:`Pin ${r}`,name:r}):e.pinned?`Unpin ${r}`:`Pin ${r}`,children:e.pinned?(0,B.jsx)(T,{className:`h-3.5 w-3.5`}):(0,B.jsx)(C,{className:`h-3.5 w-3.5`})})]})}let re=te(e.icon),{href:J,external:ie}=X(e,t,F),Y=ae(e,J,I.pathname),Z=ne(e,k,P,A,j,M,N),Q=(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(re,{className:V}),(0,B.jsx)(`span`,{children:Z}),e.badge!=null&&(0,B.jsx)(S,{variant:e.badgeVariant??`default`,className:`ml-auto text-[10px] px-1.5 py-0`,children:e.badge})]});return(0,B.jsxs)(g,{children:[O&&(0,B.jsx)(`span`,{className:`absolute left-0.5 top-1/2 -translate-y-1/2 cursor-grab text-muted-foreground`,"aria-label":P?P(`console.nav.dragToReorder`,{defaultValue:`Drag to reorder`}):`Drag to reorder`,...O,children:(0,B.jsx)(D,{className:`h-3.5 w-3.5`})}),(0,B.jsx)(m,{asChild:!0,isActive:Y,tooltip:Z,className:R,children:ie?(0,B.jsx)(`a`,{href:J,target:`_blank`,rel:`noopener noreferrer`,children:Q}):(0,B.jsx)(r,{to:J,children:Q})}),b&&w&&(0,B.jsx)(p,{showOnHover:!0,onClick:()=>w(e.id,!e.pinned,e,t),"aria-label":P?P(e.pinned?`console.nav.unpinItem`:`console.nav.pinItem`,{defaultValue:e.pinned?`Unpin ${Z}`:`Pin ${Z}`,name:Z}):e.pinned?`Unpin ${Z}`:`Pin ${Z}`,children:e.pinned?(0,B.jsx)(T,{className:`h-3.5 w-3.5`}):(0,B.jsx)(C,{className:`h-3.5 w-3.5`})})]})}function se({items:e,basePath:t=``,evaluateVisibility:n=q,checkPermission:r=re,checkCapability:i=J,onAction:a,searchQuery:o,enablePinning:l,onPinToggle:u,enableReorder:d,onReorder:f,resolveObjectLabel:p,resolveDashboardLabel:m,resolveGroupLabel:g,resolveViewLabel:_,resolveItemLabel:v,t:y,templateContext:S}){let C=(0,z.useMemo)(()=>o?Z(e,o):e,[e,o]),w=(0,z.useMemo)(()=>ce(C),[C]),T=C.slice().sort((e,t)=>(e.order??0)-(t.order??0)),E=j(M(A,{activationConstraint:{distance:Q}}),M(R)),D=e=>{let{active:t,over:n}=e;if(!n||t.id===n.id||!f)return;let r=T.findIndex(e=>e.id===t.id),i=T.findIndex(e=>e.id===n.id);r===-1||i===-1||f(N(T,r,i).map((e,t)=>({...e,order:t})))},O={basePath:t,evalVis:n,checkPerm:r,checkCap:i,onAction:a,enablePinning:l,onPinToggle:u,resolveObjectLabel:p,resolveDashboardLabel:m,resolveGroupLabel:g,resolveViewLabel:_,resolveItemLabel:v,t:y,templateContext:S},P=T.some(e=>e.type===`group`),V=w.length>0&&l?(0,B.jsxs)(c,{children:[(0,B.jsxs)(h,{className:`flex items-center gap-1.5`,children:[(0,B.jsx)(b,{className:`h-3.5 w-3.5`}),y?y(`console.nav.favorites`,{defaultValue:`Favorites`}):`Favorites`]}),(0,B.jsx)(s,{children:(0,B.jsx)(x,{children:w.map(e=>(0,B.jsx)($,{item:e,...O},`fav-${e.id}`))})})]}):null;if(!P){let e=T.filter(e=>e.type!==`group`).map(e=>e.id);return(0,B.jsxs)(B.Fragment,{children:[V,(0,B.jsx)(c,{children:(0,B.jsx)(s,{children:d?(0,B.jsx)(k,{sensors:E,collisionDetection:F,onDragEnd:D,children:(0,B.jsx)(L,{items:e,strategy:I,children:(0,B.jsx)(x,{children:T.map(e=>(0,B.jsx)(oe,{item:e,enableReorder:d,...O},e.id))})})}):(0,B.jsx)(x,{children:T.map(e=>(0,B.jsx)($,{item:e,...O},e.id))})})})]})}let H=[],U=[],W=e=>{if(U.length===0)return;let t=U;U=[],H.push((0,B.jsx)(c,{children:(0,B.jsx)(s,{children:(0,B.jsx)(x,{children:t.map(e=>(0,B.jsx)($,{item:e,...O},e.id))})})},e))};return T.forEach((e,t)=>{e.type===`group`?(W(`leaf-${t}`),H.push((0,B.jsx)($,{item:e,...O},e.id))):U.push(e)}),W(`leaf-end`),(0,B.jsxs)(B.Fragment,{children:[V,H]})}function ce(e){let t=[];for(let n of e)n.pinned&&n.type!==`group`&&n.type!==`separator`&&t.push(n),n.children?.length&&t.push(...ce(n.children));return t}export{X as n,G as r,se as t};
1
+ import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{_ as t,l as n,r,t as i}from"./vendor-react-slxo-5GC.js";import{$n as a,Ac as o,At as s,Bt as c,Et as l,Io as u,Kt as d,Mt as f,Nt as p,Ot as m,Qn as h,Tt as g,Vs as _,Zn as v,_o as y,ea as b,it as x,jt as S,kt as C,sr as w,ta as T,ui as E,wt as D}from"./ui-components-CqkwtQve.js";import{_ as O,c as k,d as A,n as j,o as M,p as N,s as P,t as F,u as I,v as L,y as R}from"./vendor-dndkit-0M_nRjzm.js";var z=e(t(),1),B=i();function V(e){let t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);if(!t)return null;let n=parseInt(t[1],16)/255,r=parseInt(t[2],16)/255,i=parseInt(t[3],16)/255,a=Math.max(n,r,i),o=Math.min(n,r,i),s=0,c=0,l=(a+o)/2;if(a!==o){let e=a-o;switch(c=l>.5?e/(2-a-o):e/(a+o),a){case n:s=((r-i)/e+(r<i?6:0))/6;break;case r:s=((i-n)/e+2)/6;break;case i:s=((n-r)/e+4)/6;break}}return{h:s*360,s:c*100,l:l*100}}function H(e){let t=V(e);return t?`${Math.round(t.h)} ${Math.round(t.s)}% ${Math.round(t.l)}%`:null}function U(e){let t=V(e);if(!t)return null;let n=Math.max(t.l,65),r=t.s>80?Math.max(t.s-10,70):t.s;return`${Math.round(t.h)} ${Math.round(r)}% ${Math.round(n)}%`}function W(e){let t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);if(!t)return`0 0% 100%`;let n=e=>{let t=e/255;return t<=.03928?t/12.92:((t+.055)/1.055)**2.4},r=n(parseInt(t[1],16)),i=n(parseInt(t[2],16)),a=n(parseInt(t[3],16));return .2126*r+.7152*i+.0722*a>.6?`222 47% 11%`:`0 0% 100%`}function ee(e,t){(0,z.useEffect)(()=>{let n=document.documentElement,r=()=>n.classList.contains(`dark`),i=()=>{if(e?.primaryColor){let t=H(e.primaryColor),i=U(e.primaryColor),a=r()&&i||t;a&&(n.style.setProperty(`--brand-primary`,e.primaryColor),n.style.setProperty(`--brand-primary-hsl`,t||a),n.style.setProperty(`--primary`,a),n.style.setProperty(`--primary-foreground`,r()?`222 47% 11%`:W(e.primaryColor)),n.style.setProperty(`--ring`,a),n.style.setProperty(`--sidebar-primary`,a),n.style.setProperty(`--sidebar-ring`,a))}else n.style.removeProperty(`--brand-primary`),n.style.removeProperty(`--brand-primary-hsl`),n.style.removeProperty(`--primary`),n.style.removeProperty(`--primary-foreground`),n.style.removeProperty(`--ring`),n.style.removeProperty(`--sidebar-primary`),n.style.removeProperty(`--sidebar-ring`);if(e?.accentColor){let t=H(e.accentColor),i=U(e.accentColor),a=r()&&i||t;a&&(n.style.setProperty(`--brand-accent`,e.accentColor),n.style.setProperty(`--brand-accent-hsl`,t||a),n.style.setProperty(`--accent`,a),n.style.setProperty(`--accent-foreground`,r()?`222 47% 11%`:W(e.accentColor)))}else n.style.removeProperty(`--brand-accent`),n.style.removeProperty(`--brand-accent-hsl`),n.style.removeProperty(`--accent`),n.style.removeProperty(`--accent-foreground`)};i();let a=new MutationObserver(e=>{for(let t of e)if(t.type===`attributes`&&t.attributeName===`class`){i();break}});if(a.observe(n,{attributes:!0,attributeFilter:[`class`]}),e?.favicon){let t=document.querySelector(`#favicon`)||document.querySelector(`link[rel="icon"]`);t&&(t.href=e.favicon)}return t&&(document.title=t),()=>{a.disconnect(),n.style.removeProperty(`--brand-primary`),n.style.removeProperty(`--brand-primary-hsl`),n.style.removeProperty(`--brand-accent`),n.style.removeProperty(`--brand-accent-hsl`),n.style.removeProperty(`--primary`),n.style.removeProperty(`--primary-foreground`),n.style.removeProperty(`--ring`),n.style.removeProperty(`--sidebar-primary`),n.style.removeProperty(`--sidebar-ring`),n.style.removeProperty(`--accent`),n.style.removeProperty(`--accent-foreground`)}},[e?.primaryColor,e?.accentColor,e?.favicon,t])}function G({sidebar:e,navbar:t,children:n,className:r,defaultOpen:i=!0,branding:a}){return ee(a,a?.title),(0,B.jsxs)(p,{defaultOpen:i,className:`!flex-col h-svh overflow-hidden`,children:[(0,B.jsx)(`header`,{className:`sticky top-0 z-30 flex h-14 w-full shrink-0 items-center gap-2 border-b bg-background px-2 sm:px-4`,children:t}),(0,B.jsxs)(`div`,{className:`flex flex-1 min-h-0 w-full`,children:[e,(0,B.jsx)(m,{className:`min-w-0`,children:(0,B.jsx)(`main`,{className:o(`flex-1 min-w-0 overflow-auto p-3 sm:p-4 md:p-6 pb-20 sm:pb-4 md:pb-6`,r),children:n})})]})]})}function te(e){return e?x(e):u}function K(e,t){if(typeof e==`string`)return e;if(t){let n=t(e.key,{defaultValue:e.defaultValue,...e.params});if(n&&n!==e.key)return n}return e.defaultValue||e.key}function ne(e,t,n,r,i,a,o){let s=K(e.label,n);if(typeof e.label!=`string`)return s;if(e.type===`object`&&e.objectName){if(e.viewName)return a?a(e.objectName,e.viewName,s):s;if(t)return t(e.objectName,s)}return r&&e.type===`dashboard`&&e.dashboardName?r(e.dashboardName,s):i&&e.type===`group`&&e.id?i(e.id,s):o&&e.id?o(e.id,s):s}var q=e=>!(e===!1||e===`false`),re=()=>!0,J=()=>!0,ie=/\{(current_user_id|current_org_id|[a-z][a-z0-9_]*)\}/g;function Y(e,t){if(!e.includes(`{`))return e;let n=!1,r=e.replace(ie,(e,r)=>{let i;return i=r===`current_user_id`?t?.currentUserId:r===`current_org_id`?t?.currentOrgId:t?.contextValues?.[r],i||(n=!0,``)});return n?null:r}function X(e,t,n){switch(e.type){case`object`:{let r=`${t}/${e.objectName??``}`,i=e.recordId;if(i){let t=Y(i,n);if(t){let n=`${r}/record/${encodeURIComponent(t)}`;return{href:e.recordMode===`edit`?`${n}/edit`:n,external:!1}}}return{href:e.viewName?`${r}/view/${e.viewName}`:r,external:!1}}case`dashboard`:return{href:e.dashboardName?`${t}/dashboard/${e.dashboardName}`:`#`,external:!1};case`page`:{if(!e.pageName)return{href:`#`,external:!1};let r=e.params,i=`${t}/page/${e.pageName}`;if(r&&typeof r==`object`){let e=new URLSearchParams;for(let[t,i]of Object.entries(r))if(i!=null)if(typeof i==`string`){let r=Y(i,n);r!==null&&e.set(t,r)}else e.set(t,JSON.stringify(i));let t=e.toString();t&&(i+=`?${t}`)}return{href:i,external:!1}}case`report`:return{href:e.reportName?`${t}/report/${e.reportName}`:`#`,external:!1};case`url`:return{href:e.url??`#`,external:e.target===`_blank`};case`component`:{let r=e.componentRef;if(!r)return{href:`#`,external:!1};let i=r.split(`:`).filter(Boolean);if(i.length===0)return{href:`#`,external:!1};let a=e.params;if(i[0]===`metadata`){let e=i[1],r=a&&typeof a.type==`string`?a.type:void 0,o=a&&typeof a.name==`string`?a.name:void 0,s=``;if(a&&typeof a==`object`){let e=new URLSearchParams;for(let[t,r]of Object.entries(a))if(!(t===`type`||t===`name`)&&r!=null)if(typeof r==`string`){let i=Y(r,n);i&&e.set(t,i)}else e.set(t,JSON.stringify(r));let t=e.toString();t&&(s=`?${t}`)}return e===`directory`||!e?{href:`${t}/metadata${s}`,external:!1}:e===`resource`&&r?{href:`${t}/metadata${o?`/${encodeURIComponent(r)}/${encodeURIComponent(o)}`:`/${encodeURIComponent(r)}`}${s}`,external:!1}:{href:`${t}/metadata${s}`,external:!1}}let o=`${t}/component/${i.join(`/`)}`;if(a&&typeof a==`object`){let e=new URLSearchParams;for(let[t,n]of Object.entries(a))n!=null&&e.set(t,typeof n==`string`?n:JSON.stringify(n));let t=e.toString();t&&(o+=`?${t}`)}return{href:o,external:!1}}default:return{href:`#`,external:!1}}}function ae(e,t,n){if(t===`#`)return!1;if(n===t)return!0;let r=e.componentRef;return r&&r.split(`:`)[1]===`directory`?!1:e.type===`object`&&e.objectName?!(e.viewName||!n.startsWith(`${t}/`)||n.slice(t.length+1).startsWith(`view/`)):n.startsWith(`${t}/`)}function Z(e,t){if(!t.trim())return e;let n=t.toLowerCase().trim();return e.reduce((e,r)=>{if(r.type===`separator`)return e;if(r.type===`group`&&r.children?.length){let n=Z(r.children,t);return n.length>0&&e.push({...r,children:n}),e}return K(r.label).toLowerCase().includes(n)&&e.push(r),e},[])}var Q=5;function oe({item:e,basePath:t,evalVis:n,checkPerm:r,checkCap:i,onAction:a,enablePinning:o,onPinToggle:s,enableReorder:c,resolveObjectLabel:l,resolveDashboardLabel:u,resolveGroupLabel:d,resolveViewLabel:f,resolveItemLabel:p,t:m,templateContext:h}){let{attributes:g,listeners:_,setNodeRef:v,transform:y,transition:b,isDragging:x}=M({id:e.id,disabled:!c});return(0,B.jsx)(`div`,{ref:v,style:{transform:R.Transform.toString(y),transition:b,opacity:x?.5:void 0,zIndex:x?10:void 0},...g,children:(0,B.jsx)($,{item:e,basePath:t,evalVis:n,checkPerm:r,checkCap:i,onAction:a,enablePinning:o,onPinToggle:s,dragListeners:c?_:void 0,resolveObjectLabel:l,resolveDashboardLabel:u,resolveGroupLabel:d,resolveViewLabel:f,resolveItemLabel:p,t:m,templateContext:h})})}function $({item:e,basePath:t,evalVis:i,checkPerm:u,checkCap:p,onAction:m,enablePinning:x,onPinToggle:E,dragListeners:O,resolveObjectLabel:k,resolveDashboardLabel:A,resolveGroupLabel:j,resolveViewLabel:M,resolveItemLabel:N,t:P,templateContext:F}){let I=n(),L=c(),R=L?`min-h-[44px] text-[15px] gap-3 rounded-xl`:void 0,V=o(`shrink-0`,L?`h-5 w-5`:`h-4 w-4`),H=(()=>{let t=e.expanded;if(typeof t==`boolean`)return t;if(typeof e.defaultOpen==`boolean`)return e.defaultOpen})(),U=e.type===`group`?e.children?.length??0:0,[W,ee]=(0,z.useState)(z.useMemo(()=>{if(e.type!==`group`)return!1;let n=e=>{if(!e)return!1;for(let r of e){if(r.type===`group`){if(n(r.children))return!0;continue}let{href:e}=X(r,t,F);if(ae(r,e,I.pathname))return!0}return!1};return n(e.children)},[e,t,I.pathname])?!0:H??!(U>=8));if(!i(e.visible)||e.requiredPermissions?.length&&!u(e.requiredPermissions))return null;let G=e.requiresObject,q=e.requiresService;if(G&&!p(`object`,G)||q&&!p(`service`,q))return null;if(e.type===`separator`)return(0,B.jsx)(d,{className:`my-2`});if(e.type===`group`){let n=(e.children??[]).slice().sort((e,t)=>(e.order??0)-(t.order??0)),r=ne(e,k,P,A,j,M,N);return(0,B.jsx)(v,{open:W,onOpenChange:ee,children:(0,B.jsxs)(D,{children:[(0,B.jsx)(l,{asChild:!0,children:(0,B.jsxs)(a,{className:o(`flex w-full items-center justify-between`,L&&`min-h-[44px] text-[15px] rounded-xl`),children:[r,(0,B.jsx)(_,{className:o(`ml-auto transition-transform`,L?`h-5 w-5`:`h-4 w-4`,W&&`rotate-90`)})]})}),(0,B.jsx)(h,{children:(0,B.jsx)(g,{children:(0,B.jsx)(C,{children:n.map(e=>(0,B.jsx)($,{item:e,basePath:t,evalVis:i,checkPerm:u,checkCap:p,onAction:m,enablePinning:x,onPinToggle:E,resolveObjectLabel:k,resolveDashboardLabel:A,resolveGroupLabel:j,resolveViewLabel:M,resolveItemLabel:N,t:P,templateContext:F},e.id))})})})]})})}if(e.type===`action`){let n=te(e.icon),r=K(e.label,P);return(0,B.jsxs)(f,{children:[O&&(0,B.jsx)(`span`,{className:`absolute left-0.5 top-1/2 -translate-y-1/2 cursor-grab text-muted-foreground`,"aria-label":P?P(`console.nav.dragToReorder`,{defaultValue:`Drag to reorder`}):`Drag to reorder`,...O,children:(0,B.jsx)(y,{className:`h-3.5 w-3.5`})}),(0,B.jsxs)(S,{tooltip:r,onClick:()=>m?.(e),className:R,children:[(0,B.jsx)(n,{className:V}),(0,B.jsx)(`span`,{children:r}),e.badge!=null&&(0,B.jsx)(w,{variant:e.badgeVariant??`default`,className:`ml-auto text-[10px] px-1.5 py-0`,children:e.badge})]}),x&&E&&(0,B.jsx)(s,{showOnHover:!0,onClick:()=>E(e.id,!e.pinned,e,t),"aria-label":P?P(e.pinned?`console.nav.unpinItem`:`console.nav.pinItem`,{defaultValue:e.pinned?`Unpin ${r}`:`Pin ${r}`,name:r}):e.pinned?`Unpin ${r}`:`Pin ${r}`,children:e.pinned?(0,B.jsx)(T,{className:`h-3.5 w-3.5`}):(0,B.jsx)(b,{className:`h-3.5 w-3.5`})})]})}let re=te(e.icon),{href:J,external:ie}=X(e,t,F),Y=ae(e,J,I.pathname),Z=ne(e,k,P,A,j,M,N),Q=(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(re,{className:V}),(0,B.jsx)(`span`,{children:Z}),e.badge!=null&&(0,B.jsx)(w,{variant:e.badgeVariant??`default`,className:`ml-auto text-[10px] px-1.5 py-0`,children:e.badge})]});return(0,B.jsxs)(f,{children:[O&&(0,B.jsx)(`span`,{className:`absolute left-0.5 top-1/2 -translate-y-1/2 cursor-grab text-muted-foreground`,"aria-label":P?P(`console.nav.dragToReorder`,{defaultValue:`Drag to reorder`}):`Drag to reorder`,...O,children:(0,B.jsx)(y,{className:`h-3.5 w-3.5`})}),(0,B.jsx)(S,{asChild:!0,isActive:Y,tooltip:Z,className:R,children:ie?(0,B.jsx)(`a`,{href:J,target:`_blank`,rel:`noopener noreferrer`,children:Q}):(0,B.jsx)(r,{to:J,children:Q})}),x&&E&&(0,B.jsx)(s,{showOnHover:!0,onClick:()=>E(e.id,!e.pinned,e,t),"aria-label":P?P(e.pinned?`console.nav.unpinItem`:`console.nav.pinItem`,{defaultValue:e.pinned?`Unpin ${Z}`:`Pin ${Z}`,name:Z}):e.pinned?`Unpin ${Z}`:`Pin ${Z}`,children:e.pinned?(0,B.jsx)(T,{className:`h-3.5 w-3.5`}):(0,B.jsx)(b,{className:`h-3.5 w-3.5`})})]})}function se({items:e,basePath:t=``,evaluateVisibility:n=q,checkPermission:r=re,checkCapability:i=J,onAction:a,searchQuery:o,enablePinning:s,onPinToggle:c,enableReorder:u,onReorder:d,resolveObjectLabel:f,resolveDashboardLabel:p,resolveGroupLabel:m,resolveViewLabel:h,resolveItemLabel:_,t:v,templateContext:y}){let b=(0,z.useMemo)(()=>o?Z(e,o):e,[e,o]),x=(0,z.useMemo)(()=>ce(b),[b]),S=b.slice().sort((e,t)=>(e.order??0)-(t.order??0)),w=L(O(A,{activationConstraint:{distance:Q}}),O(I)),T=e=>{let{active:t,over:n}=e;if(!n||t.id===n.id||!d)return;let r=S.findIndex(e=>e.id===t.id),i=S.findIndex(e=>e.id===n.id);r===-1||i===-1||d(j(S,r,i).map((e,t)=>({...e,order:t})))},M={basePath:t,evalVis:n,checkPerm:r,checkCap:i,onAction:a,enablePinning:s,onPinToggle:c,resolveObjectLabel:f,resolveDashboardLabel:p,resolveGroupLabel:m,resolveViewLabel:h,resolveItemLabel:_,t:v,templateContext:y},R=S.some(e=>e.type===`group`),V=x.length>0&&s?(0,B.jsxs)(D,{children:[(0,B.jsxs)(l,{className:`flex items-center gap-1.5`,children:[(0,B.jsx)(E,{className:`h-3.5 w-3.5`}),v?v(`console.nav.favorites`,{defaultValue:`Favorites`}):`Favorites`]}),(0,B.jsx)(g,{children:(0,B.jsx)(C,{children:x.map(e=>(0,B.jsx)($,{item:e,...M},`fav-${e.id}`))})})]}):null;if(!R){let e=S.filter(e=>e.type!==`group`).map(e=>e.id);return(0,B.jsxs)(B.Fragment,{children:[V,(0,B.jsx)(D,{children:(0,B.jsx)(g,{children:u?(0,B.jsx)(k,{sensors:w,collisionDetection:N,onDragEnd:T,children:(0,B.jsx)(F,{items:e,strategy:P,children:(0,B.jsx)(C,{children:S.map(e=>(0,B.jsx)(oe,{item:e,enableReorder:u,...M},e.id))})})}):(0,B.jsx)(C,{children:S.map(e=>(0,B.jsx)($,{item:e,...M},e.id))})})})]})}let H=[],U=[],W=e=>{if(U.length===0)return;let t=U;U=[],H.push((0,B.jsx)(D,{children:(0,B.jsx)(g,{children:(0,B.jsx)(C,{children:t.map(e=>(0,B.jsx)($,{item:e,...M},e.id))})})},e))};return S.forEach((e,t)=>{e.type===`group`?(W(`leaf-${t}`),H.push((0,B.jsx)($,{item:e,...M},e.id))):U.push(e)}),W(`leaf-end`),(0,B.jsxs)(B.Fragment,{children:[V,H]})}function ce(e){let t=[];for(let n of e)n.pinned&&n.type!==`group`&&n.type!==`separator`&&t.push(n),n.children?.length&&t.push(...ce(n.children));return t}export{X as n,G as r,se as t};
@@ -1 +1 @@
1
- import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{_ as t,t as n}from"./vendor-react-slxo-5GC.js";import{f as r}from"./infrastructure-BySW-NB0.js";import{V as i,j as a}from"./framework-BGQ7DoWM.js";import{An as o,Dn as s,En as c,Gt as l,Jn as u,Kt as d,Mc as f,On as p,Qn as m,Tr as h,Ut as g,Wt as _,Yn as v,Zn as ee,kn as y,qn as b,qt as x}from"./ui-components-J75dr3Ae.js";import{n as S}from"./plugin-form-B73E4Mbd.js";import{t as C}from"./recordFormNavigation-CXt3jCB4.js";var w=e(t(),1),T=n(),E=(0,w.createContext)({favorites:null,recent:null}),D=(0,w.createContext)(null);function O({children:e}){let[t,n]=(0,w.useState)({favorites:null,recent:null}),r=(0,w.useRef)({attach:(e,t)=>{n(n=>n[e]===t?n:{...n,[e]:t})}});return(0,T.jsx)(D.Provider,{value:r.current,children:(0,T.jsx)(E.Provider,{value:t,children:e})})}function k(e){return(0,w.useContext)(E)[e]}function A(){let e=(0,w.useContext)(D);return(0,w.useCallback)((t,n)=>{e?.attach(t,n)},[e])}function j(e,t){return t?`${e}:u:${t}`:e}function M(e,t){let n=(0,w.useRef)(t);n.current=t,(0,w.useEffect)(()=>{if(typeof window>`u`)return;let t=t=>{if(!(t.key!==e||t.storageArea!==localStorage)){if(t.newValue==null){n.current(null);return}try{n.current(JSON.parse(t.newValue))}catch{n.current(null)}}};return window.addEventListener(`storage`,t),()=>window.removeEventListener(`storage`,t)},[e])}function N(e,t=500){let n=null,r=null,i=!1,a=async()=>{if(n&&=(clearTimeout(n),null),!i)return;let t=r;i=!1,r=null;try{await e(t)}catch{}};return{schedule:e=>{r=e,i=!0,n&&clearTimeout(n),n=setTimeout(()=>{n=null,a()},t)},flush:a,cancel:()=>{n&&clearTimeout(n),n=null,i=!1,r=null}}}var P=`objectui-recent-items`,F=8;function I(e){try{let t=localStorage.getItem(j(P,e));return t?JSON.parse(t):[]}catch{return[]}}function L(e,t){try{localStorage.setItem(j(P,t),JSON.stringify(e))}catch{}}var R=(0,w.createContext)(null);function z({children:e}){let{user:t}=r(),n=t?.id??null,i=k(`recent`),[a,o]=(0,w.useState)(()=>I(n));(0,w.useEffect)(()=>{o(I(n))},[n]),M(j(P,n),e=>{o(Array.isArray(e)?e.filter(e=>e&&typeof e.id==`string`).slice(0,F):[])});let s=(0,w.useRef)(0);(0,w.useEffect)(()=>{if(!i)return;let e=++s.current,t=!1;return(async()=>{try{let r=await i.load();if(t||e!==s.current)return;let a=(Array.isArray(r)?r:[]).filter(e=>e&&typeof e.id==`string`).slice(0,F);o(a),L(a,n)}catch{}})(),()=>{t=!0}},[i,n]);let c=(0,w.useMemo)(()=>N(async e=>{i&&await i.save(e)},500),[i]);(0,w.useEffect)(()=>()=>{c.flush()},[c]);let l=(0,w.useCallback)(e=>{L(e,n),i&&c.schedule(e)},[n,i,c]),u=(0,w.useCallback)(e=>{o(t=>{let n=t.filter(t=>t.id!==e.id),r=[{...e,visitedAt:new Date().toISOString()},...n].slice(0,F);return l(r),r})},[l]),d=(0,w.useCallback)(()=>{o([]),l([])},[l]),f=(0,w.useMemo)(()=>({recentItems:a,addRecentItem:u,clearRecentItems:d}),[a,u,d]);return(0,T.jsx)(R.Provider,{value:f,children:e})}function B(){return(0,w.useContext)(R)||{recentItems:[],addRecentItem:()=>{},clearRecentItems:()=>{}}}var V=`objectui-favorites`,H=`objectui-nav-pins`,U=20,W=20;function G(e){let t=0,n=0,r=!1;for(let i of e)i.type===`nav`?(n++,n>W&&(r=!0)):(t++,t>U&&(r=!0));if(!r)return e;let i=[],a=0,o=0;for(let t of e)t.type===`nav`?o<W&&(i.push(t),o++):a<U&&(i.push(t),a++);return i}function K(e){try{let t=localStorage.getItem(j(V,e));return t?JSON.parse(t):[]}catch{return[]}}function q(e,t){try{localStorage.setItem(j(V,t),JSON.stringify(e))}catch{}}function J(e){let t;try{t=localStorage.getItem(H)}catch{return{migrated:e,didMigrate:!1}}if(!t)return{migrated:e,didMigrate:!1};let n=[];try{let e=JSON.parse(t);Array.isArray(e)&&(n=e.filter(e=>typeof e==`string`))}catch{}try{localStorage.removeItem(H)}catch{}if(n.length===0)return{migrated:e,didMigrate:!1};let r=new Set(e.filter(e=>e.type===`nav`&&e.navId).map(e=>e.navId)),i=new Date().toISOString(),a=[];for(let e of n)r.has(e)||a.push({id:`nav:${e}`,label:e,href:``,type:`nav`,navId:e,pinned:!0,favoritedAt:i});return a.length===0?{migrated:e,didMigrate:!0}:{migrated:[...e,...a],didMigrate:!0}}var Y=(0,w.createContext)(null);function X({children:e}){let{user:t}=r(),n=t?.id??null,i=k(`favorites`),[a,o]=(0,w.useState)(()=>K(n));(0,w.useEffect)(()=>{o(K(n))},[n]),M(j(V,n),e=>{o(Array.isArray(e)?G(e.filter(e=>e&&typeof e.id==`string`)):[])});let s=(0,w.useRef)(0);(0,w.useEffect)(()=>{if(!i)return;let e=++s.current,t=!1;return(async()=>{try{let r=await i.load();if(t||e!==s.current)return;let a=G((Array.isArray(r)?r:[]).filter(e=>e&&typeof e.id==`string`)),l=K(n),u=new Set(a.filter(e=>e.type===`nav`&&e.navId).map(e=>e.navId)),d=l.filter(e=>e.type===`nav`&&e.navId&&!u.has(e.navId)),f=a,p=!1;d.length>0&&(f=G([...a,...d]),p=!0);let{migrated:m,didMigrate:h}=J(f);h&&(f=G(m),p=!0),o(f),q(f,n),p&&c.schedule(f)}catch{}})(),()=>{t=!0}},[i,n]),(0,w.useEffect)(()=>{i||o(e=>{let{migrated:t,didMigrate:r}=J(e);if(!r)return e;let i=G(t);return q(i,n),i})},[i,n]);let c=(0,w.useMemo)(()=>N(async e=>{i&&await i.save(e)},500),[i]);(0,w.useEffect)(()=>()=>{c.flush()},[c]);let l=(0,w.useCallback)(e=>{q(e,n),i&&c.schedule(e)},[n,i,c]),u=(0,w.useCallback)(e=>{o(t=>{if(t.some(t=>t.id===e.id))return t;let n=G([{...e,favoritedAt:new Date().toISOString()},...t]);return l(n),n})},[l]),d=(0,w.useCallback)(e=>{o(t=>{let n=t.filter(t=>t.id!==e);return l(n),n})},[l]),f=(0,w.useCallback)(e=>{o(t=>{let n=t.some(t=>t.id===e.id)?t.filter(t=>t.id!==e.id):G([{...e,favoritedAt:new Date().toISOString()},...t]);return l(n),n})},[l]),p=(0,w.useCallback)(()=>{o([]),l([])},[l]),m=(0,w.useCallback)((e,t)=>{!e||!t||o(n=>{let r=!1,i=n.map(n=>n.id===e&&n.label!==t?(r=!0,{...n,label:t}):n);return r?(l(i),i):n})},[l]),h=(0,w.useCallback)((e,t)=>{o(n=>{let r=!1,i=n.map(n=>n.id!==e||!!n.pinned===t?n:(r=!0,{...n,pinned:t}));return r?(l(i),i):n})},[l]),g=(0,w.useMemo)(()=>{let e=new Set;for(let t of a)t.pinned&&t.type===`nav`&&t.navId&&e.add(t.navId);return{favorites:a,addFavorite:u,removeFavorite:d,toggleFavorite:f,isFavorite:e=>a.some(t=>t.id===e),clearFavorites:p,refreshLabel:m,setPinned:h,isPinned:e=>a.some(t=>t.id===e&&!!t.pinned),pinnedNavIds:e}},[a,u,d,f,p,m,h]);return(0,T.jsx)(Y.Provider,{value:g,children:e})}function Z(){return(0,w.useContext)(Y)||{favorites:[],addFavorite:()=>{},removeFavorite:()=>{},toggleFavorite:()=>{},isFavorite:()=>!1,clearFavorites:()=>{},refreshLabel:()=>{},setPinned:()=>{},isPinned:()=>!1,pinnedNavIds:new Set}}function Q(){return`${``.replace(/\/$/,``)}/api/v1`}async function $(e,t){let n=await fetch(`${Q()}${e}`,{credentials:`include`,headers:{"Content-Type":`application/json`,...t?.headers||{}},...t}),r=null;try{r=await n.json()}catch{}if(!n.ok){let e=Error(r?.error||`HTTP ${n.status}`);throw e.code=r?.code??`HTTP_${n.status}`,e.status=n.status,e}return r}function te(e,t,n){let[r,i]=(0,w.useState)(!1),[a,o]=(0,w.useState)(!0),[s,c]=(0,w.useState)([]),l=(0,w.useRef)(!1),u=(0,w.useCallback)(async()=>{if(!(!e||!t)&&!l.current){i(!0);try{c((await $(`/approvals/requests?object=${encodeURIComponent(e)}&recordId=${encodeURIComponent(t)}`))?.data??[]),o(!0)}catch(e){(e?.status===404||e?.status===501)&&(l.current=!0,o(!1))}finally{i(!1)}}},[e,t]);(0,w.useEffect)(()=>{if(!e||!t){c([]);return}u()},[e,t,u]);let d=(0,w.useMemo)(()=>s.find(e=>e.status===`pending`)??null,[s]),f=(0,w.useMemo)(()=>s.length===0?null:[...s].sort((e,t)=>{let n=e.submitted_at||e.completed_at||``;return(t.submitted_at||t.completed_at||``).localeCompare(n)})[0]??null,[s]),p=!!d&&!!n&&(d.pending_approvers??[]).includes(n),m=(0,w.useCallback)(async(e,t)=>{if(!d)throw Error(`No pending request`);let r=await $(`/approvals/requests/${encodeURIComponent(d.id)}/${e}`,{method:`POST`,body:JSON.stringify({...n?{actorId:n}:{},...t?.comment?{comment:t.comment}:{}})});return await u(),r?.request},[d,n,u]);return{loading:r,available:a,pendingRequest:d,latestRequest:f,canDecide:p,approve:(0,w.useCallback)(e=>m(`approve`,e),[m]),reject:(0,w.useCallback)(e=>m(`reject`,e),[m]),refresh:u}}var ne={sm:`sm:max-w-sm`,default:`sm:max-w-lg`,lg:`sm:max-w-2xl`,xl:`sm:max-w-5xl`,full:`sm:max-w-[95vw] sm:w-full`},re={lg:`sm:max-w-2xl`,xl:`sm:max-w-3xl`,full:`sm:max-w-[95vw]`};function ie(e){if(typeof e==`string`){let t=e.match(/^(create|new|add|edit|update)_(.+)$/);return t?{objectName:t[2],mode:t[1]===`edit`||t[1]===`update`?`edit`:`create`}:{objectName:e,mode:`create`}}return e&&typeof e==`object`?e.type&&!e.content&&!e.objectName&&!e.placement?{content:e}:e:{}}function ae(e){let[t,n]=(0,w.useState)(null),{objects:r}=a(),E=(0,w.useCallback)(e=>{n(t=>(t?.resolve(e),null))},[]),D=(0,w.useCallback)(e=>new Promise(t=>{n({d:ie(e),resolve:t})}),[]),O=null;if(t){let n=t.d,a=e=>{e||E({success:!1})};if(n.objectName&&!n.content){let t=n.fields||n.sections?{}:C(r.find(e=>e?.name===n.objectName));O=(0,T.jsx)(S,{schema:{type:`object-form`,formType:`modal`,objectName:n.objectName,mode:n.mode||`create`,recordId:n.recordId,title:n.title,description:n.description,fields:n.fields,...t,modalSize:n.size,open:!0,onOpenChange:a,onSuccess:e=>E({success:!0,reload:!0,data:e}),onCancel:()=>E({success:!1}),showSubmit:!0,showCancel:!0},dataSource:e})}else{let e=n.placement||`center`,t=n.content?(0,T.jsx)(i,{schema:n.content}):n.description?(0,T.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:n.description}):null;O=e===`side`?(0,T.jsx)(g,{open:!0,onOpenChange:a,children:(0,T.jsxs)(_,{side:n.side||`right`,className:f(`w-full overflow-y-auto`,re[n.size||`default`]),children:[n.title&&(0,T.jsxs)(d,{children:[(0,T.jsx)(x,{children:n.title}),n.description&&(0,T.jsx)(l,{children:n.description})]}),(0,T.jsx)(`div`,{className:`py-3`,children:t})]})}):e===`bottom`?(0,T.jsx)(c,{open:!0,onOpenChange:a,children:(0,T.jsxs)(s,{children:[n.title&&(0,T.jsxs)(y,{children:[(0,T.jsx)(o,{children:n.title}),n.description&&(0,T.jsx)(p,{children:n.description})]}),(0,T.jsx)(`div`,{className:`max-h-[75vh] overflow-y-auto px-4 pb-6`,children:t})]})}):(0,T.jsx)(b,{open:!0,onOpenChange:a,children:(0,T.jsxs)(u,{className:f(e===`fullscreen`?`h-[95vh] w-full max-w-[98vw] overflow-y-auto`:ne[n.size||`default`]),children:[n.title&&(0,T.jsxs)(ee,{children:[(0,T.jsx)(m,{children:n.title}),n.description&&(0,T.jsx)(v,{children:n.description})]}),(0,T.jsx)(`div`,{children:t}),!n.content&&(0,T.jsx)(`div`,{className:`flex justify-end`,children:(0,T.jsx)(h,{onClick:()=>E({success:!0}),children:`OK`})})]})})}}return{modalHandler:D,modalElement:O,closeModal:E}}export{z as a,A as c,Z as i,te as n,B as o,X as r,O as s,ae as t};
1
+ import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{_ as t,t as n}from"./vendor-react-slxo-5GC.js";import{f as r}from"./infrastructure-BySW-NB0.js";import{V as i,j as a}from"./framework-C3RMhKDr.js";import{Ac as o,Cr as s,Dn as c,En as l,Gn as u,Gt as d,Ht as f,Kn as p,On as m,Tn as h,Ut as g,Vt as _,Wt as v,Xn as ee,Yn as y,qn as b,wn as x}from"./ui-components-CqkwtQve.js";import{n as S}from"./plugin-form-ji-Rgf2e.js";import{t as C}from"./recordFormNavigation-CXt3jCB4.js";var w=e(t(),1),T=n(),E=(0,w.createContext)({favorites:null,recent:null}),D=(0,w.createContext)(null);function O({children:e}){let[t,n]=(0,w.useState)({favorites:null,recent:null}),r=(0,w.useRef)({attach:(e,t)=>{n(n=>n[e]===t?n:{...n,[e]:t})}});return(0,T.jsx)(D.Provider,{value:r.current,children:(0,T.jsx)(E.Provider,{value:t,children:e})})}function k(e){return(0,w.useContext)(E)[e]}function A(){let e=(0,w.useContext)(D);return(0,w.useCallback)((t,n)=>{e?.attach(t,n)},[e])}function j(e,t){return t?`${e}:u:${t}`:e}function M(e,t){let n=(0,w.useRef)(t);n.current=t,(0,w.useEffect)(()=>{if(typeof window>`u`)return;let t=t=>{if(!(t.key!==e||t.storageArea!==localStorage)){if(t.newValue==null){n.current(null);return}try{n.current(JSON.parse(t.newValue))}catch{n.current(null)}}};return window.addEventListener(`storage`,t),()=>window.removeEventListener(`storage`,t)},[e])}function N(e,t=500){let n=null,r=null,i=!1,a=async()=>{if(n&&=(clearTimeout(n),null),!i)return;let t=r;i=!1,r=null;try{await e(t)}catch{}};return{schedule:e=>{r=e,i=!0,n&&clearTimeout(n),n=setTimeout(()=>{n=null,a()},t)},flush:a,cancel:()=>{n&&clearTimeout(n),n=null,i=!1,r=null}}}var P=`objectui-recent-items`,F=8;function I(e){try{let t=localStorage.getItem(j(P,e));return t?JSON.parse(t):[]}catch{return[]}}function L(e,t){try{localStorage.setItem(j(P,t),JSON.stringify(e))}catch{}}var R=(0,w.createContext)(null);function z({children:e}){let{user:t}=r(),n=t?.id??null,i=k(`recent`),[a,o]=(0,w.useState)(()=>I(n));(0,w.useEffect)(()=>{o(I(n))},[n]),M(j(P,n),e=>{o(Array.isArray(e)?e.filter(e=>e&&typeof e.id==`string`).slice(0,F):[])});let s=(0,w.useRef)(0);(0,w.useEffect)(()=>{if(!i)return;let e=++s.current,t=!1;return(async()=>{try{let r=await i.load();if(t||e!==s.current)return;let a=(Array.isArray(r)?r:[]).filter(e=>e&&typeof e.id==`string`).slice(0,F);o(a),L(a,n)}catch{}})(),()=>{t=!0}},[i,n]);let c=(0,w.useMemo)(()=>N(async e=>{i&&await i.save(e)},500),[i]);(0,w.useEffect)(()=>()=>{c.flush()},[c]);let l=(0,w.useCallback)(e=>{L(e,n),i&&c.schedule(e)},[n,i,c]),u=(0,w.useCallback)(e=>{o(t=>{let n=t.filter(t=>t.id!==e.id),r=[{...e,visitedAt:new Date().toISOString()},...n].slice(0,F);return l(r),r})},[l]),d=(0,w.useCallback)(()=>{o([]),l([])},[l]),f=(0,w.useMemo)(()=>({recentItems:a,addRecentItem:u,clearRecentItems:d}),[a,u,d]);return(0,T.jsx)(R.Provider,{value:f,children:e})}function B(){return(0,w.useContext)(R)||{recentItems:[],addRecentItem:()=>{},clearRecentItems:()=>{}}}var V=`objectui-favorites`,H=`objectui-nav-pins`,U=20,W=20;function G(e){let t=0,n=0,r=!1;for(let i of e)i.type===`nav`?(n++,n>W&&(r=!0)):(t++,t>U&&(r=!0));if(!r)return e;let i=[],a=0,o=0;for(let t of e)t.type===`nav`?o<W&&(i.push(t),o++):a<U&&(i.push(t),a++);return i}function K(e){try{let t=localStorage.getItem(j(V,e));return t?JSON.parse(t):[]}catch{return[]}}function q(e,t){try{localStorage.setItem(j(V,t),JSON.stringify(e))}catch{}}function J(e){let t;try{t=localStorage.getItem(H)}catch{return{migrated:e,didMigrate:!1}}if(!t)return{migrated:e,didMigrate:!1};let n=[];try{let e=JSON.parse(t);Array.isArray(e)&&(n=e.filter(e=>typeof e==`string`))}catch{}try{localStorage.removeItem(H)}catch{}if(n.length===0)return{migrated:e,didMigrate:!1};let r=new Set(e.filter(e=>e.type===`nav`&&e.navId).map(e=>e.navId)),i=new Date().toISOString(),a=[];for(let e of n)r.has(e)||a.push({id:`nav:${e}`,label:e,href:``,type:`nav`,navId:e,pinned:!0,favoritedAt:i});return a.length===0?{migrated:e,didMigrate:!0}:{migrated:[...e,...a],didMigrate:!0}}var Y=(0,w.createContext)(null);function X({children:e}){let{user:t}=r(),n=t?.id??null,i=k(`favorites`),[a,o]=(0,w.useState)(()=>K(n));(0,w.useEffect)(()=>{o(K(n))},[n]),M(j(V,n),e=>{o(Array.isArray(e)?G(e.filter(e=>e&&typeof e.id==`string`)):[])});let s=(0,w.useRef)(0);(0,w.useEffect)(()=>{if(!i)return;let e=++s.current,t=!1;return(async()=>{try{let r=await i.load();if(t||e!==s.current)return;let a=G((Array.isArray(r)?r:[]).filter(e=>e&&typeof e.id==`string`)),l=K(n),u=new Set(a.filter(e=>e.type===`nav`&&e.navId).map(e=>e.navId)),d=l.filter(e=>e.type===`nav`&&e.navId&&!u.has(e.navId)),f=a,p=!1;d.length>0&&(f=G([...a,...d]),p=!0);let{migrated:m,didMigrate:h}=J(f);h&&(f=G(m),p=!0),o(f),q(f,n),p&&c.schedule(f)}catch{}})(),()=>{t=!0}},[i,n]),(0,w.useEffect)(()=>{i||o(e=>{let{migrated:t,didMigrate:r}=J(e);if(!r)return e;let i=G(t);return q(i,n),i})},[i,n]);let c=(0,w.useMemo)(()=>N(async e=>{i&&await i.save(e)},500),[i]);(0,w.useEffect)(()=>()=>{c.flush()},[c]);let l=(0,w.useCallback)(e=>{q(e,n),i&&c.schedule(e)},[n,i,c]),u=(0,w.useCallback)(e=>{o(t=>{if(t.some(t=>t.id===e.id))return t;let n=G([{...e,favoritedAt:new Date().toISOString()},...t]);return l(n),n})},[l]),d=(0,w.useCallback)(e=>{o(t=>{let n=t.filter(t=>t.id!==e);return l(n),n})},[l]),f=(0,w.useCallback)(e=>{o(t=>{let n=t.some(t=>t.id===e.id)?t.filter(t=>t.id!==e.id):G([{...e,favoritedAt:new Date().toISOString()},...t]);return l(n),n})},[l]),p=(0,w.useCallback)(()=>{o([]),l([])},[l]),m=(0,w.useCallback)((e,t)=>{!e||!t||o(n=>{let r=!1,i=n.map(n=>n.id===e&&n.label!==t?(r=!0,{...n,label:t}):n);return r?(l(i),i):n})},[l]),h=(0,w.useCallback)((e,t)=>{o(n=>{let r=!1,i=n.map(n=>n.id!==e||!!n.pinned===t?n:(r=!0,{...n,pinned:t}));return r?(l(i),i):n})},[l]),g=(0,w.useMemo)(()=>{let e=new Set;for(let t of a)t.pinned&&t.type===`nav`&&t.navId&&e.add(t.navId);return{favorites:a,addFavorite:u,removeFavorite:d,toggleFavorite:f,isFavorite:e=>a.some(t=>t.id===e),clearFavorites:p,refreshLabel:m,setPinned:h,isPinned:e=>a.some(t=>t.id===e&&!!t.pinned),pinnedNavIds:e}},[a,u,d,f,p,m,h]);return(0,T.jsx)(Y.Provider,{value:g,children:e})}function Z(){return(0,w.useContext)(Y)||{favorites:[],addFavorite:()=>{},removeFavorite:()=>{},toggleFavorite:()=>{},isFavorite:()=>!1,clearFavorites:()=>{},refreshLabel:()=>{},setPinned:()=>{},isPinned:()=>!1,pinnedNavIds:new Set}}function Q(){return`${``.replace(/\/$/,``)}/api/v1`}async function $(e,t){let n=await fetch(`${Q()}${e}`,{credentials:`include`,headers:{"Content-Type":`application/json`,...t?.headers||{}},...t}),r=null;try{r=await n.json()}catch{}if(!n.ok){let e=Error(r?.error||`HTTP ${n.status}`);throw e.code=r?.code??`HTTP_${n.status}`,e.status=n.status,e}return r}function te(e,t,n){let[r,i]=(0,w.useState)(!1),[a,o]=(0,w.useState)(!0),[s,c]=(0,w.useState)([]),l=(0,w.useRef)(!1),u=(0,w.useCallback)(async()=>{if(!(!e||!t)&&!l.current){i(!0);try{c((await $(`/approvals/requests?object=${encodeURIComponent(e)}&recordId=${encodeURIComponent(t)}`))?.data??[]),o(!0)}catch(e){(e?.status===404||e?.status===501)&&(l.current=!0,o(!1))}finally{i(!1)}}},[e,t]);(0,w.useEffect)(()=>{if(!e||!t){c([]);return}u()},[e,t,u]);let d=(0,w.useMemo)(()=>s.find(e=>e.status===`pending`)??null,[s]),f=(0,w.useMemo)(()=>s.length===0?null:[...s].sort((e,t)=>{let n=e.submitted_at||e.completed_at||``;return(t.submitted_at||t.completed_at||``).localeCompare(n)})[0]??null,[s]),p=!!d&&!!n&&(d.pending_approvers??[]).includes(n),m=(0,w.useCallback)(async(e,t)=>{if(!d)throw Error(`No pending request`);let r=await $(`/approvals/requests/${encodeURIComponent(d.id)}/${e}`,{method:`POST`,body:JSON.stringify({...n?{actorId:n}:{},...t?.comment?{comment:t.comment}:{}})});return await u(),r?.request},[d,n,u]);return{loading:r,available:a,pendingRequest:d,latestRequest:f,canDecide:p,approve:(0,w.useCallback)(e=>m(`approve`,e),[m]),reject:(0,w.useCallback)(e=>m(`reject`,e),[m]),refresh:u}}var ne={sm:`sm:max-w-sm`,default:`sm:max-w-lg`,lg:`sm:max-w-2xl`,xl:`sm:max-w-5xl`,full:`sm:max-w-[95vw] sm:w-full`},re={lg:`sm:max-w-2xl`,xl:`sm:max-w-3xl`,full:`sm:max-w-[95vw]`};function ie(e){if(typeof e==`string`){let t=e.match(/^(create|new|add|edit|update)_(.+)$/);return t?{objectName:t[2],mode:t[1]===`edit`||t[1]===`update`?`edit`:`create`}:{objectName:e,mode:`create`}}return e&&typeof e==`object`?e.type&&!e.content&&!e.objectName&&!e.placement?{content:e}:e:{}}function ae(e){let[t,n]=(0,w.useState)(null),{objects:r}=a(),E=(0,w.useCallback)(e=>{n(t=>(t?.resolve(e),null))},[]),D=(0,w.useCallback)(e=>new Promise(t=>{n({d:ie(e),resolve:t})}),[]),O=null;if(t){let n=t.d,a=e=>{e||E({success:!1})};if(n.objectName&&!n.content){let t=n.fields||n.sections?{}:C(r.find(e=>e?.name===n.objectName));O=(0,T.jsx)(S,{schema:{type:`object-form`,formType:`modal`,objectName:n.objectName,mode:n.mode||`create`,recordId:n.recordId,title:n.title,description:n.description,fields:n.fields,...t,modalSize:n.size,open:!0,onOpenChange:a,onSuccess:e=>E({success:!0,reload:!0,data:e}),onCancel:()=>E({success:!1}),showSubmit:!0,showCancel:!0},dataSource:e})}else{let e=n.placement||`center`,t=n.content?(0,T.jsx)(i,{schema:n.content}):n.description?(0,T.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:n.description}):null;O=e===`side`?(0,T.jsx)(_,{open:!0,onOpenChange:a,children:(0,T.jsxs)(f,{side:n.side||`right`,className:o(`w-full overflow-y-auto`,re[n.size||`default`]),children:[n.title&&(0,T.jsxs)(v,{children:[(0,T.jsx)(d,{children:n.title}),n.description&&(0,T.jsx)(g,{children:n.description})]}),(0,T.jsx)(`div`,{className:`py-3`,children:t})]})}):e===`bottom`?(0,T.jsx)(x,{open:!0,onOpenChange:a,children:(0,T.jsxs)(h,{children:[n.title&&(0,T.jsxs)(c,{children:[(0,T.jsx)(m,{children:n.title}),n.description&&(0,T.jsx)(l,{children:n.description})]}),(0,T.jsx)(`div`,{className:`max-h-[75vh] overflow-y-auto px-4 pb-6`,children:t})]})}):(0,T.jsx)(u,{open:!0,onOpenChange:a,children:(0,T.jsxs)(p,{className:o(e===`fullscreen`?`h-[95vh] w-full max-w-[98vw] overflow-y-auto`:ne[n.size||`default`]),children:[n.title&&(0,T.jsxs)(y,{children:[(0,T.jsx)(ee,{children:n.title}),n.description&&(0,T.jsx)(b,{children:n.description})]}),(0,T.jsx)(`div`,{children:t}),!n.content&&(0,T.jsx)(`div`,{className:`flex justify-end`,children:(0,T.jsx)(s,{onClick:()=>E({success:!0}),children:`OK`})})]})})}}return{modalHandler:D,modalElement:O,closeModal:E}}export{z as a,A as c,Z as i,te as n,B as o,X as r,O as s,ae as t};
@@ -1 +1 @@
1
- import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{_ as t,f as n,t as r,u as i}from"./vendor-react-slxo-5GC.js";import{Kr as a,Tr as o,Ua as s,ji as c}from"./ui-components-J75dr3Ae.js";import{b as l,v as u,y as d}from"./ReportDefaultInspector-BxP74HM2.js";var f=e(t(),1);function p(e){if(!e||typeof e!=`object`)return null;let t=e;if(`item`in t){let e=t.item;return!e||typeof e!=`object`?null:Object.keys(e).length>0?e:null}return Object.keys(t).length>0?t:null}async function m(e,t,n,r){await r.metadataClient.save(e,t,n,{mode:`draft`})}async function h(e,t,n,r){return await r.metadataClient.save(e,t,n,{mode:`draft`}),t}async function g(e,t,n){return p(await n.metadataClient.get(e,t,{state:`draft`}))}async function _(e,t,n){await n.metadataClient.reset(e,t,{state:`draft`})}async function v(e,t,n){await n.metadataClient.publish(e,t)}var y=r();function b({type:e,name:t,metadataClient:n,dirty:r,onResume:i,onAfterChange:p,savedSignal:m}){let h=u(),[b,x]=(0,f.useState)(!1),[S,C]=(0,f.useState)(!1),w=(0,f.useRef)(null),T=(0,f.useCallback)(async()=>{if(!t||!n){x(!1);return}let r;try{r=await g(e,t,{metadataClient:n})}catch{x(!1);return}if(x(!!r),r&&i&&w.current!==t){w.current=t;try{i(r)}catch(e){console.error(`[RuntimeDraftBar] Resume draft failed:`,e)}}},[e,t,n,i]);(0,f.useEffect)(()=>{T()},[T]);let E=(0,f.useRef)(m);(0,f.useEffect)(()=>{m!==E.current&&(E.current=m,m&&x(!0))},[m]);let D=(0,f.useCallback)(async()=>{if(t){C(!0);try{await v(e,t,{metadataClient:n}),x(!1),p?.()}catch(e){console.error(`[RuntimeDraftBar] Publish failed:`,e)}finally{C(!1)}}},[e,t,n,p]),O=(0,f.useCallback)(async()=>{if(t&&!(typeof confirm==`function`&&!confirm(l(`engine.edit.discardDraftConfirm`,h,{type:e,name:t})))){C(!0);try{await _(e,t,{metadataClient:n}),x(!1),p?.()}catch(e){console.error(`[RuntimeDraftBar] Discard draft failed:`,e)}finally{C(!1)}}},[e,t,n,p,h]);return b?(0,y.jsxs)(`div`,{className:`mr-auto flex items-center gap-2`,"data-testid":`runtime-draft-bar`,children:[(0,y.jsxs)(`span`,{className:`text-xs text-amber-700 dark:text-amber-400`,title:d(`engine.edit.draftPending`,h),"data-testid":`runtime-draft-indicator`,children:[`● `,d(`engine.edit.draftPending`,h)]}),(0,y.jsx)(o,{variant:`ghost`,size:`sm`,onClick:O,disabled:S,className:`h-7 w-7 p-0 text-muted-foreground`,title:d(`engine.edit.discardDraft`,h),"aria-label":d(`engine.edit.discardDraft`,h),"data-testid":`runtime-draft-discard`,children:(0,y.jsx)(a,{className:`h-3.5 w-3.5`})}),(0,y.jsx)(o,{size:`sm`,onClick:D,disabled:S||r,className:`h-7 px-2 bg-emerald-600 hover:bg-emerald-700 text-emerald-50`,title:d(r?`engine.edit.publishBlockedDirty`:`engine.edit.publish`,h),"data-testid":`runtime-draft-publish`,children:S?(0,y.jsx)(s,{className:`h-3.5 w-3.5 animate-spin`}):(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(c,{className:`h-3.5 w-3.5 mr-1`}),d(`engine.edit.publish`,h)]})})]}):null}function x(){let e=i(),{appName:t}=n();return(0,f.useCallback)((n,r)=>{let i=new URLSearchParams;if(r)for(let[e,t]of Object.entries(r))t!=null&&i.set(`filter[${e}]`,String(t));let a=i.toString();e(`${t?`/apps/${t}`:``}/${n}${a?`?${a}`:``}`)},[e,t])}export{m as i,b as n,h as r,x as t};
1
+ import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{_ as t,f as n,t as r,u as i}from"./vendor-react-slxo-5GC.js";import{Cr as a,Va as o,Wr as s,ki as c}from"./ui-components-CqkwtQve.js";import{b as l,v as u,y as d}from"./ReportDefaultInspector-D5vXyOGX.js";var f=e(t(),1);function p(e){if(!e||typeof e!=`object`)return null;let t=e;if(`item`in t){let e=t.item;return!e||typeof e!=`object`?null:Object.keys(e).length>0?e:null}return Object.keys(t).length>0?t:null}async function m(e,t,n,r){await r.metadataClient.save(e,t,n,{mode:`draft`})}async function h(e,t,n,r){return await r.metadataClient.save(e,t,n,{mode:`draft`}),t}async function g(e,t,n){return p(await n.metadataClient.get(e,t,{state:`draft`}))}async function _(e,t,n){await n.metadataClient.reset(e,t,{state:`draft`})}async function v(e,t,n){await n.metadataClient.publish(e,t)}var y=r();function b({type:e,name:t,metadataClient:n,dirty:r,onResume:i,onAfterChange:p,savedSignal:m}){let h=u(),[b,x]=(0,f.useState)(!1),[S,C]=(0,f.useState)(!1),w=(0,f.useRef)(null),T=(0,f.useCallback)(async()=>{if(!t||!n){x(!1);return}let r;try{r=await g(e,t,{metadataClient:n})}catch{x(!1);return}if(x(!!r),r&&i&&w.current!==t){w.current=t;try{i(r)}catch(e){console.error(`[RuntimeDraftBar] Resume draft failed:`,e)}}},[e,t,n,i]);(0,f.useEffect)(()=>{T()},[T]);let E=(0,f.useRef)(m);(0,f.useEffect)(()=>{m!==E.current&&(E.current=m,m&&x(!0))},[m]);let D=(0,f.useCallback)(async()=>{if(t){C(!0);try{await v(e,t,{metadataClient:n}),x(!1),p?.()}catch(e){console.error(`[RuntimeDraftBar] Publish failed:`,e)}finally{C(!1)}}},[e,t,n,p]),O=(0,f.useCallback)(async()=>{if(t&&!(typeof confirm==`function`&&!confirm(l(`engine.edit.discardDraftConfirm`,h,{type:e,name:t})))){C(!0);try{await _(e,t,{metadataClient:n}),x(!1),p?.()}catch(e){console.error(`[RuntimeDraftBar] Discard draft failed:`,e)}finally{C(!1)}}},[e,t,n,p,h]);return b?(0,y.jsxs)(`div`,{className:`mr-auto flex items-center gap-2`,"data-testid":`runtime-draft-bar`,children:[(0,y.jsxs)(`span`,{className:`text-xs text-amber-700 dark:text-amber-400`,title:d(`engine.edit.draftPending`,h),"data-testid":`runtime-draft-indicator`,children:[`● `,d(`engine.edit.draftPending`,h)]}),(0,y.jsx)(a,{variant:`ghost`,size:`sm`,onClick:O,disabled:S,className:`h-7 w-7 p-0 text-muted-foreground`,title:d(`engine.edit.discardDraft`,h),"aria-label":d(`engine.edit.discardDraft`,h),"data-testid":`runtime-draft-discard`,children:(0,y.jsx)(s,{className:`h-3.5 w-3.5`})}),(0,y.jsx)(a,{size:`sm`,onClick:D,disabled:S||r,className:`h-7 px-2 bg-emerald-600 hover:bg-emerald-700 text-emerald-50`,title:d(r?`engine.edit.publishBlockedDirty`:`engine.edit.publish`,h),"data-testid":`runtime-draft-publish`,children:S?(0,y.jsx)(o,{className:`h-3.5 w-3.5 animate-spin`}):(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(c,{className:`h-3.5 w-3.5 mr-1`}),d(`engine.edit.publish`,h)]})})]}):null}function x(){let e=i(),{appName:t}=n();return(0,f.useCallback)((n,r)=>{let i=new URLSearchParams;if(r)for(let[e,t]of Object.entries(r))t!=null&&i.set(`filter[${e}]`,String(t));let a=i.toString();e(`${t?`/apps/${t}`:``}/${n}${a?`?${a}`:``}`)},[e,t])}export{m as i,b as n,h as r,x as t};
@@ -1 +1 @@
1
- import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{_ as t,f as n,p as r,u as i}from"./vendor-react-slxo-5GC.js";import{A as a,B as o,i as s,j as c}from"./framework-BGQ7DoWM.js";import{It as l}from"./ui-components-J75dr3Ae.js";import{r as u}from"./vendor-ui-utils-C1OpMExs.js";import"./AdapterProvider-BiTdGDAR.js";import{a as d}from"./MetadataProvider-CkIT9awy.js";import{i as f,o as p}from"./useActionModal-DI7oaRiK.js";import{n as m}from"./ui-layout-DQDnaREz.js";import{n as h}from"./appRoute-D5vwtoc_.js";var g=e(t(),1);function _({objectName:e,objectLabel:t,dataSource:r,onEdit:a,onRefresh:c,onConfirm:l,onToast:d}){let f=i(),{appName:p}=n(),{t:m}=s(),h=`/apps/${p}`,{execute:_,loading:v,error:y,runner:b}=o({context:{objectName:e,objectLabel:t||e,baseUrl:h},onConfirm:l,onToast:d});return(0,g.useEffect)(()=>{b.registerHandler(`create`,async()=>(a?.(null),{success:!0})),b.registerHandler(`delete`,async n=>{let i=Array.isArray(n.params?.records)?n.params.records.filter(e=>e?.id!=null):null;if(i&&i.length>1){let n=await Promise.allSettled(i.map(t=>r.delete(e,t.id))),a=n.filter(e=>e.status===`rejected`).length,o=n.length-a;return c?.(),a===0?(u.success(m(`objectActions.bulkDeleteSuccess`,{count:o,label:t||e,defaultValue:`Deleted ${o} ${t||e} records`})),{success:!0,reload:!0}):(u.error(m(`objectActions.bulkDeletePartial`,{succeeded:o,failed:a,defaultValue:`${o} deleted, ${a} failed`})),{success:!1,error:`${a} failed`})}let a=n.params?.recordId??n.params?.record?.id??i?.[0]?.id??n.recordId;if(!a)return{success:!1,error:m(`objectActions.noRecordId`)};try{return await r.delete(e,a),c?.(),u.success(m(`objectActions.deleteSuccess`,{label:t||e})),{success:!0,reload:!0}}catch(n){return u.error(m(`objectActions.deleteFailed`,{label:t||e}),{description:n.message}),{success:!1,error:n.message}}}),b.registerHandler(`navigate`,async e=>{let t=e.params?.url||e.url;return t&&f(t.startsWith(`/`)?t:`${h}/${t}`),{success:!0}}),b.registerHandler(`refresh`,async()=>(c?.(),{success:!0,reload:!0}))},[b,e,r,a,c,f,h,m,t]),{execute:_,create:(0,g.useCallback)(()=>{a?.(null)},[a]),deleteRecord:(0,g.useCallback)(async e=>_({type:`delete`,confirmText:m(`objectActions.deleteConfirm`),params:{recordId:e}}),[_,m]),navigateToView:(0,g.useCallback)(t=>{f(`${h}/${e}/view/${t}`)},[f,h,e]),navigateToRecord:(0,g.useCallback)(t=>{f(`${h}/${e}/record/${encodeURIComponent(t)}`)},[f,h,e]),loading:v,error:y}}function v(e){return e==null?[]:Array.isArray(e)?e:[e]}function y(e,t){let{alias:n,value:i=`1`,replace:a=!0}=t??{},[o,s]=r(),c=(0,g.useMemo)(()=>v(n),[n]),l=(0,g.useCallback)(t=>t.get(e)===i||c.some(e=>t.get(e)===i),[e,i,c]),u=l(o),d=(0,g.useCallback)(t=>{if(t===l(o))return;let n=new URLSearchParams(o);if(t){n.set(e,i);for(let e of c)n.delete(e)}else{n.delete(e);for(let e of c)n.delete(e)}s(n,{replace:a})},[l,o,s,e,i,c,a]);return{open:u,setOpen:d,openOverlay:(0,g.useCallback)(()=>d(!0),[d]),closeOverlay:(0,g.useCallback)(()=>d(!1),[d]),toggleOverlay:(0,g.useCallback)(()=>{s(t=>{let n=new URLSearchParams(t);if(l(n)){n.delete(e);for(let e of c)n.delete(e)}else{n.set(e,i);for(let e of c)n.delete(e)}return n},{replace:a})},[s,l,e,i,c,a])}}var b=20;function x(e,t=``){let{href:n,external:r}=m(e,t);return r?n:!n||n===`#`?``:n}function S(e){return`nav:${e}`}function C(){let{favorites:e,addFavorite:t,removeFavorite:n,setPinned:r,pinnedNavIds:i}=f(),a=(0,g.useCallback)((e,i,a,o)=>{let s=S(e);i?(a&&t({id:s,label:a.label,href:x(a,o??``),type:`nav`,navId:e,pinned:!0}),r(s,!0)):n(s)},[t,n,r]),o=(0,g.useCallback)(e=>i.has(e),[i]),s=(0,g.useCallback)(e=>{if(i.size===0){let t=!1;for(let n of e)if(n.pinned){t=!0;break}if(!t)return e}let t=0,n=e=>e.map(e=>{let r=i.has(e.id)&&t<b;r&&t++;let a=e.children?.length?n(e.children):e.children;return r!==(e.pinned??!1)||a!==e.children?{...e,pinned:r,children:a}:e});return n(e)},[i]),c=(0,g.useCallback)(()=>{for(let t of e)t.type===`nav`&&n(t.id)},[e,n]);return{pinnedIds:(0,g.useMemo)(()=>Array.from(i),[i]),togglePin:a,isPinned:o,applyPins:s,clearPins:c}}var w=768,T=1024;function ee(){let{setOpen:e,isMobile:t}=l(),n=(0,g.useRef)(e);(0,g.useEffect)(()=>{n.current=e},[e]),(0,g.useEffect)(()=>{if(t)return;let e=!1;function r(){let t=window.innerWidth,r=t>=w&&t<T;r&&!e&&n.current(!1),e=r}return r(),window.addEventListener(`resize`,r),()=>window.removeEventListener(`resize`,r)},[t])}function te(e,t){return{name:e.name,label:e.label,pluralLabel:e.pluralLabel,description:e.description,icon:e.icon,group:e.group,sortOrder:e.sortOrder,enabled:e.enabled,fields:t,relationships:e.relationships}}function ne(e){return{name:e.name,label:e.label,type:e.type,group:e.group,description:e.description,required:e.required,unique:e.unique,readonly:e.readonly,hidden:e.hidden,defaultValue:e.defaultValue,placeholder:e.placeholder,options:e.options,externalId:e.externalId,trackHistory:e.trackHistory,indexed:e.indexed,referenceTo:e.referenceTo,formula:e.formula,sortOrder:e.sortOrder}}var re=class{adapter;constructor(e){this.adapter=e}async getItems(e){let t=await this.adapter.getClient().meta.getItems(e);return t&&typeof t==`object`&&`items`in t&&Array.isArray(t.items)?t.items:[]}async saveMetadataItem(e,t,n){await this.adapter.getClient().meta.saveItem(e,t,n),this.adapter.invalidateCache(`${e}:${t}`)}async deleteMetadataItem(e,t){await this.adapter.getClient().meta.saveItem(e,t,{name:t,enabled:!1,_deleted:!0}),this.adapter.invalidateCache(`${e}:${t}`)}async saveObject(e,t){let n=this.adapter.getClient(),r=te(e,t);await n.meta.saveItem(`object`,e.name,r),this.adapter.invalidateCache(`object:${e.name}`)}async deleteObject(e){await this.adapter.getClient().meta.saveItem(`object`,e,{name:e,enabled:!1,_deleted:!0}),this.adapter.invalidateCache(`object:${e}`)}async saveFields(e,t){let n=this.adapter.getClient(),r={};try{let t=await n.meta.getItem(`object`,e);r=t?.item??t??{}}catch{}let i={...r,name:e,fields:t.map(ne)};await n.meta.saveItem(`object`,e,i),this.adapter.invalidateCache(`object:${e}`)}static diffObjects(e,t){let n=new Map(e.map(e=>[e.id,e])),r=new Map(t.map(e=>[e.id,e]));for(let[e,t]of r)if(!n.has(e))return{type:`create`,object:t};for(let[e,t]of n)if(!r.has(e))return{type:`delete`,object:t};for(let[e,t]of r){let r=n.get(e);if(r&&JSON.stringify(r)!==JSON.stringify(t))return{type:`update`,object:t}}return null}static diffFields(e,t){let n=new Map(e.map(e=>[e.id,e])),r=new Map(t.map(e=>[e.id,e]));for(let[e,t]of r)if(!n.has(e))return{type:`create`,field:t};for(let[e,t]of n)if(!r.has(e))return{type:`delete`,field:t};for(let[e,t]of r){let r=n.get(e);if(r&&JSON.stringify(r)!==JSON.stringify(t))return{type:`update`,field:t}}return null}};function ie(){let e=a();return(0,g.useMemo)(()=>e?new re(e):null,[e])}var E=0;function D(e=`nav`){return`${e}_${Date.now()}_${++E}`}function O(e,t){return[...e,t]}function k(e,t,n){return e.filter(e=>!(e.type===t&&(t===`page`&&e.pageName===n||t===`dashboard`&&e.dashboardName===n))).map(e=>e.children&&e.children.length>0?{...e,children:k(e.children,t,n)}:e)}function A(e,t,n,r){return e.map(e=>{let i=e;return t===`page`&&e.type===`page`&&e.pageName===n?i={...e,pageName:r}:t===`dashboard`&&e.type===`dashboard`&&e.dashboardName===n&&(i={...e,dashboardName:r}),i.children&&i.children.length>0?{...i,children:A(i.children,t,n,r)}:i})}function j(e,t){return e.length===t.length?e===t?!0:JSON.stringify(e)===JSON.stringify(t):!1}function ae(e){return typeof e==`string`&&e.startsWith(`sys_`)}function oe(e){if(!e||typeof e!=`object`)return!1;let t=e;return t._packageId!=null||t._provenance===`package`?!0:ae(t.name)}function M(e){if(!e||typeof e!=`object`)return!1;let t=e,n=t._lock??t.protection?.lock;return n!==`full`&&n!==`no-overlay`}function N(){let e=a(),{apps:t,refresh:n}=c(),{t:r}=s(),i=(0,g.useRef)(e);i.current=e;let o=(0,g.useRef)(n);o.current=n;let l=(0,g.useCallback)(async(e,t)=>{let n=i.current?.getClient();n&&await n.meta.saveItem(`app`,e,t),await o.current?.()},[]),d=(0,g.useCallback)(e=>h(t,e),[t]),f=(0,g.useCallback)(async(e,t,n)=>{let i=d(e);if(!i)return;let a=i.navigation??[],o=O(a,{id:D(`nav_page`),type:`page`,label:n||t,pageName:t,icon:`FileText`}),s={...i,navigation:o};try{await l(e,s),u.success(r(`navigationSync.addedPage`,{name:n||t}),{action:{label:r(`navigationSync.undoLabel`),onClick:async()=>{try{await l(e,{...i,navigation:a}),u.info(r(`navigationSync.undone`))}catch{u.error(r(`navigationSync.undoFailed`))}}}})}catch{u.error(r(`navigationSync.updateFailed`))}},[d,l,r]),p=(0,g.useCallback)(async(e,t,n)=>{let i=d(e);if(!i)return;let a=i.navigation??[],o=O(a,{id:D(`nav_dash`),type:`dashboard`,label:n||t,dashboardName:t,icon:`LayoutDashboard`}),s={...i,navigation:o};try{await l(e,s),u.success(r(`navigationSync.addedDashboard`,{name:n||t}),{action:{label:r(`navigationSync.undoLabel`),onClick:async()=>{try{await l(e,{...i,navigation:a}),u.info(r(`navigationSync.undone`))}catch{u.error(r(`navigationSync.undoFailed`))}}}})}catch{u.error(r(`navigationSync.updateFailed`))}},[d,l,r]),m=(0,g.useCallback)(async(e,t)=>{let n=d(e);if(!n)return;let i=n.navigation??[],a=k(i,`page`,t);if(j(a,i))return;let o={...n,navigation:a};try{await l(e,o),u.success(r(`navigationSync.removedPage`,{name:t}),{action:{label:r(`navigationSync.undoLabel`),onClick:async()=>{try{await l(e,{...n,navigation:i}),u.info(r(`navigationSync.undone`))}catch{u.error(r(`navigationSync.undoFailed`))}}}})}catch{u.error(r(`navigationSync.updateFailed`))}},[d,l,r]),_=(0,g.useCallback)(async(e,t)=>{let n=d(e);if(!n)return;let i=n.navigation??[],a=k(i,`dashboard`,t);if(j(a,i))return;let o={...n,navigation:a};try{await l(e,o),u.success(r(`navigationSync.removedDashboard`,{name:t}),{action:{label:r(`navigationSync.undoLabel`),onClick:async()=>{try{await l(e,{...n,navigation:i}),u.info(r(`navigationSync.undone`))}catch{u.error(r(`navigationSync.undoFailed`))}}}})}catch{u.error(r(`navigationSync.updateFailed`))}},[d,l,r]),v=(0,g.useCallback)(async(e,t,n)=>{let i=d(e);if(!i)return;let a=i.navigation??[],o=A(a,`page`,t,n);if(j(o,a))return;let s={...i,navigation:o};try{await l(e,s),u.success(r(`navigationSync.renamedPage`,{oldName:t,newName:n}),{action:{label:r(`navigationSync.undoLabel`),onClick:async()=>{try{await l(e,{...i,navigation:a}),u.info(r(`navigationSync.undone`))}catch{u.error(r(`navigationSync.undoFailed`))}}}})}catch{u.error(r(`navigationSync.updateFailed`))}},[d,l,r]),y=(0,g.useCallback)(async(e,t,n)=>{let i=d(e);if(!i)return;let a=i.navigation??[],o=A(a,`dashboard`,t,n);if(j(o,a))return;let s={...i,navigation:o};try{await l(e,s),u.success(r(`navigationSync.renamedDashboard`,{oldName:t,newName:n}),{action:{label:r(`navigationSync.undoLabel`),onClick:async()=>{try{await l(e,{...i,navigation:a}),u.info(r(`navigationSync.undone`))}catch{u.error(r(`navigationSync.undoFailed`))}}}})}catch{u.error(r(`navigationSync.updateFailed`))}},[d,l,r]),b=e=>e&&typeof e==`object`&&`name`in e?e.name:void 0;return{syncPageCreated:f,syncDashboardCreated:p,syncPageDeleted:m,syncDashboardDeleted:_,syncPageRenamed:v,syncDashboardRenamed:y,syncPageCreatedAllApps:(0,g.useCallback)(async(e,n)=>{for(let r of t){let t=b(r);!t||!M(r)||await f(t,e,n)}},[t,f]),syncDashboardCreatedAllApps:(0,g.useCallback)(async(e,n)=>{for(let r of t){let t=b(r);!t||!M(r)||await p(t,e,n)}},[t,p]),syncPageDeletedAllApps:(0,g.useCallback)(async e=>{for(let n of t){let t=b(n);!t||!M(n)||await m(t,e)}},[t,m]),syncDashboardDeletedAllApps:(0,g.useCallback)(async e=>{for(let n of t){let t=b(n);!t||!M(n)||await _(t,e)}},[t,_]),syncPageRenamedAllApps:(0,g.useCallback)(async(e,n)=>{for(let r of t){let t=b(r);!t||!M(r)||await v(t,e,n)}},[t,v]),syncDashboardRenamedAllApps:(0,g.useCallback)(async(e,n)=>{for(let r of t){let t=b(r);!t||!M(r)||await y(t,e,n)}},[t,y])}}function P(){let{pages:e,dashboards:t,apps:n,getTypeStatus:r}=c(),i=a(),o=(0,g.useRef)(i);o.current=i;let s=d(),{syncPageCreated:l,syncDashboardCreated:u,syncPageDeleted:f,syncDashboardDeleted:p}=N(),m=(0,g.useRef)(null),h=(0,g.useRef)(null),_=(0,g.useRef)(0),v=(0,g.useRef)(!1),y=e=>e&&typeof e==`object`&&`name`in e?e.name:void 0;return(0,g.useEffect)(()=>{if(v.current)return;if(s){m.current=null,h.current=null;return}if(r&&(r(`page`)!==`ready`||r(`dashboard`)!==`ready`))return;let i=e=>new Set(e.filter(e=>!oe(e)).map(e=>e?.name).filter(e=>typeof e==`string`&&e.length>0)),a=i(e??[]),o=i(t??[]),c=m.current,d=h.current;if(c===null||d===null){m.current=a,h.current=o;return}let g=[...a].filter(e=>!c.has(e)),b=[...c].filter(e=>!a.has(e)),x=[...o].filter(e=>!d.has(e)),S=[...d].filter(e=>!o.has(e));if(g.length===0&&b.length===0&&x.length===0&&S.length===0){m.current=a,h.current=o;return}let C=++_.current;v.current=!0;let w=!1;return(async()=>{try{for(let e of n){if(w||_.current!==C)break;let t=y(e);if(!(!t||!M(e))){for(let e of g){if(w)break;await l(t,e)}for(let e of b){if(w)break;await f(t,e)}for(let e of x){if(w)break;await u(t,e)}for(let e of S){if(w)break;await p(t,e)}}}}finally{_.current===C&&(m.current=a,h.current=o,v.current=!1)}})(),()=>{w=!0}},[e,t,n,s,r,l,u,f,p]),null}var F=new Set([`view`,`record`,`page`,`dashboard`,`design`,`report`]);function I(e){return e.replace(/[-_]/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}function L(e){try{return decodeURIComponent(e)}catch{return e}}function se({pathname:e,appName:t,objects:n=[],basePathSegment:r=`apps`,disabled:i=!1}){let{addRecentItem:a}=p(),o=(0,g.useRef)(n);o.current=n,(0,g.useEffect)(()=>{if(i||!t)return;let n=e.split(`/`).filter(Boolean);if(n[0]!==r||n[1]!==t)return;let s=n[2],c=n[3],l=`/${r}/${t}`;if(s===`metadata`){let e=n[3],t=n[4];e&&t&&t!==`new`&&a({id:`metadata:${e}:${L(t)}`,label:L(t),href:`${l}/metadata/${e}/${t}`,type:`metadata`});return}if(s&&!F.has(s)){let e=o.current.find(e=>e.name===s);e&&a({id:`object:${e.name}`,label:e.label||e.name,href:`${l}/${e.name}`,type:`object`});return}if(c)switch(s){case`dashboard`:a({id:`dashboard:${c}`,label:I(c),href:`${l}/dashboard/${c}`,type:`dashboard`});break;case`page`:a({id:`page:${c}`,label:I(c),href:`${l}/page/${c}`,type:`page`});break;case`report`:a({id:`report:${c}`,label:I(c),href:`${l}/report/${c}`,type:`report`});break;default:break}},[e,t,r,i])}function ce(e){return{status:`drafted`,drafted:e.items,...e.summary?{summary:e.summary}:{},...e.packageId?{packageId:e.packageId}:{},...e.autoPublishable?{autoPublishable:!0}:{},...e.failedCount?{failed:Array.from({length:e.failedCount},()=>null)}:{},...e.materialized?{materialized:!0}:{},...e.verification?{verification:e.verification}:{},...e.issues&&e.issues.length?{issues:e.issues}:{},...e.nextSteps&&e.nextSteps.length?{nextSteps:e.nextSteps}:{}}}function le(e){return{status:`blueprint_proposed`,...e.summary?{summary:e.summary}:{},counts:e.counts,questions:e.questions,...e.targetApp?{targetApp:e.targetApp}:{},blueprint:{objects:e.objects.map(e=>({name:e.name,...e.label?{label:e.label}:{},fields:Array.from({length:e.fieldCount},()=>null)})),assumptions:e.assumptions}}}var R=`objectstack:ai-chat-conversation-id`,z=`objectstack:ai-chat-messages`;function B(e,t){return t?`${R}:${e}:${t}`:`${R}:${e}`}function V(e){try{return localStorage.getItem(e)??void 0}catch{return}}function H(e,t){try{t?localStorage.setItem(e,t):localStorage.removeItem(e)}catch{}}function U(e){return`${z}:${e}`}function W(e){try{let t=localStorage.getItem(U(e));if(!t)return[];let n=JSON.parse(t);return Array.isArray(n)?n.filter(e=>!!e&&typeof e==`object`&&typeof e.id==`string`&&(e.role===`user`||e.role===`assistant`||e.role===`system`)&&Array.isArray(e.parts)):[]}catch{return[]}}function G(e,t){if(e)try{if(t.length===0){localStorage.removeItem(U(e));return}localStorage.setItem(U(e),JSON.stringify(t))}catch{}}function ue(e){return e.map(e=>{let t=[];if(e.content&&t.push({type:`text`,text:e.content}),e.role===`assistant`)for(let n of e.toolInvocations??[]){let e=n.draftReview?ce(n.draftReview):n.proposedPlan?le(n.proposedPlan):void 0;t.push({type:`tool-${n.toolName}`,toolCallId:n.toolCallId,toolName:n.toolName,state:n.state??(n.errorText?`output-error`:`output-available`),...n.errorText?{errorText:n.errorText}:{},...e===void 0?{}:{output:e}})}if(t.length!==0)return{id:e.id,role:e.role,parts:t}}).filter(e=>!!e)}function K(e){return typeof e==`string`?e?[{type:`text`,text:e}]:[]:Array.isArray(e)?e.map(e=>{if(typeof e==`string`)return e?{type:`text`,text:e}:void 0;if(e&&typeof e==`object`&&`type`in e&&typeof e.type==`string`)return e;if(e&&typeof e==`object`&&`text`in e&&typeof e.text==`string`)return{type:`text`,text:e.text}}).filter(e=>!!e):e&&typeof e==`object`&&`parts`in e&&Array.isArray(e.parts)?K(e.parts):[]}function de(e,t){for(let n of K(e)){let e=typeof n.toolCallId==`string`?n.toolCallId:void 0;if(!e)continue;let r=t.get(e);if(!r)continue;let i=n.output??n.result;if(i===void 0)continue;r.output=i;let a=n.errorText;r.state=n.isError||typeof a==`string`?`output-error`:`output-available`,typeof a==`string`&&(r.errorText=a)}}function q(e){if(!e)return[];let t=[],n=new Map;return e.forEach((e,r)=>{let i=e.role;if(i===`tool`){de(e.content,n);return}if(i!==`user`&&i!==`assistant`&&i!==`system`)return;let a=K(e.content);if(a.length!==0){if(i===`assistant`)for(let e of a){e.type===`tool-call`&&typeof e.toolName==`string`&&e.toolName&&(e.type=`tool-${e.toolName}`);let t=typeof e.toolCallId==`string`?e.toolCallId:void 0;t&&(e.type===`tool-call`||e.type.startsWith(`tool-`))&&n.set(t,e)}t.push({id:e.id??`msg-${r}`,role:i,parts:a})}}),t}function J(e){if(!(typeof e!=`string`||!e))try{let t=JSON.parse(e);return Array.isArray(t)?t:void 0}catch{return}}function fe(e){return e?e.map(e=>{let t=e.id,n=typeof e.content==`string`?e.content:``;if(e.role===`assistant`){let r=J(e.tool_calls);if(r&&r.length>0){let e=[];return n&&e.push({type:`text`,text:n}),e.push(...r),{id:t,role:`assistant`,content:e}}return{id:t,role:`assistant`,content:n}}if(e.role===`tool`){let r=J(e.content);return r&&r.length>0&&r[0]?.type===`tool-result`?{id:t,role:`tool`,content:r}:{id:t,role:`tool`,content:[{type:`tool-result`,toolCallId:e.tool_call_id??``,toolName:`unknown`,output:{type:`text`,value:n}}]}}return{id:t,role:e.role,content:n}}):[]}async function Y(e,t){let n=await fetch(`${e}/conversations/${encodeURIComponent(t)}`,{credentials:`include`});if(n.status===404||n.status===403)return null;if(!n.ok)throw Error(`GET conversation failed: ${n.status}`);return await n.json()}async function X(e){let t=await fetch(`${e}/conversations`,{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`},body:`{}`});if(!t.ok)throw Error(`POST conversation failed: ${t.status}`);return await t.json()}async function pe(e,t){await fetch(`${e}/conversations/${encodeURIComponent(t)}`,{method:`DELETE`,credentials:`include`}).catch(()=>{})}function Z(e){let{userId:t,scope:n,apiBase:r,activeId:i,forceNew:a,resumeMode:o=`resume`}=e,[s,c]=(0,g.useState)(void 0),[l,u]=(0,g.useState)([]),[d,f]=(0,g.useState)(!!t),p=(0,g.useRef)(!0),m=(0,g.useRef)(void 0),h=(0,g.useRef)(void 0);(0,g.useEffect)(()=>(p.current=!0,()=>{p.current=!1}),[]),(0,g.useEffect)(()=>{if(!t){c(void 0),u([]),f(!1),m.current=void 0,h.current=void 0;return}let e=h.current!==n;if(!i&&!a&&!e&&m.current===t&&s)return;let l=!1,d=B(t,n);return!i&&(a||e&&m.current===t)&&(c(void 0),u([])),f(!0),(async()=>{try{if(i){let e=await Y(r,i);if(l)return;if(e){H(d,e.id),c(e.id);let r=q(e.messages);u(r.length>0?r:W(e.id)),m.current=t,h.current=n;return}H(d,void 0),G(i,[])}else if(!a){let e=V(d);if(e){let i=await Y(r,e);if(l)return;if(i){let e=q(i.messages);if(o!==`fresh`||e.length===0){c(i.id),u(o===`fresh`?[]:e.length>0?e:W(i.id)),m.current=t,h.current=n;return}}else H(d,void 0),G(e,[])}}let e=await X(r);if(l)return;H(d,e.id),c(e.id),u(q(e.messages)),m.current=t,h.current=n}catch{l||(c(void 0),u([]))}finally{l||f(!1)}})(),()=>{l=!0}},[t,n,r,i,a,o]);let _=(0,g.useCallback)(async()=>{if(!t)return;let e=B(t,n);f(!0);try{s&&await pe(r,s),G(s,[]),H(e,void 0);let t=await X(r);if(H(e,t.id),G(t.id,[]),!p.current)return;c(t.id),u([])}catch{p.current&&(c(void 0),u([]))}finally{p.current&&f(!1)}},[s,t,n,r]),v=(0,g.useCallback)(async()=>{if(!t)return;let e=B(t,n);f(!0);try{let i=await X(r);if(H(e,i.id),G(i.id,[]),!p.current)return;c(i.id),u([]),m.current=t,h.current=n}catch{}finally{p.current&&f(!1)}},[t,n,r]);return{conversationId:s,conversationScope:h.current,initialMessages:l,isLoading:d,reset:_,startNew:v}}var me=new Set([`new chat`,`new conversation`,`untitled`,`新对话`]);function he(e){let t=e?.trim().toLowerCase();return!t||me.has(t)}function ge(e){let t=e.messages;if(!t||t.length===0)return;for(let e=t.length-1;e>=0;e--){let n=t[e];if(n.role===`user`){let e=Q(n.content);if(e)return e}}let n=t[t.length-1];return Q(n?.content)}function Q(e){if(typeof e==`string`)return e.slice(0,140);if(e&&typeof e==`object`&&`text`in e&&typeof e.text==`string`)return e.text.slice(0,140);if(e&&typeof e==`object`&&`parts`in e&&Array.isArray(e.parts))return Q(e.parts);if(Array.isArray(e)){let t=e.map(e=>typeof e==`string`?e:e&&typeof e==`object`&&`text`in e&&typeof e.text==`string`?e.text:``).join(``);return t?t.slice(0,140):void 0}}function $(e){let t=e.title?.trim(),n=ge(e)??Q(e.preview);return{id:e.id,title:he(t)?void 0:t,agentId:e.agentId,createdAt:e.createdAt,updatedAt:e.updatedAt,preview:n}}async function _e(e,t){let n=await fetch(`${e}/conversations/${encodeURIComponent(t)}`,{credentials:`include`});if(!n.ok)return;let r=await n.json();return $(`conversation`in r&&r.conversation?r.conversation:r)}function ve(e){let{userId:t,apiBase:n,limit:r=50,refreshKey:i}=e,[a,o]=(0,g.useState)([]),[s,c]=(0,g.useState)(!!t),[l,u]=(0,g.useState)(void 0),[d,f]=(0,g.useState)(0),p=(0,g.useCallback)(async()=>{f(e=>e+1)},[]),m=(0,g.useCallback)(async e=>{try{await fetch(`${n}/conversations/${encodeURIComponent(e)}`,{method:`DELETE`,credentials:`include`})}finally{o(t=>t.filter(t=>t.id!==e))}},[n]),h=(0,g.useCallback)(async(e,t)=>{let r=t.trim();o(t=>t.map(t=>t.id===e?{...t,title:r||void 0}:t));let i=await fetch(`${n}/conversations/${encodeURIComponent(e)}`,{method:`PATCH`,credentials:`include`,headers:{"Content-Type":`application/json`},body:JSON.stringify({title:r})});if(!i.ok)throw f(e=>e+1),Error(`PATCH conversation failed: ${i.status}`)},[n]);return(0,g.useEffect)(()=>{if(!t){o([]),c(!1),u(void 0);return}let e=!1;return c(!0),u(void 0),(async()=>{try{let t=await fetch(`${n}/conversations?limit=${encodeURIComponent(String(r))}`,{credentials:`include`});if(!t.ok)throw Error(`GET conversations failed: ${t.status}`);let i=await t.json(),a=Array.isArray(i)?i:i.conversations??i.items??[];if(e)return;let s=a.map($).sort((e,t)=>(t.updatedAt??``).localeCompare(e.updatedAt??``));o(s);let c=s.filter(e=>!e.title&&!e.preview).slice(0,20);if(c.length>0){let t=await Promise.all(c.map(e=>_e(n,e.id).catch(()=>void 0)));if(e)return;let r=new Map(t.filter(e=>!!(e?.preview||e?.title)).map(e=>[e.id,e]));r.size>0&&o(e=>e.map(e=>{let t=r.get(e.id);return t?{...e,title:e.title??t.title,preview:e.preview??t.preview}:e}))}}catch(t){if(e)return;u(t instanceof Error?t:Error(String(t))),o([])}finally{e||c(!1)}})(),()=>{e=!0}},[t,n,r,d,i]),{conversations:a,isLoading:s,error:l,refetch:p,remove:m,rename:h}}async function ye(e){let t=await fetch(`/api/v1/meta/_drafts?packageId=${encodeURIComponent(e)}`,{credentials:`include`,headers:{Accept:`application/json`},cache:`no-store`});if(!t.ok)throw Error(`_drafts HTTP ${t.status}`);let n=await t.json(),r=Array.isArray(n)?n:n?.drafts??n?.data?.drafts??[];return Array.isArray(r)?r.length:0}function be(e){if(!e||e.length===0)return!1;let t=e[e.length-1];return!t||t.role!==`assistant`?!1:t.parts.some(e=>e.type===`text`&&String(e.text??``).trim().length>0)}function xe(e){let{chatApi:t,conversationId:n}=e,[r,i]=(0,g.useState)(!1),a=(0,g.useRef)(void 0);return{errorSuppressed:r,handleChatError:(0,g.useCallback)(async e=>{if(e?.notSent){i(!1);return}let r=t?.replace(/\/agents\/[^/]+\/chat$/,``);if(!n||!r){i(!1);return}try{let e=q((await Y(r,n))?.messages);if(be(e)&&a.current){a.current(e),i(!0);return}}catch{}i(!1)},[n,t]),setMessagesRef:a,resetSuppression:(0,g.useCallback)(()=>i(!1),[])}}export{Y as a,Z as c,P as d,ie as f,_ as g,y as h,fe as i,G as l,C as m,ye as n,ue as o,ee as p,ve as r,q as s,xe as t,se as u};
1
+ import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{_ as t,f as n,p as r,u as i}from"./vendor-react-slxo-5GC.js";import{A as a,B as o,i as s,j as c}from"./framework-C3RMhKDr.js";import{Pt as l}from"./ui-components-CqkwtQve.js";import{r as u}from"./vendor-ui-utils-C1OpMExs.js";import"./AdapterProvider-BoIMfid0.js";import{a as d}from"./MetadataProvider-C517hbHZ.js";import{i as f,o as p}from"./useActionModal-CsAqakCv.js";import{n as m}from"./ui-layout-D1KjRJsh.js";import{n as h}from"./appRoute-D5vwtoc_.js";var g=e(t(),1);function _({objectName:e,objectLabel:t,dataSource:r,onEdit:a,onRefresh:c,onConfirm:l,onToast:d}){let f=i(),{appName:p}=n(),{t:m}=s(),h=`/apps/${p}`,{execute:_,loading:v,error:y,runner:b}=o({context:{objectName:e,objectLabel:t||e,baseUrl:h},onConfirm:l,onToast:d});return(0,g.useEffect)(()=>{b.registerHandler(`create`,async()=>(a?.(null),{success:!0})),b.registerHandler(`delete`,async n=>{let i=Array.isArray(n.params?.records)?n.params.records.filter(e=>e?.id!=null):null;if(i&&i.length>1){let n=await Promise.allSettled(i.map(t=>r.delete(e,t.id))),a=n.filter(e=>e.status===`rejected`).length,o=n.length-a;return c?.(),a===0?(u.success(m(`objectActions.bulkDeleteSuccess`,{count:o,label:t||e,defaultValue:`Deleted ${o} ${t||e} records`})),{success:!0,reload:!0}):(u.error(m(`objectActions.bulkDeletePartial`,{succeeded:o,failed:a,defaultValue:`${o} deleted, ${a} failed`})),{success:!1,error:`${a} failed`})}let a=n.params?.recordId??n.params?.record?.id??i?.[0]?.id??n.recordId;if(!a)return{success:!1,error:m(`objectActions.noRecordId`)};try{return await r.delete(e,a),c?.(),u.success(m(`objectActions.deleteSuccess`,{label:t||e})),{success:!0,reload:!0}}catch(n){return u.error(m(`objectActions.deleteFailed`,{label:t||e}),{description:n.message}),{success:!1,error:n.message}}}),b.registerHandler(`navigate`,async e=>{let t=e.params?.url||e.url;return t&&f(t.startsWith(`/`)?t:`${h}/${t}`),{success:!0}}),b.registerHandler(`refresh`,async()=>(c?.(),{success:!0,reload:!0}))},[b,e,r,a,c,f,h,m,t]),{execute:_,create:(0,g.useCallback)(()=>{a?.(null)},[a]),deleteRecord:(0,g.useCallback)(async e=>_({type:`delete`,confirmText:m(`objectActions.deleteConfirm`),params:{recordId:e}}),[_,m]),navigateToView:(0,g.useCallback)(t=>{f(`${h}/${e}/view/${t}`)},[f,h,e]),navigateToRecord:(0,g.useCallback)(t=>{f(`${h}/${e}/record/${encodeURIComponent(t)}`)},[f,h,e]),loading:v,error:y}}function v(e){return e==null?[]:Array.isArray(e)?e:[e]}function y(e,t){let{alias:n,value:i=`1`,replace:a=!0}=t??{},[o,s]=r(),c=(0,g.useMemo)(()=>v(n),[n]),l=(0,g.useCallback)(t=>t.get(e)===i||c.some(e=>t.get(e)===i),[e,i,c]),u=l(o),d=(0,g.useCallback)(t=>{if(t===l(o))return;let n=new URLSearchParams(o);if(t){n.set(e,i);for(let e of c)n.delete(e)}else{n.delete(e);for(let e of c)n.delete(e)}s(n,{replace:a})},[l,o,s,e,i,c,a]);return{open:u,setOpen:d,openOverlay:(0,g.useCallback)(()=>d(!0),[d]),closeOverlay:(0,g.useCallback)(()=>d(!1),[d]),toggleOverlay:(0,g.useCallback)(()=>{s(t=>{let n=new URLSearchParams(t);if(l(n)){n.delete(e);for(let e of c)n.delete(e)}else{n.set(e,i);for(let e of c)n.delete(e)}return n},{replace:a})},[s,l,e,i,c,a])}}var b=20;function x(e,t=``){let{href:n,external:r}=m(e,t);return r?n:!n||n===`#`?``:n}function S(e){return`nav:${e}`}function C(){let{favorites:e,addFavorite:t,removeFavorite:n,setPinned:r,pinnedNavIds:i}=f(),a=(0,g.useCallback)((e,i,a,o)=>{let s=S(e);i?(a&&t({id:s,label:a.label,href:x(a,o??``),type:`nav`,navId:e,pinned:!0}),r(s,!0)):n(s)},[t,n,r]),o=(0,g.useCallback)(e=>i.has(e),[i]),s=(0,g.useCallback)(e=>{if(i.size===0){let t=!1;for(let n of e)if(n.pinned){t=!0;break}if(!t)return e}let t=0,n=e=>e.map(e=>{let r=i.has(e.id)&&t<b;r&&t++;let a=e.children?.length?n(e.children):e.children;return r!==(e.pinned??!1)||a!==e.children?{...e,pinned:r,children:a}:e});return n(e)},[i]),c=(0,g.useCallback)(()=>{for(let t of e)t.type===`nav`&&n(t.id)},[e,n]);return{pinnedIds:(0,g.useMemo)(()=>Array.from(i),[i]),togglePin:a,isPinned:o,applyPins:s,clearPins:c}}var w=768,T=1024;function ee(){let{setOpen:e,isMobile:t}=l(),n=(0,g.useRef)(e);(0,g.useEffect)(()=>{n.current=e},[e]),(0,g.useEffect)(()=>{if(t)return;let e=!1;function r(){let t=window.innerWidth,r=t>=w&&t<T;r&&!e&&n.current(!1),e=r}return r(),window.addEventListener(`resize`,r),()=>window.removeEventListener(`resize`,r)},[t])}function te(e,t){return{name:e.name,label:e.label,pluralLabel:e.pluralLabel,description:e.description,icon:e.icon,group:e.group,sortOrder:e.sortOrder,enabled:e.enabled,fields:t,relationships:e.relationships}}function ne(e){return{name:e.name,label:e.label,type:e.type,group:e.group,description:e.description,required:e.required,unique:e.unique,readonly:e.readonly,hidden:e.hidden,defaultValue:e.defaultValue,placeholder:e.placeholder,options:e.options,externalId:e.externalId,trackHistory:e.trackHistory,indexed:e.indexed,referenceTo:e.referenceTo,formula:e.formula,sortOrder:e.sortOrder}}var re=class{adapter;constructor(e){this.adapter=e}async getItems(e){let t=await this.adapter.getClient().meta.getItems(e);return t&&typeof t==`object`&&`items`in t&&Array.isArray(t.items)?t.items:[]}async saveMetadataItem(e,t,n){await this.adapter.getClient().meta.saveItem(e,t,n),this.adapter.invalidateCache(`${e}:${t}`)}async deleteMetadataItem(e,t){await this.adapter.getClient().meta.saveItem(e,t,{name:t,enabled:!1,_deleted:!0}),this.adapter.invalidateCache(`${e}:${t}`)}async saveObject(e,t){let n=this.adapter.getClient(),r=te(e,t);await n.meta.saveItem(`object`,e.name,r),this.adapter.invalidateCache(`object:${e.name}`)}async deleteObject(e){await this.adapter.getClient().meta.saveItem(`object`,e,{name:e,enabled:!1,_deleted:!0}),this.adapter.invalidateCache(`object:${e}`)}async saveFields(e,t){let n=this.adapter.getClient(),r={};try{let t=await n.meta.getItem(`object`,e);r=t?.item??t??{}}catch{}let i={...r,name:e,fields:t.map(ne)};await n.meta.saveItem(`object`,e,i),this.adapter.invalidateCache(`object:${e}`)}static diffObjects(e,t){let n=new Map(e.map(e=>[e.id,e])),r=new Map(t.map(e=>[e.id,e]));for(let[e,t]of r)if(!n.has(e))return{type:`create`,object:t};for(let[e,t]of n)if(!r.has(e))return{type:`delete`,object:t};for(let[e,t]of r){let r=n.get(e);if(r&&JSON.stringify(r)!==JSON.stringify(t))return{type:`update`,object:t}}return null}static diffFields(e,t){let n=new Map(e.map(e=>[e.id,e])),r=new Map(t.map(e=>[e.id,e]));for(let[e,t]of r)if(!n.has(e))return{type:`create`,field:t};for(let[e,t]of n)if(!r.has(e))return{type:`delete`,field:t};for(let[e,t]of r){let r=n.get(e);if(r&&JSON.stringify(r)!==JSON.stringify(t))return{type:`update`,field:t}}return null}};function ie(){let e=a();return(0,g.useMemo)(()=>e?new re(e):null,[e])}var E=0;function D(e=`nav`){return`${e}_${Date.now()}_${++E}`}function O(e,t){return[...e,t]}function k(e,t,n){return e.filter(e=>!(e.type===t&&(t===`page`&&e.pageName===n||t===`dashboard`&&e.dashboardName===n))).map(e=>e.children&&e.children.length>0?{...e,children:k(e.children,t,n)}:e)}function A(e,t,n,r){return e.map(e=>{let i=e;return t===`page`&&e.type===`page`&&e.pageName===n?i={...e,pageName:r}:t===`dashboard`&&e.type===`dashboard`&&e.dashboardName===n&&(i={...e,dashboardName:r}),i.children&&i.children.length>0?{...i,children:A(i.children,t,n,r)}:i})}function j(e,t){return e.length===t.length?e===t?!0:JSON.stringify(e)===JSON.stringify(t):!1}function ae(e){return typeof e==`string`&&e.startsWith(`sys_`)}function oe(e){if(!e||typeof e!=`object`)return!1;let t=e;return t._packageId!=null||t._provenance===`package`?!0:ae(t.name)}function M(e){if(!e||typeof e!=`object`)return!1;let t=e,n=t._lock??t.protection?.lock;return n!==`full`&&n!==`no-overlay`}function N(){let e=a(),{apps:t,refresh:n}=c(),{t:r}=s(),i=(0,g.useRef)(e);i.current=e;let o=(0,g.useRef)(n);o.current=n;let l=(0,g.useCallback)(async(e,t)=>{let n=i.current?.getClient();n&&await n.meta.saveItem(`app`,e,t),await o.current?.()},[]),d=(0,g.useCallback)(e=>h(t,e),[t]),f=(0,g.useCallback)(async(e,t,n)=>{let i=d(e);if(!i)return;let a=i.navigation??[],o=O(a,{id:D(`nav_page`),type:`page`,label:n||t,pageName:t,icon:`FileText`}),s={...i,navigation:o};try{await l(e,s),u.success(r(`navigationSync.addedPage`,{name:n||t}),{action:{label:r(`navigationSync.undoLabel`),onClick:async()=>{try{await l(e,{...i,navigation:a}),u.info(r(`navigationSync.undone`))}catch{u.error(r(`navigationSync.undoFailed`))}}}})}catch{u.error(r(`navigationSync.updateFailed`))}},[d,l,r]),p=(0,g.useCallback)(async(e,t,n)=>{let i=d(e);if(!i)return;let a=i.navigation??[],o=O(a,{id:D(`nav_dash`),type:`dashboard`,label:n||t,dashboardName:t,icon:`LayoutDashboard`}),s={...i,navigation:o};try{await l(e,s),u.success(r(`navigationSync.addedDashboard`,{name:n||t}),{action:{label:r(`navigationSync.undoLabel`),onClick:async()=>{try{await l(e,{...i,navigation:a}),u.info(r(`navigationSync.undone`))}catch{u.error(r(`navigationSync.undoFailed`))}}}})}catch{u.error(r(`navigationSync.updateFailed`))}},[d,l,r]),m=(0,g.useCallback)(async(e,t)=>{let n=d(e);if(!n)return;let i=n.navigation??[],a=k(i,`page`,t);if(j(a,i))return;let o={...n,navigation:a};try{await l(e,o),u.success(r(`navigationSync.removedPage`,{name:t}),{action:{label:r(`navigationSync.undoLabel`),onClick:async()=>{try{await l(e,{...n,navigation:i}),u.info(r(`navigationSync.undone`))}catch{u.error(r(`navigationSync.undoFailed`))}}}})}catch{u.error(r(`navigationSync.updateFailed`))}},[d,l,r]),_=(0,g.useCallback)(async(e,t)=>{let n=d(e);if(!n)return;let i=n.navigation??[],a=k(i,`dashboard`,t);if(j(a,i))return;let o={...n,navigation:a};try{await l(e,o),u.success(r(`navigationSync.removedDashboard`,{name:t}),{action:{label:r(`navigationSync.undoLabel`),onClick:async()=>{try{await l(e,{...n,navigation:i}),u.info(r(`navigationSync.undone`))}catch{u.error(r(`navigationSync.undoFailed`))}}}})}catch{u.error(r(`navigationSync.updateFailed`))}},[d,l,r]),v=(0,g.useCallback)(async(e,t,n)=>{let i=d(e);if(!i)return;let a=i.navigation??[],o=A(a,`page`,t,n);if(j(o,a))return;let s={...i,navigation:o};try{await l(e,s),u.success(r(`navigationSync.renamedPage`,{oldName:t,newName:n}),{action:{label:r(`navigationSync.undoLabel`),onClick:async()=>{try{await l(e,{...i,navigation:a}),u.info(r(`navigationSync.undone`))}catch{u.error(r(`navigationSync.undoFailed`))}}}})}catch{u.error(r(`navigationSync.updateFailed`))}},[d,l,r]),y=(0,g.useCallback)(async(e,t,n)=>{let i=d(e);if(!i)return;let a=i.navigation??[],o=A(a,`dashboard`,t,n);if(j(o,a))return;let s={...i,navigation:o};try{await l(e,s),u.success(r(`navigationSync.renamedDashboard`,{oldName:t,newName:n}),{action:{label:r(`navigationSync.undoLabel`),onClick:async()=>{try{await l(e,{...i,navigation:a}),u.info(r(`navigationSync.undone`))}catch{u.error(r(`navigationSync.undoFailed`))}}}})}catch{u.error(r(`navigationSync.updateFailed`))}},[d,l,r]),b=e=>e&&typeof e==`object`&&`name`in e?e.name:void 0;return{syncPageCreated:f,syncDashboardCreated:p,syncPageDeleted:m,syncDashboardDeleted:_,syncPageRenamed:v,syncDashboardRenamed:y,syncPageCreatedAllApps:(0,g.useCallback)(async(e,n)=>{for(let r of t){let t=b(r);!t||!M(r)||await f(t,e,n)}},[t,f]),syncDashboardCreatedAllApps:(0,g.useCallback)(async(e,n)=>{for(let r of t){let t=b(r);!t||!M(r)||await p(t,e,n)}},[t,p]),syncPageDeletedAllApps:(0,g.useCallback)(async e=>{for(let n of t){let t=b(n);!t||!M(n)||await m(t,e)}},[t,m]),syncDashboardDeletedAllApps:(0,g.useCallback)(async e=>{for(let n of t){let t=b(n);!t||!M(n)||await _(t,e)}},[t,_]),syncPageRenamedAllApps:(0,g.useCallback)(async(e,n)=>{for(let r of t){let t=b(r);!t||!M(r)||await v(t,e,n)}},[t,v]),syncDashboardRenamedAllApps:(0,g.useCallback)(async(e,n)=>{for(let r of t){let t=b(r);!t||!M(r)||await y(t,e,n)}},[t,y])}}function P(){let{pages:e,dashboards:t,apps:n,getTypeStatus:r}=c(),i=a(),o=(0,g.useRef)(i);o.current=i;let s=d(),{syncPageCreated:l,syncDashboardCreated:u,syncPageDeleted:f,syncDashboardDeleted:p}=N(),m=(0,g.useRef)(null),h=(0,g.useRef)(null),_=(0,g.useRef)(0),v=(0,g.useRef)(!1),y=e=>e&&typeof e==`object`&&`name`in e?e.name:void 0;return(0,g.useEffect)(()=>{if(v.current)return;if(s){m.current=null,h.current=null;return}if(r&&(r(`page`)!==`ready`||r(`dashboard`)!==`ready`))return;let i=e=>new Set(e.filter(e=>!oe(e)).map(e=>e?.name).filter(e=>typeof e==`string`&&e.length>0)),a=i(e??[]),o=i(t??[]),c=m.current,d=h.current;if(c===null||d===null){m.current=a,h.current=o;return}let g=[...a].filter(e=>!c.has(e)),b=[...c].filter(e=>!a.has(e)),x=[...o].filter(e=>!d.has(e)),S=[...d].filter(e=>!o.has(e));if(g.length===0&&b.length===0&&x.length===0&&S.length===0){m.current=a,h.current=o;return}let C=++_.current;v.current=!0;let w=!1;return(async()=>{try{for(let e of n){if(w||_.current!==C)break;let t=y(e);if(!(!t||!M(e))){for(let e of g){if(w)break;await l(t,e)}for(let e of b){if(w)break;await f(t,e)}for(let e of x){if(w)break;await u(t,e)}for(let e of S){if(w)break;await p(t,e)}}}}finally{_.current===C&&(m.current=a,h.current=o,v.current=!1)}})(),()=>{w=!0}},[e,t,n,s,r,l,u,f,p]),null}var F=new Set([`view`,`record`,`page`,`dashboard`,`design`,`report`]);function I(e){return e.replace(/[-_]/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}function L(e){try{return decodeURIComponent(e)}catch{return e}}function se({pathname:e,appName:t,objects:n=[],basePathSegment:r=`apps`,disabled:i=!1}){let{addRecentItem:a}=p(),o=(0,g.useRef)(n);o.current=n,(0,g.useEffect)(()=>{if(i||!t)return;let n=e.split(`/`).filter(Boolean);if(n[0]!==r||n[1]!==t)return;let s=n[2],c=n[3],l=`/${r}/${t}`;if(s===`metadata`){let e=n[3],t=n[4];e&&t&&t!==`new`&&a({id:`metadata:${e}:${L(t)}`,label:L(t),href:`${l}/metadata/${e}/${t}`,type:`metadata`});return}if(s&&!F.has(s)){let e=o.current.find(e=>e.name===s);e&&a({id:`object:${e.name}`,label:e.label||e.name,href:`${l}/${e.name}`,type:`object`});return}if(c)switch(s){case`dashboard`:a({id:`dashboard:${c}`,label:I(c),href:`${l}/dashboard/${c}`,type:`dashboard`});break;case`page`:a({id:`page:${c}`,label:I(c),href:`${l}/page/${c}`,type:`page`});break;case`report`:a({id:`report:${c}`,label:I(c),href:`${l}/report/${c}`,type:`report`});break;default:break}},[e,t,r,i])}function ce(e){return{status:`drafted`,drafted:e.items,...e.summary?{summary:e.summary}:{},...e.packageId?{packageId:e.packageId}:{},...e.autoPublishable?{autoPublishable:!0}:{},...e.failedCount?{failed:Array.from({length:e.failedCount},()=>null)}:{},...e.materialized?{materialized:!0}:{},...e.verification?{verification:e.verification}:{},...e.issues&&e.issues.length?{issues:e.issues}:{},...e.nextSteps&&e.nextSteps.length?{nextSteps:e.nextSteps}:{}}}function le(e){return{status:`blueprint_proposed`,...e.summary?{summary:e.summary}:{},counts:e.counts,questions:e.questions,...e.targetApp?{targetApp:e.targetApp}:{},blueprint:{objects:e.objects.map(e=>({name:e.name,...e.label?{label:e.label}:{},fields:Array.from({length:e.fieldCount},()=>null)})),assumptions:e.assumptions}}}var R=`objectstack:ai-chat-conversation-id`,z=`objectstack:ai-chat-messages`;function B(e,t){return t?`${R}:${e}:${t}`:`${R}:${e}`}function V(e){try{return localStorage.getItem(e)??void 0}catch{return}}function H(e,t){try{t?localStorage.setItem(e,t):localStorage.removeItem(e)}catch{}}function U(e){return`${z}:${e}`}function W(e){try{let t=localStorage.getItem(U(e));if(!t)return[];let n=JSON.parse(t);return Array.isArray(n)?n.filter(e=>!!e&&typeof e==`object`&&typeof e.id==`string`&&(e.role===`user`||e.role===`assistant`||e.role===`system`)&&Array.isArray(e.parts)):[]}catch{return[]}}function G(e,t){if(e)try{if(t.length===0){localStorage.removeItem(U(e));return}localStorage.setItem(U(e),JSON.stringify(t))}catch{}}function ue(e){return e.map(e=>{let t=[];if(e.content&&t.push({type:`text`,text:e.content}),e.role===`assistant`)for(let n of e.toolInvocations??[]){let e=n.draftReview?ce(n.draftReview):n.proposedPlan?le(n.proposedPlan):void 0;t.push({type:`tool-${n.toolName}`,toolCallId:n.toolCallId,toolName:n.toolName,state:n.state??(n.errorText?`output-error`:`output-available`),...n.errorText?{errorText:n.errorText}:{},...e===void 0?{}:{output:e}})}if(t.length!==0)return{id:e.id,role:e.role,parts:t}}).filter(e=>!!e)}function K(e){return typeof e==`string`?e?[{type:`text`,text:e}]:[]:Array.isArray(e)?e.map(e=>{if(typeof e==`string`)return e?{type:`text`,text:e}:void 0;if(e&&typeof e==`object`&&`type`in e&&typeof e.type==`string`)return e;if(e&&typeof e==`object`&&`text`in e&&typeof e.text==`string`)return{type:`text`,text:e.text}}).filter(e=>!!e):e&&typeof e==`object`&&`parts`in e&&Array.isArray(e.parts)?K(e.parts):[]}function de(e,t){for(let n of K(e)){let e=typeof n.toolCallId==`string`?n.toolCallId:void 0;if(!e)continue;let r=t.get(e);if(!r)continue;let i=n.output??n.result;if(i===void 0)continue;r.output=i;let a=n.errorText;r.state=n.isError||typeof a==`string`?`output-error`:`output-available`,typeof a==`string`&&(r.errorText=a)}}function q(e){if(!e)return[];let t=[],n=new Map;return e.forEach((e,r)=>{let i=e.role;if(i===`tool`){de(e.content,n);return}if(i!==`user`&&i!==`assistant`&&i!==`system`)return;let a=K(e.content);if(a.length!==0){if(i===`assistant`)for(let e of a){e.type===`tool-call`&&typeof e.toolName==`string`&&e.toolName&&(e.type=`tool-${e.toolName}`);let t=typeof e.toolCallId==`string`?e.toolCallId:void 0;t&&(e.type===`tool-call`||e.type.startsWith(`tool-`))&&n.set(t,e)}t.push({id:e.id??`msg-${r}`,role:i,parts:a})}}),t}function J(e){if(!(typeof e!=`string`||!e))try{let t=JSON.parse(e);return Array.isArray(t)?t:void 0}catch{return}}function fe(e){return e?e.map(e=>{let t=e.id,n=typeof e.content==`string`?e.content:``;if(e.role===`assistant`){let r=J(e.tool_calls);if(r&&r.length>0){let e=[];return n&&e.push({type:`text`,text:n}),e.push(...r),{id:t,role:`assistant`,content:e}}return{id:t,role:`assistant`,content:n}}if(e.role===`tool`){let r=J(e.content);return r&&r.length>0&&r[0]?.type===`tool-result`?{id:t,role:`tool`,content:r}:{id:t,role:`tool`,content:[{type:`tool-result`,toolCallId:e.tool_call_id??``,toolName:`unknown`,output:{type:`text`,value:n}}]}}return{id:t,role:e.role,content:n}}):[]}async function Y(e,t){let n=await fetch(`${e}/conversations/${encodeURIComponent(t)}`,{credentials:`include`});if(n.status===404||n.status===403)return null;if(!n.ok)throw Error(`GET conversation failed: ${n.status}`);return await n.json()}async function X(e){let t=await fetch(`${e}/conversations`,{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`},body:`{}`});if(!t.ok)throw Error(`POST conversation failed: ${t.status}`);return await t.json()}async function pe(e,t){await fetch(`${e}/conversations/${encodeURIComponent(t)}`,{method:`DELETE`,credentials:`include`}).catch(()=>{})}function Z(e){let{userId:t,scope:n,apiBase:r,activeId:i,forceNew:a,resumeMode:o=`resume`}=e,[s,c]=(0,g.useState)(void 0),[l,u]=(0,g.useState)([]),[d,f]=(0,g.useState)(!!t),p=(0,g.useRef)(!0),m=(0,g.useRef)(void 0),h=(0,g.useRef)(void 0);(0,g.useEffect)(()=>(p.current=!0,()=>{p.current=!1}),[]),(0,g.useEffect)(()=>{if(!t){c(void 0),u([]),f(!1),m.current=void 0,h.current=void 0;return}let e=h.current!==n;if(!i&&!a&&!e&&m.current===t&&s)return;let l=!1,d=B(t,n);return!i&&(a||e&&m.current===t)&&(c(void 0),u([])),f(!0),(async()=>{try{if(i){let e=await Y(r,i);if(l)return;if(e){H(d,e.id),c(e.id);let r=q(e.messages);u(r.length>0?r:W(e.id)),m.current=t,h.current=n;return}H(d,void 0),G(i,[])}else if(!a){let e=V(d);if(e){let i=await Y(r,e);if(l)return;if(i){let e=q(i.messages);if(o!==`fresh`||e.length===0){c(i.id),u(o===`fresh`?[]:e.length>0?e:W(i.id)),m.current=t,h.current=n;return}}else H(d,void 0),G(e,[])}}let e=await X(r);if(l)return;H(d,e.id),c(e.id),u(q(e.messages)),m.current=t,h.current=n}catch{l||(c(void 0),u([]))}finally{l||f(!1)}})(),()=>{l=!0}},[t,n,r,i,a,o]);let _=(0,g.useCallback)(async()=>{if(!t)return;let e=B(t,n);f(!0);try{s&&await pe(r,s),G(s,[]),H(e,void 0);let t=await X(r);if(H(e,t.id),G(t.id,[]),!p.current)return;c(t.id),u([])}catch{p.current&&(c(void 0),u([]))}finally{p.current&&f(!1)}},[s,t,n,r]),v=(0,g.useCallback)(async()=>{if(!t)return;let e=B(t,n);f(!0);try{let i=await X(r);if(H(e,i.id),G(i.id,[]),!p.current)return;c(i.id),u([]),m.current=t,h.current=n}catch{}finally{p.current&&f(!1)}},[t,n,r]);return{conversationId:s,conversationScope:h.current,initialMessages:l,isLoading:d,reset:_,startNew:v}}var me=new Set([`new chat`,`new conversation`,`untitled`,`新对话`]);function he(e){let t=e?.trim().toLowerCase();return!t||me.has(t)}function ge(e){let t=e.messages;if(!t||t.length===0)return;for(let e=t.length-1;e>=0;e--){let n=t[e];if(n.role===`user`){let e=Q(n.content);if(e)return e}}let n=t[t.length-1];return Q(n?.content)}function Q(e){if(typeof e==`string`)return e.slice(0,140);if(e&&typeof e==`object`&&`text`in e&&typeof e.text==`string`)return e.text.slice(0,140);if(e&&typeof e==`object`&&`parts`in e&&Array.isArray(e.parts))return Q(e.parts);if(Array.isArray(e)){let t=e.map(e=>typeof e==`string`?e:e&&typeof e==`object`&&`text`in e&&typeof e.text==`string`?e.text:``).join(``);return t?t.slice(0,140):void 0}}function $(e){let t=e.title?.trim(),n=ge(e)??Q(e.preview);return{id:e.id,title:he(t)?void 0:t,agentId:e.agentId,createdAt:e.createdAt,updatedAt:e.updatedAt,preview:n}}async function _e(e,t){let n=await fetch(`${e}/conversations/${encodeURIComponent(t)}`,{credentials:`include`});if(!n.ok)return;let r=await n.json();return $(`conversation`in r&&r.conversation?r.conversation:r)}function ve(e){let{userId:t,apiBase:n,limit:r=50,refreshKey:i}=e,[a,o]=(0,g.useState)([]),[s,c]=(0,g.useState)(!!t),[l,u]=(0,g.useState)(void 0),[d,f]=(0,g.useState)(0),p=(0,g.useCallback)(async()=>{f(e=>e+1)},[]),m=(0,g.useCallback)(async e=>{try{await fetch(`${n}/conversations/${encodeURIComponent(e)}`,{method:`DELETE`,credentials:`include`})}finally{o(t=>t.filter(t=>t.id!==e))}},[n]),h=(0,g.useCallback)(async(e,t)=>{let r=t.trim();o(t=>t.map(t=>t.id===e?{...t,title:r||void 0}:t));let i=await fetch(`${n}/conversations/${encodeURIComponent(e)}`,{method:`PATCH`,credentials:`include`,headers:{"Content-Type":`application/json`},body:JSON.stringify({title:r})});if(!i.ok)throw f(e=>e+1),Error(`PATCH conversation failed: ${i.status}`)},[n]);return(0,g.useEffect)(()=>{if(!t){o([]),c(!1),u(void 0);return}let e=!1;return c(!0),u(void 0),(async()=>{try{let t=await fetch(`${n}/conversations?limit=${encodeURIComponent(String(r))}`,{credentials:`include`});if(!t.ok)throw Error(`GET conversations failed: ${t.status}`);let i=await t.json(),a=Array.isArray(i)?i:i.conversations??i.items??[];if(e)return;let s=a.map($).sort((e,t)=>(t.updatedAt??``).localeCompare(e.updatedAt??``));o(s);let c=s.filter(e=>!e.title&&!e.preview).slice(0,20);if(c.length>0){let t=await Promise.all(c.map(e=>_e(n,e.id).catch(()=>void 0)));if(e)return;let r=new Map(t.filter(e=>!!(e?.preview||e?.title)).map(e=>[e.id,e]));r.size>0&&o(e=>e.map(e=>{let t=r.get(e.id);return t?{...e,title:e.title??t.title,preview:e.preview??t.preview}:e}))}}catch(t){if(e)return;u(t instanceof Error?t:Error(String(t))),o([])}finally{e||c(!1)}})(),()=>{e=!0}},[t,n,r,d,i]),{conversations:a,isLoading:s,error:l,refetch:p,remove:m,rename:h}}async function ye(e){let t=await fetch(`/api/v1/meta/_drafts?packageId=${encodeURIComponent(e)}`,{credentials:`include`,headers:{Accept:`application/json`},cache:`no-store`});if(!t.ok)throw Error(`_drafts HTTP ${t.status}`);let n=await t.json(),r=Array.isArray(n)?n:n?.drafts??n?.data?.drafts??[];return Array.isArray(r)?r.length:0}function be(e){if(!e||e.length===0)return!1;let t=e[e.length-1];return!t||t.role!==`assistant`?!1:t.parts.some(e=>e.type===`text`&&String(e.text??``).trim().length>0)}function xe(e){let{chatApi:t,conversationId:n}=e,[r,i]=(0,g.useState)(!1),a=(0,g.useRef)(void 0);return{errorSuppressed:r,handleChatError:(0,g.useCallback)(async e=>{if(e?.notSent){i(!1);return}let r=t?.replace(/\/agents\/[^/]+\/chat$/,``);if(!n||!r){i(!1);return}try{let e=q((await Y(r,n))?.messages);if(be(e)&&a.current){a.current(e),i(!0);return}}catch{}i(!1)},[n,t]),setMessagesRef:a,resetSuppression:(0,g.useCallback)(()=>i(!1),[])}}export{Y as a,Z as c,P as d,ie as f,_ as g,y as h,fe as i,G as l,C as m,ye as n,ue as o,ee as p,ve as r,q as s,xe as t,se as u};
@@ -0,0 +1,5 @@
1
+ import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{_ as t,g as n}from"./vendor-react-slxo-5GC.js";var r=e(n()),i=e(t());function a(){var e=[...arguments];return(0,i.useMemo)(()=>t=>{e.forEach(e=>e(t))},e)}var o=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;function s(e){let t=Object.prototype.toString.call(e);return t===`[object Window]`||t===`[object global]`}function c(e){return`nodeType`in e}function l(e){return e?s(e)?e:c(e)?e.ownerDocument?.defaultView??window:window:window}function u(e){let{Document:t}=l(e);return e instanceof t}function d(e){return s(e)?!1:e instanceof l(e).HTMLElement}function f(e){return e instanceof l(e).SVGElement}function p(e){return e?s(e)?e.document:c(e)?u(e)?e:d(e)||f(e)?e.ownerDocument:document:document:document}var m=o?i.useLayoutEffect:i.useEffect;function h(e){let t=(0,i.useRef)(e);return m(()=>{t.current=e}),(0,i.useCallback)(function(){var e=[...arguments];return t.current==null?void 0:t.current(...e)},[])}function g(){let e=(0,i.useRef)(null);return[(0,i.useCallback)((t,n)=>{e.current=setInterval(t,n)},[]),(0,i.useCallback)(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[])]}function _(e,t){t===void 0&&(t=[e]);let n=(0,i.useRef)(e);return m(()=>{n.current!==e&&(n.current=e)},t),n}function v(e,t){let n=(0,i.useRef)();return(0,i.useMemo)(()=>{let t=e(n.current);return n.current=t,t},[...t])}function y(e){let t=h(e),n=(0,i.useRef)(null);return[n,(0,i.useCallback)(e=>{e!==n.current&&t?.(e,n.current),n.current=e},[])]}function b(e){let t=(0,i.useRef)();return(0,i.useEffect)(()=>{t.current=e},[e]),t.current}var x={};function S(e,t){return(0,i.useMemo)(()=>{if(t)return t;let n=x[e]==null?0:x[e]+1;return x[e]=n,e+`-`+n},[e,t])}function C(e){return function(t){return[...arguments].slice(1).reduce((t,n)=>{let r=Object.entries(n);for(let[n,i]of r){let r=t[n];r!=null&&(t[n]=r+e*i)}return t},{...t})}}var w=C(1),T=C(-1);function E(e){return`clientX`in e&&`clientY`in e}function D(e){if(!e)return!1;let{KeyboardEvent:t}=l(e.target);return t&&e instanceof t}function ee(e){if(!e)return!1;let{TouchEvent:t}=l(e.target);return t&&e instanceof t}function te(e){if(ee(e)){if(e.touches&&e.touches.length){let{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}else if(e.changedTouches&&e.changedTouches.length){let{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return E(e)?{x:e.clientX,y:e.clientY}:null}var O=Object.freeze({Translate:{toString(e){if(!e)return;let{x:t,y:n}=e;return`translate3d(`+(t?Math.round(t):0)+`px, `+(n?Math.round(n):0)+`px, 0)`}},Scale:{toString(e){if(!e)return;let{scaleX:t,scaleY:n}=e;return`scaleX(`+t+`) scaleY(`+n+`)`}},Transform:{toString(e){if(e)return[O.Translate.toString(e),O.Scale.toString(e)].join(` `)}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+` `+n+`ms `+r}}}),k=`a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]`;function A(e){return e.matches(k)?e:e.querySelector(k)}var ne={display:`none`};function re(e){let{id:t,value:n}=e;return i.createElement(`div`,{id:t,style:ne},n)}function j(e){let{id:t,announcement:n,ariaLiveType:r=`assertive`}=e;return i.createElement(`div`,{id:t,style:{position:`fixed`,top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:`hidden`,clip:`rect(0 0 0 0)`,clipPath:`inset(100%)`,whiteSpace:`nowrap`},role:`status`,"aria-live":r,"aria-atomic":!0},n)}function ie(){let[e,t]=(0,i.useState)(``);return{announce:(0,i.useCallback)(e=>{e!=null&&t(e)},[]),announcement:e}}var ae=(0,i.createContext)(null);function M(e){let t=(0,i.useContext)(ae);(0,i.useEffect)(()=>{if(!t)throw Error(`useDndMonitor must be used within a children of <DndContext>`);return t(e)},[e,t])}function oe(){let[e]=(0,i.useState)(()=>new Set),t=(0,i.useCallback)(t=>(e.add(t),()=>e.delete(t)),[e]);return[(0,i.useCallback)(t=>{let{type:n,event:r}=t;e.forEach(e=>e[n]?.call(e,r))},[e]),t]}var se={draggable:`
2
+ To pick up a draggable item, press the space bar.
3
+ While dragging, use the arrow keys to move the item.
4
+ Press space again to drop the item in its new position, or press escape to cancel.
5
+ `},ce={onDragStart(e){let{active:t}=e;return`Picked up draggable item `+t.id+`.`},onDragOver(e){let{active:t,over:n}=e;return n?`Draggable item `+t.id+` was moved over droppable area `+n.id+`.`:`Draggable item `+t.id+` is no longer over a droppable area.`},onDragEnd(e){let{active:t,over:n}=e;return n?`Draggable item `+t.id+` was dropped over droppable area `+n.id:`Draggable item `+t.id+` was dropped.`},onDragCancel(e){let{active:t}=e;return`Dragging was cancelled. Draggable item `+t.id+` was dropped.`}};function N(e){let{announcements:t=ce,container:n,hiddenTextDescribedById:a,screenReaderInstructions:o=se}=e,{announce:s,announcement:c}=ie(),l=S(`DndLiveRegion`),[u,d]=(0,i.useState)(!1);if((0,i.useEffect)(()=>{d(!0)},[]),M((0,i.useMemo)(()=>({onDragStart(e){let{active:n}=e;s(t.onDragStart({active:n}))},onDragMove(e){let{active:n,over:r}=e;t.onDragMove&&s(t.onDragMove({active:n,over:r}))},onDragOver(e){let{active:n,over:r}=e;s(t.onDragOver({active:n,over:r}))},onDragEnd(e){let{active:n,over:r}=e;s(t.onDragEnd({active:n,over:r}))},onDragCancel(e){let{active:n,over:r}=e;s(t.onDragCancel({active:n,over:r}))}}),[s,t])),!u)return null;let f=i.createElement(i.Fragment,null,i.createElement(re,{id:a,value:o.draggable}),i.createElement(j,{id:l,announcement:c}));return n?(0,r.createPortal)(f,n):f}var P;(function(e){e.DragStart=`dragStart`,e.DragMove=`dragMove`,e.DragEnd=`dragEnd`,e.DragCancel=`dragCancel`,e.DragOver=`dragOver`,e.RegisterDroppable=`registerDroppable`,e.SetDroppableDisabled=`setDroppableDisabled`,e.UnregisterDroppable=`unregisterDroppable`})(P||={});function F(){}function I(e,t){return(0,i.useMemo)(()=>({sensor:e,options:t??{}}),[e,t])}function L(){var e=[...arguments];return(0,i.useMemo)(()=>[...e].filter(e=>e!=null),[...e])}var R=Object.freeze({x:0,y:0});function z(e,t){return Math.sqrt((e.x-t.x)**2+(e.y-t.y)**2)}function le(e,t){let n=te(e);if(!n)return`0 0`;let r={x:(n.x-t.left)/t.width*100,y:(n.y-t.top)/t.height*100};return r.x+`% `+r.y+`%`}function B(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return n-r}function ue(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return r-n}function V(e){let{left:t,top:n,height:r,width:i}=e;return[{x:t,y:n},{x:t+i,y:n},{x:t,y:n+r},{x:t+i,y:n+r}]}function de(e,t){if(!e||e.length===0)return null;let[n]=e;return t?n[t]:n}function fe(e,t,n){return t===void 0&&(t=e.left),n===void 0&&(n=e.top),{x:t+e.width*.5,y:n+e.height*.5}}var H=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=fe(t,t.left,t.top),a=[];for(let e of r){let{id:t}=e,r=n.get(t);if(r){let n=z(fe(r),i);a.push({id:t,data:{droppableContainer:e,value:n}})}}return a.sort(B)},pe=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=V(t),a=[];for(let e of r){let{id:t}=e,r=n.get(t);if(r){let n=V(r),o=i.reduce((e,t,r)=>e+z(n[r],t),0),s=Number((o/4).toFixed(4));a.push({id:t,data:{droppableContainer:e,value:s}})}}return a.sort(B)};function U(e,t){let n=Math.max(t.top,e.top),r=Math.max(t.left,e.left),i=Math.min(t.left+t.width,e.left+e.width),a=Math.min(t.top+t.height,e.top+e.height),o=i-r,s=a-n;if(r<i&&n<a){let n=t.width*t.height,r=e.width*e.height,i=o*s,a=i/(n+r-i);return Number(a.toFixed(4))}return 0}var me=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=[];for(let e of r){let{id:r}=e,a=n.get(r);if(a){let n=U(a,t);n>0&&i.push({id:r,data:{droppableContainer:e,value:n}})}}return i.sort(ue)};function he(e,t){let{top:n,left:r,bottom:i,right:a}=t;return n<=e.y&&e.y<=i&&r<=e.x&&e.x<=a}var W=e=>{let{droppableContainers:t,droppableRects:n,pointerCoordinates:r}=e;if(!r)return[];let i=[];for(let e of t){let{id:t}=e,a=n.get(t);if(a&&he(r,a)){let n=V(a).reduce((e,t)=>e+z(r,t),0),o=Number((n/4).toFixed(4));i.push({id:t,data:{droppableContainer:e,value:o}})}}return i.sort(B)};function ge(e,t,n){return{...e,scaleX:t&&n?t.width/n.width:1,scaleY:t&&n?t.height/n.height:1}}function _e(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:R}function ve(e){return function(t){return[...arguments].slice(1).reduce((t,n)=>({...t,top:t.top+e*n.y,bottom:t.bottom+e*n.y,left:t.left+e*n.x,right:t.right+e*n.x}),{...t})}}var ye=ve(1);function be(e){if(e.startsWith(`matrix3d(`)){let t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}else if(e.startsWith(`matrix(`)){let t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}function G(e,t,n){let r=be(t);if(!r)return e;let{scaleX:i,scaleY:a,x:o,y:s}=r,c=e.left-o-(1-i)*parseFloat(n),l=e.top-s-(1-a)*parseFloat(n.slice(n.indexOf(` `)+1)),u=i?e.width/i:e.width,d=a?e.height/a:e.height;return{width:u,height:d,top:l,right:c+u,bottom:l+d,left:c}}var xe={ignoreTransform:!1};function K(e,t){t===void 0&&(t=xe);let n=e.getBoundingClientRect();if(t.ignoreTransform){let{transform:t,transformOrigin:r}=l(e).getComputedStyle(e);t&&(n=G(n,t,r))}let{top:r,left:i,width:a,height:o,bottom:s,right:c}=n;return{top:r,left:i,width:a,height:o,bottom:s,right:c}}function Se(e){return K(e,{ignoreTransform:!0})}function Ce(e){let t=e.innerWidth,n=e.innerHeight;return{top:0,left:0,right:t,bottom:n,width:t,height:n}}function we(e,t){return t===void 0&&(t=l(e).getComputedStyle(e)),t.position===`fixed`}function Te(e,t){t===void 0&&(t=l(e).getComputedStyle(e));let n=/(auto|scroll|overlay)/;return[`overflow`,`overflowX`,`overflowY`].some(e=>{let r=t[e];return typeof r==`string`?n.test(r):!1})}function q(e,t){let n=[];function r(i){if(t!=null&&n.length>=t||!i)return n;if(u(i)&&i.scrollingElement!=null&&!n.includes(i.scrollingElement))return n.push(i.scrollingElement),n;if(!d(i)||f(i)||n.includes(i))return n;let a=l(e).getComputedStyle(i);return i!==e&&Te(i,a)&&n.push(i),we(i,a)?n:r(i.parentNode)}return e?r(e):n}function J(e){let[t]=q(e,1);return t??null}function Y(e){return!o||!e?null:s(e)?e:c(e)?u(e)||e===p(e).scrollingElement?window:d(e)?e:null:null}function Ee(e){return s(e)?e.scrollX:e.scrollLeft}function X(e){return s(e)?e.scrollY:e.scrollTop}function De(e){return{x:Ee(e),y:X(e)}}var Z;(function(e){e[e.Forward=1]=`Forward`,e[e.Backward=-1]=`Backward`})(Z||={});function Oe(e){return!o||!e?!1:e===document.scrollingElement}function ke(e){let t={x:0,y:0},n=Oe(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},r={x:e.scrollWidth-n.width,y:e.scrollHeight-n.height};return{isTop:e.scrollTop<=t.y,isLeft:e.scrollLeft<=t.x,isBottom:e.scrollTop>=r.y,isRight:e.scrollLeft>=r.x,maxScroll:r,minScroll:t}}var Ae={x:.2,y:.2};function je(e,t,n,r,i){let{top:a,left:o,right:s,bottom:c}=n;r===void 0&&(r=10),i===void 0&&(i=Ae);let{isTop:l,isBottom:u,isLeft:d,isRight:f}=ke(e),p={x:0,y:0},m={x:0,y:0},h={height:t.height*i.y,width:t.width*i.x};return!l&&a<=t.top+h.height?(p.y=Z.Backward,m.y=r*Math.abs((t.top+h.height-a)/h.height)):!u&&c>=t.bottom-h.height&&(p.y=Z.Forward,m.y=r*Math.abs((t.bottom-h.height-c)/h.height)),!f&&s>=t.right-h.width?(p.x=Z.Forward,m.x=r*Math.abs((t.right-h.width-s)/h.width)):!d&&o<=t.left+h.width&&(p.x=Z.Backward,m.x=r*Math.abs((t.left+h.width-o)/h.width)),{direction:p,speed:m}}function Me(e){if(e===document.scrollingElement){let{innerWidth:e,innerHeight:t}=window;return{top:0,left:0,right:e,bottom:t,width:e,height:t}}let{top:t,left:n,right:r,bottom:i}=e.getBoundingClientRect();return{top:t,left:n,right:r,bottom:i,width:e.clientWidth,height:e.clientHeight}}function Ne(e){return e.reduce((e,t)=>w(e,De(t)),R)}function Pe(e){return e.reduce((e,t)=>e+Ee(t),0)}function Fe(e){return e.reduce((e,t)=>e+X(t),0)}function Ie(e,t){if(t===void 0&&(t=K),!e)return;let{top:n,left:r,bottom:i,right:a}=t(e);J(e)&&(i<=0||a<=0||n>=window.innerHeight||r>=window.innerWidth)&&e.scrollIntoView({block:`center`,inline:`center`})}var Le=[[`x`,[`left`,`right`],Pe],[`y`,[`top`,`bottom`],Fe]],Re=class{constructor(e,t){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;let n=q(t),r=Ne(n);this.rect={...e},this.width=e.width,this.height=e.height;for(let[e,t,i]of Le)for(let a of t)Object.defineProperty(this,a,{get:()=>{let t=i(n),o=r[e]-t;return this.rect[a]+o},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}},ze=class{constructor(e){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(e=>this.target?.removeEventListener(...e))},this.target=e}add(e,t,n){var r;(r=this.target)==null||r.addEventListener(e,t,n),this.listeners.push([e,t,n])}};function Be(e){let{EventTarget:t}=l(e);return e instanceof t?e:p(e)}function Ve(e,t){let n=Math.abs(e.x),r=Math.abs(e.y);return typeof t==`number`?Math.sqrt(n**2+r**2)>t:`x`in t&&`y`in t?n>t.x&&r>t.y:`x`in t?n>t.x:`y`in t?r>t.y:!1}var Q;(function(e){e.Click=`click`,e.DragStart=`dragstart`,e.Keydown=`keydown`,e.ContextMenu=`contextmenu`,e.Resize=`resize`,e.SelectionChange=`selectionchange`,e.VisibilityChange=`visibilitychange`})(Q||={});function He(e){e.preventDefault()}function Ue(e){e.stopPropagation()}var $;(function(e){e.Space=`Space`,e.Down=`ArrowDown`,e.Right=`ArrowRight`,e.Left=`ArrowLeft`,e.Up=`ArrowUp`,e.Esc=`Escape`,e.Enter=`Enter`,e.Tab=`Tab`})($||={});var We={start:[$.Space,$.Enter],cancel:[$.Esc],end:[$.Space,$.Enter,$.Tab]},Ge=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case $.Right:return{...n,x:n.x+25};case $.Left:return{...n,x:n.x-25};case $.Down:return{...n,y:n.y+25};case $.Up:return{...n,y:n.y-25}}},Ke=class{constructor(e){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=e;let{event:{target:t}}=e;this.props=e,this.listeners=new ze(p(t)),this.windowListeners=new ze(l(t)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(Q.Resize,this.handleCancel),this.windowListeners.add(Q.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(Q.Keydown,this.handleKeyDown))}handleStart(){let{activeNode:e,onStart:t}=this.props,n=e.node.current;n&&Ie(n),t(R)}handleKeyDown(e){if(D(e)){let{active:t,context:n,options:r}=this.props,{keyboardCodes:i=We,coordinateGetter:a=Ge,scrollBehavior:o=`smooth`}=r,{code:s}=e;if(i.end.includes(s)){this.handleEnd(e);return}if(i.cancel.includes(s)){this.handleCancel(e);return}let{collisionRect:c}=n.current,l=c?{x:c.left,y:c.top}:R;this.referenceCoordinates||=l;let u=a(e,{active:t,context:n.current,currentCoordinates:l});if(u){let t=T(u,l),r={x:0,y:0},{scrollableAncestors:i}=n.current;for(let n of i){let i=e.code,{isTop:a,isRight:s,isLeft:c,isBottom:l,maxScroll:d,minScroll:f}=ke(n),p=Me(n),m={x:Math.min(i===$.Right?p.right-p.width/2:p.right,Math.max(i===$.Right?p.left:p.left+p.width/2,u.x)),y:Math.min(i===$.Down?p.bottom-p.height/2:p.bottom,Math.max(i===$.Down?p.top:p.top+p.height/2,u.y))},h=i===$.Right&&!s||i===$.Left&&!c,g=i===$.Down&&!l||i===$.Up&&!a;if(h&&m.x!==u.x){let e=n.scrollLeft+t.x,a=i===$.Right&&e<=d.x||i===$.Left&&e>=f.x;if(a&&!t.y){n.scrollTo({left:e,behavior:o});return}a?r.x=n.scrollLeft-e:r.x=i===$.Right?n.scrollLeft-d.x:n.scrollLeft-f.x,r.x&&n.scrollBy({left:-r.x,behavior:o});break}else if(g&&m.y!==u.y){let e=n.scrollTop+t.y,a=i===$.Down&&e<=d.y||i===$.Up&&e>=f.y;if(a&&!t.x){n.scrollTo({top:e,behavior:o});return}a?r.y=n.scrollTop-e:r.y=i===$.Down?n.scrollTop-d.y:n.scrollTop-f.y,r.y&&n.scrollBy({top:-r.y,behavior:o});break}}this.handleMove(e,w(T(u,this.referenceCoordinates),r))}}}handleMove(e,t){let{onMove:n}=this.props;e.preventDefault(),n(t)}handleEnd(e){let{onEnd:t}=this.props;e.preventDefault(),this.detach(),t()}handleCancel(e){let{onCancel:t}=this.props;e.preventDefault(),this.detach(),t()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}};Ke.activators=[{eventName:`onKeyDown`,handler:(e,t,n)=>{let{keyboardCodes:r=We,onActivation:i}=t,{active:a}=n,{code:o}=e.nativeEvent;if(r.start.includes(o)){let t=a.activatorNode.current;return t&&e.target!==t?!1:(e.preventDefault(),i?.({event:e.nativeEvent}),!0)}return!1}}];function qe(e){return!!(e&&`distance`in e)}function Je(e){return!!(e&&`delay`in e)}var Ye=class{constructor(e,t,n){n===void 0&&(n=Be(e.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=e,this.events=t;let{event:r}=e,{target:i}=r;this.props=e,this.events=t,this.document=p(i),this.documentListeners=new ze(this.document),this.listeners=new ze(n),this.windowListeners=new ze(l(i)),this.initialCoordinates=te(r)??R,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){let{events:e,props:{options:{activationConstraint:t,bypassActivationConstraint:n}}}=this;if(this.listeners.add(e.move.name,this.handleMove,{passive:!1}),this.listeners.add(e.end.name,this.handleEnd),e.cancel&&this.listeners.add(e.cancel.name,this.handleCancel),this.windowListeners.add(Q.Resize,this.handleCancel),this.windowListeners.add(Q.DragStart,He),this.windowListeners.add(Q.VisibilityChange,this.handleCancel),this.windowListeners.add(Q.ContextMenu,He),this.documentListeners.add(Q.Keydown,this.handleKeydown),t){if(n!=null&&n({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(Je(t)){this.timeoutId=setTimeout(this.handleStart,t.delay),this.handlePending(t);return}if(qe(t)){this.handlePending(t);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(e,t){let{active:n,onPending:r}=this.props;r(n,e,this.initialCoordinates,t)}handleStart(){let{initialCoordinates:e}=this,{onStart:t}=this.props;e&&(this.activated=!0,this.documentListeners.add(Q.Click,Ue,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(Q.SelectionChange,this.removeTextSelection),t(e))}handleMove(e){let{activated:t,initialCoordinates:n,props:r}=this,{onMove:i,options:{activationConstraint:a}}=r;if(!n)return;let o=te(e)??R,s=T(n,o);if(!t&&a){if(qe(a)){if(a.tolerance!=null&&Ve(s,a.tolerance))return this.handleCancel();if(Ve(s,a.distance))return this.handleStart()}if(Je(a)&&Ve(s,a.tolerance))return this.handleCancel();this.handlePending(a,s);return}e.cancelable&&e.preventDefault(),i(o)}handleEnd(){let{onAbort:e,onEnd:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleCancel(){let{onAbort:e,onCancel:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleKeydown(e){e.code===$.Esc&&this.handleCancel()}removeTextSelection(){var e;(e=this.document.getSelection())==null||e.removeAllRanges()}},Xe={cancel:{name:`pointercancel`},move:{name:`pointermove`},end:{name:`pointerup`}},Ze=class extends Ye{constructor(e){let{event:t}=e,n=p(t.target);super(e,Xe,n)}};Ze.activators=[{eventName:`onPointerDown`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return!n.isPrimary||n.button!==0?!1:(r?.({event:n}),!0)}}];var Qe={move:{name:`mousemove`},end:{name:`mouseup`}},$e;(function(e){e[e.RightClick=2]=`RightClick`})($e||={});var et=class extends Ye{constructor(e){super(e,Qe,p(e.event.target))}};et.activators=[{eventName:`onMouseDown`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button===$e.RightClick?!1:(r?.({event:n}),!0)}}];var tt={cancel:{name:`touchcancel`},move:{name:`touchmove`},end:{name:`touchend`}},nt=class extends Ye{constructor(e){super(e,tt)}static setup(){return window.addEventListener(tt.move.name,e,{capture:!1,passive:!1}),function(){window.removeEventListener(tt.move.name,e)};function e(){}}};nt.activators=[{eventName:`onTouchStart`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t,{touches:i}=n;return i.length>1?!1:(r?.({event:n}),!0)}}];var rt;(function(e){e[e.Pointer=0]=`Pointer`,e[e.DraggableRect=1]=`DraggableRect`})(rt||={});var it;(function(e){e[e.TreeOrder=0]=`TreeOrder`,e[e.ReversedTreeOrder=1]=`ReversedTreeOrder`})(it||={});function at(e){let{acceleration:t,activator:n=rt.Pointer,canScroll:r,draggingRect:a,enabled:o,interval:s=5,order:c=it.TreeOrder,pointerCoordinates:l,scrollableAncestors:u,scrollableAncestorRects:d,delta:f,threshold:p}=e,m=st({delta:f,disabled:!o}),[h,_]=g(),v=(0,i.useRef)({x:0,y:0}),y=(0,i.useRef)({x:0,y:0}),b=(0,i.useMemo)(()=>{switch(n){case rt.Pointer:return l?{top:l.y,bottom:l.y,left:l.x,right:l.x}:null;case rt.DraggableRect:return a}},[n,a,l]),x=(0,i.useRef)(null),S=(0,i.useCallback)(()=>{let e=x.current;if(!e)return;let t=v.current.x*y.current.x,n=v.current.y*y.current.y;e.scrollBy(t,n)},[]),C=(0,i.useMemo)(()=>c===it.TreeOrder?[...u].reverse():u,[c,u]);(0,i.useEffect)(()=>{if(!o||!u.length||!b){_();return}for(let e of C){if(r?.(e)===!1)continue;let n=d[u.indexOf(e)];if(!n)continue;let{direction:i,speed:a}=je(e,n,b,t,p);for(let e of[`x`,`y`])m[e][i[e]]||(a[e]=0,i[e]=0);if(a.x>0||a.y>0){_(),x.current=e,h(S,s),v.current=a,y.current=i;return}}v.current={x:0,y:0},y.current={x:0,y:0},_()},[t,S,r,_,o,s,JSON.stringify(b),JSON.stringify(m),h,u,C,d,JSON.stringify(p)])}var ot={x:{[Z.Backward]:!1,[Z.Forward]:!1},y:{[Z.Backward]:!1,[Z.Forward]:!1}};function st(e){let{delta:t,disabled:n}=e,r=b(t);return v(e=>{if(n||!r||!e)return ot;let i={x:Math.sign(t.x-r.x),y:Math.sign(t.y-r.y)};return{x:{[Z.Backward]:e.x[Z.Backward]||i.x===-1,[Z.Forward]:e.x[Z.Forward]||i.x===1},y:{[Z.Backward]:e.y[Z.Backward]||i.y===-1,[Z.Forward]:e.y[Z.Forward]||i.y===1}}},[n,t,r])}function ct(e,t){let n=t==null?void 0:e.get(t),r=n?n.node.current:null;return v(e=>t==null?null:r??e??null,[r,t])}function lt(e,t){return(0,i.useMemo)(()=>e.reduce((e,n)=>{let{sensor:r}=n,i=r.activators.map(e=>({eventName:e.eventName,handler:t(e.handler,n)}));return[...e,...i]},[]),[e,t])}var ut;(function(e){e[e.Always=0]=`Always`,e[e.BeforeDragging=1]=`BeforeDragging`,e[e.WhileDragging=2]=`WhileDragging`})(ut||={});var dt;(function(e){e.Optimized=`optimized`})(dt||={});var ft=new Map;function pt(e,t){let{dragging:n,dependencies:r,config:a}=t,[o,s]=(0,i.useState)(null),{frequency:c,measure:l,strategy:u}=a,d=(0,i.useRef)(e),f=y(),p=_(f),m=(0,i.useCallback)(function(e){e===void 0&&(e=[]),!p.current&&s(t=>t===null?e:t.concat(e.filter(e=>!t.includes(e))))},[p]),h=(0,i.useRef)(null),g=v(t=>{if(f&&!n)return ft;if(!t||t===ft||d.current!==e||o!=null){let t=new Map;for(let n of e){if(!n)continue;if(o&&o.length>0&&!o.includes(n.id)&&n.rect.current){t.set(n.id,n.rect.current);continue}let e=n.node.current,r=e?new Re(l(e),e):null;n.rect.current=r,r&&t.set(n.id,r)}return t}return t},[e,o,n,f,l]);return(0,i.useEffect)(()=>{d.current=e},[e]),(0,i.useEffect)(()=>{f||m()},[n,f]),(0,i.useEffect)(()=>{o&&o.length>0&&s(null)},[JSON.stringify(o)]),(0,i.useEffect)(()=>{f||typeof c!=`number`||h.current!==null||(h.current=setTimeout(()=>{m(),h.current=null},c))},[c,f,m,...r]),{droppableRects:g,measureDroppableContainers:m,measuringScheduled:o!=null};function y(){switch(u){case ut.Always:return!1;case ut.BeforeDragging:return n;default:return!n}}}function mt(e,t){return v(n=>e?n||(typeof t==`function`?t(e):e):null,[t,e])}function ht(e,t){return mt(e,t)}function gt(e){let{callback:t,disabled:n}=e,r=h(t),a=(0,i.useMemo)(()=>{if(n||typeof window>`u`||window.MutationObserver===void 0)return;let{MutationObserver:e}=window;return new e(r)},[r,n]);return(0,i.useEffect)(()=>()=>a?.disconnect(),[a]),a}function _t(e){let{callback:t,disabled:n}=e,r=h(t),a=(0,i.useMemo)(()=>{if(n||typeof window>`u`||window.ResizeObserver===void 0)return;let{ResizeObserver:e}=window;return new e(r)},[n]);return(0,i.useEffect)(()=>()=>a?.disconnect(),[a]),a}function vt(e){return new Re(K(e),e)}function yt(e,t,n){t===void 0&&(t=vt);let[r,a]=(0,i.useState)(null);function o(){a(r=>{if(!e)return null;if(e.isConnected===!1)return r??n??null;let i=t(e);return JSON.stringify(r)===JSON.stringify(i)?r:i})}let s=gt({callback(t){if(e)for(let n of t){let{type:t,target:r}=n;if(t===`childList`&&r instanceof HTMLElement&&r.contains(e)){o();break}}}}),c=_t({callback:o});return m(()=>{o(),e?(c?.observe(e),s?.observe(document.body,{childList:!0,subtree:!0})):(c?.disconnect(),s?.disconnect())},[e]),r}function bt(e){return _e(e,mt(e))}var xt=[];function St(e){let t=(0,i.useRef)(e),n=v(n=>e?n&&n!==xt&&e&&t.current&&e.parentNode===t.current.parentNode?n:q(e):xt,[e]);return(0,i.useEffect)(()=>{t.current=e},[e]),n}function Ct(e){let[t,n]=(0,i.useState)(null),r=(0,i.useRef)(e),a=(0,i.useCallback)(e=>{let t=Y(e.target);t&&n(e=>e?(e.set(t,De(t)),new Map(e)):null)},[]);return(0,i.useEffect)(()=>{let t=r.current;if(e!==t){i(t);let o=e.map(e=>{let t=Y(e);return t?(t.addEventListener(`scroll`,a,{passive:!0}),[t,De(t)]):null}).filter(e=>e!=null);n(o.length?new Map(o):null),r.current=e}return()=>{i(e),i(t)};function i(e){e.forEach(e=>{Y(e)?.removeEventListener(`scroll`,a)})}},[a,e]),(0,i.useMemo)(()=>e.length?t?Array.from(t.values()).reduce((e,t)=>w(e,t),R):Ne(e):R,[e,t])}function wt(e,t){t===void 0&&(t=[]);let n=(0,i.useRef)(null);return(0,i.useEffect)(()=>{n.current=null},t),(0,i.useEffect)(()=>{let t=e!==R;t&&!n.current&&(n.current=e),!t&&n.current&&(n.current=null)},[e]),n.current?T(e,n.current):R}function Tt(e){(0,i.useEffect)(()=>{if(!o)return;let t=e.map(e=>{let{sensor:t}=e;return t.setup==null?void 0:t.setup()});return()=>{for(let e of t)e?.()}},e.map(e=>{let{sensor:t}=e;return t}))}function Et(e,t){return(0,i.useMemo)(()=>e.reduce((e,n)=>{let{eventName:r,handler:i}=n;return e[r]=e=>{i(e,t)},e},{}),[e,t])}function Dt(e){return(0,i.useMemo)(()=>e?Ce(e):null,[e])}var Ot=[];function kt(e,t){t===void 0&&(t=K);let[n]=e,r=Dt(n?l(n):null),[a,o]=(0,i.useState)(Ot);function s(){o(()=>e.length?e.map(e=>Oe(e)?r:new Re(t(e),e)):Ot)}let c=_t({callback:s});return m(()=>{c?.disconnect(),s(),e.forEach(e=>c?.observe(e))},[e]),a}function At(e){if(!e)return null;if(e.children.length>1)return e;let t=e.children[0];return d(t)?t:e}function jt(e){let{measure:t}=e,[n,r]=(0,i.useState)(null),a=_t({callback:(0,i.useCallback)(e=>{for(let{target:n}of e)if(d(n)){r(e=>{let r=t(n);return e?{...e,width:r.width,height:r.height}:r});break}},[t])}),[o,s]=y((0,i.useCallback)(e=>{let n=At(e);a?.disconnect(),n&&a?.observe(n),r(n?t(n):null)},[t,a]));return(0,i.useMemo)(()=>({nodeRef:o,rect:n,setRef:s}),[n,o,s])}var Mt=[{sensor:Ze,options:{}},{sensor:Ke,options:{}}],Nt={current:{}},Pt={draggable:{measure:Se},droppable:{measure:Se,strategy:ut.WhileDragging,frequency:dt.Optimized},dragOverlay:{measure:K}},Ft=class extends Map{get(e){return e==null?void 0:super.get(e)??void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(e=>{let{disabled:t}=e;return!t})}getNodeFor(e){return this.get(e)?.node.current??void 0}},It={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new Ft,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:F},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:Pt,measureDroppableContainers:F,windowRect:null,measuringScheduled:!1},Lt={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:``},dispatch:F,draggableNodes:new Map,over:null,measureDroppableContainers:F},Rt=(0,i.createContext)(Lt),zt=(0,i.createContext)(It);function Bt(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new Ft}}}function Vt(e,t){switch(t.type){case P.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case P.DragMove:return e.draggable.active==null?e:{...e,draggable:{...e.draggable,translate:{x:t.coordinates.x-e.draggable.initialCoordinates.x,y:t.coordinates.y-e.draggable.initialCoordinates.y}}};case P.DragEnd:case P.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case P.RegisterDroppable:{let{element:n}=t,{id:r}=n,i=new Ft(e.droppable.containers);return i.set(r,n),{...e,droppable:{...e.droppable,containers:i}}}case P.SetDroppableDisabled:{let{id:n,key:r,disabled:i}=t,a=e.droppable.containers.get(n);if(!a||r!==a.key)return e;let o=new Ft(e.droppable.containers);return o.set(n,{...a,disabled:i}),{...e,droppable:{...e.droppable,containers:o}}}case P.UnregisterDroppable:{let{id:n,key:r}=t,i=e.droppable.containers.get(n);if(!i||r!==i.key)return e;let a=new Ft(e.droppable.containers);return a.delete(n),{...e,droppable:{...e.droppable,containers:a}}}default:return e}}function Ht(e){let{disabled:t}=e,{active:n,activatorEvent:r,draggableNodes:a}=(0,i.useContext)(Rt),o=b(r),s=b(n?.id);return(0,i.useEffect)(()=>{if(!t&&!r&&o&&s!=null){if(!D(o)||document.activeElement===o.target)return;let e=a.get(s);if(!e)return;let{activatorNode:t,node:n}=e;if(!t.current&&!n.current)return;requestAnimationFrame(()=>{for(let e of[t.current,n.current]){if(!e)continue;let t=A(e);if(t){t.focus();break}}})}},[r,t,a,s,o]),null}function Ut(e,t){let{transform:n,...r}=t;return e!=null&&e.length?e.reduce((e,t)=>t({transform:e,...r}),n):n}function Wt(e){return(0,i.useMemo)(()=>({draggable:{...Pt.draggable,...e?.draggable},droppable:{...Pt.droppable,...e?.droppable},dragOverlay:{...Pt.dragOverlay,...e?.dragOverlay}}),[e?.draggable,e?.droppable,e?.dragOverlay])}function Gt(e){let{activeNode:t,measure:n,initialRect:r,config:a=!0}=e,o=(0,i.useRef)(!1),{x:s,y:c}=typeof a==`boolean`?{x:a,y:a}:a;m(()=>{if(!s&&!c||!t){o.current=!1;return}if(o.current||!r)return;let e=t?.node.current;if(!e||e.isConnected===!1)return;let i=_e(n(e),r);if(s||(i.x=0),c||(i.y=0),o.current=!0,Math.abs(i.x)>0||Math.abs(i.y)>0){let t=J(e);t&&t.scrollBy({top:i.y,left:i.x})}},[t,s,c,r,n])}var Kt=(0,i.createContext)({...R,scaleX:1,scaleY:1}),qt;(function(e){e[e.Uninitialized=0]=`Uninitialized`,e[e.Initializing=1]=`Initializing`,e[e.Initialized=2]=`Initialized`})(qt||={});var Jt=(0,i.memo)(function(e){let{id:t,accessibility:n,autoScroll:a=!0,children:o,sensors:s=Mt,collisionDetection:c=me,measuring:u,modifiers:d,...f}=e,[p,h]=(0,i.useReducer)(Vt,void 0,Bt),[g,v]=oe(),[y,b]=(0,i.useState)(qt.Uninitialized),x=y===qt.Initialized,{draggable:{active:C,nodes:T,translate:E},droppable:{containers:D}}=p,ee=C==null?null:T.get(C),O=(0,i.useRef)({initial:null,translated:null}),k=(0,i.useMemo)(()=>C==null?null:{id:C,data:ee?.data??Nt,rect:O},[C,ee]),A=(0,i.useRef)(null),[ne,re]=(0,i.useState)(null),[j,ie]=(0,i.useState)(null),M=_(f,Object.values(f)),se=S(`DndDescribedBy`,t),ce=(0,i.useMemo)(()=>D.getEnabled(),[D]),F=Wt(u),{droppableRects:I,measureDroppableContainers:L,measuringScheduled:R}=pt(ce,{dragging:x,dependencies:[E.x,E.y],config:F.droppable}),z=ct(T,C),le=(0,i.useMemo)(()=>j?te(j):null,[j]),B=Ne(),ue=ht(z,F.draggable.measure);Gt({activeNode:C==null?null:T.get(C),config:B.layoutShiftCompensation,initialRect:ue,measure:F.draggable.measure});let V=yt(z,F.draggable.measure,ue),fe=yt(z?z.parentElement:null),H=(0,i.useRef)({activatorEvent:null,active:null,activeNode:z,collisionRect:null,collisions:null,droppableRects:I,draggableNodes:T,draggingNode:null,draggingNodeRect:null,droppableContainers:D,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),pe=D.getNodeFor(H.current.over?.id),U=jt({measure:F.dragOverlay.measure}),he=U.nodeRef.current??z,W=x?U.rect??V:null,_e=!!(U.nodeRef.current&&U.rect),ve=bt(_e?null:V),be=Dt(he?l(he):null),G=St(x?pe??z:null),xe=kt(G),K=Ut(d,{transform:{x:E.x-ve.x,y:E.y-ve.y,scaleX:1,scaleY:1},activatorEvent:j,active:k,activeNodeRect:V,containerNodeRect:fe,draggingNodeRect:W,over:H.current.over,overlayNodeRect:U.rect,scrollableAncestors:G,scrollableAncestorRects:xe,windowRect:be}),Se=le?w(le,E):null,Ce=Ct(G),we=wt(Ce),Te=wt(Ce,[V]),q=w(K,we),J=W?ye(W,K):null,Y=k&&J?c({active:k,collisionRect:J,droppableRects:I,droppableContainers:ce,pointerCoordinates:Se}):null,Ee=de(Y,`id`),[X,De]=(0,i.useState)(null),Z=ge(_e?K:w(K,Te),X?.rect??null,V),Oe=(0,i.useRef)(null),ke=(0,i.useCallback)((e,t)=>{let{sensor:n,options:i}=t;if(A.current==null)return;let a=T.get(A.current);if(!a)return;let o=e.nativeEvent;Oe.current=new n({active:A.current,activeNode:a,event:o,options:i,context:H,onAbort(e){if(!T.get(e))return;let{onDragAbort:t}=M.current,n={id:e};t?.(n),g({type:`onDragAbort`,event:n})},onPending(e,t,n,r){if(!T.get(e))return;let{onDragPending:i}=M.current,a={id:e,constraint:t,initialCoordinates:n,offset:r};i?.(a),g({type:`onDragPending`,event:a})},onStart(e){let t=A.current;if(t==null)return;let n=T.get(t);if(!n)return;let{onDragStart:i}=M.current,a={activatorEvent:o,active:{id:t,data:n.data,rect:O}};(0,r.unstable_batchedUpdates)(()=>{i?.(a),b(qt.Initializing),h({type:P.DragStart,initialCoordinates:e,active:t}),g({type:`onDragStart`,event:a}),re(Oe.current),ie(o)})},onMove(e){h({type:P.DragMove,coordinates:e})},onEnd:s(P.DragEnd),onCancel:s(P.DragCancel)});function s(e){return async function(){let{active:t,collisions:n,over:i,scrollAdjustedTranslate:a}=H.current,s=null;if(t&&a){let{cancelDrop:r}=M.current;s={activatorEvent:o,active:t,collisions:n,delta:a,over:i},e===P.DragEnd&&typeof r==`function`&&await Promise.resolve(r(s))&&(e=P.DragCancel)}A.current=null,(0,r.unstable_batchedUpdates)(()=>{h({type:e}),b(qt.Uninitialized),De(null),re(null),ie(null),Oe.current=null;let t=e===P.DragEnd?`onDragEnd`:`onDragCancel`;if(s){let e=M.current[t];e?.(s),g({type:t,event:s})}})}}},[T]),Ae=lt(s,(0,i.useCallback)((e,t)=>(n,r)=>{let i=n.nativeEvent,a=T.get(r);if(A.current!==null||!a||i.dndKit||i.defaultPrevented)return;let o={active:a};e(n,t.options,o)===!0&&(i.dndKit={capturedBy:t.sensor},A.current=r,ke(n,t))},[T,ke]));Tt(s),m(()=>{V&&y===qt.Initializing&&b(qt.Initialized)},[V,y]),(0,i.useEffect)(()=>{let{onDragMove:e}=M.current,{active:t,activatorEvent:n,collisions:i,over:a}=H.current;if(!t||!n)return;let o={active:t,activatorEvent:n,collisions:i,delta:{x:q.x,y:q.y},over:a};(0,r.unstable_batchedUpdates)(()=>{e?.(o),g({type:`onDragMove`,event:o})})},[q.x,q.y]),(0,i.useEffect)(()=>{let{active:e,activatorEvent:t,collisions:n,droppableContainers:i,scrollAdjustedTranslate:a}=H.current;if(!e||A.current==null||!t||!a)return;let{onDragOver:o}=M.current,s=i.get(Ee),c=s&&s.rect.current?{id:s.id,rect:s.rect.current,data:s.data,disabled:s.disabled}:null,l={active:e,activatorEvent:t,collisions:n,delta:{x:a.x,y:a.y},over:c};(0,r.unstable_batchedUpdates)(()=>{De(c),o?.(l),g({type:`onDragOver`,event:l})})},[Ee]),m(()=>{H.current={activatorEvent:j,active:k,activeNode:z,collisionRect:J,collisions:Y,droppableRects:I,draggableNodes:T,draggingNode:he,draggingNodeRect:W,droppableContainers:D,over:X,scrollableAncestors:G,scrollAdjustedTranslate:q},O.current={initial:W,translated:J}},[k,z,Y,J,T,he,W,I,D,X,G,q]),at({...B,delta:E,draggingRect:J,pointerCoordinates:Se,scrollableAncestors:G,scrollableAncestorRects:xe});let je=(0,i.useMemo)(()=>({active:k,activeNode:z,activeNodeRect:V,activatorEvent:j,collisions:Y,containerNodeRect:fe,dragOverlay:U,draggableNodes:T,droppableContainers:D,droppableRects:I,over:X,measureDroppableContainers:L,scrollableAncestors:G,scrollableAncestorRects:xe,measuringConfiguration:F,measuringScheduled:R,windowRect:be}),[k,z,V,j,Y,fe,U,T,D,I,X,L,G,xe,F,R,be]),Me=(0,i.useMemo)(()=>({activatorEvent:j,activators:Ae,active:k,activeNodeRect:V,ariaDescribedById:{draggable:se},dispatch:h,draggableNodes:T,over:X,measureDroppableContainers:L}),[j,Ae,k,V,h,se,T,X,L]);return i.createElement(ae.Provider,{value:v},i.createElement(Rt.Provider,{value:Me},i.createElement(zt.Provider,{value:je},i.createElement(Kt.Provider,{value:Z},o)),i.createElement(Ht,{disabled:n?.restoreFocus===!1})),i.createElement(N,{...n,hiddenTextDescribedById:se}));function Ne(){let e=ne?.autoScrollEnabled===!1,t=typeof a==`object`?a.enabled===!1:a===!1,n=x&&!e&&!t;return typeof a==`object`?{...a,enabled:n}:{enabled:n}}}),Yt=(0,i.createContext)(null),Xt=`button`,Zt=`Draggable`;function Qt(e){let{id:t,data:n,disabled:r=!1,attributes:a}=e,o=S(Zt),{activators:s,activatorEvent:c,active:l,activeNodeRect:u,ariaDescribedById:d,draggableNodes:f,over:p}=(0,i.useContext)(Rt),{role:h=Xt,roleDescription:g=`draggable`,tabIndex:v=0}=a??{},b=l?.id===t,x=(0,i.useContext)(b?Kt:Yt),[C,w]=y(),[T,E]=y(),D=Et(s,t),ee=_(n);return m(()=>(f.set(t,{id:t,key:o,node:C,activatorNode:T,data:ee}),()=>{let e=f.get(t);e&&e.key===o&&f.delete(t)}),[f,t]),{active:l,activatorEvent:c,activeNodeRect:u,attributes:(0,i.useMemo)(()=>({role:h,tabIndex:v,"aria-disabled":r,"aria-pressed":b&&h===Xt?!0:void 0,"aria-roledescription":g,"aria-describedby":d.draggable}),[r,h,v,b,g,d.draggable]),isDragging:b,listeners:r?void 0:D,node:C,over:p,setNodeRef:w,setActivatorNodeRef:E,transform:x}}function $t(){return(0,i.useContext)(zt)}var en=`Droppable`,tn={timeout:25};function nn(e){let{data:t,disabled:n=!1,id:r,resizeObserverConfig:a}=e,o=S(en),{active:s,dispatch:c,over:l,measureDroppableContainers:u}=(0,i.useContext)(Rt),d=(0,i.useRef)({disabled:n}),f=(0,i.useRef)(!1),p=(0,i.useRef)(null),m=(0,i.useRef)(null),{disabled:h,updateMeasurementsFor:g,timeout:v}={...tn,...a},b=_(g??r),x=_t({callback:(0,i.useCallback)(()=>{if(!f.current){f.current=!0;return}m.current!=null&&clearTimeout(m.current),m.current=setTimeout(()=>{u(Array.isArray(b.current)?b.current:[b.current]),m.current=null},v)},[v]),disabled:h||!s}),[C,w]=y((0,i.useCallback)((e,t)=>{x&&(t&&(x.unobserve(t),f.current=!1),e&&x.observe(e))},[x])),T=_(t);return(0,i.useEffect)(()=>{!x||!C.current||(x.disconnect(),f.current=!1,x.observe(C.current))},[C,x]),(0,i.useEffect)(()=>(c({type:P.RegisterDroppable,element:{id:r,key:o,disabled:n,node:C,rect:p,data:T}}),()=>c({type:P.UnregisterDroppable,key:o,id:r})),[r]),(0,i.useEffect)(()=>{n!==d.current.disabled&&(c({type:P.SetDroppableDisabled,id:r,key:o,disabled:n}),d.current.disabled=n)},[r,o,n,c]),{active:s,rect:p,isOver:l?.id===r,node:C,over:l,setNodeRef:w}}function rn(e){let{animation:t,children:n}=e,[r,a]=(0,i.useState)(null),[o,s]=(0,i.useState)(null),c=b(n);return!n&&!r&&c&&a(c),m(()=>{if(!o)return;let e=r?.key,n=r?.props.id;if(e==null||n==null){a(null);return}Promise.resolve(t(n,o)).then(()=>{a(null)})},[t,r,o]),i.createElement(i.Fragment,null,n,r?(0,i.cloneElement)(r,{ref:s}):null)}var an={x:0,y:0,scaleX:1,scaleY:1};function on(e){let{children:t}=e;return i.createElement(Rt.Provider,{value:Lt},i.createElement(Kt.Provider,{value:an},t))}var sn={position:`fixed`,touchAction:`none`},cn=e=>D(e)?`transform 250ms ease`:void 0,ln=(0,i.forwardRef)((e,t)=>{let{as:n,activatorEvent:r,adjustScale:a,children:o,className:s,rect:c,style:l,transform:u,transition:d=cn}=e;if(!c)return null;let f=a?u:{...u,scaleX:1,scaleY:1},p={...sn,width:c.width,height:c.height,top:c.top,left:c.left,transform:O.Transform.toString(f),transformOrigin:a&&r?le(r,c):void 0,transition:typeof d==`function`?d(r):d,...l};return i.createElement(n,{className:s,style:p,ref:t},o)}),un={duration:250,easing:`ease`,keyframes:e=>{let{transform:{initial:t,final:n}}=e;return[{transform:O.Transform.toString(t)},{transform:O.Transform.toString(n)}]},sideEffects:(e=>t=>{let{active:n,dragOverlay:r}=t,i={},{styles:a,className:o}=e;if(a!=null&&a.active)for(let[e,t]of Object.entries(a.active))t!==void 0&&(i[e]=n.node.style.getPropertyValue(e),n.node.style.setProperty(e,t));if(a!=null&&a.dragOverlay)for(let[e,t]of Object.entries(a.dragOverlay))t!==void 0&&r.node.style.setProperty(e,t);return o!=null&&o.active&&n.node.classList.add(o.active),o!=null&&o.dragOverlay&&r.node.classList.add(o.dragOverlay),function(){for(let[e,t]of Object.entries(i))n.node.style.setProperty(e,t);o!=null&&o.active&&n.node.classList.remove(o.active)}})({styles:{active:{opacity:`0`}}})};function dn(e){let{config:t,draggableNodes:n,droppableContainers:r,measuringConfiguration:i}=e;return h((e,a)=>{if(t===null)return;let o=n.get(e);if(!o)return;let s=o.node.current;if(!s)return;let c=At(a);if(!c)return;let{transform:u}=l(a).getComputedStyle(a),d=be(u);if(!d)return;let f=typeof t==`function`?t:fn(t);return Ie(s,i.draggable.measure),f({active:{id:e,data:o.data,node:s,rect:i.draggable.measure(s)},draggableNodes:n,dragOverlay:{node:a,rect:i.dragOverlay.measure(c)},droppableContainers:r,measuringConfiguration:i,transform:d})})}function fn(e){let{duration:t,easing:n,sideEffects:r,keyframes:i}={...un,...e};return e=>{let{active:a,dragOverlay:o,transform:s,...c}=e;if(!t)return;let l={x:o.rect.left-a.rect.left,y:o.rect.top-a.rect.top},u={scaleX:s.scaleX===1?1:a.rect.width*s.scaleX/o.rect.width,scaleY:s.scaleY===1?1:a.rect.height*s.scaleY/o.rect.height},d={x:s.x-l.x,y:s.y-l.y,...u},f=i({...c,active:a,dragOverlay:o,transform:{initial:s,final:d}}),[p]=f,m=f[f.length-1];if(JSON.stringify(p)===JSON.stringify(m))return;let h=r?.({active:a,dragOverlay:o,...c}),g=o.node.animate(f,{duration:t,easing:n,fill:`forwards`});return new Promise(e=>{g.onfinish=()=>{h?.(),e()}})}}var pn=0;function mn(e){return(0,i.useMemo)(()=>{if(e!=null)return pn++,pn},[e])}var hn=i.memo(e=>{let{adjustScale:t=!1,children:n,dropAnimation:r,style:a,transition:o,modifiers:s,wrapperElement:c=`div`,className:l,zIndex:u=999}=e,{activatorEvent:d,active:f,activeNodeRect:p,containerNodeRect:m,draggableNodes:h,droppableContainers:g,dragOverlay:_,over:v,measuringConfiguration:y,scrollableAncestors:b,scrollableAncestorRects:x,windowRect:S}=$t(),C=(0,i.useContext)(Kt),w=mn(f?.id),T=Ut(s,{activatorEvent:d,active:f,activeNodeRect:p,containerNodeRect:m,draggingNodeRect:_.rect,over:v,overlayNodeRect:_.rect,scrollableAncestors:b,scrollableAncestorRects:x,transform:C,windowRect:S}),E=mt(p),D=dn({config:r,draggableNodes:h,droppableContainers:g,measuringConfiguration:y}),ee=E?_.setRef:void 0;return i.createElement(on,null,i.createElement(rn,{animation:D},f&&w?i.createElement(ln,{key:w,id:f.id,ref:ee,as:c,activatorEvent:d,adjustScale:t,className:l,transition:o,rect:E,style:{zIndex:u,...a},transform:T},n):null))});function gn(e,t,n){let r=e.slice();return r.splice(n<0?r.length+n:n,0,r.splice(t,1)[0]),r}function _n(e,t){return e.reduce((e,n,r)=>{let i=t.get(n);return i&&(e[r]=i),e},Array(e.length))}function vn(e){return e!==null&&e>=0}function yn(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function bn(e){return typeof e==`boolean`?{draggable:e,droppable:e}:e}var xn={scaleX:1,scaleY:1},Sn=e=>{let{rects:t,activeNodeRect:n,activeIndex:r,overIndex:i,index:a}=e,o=t[r]??n;if(!o)return null;let s=Cn(t,a,r);if(a===r){let e=t[i];return e?{x:r<i?e.left+e.width-(o.left+o.width):e.left-o.left,y:0,...xn}:null}return a>r&&a<=i?{x:-o.width-s,y:0,...xn}:a<r&&a>=i?{x:o.width+s,y:0,...xn}:{x:0,y:0,...xn}};function Cn(e,t,n){let r=e[t],i=e[t-1],a=e[t+1];return!r||!i&&!a?0:n<t?i?r.left-(i.left+i.width):a.left-(r.left+r.width):a?a.left-(r.left+r.width):r.left-(i.left+i.width)}var wn=e=>{let{rects:t,activeIndex:n,overIndex:r,index:i}=e,a=gn(t,r,n),o=t[i],s=a[i];return!s||!o?null:{x:s.left-o.left,y:s.top-o.top,scaleX:s.width/o.width,scaleY:s.height/o.height}},Tn={scaleX:1,scaleY:1},En=e=>{let{activeIndex:t,activeNodeRect:n,index:r,rects:i,overIndex:a}=e,o=i[t]??n;if(!o)return null;if(r===t){let e=i[a];return e?{x:0,y:t<a?e.top+e.height-(o.top+o.height):e.top-o.top,...Tn}:null}let s=Dn(i,r,t);return r>t&&r<=a?{x:0,y:-o.height-s,...Tn}:r<t&&r>=a?{x:0,y:o.height+s,...Tn}:{x:0,y:0,...Tn}};function Dn(e,t,n){let r=e[t],i=e[t-1],a=e[t+1];return r?n<t?i?r.top-(i.top+i.height):a?a.top-(r.top+r.height):0:a?a.top-(r.top+r.height):i?r.top-(i.top+i.height):0:0}var On=`Sortable`,kn=i.createContext({activeIndex:-1,containerId:On,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:wn,disabled:{draggable:!1,droppable:!1}});function An(e){let{children:t,id:n,items:r,strategy:a=wn,disabled:o=!1}=e,{active:s,dragOverlay:c,droppableRects:l,over:u,measureDroppableContainers:d}=$t(),f=S(On,n),p=c.rect!==null,h=(0,i.useMemo)(()=>r.map(e=>typeof e==`object`&&`id`in e?e.id:e),[r]),g=s!=null,_=s?h.indexOf(s.id):-1,v=u?h.indexOf(u.id):-1,y=(0,i.useRef)(h),b=!yn(h,y.current),x=v!==-1&&_===-1||b,C=bn(o);m(()=>{b&&g&&d(h)},[b,h,g,d]),(0,i.useEffect)(()=>{y.current=h},[h]);let w=(0,i.useMemo)(()=>({activeIndex:_,containerId:f,disabled:C,disableTransforms:x,items:h,overIndex:v,useDragOverlay:p,sortedRects:_n(h,l),strategy:a}),[_,f,C.draggable,C.droppable,x,h,v,l,p,a]);return i.createElement(kn.Provider,{value:w},t)}var jn=e=>{let{id:t,items:n,activeIndex:r,overIndex:i}=e;return gn(n,r,i).indexOf(t)},Mn=e=>{let{containerId:t,isSorting:n,wasDragging:r,index:i,items:a,newIndex:o,previousItems:s,previousContainerId:c,transition:l}=e;return!l||!r||s!==a&&i===o?!1:n?!0:o!==i&&t===c},Nn={duration:200,easing:`ease`},Pn=`transform`,Fn=O.Transition.toString({property:Pn,duration:0,easing:`linear`}),In={roleDescription:`sortable`};function Ln(e){let{disabled:t,index:n,node:r,rect:a}=e,[o,s]=(0,i.useState)(null),c=(0,i.useRef)(n);return m(()=>{if(!t&&n!==c.current&&r.current){let e=a.current;if(e){let t=K(r.current,{ignoreTransform:!0}),n={x:e.left-t.left,y:e.top-t.top,scaleX:e.width/t.width,scaleY:e.height/t.height};(n.x||n.y)&&s(n)}}n!==c.current&&(c.current=n)},[t,n,r,a]),(0,i.useEffect)(()=>{o&&s(null)},[o]),o}function Rn(e){let{animateLayoutChanges:t=Mn,attributes:n,disabled:r,data:o,getNewIndex:s=jn,id:c,strategy:l,resizeObserverConfig:u,transition:d=Nn}=e,{items:f,containerId:p,activeIndex:m,disabled:h,disableTransforms:g,sortedRects:_,overIndex:v,useDragOverlay:y,strategy:b}=(0,i.useContext)(kn),x=zn(r,h),S=f.indexOf(c),C=(0,i.useMemo)(()=>({sortable:{containerId:p,index:S,items:f},...o}),[p,o,S,f]),w=(0,i.useMemo)(()=>f.slice(f.indexOf(c)),[f,c]),{rect:T,node:E,isOver:ee,setNodeRef:te}=nn({id:c,data:C,disabled:x.droppable,resizeObserverConfig:{updateMeasurementsFor:w,...u}}),{active:k,activatorEvent:A,activeNodeRect:ne,attributes:re,setNodeRef:j,listeners:ie,isDragging:ae,over:M,setActivatorNodeRef:oe,transform:se}=Qt({id:c,data:C,attributes:{...In,...n},disabled:x.draggable}),ce=a(te,j),N=!!k,P=N&&!g&&vn(m)&&vn(v),F=!y&&ae,I=P?(F&&P?se:null)??(l??b)({rects:_,activeNodeRect:ne,activeIndex:m,overIndex:v,index:S}):null,L=vn(m)&&vn(v)?s({id:c,items:f,activeIndex:m,overIndex:v}):S,R=k?.id,z=(0,i.useRef)({activeId:R,items:f,newIndex:L,containerId:p}),le=f!==z.current.items,B=t({active:k,containerId:p,isDragging:ae,isSorting:N,id:c,index:S,items:f,newIndex:z.current.newIndex,previousItems:z.current.items,previousContainerId:z.current.containerId,transition:d,wasDragging:z.current.activeId!=null}),ue=Ln({disabled:!B,index:S,node:E,rect:T});return(0,i.useEffect)(()=>{N&&z.current.newIndex!==L&&(z.current.newIndex=L),p!==z.current.containerId&&(z.current.containerId=p),f!==z.current.items&&(z.current.items=f)},[N,L,p,f]),(0,i.useEffect)(()=>{if(R===z.current.activeId)return;if(R!=null&&z.current.activeId==null){z.current.activeId=R;return}let e=setTimeout(()=>{z.current.activeId=R},50);return()=>clearTimeout(e)},[R]),{active:k,activeIndex:m,attributes:re,data:C,rect:T,index:S,newIndex:L,items:f,isOver:ee,isSorting:N,isDragging:ae,listeners:ie,node:E,overIndex:v,over:M,setNodeRef:ce,setActivatorNodeRef:oe,setDroppableNodeRef:te,setDraggableNodeRef:j,transform:ue??I,transition:V()};function V(){if(ue||le&&z.current.newIndex===S)return Fn;if(!(F&&!D(A)||!d)&&(N||B))return O.Transition.toString({...d,property:Pn})}}function zn(e,t){return typeof e==`boolean`?{draggable:e,droppable:!1}:{draggable:e?.draggable??t.draggable,droppable:e?.droppable??t.droppable}}function Bn(e){if(!e)return!1;let t=e.data.current;return!!(t&&`sortable`in t&&typeof t.sortable==`object`&&`containerId`in t.sortable&&`items`in t.sortable&&`index`in t.sortable)}var Vn=[$.Down,$.Right,$.Up,$.Left],Hn=(e,t)=>{let{context:{active:n,collisionRect:r,droppableRects:i,droppableContainers:a,over:o,scrollableAncestors:s}}=t;if(Vn.includes(e.code)){if(e.preventDefault(),!n||!r)return;let t=[];a.getEnabled().forEach(n=>{if(!n||n!=null&&n.disabled)return;let a=i.get(n.id);if(a)switch(e.code){case $.Down:r.top<a.top&&t.push(n);break;case $.Up:r.top>a.top&&t.push(n);break;case $.Left:r.left>a.left&&t.push(n);break;case $.Right:r.left<a.left&&t.push(n);break}});let c=pe({active:n,collisionRect:r,droppableRects:i,droppableContainers:t,pointerCoordinates:null}),l=de(c,`id`);if(l===o?.id&&c.length>1&&(l=c[1].id),l!=null){let e=a.get(n.id),t=a.get(l),o=t?i.get(t.id):null,c=t?.node.current;if(c&&o&&e&&t){let n=q(c).some((e,t)=>s[t]!==e),i=Un(e,t),a=Wn(e,t),l=n||!i?{x:0,y:0}:{x:a?r.width-o.width:0,y:a?r.height-o.height:0},u={x:o.left,y:o.top};return l.x&&l.y?u:T(u,l)}}}};function Un(e,t){return!Bn(e)||!Bn(t)?!1:e.data.current.sortable.containerId===t.data.current.sortable.containerId}function Wn(e,t){return!Bn(e)||!Bn(t)||!Un(e,t)?!1:e.data.current.sortable.index<t.data.current.sortable.index}export{I as _,Hn as a,Jt as c,Ze as d,nt as f,nn as g,W as h,wn as i,hn as l,pe as m,gn as n,Rn as o,H as p,Sn as r,En as s,An as t,Ke as u,L as v,O as y};
package/dist/index.html CHANGED
@@ -18,12 +18,12 @@
18
18
  <script>
19
19
  window.process = window.process || { env: { NODE_ENV: 'development' }, version: '', platform: 'browser' };
20
20
  </script>
21
- <script type="module" crossorigin src="./assets/index-BzqR5LGR.js"></script>
21
+ <script type="module" crossorigin src="./assets/index-D27qs-mG.js"></script>
22
22
  <link rel="stylesheet" crossorigin href="./assets/ui-components-BL3SEdAz.css">
23
23
  <link rel="stylesheet" crossorigin href="./assets/plugin-dashboard-DnNKJB60.css">
24
- <link rel="stylesheet" crossorigin href="./assets/index-0xh0t0SY.css">
25
- <link rel="modulepreload" href="./assets/framework-BGQ7DoWM.js" />
26
- <link rel="modulepreload" href="./assets/ui-components-J75dr3Ae.js" />
24
+ <link rel="stylesheet" crossorigin href="./assets/index-C_-Pgv1J.css">
25
+ <link rel="modulepreload" href="./assets/framework-C3RMhKDr.js" />
26
+ <link rel="modulepreload" href="./assets/ui-components-CqkwtQve.js" />
27
27
  <link rel="modulepreload" href="./assets/vendor-radix-DniuRzL-.js" />
28
28
  <link rel="modulepreload" href="./assets/vendor-react-slxo-5GC.js" />
29
29
  </head>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@objectstack/console",
3
- "version": "11.3.0",
3
+ "version": "11.5.0",
4
4
  "description": "Prebuilt Console SPA pinned to this @objectstack/framework release. Source of truth: @object-ui/console (https://github.com/objectstack-ai/objectui).",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/objectstack-ai/framework/tree/main/packages/console",
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{_ as t,t as n}from"./vendor-react-slxo-5GC.js";import{A as r}from"./framework-BGQ7DoWM.js";import{$i as i,$n as a,Gi as o,Gs as s,Ks as c,Mi as l,Mr as u,Ua as d,Us as f,Zr as p,ds as m,er as h,lr as g,ta as _,tr as v,xo as y,ys as ee}from"./ui-components-J75dr3Ae.js";import"./src-DRWgP_lu.js";var b=e(t(),1),x=[`plugin`,`plugins`,`kind`,`package`];function S(e){return[{method:`POST`,path:`${e}/sign-in/email`,desc:`Sign in (email)`,group:`Auth`,bodyTemplate:{email:`user@example.com`,password:``}},{method:`POST`,path:`${e}/sign-up/email`,desc:`Sign up (email)`,group:`Auth`,bodyTemplate:{email:``,password:``,name:``}},{method:`POST`,path:`${e}/sign-out`,desc:`Sign out`,group:`Auth`},{method:`GET`,path:`${e}/get-session`,desc:`Get session`,group:`Auth`}]}var C={ai:{group:`AI`,defaultRoute:`/api/v1/ai`,endpoints:[{method:`POST`,path:`/chat`,desc:`Chat completion`,bodyTemplate:{messages:[{role:`user`,content:``}]}},{method:`POST`,path:`/chat/stream`,desc:`Streaming chat (SSE)`,bodyTemplate:{messages:[{role:`user`,content:``}]}},{method:`POST`,path:`/complete`,desc:`Text completion`,bodyTemplate:{prompt:``}},{method:`GET`,path:`/models`,desc:`List available models`},{method:`POST`,path:`/nlq`,desc:`Natural language query`,bodyTemplate:{query:``}},{method:`POST`,path:`/suggest`,desc:`AI-powered suggestions`,bodyTemplate:{object:``,field:``,context:{}}},{method:`POST`,path:`/insights`,desc:`AI-generated insights`,bodyTemplate:{object:``,recordIds:[]}},{method:`POST`,path:`/conversations`,desc:`Create conversation`,bodyTemplate:{}},{method:`GET`,path:`/conversations`,desc:`List conversations`},{method:`POST`,path:`/conversations/:id/messages`,desc:`Add message to conversation`,bodyTemplate:{role:`user`,content:``}},{method:`DELETE`,path:`/conversations/:id`,desc:`Delete conversation`}]},workflow:{group:`Workflow`,defaultRoute:`/api/v1/workflow`,endpoints:[{method:`GET`,path:`/:object/config`,desc:`Get workflow configuration`},{method:`GET`,path:`/:object/:recordId/state`,desc:`Get workflow state`},{method:`POST`,path:`/:object/:recordId/transition`,desc:`Execute workflow transition`,bodyTemplate:{targetState:``}},{method:`POST`,path:`/:object/:recordId/approve`,desc:`Approve workflow step`,bodyTemplate:{comment:``}},{method:`POST`,path:`/:object/:recordId/reject`,desc:`Reject workflow step`,bodyTemplate:{comment:``}}]},realtime:{group:`Realtime`,defaultRoute:`/api/v1/realtime`,endpoints:[{method:`POST`,path:`/connect`,desc:`Establish realtime connection`,bodyTemplate:{transport:`websocket`}},{method:`POST`,path:`/disconnect`,desc:`Close realtime connection`,bodyTemplate:{connectionId:``}},{method:`POST`,path:`/subscribe`,desc:`Subscribe to channel`,bodyTemplate:{channel:``}},{method:`POST`,path:`/unsubscribe`,desc:`Unsubscribe from channel`,bodyTemplate:{channel:``}},{method:`PUT`,path:`/presence/:channel`,desc:`Set presence state`,bodyTemplate:{status:`online`}},{method:`GET`,path:`/presence/:channel`,desc:`Get channel presence`}]},notification:{group:`Notifications`,defaultRoute:`/api/v1/notifications`,endpoints:[{method:`GET`,path:``,desc:`List notifications`},{method:`POST`,path:`/devices`,desc:`Register device for push`,bodyTemplate:{token:``,platform:`web`}},{method:`DELETE`,path:`/devices/:deviceId`,desc:`Unregister device`},{method:`GET`,path:`/preferences`,desc:`Get notification preferences`},{method:`PATCH`,path:`/preferences`,desc:`Update notification preferences`,bodyTemplate:{email:!0,push:!0}},{method:`POST`,path:`/read`,desc:`Mark notifications as read`,bodyTemplate:{ids:[]}},{method:`POST`,path:`/read/all`,desc:`Mark all as read`}]},analytics:{group:`Analytics`,defaultRoute:`/api/v1/analytics`,endpoints:[{method:`POST`,path:`/query`,desc:`Execute analytics query`,bodyTemplate:{measures:[],dimensions:[]}},{method:`GET`,path:`/meta`,desc:`Get analytics metadata`}]},automation:{group:`Automation`,defaultRoute:`/api/v1/automation`,endpoints:[{method:`POST`,path:`/trigger`,desc:`Trigger automation`,bodyTemplate:{name:``,params:{}}}]},i18n:{group:`i18n`,defaultRoute:`/api/v1/i18n`,endpoints:[{method:`GET`,path:`/locales`,desc:`Get available locales`},{method:`GET`,path:`/translations/:locale`,desc:`Get translations for locale`},{method:`GET`,path:`/labels/:object/:locale`,desc:`Get translated field labels`}]},ui:{group:`UI`,defaultRoute:`/api/v1/ui`,endpoints:[{method:`GET`,path:`/views`,desc:`List views`},{method:`GET`,path:`/views/:id`,desc:`Get view by ID`},{method:`POST`,path:`/views`,desc:`Create view`,bodyTemplate:{name:``,object:``,type:`list`}},{method:`PATCH`,path:`/views/:id`,desc:`Update view`,bodyTemplate:{name:``}},{method:`DELETE`,path:`/views/:id`,desc:`Delete view`}]},feed:{group:`Feed`,defaultRoute:`/api/v1/feed`,endpoints:[{method:`GET`,path:`/:object/:recordId`,desc:`Get feed items`},{method:`POST`,path:`/:object/:recordId`,desc:`Post feed item`,bodyTemplate:{body:``}}]},storage:{group:`Storage`,defaultRoute:`/api/v1/storage`,endpoints:[{method:`POST`,path:`/upload`,desc:`Upload file (multipart/form-data)`},{method:`GET`,path:`/:fileId`,desc:`Download file`},{method:`DELETE`,path:`/:fileId`,desc:`Delete file`}]}};function w(e,t){let n=C[e];return n?n.endpoints.map(e=>({method:e.method,path:`${t}${e.path}`,desc:e.desc,group:n.group,...e.bodyTemplate?{bodyTemplate:e.bodyTemplate}:{}})):[]}function te(){let e=r(),[t,n]=(0,b.useState)([]),[i,a]=(0,b.useState)([]),[o,s]=(0,b.useState)(!0),[c,l]=(0,b.useState)(null),u=(0,b.useCallback)(async()=>{s(!0),l(null);let t=`/api/v1`,r=`${t}/discovery`,i=[{method:`GET`,path:r,desc:`API Discovery`,group:`System`},{method:`GET`,path:`${t}/meta/types`,desc:`List metadata types`,group:`Metadata`},{method:`GET`,path:`${t}/packages`,desc:`List packages`,group:`System`},{method:`GET`,path:`/api/v1/health`,desc:`Health check`,group:`System`}];try{let o=`/api/v1/auth`,s={},c={};try{let e=await fetch(r);if(e.ok){let t=await e.json(),n=t?.data??t;c=n?.routes??{},s=n?.services??{},c.auth&&(o=c.auth)}}catch{}let l=[];for(let[e,t]of Object.entries(C)){let n=s[e],r=n?.enabled??!1,i=n?.handlerReady??(n?.status===`available`||n?.status===`degraded`),a=n?.route??c[e]??t.defaultRoute;r&&i&&l.push(...w(e,a))}let u=e?.getClient?.(),d=[];try{let e=await u?.meta?.getTypes?.();e&&Array.isArray(e.types)?d=e.types:Array.isArray(e)&&(d=e)}catch{}let f=[];try{let e=d.includes(`object`)?`object`:null;if(e&&u?.meta?.getItems){let t=await u.meta.getItems(e),n=[];Array.isArray(t)?n=t:t&&Array.isArray(t.items)?n=t.items:t&&Array.isArray(t.value)&&(n=t.value),f=n.map(e=>e.name||e.id).filter(Boolean)}}catch{}let p=f.flatMap(e=>{let n=e.startsWith(`sys_`)?`Data: system tables`:`Data: ${e}`;return[{method:`GET`,path:`${t}/data/${e}`,desc:`List ${e}`,group:n},{method:`POST`,path:`${t}/data/${e}`,desc:`Create ${e}`,group:n,bodyTemplate:{name:`example`}},{method:`GET`,path:`${t}/data/${e}/:id`,desc:`Get ${e} by ID`,group:n},{method:`PATCH`,path:`${t}/data/${e}/:id`,desc:`Update ${e}`,group:n,bodyTemplate:{name:`updated`}},{method:`DELETE`,path:`${t}/data/${e}/:id`,desc:`Delete ${e}`,group:n}]}),m=d.filter(e=>!x.includes(e)).map(e=>({method:`GET`,path:`${t}/meta/${e}`,desc:`List ${e} metadata`,group:`Metadata`})),h=f.map(e=>({method:`GET`,path:`${t}/meta/object/${e}`,desc:`${e} schema`,group:`Metadata`})),g=[...i,...S(o),...l,...m,...h,...p],_=new Map;for(let e of g){let t=_.get(e.group)||[];t.push(e),_.set(e.group,t)}let v=[`System`,`Auth`,`AI`,`Workflow`,`Realtime`,`Notifications`,`Analytics`,`Automation`,`i18n`,`UI`,`Feed`,`Storage`,`Metadata`];n(Array.from(_.entries()).sort(([e],[t])=>{let n=v.indexOf(e),r=v.indexOf(t);return n!==-1&&r!==-1?n-r:n===-1?r===-1?e.localeCompare(t):1:-1}).map(([e,t])=>({key:e,label:e,endpoints:t}))),a(g)}catch(e){l(e.message||`Failed to discover APIs`)}finally{s(!1)}},[e]);return(0,b.useEffect)(()=>{u()},[u]),{groups:t,allEndpoints:i,loading:o,error:c,refresh:u}}var T=n(),E={GET:`text-emerald-600 bg-emerald-50 border-emerald-200 dark:text-emerald-400 dark:bg-emerald-950/50`,POST:`text-blue-600 bg-blue-50 border-blue-200 dark:text-blue-400 dark:bg-blue-950/50`,PATCH:`text-amber-600 bg-amber-50 border-amber-200 dark:text-amber-400 dark:bg-amber-950/50`,PUT:`text-amber-600 bg-amber-50 border-amber-200 dark:text-amber-400 dark:bg-amber-950/50`,DELETE:`text-red-600 bg-red-50 border-red-200 dark:text-red-400 dark:bg-red-950/50`},ne={2:`text-emerald-600 dark:text-emerald-400`,3:`text-blue-600 dark:text-blue-400`,4:`text-amber-600 dark:text-amber-400`,5:`text-red-600 dark:text-red-400`},re=[{key:`$top`,placeholder:`10`,hint:`limit`},{key:`$skip`,placeholder:`0`,hint:`offset`},{key:`$sort`,placeholder:`name`,hint:`sort field`},{key:`$select`,placeholder:`name,email`,hint:`fields`},{key:`$count`,placeholder:`true`,hint:`total count`},{key:`$filter`,placeholder:`status eq 'active'`,hint:`OData filter`}],D=1;function O(){let e=r()?.getClient?.(),{groups:t,loading:n,refresh:x}=te(),[S,C]=(0,b.useState)(``),[w,O]=(0,b.useState)(new Set),[k,A]=(0,b.useState)(null),[ie,j]=(0,b.useState)(``),[ae,M]=(0,b.useState)(``),[N,P]=(0,b.useState)(``),[F,I]=(0,b.useState)([]),[L,R]=(0,b.useState)(!1),[z,B]=(0,b.useState)(null),[V,H]=(0,b.useState)([]),[U,oe]=(0,b.useState)(null),[W,G]=(0,b.useState)(!1),K=(0,b.useMemo)(()=>{if(!S)return t;let e=S.toLowerCase();return t.map(t=>({...t,endpoints:t.endpoints.filter(t=>t.desc.toLowerCase().includes(e)||t.path.toLowerCase().includes(e)||t.method.toLowerCase().includes(e))})).filter(e=>e.endpoints.length>0)},[t,S]),se=(0,b.useCallback)(e=>{O(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),ce=(0,b.useCallback)(e=>{A(e),j(e.method),M(e.path),P(e.bodyTemplate?JSON.stringify(e.bodyTemplate,null,2):``),I([]),B(null)},[]),q=ie||k?.method||`GET`,J=ae||k?.path||``,Y=(0,b.useMemo)(()=>{let e=F.filter(e=>e.enabled&&e.key.trim());return e.length===0?J:`${J}?${e.map(e=>`${encodeURIComponent(e.key)}=${encodeURIComponent(e.value)}`).join(`&`)}`},[J,F]),X=(0,b.useCallback)((e=``,t=``)=>{I(n=>[...n,{id:D++,key:e,value:t,enabled:!0}])},[]),le=(0,b.useCallback)(e=>{I(t=>t.filter(t=>t.id!==e))},[]),Z=(0,b.useCallback)((e,t,n)=>{I(r=>r.map(r=>r.id===e?{...r,[t]:n}:r))},[]),ue=(0,b.useCallback)(e=>{I(t=>t.map(t=>t.id===e?{...t,enabled:!t.enabled}:t))},[]),Q=(0,b.useCallback)(async()=>{if(L||!Y)return;let t=`${e?.baseUrl??``}${Y}`;R(!0);let n=performance.now();try{let e={method:q,headers:{"Content-Type":`application/json`}};[`POST`,`PATCH`,`PUT`].includes(q)&&N.trim()&&(e.body=N);let r=await fetch(t,e),i=Math.round(performance.now()-n),a;if((r.headers.get(`content-type`)??``).includes(`json`)){let e=await r.json();a=JSON.stringify(e,null,2)}else a=await r.text();B({status:r.status,body:a,duration:i}),H(e=>[{id:Date.now(),method:q,url:Y,body:N||void 0,status:r.status,duration:i,response:a,timestamp:new Date},...e].slice(0,50))}catch(e){let t=Math.round(performance.now()-n);B({status:0,body:`Network Error: ${e.message}`,duration:t})}finally{R(!1)}},[e,Y,q,N,L]),de=(0,b.useCallback)(e=>{j(e.method);let[t,n]=e.url.split(`?`);if(M(t),P(e.body||``),n){let e=new URLSearchParams(n),t=[];e.forEach((e,n)=>{t.push({id:D++,key:n,value:e,enabled:!0})}),I(t)}else I([]);B(null),A(null)},[]),fe=(0,b.useCallback)(()=>{z?.body&&(navigator.clipboard.writeText(z.body),G(!0),setTimeout(()=>G(!1),1500))},[z]),$=e=>ne[String(e)[0]]??`text-muted-foreground`;return(0,T.jsxs)(`div`,{className:`flex flex-1 min-h-0 overflow-hidden`,children:[(0,T.jsxs)(`div`,{className:`w-72 shrink-0 border-r flex flex-col overflow-hidden`,children:[(0,T.jsxs)(`div`,{className:`p-3 border-b space-y-2`,children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsx)(`h3`,{className:`text-sm font-semibold text-foreground flex-1`,children:`API Endpoints`}),(0,T.jsx)(`button`,{onClick:x,disabled:n,className:`p-1 rounded hover:bg-muted transition-colors text-muted-foreground hover:text-foreground`,title:`Refresh endpoints`,children:(0,T.jsx)(o,{className:`h-3.5 w-3.5 ${n?`animate-spin`:``}`})})]}),(0,T.jsxs)(`div`,{className:`relative`,children:[(0,T.jsx)(l,{className:`absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground`}),(0,T.jsx)(`input`,{type:`text`,value:S,onChange:e=>C(e.target.value),placeholder:`Search endpoints...`,className:`w-full rounded-md border bg-background pl-8 pr-3 py-1.5 text-sm focus:outline-none focus:ring-1 focus:ring-ring`})]})]}),(0,T.jsx)(`div`,{className:`flex-1 overflow-auto p-2 space-y-1`,children:n?(0,T.jsxs)(`div`,{className:`flex items-center justify-center py-8 text-muted-foreground text-sm`,children:[(0,T.jsx)(d,{className:`h-4 w-4 animate-spin mr-2`}),`Discovering APIs...`]}):K.length===0?(0,T.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-8 text-muted-foreground text-sm`,children:[(0,T.jsx)(y,{className:`h-6 w-6 opacity-30 mb-2`}),(0,T.jsx)(`span`,{children:S?`No matching endpoints`:`No endpoints found`})]}):K.map(e=>{let t=w.has(e.key)||!!S;return(0,T.jsxs)(a,{open:t,onOpenChange:()=>se(e.key),children:[(0,T.jsx)(v,{asChild:!0,children:(0,T.jsxs)(`button`,{className:`w-full flex items-center gap-1.5 px-2 py-1.5 rounded-md text-xs font-medium text-muted-foreground hover:bg-muted/50 hover:text-foreground transition-colors`,children:[(0,T.jsx)(f,{className:`h-3 w-3 shrink-0 transition-transform duration-200 ${t?`rotate-90`:``}`}),(0,T.jsx)(`span`,{className:`flex-1 text-left truncate`,children:e.label}),(0,T.jsx)(`span`,{className:`shrink-0 text-[10px] tabular-nums opacity-60`,children:e.endpoints.length})]})}),(0,T.jsx)(h,{children:(0,T.jsx)(`div`,{className:`ml-3 space-y-0.5 mt-0.5`,children:e.endpoints.map((e,t)=>(0,T.jsxs)(`button`,{onClick:()=>ce(e),className:`w-full text-left flex items-center gap-1.5 px-2 py-1 rounded text-xs transition-colors ${k===e?`bg-accent text-accent-foreground`:`hover:bg-muted/50 text-muted-foreground hover:text-foreground`}`,children:[(0,T.jsx)(g,{variant:`outline`,className:`font-mono text-[9px] shrink-0 px-1 py-0 ${E[e.method]||``}`,children:e.method}),(0,T.jsx)(`span`,{className:`truncate`,children:e.desc})]},`${e.method}-${e.path}-${t}`))})})]},e.key)})}),(0,T.jsxs)(`div`,{className:`p-3 border-t space-y-2`,children:[(0,T.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,T.jsx)(`h4`,{className:`text-[10px] font-medium text-muted-foreground uppercase tracking-wider`,children:`Query Parameters`}),(0,T.jsxs)(`button`,{onClick:()=>X(),className:`inline-flex items-center gap-0.5 text-[10px] text-muted-foreground hover:text-foreground transition-colors`,children:[(0,T.jsx)(i,{className:`h-3 w-3`}),`Add`]})]}),(0,T.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:re.map(e=>(0,T.jsx)(`button`,{onClick:()=>X(e.key,``),className:`text-[10px] px-1.5 py-0.5 rounded border bg-muted/30 text-muted-foreground hover:text-foreground hover:bg-muted/60 transition-colors font-mono`,title:e.hint,children:e.key},e.key))}),F.length>0&&(0,T.jsx)(`div`,{className:`space-y-1`,children:F.map(e=>(0,T.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,T.jsx)(`input`,{type:`checkbox`,checked:e.enabled,onChange:()=>ue(e.id),className:`h-3 w-3 shrink-0 rounded border accent-primary`}),(0,T.jsx)(`input`,{type:`text`,value:e.key,onChange:t=>Z(e.id,`key`,t.target.value),placeholder:`key`,className:`flex-1 min-w-0 rounded border bg-background px-1.5 py-0.5 text-[10px] font-mono focus:outline-none focus:ring-1 focus:ring-ring`}),(0,T.jsx)(`input`,{type:`text`,value:e.value,onChange:t=>Z(e.id,`value`,t.target.value),placeholder:`value`,className:`flex-1 min-w-0 rounded border bg-background px-1.5 py-0.5 text-[10px] font-mono focus:outline-none focus:ring-1 focus:ring-ring`}),(0,T.jsx)(`button`,{onClick:()=>le(e.id),className:`shrink-0 p-0.5 rounded text-muted-foreground hover:text-destructive transition-colors`,children:(0,T.jsx)(u,{className:`h-3 w-3`})})]},e.id))})]})]}),(0,T.jsxs)(`div`,{className:`flex-1 flex flex-col min-w-0 overflow-hidden`,children:[(0,T.jsxs)(`div`,{className:`p-3 border-b space-y-1`,children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsx)(`select`,{value:q,onChange:e=>j(e.target.value),className:`rounded-md border bg-background px-2 py-1.5 font-mono text-xs font-semibold focus:outline-none focus:ring-1 focus:ring-ring ${E[q]||``}`,children:[`GET`,`POST`,`PATCH`,`PUT`,`DELETE`].map(e=>(0,T.jsx)(`option`,{value:e,children:e},e))}),(0,T.jsx)(`input`,{type:`text`,value:J,onChange:e=>M(e.target.value),className:`flex-1 rounded-md border bg-background px-3 py-1.5 font-mono text-sm focus:outline-none focus:ring-1 focus:ring-ring`,placeholder:`/api/v1/...`,onKeyDown:e=>{e.key===`Enter`&&Q()}}),(0,T.jsxs)(`button`,{onClick:Q,disabled:L||!Y,className:`inline-flex items-center gap-1.5 rounded-md bg-primary px-4 py-1.5 text-sm font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50 transition-colors`,children:[L?(0,T.jsx)(d,{className:`h-3.5 w-3.5 animate-spin`}):(0,T.jsx)(_,{className:`h-3.5 w-3.5`}),`Send`]})]}),F.some(e=>e.enabled&&e.key.trim())&&(0,T.jsxs)(`div`,{className:`text-[10px] font-mono text-muted-foreground truncate pl-1`,children:[`→ `,Y]})]}),(0,T.jsxs)(`div`,{className:`flex-1 flex flex-col min-h-0 overflow-auto`,children:[[`POST`,`PATCH`,`PUT`].includes(q)&&(0,T.jsxs)(`div`,{className:`p-3 border-b space-y-1`,children:[(0,T.jsx)(`label`,{className:`text-xs font-medium text-muted-foreground`,children:`Request Body (JSON)`}),(0,T.jsx)(`textarea`,{value:N,onChange:e=>P(e.target.value),rows:5,className:`w-full rounded-md border bg-background px-3 py-2 font-mono text-xs focus:outline-none focus:ring-1 focus:ring-ring resize-y`,placeholder:`{ "key": "value" }`})]}),L&&(0,T.jsxs)(`div`,{className:`flex items-center justify-center py-8 text-muted-foreground text-sm`,children:[(0,T.jsx)(d,{className:`h-4 w-4 animate-spin mr-2`}),`Sending request...`]}),z&&!L&&(0,T.jsxs)(`div`,{className:`flex-1 min-h-0 flex flex-col overflow-hidden`,children:[(0,T.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2 bg-muted/30 border-b`,children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-3 text-sm`,children:[(0,T.jsx)(`span`,{className:`font-mono font-semibold ${$(z.status)}`,children:z.status||`ERR`}),(0,T.jsxs)(`span`,{className:`text-muted-foreground flex items-center gap-1`,children:[(0,T.jsx)(ee,{className:`h-3 w-3`}),z.duration,`ms`]})]}),(0,T.jsxs)(`button`,{onClick:fe,className:`inline-flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground transition-colors`,children:[W?(0,T.jsx)(c,{className:`h-3 w-3`}):(0,T.jsx)(m,{className:`h-3 w-3`}),W?`Copied`:`Copy`]})]}),(0,T.jsx)(`pre`,{className:`flex-1 overflow-auto p-3 text-xs font-mono bg-muted/10 whitespace-pre-wrap break-all`,children:z.body})]}),!z&&!L&&(0,T.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-muted-foreground text-sm`,children:(0,T.jsxs)(`div`,{className:`text-center space-y-2`,children:[(0,T.jsx)(y,{className:`h-10 w-10 mx-auto opacity-20`}),(0,T.jsxs)(`p`,{children:[`Select an endpoint or type a URL and click `,(0,T.jsx)(`strong`,{children:`Send`})]}),(0,T.jsx)(`p`,{className:`text-xs opacity-60`,children:`All registered APIs are auto-discovered from the platform`})]})}),V.length>0&&(0,T.jsxs)(`div`,{className:`border-t`,children:[(0,T.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2`,children:[(0,T.jsxs)(`h4`,{className:`text-xs font-medium text-muted-foreground uppercase tracking-wider`,children:[`History (`,V.length,`)`]}),(0,T.jsxs)(`button`,{onClick:()=>H([]),className:`inline-flex items-center gap-1 text-[10px] text-muted-foreground hover:text-foreground transition-colors`,children:[(0,T.jsx)(p,{className:`h-3 w-3`}),`Clear`]})]}),(0,T.jsx)(`div`,{className:`space-y-0.5 px-2 pb-2 max-h-60 overflow-auto`,children:V.map(e=>(0,T.jsxs)(`div`,{className:`rounded border`,children:[(0,T.jsxs)(`button`,{onClick:()=>oe(U===e.id?null:e.id),className:`w-full flex items-center gap-2 px-2 py-1.5 text-xs hover:bg-muted/30 transition-colors`,children:[U===e.id?(0,T.jsx)(s,{className:`h-3 w-3 shrink-0`}):(0,T.jsx)(f,{className:`h-3 w-3 shrink-0`}),(0,T.jsx)(g,{variant:`outline`,className:`font-mono text-[9px] shrink-0 ${E[e.method]||``}`,children:e.method}),(0,T.jsx)(`span`,{className:`font-mono truncate text-left flex-1`,children:e.url}),(0,T.jsx)(`span`,{className:`ml-auto shrink-0 font-mono ${$(e.status)}`,children:e.status}),(0,T.jsxs)(`span`,{className:`shrink-0 text-muted-foreground`,children:[e.duration,`ms`]}),(0,T.jsx)(`button`,{onClick:t=>{t.stopPropagation(),de(e)},className:`shrink-0 p-0.5 rounded hover:bg-muted text-muted-foreground hover:text-foreground transition-colors`,title:`Replay request`,children:(0,T.jsx)(_,{className:`h-2.5 w-2.5`})})]}),U===e.id&&(0,T.jsx)(`pre`,{className:`px-3 py-2 text-xs font-mono bg-muted/10 border-t overflow-auto max-h-40 whitespace-pre-wrap break-all`,children:e.response})]},e.id))})]})]})]})]})}export{O as ApiConsolePage};
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{_ as t,f as n,r,t as i}from"./vendor-react-slxo-5GC.js";import{d as a,f as ee}from"./infrastructure-BySW-NB0.js";import{i as te}from"./framework-BGQ7DoWM.js";import{$t as ne,Cr as o,Gi as re,Gt as ie,J as ae,Jt as oe,Kr as se,Ks as ce,Kt as le,Ls as ue,Mc as s,Mi as de,Mr as fe,Ps as pe,Qt as me,Sr as c,Tc as he,Tr as l,Ts as ge,Us as _e,Ut as ve,Vr as ye,Vt as be,Ws as xe,Wt as Se,Xt as Ce,Yt as we,Z as Te,Zo as Ee,Zt as u,_i as De,_r as d,_t as f,br as p,bt as Oe,cs as ke,dn as Ae,ds as je,dt as Me,ft as Ne,gc as Pe,gr as m,gt as Fe,hn as Ie,ht as Le,ir as Re,ji as ze,ks as Be,lr as Ve,mr as He,mt as Ue,nr as We,pr as Ge,pt as Ke,q as qe,qt as Je,rr as Ye,ut as Xe,vr as h,vt as g,wr as Ze,xr as _,yr as v,ys as Qe,yt as $e}from"./ui-components-J75dr3Ae.js";import{r as y}from"./vendor-ui-utils-C1OpMExs.js";var b=e(t(),1),et=`${``.replace(/\/$/,``)}/api/v1`;async function x(e,t){let n=await fetch(`${et}${e}`,{credentials:`include`,headers:{"Content-Type":`application/json`,...t?.headers||{}},...t}),r=null;try{r=await n.json()}catch{}if(!n.ok){let e=r?.code??`HTTP_${n.status}`,t=r?.message??r?.error??n.statusText,i=Error(`${e}: ${t}`);throw i.code=e,i.status=n.status,i.details=r,i}return r}var S={listProcesses(e={}){let t=new URLSearchParams;e.object&&t.set(`object`,e.object),e.activeOnly&&t.set(`activeOnly`,`true`);let n=t.toString();return x(`/approvals/processes${n?`?${n}`:``}`)},listRequests(e={}){let t=new URLSearchParams;e.status&&t.set(`status`,e.status),e.object&&t.set(`object`,e.object),e.recordId&&t.set(`recordId`,e.recordId);let n=Array.isArray(e.approverId)?e.approverId.filter(Boolean).join(`,`):e.approverId;n&&t.set(`approverId`,n),e.submitterId&&t.set(`submitterId`,e.submitterId),e.q?.trim()&&t.set(`q`,e.q.trim()),e.limit!=null&&t.set(`limit`,String(e.limit)),e.offset!=null&&t.set(`offset`,String(e.offset));let r=t.toString();return x(`/approvals/requests${r?`?${r}`:``}`)},async getRequest(e){return{data:await x(`/approvals/requests/${encodeURIComponent(e)}`)}},listActions(e){return x(`/approvals/requests/${encodeURIComponent(e)}/actions`)},async approve(e,t){let n=await x(`/approvals/requests/${encodeURIComponent(e)}/approve`,{method:`POST`,body:JSON.stringify(t)});return{data:n.request,finalized:n.finalized}},async reject(e,t){let n=await x(`/approvals/requests/${encodeURIComponent(e)}/reject`,{method:`POST`,body:JSON.stringify(t)});return{data:n.request,finalized:n.finalized}},async recall(e,t){return{data:(await x(`/approvals/requests/${encodeURIComponent(e)}/recall`,{method:`POST`,body:JSON.stringify(t)})).request,finalized:!0}},async reassign(e,t){return{data:(await x(`/approvals/requests/${encodeURIComponent(e)}/reassign`,{method:`POST`,body:JSON.stringify(t)})).request}},async remind(e,t={}){let n=await x(`/approvals/requests/${encodeURIComponent(e)}/remind`,{method:`POST`,body:JSON.stringify(t)});return{data:n.request,notified:n.notified}},async requestInfo(e,t){return{data:(await x(`/approvals/requests/${encodeURIComponent(e)}/request-info`,{method:`POST`,body:JSON.stringify(t)})).request}},async sendBack(e,t){let n=await x(`/approvals/requests/${encodeURIComponent(e)}/revise`,{method:`POST`,body:JSON.stringify(t)});return{data:n.request,autoRejected:n.autoRejected===!0}},async resubmit(e,t={}){let n=await x(`/approvals/requests/${encodeURIComponent(e)}/resubmit`,{method:`POST`,body:JSON.stringify(t)});return{data:n.request,resumed:n.resumed===!0}},async comment(e,t){return{data:(await x(`/approvals/requests/${encodeURIComponent(e)}/comment`,{method:`POST`,body:JSON.stringify(t)})).request}},async submit(e){return x(`/approvals/requests`,{method:`POST`,body:JSON.stringify(e)})}};function tt(e){if(!e)return[];let t=new Set;e.id&&t.add(e.id),e.email&&t.add(e.email);let n=[...e.roles||[],...typeof e.role==`string`?e.role.split(`,`):[]];for(let e of n){let n=String(e).trim();n&&t.add(`role:${n}`)}return Array.from(t)}var C=i(),nt=50,rt={pending:`border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-500/30 dark:bg-amber-500/10 dark:text-amber-400`,approved:`border-emerald-200 bg-emerald-50 text-emerald-700 dark:border-emerald-500/30 dark:bg-emerald-500/10 dark:text-emerald-400`,rejected:`border-red-200 bg-red-50 text-red-700 dark:border-red-500/30 dark:bg-red-500/10 dark:text-red-400`,recalled:`border-border bg-muted text-muted-foreground`,returned:`border-violet-200 bg-violet-50 text-violet-700 dark:border-violet-500/30 dark:bg-violet-500/10 dark:text-violet-400`};function it(e){if(!e)return`—`;try{return new Date(e).toLocaleString()}catch{return e}}function w(e){return e?e.includes(`@`)?e:e.startsWith(`role:`)?`Role: ${e.slice(5)}`:e.length>14?`${e.slice(0,6)}…${e.slice(-4)}`:e:`—`}function T(e){return e&&String(e).replace(/^flow:/,``).trim().split(/[_\-\s]+/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)||`—`}function at(e){return e.process_label||T(e.process_name)}function ot(e){return e.step_label?e.step_label:e.current_step?T(e.current_step):null}function st(e){return e.submitter_name||w(e.submitter_id)}function ct(e,t){return t.pending_approver_names?.[e]||w(e)}function lt(e){return e.object_label||e.object_name}function E(e){return e.submitted_at||e.created_at||void 0}function D(e){let t=E(e);if(!t)return null;let n=Date.parse(t);return Number.isNaN(n)?null:(Date.now()-n)/36e5}function ut(e){if(e.status!==`pending`)return`text-muted-foreground`;let t=D(e);return t==null?`text-muted-foreground`:t>72?`text-red-600 dark:text-red-400 font-medium`:t>24?`text-amber-600 dark:text-amber-400`:`text-muted-foreground`}function dt(e){let t=Math.max(1,Math.round(Math.abs(e)/36e5));return t<48?`${t}h`:`${Math.round(t/24)}d`}var O=new Set([`id`,`created_at`,`updated_at`,`created_by`,`updated_by`,`organization_id`]);function k(e){return e.split(`_`).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)}function A(e,t){if(typeof t==`boolean`)return t?`✓`:`—`;if(typeof t==`number`){if(t>0xe8d4a51000&&/(_at$|_date$|^date_|_time$)/.test(e))try{return new Date(t).toLocaleDateString()}catch{}return t.toLocaleString()}let n=String(t);if(/^\d{4}-\d{2}-\d{2}T\d{2}/.test(n))try{return new Date(n).toLocaleString()}catch{}return n}var ft=/^[A-Za-z0-9_-]{15,}$/;function pt(e,t,n=6){if(!e||typeof e!=`object`||Array.isArray(e))return[];let r=[];for(let[i,a]of Object.entries(e)){if(O.has(i)||a==null||typeof a==`object`||String(a).trim()===``)continue;let e=t?.[i];if(!(!e&&typeof a==`string`&&ft.test(a.trim())&&!/^\d+$/.test(a.trim()))&&(r.push([k(i),e??A(i,a)]),r.length>=n))break}return r}function mt(){let{t:e,language:t}=te(),{user:i}=ee(),et=a(),{appName:x}=n(),T=(0,b.useMemo)(()=>tt(i),[i]),D=(0,b.useCallback)((t,n,r)=>String(e(`approvalsInbox.${t}`,{defaultValue:n,...r})),[e]),O=(0,b.useCallback)(e=>{if(!e)return`—`;let n=Date.parse(e);if(Number.isNaN(n))return e;let r=Math.round((Date.now()-n)/1e3);if(r<45)return D(`justNow`,`just now`);let i=Math.round(r/60);if(i<60)return D(`minutesAgo`,`{{count}}m ago`,{count:i});let a=Math.round(i/60);if(a<24)return D(`hoursAgo`,`{{count}}h ago`,{count:a});let ee=Math.round(a/24);if(ee<30)return D(`daysAgo`,`{{count}}d ago`,{count:ee});try{return new Date(e).toLocaleDateString(t)}catch{return e}},[D,t]),k=(0,b.useCallback)(e=>{switch(e){case`pending`:return D(`statusPending`,`Pending`);case`approved`:return D(`statusApproved`,`Approved`);case`rejected`:return D(`statusRejected`,`Rejected`);case`recalled`:return D(`statusRecalled`,`Recalled`);case`returned`:return D(`statusReturned`,`Returned for revision`);default:return e}},[D]),A=(0,b.useCallback)((e,t)=>{let n=e?.code??``,r=e?.status??0;return n===`NOT_IMPLEMENTED`||r===501?D(`recallUnavailable`,`Recall is not available on this deployment.`):n===`THROTTLED`||r===429?D(`remindThrottled`,`A reminder was sent recently — try again later.`):r===404?D(`requestGone`,`This request no longer exists. Refresh the list.`):n===`FORBIDDEN`||r===403?D(`notAllowed`,`You are not allowed to perform this action.`):n===`INVALID_STATE`||r===409?D(`alreadyDecided`,`This request was already decided. Refresh the list.`):e?.message||t},[D]);function ft({status:e}){return(0,C.jsx)(Ve,{variant:`outline`,className:s(`font-medium`,rt[e]??``),children:k(e)})}let mt=(0,b.useCallback)(e=>`/apps/${x||`setup`}/${encodeURIComponent(e.object_name)}/record/${encodeURIComponent(e.record_id)}`,[x]),[j,ht]=(0,b.useState)(`pending`),[M,gt]=(0,b.useState)([]),[_t,vt]=(0,b.useState)(!1),[yt,bt]=(0,b.useState)(!1),[xt,St]=(0,b.useState)(null),[Ct,wt]=(0,b.useState)(null),[Tt,Et]=(0,b.useState)(0),[N,Dt]=(0,b.useState)(null),[P,Ot]=(0,b.useState)(null),[kt,At]=(0,b.useState)([]),[jt,Mt]=(0,b.useState)(!1),[F,I]=(0,b.useState)(``),[L,Nt]=(0,b.useState)(``),[R,Pt]=(0,b.useState)(null),[z,Ft]=(0,b.useState)(``),[It,Lt]=(0,b.useState)(``),[Rt,zt]=(0,b.useState)(`all`),[Bt,Vt]=(0,b.useState)(`all`),[B,Ht]=(0,b.useState)(`all`),[V,Ut]=(0,b.useState)(new Set),[Wt,Gt]=(0,b.useState)(!1),[H,Kt]=(0,b.useState)(null),[qt,Jt]=(0,b.useState)(null),[Yt,Xt]=(0,b.useState)(!1),[U,Zt]=(0,b.useState)(``),[Qt,$t]=(0,b.useState)(!1),[en,tn]=(0,b.useState)(``),[nn,rn]=(0,b.useState)(!1),[an,on]=(0,b.useState)(``),[sn,cn]=(0,b.useState)(!1),[ln,un]=(0,b.useState)(``),[W,G]=(0,b.useState)(!1),[dn,fn]=(0,b.useState)([]),[pn,mn]=(0,b.useState)(-1);(0,b.useEffect)(()=>{if(j===`pending`)return;let e=window.setTimeout(()=>Lt(z),350);return()=>window.clearTimeout(e)},[z,j]);let K=(0,b.useCallback)(async()=>{vt(!0),wt(null);try{let e=[];if(j===`pending`)e=T.length?(await S.listRequests({status:`pending`,approverId:T})).data:[],Et(e.length),St(null);else{let t={q:It||void 0,status:B===`all`?void 0:B,limit:nt,offset:0};if(j===`submitted`){let n=i?.id;if(n){let r=await S.listRequests({submitterId:n,...t});e=r.data,St(r.total??r.data.length)}else e=[],St(0)}else{let n=await S.listRequests(t);e=n.data,St(n.total??n.data.length)}T.length&&S.listRequests({status:`pending`,approverId:T}).then(e=>Et(e.data.length)).catch(()=>{})}e.sort((e,t)=>(E(t)||``).localeCompare(E(e)||``)),gt(e)}catch(e){wt(e?.message||String(e)),gt([])}finally{vt(!1)}},[j,T,i?.id,It,B]);(0,b.useEffect)(()=>{K()},[K]);let hn=(0,b.useCallback)(async()=>{if(!(j===`pending`||yt)){bt(!0);try{let e=await S.listRequests({submitterId:j===`submitted`?i?.id??void 0:void 0,q:It||void 0,status:B===`all`?void 0:B,limit:nt,offset:M.length});gt(t=>{let n=new Set(t.map(e=>e.id));return[...t,...e.data.filter(e=>!n.has(e.id))]}),e.total!=null&&St(e.total)}catch(e){y.error(A(e,D(`loadFailed`,`Failed to load request`)))}finally{bt(!1)}}},[j,yt,i?.id,It,B,M.length,A,D]),q=(0,b.useCallback)(async e=>{Dt(e),Mt(!0),I(``),Nt(``);try{let[t,n]=await Promise.all([S.getRequest(e),S.listActions(e)]);Ot(t.data),At(n.data)}catch(e){y.error(A(e,D(`loadFailed`,`Failed to load request`))),Ot(null),At([])}finally{Mt(!1)}},[A,D]),gn=()=>{Dt(null),Ot(null),At([]),I(``),Nt(``)},J=(0,b.useCallback)(e=>{if(L.trim())return L.trim();if(!e)return i?.id||``;let t=new Set(e.pending_approvers||[]);for(let e of T)if(t.has(e))return e;return i?.id||``},[L,T,i?.id]),Y=(0,b.useCallback)(()=>{T.length&&S.listRequests({status:`pending`,approverId:T}).then(e=>Et(e.data.length)).catch(()=>{})},[T]),_n=(0,b.useCallback)(async e=>{if(!P)return;let t=e===`recall`&&i?.id||J(P);if(!t){y.error(D(`noActor`,`Cannot determine the acting identity`));return}Pt(e);try{let n={actor_id:t,comment:F.trim()||void 0},r=await(e===`approve`?S.approve:e===`reject`?S.reject:S.recall)(P.id,n);if(y.success(e===`approve`?r.finalized?D(`approvedFinal`,`Approved`):D(`approvedWaiting`,`Approved — waiting on the remaining approvers`):e===`reject`?D(`rejectedToast`,`Rejected`):D(`recalledToast`,`Request recalled`)),I(``),e!==`recall`&&j===`pending`){let e=Rn.current,t=e.findIndex(e=>e.id===P.id),n=e[t+1]??e[t-1];K(),n&&n.id!==P.id?q(n.id):gn();return}let[i,a]=await Promise.all([S.getRequest(P.id),S.listActions(P.id)]);Ot(i.data),At(a.data),K()}catch(e){y.error(A(e,D(`actionFailed`,`Action failed`)))}finally{Pt(null)}},[P,J,F,K,i?.id,A,D,j,q]),X=(0,b.useCallback)(async e=>{let[t,n]=await Promise.all([S.getRequest(e),S.listActions(e)]);Ot(t.data),At(n.data),K()},[K]),vn=(0,b.useCallback)(async()=>{if(!(!P||!U.trim())){G(!0);try{await S.reassign(P.id,{actor_id:J(P),to:U.trim(),comment:F.trim()||void 0}),y.success(D(`reassignSuccess`,`Handed to {{to}}`,{to:U.trim()})),Xt(!1),Zt(``),I(``),await X(P.id),Y()}catch(e){y.error(A(e,D(`actionFailed`,`Action failed`)))}finally{G(!1)}}},[P,U,F,J,X,Y,A,D]),yn=(0,b.useCallback)(async()=>{if(P){G(!0);try{let e=await S.remind(P.id,{actor_id:i?.id});y.success(D(`remindSuccess`,`Reminder sent to {{count}} approver(s)`,{count:e.notified})),await X(P.id)}catch(e){y.error(A(e,D(`actionFailed`,`Action failed`)))}finally{G(!1)}}},[P,i?.id,X,A,D]),bn=(0,b.useCallback)(async()=>{if(!(!P||!en.trim())){G(!0);try{await S.requestInfo(P.id,{actor_id:J(P),comment:en.trim()}),y.success(D(`requestInfoSent`,`Sent back to the requester for more information`)),$t(!1),tn(``),await X(P.id)}catch(e){y.error(A(e,D(`actionFailed`,`Action failed`)))}finally{G(!1)}}},[P,en,J,X,A,D]),xn=(0,b.useCallback)(async()=>{if(P){G(!0);try{let e=await S.sendBack(P.id,{actor_id:J(P),comment:an.trim()||void 0});y.success(e.autoRejected?D(`sendBackAutoRejected`,`Revision limit reached — the request was auto-rejected`):D(`sendBackSuccess`,`Sent back for revision — the requester can now edit and resubmit`)),rn(!1),on(``),await X(P.id),Y()}catch(e){y.error(A(e,D(`actionFailed`,`Action failed`)))}finally{G(!1)}}},[P,an,J,X,Y,A,D]),Sn=(0,b.useCallback)(async()=>{if(P){cn(!0);try{await S.resubmit(P.id,{actor_id:i?.id,comment:F.trim()||void 0}),y.success(D(`resubmitSuccess`,`Resubmitted — a new approval round has opened`)),I(``),await X(P.id),Y()}catch(e){y.error(A(e,D(`actionFailed`,`Action failed`)))}finally{cn(!1)}}},[P,F,i?.id,X,Y,A,D]),Cn=(0,b.useCallback)(async()=>{if(!(!P||!ln.trim())){G(!0);try{await S.comment(P.id,{actor_id:i?.id,comment:ln.trim()}),un(``),await X(P.id)}catch(e){y.error(A(e,D(`actionFailed`,`Action failed`)))}finally{G(!1)}}},[P,ln,i?.id,X,A,D]),wn=(0,b.useCallback)(async()=>{if(!dn.length)try{let e=``.replace(/\/$/,``);fn(((await(await fetch(`${e}/api/v1/data/sys_user?limit=100`,{credentials:`include`})).json()).records||[]).filter(e=>e.email&&e.name&&e.id!==i?.id).map(e=>({name:String(e.name),email:String(e.email)})))}catch{}},[dn.length,i?.id]),Tn=(0,b.useMemo)(()=>{if(!P||P.status!==`pending`)return!1;let e=new Set(P.pending_approvers||[]);return T.some(t=>e.has(t))||L.trim().length>0},[P,T,L]),En=(0,b.useMemo)(()=>!P||P.status!==`pending`?!1:P.submitter_id===i?.id||L.trim().length>0,[P,i?.id,L]),Dn=(0,b.useMemo)(()=>!P||P.status!==`returned`?!1:P.submitter_id===i?.id||L.trim().length>0,[P,i?.id,L]),On=(0,b.useMemo)(()=>{let e=new Set;for(let t of M)e.add(at(t));return Array.from(e).sort()},[M]),kn=(0,b.useMemo)(()=>{let e=new Set;for(let t of M)t.object_name&&e.add(t.object_name);return Array.from(e).sort()},[M]),Z=(0,b.useMemo)(()=>{let e=z.trim().toLowerCase();return M.filter(t=>Rt!==`all`&&at(t)!==Rt||Bt!==`all`&&t.object_name!==Bt||B!==`all`&&t.status!==B?!1:j!==`pending`||!e?!0:[t.process_name,t.process_label,t.step_label,t.object_name,t.record_id,t.record_title,t.submitter_id,t.submitter_name,...t.pending_approvers||[]].filter(Boolean).join(` `).toLowerCase().includes(e))},[M,z,Rt,Bt,B,j]),An=(0,b.useMemo)(()=>N?Z.findIndex(e=>e.id===N):-1,[Z,N]);(0,b.useEffect)(()=>{if(V.size===0)return;let e=new Set(Z.map(e=>e.id)),t=!1,n=new Set;for(let r of V)e.has(r)?n.add(r):t=!0;t&&Ut(n)},[Z,V]),(0,b.useEffect)(()=>{pn>=Z.length&&mn(Z.length-1)},[Z.length,pn]);let Q=(0,b.useCallback)(e=>{if(e.status!==`pending`)return!1;let t=new Set(T);return(e.pending_approvers||[]).some(e=>t.has(e))},[T]),$=(0,b.useMemo)(()=>Z.filter(e=>V.has(e.id)&&Q(e)),[Z,V,Q]),jn=Z.filter(e=>e.status===`pending`),Mn=jn.length>0&&jn.every(e=>V.has(e.id)),Nn=(0,b.useCallback)(()=>{Ut(e=>{if(Mn)return new Set;let t=new Set(e);for(let e of jn)t.add(e.id);return t})},[Mn,jn]),Pn=(0,b.useCallback)(e=>{Ut(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),Fn=(0,b.useCallback)(async e=>{let t=$;if(t.length===0)return;Gt(!0);let n=0,r=[];for(let a of t){let t=new Set(a.pending_approvers||[]),ee=T.find(e=>t.has(e))||i?.id||``;try{await(e===`approve`?S.approve:S.reject)(a.id,{actor_id:ee}),n++}catch{r.push(a.record_title||w(a.record_id))}}if(Gt(!1),Ut(new Set),r.length===0)y.success(e===`approve`?D(`bulkApproved`,`Approved {{count}} requests`,{count:n}):D(`bulkRejected`,`Rejected {{count}} requests`,{count:n}));else{let e=r.slice(0,3).join(`, `);y.error(D(`bulkPartial`,`{{ok}} succeeded, {{fail}} failed: {{which}}`,{ok:n,fail:r.length,which:e+(r.length>3?`…`:``)}))}K(),Y()},[$,T,i?.id,K,Y,D]),In=(0,b.useCallback)(async e=>{if(!Q(e)||qt)return;let t=new Set(e.pending_approvers||[]),n=T.find(e=>t.has(e))||i?.id||``;Jt(e.id);try{let t=await S.approve(e.id,{actor_id:n});y.success(t.finalized?D(`inlineApproved`,`Approved "{{title}}"`,{title:e.record_title||w(e.record_id)}):D(`approvedWaiting`,`Approved — waiting on the remaining approvers`)),K(),Y()}catch(e){y.error(A(e,D(`actionFailed`,`Action failed`)))}finally{Jt(null)}},[Q,qt,T,i?.id,K,Y,A,D]),Ln=(0,b.useCallback)(async()=>{let e=H;if(!e)return;let t=new Set(e.pending_approvers||[]),n=T.find(e=>t.has(e))||i?.id||``;Jt(e.id),Kt(null);try{await S.reject(e.id,{actor_id:n}),y.success(D(`inlineRejected`,`Rejected "{{title}}"`,{title:e.record_title||w(e.record_id)})),K(),Y()}catch(e){y.error(A(e,D(`actionFailed`,`Action failed`)))}finally{Jt(null)}},[H,T,i?.id,K,Y,A,D]),Rn=(0,b.useRef)(Z);Rn.current=Z;let zn=(0,b.useRef)(pn);zn.current=pn,(0,b.useEffect)(()=>{let e=e=>{if(N||H)return;let t=e.target,n=t?.tagName;if(n===`INPUT`||n===`TEXTAREA`||n===`SELECT`||t?.isContentEditable||document.querySelector(`[role="alertdialog"]`))return;let r=Rn.current;if(!r.length)return;let i=zn.current;e.key===`j`||e.key===`ArrowDown`?(e.preventDefault(),mn(Math.min(i+1,r.length-1))):e.key===`k`||e.key===`ArrowUp`?(e.preventDefault(),mn(Math.max(i-1,0))):e.key===`Enter`&&i>=0&&r[i]?(e.preventDefault(),q(r[i].id)):(e.key===`x`||e.key===` `)&&i>=0&&r[i]&&j===`pending`?(e.preventDefault(),Pn(r[i].id)):e.key===`a`&&i>=0&&r[i]?(e.preventDefault(),In(r[i])):e.key===`r`&&i>=0&&r[i]&&Q(r[i])&&(e.preventDefault(),Kt(r[i]))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[N,H,j,q,Pn,In,Q]),(0,b.useEffect)(()=>{if(!N)return;let e=e=>{if(e.key!==`ArrowLeft`&&e.key!==`ArrowRight`)return;let t=e.target,n=t?.tagName;if(n===`INPUT`||n===`TEXTAREA`||n===`SELECT`||t?.isContentEditable||document.querySelector(`[role="alertdialog"]`))return;let r=Rn.current,i=r.findIndex(e=>e.id===N);if(i<0)return;let a=e.key===`ArrowLeft`?r[i-1]:r[i+1];a&&(e.preventDefault(),q(a.id))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[N,q]);let Bn=!!z||Rt!==`all`||Bt!==`all`||B!==`all`,Vn=e=>{ht(e),Ht(`all`),zt(`all`),Vt(`all`),Ft(``),mn(-1)};function Hn({r:e}){return(0,C.jsxs)(`div`,{className:`min-w-0`,children:[(0,C.jsx)(`div`,{className:`font-medium truncate`,children:at(e)}),(0,C.jsxs)(`div`,{className:`text-xs text-muted-foreground truncate`,children:[ot(e)||`—`,(e.round??1)>1&&(0,C.jsx)(`span`,{className:`ml-1.5 text-violet-600 dark:text-violet-400`,children:D(`roundChip`,`Round {{n}}`,{n:e.round})})]})]})}function Un({r:e}){return(0,C.jsxs)(`div`,{className:`min-w-0`,children:[(0,C.jsxs)(r,{to:mt(e),onClick:e=>e.stopPropagation(),className:`inline-flex items-center gap-1 text-sm hover:underline truncate max-w-full`,title:e.record_id,children:[(0,C.jsx)(`span`,{className:`truncate`,children:e.record_title||w(e.record_id)}),(0,C.jsx)(Ee,{className:`h-3 w-3 shrink-0 text-muted-foreground`})]}),(0,C.jsx)(`div`,{className:`text-xs text-muted-foreground truncate`,children:lt(e)})]})}function Wn({r:e}){if(!Q(e))return null;let t=qt===e.id;return(0,C.jsxs)(`div`,{className:`flex items-center gap-1 opacity-0 group-hover:opacity-100 focus-within:opacity-100 transition-opacity`,onClick:e=>e.stopPropagation(),children:[(0,C.jsx)(l,{size:`sm`,variant:`ghost`,className:`h-7 px-2 text-emerald-700 hover:text-emerald-800 hover:bg-emerald-50 dark:text-emerald-400`,disabled:t,onClick:()=>void In(e),"aria-label":D(`approve`,`Approve`),children:(0,C.jsx)(pe,{className:`h-4 w-4`})}),(0,C.jsx)(l,{size:`sm`,variant:`ghost`,className:`h-7 px-2 text-red-600 hover:text-red-700 hover:bg-red-50 dark:text-red-400`,disabled:t,onClick:()=>Kt(e),"aria-label":D(`reject`,`Reject`),children:(0,C.jsx)(ge,{className:`h-4 w-4`})})]})}return(0,C.jsxs)(`div`,{className:`flex flex-col gap-4 sm:gap-6 p-4 sm:p-6 max-w-6xl`,children:[(0,C.jsxs)(`header`,{className:`flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsxs)(`h1`,{className:`text-2xl font-semibold flex items-center gap-2`,children:[(0,C.jsx)(De,{className:`h-6 w-6`}),D(`title`,`Approvals Inbox`)]}),(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:D(`subtitle`,`Review and act on approval requests.`)})]}),(0,C.jsxs)(l,{variant:`outline`,size:`sm`,onClick:K,disabled:_t,className:`self-start sm:self-auto`,children:[(0,C.jsx)(re,{className:`h-4 w-4 mr-2 ${_t?`animate-spin`:``}`}),D(`refresh`,`Refresh`)]})]}),Ct&&(0,C.jsxs)(Ge,{variant:`destructive`,children:[(0,C.jsx)(ue,{className:`h-4 w-4`}),(0,C.jsx)(He,{children:Ct})]}),(0,C.jsxs)(Me,{value:j,onValueChange:Vn,children:[(0,C.jsxs)(Ke,{children:[(0,C.jsxs)(Ue,{value:`pending`,children:[D(`tabMyPending`,`My Pending`),Tt>0&&(0,C.jsx)(Ve,{variant:`secondary`,className:`ml-2`,children:Tt})]}),(0,C.jsx)(Ue,{value:`submitted`,children:D(`tabSubmitted`,`Submitted by me`)}),(0,C.jsx)(Ue,{value:`all`,children:D(`tabAll`,`All`)})]}),(0,C.jsxs)(Ne,{value:j,className:`mt-4 space-y-3`,children:[!_t&&(M.length>0||j!==`pending`&&(It||B!==`all`))&&(0,C.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,C.jsxs)(`div`,{className:`relative flex-1 min-w-[200px] max-w-sm`,children:[(0,C.jsx)(de,{className:`absolute left-2.5 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-muted-foreground`}),(0,C.jsx)(Ae,{value:z,onChange:e=>Ft(e.target.value),placeholder:D(`searchPlaceholder`,`Search record, process, requester…`),className:`pl-8 h-8 text-sm`}),z&&(0,C.jsx)(`button`,{type:`button`,onClick:()=>Ft(``),className:`absolute right-2 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground`,"aria-label":D(`clearSearch`,`Clear search`),children:(0,C.jsx)(fe,{className:`h-3.5 w-3.5`})})]}),j!==`pending`&&(0,C.jsxs)(we,{value:B,onValueChange:Ht,children:[(0,C.jsx)(me,{className:`h-8 w-auto min-w-[130px] text-sm`,children:(0,C.jsx)(ne,{placeholder:D(`statusFilter`,`Status`)})}),(0,C.jsxs)(Ce,{children:[(0,C.jsx)(u,{value:`all`,children:D(`allStatuses`,`All statuses`)}),(0,C.jsx)(u,{value:`pending`,children:k(`pending`)}),(0,C.jsx)(u,{value:`approved`,children:k(`approved`)}),(0,C.jsx)(u,{value:`rejected`,children:k(`rejected`)}),(0,C.jsx)(u,{value:`recalled`,children:k(`recalled`)}),(0,C.jsx)(u,{value:`returned`,children:k(`returned`)})]})]}),On.length>1&&(0,C.jsxs)(we,{value:Rt,onValueChange:zt,children:[(0,C.jsx)(me,{className:`h-8 w-auto min-w-[140px] text-sm`,children:(0,C.jsx)(ne,{placeholder:D(`processFilter`,`Process`)})}),(0,C.jsxs)(Ce,{children:[(0,C.jsx)(u,{value:`all`,children:D(`allProcesses`,`All processes`)}),On.map(e=>(0,C.jsx)(u,{value:e,children:e},e))]})]}),kn.length>1&&(0,C.jsxs)(we,{value:Bt,onValueChange:Vt,children:[(0,C.jsx)(me,{className:`h-8 w-auto min-w-[140px] text-sm`,children:(0,C.jsx)(ne,{placeholder:D(`objectFilter`,`Object`)})}),(0,C.jsxs)(Ce,{children:[(0,C.jsx)(u,{value:`all`,children:D(`allObjects`,`All objects`)}),kn.map(e=>(0,C.jsx)(u,{value:e,children:e},e))]})]}),Bn&&(0,C.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:D(`filterCount`,`{{shown}} of {{total}}`,{shown:Z.length,total:M.length})})]}),j===`pending`&&V.size>0&&(0,C.jsxs)(`div`,{className:`flex items-center justify-between gap-2 px-3 py-2 rounded-md border bg-accent/30 text-sm`,children:[(0,C.jsxs)(`span`,{children:[(0,C.jsx)(`strong`,{children:V.size}),` `,D(`selected`,`selected`),$.length!==V.size&&(0,C.jsx)(`span`,{className:`text-muted-foreground ml-1`,children:D(`actionableCount`,`({{count}} actionable)`,{count:$.length})})]}),(0,C.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,C.jsxs)(m,{children:[(0,C.jsx)(Ze,{asChild:!0,children:(0,C.jsxs)(l,{size:`sm`,disabled:Wt||$.length===0,children:[(0,C.jsx)(pe,{className:`h-3.5 w-3.5 mr-1`}),D(`approveN`,`Approve {{count}}`,{count:$.length||``})]})}),(0,C.jsxs)(v,{children:[(0,C.jsxs)(c,{children:[(0,C.jsx)(o,{children:D(`bulkApproveTitle`,`Approve {{count}} requests?`,{count:$.length})}),(0,C.jsx)(p,{children:D(`bulkApproveBody`,`Each request is approved with your identity and its flow continues down the approve branch.`)})]}),(0,C.jsxs)(_,{children:[(0,C.jsx)(h,{children:D(`cancel`,`Cancel`)}),(0,C.jsx)(d,{onClick:()=>Fn(`approve`),children:D(`approveN`,`Approve {{count}}`,{count:$.length})})]})]})]}),(0,C.jsxs)(m,{children:[(0,C.jsx)(Ze,{asChild:!0,children:(0,C.jsxs)(l,{size:`sm`,variant:`outline`,disabled:Wt||$.length===0,className:`border-destructive text-destructive hover:bg-destructive hover:text-destructive-foreground`,children:[(0,C.jsx)(ge,{className:`h-3.5 w-3.5 mr-1`}),D(`rejectN`,`Reject {{count}}`,{count:$.length||``})]})}),(0,C.jsxs)(v,{children:[(0,C.jsxs)(c,{children:[(0,C.jsx)(o,{children:D(`bulkRejectTitle`,`Reject {{count}} requests?`,{count:$.length})}),(0,C.jsx)(p,{children:D(`bulkRejectBody`,`This rejects the selected requests and notifies their submitters.`)})]}),(0,C.jsxs)(_,{children:[(0,C.jsx)(h,{children:D(`cancel`,`Cancel`)}),(0,C.jsx)(d,{onClick:()=>Fn(`reject`),className:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,children:D(`rejectN`,`Reject {{count}}`,{count:$.length})})]})]})]}),(0,C.jsx)(l,{size:`sm`,variant:`ghost`,onClick:()=>Ut(new Set),disabled:Wt,children:D(`clear`,`Clear`)})]})]}),_t?(0,C.jsxs)(`div`,{className:`space-y-2`,children:[(0,C.jsx)(be,{className:`h-10 w-full`}),(0,C.jsx)(be,{className:`h-10 w-full`}),(0,C.jsx)(be,{className:`h-10 w-full`})]}):M.length===0?(0,C.jsx)(`div`,{className:`flex items-center justify-center min-h-[240px] rounded-md border border-dashed`,children:(0,C.jsxs)(qe,{children:[(0,C.jsx)(Te,{children:D(`emptyTitle`,`No requests`)}),(0,C.jsx)(ae,{children:j===`pending`?D(`emptyPending`,`You're all caught up — nothing is waiting on you.`):D(`emptyOther`,`Nothing here yet.`)}),j===`pending`&&(0,C.jsx)(l,{variant:`link`,size:`sm`,className:`mt-1`,onClick:()=>Vn(`all`),children:D(`emptyViewAll`,`Browse all requests`)})]})}):Z.length===0?(0,C.jsx)(`div`,{className:`flex items-center justify-center min-h-[160px] rounded-md border border-dashed text-sm text-muted-foreground`,children:D(`noMatches`,`No matches for current filters.`)}):(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(Ye,{className:`hidden md:block`,children:(0,C.jsx)(Re,{className:`p-0`,children:(0,C.jsxs)(Le,{children:[(0,C.jsx)($e,{children:(0,C.jsxs)(Oe,{children:[j===`pending`&&(0,C.jsx)(g,{className:`w-10`,children:(0,C.jsx)(We,{checked:Mn,onCheckedChange:Nn,"aria-label":D(`selectAll`,`Select all`),disabled:jn.length===0})}),(0,C.jsx)(g,{children:D(`colRequest`,`Request`)}),(0,C.jsx)(g,{children:D(`colRecord`,`Record`)}),(0,C.jsx)(g,{children:D(`colRequester`,`Requester`)}),(0,C.jsx)(g,{children:D(`colStatus`,`Status`)}),(0,C.jsx)(g,{children:D(`colWaiting`,`Submitted`)}),(0,C.jsx)(g,{className:`w-20`,"aria-label":D(`colActions`,`Actions`)})]})}),(0,C.jsx)(Fe,{children:Z.map((e,t)=>(0,C.jsxs)(Oe,{className:s(`group cursor-pointer hover:bg-accent/50`,pn===t&&`ring-2 ring-inset ring-ring bg-accent/30`),onClick:()=>{mn(t),q(e.id)},children:[j===`pending`&&(0,C.jsx)(f,{className:`w-10`,onClick:e=>e.stopPropagation(),children:(0,C.jsx)(We,{checked:V.has(e.id),onCheckedChange:()=>Pn(e.id),disabled:e.status!==`pending`,"aria-label":D(`selectRow`,`Select request`)})}),(0,C.jsx)(f,{children:(0,C.jsx)(Hn,{r:e})}),(0,C.jsx)(f,{children:(0,C.jsx)(Un,{r:e})}),(0,C.jsx)(f,{children:(0,C.jsxs)(`div`,{className:`flex items-center gap-1.5 text-sm`,children:[(0,C.jsx)(ye,{className:`h-3.5 w-3.5 text-muted-foreground shrink-0`}),(0,C.jsx)(`span`,{className:`truncate`,title:e.submitter_id||``,children:st(e)})]})}),(0,C.jsx)(f,{children:(0,C.jsx)(ft,{status:e.status})}),(0,C.jsxs)(f,{className:s(`text-xs whitespace-nowrap`,ut(e)),title:it(E(e)),children:[(0,C.jsx)(Qe,{className:`h-3 w-3 inline mr-1`}),O(E(e)),e.status===`pending`&&e.sla_due_at&&(0,C.jsx)(`div`,{className:s(`mt-0.5 text-[10px] font-medium`,Date.parse(e.sla_due_at)<Date.now()?`text-red-600 dark:text-red-400`:`text-muted-foreground`),children:Date.parse(e.sla_due_at)<Date.now()?D(`slaOverdue`,`SLA overdue {{dur}}`,{dur:dt(Date.now()-Date.parse(e.sla_due_at))}):D(`slaRemaining`,`SLA {{dur}} left`,{dur:dt(Date.parse(e.sla_due_at)-Date.now())})})]}),(0,C.jsx)(f,{className:`w-20`,children:(0,C.jsx)(Wn,{r:e})})]},e.id))})]})})}),(0,C.jsx)(`div`,{className:`md:hidden space-y-2`,children:Z.map(e=>(0,C.jsx)(Ye,{className:`cursor-pointer active:bg-accent/50`,onClick:()=>void q(e.id),children:(0,C.jsxs)(Re,{className:`p-3 space-y-1.5`,children:[(0,C.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,C.jsx)(`div`,{className:`font-medium text-sm truncate`,children:at(e)}),(0,C.jsx)(ft,{status:e.status})]}),(0,C.jsxs)(`div`,{className:`text-sm truncate`,children:[e.record_title||w(e.record_id),(0,C.jsx)(`span`,{className:`text-muted-foreground text-xs ml-1.5`,children:lt(e)})]}),(0,C.jsxs)(`div`,{className:`flex items-center justify-between text-xs text-muted-foreground`,children:[(0,C.jsxs)(`span`,{className:`inline-flex items-center gap-1 truncate`,children:[(0,C.jsx)(ye,{className:`h-3 w-3`}),st(e)]}),(0,C.jsxs)(`span`,{className:s(`inline-flex items-center gap-1 whitespace-nowrap`,ut(e)),children:[(0,C.jsx)(Qe,{className:`h-3 w-3`}),O(E(e))]})]}),Q(e)&&(0,C.jsxs)(`div`,{className:`flex gap-2 pt-1`,onClick:e=>e.stopPropagation(),children:[(0,C.jsxs)(l,{size:`sm`,className:`h-7 flex-1`,disabled:qt===e.id,onClick:()=>void In(e),children:[(0,C.jsx)(pe,{className:`h-3.5 w-3.5 mr-1`}),D(`approve`,`Approve`)]}),(0,C.jsxs)(l,{size:`sm`,variant:`outline`,className:`h-7 flex-1 border-destructive text-destructive`,disabled:qt===e.id,onClick:()=>Kt(e),children:[(0,C.jsx)(ge,{className:`h-3.5 w-3.5 mr-1`}),D(`reject`,`Reject`)]})]})]})},e.id))}),j!==`pending`&&xt!=null&&(0,C.jsxs)(`div`,{className:`flex items-center justify-center gap-3 py-1`,children:[(0,C.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:D(`loadedOf`,`Loaded {{loaded}} of {{total}}`,{loaded:M.length,total:xt})}),M.length<xt&&(0,C.jsx)(l,{size:`sm`,variant:`outline`,disabled:yt,onClick:()=>void hn(),children:yt?D(`loadingMore`,`Loading…`):D(`loadMore`,`Load more`)})]}),(0,C.jsx)(`div`,{className:`hidden md:block text-[11px] text-muted-foreground`,children:D(`keyboardHint`,`Keyboard: j/k move · Enter open · x select · a approve · r reject`)})]})]})]}),(0,C.jsx)(m,{open:Yt,onOpenChange:e=>{e||(Xt(!1),Zt(``))},children:(0,C.jsxs)(v,{children:[(0,C.jsxs)(c,{children:[(0,C.jsx)(o,{children:D(`reassignTitle`,`Hand this approval to someone else?`)}),(0,C.jsx)(p,{children:D(`reassignBody`,`Your approver slot moves to the person you pick — they are notified and can act immediately.`)})]}),(0,C.jsxs)(`div`,{children:[(0,C.jsx)(Ie,{htmlFor:`reassign-to`,className:`text-xs`,children:D(`reassignTo`,`New approver`)}),(0,C.jsx)(Ae,{id:`reassign-to`,list:`reassign-user-options`,value:U,onChange:e=>Zt(e.target.value),placeholder:D(`reassignToPlaceholder`,`Pick a user or type an email / role:<name>`),className:`mt-1`}),(0,C.jsx)(`datalist`,{id:`reassign-user-options`,children:dn.map(e=>(0,C.jsx)(`option`,{value:e.email,children:e.name},e.email))})]}),(0,C.jsxs)(_,{children:[(0,C.jsx)(h,{children:D(`cancel`,`Cancel`)}),(0,C.jsx)(d,{disabled:!U.trim()||W,onClick:()=>void vn(),children:D(`reassignBtn`,`Reassign`)})]})]})}),(0,C.jsx)(m,{open:Qt,onOpenChange:e=>{e||($t(!1),tn(``))},children:(0,C.jsxs)(v,{children:[(0,C.jsxs)(c,{children:[(0,C.jsx)(o,{children:D(`requestInfoTitle`,`Ask the requester for more information?`)}),(0,C.jsx)(p,{children:D(`requestInfoBody`,`The request stays pending; the requester is notified and can reply on the thread.`)})]}),(0,C.jsx)(Xe,{value:en,onChange:e=>tn(e.target.value),rows:3,placeholder:D(`requestInfoPlaceholder`,`What do you need from the requester?`)}),(0,C.jsxs)(_,{children:[(0,C.jsx)(h,{children:D(`cancel`,`Cancel`)}),(0,C.jsx)(d,{disabled:!en.trim()||W,onClick:()=>void bn(),children:D(`requestInfoBtn`,`Request info`)})]})]})}),(0,C.jsx)(m,{open:nn,onOpenChange:e=>{e||(rn(!1),on(``))},children:(0,C.jsxs)(v,{children:[(0,C.jsxs)(c,{children:[(0,C.jsx)(o,{children:D(`sendBackTitle`,`Send this request back for revision?`)}),(0,C.jsx)(p,{children:D(`sendBackBody`,`This round ends and the record unlocks so the requester can fix the data. When they resubmit, a fresh approval round opens for all approvers.`)})]}),(0,C.jsx)(Xe,{value:an,onChange:e=>on(e.target.value),rows:3,placeholder:D(`sendBackPlaceholder`,`What needs to be fixed before this can be approved?`)}),(0,C.jsxs)(_,{children:[(0,C.jsx)(h,{children:D(`cancel`,`Cancel`)}),(0,C.jsx)(d,{disabled:W,onClick:()=>void xn(),children:D(`sendBackBtn`,`Send back`)})]})]})}),(0,C.jsx)(m,{open:!!H,onOpenChange:e=>!e&&Kt(null),children:(0,C.jsxs)(v,{children:[(0,C.jsxs)(c,{children:[(0,C.jsx)(o,{children:D(`rejectOneTitle`,`Reject "{{title}}"?`,{title:H?H.record_title||w(H.record_id):``})}),(0,C.jsx)(p,{children:D(`rejectOneBody`,`This rejects the request and notifies the submitter.`)})]}),(0,C.jsxs)(_,{children:[(0,C.jsx)(h,{children:D(`cancel`,`Cancel`)}),(0,C.jsx)(d,{onClick:()=>void Ln(),className:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,children:D(`reject`,`Reject`)})]})]})}),(0,C.jsx)(ve,{open:!!N,onOpenChange:e=>!e&&gn(),children:(0,C.jsxs)(Se,{className:`w-full sm:max-w-xl overflow-y-auto`,children:[(0,C.jsxs)(le,{children:[(0,C.jsx)(Je,{children:P?at(P):D(`drawerTitle`,`Approval Request`)}),(0,C.jsx)(ie,{children:P?ot(P)||lt(P):``})]}),P&&An>=0&&Z.length>1&&(0,C.jsxs)(`div`,{className:`flex items-center justify-between mt-2 text-xs text-muted-foreground`,children:[(0,C.jsxs)(l,{variant:`ghost`,size:`sm`,className:`h-7 px-2`,disabled:An<=0,onClick:()=>{let e=Z[An-1];e&&q(e.id)},children:[(0,C.jsx)(xe,{className:`h-4 w-4 mr-0.5`}),D(`prevRequest`,`Previous`)]}),(0,C.jsx)(`span`,{children:D(`positionOf`,`{{index}} of {{total}}`,{index:An+1,total:Z.length})}),(0,C.jsxs)(l,{variant:`ghost`,size:`sm`,className:`h-7 px-2`,disabled:An>=Z.length-1,onClick:()=>{let e=Z[An+1];e&&q(e.id)},children:[D(`nextRequest`,`Next`),(0,C.jsx)(_e,{className:`h-4 w-4 ml-0.5`})]})]}),jt?(0,C.jsxs)(`div`,{className:`space-y-2 mt-6`,children:[(0,C.jsx)(be,{className:`h-6 w-3/4`}),(0,C.jsx)(be,{className:`h-6 w-1/2`}),(0,C.jsx)(be,{className:`h-20 w-full`})]}):P?(0,C.jsxs)(`div`,{className:`space-y-4 mt-6`,children:[(0,C.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-xs text-muted-foreground`,children:[(0,C.jsx)(ft,{status:P.status}),(P.round??1)>1&&(0,C.jsx)(Ve,{variant:`outline`,className:`text-[10px] border-violet-200 text-violet-700 dark:border-violet-500/30 dark:text-violet-400`,children:D(`roundChip`,`Round {{n}}`,{n:P.round})}),(0,C.jsxs)(`span`,{className:`inline-flex items-center gap-1`,title:it(E(P)),children:[(0,C.jsx)(Qe,{className:`h-3 w-3`}),D(`submittedAgo`,`Submitted {{when}}`,{when:O(E(P))})]}),P.completed_at&&(0,C.jsxs)(`span`,{children:[`· `,D(`completedAt`,`Completed {{when}}`,{when:O(P.completed_at)})]}),P.status===`pending`&&P.sla_due_at&&(0,C.jsx)(Ve,{variant:`outline`,className:s(`text-[10px]`,Date.parse(P.sla_due_at)<Date.now()?`border-red-200 bg-red-50 text-red-700 dark:border-red-500/30 dark:bg-red-500/10 dark:text-red-400`:`border-border text-muted-foreground`),children:Date.parse(P.sla_due_at)<Date.now()?D(`slaOverdue`,`SLA overdue {{dur}}`,{dur:dt(Date.now()-Date.parse(P.sla_due_at))}):D(`slaRemaining`,`SLA {{dur}} left`,{dur:dt(Date.parse(P.sla_due_at)-Date.now())})})]}),(0,C.jsx)(Ye,{children:(0,C.jsxs)(Re,{className:`p-4 space-y-3`,children:[(0,C.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,C.jsxs)(`div`,{className:`min-w-0`,children:[(0,C.jsxs)(r,{to:mt(P),className:`text-base font-semibold hover:underline inline-flex items-center gap-1.5`,children:[(0,C.jsx)(`span`,{className:`truncate`,children:P.record_title||w(P.record_id)}),(0,C.jsx)(Ee,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`})]}),(0,C.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:lt(P)})]}),(0,C.jsx)(`div`,{className:`text-right text-xs text-muted-foreground shrink-0`,children:(0,C.jsxs)(`div`,{className:`inline-flex items-center gap-1`,children:[(0,C.jsx)(ye,{className:`h-3 w-3`}),(0,C.jsx)(`span`,{title:P.submitter_id||``,children:st(P)})]})})]}),pt(P.payload,P.payload_display).length>0&&(0,C.jsx)(`div`,{className:`grid grid-cols-2 gap-x-4 gap-y-2 text-sm border-t pt-3`,children:pt(P.payload,P.payload_display).map(([e,t])=>(0,C.jsxs)(`div`,{className:`min-w-0`,children:[(0,C.jsx)(`div`,{className:`text-[11px] text-muted-foreground`,children:e}),(0,C.jsx)(`div`,{className:`truncate`,title:t,children:t})]},e))}),P.status===`pending`&&(P.pending_approvers||[]).length>0&&(0,C.jsxs)(`div`,{className:`border-t pt-3`,children:[(0,C.jsx)(`div`,{className:`text-[11px] text-muted-foreground mb-1`,children:D(`waitingOn`,`Waiting on`)}),(0,C.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:(P.pending_approvers||[]).map((e,t)=>(0,C.jsx)(Ve,{variant:`outline`,className:`text-[11px]`,title:e,children:ct(e,P)},t))})]})]})}),(P.flow_steps?.length??0)>1&&(0,C.jsx)(`div`,{className:`flex items-center px-1`,"aria-label":D(`stepProgress`,`Approval steps`),children:P.flow_steps.map((e,t)=>(0,C.jsxs)(b.Fragment,{children:[t>0&&(0,C.jsx)(`div`,{className:s(`h-px flex-1 mx-2`,e.state===`done`||e.state===`current`?`bg-emerald-300 dark:bg-emerald-700`:`bg-border`)}),(0,C.jsxs)(`div`,{className:`flex items-center gap-1.5 shrink-0`,children:[(0,C.jsx)(`span`,{className:s(`flex items-center justify-center h-5 w-5 rounded-full text-[10px] font-semibold`,e.state===`done`&&`bg-emerald-500 text-white`,e.state===`current`&&`bg-amber-500 text-white ring-2 ring-amber-200 dark:ring-amber-500/30`,e.state===`upcoming`&&`bg-muted text-muted-foreground border`),children:e.state===`done`?(0,C.jsx)(ce,{className:`h-3 w-3`}):t+1}),(0,C.jsx)(`span`,{className:s(`text-xs`,e.state===`current`?`font-medium`:`text-muted-foreground`),children:e.label})]})]},e.id))}),(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`h3`,{className:`text-sm font-semibold mb-3`,children:D(`history`,`Activity`)}),kt.length===0?(0,C.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:D(`noActions`,`No actions yet.`)}):(0,C.jsx)(`ol`,{className:`relative space-y-3 pl-5 before:absolute before:left-[7px] before:top-1 before:bottom-1 before:w-px before:bg-border`,children:kt.map(e=>{let t=e.action===`approve`?`bg-emerald-500`:e.action===`reject`?`bg-destructive`:e.action===`submit`?`bg-blue-500`:e.action===`reassign`?`bg-indigo-500`:e.action===`remind`||e.action===`request_info`?`bg-amber-500`:e.action===`comment`?`bg-slate-400`:e.action===`escalate`?`bg-red-500`:e.action===`revise`?`bg-violet-500`:e.action===`resubmit`?`bg-blue-500`:`bg-muted-foreground`,n=e.actor_id===`system:sla`?D(`systemSlaActor`,`System (SLA)`):e.actor_name??(e.actor_id&&e.actor_id===P.submitter_id?st(P):w(e.actor_id)),r=e.action===`submit`?D(`actSubmit`,`Submitted`):e.action===`approve`?D(`actApprove`,`Approved`):e.action===`reject`?D(`actReject`,`Rejected`):e.action===`recall`?D(`actRecall`,`Recalled`):e.action===`reassign`?D(`actReassign`,`Reassigned`):e.action===`remind`?D(`actRemind`,`Reminder sent`):e.action===`request_info`?D(`actRequestInfo`,`Requested more info`):e.action===`comment`?D(`actComment`,`Commented`):e.action===`escalate`?D(`actEscalate`,`SLA escalated`):e.action===`revise`?D(`actRevise`,`Sent back for revision`):e.action===`resubmit`?D(`actResubmit`,`Resubmitted`):e.action;return(0,C.jsxs)(`li`,{className:`relative text-xs`,children:[(0,C.jsx)(`span`,{className:`absolute -left-[18px] top-1 h-3 w-3 rounded-full ring-2 ring-background ${t}`,"aria-hidden":!0}),(0,C.jsxs)(`div`,{className:`flex items-baseline gap-1.5 flex-wrap`,children:[(0,C.jsx)(`span`,{className:`font-medium`,children:r}),(0,C.jsx)(`span`,{className:`text-muted-foreground`,children:`·`}),(0,C.jsx)(`span`,{title:e.actor_id||``,children:n}),(0,C.jsx)(`span`,{className:`ml-auto text-muted-foreground text-[10px]`,title:it(e.created_at),children:O(e.created_at)})]}),e.comment&&(0,C.jsxs)(`div`,{className:`text-muted-foreground italic mt-0.5`,children:[`"`,e.comment,`"`]})]},e.id)})}),P.status===`pending`&&(Tn||En)&&(0,C.jsxs)(`div`,{className:`flex items-center gap-2 mt-3`,children:[(0,C.jsx)(Ae,{value:ln,onChange:e=>un(e.target.value),onKeyDown:e=>{e.key===`Enter`&&ln.trim()&&(e.preventDefault(),Cn())},placeholder:D(`replyPlaceholder`,`Reply on this request…`),className:`h-8 text-sm`}),(0,C.jsx)(l,{size:`sm`,variant:`outline`,className:`h-8 px-2 shrink-0`,disabled:!ln.trim()||W,onClick:()=>void Cn(),children:(0,C.jsx)(ze,{className:`h-3.5 w-3.5`})})]})]}),P.payload!=null&&(0,C.jsxs)(`details`,{className:`group`,children:[(0,C.jsx)(`summary`,{className:`cursor-pointer text-xs text-muted-foreground hover:text-foreground select-none`,children:D(`rawData`,`Raw data (JSON)`)}),(0,C.jsxs)(`div`,{className:`mt-2`,children:[(0,C.jsx)(`div`,{className:`flex justify-end`,children:(0,C.jsxs)(`button`,{type:`button`,onClick:async()=>{try{await navigator.clipboard.writeText(JSON.stringify(P.payload,null,2)),y.success(D(`copied`,`Copied`))}catch{y.error(D(`copyFailed`,`Copy failed`))}},className:`text-[10px] text-muted-foreground hover:text-foreground inline-flex items-center gap-1`,children:[(0,C.jsx)(je,{className:`h-3 w-3`}),D(`copy`,`Copy`)]})}),(0,C.jsx)(`pre`,{className:`text-[11px] bg-muted/50 rounded p-2 overflow-auto max-h-48 mt-1`,children:JSON.stringify(P.payload,null,2)})]})]}),P.status===`pending`&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(oe,{}),(0,C.jsxs)(`div`,{className:`space-y-3`,children:[et&&(0,C.jsxs)(`details`,{className:`group`,children:[(0,C.jsx)(`summary`,{className:`cursor-pointer text-xs text-muted-foreground hover:text-foreground select-none`,children:D(`overrideActor`,`Act as another identity (admin)`)}),(0,C.jsxs)(`div`,{className:`mt-2`,children:[(0,C.jsx)(Ie,{htmlFor:`actor-override`,className:`text-xs`,children:D(`actor`,`Actor`)}),(0,C.jsx)(`input`,{id:`actor-override`,type:`text`,value:L,onChange:e=>Nt(e.target.value),placeholder:`${D(`auto`,`Auto`)}: ${J(P)||`—`}`,className:`w-full mt-1 px-3 py-2 text-sm border rounded-md bg-background`}),(0,C.jsx)(`div`,{className:`text-[10px] text-muted-foreground mt-1`,children:D(`overrideHint`,`e.g. role:sales_manager. Leave blank to use the auto-detected identity.`)})]})]}),(0,C.jsxs)(`div`,{children:[(0,C.jsx)(Ie,{htmlFor:`comment`,className:`text-xs`,children:D(`comment`,`Comment (optional)`)}),(0,C.jsx)(`div`,{className:`flex flex-wrap gap-1.5 mt-1.5`,children:[D(`quickPhrase1`,`Approved — meets requirements.`),D(`quickPhrase2`,`Approved with conditions — please monitor execution.`),D(`quickPhrase3`,`Please add supporting material and resubmit.`)].map(e=>(0,C.jsx)(`button`,{type:`button`,onClick:()=>I(e),className:`text-[11px] px-2 py-0.5 rounded-full border text-muted-foreground hover:text-foreground hover:bg-accent transition-colors`,children:e},e))}),(0,C.jsx)(Xe,{id:`comment`,value:F,onChange:e=>I(e.target.value),rows:2,className:`mt-1`})]}),(0,C.jsxs)(`div`,{className:`flex gap-2 flex-wrap`,children:[(0,C.jsxs)(l,{size:`sm`,onClick:()=>_n(`approve`),disabled:!Tn||R!==null,children:[(0,C.jsx)(pe,{className:`h-4 w-4 mr-1`}),R===`approve`?D(`approving`,`Approving…`):D(`approve`,`Approve`)]}),(0,C.jsxs)(m,{children:[(0,C.jsx)(Ze,{asChild:!0,children:(0,C.jsxs)(l,{size:`sm`,variant:`outline`,disabled:!Tn||R!==null,className:`border-destructive text-destructive hover:bg-destructive hover:text-destructive-foreground`,children:[(0,C.jsx)(ge,{className:`h-4 w-4 mr-1`}),R===`reject`?D(`rejecting`,`Rejecting…`):D(`reject`,`Reject`)]})}),(0,C.jsxs)(v,{children:[(0,C.jsxs)(c,{children:[(0,C.jsx)(o,{children:D(`rejectTitle`,`Reject this request?`)}),(0,C.jsx)(p,{children:D(`rejectBody`,`This marks the request as rejected and notifies the submitter.`)})]}),(0,C.jsxs)(_,{children:[(0,C.jsx)(h,{children:D(`cancel`,`Cancel`)}),(0,C.jsx)(d,{onClick:()=>_n(`reject`),className:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,children:D(`reject`,`Reject`)})]})]})]}),Tn&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(l,{size:`sm`,variant:`outline`,disabled:R!==null||W,className:`border-violet-300 text-violet-700 hover:bg-violet-50 dark:text-violet-400`,onClick:()=>rn(!0),children:[(0,C.jsx)(ke,{className:`h-4 w-4 mr-1`}),D(`sendBackBtn`,`Send back`)]}),(0,C.jsxs)(l,{size:`sm`,variant:`outline`,disabled:R!==null||W,className:`border-amber-300 text-amber-700 hover:bg-amber-50 dark:text-amber-400`,onClick:()=>$t(!0),children:[(0,C.jsx)(Be,{className:`h-4 w-4 mr-1`}),D(`requestInfoBtn`,`Request info`)]}),(0,C.jsxs)(l,{size:`sm`,variant:`outline`,disabled:R!==null||W,onClick:()=>{wn(),Xt(!0)},children:[(0,C.jsx)(he,{className:`h-4 w-4 mr-1`}),D(`reassignBtn`,`Reassign`)]})]}),En&&(0,C.jsxs)(l,{size:`sm`,variant:`outline`,disabled:W,onClick:()=>void yn(),children:[(0,C.jsx)(Pe,{className:`h-4 w-4 mr-1`}),D(`remindBtn`,`Send reminder`)]}),En&&(0,C.jsxs)(m,{children:[(0,C.jsx)(Ze,{asChild:!0,children:(0,C.jsxs)(l,{size:`sm`,variant:`outline`,disabled:R!==null,children:[(0,C.jsx)(se,{className:`h-4 w-4 mr-1`}),R===`recall`?D(`recalling`,`Recalling…`):D(`recall`,`Recall`)]})}),(0,C.jsxs)(v,{children:[(0,C.jsxs)(c,{children:[(0,C.jsx)(o,{children:D(`recallTitle`,`Recall this request?`)}),(0,C.jsx)(p,{children:D(`recallBody`,`This withdraws your request. Approvers can no longer act on it, and the record is unlocked.`)})]}),(0,C.jsxs)(_,{children:[(0,C.jsx)(h,{children:D(`cancel`,`Cancel`)}),(0,C.jsx)(d,{onClick:()=>_n(`recall`),children:D(`recall`,`Recall`)})]})]})]})]}),!Tn&&(0,C.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:En?D(`whyDisabledSubmitter`,`You submitted this request, so you can recall it — but only the assigned approvers can approve or reject.`):D(`whyDisabled`,`Only the assigned approvers can act on this request. It is waiting on: {{who}}.`,{who:(P.pending_approvers||[]).map(e=>ct(e,P)).join(`, `)||`—`})})]})]}),Dn&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(oe,{}),(0,C.jsxs)(`div`,{className:`space-y-3`,children:[(0,C.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:D(`returnedHint`,`An approver sent this back to you. The record is unlocked — fix the data, then resubmit to start a new approval round.`)}),(0,C.jsxs)(`div`,{children:[(0,C.jsx)(Ie,{htmlFor:`resubmit-comment`,className:`text-xs`,children:D(`comment`,`Comment (optional)`)}),(0,C.jsx)(Xe,{id:`resubmit-comment`,value:F,onChange:e=>I(e.target.value),rows:2,className:`mt-1`,placeholder:D(`resubmitPlaceholder`,`What did you change?`)})]}),(0,C.jsxs)(`div`,{className:`flex gap-2 flex-wrap`,children:[(0,C.jsx)(l,{asChild:!0,size:`sm`,variant:`outline`,children:(0,C.jsxs)(r,{to:mt(P),children:[(0,C.jsx)(Ee,{className:`h-4 w-4 mr-1`}),D(`editRecordBtn`,`Edit record`)]})}),(0,C.jsxs)(l,{size:`sm`,disabled:sn,onClick:()=>void Sn(),children:[(0,C.jsx)(re,{className:s(`h-4 w-4 mr-1`,sn&&`animate-spin`)}),sn?D(`resubmitting`,`Resubmitting…`):D(`resubmitBtn`,`Resubmit`)]}),(0,C.jsxs)(m,{children:[(0,C.jsx)(Ze,{asChild:!0,children:(0,C.jsxs)(l,{size:`sm`,variant:`outline`,disabled:sn,children:[(0,C.jsx)(se,{className:`h-4 w-4 mr-1`}),D(`recall`,`Recall`)]})}),(0,C.jsxs)(v,{children:[(0,C.jsxs)(c,{children:[(0,C.jsx)(o,{children:D(`abandonTitle`,`Abandon this revision?`)}),(0,C.jsx)(p,{children:D(`abandonBody`,`This withdraws the request instead of resubmitting it. The approval ends here.`)})]}),(0,C.jsxs)(_,{children:[(0,C.jsx)(h,{children:D(`cancel`,`Cancel`)}),(0,C.jsx)(d,{onClick:()=>_n(`recall`),children:D(`recall`,`Recall`)})]})]})]})]})]})]})]}):null]})})]})}export{mt as ApprovalsInboxPage};