@objectstack/console 10.2.0 → 10.3.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 (80) hide show
  1. package/dist/assets/{AdapterProvider-CJjaoZJR.js → AdapterProvider-BNg96rLB.js} +1 -1
  2. package/dist/assets/{AiPendingActionsPage-B4OLmiXS.js → AiPendingActionsPage-DX6zBTm5.js} +1 -1
  3. package/dist/assets/{ApiConsolePage-D9A9ewr3.js → ApiConsolePage-BV6fdN_d.js} +1 -1
  4. package/dist/assets/{AppDocsIndex-ChEbT5sV.js → AppDocsIndex-CFievvEN.js} +1 -1
  5. package/dist/assets/{AppManagementPage-DwyKF7UE.js → AppManagementPage-BwMda0Jw.js} +1 -1
  6. package/dist/assets/{ApprovalsInboxPage-Ca5Bb0JN.js → ApprovalsInboxPage-CLB_n_w1.js} +1 -1
  7. package/dist/assets/{AuditLogPage-BtNmxWyG.js → AuditLogPage-B5jAkCIM.js} +1 -1
  8. package/dist/assets/{ComponentNavView-naLkSvjF.js → ComponentNavView-BlIradDc.js} +1 -1
  9. package/dist/assets/ConsoleFloatingChatbot-Bn99Z39a.js +1 -0
  10. package/dist/assets/{DashboardView-Ccnc4ERO.js → DashboardView-BQ1jDkNk.js} +1 -1
  11. package/dist/assets/{DashboardWidgetInspector-DQvlAqdm.js → DashboardWidgetInspector-BR98NQH8.js} +1 -1
  12. package/dist/assets/{DeveloperHubPage-COHQrdbV.js → DeveloperHubPage-CQ2_nCOl.js} +1 -1
  13. package/dist/assets/{ExpressionProvider-C2XzKImE.js → ExpressionProvider-Tm4jr_3p.js} +1 -1
  14. package/dist/assets/{FlowRunsPage-DIO45X3A.js → FlowRunsPage-B179CDQR.js} +1 -1
  15. package/dist/assets/{IntegrationsPage-Bu6X6rLQ.js → IntegrationsPage-Ch5OmIKz.js} +1 -1
  16. package/dist/assets/{InterfaceListPage-Cfv6Lkis.js → InterfaceListPage-B5-dEiYQ.js} +1 -1
  17. package/dist/assets/{ManagedByBadge-DDil8sjK.js → ManagedByBadge-DdytxDlp.js} +1 -1
  18. package/dist/assets/{MarketplaceAccessDenied-C3bv4Vmg.js → MarketplaceAccessDenied-BRaR8_1a.js} +1 -1
  19. package/dist/assets/{MarketplaceInstalledPage-C-saIRJu.js → MarketplaceInstalledPage-BtW9YVL_.js} +1 -1
  20. package/dist/assets/{MarketplacePackagePage-CcpJSBrF.js → MarketplacePackagePage-CHWrggYQ.js} +1 -1
  21. package/dist/assets/{MarketplacePage-B0zIXkwO.js → MarketplacePage-D9egwY6W.js} +1 -1
  22. package/dist/assets/{MetadataInspector-D9KL7Kgi.js → MetadataInspector-Cx8ePTT_.js} +1 -1
  23. package/dist/assets/{MetadataProvider-BO_KcC86.js → MetadataProvider-QdHbK1P5.js} +1 -1
  24. package/dist/assets/PageView-Cz5sZQ5t.js +1 -0
  25. package/dist/assets/{ProfilePage-BXz0C-TJ.js → ProfilePage-COEmwLJ3.js} +1 -1
  26. package/dist/assets/{PublicFormsPage-D5-EASU8.js → PublicFormsPage-Dc2X36T6.js} +1 -1
  27. package/dist/assets/{RecordDetailView-ANMXqsUj.js → RecordDetailView-BgaxhKDF.js} +1 -1
  28. package/dist/assets/{RecordFormPage-BYeWa90w.js → RecordFormPage-Hs6Ml27g.js} +1 -1
  29. package/dist/assets/{ReportDefaultInspector-B6X1lhzs.js → ReportDefaultInspector-CoX9gMMh.js} +2 -2
  30. package/dist/assets/{ReportView-uPqsauzE.js → ReportView-BM3Ai6gG.js} +1 -1
  31. package/dist/assets/{SearchResultsPage-DraOSIqg.js → SearchResultsPage-CmNe7LEF.js} +1 -1
  32. package/dist/assets/{SettingsHub-CzOLpvoR.js → SettingsHub-E8tuZ4eC.js} +1 -1
  33. package/dist/assets/{SettingsView-BJnPeWpq.js → SettingsView-Zy-v0lBl.js} +1 -1
  34. package/dist/assets/{SystemHubPage-CeKubn-w.js → SystemHubPage-BAzCcy5f.js} +1 -1
  35. package/dist/assets/{data-adapter-QvY0S7Jg.js → data-adapter-dGnCpoPP.js} +1 -1
  36. package/dist/assets/{framework-CsYa1Kaj.js → framework-D5XqsLzE.js} +6 -5
  37. package/dist/assets/{highlighted-body-OFNGDK62-DH1qH6jn.js → highlighted-body-OFNGDK62-DQgrzYjA.js} +1 -1
  38. package/dist/assets/index-DOshzaoZ.css +2 -0
  39. package/dist/assets/index-DnQZFTk9.js +2 -0
  40. package/dist/assets/{infrastructure-BsIvKvpW.js → infrastructure-HR_Bc4bJ.js} +1 -1
  41. package/dist/assets/{marketplaceApi-DL8PegzV.js → marketplaceApi-BEwXWaVr.js} +1 -1
  42. package/dist/assets/mermaid-GHXKKRXX-BhYOzfYs.js +1 -0
  43. package/dist/assets/{metadata-admin--twLAcNF.js → metadata-admin-B-J5LjrF.js} +4 -4
  44. package/dist/assets/{plugin-calendar-HZM7PnuZ.js → plugin-calendar-BRaVMiNC.js} +1 -1
  45. package/dist/assets/plugin-charts-lC1nlc8y.js +7 -0
  46. package/dist/assets/plugin-chatbot-DiZuqXNz.js +120 -0
  47. package/dist/assets/plugin-dashboard-Bru0NpLD.js +6 -0
  48. package/dist/assets/{plugin-form-sm04IEZv.js → plugin-form-CnIr9O51.js} +1 -1
  49. package/dist/assets/{plugin-gantt-BAbv_iPP.js → plugin-gantt-DjNJ3XF1.js} +1 -1
  50. package/dist/assets/plugin-grid-CLR5UBO-.js +6 -0
  51. package/dist/assets/{plugin-kanban-CFOumo0N.js → plugin-kanban-C_oukMvw.js} +1 -1
  52. package/dist/assets/{plugin-map-DD4Y0TfP.js → plugin-map-7UTNE-o1.js} +1 -1
  53. package/dist/assets/{plugin-markdown-Fz2pgiZT.js → plugin-markdown-4BcL1bu0.js} +1 -1
  54. package/dist/assets/{plugin-report-DidhEKAB.js → plugin-report-DnFF3lpC.js} +1 -1
  55. package/dist/assets/{plugin-timeline-BEk5SlxQ.js → plugin-timeline-C2lZtCO1.js} +1 -1
  56. package/dist/assets/{plugin-tree-uFJca_YQ.js → plugin-tree-Ch_JGKmm.js} +1 -1
  57. package/dist/assets/{plugin-view-CDxJidrj.js → plugin-view-XyXvMY2E.js} +1 -1
  58. package/dist/assets/plugins-views-Ck67hsjt.js +4 -0
  59. package/dist/assets/{skeletons-DZWz9Ill.js → skeletons-B4Te484-.js} +1 -1
  60. package/dist/assets/{src-CpvBTq6C.js → src-Bw-Pk_Bz.js} +1 -1
  61. package/dist/assets/{src-ZyouQodC.js → src-DzwWvy9u.js} +2 -2
  62. package/dist/assets/{types-IRCvjK2K.js → types-aLjHZGFr.js} +1 -1
  63. package/dist/assets/ui-components-DiLX53DV.js +42 -0
  64. package/dist/assets/{ui-layout-BwKCXo1Z.js → ui-layout-s7dWTKAK.js} +1 -1
  65. package/dist/assets/{useActionModal-CYfSmVlP.js → useActionModal-DjfU9Nzh.js} +1 -1
  66. package/dist/assets/{useOpenRecordList-CwVRoKH4.js → useOpenRecordList-D2EZK86D.js} +1 -1
  67. package/dist/assets/{useReconcileOnError-BXVpquqp.js → useReconcileOnError-CGxw9vPi.js} +1 -1
  68. package/dist/index.html +4 -4
  69. package/package.json +1 -1
  70. package/dist/assets/ConsoleFloatingChatbot-1MfhDZaK.js +0 -1
  71. package/dist/assets/PageView-gzbH9RTq.js +0 -1
  72. package/dist/assets/index-Bx77jcFN.js +0 -4
  73. package/dist/assets/index-CYLGNLiD.css +0 -2
  74. package/dist/assets/mermaid-GHXKKRXX-DlOIGBXr.js +0 -1
  75. package/dist/assets/plugin-charts-CHVu5fbZ.js +0 -7
  76. package/dist/assets/plugin-chatbot-B25XBELF.js +0 -120
  77. package/dist/assets/plugin-dashboard-C8TbFk_D.js +0 -6
  78. package/dist/assets/plugin-grid-pjPmzTDb.js +0 -6
  79. package/dist/assets/plugins-views-BpKTWXXa.js +0 -4
  80. package/dist/assets/ui-components-DXl7VfQF.js +0 -42
@@ -1 +1 @@
1
- import{o as e}from"./rolldown-runtime-CMxvf4Kt.js";import{_ as t,l as n,r,t as i}from"./vendor-react-ClIa1CJA.js";import{As as a,Ct as o,Do as s,Et as c,Gn as l,Ji as u,Kn as d,Nt as f,St as p,Tt as m,Wn as h,Z as g,_t as _,co as v,er as y,qi as b,ri as x,vc as S,vt as C,wt as w,xt as T,yt as ee,zt as te}from"./ui-components-DXl7VfQF.js";import{_ as E,c as D,d as O,g as k,h as A,n as j,o as M,p as N,s as P,t as F,u as I}from"./vendor-dndkit-CJ-mJJuO.js";var L=e(t(),1),R=i();function z(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 B(e){let t=z(e);return t?`${Math.round(t.h)} ${Math.round(t.s)}% ${Math.round(t.l)}%`:null}function V(e){let t=z(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 H(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 U(e,t){(0,L.useEffect)(()=>{let n=document.documentElement,r=()=>n.classList.contains(`dark`),i=()=>{if(e?.primaryColor){let t=B(e.primaryColor),i=V(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%`:H(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=B(e.accentColor),i=V(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%`:H(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 W({sidebar:e,navbar:t,children:n,className:r,defaultOpen:i=!0,branding:a}){return U(a,a?.title),(0,R.jsxs)(c,{defaultOpen:i,className:`!flex-col h-svh overflow-hidden`,children:[(0,R.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,R.jsxs)(`div`,{className:`flex flex-1 min-h-0 w-full`,children:[e,(0,R.jsx)(T,{className:`min-w-0`,children:(0,R.jsx)(`main`,{className:S(`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 G(e){return e?g(e):s}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,R.jsx)(`div`,{ref:v,style:{transform:E.Transform.toString(y),transition:b,opacity:x?.5:void 0,zIndex:x?10:void 0},...g,children:(0,R.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:s,checkCap:c,onAction:g,enablePinning:x,onPinToggle:T,dragListeners:E,resolveObjectLabel:D,resolveDashboardLabel:O,resolveGroupLabel:k,resolveViewLabel:A,resolveItemLabel:j,t:M,templateContext:N}){let P=n(),F=f(),I=F?`min-h-[44px] text-[15px] gap-3 rounded-xl`:void 0,z=S(`shrink-0`,F?`h-5 w-5`:`h-4 w-4`),B=(()=>{let t=e.expanded;if(typeof t==`boolean`)return t;if(typeof e.defaultOpen==`boolean`)return e.defaultOpen})(),V=e.type===`group`?e.children?.length??0:0,[H,U]=(0,L.useState)(L.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,N);if(ae(r,e,P.pathname))return!0}return!1};return n(e.children)},[e,t,P.pathname])?!0:B??!(V>=8));if(!i(e.visible)||e.requiredPermissions?.length&&!s(e.requiredPermissions))return null;let W=e.requiresObject,q=e.requiresService;if(W&&!c(`object`,W)||q&&!c(`service`,q))return null;if(e.type===`separator`)return(0,R.jsx)(te,{className:`my-2`});if(e.type===`group`){let n=(e.children??[]).slice().sort((e,t)=>(e.order??0)-(t.order??0)),r=ne(e,D,M,O,k,A,j);return(0,R.jsx)(h,{open:H,onOpenChange:U,children:(0,R.jsxs)(_,{children:[(0,R.jsx)(ee,{asChild:!0,children:(0,R.jsxs)(d,{className:S(`flex w-full items-center justify-between`,F&&`min-h-[44px] text-[15px] rounded-xl`),children:[r,(0,R.jsx)(a,{className:S(`ml-auto transition-transform`,F?`h-5 w-5`:`h-4 w-4`,H&&`rotate-90`)})]})}),(0,R.jsx)(l,{children:(0,R.jsx)(C,{children:(0,R.jsx)(p,{children:n.map(e=>(0,R.jsx)($,{item:e,basePath:t,evalVis:i,checkPerm:s,checkCap:c,onAction:g,enablePinning:x,onPinToggle:T,resolveObjectLabel:D,resolveDashboardLabel:O,resolveGroupLabel:k,resolveViewLabel:A,resolveItemLabel:j,t:M,templateContext:N},e.id))})})})]})})}if(e.type===`action`){let n=G(e.icon),r=K(e.label,M);return(0,R.jsxs)(m,{children:[E&&(0,R.jsx)(`span`,{className:`absolute left-0.5 top-1/2 -translate-y-1/2 cursor-grab text-muted-foreground`,"aria-label":M?M(`console.nav.dragToReorder`,{defaultValue:`Drag to reorder`}):`Drag to reorder`,...E,children:(0,R.jsx)(v,{className:`h-3.5 w-3.5`})}),(0,R.jsxs)(w,{tooltip:r,onClick:()=>g?.(e),className:I,children:[(0,R.jsx)(n,{className:z}),(0,R.jsx)(`span`,{children:r}),e.badge!=null&&(0,R.jsx)(y,{variant:e.badgeVariant??`default`,className:`ml-auto text-[10px] px-1.5 py-0`,children:e.badge})]}),x&&T&&(0,R.jsx)(o,{showOnHover:!0,onClick:()=>T(e.id,!e.pinned,e,t),"aria-label":M?M(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,R.jsx)(b,{className:`h-3.5 w-3.5`}):(0,R.jsx)(u,{className:`h-3.5 w-3.5`})})]})}let re=G(e.icon),{href:J,external:ie}=X(e,t,N),Y=ae(e,J,P.pathname),Z=ne(e,D,M,O,k,A,j),Q=(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(re,{className:z}),(0,R.jsx)(`span`,{children:Z}),e.badge!=null&&(0,R.jsx)(y,{variant:e.badgeVariant??`default`,className:`ml-auto text-[10px] px-1.5 py-0`,children:e.badge})]});return(0,R.jsxs)(m,{children:[E&&(0,R.jsx)(`span`,{className:`absolute left-0.5 top-1/2 -translate-y-1/2 cursor-grab text-muted-foreground`,"aria-label":M?M(`console.nav.dragToReorder`,{defaultValue:`Drag to reorder`}):`Drag to reorder`,...E,children:(0,R.jsx)(v,{className:`h-3.5 w-3.5`})}),(0,R.jsx)(w,{asChild:!0,isActive:Y,tooltip:Z,className:I,children:ie?(0,R.jsx)(`a`,{href:J,target:`_blank`,rel:`noopener noreferrer`,children:Q}):(0,R.jsx)(r,{to:J,children:Q})}),x&&T&&(0,R.jsx)(o,{showOnHover:!0,onClick:()=>T(e.id,!e.pinned,e,t),"aria-label":M?M(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,R.jsx)(b,{className:`h-3.5 w-3.5`}):(0,R.jsx)(u,{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:l,onReorder:u,resolveObjectLabel:d,resolveDashboardLabel:f,resolveGroupLabel:m,resolveViewLabel:h,resolveItemLabel:g,t:v,templateContext:y}){let b=(0,L.useMemo)(()=>o?Z(e,o):e,[e,o]),S=(0,L.useMemo)(()=>ce(b),[b]),w=b.slice().sort((e,t)=>(e.order??0)-(t.order??0)),T=k(A(O,{activationConstraint:{distance:Q}}),A(I)),te=e=>{let{active:t,over:n}=e;if(!n||t.id===n.id||!u)return;let r=w.findIndex(e=>e.id===t.id),i=w.findIndex(e=>e.id===n.id);r===-1||i===-1||u(j(w,r,i).map((e,t)=>({...e,order:t})))},E={basePath:t,evalVis:n,checkPerm:r,checkCap:i,onAction:a,enablePinning:s,onPinToggle:c,resolveObjectLabel:d,resolveDashboardLabel:f,resolveGroupLabel:m,resolveViewLabel:h,resolveItemLabel:g,t:v,templateContext:y},M=w.some(e=>e.type===`group`),z=S.length>0&&s?(0,R.jsxs)(_,{children:[(0,R.jsxs)(ee,{className:`flex items-center gap-1.5`,children:[(0,R.jsx)(x,{className:`h-3.5 w-3.5`}),v?v(`console.nav.favorites`,{defaultValue:`Favorites`}):`Favorites`]}),(0,R.jsx)(C,{children:(0,R.jsx)(p,{children:S.map(e=>(0,R.jsx)($,{item:e,...E},`fav-${e.id}`))})})]}):null;if(!M){let e=w.filter(e=>e.type!==`group`).map(e=>e.id);return(0,R.jsxs)(R.Fragment,{children:[z,(0,R.jsx)(_,{children:(0,R.jsx)(C,{children:l?(0,R.jsx)(D,{sensors:T,collisionDetection:N,onDragEnd:te,children:(0,R.jsx)(F,{items:e,strategy:P,children:(0,R.jsx)(p,{children:w.map(e=>(0,R.jsx)(oe,{item:e,enableReorder:l,...E},e.id))})})}):(0,R.jsx)(p,{children:w.map(e=>(0,R.jsx)($,{item:e,...E},e.id))})})})]})}let B=[],V=[],H=e=>{if(V.length===0)return;let t=V;V=[],B.push((0,R.jsx)(_,{children:(0,R.jsx)(C,{children:(0,R.jsx)(p,{children:t.map(e=>(0,R.jsx)($,{item:e,...E},e.id))})})},e))};return w.forEach((e,t)=>{e.type===`group`?(H(`leaf-${t}`),B.push((0,R.jsx)($,{item:e,...E},e.id))):V.push(e)}),H(`leaf-end`),(0,R.jsxs)(R.Fragment,{children:[z,B]})}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,W as r,se as t};
1
+ import{o as e}from"./rolldown-runtime-CMxvf4Kt.js";import{_ as t,l as n,r,t as i}from"./vendor-react-ClIa1CJA.js";import{As as a,Ct as o,Do as s,Et as c,Gn as l,Ji as u,Kn as d,Nt as f,St as p,Tt as m,Wn as h,Z as g,_t as _,co as v,er as y,qi as b,ri as x,vc as S,vt as C,wt as w,xt as T,yt as ee,zt as te}from"./ui-components-DiLX53DV.js";import{_ as E,c as D,d as O,g as k,h as A,n as j,o as M,p as N,s as P,t as F,u as I}from"./vendor-dndkit-CJ-mJJuO.js";var L=e(t(),1),R=i();function z(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 B(e){let t=z(e);return t?`${Math.round(t.h)} ${Math.round(t.s)}% ${Math.round(t.l)}%`:null}function V(e){let t=z(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 H(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 U(e,t){(0,L.useEffect)(()=>{let n=document.documentElement,r=()=>n.classList.contains(`dark`),i=()=>{if(e?.primaryColor){let t=B(e.primaryColor),i=V(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%`:H(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=B(e.accentColor),i=V(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%`:H(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 W({sidebar:e,navbar:t,children:n,className:r,defaultOpen:i=!0,branding:a}){return U(a,a?.title),(0,R.jsxs)(c,{defaultOpen:i,className:`!flex-col h-svh overflow-hidden`,children:[(0,R.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,R.jsxs)(`div`,{className:`flex flex-1 min-h-0 w-full`,children:[e,(0,R.jsx)(T,{className:`min-w-0`,children:(0,R.jsx)(`main`,{className:S(`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 G(e){return e?g(e):s}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,R.jsx)(`div`,{ref:v,style:{transform:E.Transform.toString(y),transition:b,opacity:x?.5:void 0,zIndex:x?10:void 0},...g,children:(0,R.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:s,checkCap:c,onAction:g,enablePinning:x,onPinToggle:T,dragListeners:E,resolveObjectLabel:D,resolveDashboardLabel:O,resolveGroupLabel:k,resolveViewLabel:A,resolveItemLabel:j,t:M,templateContext:N}){let P=n(),F=f(),I=F?`min-h-[44px] text-[15px] gap-3 rounded-xl`:void 0,z=S(`shrink-0`,F?`h-5 w-5`:`h-4 w-4`),B=(()=>{let t=e.expanded;if(typeof t==`boolean`)return t;if(typeof e.defaultOpen==`boolean`)return e.defaultOpen})(),V=e.type===`group`?e.children?.length??0:0,[H,U]=(0,L.useState)(L.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,N);if(ae(r,e,P.pathname))return!0}return!1};return n(e.children)},[e,t,P.pathname])?!0:B??!(V>=8));if(!i(e.visible)||e.requiredPermissions?.length&&!s(e.requiredPermissions))return null;let W=e.requiresObject,q=e.requiresService;if(W&&!c(`object`,W)||q&&!c(`service`,q))return null;if(e.type===`separator`)return(0,R.jsx)(te,{className:`my-2`});if(e.type===`group`){let n=(e.children??[]).slice().sort((e,t)=>(e.order??0)-(t.order??0)),r=ne(e,D,M,O,k,A,j);return(0,R.jsx)(h,{open:H,onOpenChange:U,children:(0,R.jsxs)(_,{children:[(0,R.jsx)(ee,{asChild:!0,children:(0,R.jsxs)(d,{className:S(`flex w-full items-center justify-between`,F&&`min-h-[44px] text-[15px] rounded-xl`),children:[r,(0,R.jsx)(a,{className:S(`ml-auto transition-transform`,F?`h-5 w-5`:`h-4 w-4`,H&&`rotate-90`)})]})}),(0,R.jsx)(l,{children:(0,R.jsx)(C,{children:(0,R.jsx)(p,{children:n.map(e=>(0,R.jsx)($,{item:e,basePath:t,evalVis:i,checkPerm:s,checkCap:c,onAction:g,enablePinning:x,onPinToggle:T,resolveObjectLabel:D,resolveDashboardLabel:O,resolveGroupLabel:k,resolveViewLabel:A,resolveItemLabel:j,t:M,templateContext:N},e.id))})})})]})})}if(e.type===`action`){let n=G(e.icon),r=K(e.label,M);return(0,R.jsxs)(m,{children:[E&&(0,R.jsx)(`span`,{className:`absolute left-0.5 top-1/2 -translate-y-1/2 cursor-grab text-muted-foreground`,"aria-label":M?M(`console.nav.dragToReorder`,{defaultValue:`Drag to reorder`}):`Drag to reorder`,...E,children:(0,R.jsx)(v,{className:`h-3.5 w-3.5`})}),(0,R.jsxs)(w,{tooltip:r,onClick:()=>g?.(e),className:I,children:[(0,R.jsx)(n,{className:z}),(0,R.jsx)(`span`,{children:r}),e.badge!=null&&(0,R.jsx)(y,{variant:e.badgeVariant??`default`,className:`ml-auto text-[10px] px-1.5 py-0`,children:e.badge})]}),x&&T&&(0,R.jsx)(o,{showOnHover:!0,onClick:()=>T(e.id,!e.pinned,e,t),"aria-label":M?M(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,R.jsx)(b,{className:`h-3.5 w-3.5`}):(0,R.jsx)(u,{className:`h-3.5 w-3.5`})})]})}let re=G(e.icon),{href:J,external:ie}=X(e,t,N),Y=ae(e,J,P.pathname),Z=ne(e,D,M,O,k,A,j),Q=(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(re,{className:z}),(0,R.jsx)(`span`,{children:Z}),e.badge!=null&&(0,R.jsx)(y,{variant:e.badgeVariant??`default`,className:`ml-auto text-[10px] px-1.5 py-0`,children:e.badge})]});return(0,R.jsxs)(m,{children:[E&&(0,R.jsx)(`span`,{className:`absolute left-0.5 top-1/2 -translate-y-1/2 cursor-grab text-muted-foreground`,"aria-label":M?M(`console.nav.dragToReorder`,{defaultValue:`Drag to reorder`}):`Drag to reorder`,...E,children:(0,R.jsx)(v,{className:`h-3.5 w-3.5`})}),(0,R.jsx)(w,{asChild:!0,isActive:Y,tooltip:Z,className:I,children:ie?(0,R.jsx)(`a`,{href:J,target:`_blank`,rel:`noopener noreferrer`,children:Q}):(0,R.jsx)(r,{to:J,children:Q})}),x&&T&&(0,R.jsx)(o,{showOnHover:!0,onClick:()=>T(e.id,!e.pinned,e,t),"aria-label":M?M(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,R.jsx)(b,{className:`h-3.5 w-3.5`}):(0,R.jsx)(u,{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:l,onReorder:u,resolveObjectLabel:d,resolveDashboardLabel:f,resolveGroupLabel:m,resolveViewLabel:h,resolveItemLabel:g,t:v,templateContext:y}){let b=(0,L.useMemo)(()=>o?Z(e,o):e,[e,o]),S=(0,L.useMemo)(()=>ce(b),[b]),w=b.slice().sort((e,t)=>(e.order??0)-(t.order??0)),T=k(A(O,{activationConstraint:{distance:Q}}),A(I)),te=e=>{let{active:t,over:n}=e;if(!n||t.id===n.id||!u)return;let r=w.findIndex(e=>e.id===t.id),i=w.findIndex(e=>e.id===n.id);r===-1||i===-1||u(j(w,r,i).map((e,t)=>({...e,order:t})))},E={basePath:t,evalVis:n,checkPerm:r,checkCap:i,onAction:a,enablePinning:s,onPinToggle:c,resolveObjectLabel:d,resolveDashboardLabel:f,resolveGroupLabel:m,resolveViewLabel:h,resolveItemLabel:g,t:v,templateContext:y},M=w.some(e=>e.type===`group`),z=S.length>0&&s?(0,R.jsxs)(_,{children:[(0,R.jsxs)(ee,{className:`flex items-center gap-1.5`,children:[(0,R.jsx)(x,{className:`h-3.5 w-3.5`}),v?v(`console.nav.favorites`,{defaultValue:`Favorites`}):`Favorites`]}),(0,R.jsx)(C,{children:(0,R.jsx)(p,{children:S.map(e=>(0,R.jsx)($,{item:e,...E},`fav-${e.id}`))})})]}):null;if(!M){let e=w.filter(e=>e.type!==`group`).map(e=>e.id);return(0,R.jsxs)(R.Fragment,{children:[z,(0,R.jsx)(_,{children:(0,R.jsx)(C,{children:l?(0,R.jsx)(D,{sensors:T,collisionDetection:N,onDragEnd:te,children:(0,R.jsx)(F,{items:e,strategy:P,children:(0,R.jsx)(p,{children:w.map(e=>(0,R.jsx)(oe,{item:e,enableReorder:l,...E},e.id))})})}):(0,R.jsx)(p,{children:w.map(e=>(0,R.jsx)($,{item:e,...E},e.id))})})})]})}let B=[],V=[],H=e=>{if(V.length===0)return;let t=V;V=[],B.push((0,R.jsx)(_,{children:(0,R.jsx)(C,{children:(0,R.jsx)(p,{children:t.map(e=>(0,R.jsx)($,{item:e,...E},e.id))})})},e))};return w.forEach((e,t)=>{e.type===`group`?(H(`leaf-${t}`),B.push((0,R.jsx)($,{item:e,...E},e.id))):V.push(e)}),H(`leaf-end`),(0,R.jsxs)(R.Fragment,{children:[z,B]})}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,W as r,se as t};
@@ -1 +1 @@
1
- import{o as e}from"./rolldown-runtime-CMxvf4Kt.js";import{_ as t,t as n}from"./vendor-react-ClIa1CJA.js";import{f as r}from"./infrastructure-BsIvKvpW.js";import{H as i}from"./framework-CsYa1Kaj.js";import{Bn as a,Ft as o,Hn as s,It as c,Lt as l,Pt as u,Rn as d,Rt as f,Un as p,_n as m,bn as h,gr as g,vc as _,vn as v,xn as y,yn as b,zn as x}from"./ui-components-DXl7VfQF.js";import{n as S}from"./plugin-form-sm04IEZv.js";var C=e(t(),1),w=n(),T=(0,C.createContext)({favorites:null,recent:null}),E=(0,C.createContext)(null);function D({children:e}){let[t,n]=(0,C.useState)({favorites:null,recent:null}),r=(0,C.useRef)({attach:(e,t)=>{n(n=>n[e]===t?n:{...n,[e]:t})}});return(0,w.jsx)(E.Provider,{value:r.current,children:(0,w.jsx)(T.Provider,{value:t,children:e})})}function O(e){return(0,C.useContext)(T)[e]}function k(){let e=(0,C.useContext)(E);return(0,C.useCallback)((t,n)=>{e?.attach(t,n)},[e])}function A(e,t){return t?`${e}:u:${t}`:e}function j(e,t){let n=(0,C.useRef)(t);n.current=t,(0,C.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 M(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 N=`objectui-recent-items`,P=8;function F(e){try{let t=localStorage.getItem(A(N,e));return t?JSON.parse(t):[]}catch{return[]}}function I(e,t){try{localStorage.setItem(A(N,t),JSON.stringify(e))}catch{}}var L=(0,C.createContext)(null);function R({children:e}){let{user:t}=r(),n=t?.id??null,i=O(`recent`),[a,o]=(0,C.useState)(()=>F(n));(0,C.useEffect)(()=>{o(F(n))},[n]),j(A(N,n),e=>{o(Array.isArray(e)?e.filter(e=>e&&typeof e.id==`string`).slice(0,P):[])});let s=(0,C.useRef)(0);(0,C.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,P);o(a),I(a,n)}catch{}})(),()=>{t=!0}},[i,n]);let c=(0,C.useMemo)(()=>M(async e=>{i&&await i.save(e)},500),[i]);(0,C.useEffect)(()=>()=>{c.flush()},[c]);let l=(0,C.useCallback)(e=>{I(e,n),i&&c.schedule(e)},[n,i,c]),u=(0,C.useCallback)(e=>{o(t=>{let n=t.filter(t=>t.id!==e.id),r=[{...e,visitedAt:new Date().toISOString()},...n].slice(0,P);return l(r),r})},[l]),d=(0,C.useCallback)(()=>{o([]),l([])},[l]),f=(0,C.useMemo)(()=>({recentItems:a,addRecentItem:u,clearRecentItems:d}),[a,u,d]);return(0,w.jsx)(L.Provider,{value:f,children:e})}function z(){return(0,C.useContext)(L)||{recentItems:[],addRecentItem:()=>{},clearRecentItems:()=>{}}}var B=`objectui-favorites`,V=`objectui-nav-pins`,H=20,U=20;function W(e){let t=0,n=0,r=!1;for(let i of e)i.type===`nav`?(n++,n>U&&(r=!0)):(t++,t>H&&(r=!0));if(!r)return e;let i=[],a=0,o=0;for(let t of e)t.type===`nav`?o<U&&(i.push(t),o++):a<H&&(i.push(t),a++);return i}function G(e){try{let t=localStorage.getItem(A(B,e));return t?JSON.parse(t):[]}catch{return[]}}function K(e,t){try{localStorage.setItem(A(B,t),JSON.stringify(e))}catch{}}function q(e){let t;try{t=localStorage.getItem(V)}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(V)}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 J=(0,C.createContext)(null);function Y({children:e}){let{user:t}=r(),n=t?.id??null,i=O(`favorites`),[a,o]=(0,C.useState)(()=>G(n));(0,C.useEffect)(()=>{o(G(n))},[n]),j(A(B,n),e=>{o(Array.isArray(e)?W(e.filter(e=>e&&typeof e.id==`string`)):[])});let s=(0,C.useRef)(0);(0,C.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=W((Array.isArray(r)?r:[]).filter(e=>e&&typeof e.id==`string`)),l=G(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=W([...a,...d]),p=!0);let{migrated:m,didMigrate:h}=q(f);h&&(f=W(m),p=!0),o(f),K(f,n),p&&c.schedule(f)}catch{}})(),()=>{t=!0}},[i,n]),(0,C.useEffect)(()=>{i||o(e=>{let{migrated:t,didMigrate:r}=q(e);if(!r)return e;let i=W(t);return K(i,n),i})},[i,n]);let c=(0,C.useMemo)(()=>M(async e=>{i&&await i.save(e)},500),[i]);(0,C.useEffect)(()=>()=>{c.flush()},[c]);let l=(0,C.useCallback)(e=>{K(e,n),i&&c.schedule(e)},[n,i,c]),u=(0,C.useCallback)(e=>{o(t=>{if(t.some(t=>t.id===e.id))return t;let n=W([{...e,favoritedAt:new Date().toISOString()},...t]);return l(n),n})},[l]),d=(0,C.useCallback)(e=>{o(t=>{let n=t.filter(t=>t.id!==e);return l(n),n})},[l]),f=(0,C.useCallback)(e=>{o(t=>{let n=t.some(t=>t.id===e.id)?t.filter(t=>t.id!==e.id):W([{...e,favoritedAt:new Date().toISOString()},...t]);return l(n),n})},[l]),p=(0,C.useCallback)(()=>{o([]),l([])},[l]),m=(0,C.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,C.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,C.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,w.jsx)(J.Provider,{value:g,children:e})}function X(){return(0,C.useContext)(J)||{favorites:[],addFavorite:()=>{},removeFavorite:()=>{},toggleFavorite:()=>{},isFavorite:()=>!1,clearFavorites:()=>{},refreshLabel:()=>{},setPinned:()=>{},isPinned:()=>!1,pinnedNavIds:new Set}}function Z(){return`${``.replace(/\/$/,``)}/api/v1`}async function Q(e,t){let n=await fetch(`${Z()}${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 $(e,t,n){let[r,i]=(0,C.useState)(!1),[a,o]=(0,C.useState)(!0),[s,c]=(0,C.useState)([]),l=(0,C.useRef)(!1),u=(0,C.useCallback)(async()=>{if(!(!e||!t)&&!l.current){i(!0);try{c((await Q(`/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,C.useEffect)(()=>{if(!e||!t){c([]);return}u()},[e,t,u]);let d=(0,C.useMemo)(()=>s.find(e=>e.status===`pending`)??null,[s]),f=(0,C.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,C.useCallback)(async(e,t)=>{if(!d)throw Error(`No pending request`);let r=await Q(`/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,C.useCallback)(e=>m(`approve`,e),[m]),reject:(0,C.useCallback)(e=>m(`reject`,e),[m]),refresh:u}}var ee={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`},te={lg:`sm:max-w-2xl`,xl:`sm:max-w-3xl`,full:`sm:max-w-[95vw]`};function ne(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 re(e){let[t,n]=(0,C.useState)(null),r=(0,C.useCallback)(e=>{n(t=>(t?.resolve(e),null))},[]),T=(0,C.useCallback)(e=>new Promise(t=>{n({d:ne(e),resolve:t})}),[]),E=null;if(t){let n=t.d,C=e=>{e||r({success:!1})};if(n.objectName&&!n.content)E=(0,w.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,modalSize:n.size,open:!0,onOpenChange:C,onSuccess:e=>r({success:!0,reload:!0,data:e}),onCancel:()=>r({success:!1}),showSubmit:!0,showCancel:!0},dataSource:e});else{let e=n.placement||`center`,t=n.content?(0,w.jsx)(i,{schema:n.content}):n.description?(0,w.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:n.description}):null;E=e===`side`?(0,w.jsx)(u,{open:!0,onOpenChange:C,children:(0,w.jsxs)(o,{side:n.side||`right`,className:_(`w-full overflow-y-auto`,te[n.size||`default`]),children:[n.title&&(0,w.jsxs)(l,{children:[(0,w.jsx)(f,{children:n.title}),n.description&&(0,w.jsx)(c,{children:n.description})]}),(0,w.jsx)(`div`,{className:`py-3`,children:t})]})}):e===`bottom`?(0,w.jsx)(m,{open:!0,onOpenChange:C,children:(0,w.jsxs)(v,{children:[n.title&&(0,w.jsxs)(h,{children:[(0,w.jsx)(y,{children:n.title}),n.description&&(0,w.jsx)(b,{children:n.description})]}),(0,w.jsx)(`div`,{className:`max-h-[75vh] overflow-y-auto px-4 pb-6`,children:t})]})}):(0,w.jsx)(d,{open:!0,onOpenChange:C,children:(0,w.jsxs)(x,{className:_(e===`fullscreen`?`h-[95vh] w-full max-w-[98vw] overflow-y-auto`:ee[n.size||`default`]),children:[n.title&&(0,w.jsxs)(s,{children:[(0,w.jsx)(p,{children:n.title}),n.description&&(0,w.jsx)(a,{children:n.description})]}),(0,w.jsx)(`div`,{children:t}),!n.content&&(0,w.jsx)(`div`,{className:`flex justify-end`,children:(0,w.jsx)(g,{onClick:()=>r({success:!0}),children:`OK`})})]})})}}return{modalHandler:T,modalElement:E,closeModal:r}}export{R as a,k as c,X as i,$ as n,z as o,Y as r,D as s,re as t};
1
+ import{o as e}from"./rolldown-runtime-CMxvf4Kt.js";import{_ as t,t as n}from"./vendor-react-ClIa1CJA.js";import{f as r}from"./infrastructure-HR_Bc4bJ.js";import{H as i}from"./framework-D5XqsLzE.js";import{Bn as a,Ft as o,Hn as s,It as c,Lt as l,Pt as u,Rn as d,Rt as f,Un as p,_n as m,bn as h,gr as g,vc as _,vn as v,xn as y,yn as b,zn as x}from"./ui-components-DiLX53DV.js";import{n as S}from"./plugin-form-CnIr9O51.js";var C=e(t(),1),w=n(),T=(0,C.createContext)({favorites:null,recent:null}),E=(0,C.createContext)(null);function D({children:e}){let[t,n]=(0,C.useState)({favorites:null,recent:null}),r=(0,C.useRef)({attach:(e,t)=>{n(n=>n[e]===t?n:{...n,[e]:t})}});return(0,w.jsx)(E.Provider,{value:r.current,children:(0,w.jsx)(T.Provider,{value:t,children:e})})}function O(e){return(0,C.useContext)(T)[e]}function k(){let e=(0,C.useContext)(E);return(0,C.useCallback)((t,n)=>{e?.attach(t,n)},[e])}function A(e,t){return t?`${e}:u:${t}`:e}function j(e,t){let n=(0,C.useRef)(t);n.current=t,(0,C.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 M(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 N=`objectui-recent-items`,P=8;function F(e){try{let t=localStorage.getItem(A(N,e));return t?JSON.parse(t):[]}catch{return[]}}function I(e,t){try{localStorage.setItem(A(N,t),JSON.stringify(e))}catch{}}var L=(0,C.createContext)(null);function R({children:e}){let{user:t}=r(),n=t?.id??null,i=O(`recent`),[a,o]=(0,C.useState)(()=>F(n));(0,C.useEffect)(()=>{o(F(n))},[n]),j(A(N,n),e=>{o(Array.isArray(e)?e.filter(e=>e&&typeof e.id==`string`).slice(0,P):[])});let s=(0,C.useRef)(0);(0,C.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,P);o(a),I(a,n)}catch{}})(),()=>{t=!0}},[i,n]);let c=(0,C.useMemo)(()=>M(async e=>{i&&await i.save(e)},500),[i]);(0,C.useEffect)(()=>()=>{c.flush()},[c]);let l=(0,C.useCallback)(e=>{I(e,n),i&&c.schedule(e)},[n,i,c]),u=(0,C.useCallback)(e=>{o(t=>{let n=t.filter(t=>t.id!==e.id),r=[{...e,visitedAt:new Date().toISOString()},...n].slice(0,P);return l(r),r})},[l]),d=(0,C.useCallback)(()=>{o([]),l([])},[l]),f=(0,C.useMemo)(()=>({recentItems:a,addRecentItem:u,clearRecentItems:d}),[a,u,d]);return(0,w.jsx)(L.Provider,{value:f,children:e})}function z(){return(0,C.useContext)(L)||{recentItems:[],addRecentItem:()=>{},clearRecentItems:()=>{}}}var B=`objectui-favorites`,V=`objectui-nav-pins`,H=20,U=20;function W(e){let t=0,n=0,r=!1;for(let i of e)i.type===`nav`?(n++,n>U&&(r=!0)):(t++,t>H&&(r=!0));if(!r)return e;let i=[],a=0,o=0;for(let t of e)t.type===`nav`?o<U&&(i.push(t),o++):a<H&&(i.push(t),a++);return i}function G(e){try{let t=localStorage.getItem(A(B,e));return t?JSON.parse(t):[]}catch{return[]}}function K(e,t){try{localStorage.setItem(A(B,t),JSON.stringify(e))}catch{}}function q(e){let t;try{t=localStorage.getItem(V)}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(V)}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 J=(0,C.createContext)(null);function Y({children:e}){let{user:t}=r(),n=t?.id??null,i=O(`favorites`),[a,o]=(0,C.useState)(()=>G(n));(0,C.useEffect)(()=>{o(G(n))},[n]),j(A(B,n),e=>{o(Array.isArray(e)?W(e.filter(e=>e&&typeof e.id==`string`)):[])});let s=(0,C.useRef)(0);(0,C.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=W((Array.isArray(r)?r:[]).filter(e=>e&&typeof e.id==`string`)),l=G(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=W([...a,...d]),p=!0);let{migrated:m,didMigrate:h}=q(f);h&&(f=W(m),p=!0),o(f),K(f,n),p&&c.schedule(f)}catch{}})(),()=>{t=!0}},[i,n]),(0,C.useEffect)(()=>{i||o(e=>{let{migrated:t,didMigrate:r}=q(e);if(!r)return e;let i=W(t);return K(i,n),i})},[i,n]);let c=(0,C.useMemo)(()=>M(async e=>{i&&await i.save(e)},500),[i]);(0,C.useEffect)(()=>()=>{c.flush()},[c]);let l=(0,C.useCallback)(e=>{K(e,n),i&&c.schedule(e)},[n,i,c]),u=(0,C.useCallback)(e=>{o(t=>{if(t.some(t=>t.id===e.id))return t;let n=W([{...e,favoritedAt:new Date().toISOString()},...t]);return l(n),n})},[l]),d=(0,C.useCallback)(e=>{o(t=>{let n=t.filter(t=>t.id!==e);return l(n),n})},[l]),f=(0,C.useCallback)(e=>{o(t=>{let n=t.some(t=>t.id===e.id)?t.filter(t=>t.id!==e.id):W([{...e,favoritedAt:new Date().toISOString()},...t]);return l(n),n})},[l]),p=(0,C.useCallback)(()=>{o([]),l([])},[l]),m=(0,C.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,C.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,C.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,w.jsx)(J.Provider,{value:g,children:e})}function X(){return(0,C.useContext)(J)||{favorites:[],addFavorite:()=>{},removeFavorite:()=>{},toggleFavorite:()=>{},isFavorite:()=>!1,clearFavorites:()=>{},refreshLabel:()=>{},setPinned:()=>{},isPinned:()=>!1,pinnedNavIds:new Set}}function Z(){return`${``.replace(/\/$/,``)}/api/v1`}async function Q(e,t){let n=await fetch(`${Z()}${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 $(e,t,n){let[r,i]=(0,C.useState)(!1),[a,o]=(0,C.useState)(!0),[s,c]=(0,C.useState)([]),l=(0,C.useRef)(!1),u=(0,C.useCallback)(async()=>{if(!(!e||!t)&&!l.current){i(!0);try{c((await Q(`/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,C.useEffect)(()=>{if(!e||!t){c([]);return}u()},[e,t,u]);let d=(0,C.useMemo)(()=>s.find(e=>e.status===`pending`)??null,[s]),f=(0,C.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,C.useCallback)(async(e,t)=>{if(!d)throw Error(`No pending request`);let r=await Q(`/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,C.useCallback)(e=>m(`approve`,e),[m]),reject:(0,C.useCallback)(e=>m(`reject`,e),[m]),refresh:u}}var ee={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`},te={lg:`sm:max-w-2xl`,xl:`sm:max-w-3xl`,full:`sm:max-w-[95vw]`};function ne(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 re(e){let[t,n]=(0,C.useState)(null),r=(0,C.useCallback)(e=>{n(t=>(t?.resolve(e),null))},[]),T=(0,C.useCallback)(e=>new Promise(t=>{n({d:ne(e),resolve:t})}),[]),E=null;if(t){let n=t.d,C=e=>{e||r({success:!1})};if(n.objectName&&!n.content)E=(0,w.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,modalSize:n.size,open:!0,onOpenChange:C,onSuccess:e=>r({success:!0,reload:!0,data:e}),onCancel:()=>r({success:!1}),showSubmit:!0,showCancel:!0},dataSource:e});else{let e=n.placement||`center`,t=n.content?(0,w.jsx)(i,{schema:n.content}):n.description?(0,w.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:n.description}):null;E=e===`side`?(0,w.jsx)(u,{open:!0,onOpenChange:C,children:(0,w.jsxs)(o,{side:n.side||`right`,className:_(`w-full overflow-y-auto`,te[n.size||`default`]),children:[n.title&&(0,w.jsxs)(l,{children:[(0,w.jsx)(f,{children:n.title}),n.description&&(0,w.jsx)(c,{children:n.description})]}),(0,w.jsx)(`div`,{className:`py-3`,children:t})]})}):e===`bottom`?(0,w.jsx)(m,{open:!0,onOpenChange:C,children:(0,w.jsxs)(v,{children:[n.title&&(0,w.jsxs)(h,{children:[(0,w.jsx)(y,{children:n.title}),n.description&&(0,w.jsx)(b,{children:n.description})]}),(0,w.jsx)(`div`,{className:`max-h-[75vh] overflow-y-auto px-4 pb-6`,children:t})]})}):(0,w.jsx)(d,{open:!0,onOpenChange:C,children:(0,w.jsxs)(x,{className:_(e===`fullscreen`?`h-[95vh] w-full max-w-[98vw] overflow-y-auto`:ee[n.size||`default`]),children:[n.title&&(0,w.jsxs)(s,{children:[(0,w.jsx)(p,{children:n.title}),n.description&&(0,w.jsx)(a,{children:n.description})]}),(0,w.jsx)(`div`,{children:t}),!n.content&&(0,w.jsx)(`div`,{className:`flex justify-end`,children:(0,w.jsx)(g,{onClick:()=>r({success:!0}),children:`OK`})})]})})}}return{modalHandler:T,modalElement:E,closeModal:r}}export{R as a,k as c,X as i,$ as n,z as o,Y as r,D as s,re as t};
@@ -1 +1 @@
1
- import{o as e}from"./rolldown-runtime-CMxvf4Kt.js";import{_ as t,f as n,t as r,u as i}from"./vendor-react-ClIa1CJA.js";import{Lr as a,Pa as o,Si as s,gr as c}from"./ui-components-DXl7VfQF.js";import{b as l,v as u,y as d}from"./ReportDefaultInspector-B6X1lhzs.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)(c,{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)(c,{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)(s,{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-CMxvf4Kt.js";import{_ as t,f as n,t as r,u as i}from"./vendor-react-ClIa1CJA.js";import{Lr as a,Pa as o,Si as s,gr as c}from"./ui-components-DiLX53DV.js";import{b as l,v as u,y as d}from"./ReportDefaultInspector-CoX9gMMh.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)(c,{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)(c,{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)(s,{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-CMxvf4Kt.js";import{_ as t,f as n,p as r,u as i}from"./vendor-react-ClIa1CJA.js";import{A as a,V as o,i as s,k as c}from"./framework-CsYa1Kaj.js";import{Dt as l}from"./ui-components-DXl7VfQF.js";import{r as u}from"./vendor-ui-utils-C92Fl7BT.js";import"./AdapterProvider-CJjaoZJR.js";import{a as d}from"./MetadataProvider-BO_KcC86.js";import{i as f,o as p}from"./useActionModal-CYfSmVlP.js";import{n as m}from"./ui-layout-BwKCXo1Z.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=c();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=c(),{apps:t,refresh:n}=a(),{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}=a(),i=c(),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 R(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 z=`objectstack:ai-chat-conversation-id`,B=`objectstack:ai-chat-messages`;function V(e,t){return t?`${z}:${e}:${t}`:`${z}:${e}`}function H(e){try{return localStorage.getItem(e)??void 0}catch{return}}function U(e,t){try{t?localStorage.setItem(e,t):localStorage.removeItem(e)}catch{}}function W(e){return`${B}:${e}`}function G(e){try{let t=localStorage.getItem(W(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 K(e,t){if(e)try{if(t.length===0){localStorage.removeItem(W(e));return}localStorage.setItem(W(e),JSON.stringify(t))}catch{}}function le(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?R(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 q(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)?q(e.parts):[]}function ue(e,t){for(let n of q(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 J(e){if(!e)return[];let t=[],n=new Map;return e.forEach((e,r)=>{let i=e.role;if(i===`tool`){ue(e.content,n);return}if(i!==`user`&&i!==`assistant`&&i!==`system`)return;let a=q(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}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 de(e,t){await fetch(`${e}/conversations/${encodeURIComponent(t)}`,{method:`DELETE`,credentials:`include`}).catch(()=>{})}function fe(e){let{userId:t,scope:n,apiBase:r,activeId:i,forceNew:a}=e,[o,s]=(0,g.useState)(void 0),[c,l]=(0,g.useState)([]),[u,d]=(0,g.useState)(!!t),f=(0,g.useRef)(!0),p=(0,g.useRef)(void 0),m=(0,g.useRef)(void 0);(0,g.useEffect)(()=>(f.current=!0,()=>{f.current=!1}),[]),(0,g.useEffect)(()=>{if(!t){s(void 0),l([]),d(!1),p.current=void 0,m.current=void 0;return}let e=m.current!==n;if(!i&&!a&&!e&&p.current===t&&o)return;let c=!1,u=V(t,n);return!i&&(a||e&&p.current===t)&&(s(void 0),l([])),d(!0),(async()=>{try{if(i){let e=await Y(r,i);if(c)return;if(e){U(u,e.id),s(e.id);let r=J(e.messages);l(r.length>0?r:G(e.id)),p.current=t,m.current=n;return}U(u,void 0),K(i,[])}else if(!a){let e=H(u);if(e){let i=await Y(r,e);if(c)return;if(i){s(i.id);let e=J(i.messages);l(e.length>0?e:G(i.id)),p.current=t,m.current=n;return}U(u,void 0),K(e,[])}}let e=await X(r);if(c)return;U(u,e.id),s(e.id),l(J(e.messages)),p.current=t,m.current=n}catch{c||(s(void 0),l([]))}finally{c||d(!1)}})(),()=>{c=!0}},[t,n,r,i,a]);let h=(0,g.useCallback)(async()=>{if(!t)return;let e=V(t,n);d(!0);try{o&&await de(r,o),K(o,[]),U(e,void 0);let t=await X(r);if(U(e,t.id),K(t.id,[]),!f.current)return;s(t.id),l([])}catch{f.current&&(s(void 0),l([]))}finally{f.current&&d(!1)}},[o,t,n,r]);return{conversationId:o,conversationScope:m.current,initialMessages:c,isLoading:u,reset:h}}var pe=new Set([`new chat`,`new conversation`,`untitled`,`新对话`]);function Z(e){let t=e?.trim().toLowerCase();return!t||pe.has(t)}function me(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=me(e)??Q(e.preview);return{id:e.id,title:Z(t)?void 0:t,agentId:e.agentId,createdAt:e.createdAt,updatedAt:e.updatedAt,preview:n}}async function he(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 ge(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=>he(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 _e(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 ve(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 ye(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=>{let r=t?.replace(/\/agents\/[^/]+\/chat$/,``);if(!n||!r){i(!1);return}try{let e=J((await Y(r,n))?.messages);if(ve(e)&&a.current){a.current(e),i(!0);return}}catch{}i(!1)},[n,t]),setMessagesRef:a,resetSuppression:(0,g.useCallback)(()=>i(!1),[])}}export{le as a,se as c,ee as d,C as f,Y as i,P as l,_ as m,_e as n,fe as o,y as p,ge as r,K as s,ye as t,ie as u};
1
+ import{o as e}from"./rolldown-runtime-CMxvf4Kt.js";import{_ as t,f as n,p as r,u as i}from"./vendor-react-ClIa1CJA.js";import{A as a,V as o,i as s,k as c}from"./framework-D5XqsLzE.js";import{Dt as l}from"./ui-components-DiLX53DV.js";import{r as u}from"./vendor-ui-utils-C92Fl7BT.js";import"./AdapterProvider-BNg96rLB.js";import{a as d}from"./MetadataProvider-QdHbK1P5.js";import{i as f,o as p}from"./useActionModal-DjfU9Nzh.js";import{n as m}from"./ui-layout-s7dWTKAK.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=c();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=c(),{apps:t,refresh:n}=a(),{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}=a(),i=c(),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}=e,[o,s]=(0,g.useState)(void 0),[c,l]=(0,g.useState)([]),[u,d]=(0,g.useState)(!!t),f=(0,g.useRef)(!0),p=(0,g.useRef)(void 0),m=(0,g.useRef)(void 0);(0,g.useEffect)(()=>(f.current=!0,()=>{f.current=!1}),[]),(0,g.useEffect)(()=>{if(!t){s(void 0),l([]),d(!1),p.current=void 0,m.current=void 0;return}let e=m.current!==n;if(!i&&!a&&!e&&p.current===t&&o)return;let c=!1,u=B(t,n);return!i&&(a||e&&p.current===t)&&(s(void 0),l([])),d(!0),(async()=>{try{if(i){let e=await Y(r,i);if(c)return;if(e){H(u,e.id),s(e.id);let r=q(e.messages);l(r.length>0?r:W(e.id)),p.current=t,m.current=n;return}H(u,void 0),G(i,[])}else if(!a){let e=V(u);if(e){let i=await Y(r,e);if(c)return;if(i){s(i.id);let e=q(i.messages);l(e.length>0?e:W(i.id)),p.current=t,m.current=n;return}H(u,void 0),G(e,[])}}let e=await X(r);if(c)return;H(u,e.id),s(e.id),l(q(e.messages)),p.current=t,m.current=n}catch{c||(s(void 0),l([]))}finally{c||d(!1)}})(),()=>{c=!0}},[t,n,r,i,a]);let h=(0,g.useCallback)(async()=>{if(!t)return;let e=B(t,n);d(!0);try{o&&await pe(r,o),G(o,[]),H(e,void 0);let t=await X(r);if(H(e,t.id),G(t.id,[]),!f.current)return;s(t.id),l([])}catch{f.current&&(s(void 0),l([]))}finally{f.current&&d(!1)}},[o,t,n,r]);return{conversationId:o,conversationScope:m.current,initialMessages:c,isLoading:u,reset:h}}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=>{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};
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-Bx77jcFN.js"></script>
21
+ <script type="module" crossorigin src="./assets/index-DnQZFTk9.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-CYLGNLiD.css">
25
- <link rel="modulepreload" href="./assets/framework-CsYa1Kaj.js" />
26
- <link rel="modulepreload" href="./assets/ui-components-DXl7VfQF.js" />
24
+ <link rel="stylesheet" crossorigin href="./assets/index-DOshzaoZ.css">
25
+ <link rel="modulepreload" href="./assets/framework-D5XqsLzE.js" />
26
+ <link rel="modulepreload" href="./assets/ui-components-DiLX53DV.js" />
27
27
  <link rel="modulepreload" href="./assets/vendor-radix-90T7eS-d.js" />
28
28
  <link rel="modulepreload" href="./assets/vendor-react-ClIa1CJA.js" />
29
29
  </head>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@objectstack/console",
3
- "version": "10.2.0",
3
+ "version": "10.3.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-CMxvf4Kt.js";import{_ as t,l as n,t as r,u as i}from"./vendor-react-ClIa1CJA.js";import{i as a}from"./framework-CsYa1Kaj.js";import{Bt as o,Ht as s,Ut as c,Vt as l,Wt as u,gr as d,oi as f,w as p,yi as m}from"./ui-components-DXl7VfQF.js";import{r as h}from"./vendor-ui-utils-C92Fl7BT.js";import{i as g,s as _,t as v}from"./assistantBus-BMrg1uLy.js";import{a as y,n as b,o as x,s as ee,t as te}from"./useReconcileOnError-BXVpquqp.js";import{S,a as ne,d as C,p as w,r as re,t as ie,u as T,v as E}from"./plugin-chatbot-B25XBELF.js";import{b as D,n as O}from"./marketplaceApi-DL8PegzV.js";var k=e(t(),1),A=r(),j={ask:{zh:`智能助手`,en:`Assistant`},build:{zh:`构建助手`,en:`Build assistant`}};function M(e,t,n){let r=t?j[w(t)]:void 0;return r?e?r.zh:r.en:n}function ae(e,t,n,r,i){let a=(e??``).toLowerCase().startsWith(`zh`),o=M(a,n,r),s=i.slice(0,2).map(e=>e.label||e.name);if(a){let e=[s[0]?`查询最近创建的${s[0]}`:`帮我查询最近的数据`,s[0]?`统计${s[0]}的总数量`:`统计各对象的记录数量`,s[1]?`${s[1]}有哪些字段?`:`当前应用里有哪些数据对象?`].filter(Boolean);return{agentLabel:o,labels:{emptyTitle:`你好,我是${o}`,emptyDescription:`随时帮你查询和分析「${t}」中的数据。试试下面的问题,或直接输入你的需求。`,clear:`清空对话`,sendHint:`发送`,agentActivity:`执行过程`,toolCompleted:`已完成`,toolRunning:`运行中`,toolAwaitingApproval:`等待确认`,toolFailed:`失败`,toolDetailsHidden:`已隐藏工具参数和原始结果,仅保留过程摘要。`,copy:`复制`,copied:`已复制`,regenerate:`重新生成`,model:`模型`,submit:`发送`,uploadFiles:`上传文件`,stopResponse:`停止生成`,trace:`调试 trace`,viewTrace:`查看调试 trace`},placeholder:`向${o}提问…`,loadingPlaceholder:`正在加载助手…`,title:`${t} 智能助手`,newChat:`开启新对话`,share:`分享对话`,reviewDraft:e=>`查看 ${e} 项变更`,publishDrafts:`发布`,published:`已发布`,nextSteps:`下一步`,planTitle:`方案预览`,planQuestions:`搭建前请确认`,planAssumptions:`假设`,planApproveHint:`回复以确认或调整该方案。`,planApprove:`开始搭建`,planAdjust:`调整方案`,planApproveMessage:`就按这个方案搭建吧。`,planApproveDefaultsMessage:`就按你的合理假设直接搭建,未决问题用默认即可。`,planAnswer:(e,t)=>`关于「${e}」,我选择「${t}」。`,publishOk:`已发布,对象已生效。`,publishFailed:`发布失败`,seedWarn:`已发布,但部分示例数据未能载入。`,openBuiltApp:`打开应用`,suggestions:e}}let c=[s[0]?`Show the latest ${s[0]}`:`Show my most recent records`,s[0]?`How many ${s[0]} are there?`:`Count records by status`,s[1]?`What fields does ${s[1]} have?`:`What data can I work with here?`].filter(Boolean);return{agentLabel:o,labels:{emptyTitle:`Hi, I'm ${o}`,emptyDescription:`I can help you query and analyze your ${t} data. Try a prompt below, or just type your question.`,clear:`Clear`,sendHint:`to send`,agentActivity:`Agent activity`,toolCompleted:`Completed`,toolRunning:`Running`,toolAwaitingApproval:`Awaiting approval`,toolFailed:`Failed`,toolDetailsHidden:`Tool inputs and raw results are hidden in this view.`,copy:`Copy`,copied:`Copied`,regenerate:`Regenerate`,model:`Model`,submit:`Submit`,uploadFiles:`Upload files`,stopResponse:`Stop response`,trace:`trace`,viewTrace:`View trace`},placeholder:`Ask ${o}...`,loadingPlaceholder:`Loading assistant...`,title:`${t} Assistant`,newChat:`New chat`,share:`Share conversation`,reviewDraft:e=>`Review ${e} change${e===1?``:`s`}`,publishDrafts:`Publish`,published:`Published`,nextSteps:`What's next`,planTitle:`Proposed plan`,planQuestions:`Confirm before building`,planAssumptions:`Assumptions`,planApproveHint:`Reply to approve or adjust this plan.`,planApprove:`Build it`,planAdjust:`Adjust`,planApproveMessage:`Looks good — build it as proposed.`,planApproveDefaultsMessage:`Build it with your best assumptions; use sensible defaults for the open questions.`,planAnswer:(e,t)=>`For "${e}", go with: ${t}.`,publishOk:`Published — objects are now live.`,publishFailed:`Publish failed`,seedWarn:`Published, but some sample data failed to load.`,openBuiltApp:`Open app`,suggestions:c}}var N=`/api/v1/ai`;function P(e){if(e)return e.replace(/\/$/,``);let t={BASE_URL:`./`,DEV:!1,MODE:`production`,PROD:!0,SSR:!1,VITE_SENTRY_DSN:`https://1373a588ceb9da150b11e64bf85f583d@o4510356161757184.ingest.us.sentry.io/4511439670673408`,VITE_SENTRY_ENVIRONMENT:`production`,VITE_SENTRY_SEND_DEFAULT_PII:`true`,VITE_SERVER_URL:``,VITE_USE_MOCK_SERVER:`false`},n=t.VITE_AI_BASE_URL;return n?n.replace(/\/$/,``):`${(t.VITE_SERVER_URL??``).replace(/\/$/,``)}${N}`}function oe(e,t){if(!e||e.type!==`object`)return null;let n=e.label||e.name||`this object`;return(t??``).toLowerCase().startsWith(`zh`)?[`为「${n}」补充字段`,`为「${n}」建议校验规则`,`添加一个状态选项字段`]:[`Add fields to ${n}`,`Suggest validations for ${n}`,`Add a status picklist field`]}var F=new Set([`view`,`record`,`page`,`dashboard`,`design`,`report`,`metadata`]);function I(e){try{return decodeURIComponent(e)}catch{return e}}function se(e,t){let n=e.split(`/`).filter(Boolean),r=n.indexOf(`apps`);if(r===-1||n.length<r+3)return{};let i=I(n[r+2]);if(F.has(i)||!t.some(e=>e.name===i))return{};let a=n[r+3]?I(n[r+3]):void 0,o=a&&a!==`new`?a:void 0;return{objectName:i,...o?{recordId:o}:{}}}function L({appLabel:e,appName:t,objects:r,agents:x,agentsLoading:C,activeAgent:w,onAgentChange:T,showAgentPicker:j,chatApi:M,apiBase:N,defaultOpen:P=!1,conversationId:F,initialMessages:I}){let{language:L}=a(),R=i(),z=n(),B=k.useMemo(()=>se(z.pathname,r),[z.pathname,r]),{editor:V}=_(),H=k.useMemo(()=>!I||I.length===0?[]:S(I),[I]),U=k.useMemo(()=>x.find(e=>e.name===w)?.label??w??e,[x,w,e]),W=k.useMemo(()=>ae(L,e,w,U,r),[L,e,w,U,r]),G=k.useMemo(()=>oe(V,L),[V,L]),{errorSuppressed:ce,handleChatError:le,setMessagesRef:ue,resetSuppression:K}=te({chatApi:M,conversationId:F}),{messages:q,isLoading:J,error:de,sendMessage:Y,stop:fe,reload:pe,clear:X,setMessages:Z}=E({api:M,conversationId:F,onError:le,body:{context:{activeApp:e,appName:t,objects:r.map(e=>({name:e.name,label:e.label})),agentName:w,autoPublishAiBuilds:D().features.autoPublishAiBuilds,...B.objectName?{objectName:B.objectName}:{},...B.recordId?{recordId:B.recordId}:{},...V?{editing:V}:{}}},initialMessages:H,autoResponse:!M,autoResponseText:r.length>0?`I can help you work with ${r.map(e=>e.label||e.name).join(`, `)}. What would you like to do?`:`Thanks for your message! I'm here to help you navigate and manage your data.`,autoResponseDelay:600});k.useEffect(()=>{ue.current=Z},[Z]),k.useEffect(()=>{ee(F,y(q))},[F,q]);let Q=ie({messages:q,apiBase:N,continueConversation:e=>{K(),Y(e)}}),me=j&&x.length>1?(0,A.jsxs)(o,{value:w,onValueChange:T,disabled:C,children:[(0,A.jsx)(c,{className:`h-7 w-[180px] text-xs`,"data-testid":`floating-chatbot-agent-picker`,children:(0,A.jsx)(u,{placeholder:`Choose agent...`})}),(0,A.jsx)(l,{align:`end`,children:x.map(e=>(0,A.jsxs)(s,{value:e.name,className:`text-xs`,children:[(0,A.jsx)(`span`,{className:`font-medium`,children:e.label}),e.description?(0,A.jsx)(`span`,{className:`block text-muted-foreground text-[10px] truncate max-w-[220px]`,children:e.description}):null]},e.name))})]}):null,[he,$]=k.useState(!1),ge=k.useMemo(()=>N.replace(/\/v1\/ai$/,``).replace(/\/ai$/,``)||`/api`,[N]),_e=(0,A.jsxs)(A.Fragment,{children:[q.length>0?(0,A.jsx)(d,{variant:`ghost`,size:`icon`,className:`h-7 w-7`,"aria-label":W.newChat,title:W.newChat,"data-testid":`floating-chatbot-new`,onClick:X,children:(0,A.jsx)(f,{className:`h-4 w-4`})}):null,F?(0,A.jsx)(d,{variant:`ghost`,size:`icon`,className:`h-7 w-7`,"aria-label":W.share,title:W.share,"data-testid":`floating-chatbot-share`,onClick:()=>$(!0),children:(0,A.jsx)(m,{className:`h-4 w-4`})}):null]});return(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(re,{onUpgrade:()=>window.open(O(),`_blank`,`noopener,noreferrer`),floatingConfig:{position:`bottom-right`,defaultOpen:P,panelWidth:420,panelHeight:560,title:W.title,triggerSize:56},headerExtra:me,headerActions:_e,messages:q,labels:W.labels,showAvatars:!0,hideClearBar:!0,assistantAvatarFallback:W.agentLabel,suggestions:q.length===0?G??W.suggestions:void 0,placeholder:w?W.placeholder:C?W.loadingPlaceholder:W.placeholder,onSendMessage:e=>{K(),Y(e)},onClear:X,onStop:J?fe:void 0,onReload:pe,isLoading:J,error:ce?void 0:de,enableMarkdown:!0,onToolApprove:Q.decide,toolDecisions:Q.decisions,toolApproveLabel:`Approve & run`,toolDenyLabel:`Reject`,toolDenyReason:`Operator rejected from chat`,onReviewDraft:e=>{e[0]&&g(e[0])},toolReviewLabel:W.reviewDraft,onOpenBuiltApp:e=>R(`/apps/${encodeURIComponent(e)}`),openBuiltAppLabel:W.openBuiltApp,onPreviewDraftApp:(e,t)=>R(t?.materialized?`/apps/${encodeURIComponent(e)}`:`/apps/${encodeURIComponent(e)}?preview=draft`),onDraftArtifacts:e=>{for(let t of e)v(t)},fetchPendingDraftCount:b,onPublishDrafts:async e=>{try{let t=await fetch(`/api/v1/packages/${encodeURIComponent(e)}/publish-drafts`,{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:`{}`}),n=await t.json().catch(()=>null);if(!t.ok||n?.success===!1)throw Error(n?.error?.message||`HTTP ${t.status}`);let r=n?.data?.failedCount??n?.failedCount??0;if(r)throw Error(String(r));let i=n?.data?.seedApplied??n?.seedApplied;i&&i.success===!1?h.warning(W.seedWarn,{description:i.error??(Array.isArray(i.errors)&&i.errors.length?String(i.errors[0]):void 0)}):h.success(W.publishOk);let a=(n?.data?.published??n?.published??[]).find(e=>e?.type===`app`&&e?.name);return a?.name&&R(`/apps/${encodeURIComponent(a.name)}`),{ok:!0,health:ne(n)}}catch(e){return h.error(W.publishFailed,{description:e instanceof Error?e.message:void 0}),!1}},publishDraftsLabel:W.publishDrafts,nextStepsLabel:W.nextSteps,planTitleLabel:W.planTitle,planQuestionsLabel:W.planQuestions,planAssumptionsLabel:W.planAssumptions,planApproveHintLabel:W.planApproveHint,planApproveLabel:W.planApprove,planAdjustLabel:W.planAdjust,planApproveMessage:W.planApproveMessage,planApproveDefaultsMessage:W.planApproveDefaultsMessage,planAnswerMessage:W.planAnswer,publishedLabel:W.published,autoPublishDrafts:D().features.autoPublishAiBuilds}),F&&(0,A.jsx)(p,{open:he,onOpenChange:$,objectName:`ai_conversations`,recordId:F,recordLabel:`this conversation`,apiBase:ge})]})}function R({appLabel:e,appName:t,objects:n,apiBase:r,defaultAgent:i,showAgentPicker:a,defaultOpen:o=!1,userId:s}){let c=k.useMemo(()=>P(r),[r]),l={BASE_URL:`./`,DEV:!1,MODE:`production`,PROD:!0,SSR:!1,VITE_SENTRY_DSN:`https://1373a588ceb9da150b11e64bf85f583d@o4510356161757184.ingest.us.sentry.io/4511439670673408`,VITE_SENTRY_ENVIRONMENT:`production`,VITE_SENTRY_SEND_DEFAULT_PII:`true`,VITE_SERVER_URL:``,VITE_USE_MOCK_SERVER:`false`},u=l.VITE_AI_DEFAULT_AGENT,d=a??l.VITE_AI_SHOW_AGENT_PICKER===`true`,{agents:f,isLoading:p,error:m}=C({apiBase:c}),[h,g]=k.useState(void 0);k.useEffect(()=>{if(!h&&f.length>0){let e=T(f,i??u);e&&g(e)}},[f,h,i,u]);let _=h?`${c}/agents/${encodeURIComponent(h)}/chat`:void 0,{conversationId:v,initialMessages:y}=x({userId:h?s:void 0,scope:h,apiBase:c});return(0,A.jsx)(L,{appLabel:e,appName:t,objects:n,agents:f,agentsLoading:p,agentsError:m,activeAgent:h,onAgentChange:g,showAgentPicker:d,chatApi:_,apiBase:c,defaultOpen:o,conversationId:v,initialMessages:y},`${_??`local`}:${v??`pending`}`)}export{R as default};
@@ -1 +0,0 @@
1
- import{o as e,r as t}from"./rolldown-runtime-CMxvf4Kt.js";import{_ as n,f as r,l as i,p as a,t as o,u as s}from"./vendor-react-ClIa1CJA.js";import{f as c,m as l}from"./infrastructure-BsIvKvpW.js";import{A as u,F as d,H as f,N as p,i as m,k as h}from"./framework-CsYa1Kaj.js";import{Do as g,H as _,R as v,Zi as y,wc as b,z as x}from"./ui-components-DXl7VfQF.js";import{r as S}from"./vendor-ui-utils-C92Fl7BT.js";import"./MetadataProvider-BO_KcC86.js";import{r as C}from"./ExpressionProvider-C2XzKImE.js";import{a as w,i as T,o as E,r as D,s as O}from"./RecordDetailView-ANMXqsUj.js";import{n as k,r as A,t as j}from"./MetadataInspector-D9KL7Kgi.js";import{t as M}from"./InterfaceListPage-Cfv6Lkis.js";var N=e(n(),1),P=o(),F={id:`current-user`,name:`Demo User`,isPlatformAdmin:!1};function I(e){let{dataSource:t,objects:n,objectName:r,onRefresh:i}=e,a=s(),{user:o,activeOrganization:u}=c(),{fieldLabel:f,fieldOptionLabel:p,actionParamText:m,actionParamOptionLabel:h,actionDescription:g}=b(),_=(0,N.useMemo)(()=>r?n?.find(e=>e.name===r):void 0,[n,r]),v=r||_?.name,y=(0,N.useCallback)(()=>{i?.()},[i]),x=d({dataSource:t,onUndo:()=>{y(),S.success(`Change undone`)}}),[C,k]=(0,N.useState)({open:!1,message:``}),[A,j]=(0,N.useState)({open:!1,params:[]}),[M,I]=(0,N.useState)({open:!1}),[L,R]=(0,N.useState)(null),z=(0,N.useRef)(new Set),B=(0,N.useCallback)((e,t)=>new Promise(n=>{I({open:!0,spec:e,data:t,resolve:n})}),[]),V=(0,N.useCallback)((e,t)=>new Promise(n=>{k({open:!0,message:e,options:t,resolve:n})}),[]),H=(0,N.useCallback)((e,t)=>new Promise(i=>{let a=t?.params&&!Array.isArray(t.params)?t.params._rowRecord:void 0,o=D(e,{objectName:r||_?.name||``,objects:n||[],fieldLabel:f,fieldOptionLabel:p,row:a}),s=r||_?.name;j({open:!0,params:o.map(e=>({...e,label:m(s,t?.name,e.name,`label`,e.label)??e.label,placeholder:m(s,t?.name,e.name,`placeholder`,e.placeholder)??e.placeholder,helpText:m(s,t?.name,e.name,`helpText`,e.helpText)??e.helpText,options:Array.isArray(e.options)?e.options.map(n=>({...n,label:h(s,t?.name,e.name,n.value,n.label)})):e.options})),title:t?.label||t?.title,description:g(s,t?.name,t?.description),resolve:i})}),[r,_,n,f,p,m,h]),U=o?{id:o.id,name:o.name,avatar:o.image,isPlatformAdmin:o?.isPlatformAdmin??!1}:F,W=(0,N.useCallback)((e,t)=>{if(t?.type===`error`){S.error(e);return}if(t?.undo){S.success(e,{duration:t.duration,action:{label:t.undo.label||`Undo`,onClick:()=>{x.undo()}}});return}S.success(e,{duration:t?.duration})},[x]),G=(0,N.useCallback)((e,t)=>{t?.external||t?.newTab?window.open(e,`_blank`,`noopener,noreferrer`):a(e)},[a]),K=(0,N.useMemo)(()=>l(),[]),q=(0,N.useCallback)(async e=>{try{let n=e.target||e.name,r=e.params||{},i=typeof n==`string`?n:``;if(i.startsWith(`/`)||/^https?:\/\//i.test(i)){let t={...r},n=t._rowRecord;delete t._rowRecord;let a=i;n&&/\{[a-z_][a-z0-9_]*\}/i.test(a)&&(a=a.replace(/\{([a-z_][a-z0-9_]*)\}/gi,(e,t)=>{let r=n[t];return r==null?``:encodeURIComponent(String(r))}));let o=a.startsWith(`http`)?a:`${a}`,s=e.bodyShape&&typeof e.bodyShape==`object`&&e.bodyShape.wrap?e.bodyShape.wrap:void 0,c=s?{[s]:t}:{...t};if(n&&e.recordIdParam){let t=n[e.recordIdField||`id`];t!=null&&(c[e.recordIdParam]=t)}/\/api\/v1\/auth\//.test(a)&&!c.organizationId&&u?.id&&(c.organizationId=u.id),e.bodyExtra&&typeof e.bodyExtra==`object`&&Object.assign(c,e.bodyExtra);let l=(e.method||`POST`).toUpperCase(),d={method:l,headers:{"Content-Type":`application/json`},credentials:`include`};l!==`GET`&&l!==`DELETE`&&(d.body=JSON.stringify(c));let f=await K(o,d);if(!f.ok){let e=`HTTP ${f.status}`;try{let t=await f.json();e=t?.error||t?.message||e}catch{}return{success:!1,error:e}}let p=await f.json().catch(()=>({}));return e.refreshAfter!==!1&&y(),{success:!0,data:p,reload:e.refreshAfter!==!1}}let a=e.objectName||v,o=r._rowRecord,s={...r};delete s._rowRecord;let c=s.recordId??o?.[e.recordIdField||`id`];delete s.recordId,e.bodyExtra&&typeof e.bodyExtra==`object`&&Object.assign(s,e.bodyExtra),a&&typeof t?.execute==`function`?await t.execute(a,n,s):a&&c&&Object.keys(s).length>0&&typeof t?.update==`function`&&await t.update(a,c,s);let l;if(e.undoable&&a&&c&&o&&Object.keys(s).length>0&&typeof t?.update==`function`){let t={};for(let e of Object.keys(s))t[e]=o[e]??null;l={id:`undo-${a}-${c}-${Date.now()}`,type:`update`,objectName:a,recordId:String(c),timestamp:Date.now(),description:e.label||`Undo ${a}`,undoData:t,redoData:{...s}}}let d=e.refreshAfter!==!1;return d&&y(),{success:!0,reload:d,undo:l}}catch(e){return{success:!1,error:e.message}}},[t,v,K,u,y]),J=(0,N.useCallback)(async(e,t)=>{let n=e.target||e.name;if(!n)return{success:!1,error:`No flow target provided for flow action`};try{let r={...e.params||{}},i=r._rowRecord;delete r._rowRecord;let a=r.recordId??i?.id;if(a==null){let e=Array.isArray(t?.selectedRecords)?t.selectedRecords:[];if(e.length===1)a=e[0]?.id;else if(e.length>1)return{success:!1,error:`This flow runs on a single record — select exactly one row.`}}a!=null&&r.recordId==null&&(r.recordId=a);let o=await K(`/api/v1/automation/${encodeURIComponent(n)}/trigger`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({recordId:a,objectName:e.objectName||v,params:r})}),s=await o.json().catch(()=>null);if(!o.ok||s&&s.success===!1)return{success:!1,error:s?.error||`Flow "${n}" failed (HTTP ${o.status})`};let c=s?.data??{};if(c.status===`paused`&&c.screen)return R({flowName:n,runId:c.runId,screen:c.screen}),{success:!0,silent:!0};let l=e.refreshAfter!==!1;return l&&y(),{success:!0,data:s?.data,reload:l}}catch(e){return{success:!1,error:e.message}}},[K,v,y]),Y=(0,N.useCallback)(async(e,t)=>{let n=e.target||e.name;if(!n)return{success:!1,error:`No action target provided`};let r=e.params&&!Array.isArray(e.params)?{...e.params}:{},i=r._rowRecord;delete r._rowRecord;let a=e.recordIdField||`id`,o=r.recordId??i?.[a];if(o==null){let e=Array.isArray(t?.selectedRecords)?t.selectedRecords:[];if(e.length===1)o=e[0]?.[a];else if(e.length>1)return{success:!1,error:`This action runs on a single record — select exactly one row.`}}let s=`${n}:${o??``}`;if(z.current.has(s))return{success:!1,error:`Action already in progress`};z.current.add(s);let c=null;if(e.opensInNewTab)try{c=window.open(`about:blank`,`_blank`),c&&(c.document.write(`<!doctype html><meta charset="utf-8"><title>正在打开… Opening…</title><body style="margin:0;font-family:system-ui,sans-serif;display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;gap:16px;color:#4b5563"><div style="width:28px;height:28px;border:3px solid #e5e7eb;border-top-color:#6366f1;border-radius:50%;animation:s .8s linear infinite"></div><div>正在为你打开环境…</div><style>@keyframes s{to{transform:rotate(360deg)}}</style></body>`),c.document.close())}catch{c=null}try{let t=typeof e.newTabUrl==`string`?e.newTabUrl:``;if(e.opensInNewTab&&t){if(o==null){if(c)try{c.close()}catch{}return{success:!1,error:`This action runs on a single record — no record id available.`}}let n=`${window.location.origin}${t.replace(`{recordId}`,encodeURIComponent(String(o)))}`;if(c)try{c.location.href=n}catch{try{c.close()}catch{}window.location.href=n}else{let e=null;try{e=window.open(n,`_blank`)}catch{e=null}e||S(`浏览器拦截了弹窗 / Popup blocked`,{description:`点击在新标签页打开环境`,action:{label:`打开环境`,onClick:()=>{try{window.open(n,`_blank`)}catch{window.location.href=n}}},duration:1e4})}return e.refreshAfter===!0&&y(),{success:!0}}let i=e.objectName||v||`global`,a=await K(`/api/v1/actions/${encodeURIComponent(i)}/${encodeURIComponent(n)}`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({recordId:o,params:r})}),s=await a.json().catch(()=>null);if(!a.ok||s&&s.success===!1){let e=s?.error||`Action "${n}" failed (HTTP ${a.status})`;if(c)try{c.close()}catch{}return S.error(e),{success:!1,error:e}}let l=e.refreshAfter!==!1;l&&y();let u=s?.data,d=u&&typeof u==`object`&&typeof u.redirectUrl==`string`?u.redirectUrl:null;if(d)if(c)try{c.location.href=d}catch{try{c.close()}catch{}window.location.href=d}else{let e=null;try{e=window.open(d,`_blank`)}catch{e=null}e||S(`浏览器拦截了弹窗 / Popup blocked`,{description:`点击在新标签页打开环境`,action:{label:`打开环境`,onClick:()=>{try{window.open(d,`_blank`)}catch{window.location.href=d}}},duration:1e4})}else if(c)try{c.close()}catch{}return{success:!0,data:u,reload:l}}catch(e){if(c)try{c.close()}catch{}let t=e.message;return S.error(t),{success:!1,error:t}}finally{z.current.delete(s)}},[K,v,y]);return{confirmHandler:V,toastHandler:W,navigateHandler:G,paramCollectionHandler:H,resultDialogHandler:B,apiHandler:q,flowHandler:J,serverActionHandler:Y,authFetch:K,actionProviderProps:(0,N.useMemo)(()=>({context:{...r?{objectName:r}:{},user:U,apiBase:``,activeOrganization:u?{id:u.id,slug:u.slug,name:u.name}:null},onConfirm:V,onToast:W,onNavigate:G,onParamCollection:H,onResultDialog:B,handlers:{api:q,flow:J,script:Y,modal:Y}}),[r,U,u,V,W,G,H,B,q,J,Y]),dialogs:(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(O,{state:C,onOpenChange:e=>{e||k({open:!1,message:``})}}),(0,P.jsx)(E,{state:A,onOpenChange:e=>{e||j({open:!1,params:[]})}}),(0,P.jsx)(w,{state:M,onAcknowledge:()=>{M.resolve?.(),I({open:!1})}}),(0,P.jsx)(T,{state:L,authFetch:K,baseUrl:``,dataSource:t,objects:n,onClose:()=>R(null),onComplete:()=>{R(null),y()}})]})}}function L({children:e,...t}){let n=I(t);return(0,P.jsxs)(p,{...n.actionProviderProps,children:[e,n.dialogs]})}var R=t({PageView:()=>z});function z(){let{t:e}=m(),{pageName:t}=r(),[n]=a(),{showDebug:o}=k(),l=s(),d=i(),{user:p}=c(),b=p?.role===`admin`,{pages:S,objects:w}=u(),{app:T}=C(),E=h(),[D,O]=(0,N.useState)(0),F=A(S,t,T?._packageId);if(!F)return(0,P.jsx)(`div`,{className:`h-full flex items-center justify-center p-8`,children:(0,P.jsxs)(v,{children:[(0,P.jsx)(`div`,{className:`mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-muted`,children:(0,P.jsx)(g,{className:`h-6 w-6 text-muted-foreground`})}),(0,P.jsx)(_,{children:e(`empty.pageNotFound`)}),(0,P.jsx)(x,{children:e(`empty.pageNotFoundDescription`,{name:t})})]})});let I=Object.fromEntries(n.entries()),R=d.pathname.match(/\/apps\/([^/]+)/)?.[1],z=b&&!!R&&!!t;return(0,P.jsx)(L,{dataSource:E,objects:w,onRefresh:()=>O(e=>e+1),children:(0,P.jsxs)(`div`,{className:`flex flex-row h-full w-full overflow-hidden relative`,children:[(0,P.jsxs)(`div`,{className:`flex-1 overflow-auto h-full relative`,children:[z&&(0,P.jsx)(`button`,{type:`button`,onClick:()=>{z&&l(`/apps/${R}/metadata/page/${encodeURIComponent(t)}`)},className:`absolute right-3 top-3 z-30 inline-flex h-7 w-7 items-center justify-center rounded-md border border-input bg-background/90 text-muted-foreground shadow-sm backdrop-blur hover:bg-accent hover:text-accent-foreground`,"data-testid":`page-edit-in-studio-button`,title:e(`common.editInStudio`,{defaultValue:`Edit in studio`}),"aria-label":e(`common.editInStudio`,{defaultValue:`Edit in studio`}),children:(0,P.jsx)(y,{className:`h-3.5 w-3.5`})}),F.interfaceConfig?.source?(0,P.jsx)(M,{page:F,reserveEditAffordance:z},D):(0,P.jsx)(f,{schema:{...F,type:F.type||`page`,context:{...F.context,params:I,refreshKey:D}}},D)]}),(0,P.jsx)(j,{open:o,sections:[{title:`Page Configuration`,data:F}]})]})})}export{I as n,R as t};