@objectstack/console 9.9.1 → 9.10.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 (77) hide show
  1. package/dist/assets/{AiPendingActionsPage-BI-QQNee.js → AiPendingActionsPage-BDYUc-T8.js} +1 -1
  2. package/dist/assets/{ApiConsolePage-B6QExly9.js → ApiConsolePage-BJB9Xho6.js} +1 -1
  3. package/dist/assets/{AppDocsIndex-S-ilhz4W.js → AppDocsIndex-Cj0DpA3d.js} +1 -1
  4. package/dist/assets/{AppManagementPage-JgLQ-wXj.js → AppManagementPage-BzjUDLx3.js} +1 -1
  5. package/dist/assets/{ApprovalsInboxPage-CAyznoRP.js → ApprovalsInboxPage-Dym3zM3t.js} +1 -1
  6. package/dist/assets/{AuditLogPage-BeEqEy4g.js → AuditLogPage-BJh3wy1L.js} +1 -1
  7. package/dist/assets/{ComponentNavView-DmALsugj.js → ComponentNavView-BFSklq8D.js} +1 -1
  8. package/dist/assets/{ConsoleFloatingChatbot-D13eK4M8.js → ConsoleFloatingChatbot-_UeVODsx.js} +1 -1
  9. package/dist/assets/{DashboardView-P--eXDC-.js → DashboardView-kL9_gMzd.js} +1 -1
  10. package/dist/assets/{DashboardWidgetInspector-VPDtQEP_.js → DashboardWidgetInspector-BN8Yy27Q.js} +1 -1
  11. package/dist/assets/{DeveloperHubPage-DbQwi1EV.js → DeveloperHubPage-CB5nkyun.js} +1 -1
  12. package/dist/assets/{FlowRunsPage-CCS9xNVc.js → FlowRunsPage-65yB_BWO.js} +1 -1
  13. package/dist/assets/{IntegrationsPage-DU_wvj4-.js → IntegrationsPage-8M_88h2y.js} +2 -2
  14. package/dist/assets/{InterfaceListPage-B3jzgT27.js → InterfaceListPage-CBomrdcf.js} +1 -1
  15. package/dist/assets/{ManagedByBadge-Difq_L_A.js → ManagedByBadge-Bmg77Q4v.js} +1 -1
  16. package/dist/assets/{MarketplaceAccessDenied-CXUE33gy.js → MarketplaceAccessDenied-CX0RbkOJ.js} +1 -1
  17. package/dist/assets/{MarketplaceInstalledPage-CBfcARvX.js → MarketplaceInstalledPage-BYXiUCpz.js} +1 -1
  18. package/dist/assets/{MarketplacePackagePage-DOZgrTZo.js → MarketplacePackagePage-C8yVjW5r.js} +2 -2
  19. package/dist/assets/{MarketplacePage-BT-WkhAG.js → MarketplacePage-pVW-NfrG.js} +1 -1
  20. package/dist/assets/{MetadataInspector-BRICMLXW.js → MetadataInspector-CACgSTc7.js} +1 -1
  21. package/dist/assets/{MetadataProvider-Bja7m8Gt.js → MetadataProvider-Dh20h6BN.js} +1 -1
  22. package/dist/assets/{PageView-My4nP5w4.js → PageView-D388xYQA.js} +1 -1
  23. package/dist/assets/{ProfilePage-BAtKSxuK.js → ProfilePage-SXmEEOn3.js} +1 -1
  24. package/dist/assets/{PublicFormsPage-CcRFrTQC.js → PublicFormsPage-aXes2XrW.js} +1 -1
  25. package/dist/assets/{RecordDetailView-CMIRy42W.js → RecordDetailView-DIiHv2mR.js} +1 -1
  26. package/dist/assets/{RecordFormPage-BUfFijzM.js → RecordFormPage-C052nJig.js} +1 -1
  27. package/dist/assets/ReportDefaultInspector-CjR-PcBn.js +1 -0
  28. package/dist/assets/{ReportView-DSrtPxzA.js → ReportView-M_mx8mgW.js} +1 -1
  29. package/dist/assets/{RuntimeDraftBar-B2fJIAhv.js → RuntimeDraftBar-DTf-DIfT.js} +1 -1
  30. package/dist/assets/{SearchResultsPage-C7i-b3gn.js → SearchResultsPage-DGuFKZit.js} +1 -1
  31. package/dist/assets/{SettingsHub-BLEC_8Ao.js → SettingsHub-eYWWi8O5.js} +1 -1
  32. package/dist/assets/{SettingsView-BEjR60F6.js → SettingsView-Cq3IKOhI.js} +1 -1
  33. package/dist/assets/{SystemHubPage-DWGnZfF0.js → SystemHubPage-6FccxnKY.js} +1 -1
  34. package/dist/assets/{highlighted-body-OFNGDK62-DiT7C6XW.js → highlighted-body-OFNGDK62-CKMBhexn.js} +1 -1
  35. package/dist/assets/index-A8r_lURn.js +4 -0
  36. package/dist/assets/index-BGyrRTzt.css +2 -0
  37. package/dist/assets/{mergeServerFields-zZ2r6yTA.js → mergeServerFields-CMIOI8QD.js} +2 -2
  38. package/dist/assets/mermaid-GHXKKRXX-C3g3SOag.js +1 -0
  39. package/dist/assets/metadata-admin-ORqaeHUJ.js +19 -0
  40. package/dist/assets/plugin-calendar-Czocnijo.js +1 -0
  41. package/dist/assets/{plugin-charts-AMObsZz3.js → plugin-charts-dCyWH9k8.js} +1 -1
  42. package/dist/assets/{plugin-chatbot-Ch8YIyYL.js → plugin-chatbot-BpAQS7-q.js} +6 -6
  43. package/dist/assets/plugin-dashboard-CjtE0zwv.js +5 -0
  44. package/dist/assets/{plugin-form-DXCdD2d-.js → plugin-form-Dzz6GAZM.js} +1 -1
  45. package/dist/assets/plugin-gantt-BedjcmIc.js +23 -0
  46. package/dist/assets/plugin-grid-BqmF7p-H.js +6 -0
  47. package/dist/assets/{plugin-kanban-DOsTOpJz.js → plugin-kanban-Dq0xJjXt.js} +1 -1
  48. package/dist/assets/{plugin-map-Bid9UXOR.js → plugin-map-DG62gl97.js} +1 -1
  49. package/dist/assets/{plugin-markdown-BUQOG31j.js → plugin-markdown-BL0QvMCD.js} +1 -1
  50. package/dist/assets/{plugin-report-FxG9jOvy.js → plugin-report-DckNGNq6.js} +1 -1
  51. package/dist/assets/{plugin-timeline-DDrFKEb8.js → plugin-timeline-dBrX3lS3.js} +1 -1
  52. package/dist/assets/plugin-view-DCPYomdU.js +1 -0
  53. package/dist/assets/plugins-views-B-EGcBP2.js +4 -0
  54. package/dist/assets/{resolveActionParams-xmwfLvud.js → resolveActionParams-B_7wSkli.js} +1 -1
  55. package/dist/assets/{skeletons-B_SNEnMn.js → skeletons-BK7w4pLE.js} +1 -1
  56. package/dist/assets/src-9qM7N8MR.js +2 -0
  57. package/dist/assets/{src-DbxuLwqh.js → src-Czx03pos.js} +1 -1
  58. package/dist/assets/{types-CosU35As.js → types-C2_UYDEK.js} +1 -1
  59. package/dist/assets/{ui-components-CrPYFyEM.js → ui-components-NS_7__gn.js} +7 -7
  60. package/dist/assets/{ui-layout-DAWxaQvy.js → ui-layout-BdKOzi1L.js} +1 -1
  61. package/dist/assets/{useActionModal-DsVCm46J.js → useActionModal-BE61500N.js} +1 -1
  62. package/dist/assets/{useReconcileOnError-D6sIYKrb.js → useReconcileOnError-Cvd01WQv.js} +1 -1
  63. package/dist/assets/{utils-bipVuqQL.js → utils-29quoGQV.js} +1 -1
  64. package/dist/index.html +3 -3
  65. package/package.json +1 -1
  66. package/dist/assets/ReportDefaultInspector-C8gR3RMr.js +0 -1
  67. package/dist/assets/index-BgnAjV6_.js +0 -4
  68. package/dist/assets/index-CJe1zUD0.css +0 -2
  69. package/dist/assets/mermaid-GHXKKRXX-CK-9EMhD.js +0 -1
  70. package/dist/assets/metadata-admin-BgoJzjrj.js +0 -19
  71. package/dist/assets/plugin-calendar-DQC9zdKq.js +0 -1
  72. package/dist/assets/plugin-dashboard-C7fxXXeO.js +0 -5
  73. package/dist/assets/plugin-gantt-BHmpu6VX.js +0 -23
  74. package/dist/assets/plugin-grid-boi_rkH3.js +0 -6
  75. package/dist/assets/plugin-view-D58aYgqA.js +0 -1
  76. package/dist/assets/plugins-views-DUKPQNs8.js +0 -4
  77. package/dist/assets/src-DXFkWHTV.js +0 -2
@@ -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-DR370ovB.js";import{$n as a,Co as o,Ct as s,Et as c,Gn as l,Ki as u,St as d,Ts as f,Tt as p,Un as m,Wn as h,Z as g,_t as _,io as v,ni as y,pc as b,qi as x,vt as S,wt as C,xt as w,yt as T,zt as E}from"./ui-components-CrPYFyEM.js";import{_ as D,c as O,d as k,g as A,h as j,n as M,o as N,p as P,s as F,t as I,u as L}from"./vendor-dndkit-DMFEUxSy.js";var R=e(t(),1),z=i();function B(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 V(e){let t=B(e);return t?`${Math.round(t.h)} ${Math.round(t.s)}% ${Math.round(t.l)}%`:null}function H(e){let t=B(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 U(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 W(e,t){(0,R.useEffect)(()=>{let n=document.documentElement,r=()=>n.classList.contains(`dark`),i=()=>{if(e?.primaryColor){let t=V(e.primaryColor),i=H(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%`:U(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=V(e.accentColor),i=H(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%`:U(e.accentColor)))}else n.style.removeProperty(`--brand-accent`),n.style.removeProperty(`--brand-accent-hsl`),n.style.removeProperty(`--accent`),n.style.removeProperty(`--accent-foreground`)};i();let a=new MutationObserver(e=>{for(let t of e)if(t.type===`attributes`&&t.attributeName===`class`){i();break}});if(a.observe(n,{attributes:!0,attributeFilter:[`class`]}),e?.favicon){let t=document.querySelector(`#favicon`)||document.querySelector(`link[rel="icon"]`);t&&(t.href=e.favicon)}return t&&(document.title=t),()=>{a.disconnect(),n.style.removeProperty(`--brand-primary`),n.style.removeProperty(`--brand-primary-hsl`),n.style.removeProperty(`--brand-accent`),n.style.removeProperty(`--brand-accent-hsl`),n.style.removeProperty(`--primary`),n.style.removeProperty(`--primary-foreground`),n.style.removeProperty(`--ring`),n.style.removeProperty(`--sidebar-primary`),n.style.removeProperty(`--sidebar-ring`),n.style.removeProperty(`--accent`),n.style.removeProperty(`--accent-foreground`)}},[e?.primaryColor,e?.accentColor,e?.favicon,t])}function G({sidebar:e,navbar:t,children:n,className:r,defaultOpen:i=!0,branding:a}){return W(a,a?.title),(0,z.jsxs)(c,{defaultOpen:i,className:`!flex-col h-svh overflow-hidden`,children:[(0,z.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,z.jsxs)(`div`,{className:`flex flex-1 min-h-0 w-full`,children:[e,(0,z.jsx)(w,{className:`min-w-0`,children:(0,z.jsx)(`main`,{className:b(`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 K(e){return e?g(e):o}function q(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 J(e,t,n,r,i,a,o){let s=q(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 ee=e=>!(e===!1||e===`false`),Y=()=>!0,X=()=>!0,te=/\{(current_user_id|current_org_id|[a-z][a-z0-9_]*)\}/g;function Z(e,t){if(!e.includes(`{`))return e;let n=!1,r=e.replace(te,(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 Q(e,t,n){switch(e.type){case`object`:{let r=`${t}/${e.objectName??``}`,i=e.recordId;if(i){let t=Z(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=Z(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=Z(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 ne(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 re(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=re(r.children,t);return n.length>0&&e.push({...r,children:n}),e}return q(r.label).toLowerCase().includes(n)&&e.push(r),e},[])}var ie=5;function ae({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}=N({id:e.id,disabled:!c});return(0,z.jsx)(`div`,{ref:v,style:{transform:D.Transform.toString(y),transition:b,opacity:x?.5:void 0,zIndex:x?10:void 0},...g,children:(0,z.jsx)($,{item:e,basePath:t,evalVis:n,checkPerm:r,checkCap:i,onAction:a,enablePinning:o,onPinToggle:s,dragListeners:c?_:void 0,resolveObjectLabel:l,resolveDashboardLabel:u,resolveGroupLabel:d,resolveViewLabel:f,resolveItemLabel:p,t:m,templateContext:h})})}function $({item:e,basePath:t,evalVis:i,checkPerm:o,checkCap:c,onAction:g,enablePinning:y,onPinToggle:b,dragListeners:w,resolveObjectLabel:D,resolveDashboardLabel:O,resolveGroupLabel:k,resolveViewLabel:A,resolveItemLabel:j,t:M,templateContext:N}){let P=n(),F=(()=>{let t=e.expanded;if(typeof t==`boolean`)return t;if(typeof e.defaultOpen==`boolean`)return e.defaultOpen})(),I=e.type===`group`?e.children?.length??0:0,[L,B]=(0,R.useState)(R.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}=Q(r,t,N);if(ne(r,e,P.pathname))return!0}return!1};return n(e.children)},[e,t,P.pathname])?!0:F??!(I>=8));if(!i(e.visible)||e.requiredPermissions?.length&&!o(e.requiredPermissions))return null;let V=e.requiresObject,H=e.requiresService;if(V&&!c(`object`,V)||H&&!c(`service`,H))return null;if(e.type===`separator`)return(0,z.jsx)(E,{className:`my-2`});if(e.type===`group`){let n=(e.children??[]).slice().sort((e,t)=>(e.order??0)-(t.order??0));return(0,z.jsx)(m,{open:L,onOpenChange:B,children:(0,z.jsxs)(_,{children:[(0,z.jsx)(T,{asChild:!0,children:(0,z.jsxs)(l,{className:`flex w-full items-center justify-between`,children:[J(e,D,M,O,k,A,j),(0,z.jsx)(f,{className:`ml-auto h-4 w-4 transition-transform ${L?`rotate-90`:``}`})]})}),(0,z.jsx)(h,{children:(0,z.jsx)(S,{children:(0,z.jsx)(d,{children:n.map(e=>(0,z.jsx)($,{item:e,basePath:t,evalVis:i,checkPerm:o,checkCap:c,onAction:g,enablePinning:y,onPinToggle:b,resolveObjectLabel:D,resolveDashboardLabel:O,resolveGroupLabel:k,resolveViewLabel:A,resolveItemLabel:j,t:M,templateContext:N},e.id))})})})]})})}if(e.type===`action`){let n=K(e.icon),r=q(e.label,M);return(0,z.jsxs)(p,{children:[w&&(0,z.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`,...w,children:(0,z.jsx)(v,{className:`h-3.5 w-3.5`})}),(0,z.jsxs)(C,{tooltip:r,onClick:()=>g?.(e),children:[(0,z.jsx)(n,{className:`h-4 w-4`}),(0,z.jsx)(`span`,{children:r}),e.badge!=null&&(0,z.jsx)(a,{variant:e.badgeVariant??`default`,className:`ml-auto text-[10px] px-1.5 py-0`,children:e.badge})]}),y&&b&&(0,z.jsx)(s,{showOnHover:!0,onClick:()=>b(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,z.jsx)(x,{className:`h-3.5 w-3.5`}):(0,z.jsx)(u,{className:`h-3.5 w-3.5`})})]})}let U=K(e.icon),{href:W,external:G}=Q(e,t,N),ee=ne(e,W,P.pathname),Y=J(e,D,M,O,k,A,j),X=(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(U,{className:`h-4 w-4`}),(0,z.jsx)(`span`,{children:Y}),e.badge!=null&&(0,z.jsx)(a,{variant:e.badgeVariant??`default`,className:`ml-auto text-[10px] px-1.5 py-0`,children:e.badge})]});return(0,z.jsxs)(p,{children:[w&&(0,z.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`,...w,children:(0,z.jsx)(v,{className:`h-3.5 w-3.5`})}),(0,z.jsx)(C,{asChild:!0,isActive:ee,tooltip:Y,children:G?(0,z.jsx)(`a`,{href:W,target:`_blank`,rel:`noopener noreferrer`,children:X}):(0,z.jsx)(r,{to:W,children:X})}),y&&b&&(0,z.jsx)(s,{showOnHover:!0,onClick:()=>b(e.id,!e.pinned,e,t),"aria-label":M?M(e.pinned?`console.nav.unpinItem`:`console.nav.pinItem`,{defaultValue:e.pinned?`Unpin ${Y}`:`Pin ${Y}`,name:Y}):e.pinned?`Unpin ${Y}`:`Pin ${Y}`,children:e.pinned?(0,z.jsx)(x,{className:`h-3.5 w-3.5`}):(0,z.jsx)(u,{className:`h-3.5 w-3.5`})})]})}function oe({items:e,basePath:t=``,evaluateVisibility:n=ee,checkPermission:r=Y,checkCapability:i=X,onAction:a,searchQuery:o,enablePinning:s,onPinToggle:c,enableReorder:l,onReorder:u,resolveObjectLabel:f,resolveDashboardLabel:p,resolveGroupLabel:m,resolveViewLabel:h,resolveItemLabel:g,t:v,templateContext:b}){let x=(0,R.useMemo)(()=>o?re(e,o):e,[e,o]),C=(0,R.useMemo)(()=>se(x),[x]),w=x.slice().sort((e,t)=>(e.order??0)-(t.order??0)),E=A(j(k,{activationConstraint:{distance:ie}}),j(L)),D=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(M(w,r,i).map((e,t)=>({...e,order:t})))},N={basePath:t,evalVis:n,checkPerm:r,checkCap:i,onAction:a,enablePinning:s,onPinToggle:c,resolveObjectLabel:f,resolveDashboardLabel:p,resolveGroupLabel:m,resolveViewLabel:h,resolveItemLabel:g,t:v,templateContext:b},B=w.some(e=>e.type===`group`),V=C.length>0&&s?(0,z.jsxs)(_,{children:[(0,z.jsxs)(T,{className:`flex items-center gap-1.5`,children:[(0,z.jsx)(y,{className:`h-3.5 w-3.5`}),v?v(`console.nav.favorites`,{defaultValue:`Favorites`}):`Favorites`]}),(0,z.jsx)(S,{children:(0,z.jsx)(d,{children:C.map(e=>(0,z.jsx)($,{item:e,...N},`fav-${e.id}`))})})]}):null;if(!B){let e=w.filter(e=>e.type!==`group`).map(e=>e.id);return(0,z.jsxs)(z.Fragment,{children:[V,(0,z.jsx)(_,{children:(0,z.jsx)(S,{children:l?(0,z.jsx)(O,{sensors:E,collisionDetection:P,onDragEnd:D,children:(0,z.jsx)(I,{items:e,strategy:F,children:(0,z.jsx)(d,{children:w.map(e=>(0,z.jsx)(ae,{item:e,enableReorder:l,...N},e.id))})})}):(0,z.jsx)(d,{children:w.map(e=>(0,z.jsx)($,{item:e,...N},e.id))})})})]})}let H=[],U=[],W=e=>{if(U.length===0)return;let t=U;U=[],H.push((0,z.jsx)(_,{children:(0,z.jsx)(S,{children:(0,z.jsx)(d,{children:t.map(e=>(0,z.jsx)($,{item:e,...N},e.id))})})},e))};return w.forEach((e,t)=>{e.type===`group`?(W(`leaf-${t}`),H.push((0,z.jsx)($,{item:e,...N},e.id))):U.push(e)}),W(`leaf-end`),(0,z.jsxs)(z.Fragment,{children:[V,H]})}function se(e){let t=[];for(let n of e)n.pinned&&n.type!==`group`&&n.type!==`separator`&&t.push(n),n.children?.length&&t.push(...se(n.children));return t}export{Q as n,G as r,oe 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-DR370ovB.js";import{$n as a,Co as o,Ct as s,Et as c,Gn as l,Ki as u,St as d,Ts as f,Tt as p,Un as m,Wn as h,Z as g,_t as _,io as v,ni as y,pc as b,qi as x,vt as S,wt as C,xt as w,yt as T,zt as E}from"./ui-components-NS_7__gn.js";import{_ as D,c as O,d as k,g as A,h as j,n as M,o as N,p as P,s as F,t as I,u as L}from"./vendor-dndkit-DMFEUxSy.js";var R=e(t(),1),z=i();function B(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 V(e){let t=B(e);return t?`${Math.round(t.h)} ${Math.round(t.s)}% ${Math.round(t.l)}%`:null}function H(e){let t=B(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 U(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 W(e,t){(0,R.useEffect)(()=>{let n=document.documentElement,r=()=>n.classList.contains(`dark`),i=()=>{if(e?.primaryColor){let t=V(e.primaryColor),i=H(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%`:U(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=V(e.accentColor),i=H(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%`:U(e.accentColor)))}else n.style.removeProperty(`--brand-accent`),n.style.removeProperty(`--brand-accent-hsl`),n.style.removeProperty(`--accent`),n.style.removeProperty(`--accent-foreground`)};i();let a=new MutationObserver(e=>{for(let t of e)if(t.type===`attributes`&&t.attributeName===`class`){i();break}});if(a.observe(n,{attributes:!0,attributeFilter:[`class`]}),e?.favicon){let t=document.querySelector(`#favicon`)||document.querySelector(`link[rel="icon"]`);t&&(t.href=e.favicon)}return t&&(document.title=t),()=>{a.disconnect(),n.style.removeProperty(`--brand-primary`),n.style.removeProperty(`--brand-primary-hsl`),n.style.removeProperty(`--brand-accent`),n.style.removeProperty(`--brand-accent-hsl`),n.style.removeProperty(`--primary`),n.style.removeProperty(`--primary-foreground`),n.style.removeProperty(`--ring`),n.style.removeProperty(`--sidebar-primary`),n.style.removeProperty(`--sidebar-ring`),n.style.removeProperty(`--accent`),n.style.removeProperty(`--accent-foreground`)}},[e?.primaryColor,e?.accentColor,e?.favicon,t])}function G({sidebar:e,navbar:t,children:n,className:r,defaultOpen:i=!0,branding:a}){return W(a,a?.title),(0,z.jsxs)(c,{defaultOpen:i,className:`!flex-col h-svh overflow-hidden`,children:[(0,z.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,z.jsxs)(`div`,{className:`flex flex-1 min-h-0 w-full`,children:[e,(0,z.jsx)(w,{className:`min-w-0`,children:(0,z.jsx)(`main`,{className:b(`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 K(e){return e?g(e):o}function q(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 J(e,t,n,r,i,a,o){let s=q(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 ee=e=>!(e===!1||e===`false`),Y=()=>!0,X=()=>!0,te=/\{(current_user_id|current_org_id|[a-z][a-z0-9_]*)\}/g;function Z(e,t){if(!e.includes(`{`))return e;let n=!1,r=e.replace(te,(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 Q(e,t,n){switch(e.type){case`object`:{let r=`${t}/${e.objectName??``}`,i=e.recordId;if(i){let t=Z(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=Z(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=Z(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 ne(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 re(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=re(r.children,t);return n.length>0&&e.push({...r,children:n}),e}return q(r.label).toLowerCase().includes(n)&&e.push(r),e},[])}var ie=5;function ae({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}=N({id:e.id,disabled:!c});return(0,z.jsx)(`div`,{ref:v,style:{transform:D.Transform.toString(y),transition:b,opacity:x?.5:void 0,zIndex:x?10:void 0},...g,children:(0,z.jsx)($,{item:e,basePath:t,evalVis:n,checkPerm:r,checkCap:i,onAction:a,enablePinning:o,onPinToggle:s,dragListeners:c?_:void 0,resolveObjectLabel:l,resolveDashboardLabel:u,resolveGroupLabel:d,resolveViewLabel:f,resolveItemLabel:p,t:m,templateContext:h})})}function $({item:e,basePath:t,evalVis:i,checkPerm:o,checkCap:c,onAction:g,enablePinning:y,onPinToggle:b,dragListeners:w,resolveObjectLabel:D,resolveDashboardLabel:O,resolveGroupLabel:k,resolveViewLabel:A,resolveItemLabel:j,t:M,templateContext:N}){let P=n(),F=(()=>{let t=e.expanded;if(typeof t==`boolean`)return t;if(typeof e.defaultOpen==`boolean`)return e.defaultOpen})(),I=e.type===`group`?e.children?.length??0:0,[L,B]=(0,R.useState)(R.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}=Q(r,t,N);if(ne(r,e,P.pathname))return!0}return!1};return n(e.children)},[e,t,P.pathname])?!0:F??!(I>=8));if(!i(e.visible)||e.requiredPermissions?.length&&!o(e.requiredPermissions))return null;let V=e.requiresObject,H=e.requiresService;if(V&&!c(`object`,V)||H&&!c(`service`,H))return null;if(e.type===`separator`)return(0,z.jsx)(E,{className:`my-2`});if(e.type===`group`){let n=(e.children??[]).slice().sort((e,t)=>(e.order??0)-(t.order??0));return(0,z.jsx)(m,{open:L,onOpenChange:B,children:(0,z.jsxs)(_,{children:[(0,z.jsx)(T,{asChild:!0,children:(0,z.jsxs)(l,{className:`flex w-full items-center justify-between`,children:[J(e,D,M,O,k,A,j),(0,z.jsx)(f,{className:`ml-auto h-4 w-4 transition-transform ${L?`rotate-90`:``}`})]})}),(0,z.jsx)(h,{children:(0,z.jsx)(S,{children:(0,z.jsx)(d,{children:n.map(e=>(0,z.jsx)($,{item:e,basePath:t,evalVis:i,checkPerm:o,checkCap:c,onAction:g,enablePinning:y,onPinToggle:b,resolveObjectLabel:D,resolveDashboardLabel:O,resolveGroupLabel:k,resolveViewLabel:A,resolveItemLabel:j,t:M,templateContext:N},e.id))})})})]})})}if(e.type===`action`){let n=K(e.icon),r=q(e.label,M);return(0,z.jsxs)(p,{children:[w&&(0,z.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`,...w,children:(0,z.jsx)(v,{className:`h-3.5 w-3.5`})}),(0,z.jsxs)(C,{tooltip:r,onClick:()=>g?.(e),children:[(0,z.jsx)(n,{className:`h-4 w-4`}),(0,z.jsx)(`span`,{children:r}),e.badge!=null&&(0,z.jsx)(a,{variant:e.badgeVariant??`default`,className:`ml-auto text-[10px] px-1.5 py-0`,children:e.badge})]}),y&&b&&(0,z.jsx)(s,{showOnHover:!0,onClick:()=>b(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,z.jsx)(x,{className:`h-3.5 w-3.5`}):(0,z.jsx)(u,{className:`h-3.5 w-3.5`})})]})}let U=K(e.icon),{href:W,external:G}=Q(e,t,N),ee=ne(e,W,P.pathname),Y=J(e,D,M,O,k,A,j),X=(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(U,{className:`h-4 w-4`}),(0,z.jsx)(`span`,{children:Y}),e.badge!=null&&(0,z.jsx)(a,{variant:e.badgeVariant??`default`,className:`ml-auto text-[10px] px-1.5 py-0`,children:e.badge})]});return(0,z.jsxs)(p,{children:[w&&(0,z.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`,...w,children:(0,z.jsx)(v,{className:`h-3.5 w-3.5`})}),(0,z.jsx)(C,{asChild:!0,isActive:ee,tooltip:Y,children:G?(0,z.jsx)(`a`,{href:W,target:`_blank`,rel:`noopener noreferrer`,children:X}):(0,z.jsx)(r,{to:W,children:X})}),y&&b&&(0,z.jsx)(s,{showOnHover:!0,onClick:()=>b(e.id,!e.pinned,e,t),"aria-label":M?M(e.pinned?`console.nav.unpinItem`:`console.nav.pinItem`,{defaultValue:e.pinned?`Unpin ${Y}`:`Pin ${Y}`,name:Y}):e.pinned?`Unpin ${Y}`:`Pin ${Y}`,children:e.pinned?(0,z.jsx)(x,{className:`h-3.5 w-3.5`}):(0,z.jsx)(u,{className:`h-3.5 w-3.5`})})]})}function oe({items:e,basePath:t=``,evaluateVisibility:n=ee,checkPermission:r=Y,checkCapability:i=X,onAction:a,searchQuery:o,enablePinning:s,onPinToggle:c,enableReorder:l,onReorder:u,resolveObjectLabel:f,resolveDashboardLabel:p,resolveGroupLabel:m,resolveViewLabel:h,resolveItemLabel:g,t:v,templateContext:b}){let x=(0,R.useMemo)(()=>o?re(e,o):e,[e,o]),C=(0,R.useMemo)(()=>se(x),[x]),w=x.slice().sort((e,t)=>(e.order??0)-(t.order??0)),E=A(j(k,{activationConstraint:{distance:ie}}),j(L)),D=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(M(w,r,i).map((e,t)=>({...e,order:t})))},N={basePath:t,evalVis:n,checkPerm:r,checkCap:i,onAction:a,enablePinning:s,onPinToggle:c,resolveObjectLabel:f,resolveDashboardLabel:p,resolveGroupLabel:m,resolveViewLabel:h,resolveItemLabel:g,t:v,templateContext:b},B=w.some(e=>e.type===`group`),V=C.length>0&&s?(0,z.jsxs)(_,{children:[(0,z.jsxs)(T,{className:`flex items-center gap-1.5`,children:[(0,z.jsx)(y,{className:`h-3.5 w-3.5`}),v?v(`console.nav.favorites`,{defaultValue:`Favorites`}):`Favorites`]}),(0,z.jsx)(S,{children:(0,z.jsx)(d,{children:C.map(e=>(0,z.jsx)($,{item:e,...N},`fav-${e.id}`))})})]}):null;if(!B){let e=w.filter(e=>e.type!==`group`).map(e=>e.id);return(0,z.jsxs)(z.Fragment,{children:[V,(0,z.jsx)(_,{children:(0,z.jsx)(S,{children:l?(0,z.jsx)(O,{sensors:E,collisionDetection:P,onDragEnd:D,children:(0,z.jsx)(I,{items:e,strategy:F,children:(0,z.jsx)(d,{children:w.map(e=>(0,z.jsx)(ae,{item:e,enableReorder:l,...N},e.id))})})}):(0,z.jsx)(d,{children:w.map(e=>(0,z.jsx)($,{item:e,...N},e.id))})})})]})}let H=[],U=[],W=e=>{if(U.length===0)return;let t=U;U=[],H.push((0,z.jsx)(_,{children:(0,z.jsx)(S,{children:(0,z.jsx)(d,{children:t.map(e=>(0,z.jsx)($,{item:e,...N},e.id))})})},e))};return w.forEach((e,t)=>{e.type===`group`?(W(`leaf-${t}`),H.push((0,z.jsx)($,{item:e,...N},e.id))):U.push(e)}),W(`leaf-end`),(0,z.jsxs)(z.Fragment,{children:[V,H]})}function se(e){let t=[];for(let n of e)n.pinned&&n.type!==`group`&&n.type!==`separator`&&t.push(n),n.children?.length&&t.push(...se(n.children));return t}export{Q as n,G as r,oe as t};
@@ -1 +1 @@
1
- import{o as e}from"./rolldown-runtime-CMxvf4Kt.js";import{_ as t,t as n}from"./vendor-react-DR370ovB.js";import{f as r}from"./infrastructure-CJNwTVno.js";import{B as i}from"./framework-BLEk-ou3.js";import{Ft as a,Hn as o,It as s,Ln as c,Lt as l,Pt as u,Rn as d,Rt as f,Vn as p,_n as m,bn as h,hr as g,pc as _,vn as v,xn as y,yn as b,zn as x}from"./ui-components-CrPYFyEM.js";import{n as S}from"./plugin-form-DXCdD2d-.js";import{a as C,c as w,i as T,s as E}from"./RecentItemsProvider-B76qldBH.js";var D=e(t(),1),O=n(),k=`objectui-favorites`,A=`objectui-nav-pins`,j=20,M=20;function N(e){let t=0,n=0,r=!1;for(let i of e)i.type===`nav`?(n++,n>M&&(r=!0)):(t++,t>j&&(r=!0));if(!r)return e;let i=[],a=0,o=0;for(let t of e)t.type===`nav`?o<M&&(i.push(t),o++):a<j&&(i.push(t),a++);return i}function P(e){try{let t=localStorage.getItem(C(k,e));return t?JSON.parse(t):[]}catch{return[]}}function F(e,t){try{localStorage.setItem(C(k,t),JSON.stringify(e))}catch{}}function I(e){let t;try{t=localStorage.getItem(A)}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(A)}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 L=(0,D.createContext)(null);function R({children:e}){let{user:t}=r(),n=t?.id??null,i=w(`favorites`),[a,o]=(0,D.useState)(()=>P(n));(0,D.useEffect)(()=>{o(P(n))},[n]),E(C(k,n),e=>{o(Array.isArray(e)?N(e.filter(e=>e&&typeof e.id==`string`)):[])});let s=(0,D.useRef)(0);(0,D.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=N((Array.isArray(r)?r:[]).filter(e=>e&&typeof e.id==`string`)),l=P(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=N([...a,...d]),p=!0);let{migrated:m,didMigrate:h}=I(f);h&&(f=N(m),p=!0),o(f),F(f,n),p&&c.schedule(f)}catch{}})(),()=>{t=!0}},[i,n]),(0,D.useEffect)(()=>{i||o(e=>{let{migrated:t,didMigrate:r}=I(e);if(!r)return e;let i=N(t);return F(i,n),i})},[i,n]);let c=(0,D.useMemo)(()=>T(async e=>{i&&await i.save(e)},500),[i]);(0,D.useEffect)(()=>()=>{c.flush()},[c]);let l=(0,D.useCallback)(e=>{F(e,n),i&&c.schedule(e)},[n,i,c]),u=(0,D.useCallback)(e=>{o(t=>{if(t.some(t=>t.id===e.id))return t;let n=N([{...e,favoritedAt:new Date().toISOString()},...t]);return l(n),n})},[l]),d=(0,D.useCallback)(e=>{o(t=>{let n=t.filter(t=>t.id!==e);return l(n),n})},[l]),f=(0,D.useCallback)(e=>{o(t=>{let n=t.some(t=>t.id===e.id)?t.filter(t=>t.id!==e.id):N([{...e,favoritedAt:new Date().toISOString()},...t]);return l(n),n})},[l]),p=(0,D.useCallback)(()=>{o([]),l([])},[l]),m=(0,D.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,D.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,D.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,O.jsx)(L.Provider,{value:g,children:e})}function z(){return(0,D.useContext)(L)||{favorites:[],addFavorite:()=>{},removeFavorite:()=>{},toggleFavorite:()=>{},isFavorite:()=>!1,clearFavorites:()=>{},refreshLabel:()=>{},setPinned:()=>{},isPinned:()=>!1,pinnedNavIds:new Set}}function B(){return`${``.replace(/\/$/,``)}/api/v1`}async function V(e,t){let n=await fetch(`${B()}${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 H(e,t,n){let[r,i]=(0,D.useState)(!1),[a,o]=(0,D.useState)(!0),[s,c]=(0,D.useState)([]),l=(0,D.useRef)(!1),u=(0,D.useCallback)(async()=>{if(!(!e||!t)&&!l.current){i(!0);try{c((await V(`/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,D.useEffect)(()=>{if(!e||!t){c([]);return}u()},[e,t,u]);let d=(0,D.useMemo)(()=>s.find(e=>e.status===`pending`)??null,[s]),f=(0,D.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,D.useCallback)(async(e,t)=>{if(!d)throw Error(`No pending request`);let r=await V(`/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,D.useCallback)(e=>m(`approve`,e),[m]),reject:(0,D.useCallback)(e=>m(`reject`,e),[m]),refresh:u}}var U={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`},W={lg:`sm:max-w-2xl`,xl:`sm:max-w-3xl`,full:`sm:max-w-[95vw]`};function G(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 K(e){let[t,n]=(0,D.useState)(null),r=(0,D.useCallback)(e=>{n(t=>(t?.resolve(e),null))},[]),C=(0,D.useCallback)(e=>new Promise(t=>{n({d:G(e),resolve:t})}),[]),w=null;if(t){let n=t.d,C=e=>{e||r({success:!1})};if(n.objectName&&!n.content)w=(0,O.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,O.jsx)(i,{schema:n.content}):n.description?(0,O.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:n.description}):null;w=e===`side`?(0,O.jsx)(u,{open:!0,onOpenChange:C,children:(0,O.jsxs)(a,{side:n.side||`right`,className:_(`w-full overflow-y-auto`,W[n.size||`default`]),children:[n.title&&(0,O.jsxs)(l,{children:[(0,O.jsx)(f,{children:n.title}),n.description&&(0,O.jsx)(s,{children:n.description})]}),(0,O.jsx)(`div`,{className:`py-3`,children:t})]})}):e===`bottom`?(0,O.jsx)(m,{open:!0,onOpenChange:C,children:(0,O.jsxs)(v,{children:[n.title&&(0,O.jsxs)(h,{children:[(0,O.jsx)(y,{children:n.title}),n.description&&(0,O.jsx)(b,{children:n.description})]}),(0,O.jsx)(`div`,{className:`max-h-[75vh] overflow-y-auto px-4 pb-6`,children:t})]})}):(0,O.jsx)(c,{open:!0,onOpenChange:C,children:(0,O.jsxs)(d,{className:_(e===`fullscreen`?`h-[95vh] w-full max-w-[98vw] overflow-y-auto`:U[n.size||`default`]),children:[n.title&&(0,O.jsxs)(p,{children:[(0,O.jsx)(o,{children:n.title}),n.description&&(0,O.jsx)(x,{children:n.description})]}),(0,O.jsx)(`div`,{children:t}),!n.content&&(0,O.jsx)(`div`,{className:`flex justify-end`,children:(0,O.jsx)(g,{onClick:()=>r({success:!0}),children:`OK`})})]})})}}return{modalHandler:C,modalElement:w,closeModal:r}}export{z as i,H as n,R as r,K as t};
1
+ import{o as e}from"./rolldown-runtime-CMxvf4Kt.js";import{_ as t,t as n}from"./vendor-react-DR370ovB.js";import{f as r}from"./infrastructure-CJNwTVno.js";import{B as i}from"./framework-BLEk-ou3.js";import{Ft as a,Hn as o,It as s,Ln as c,Lt as l,Pt as u,Rn as d,Rt as f,Vn as p,_n as m,bn as h,hr as g,pc as _,vn as v,xn as y,yn as b,zn as x}from"./ui-components-NS_7__gn.js";import{n as S}from"./plugin-form-Dzz6GAZM.js";import{a as C,c as w,i as T,s as E}from"./RecentItemsProvider-B76qldBH.js";var D=e(t(),1),O=n(),k=`objectui-favorites`,A=`objectui-nav-pins`,j=20,M=20;function N(e){let t=0,n=0,r=!1;for(let i of e)i.type===`nav`?(n++,n>M&&(r=!0)):(t++,t>j&&(r=!0));if(!r)return e;let i=[],a=0,o=0;for(let t of e)t.type===`nav`?o<M&&(i.push(t),o++):a<j&&(i.push(t),a++);return i}function P(e){try{let t=localStorage.getItem(C(k,e));return t?JSON.parse(t):[]}catch{return[]}}function F(e,t){try{localStorage.setItem(C(k,t),JSON.stringify(e))}catch{}}function I(e){let t;try{t=localStorage.getItem(A)}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(A)}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 L=(0,D.createContext)(null);function R({children:e}){let{user:t}=r(),n=t?.id??null,i=w(`favorites`),[a,o]=(0,D.useState)(()=>P(n));(0,D.useEffect)(()=>{o(P(n))},[n]),E(C(k,n),e=>{o(Array.isArray(e)?N(e.filter(e=>e&&typeof e.id==`string`)):[])});let s=(0,D.useRef)(0);(0,D.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=N((Array.isArray(r)?r:[]).filter(e=>e&&typeof e.id==`string`)),l=P(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=N([...a,...d]),p=!0);let{migrated:m,didMigrate:h}=I(f);h&&(f=N(m),p=!0),o(f),F(f,n),p&&c.schedule(f)}catch{}})(),()=>{t=!0}},[i,n]),(0,D.useEffect)(()=>{i||o(e=>{let{migrated:t,didMigrate:r}=I(e);if(!r)return e;let i=N(t);return F(i,n),i})},[i,n]);let c=(0,D.useMemo)(()=>T(async e=>{i&&await i.save(e)},500),[i]);(0,D.useEffect)(()=>()=>{c.flush()},[c]);let l=(0,D.useCallback)(e=>{F(e,n),i&&c.schedule(e)},[n,i,c]),u=(0,D.useCallback)(e=>{o(t=>{if(t.some(t=>t.id===e.id))return t;let n=N([{...e,favoritedAt:new Date().toISOString()},...t]);return l(n),n})},[l]),d=(0,D.useCallback)(e=>{o(t=>{let n=t.filter(t=>t.id!==e);return l(n),n})},[l]),f=(0,D.useCallback)(e=>{o(t=>{let n=t.some(t=>t.id===e.id)?t.filter(t=>t.id!==e.id):N([{...e,favoritedAt:new Date().toISOString()},...t]);return l(n),n})},[l]),p=(0,D.useCallback)(()=>{o([]),l([])},[l]),m=(0,D.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,D.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,D.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,O.jsx)(L.Provider,{value:g,children:e})}function z(){return(0,D.useContext)(L)||{favorites:[],addFavorite:()=>{},removeFavorite:()=>{},toggleFavorite:()=>{},isFavorite:()=>!1,clearFavorites:()=>{},refreshLabel:()=>{},setPinned:()=>{},isPinned:()=>!1,pinnedNavIds:new Set}}function B(){return`${``.replace(/\/$/,``)}/api/v1`}async function V(e,t){let n=await fetch(`${B()}${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 H(e,t,n){let[r,i]=(0,D.useState)(!1),[a,o]=(0,D.useState)(!0),[s,c]=(0,D.useState)([]),l=(0,D.useRef)(!1),u=(0,D.useCallback)(async()=>{if(!(!e||!t)&&!l.current){i(!0);try{c((await V(`/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,D.useEffect)(()=>{if(!e||!t){c([]);return}u()},[e,t,u]);let d=(0,D.useMemo)(()=>s.find(e=>e.status===`pending`)??null,[s]),f=(0,D.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,D.useCallback)(async(e,t)=>{if(!d)throw Error(`No pending request`);let r=await V(`/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,D.useCallback)(e=>m(`approve`,e),[m]),reject:(0,D.useCallback)(e=>m(`reject`,e),[m]),refresh:u}}var U={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`},W={lg:`sm:max-w-2xl`,xl:`sm:max-w-3xl`,full:`sm:max-w-[95vw]`};function G(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 K(e){let[t,n]=(0,D.useState)(null),r=(0,D.useCallback)(e=>{n(t=>(t?.resolve(e),null))},[]),C=(0,D.useCallback)(e=>new Promise(t=>{n({d:G(e),resolve:t})}),[]),w=null;if(t){let n=t.d,C=e=>{e||r({success:!1})};if(n.objectName&&!n.content)w=(0,O.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,O.jsx)(i,{schema:n.content}):n.description?(0,O.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:n.description}):null;w=e===`side`?(0,O.jsx)(u,{open:!0,onOpenChange:C,children:(0,O.jsxs)(a,{side:n.side||`right`,className:_(`w-full overflow-y-auto`,W[n.size||`default`]),children:[n.title&&(0,O.jsxs)(l,{children:[(0,O.jsx)(f,{children:n.title}),n.description&&(0,O.jsx)(s,{children:n.description})]}),(0,O.jsx)(`div`,{className:`py-3`,children:t})]})}):e===`bottom`?(0,O.jsx)(m,{open:!0,onOpenChange:C,children:(0,O.jsxs)(v,{children:[n.title&&(0,O.jsxs)(h,{children:[(0,O.jsx)(y,{children:n.title}),n.description&&(0,O.jsx)(b,{children:n.description})]}),(0,O.jsx)(`div`,{className:`max-h-[75vh] overflow-y-auto px-4 pb-6`,children:t})]})}):(0,O.jsx)(c,{open:!0,onOpenChange:C,children:(0,O.jsxs)(d,{className:_(e===`fullscreen`?`h-[95vh] w-full max-w-[98vw] overflow-y-auto`:U[n.size||`default`]),children:[n.title&&(0,O.jsxs)(p,{children:[(0,O.jsx)(o,{children:n.title}),n.description&&(0,O.jsx)(x,{children:n.description})]}),(0,O.jsx)(`div`,{children:t}),!n.content&&(0,O.jsx)(`div`,{className:`flex justify-end`,children:(0,O.jsx)(g,{onClick:()=>r({success:!0}),children:`OK`})})]})})}}return{modalHandler:C,modalElement:w,closeModal:r}}export{z as i,H as n,R as r,K as t};
@@ -1 +1 @@
1
- import{o as e}from"./rolldown-runtime-CMxvf4Kt.js";import{_ as t,f as n,u as r}from"./vendor-react-DR370ovB.js";import{I as i,T as a,r as o,w as s}from"./framework-BLEk-ou3.js";import{Dt as c}from"./ui-components-CrPYFyEM.js";import{r as l}from"./vendor-ui-utils-rQOI1gAo.js";import"./AdapterProvider-DJb3ZVmJ.js";import{u}from"./MetadataProvider-Bja7m8Gt.js";import{n as d}from"./RecentItemsProvider-B76qldBH.js";import{i as f}from"./useActionModal-DsVCm46J.js";import{n as p}from"./ui-layout-DAWxaQvy.js";import{n as m}from"./appRoute-D5vwtoc_.js";var h=e(t(),1);function g({objectName:e,objectLabel:t,dataSource:a,onEdit:s,onRefresh:c,onConfirm:u,onToast:d}){let f=r(),{appName:p}=n(),{t:m}=o(),g=`/apps/${p}`,{execute:_,loading:v,error:y,runner:b}=i({context:{objectName:e,objectLabel:t||e,baseUrl:g},onConfirm:u,onToast:d});return(0,h.useEffect)(()=>{b.registerHandler(`create`,async()=>(s?.(null),{success:!0})),b.registerHandler(`delete`,async n=>{let r=Array.isArray(n.params?.records)?n.params.records.filter(e=>e?.id!=null):null;if(r&&r.length>1){let n=await Promise.allSettled(r.map(t=>a.delete(e,t.id))),i=n.filter(e=>e.status===`rejected`).length,o=n.length-i;return c?.(),i===0?(l.success(m(`objectActions.bulkDeleteSuccess`,{count:o,label:t||e,defaultValue:`Deleted ${o} ${t||e} records`})),{success:!0,reload:!0}):(l.error(m(`objectActions.bulkDeletePartial`,{succeeded:o,failed:i,defaultValue:`${o} deleted, ${i} failed`})),{success:!1,error:`${i} failed`})}let i=n.params?.recordId??n.params?.record?.id??r?.[0]?.id??n.recordId;if(!i)return{success:!1,error:m(`objectActions.noRecordId`)};try{return await a.delete(e,i),c?.(),l.success(m(`objectActions.deleteSuccess`,{label:t||e})),{success:!0,reload:!0}}catch(n){return l.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:`${g}/${t}`),{success:!0}}),b.registerHandler(`refresh`,async()=>(c?.(),{success:!0,reload:!0}))},[b,e,a,s,c,f,g,m,t]),{execute:_,create:(0,h.useCallback)(()=>{s?.(null)},[s]),deleteRecord:(0,h.useCallback)(async e=>_({type:`delete`,confirmText:m(`objectActions.deleteConfirm`),params:{recordId:e}}),[_,m]),navigateToView:(0,h.useCallback)(t=>{f(`${g}/${e}/view/${t}`)},[f,g,e]),navigateToRecord:(0,h.useCallback)(t=>{f(`${g}/${e}/record/${encodeURIComponent(t)}`)},[f,g,e]),loading:v,error:y}}var _=20;function v(e,t=``){let{href:n,external:r}=p(e,t);return r?n:!n||n===`#`?``:n}function y(e){return`nav:${e}`}function b(){let{favorites:e,addFavorite:t,removeFavorite:n,setPinned:r,pinnedNavIds:i}=f(),a=(0,h.useCallback)((e,i,a,o)=>{let s=y(e);i?(a&&t({id:s,label:a.label,href:v(a,o??``),type:`nav`,navId:e,pinned:!0}),r(s,!0)):n(s)},[t,n,r]),o=(0,h.useCallback)(e=>i.has(e),[i]),s=(0,h.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<_;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,h.useCallback)(()=>{for(let t of e)t.type===`nav`&&n(t.id)},[e,n]);return{pinnedIds:(0,h.useMemo)(()=>Array.from(i),[i]),togglePin:a,isPinned:o,applyPins:s,clearPins:c}}var x=768,S=1024;function C(){let{setOpen:e,isMobile:t}=c(),n=(0,h.useRef)(e);(0,h.useEffect)(()=>{n.current=e},[e]),(0,h.useEffect)(()=>{if(t)return;let e=!1;function r(){let t=window.innerWidth,r=t>=x&&t<S;r&&!e&&n.current(!1),e=r}return r(),window.addEventListener(`resize`,r),()=>window.removeEventListener(`resize`,r)},[t])}function w(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 T(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 E=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=w(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(T)};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 ee(){let e=s();return(0,h.useMemo)(()=>e?new E(e):null,[e])}var te=0;function D(e=`nav`){return`${e}_${Date.now()}_${++te}`}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 M(e){return typeof e==`string`&&e.startsWith(`sys_`)}function N(e){if(!e||typeof e!=`object`)return!1;let t=e;return t._packageId!=null||t._provenance===`package`?!0:M(t.name)}function P(e){if(!e||typeof e!=`object`)return!1;let t=e,n=t._lock??t.protection?.lock;return n!==`full`&&n!==`no-overlay`}function ne(){let e=s(),{apps:t,refresh:n}=a(),{t:r}=o(),i=(0,h.useRef)(e);i.current=e;let c=(0,h.useRef)(n);c.current=n;let u=(0,h.useCallback)(async(e,t)=>{let n=i.current?.getClient();n&&await n.meta.saveItem(`app`,e,t),await c.current?.()},[]),d=(0,h.useCallback)(e=>m(t,e),[t]),f=(0,h.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 u(e,s),l.success(r(`navigationSync.addedPage`,{name:n||t}),{action:{label:r(`navigationSync.undoLabel`),onClick:async()=>{try{await u(e,{...i,navigation:a}),l.info(r(`navigationSync.undone`))}catch{l.error(r(`navigationSync.undoFailed`))}}}})}catch{l.error(r(`navigationSync.updateFailed`))}},[d,u,r]),p=(0,h.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 u(e,s),l.success(r(`navigationSync.addedDashboard`,{name:n||t}),{action:{label:r(`navigationSync.undoLabel`),onClick:async()=>{try{await u(e,{...i,navigation:a}),l.info(r(`navigationSync.undone`))}catch{l.error(r(`navigationSync.undoFailed`))}}}})}catch{l.error(r(`navigationSync.updateFailed`))}},[d,u,r]),g=(0,h.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 u(e,o),l.success(r(`navigationSync.removedPage`,{name:t}),{action:{label:r(`navigationSync.undoLabel`),onClick:async()=>{try{await u(e,{...n,navigation:i}),l.info(r(`navigationSync.undone`))}catch{l.error(r(`navigationSync.undoFailed`))}}}})}catch{l.error(r(`navigationSync.updateFailed`))}},[d,u,r]),_=(0,h.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 u(e,o),l.success(r(`navigationSync.removedDashboard`,{name:t}),{action:{label:r(`navigationSync.undoLabel`),onClick:async()=>{try{await u(e,{...n,navigation:i}),l.info(r(`navigationSync.undone`))}catch{l.error(r(`navigationSync.undoFailed`))}}}})}catch{l.error(r(`navigationSync.updateFailed`))}},[d,u,r]),v=(0,h.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 u(e,s),l.success(r(`navigationSync.renamedPage`,{oldName:t,newName:n}),{action:{label:r(`navigationSync.undoLabel`),onClick:async()=>{try{await u(e,{...i,navigation:a}),l.info(r(`navigationSync.undone`))}catch{l.error(r(`navigationSync.undoFailed`))}}}})}catch{l.error(r(`navigationSync.updateFailed`))}},[d,u,r]),y=(0,h.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 u(e,s),l.success(r(`navigationSync.renamedDashboard`,{oldName:t,newName:n}),{action:{label:r(`navigationSync.undoLabel`),onClick:async()=>{try{await u(e,{...i,navigation:a}),l.info(r(`navigationSync.undone`))}catch{l.error(r(`navigationSync.undoFailed`))}}}})}catch{l.error(r(`navigationSync.updateFailed`))}},[d,u,r]),b=e=>e&&typeof e==`object`&&`name`in e?e.name:void 0;return{syncPageCreated:f,syncDashboardCreated:p,syncPageDeleted:g,syncDashboardDeleted:_,syncPageRenamed:v,syncDashboardRenamed:y,syncPageCreatedAllApps:(0,h.useCallback)(async(e,n)=>{for(let r of t){let t=b(r);!t||!P(r)||await f(t,e,n)}},[t,f]),syncDashboardCreatedAllApps:(0,h.useCallback)(async(e,n)=>{for(let r of t){let t=b(r);!t||!P(r)||await p(t,e,n)}},[t,p]),syncPageDeletedAllApps:(0,h.useCallback)(async e=>{for(let n of t){let t=b(n);!t||!P(n)||await g(t,e)}},[t,g]),syncDashboardDeletedAllApps:(0,h.useCallback)(async e=>{for(let n of t){let t=b(n);!t||!P(n)||await _(t,e)}},[t,_]),syncPageRenamedAllApps:(0,h.useCallback)(async(e,n)=>{for(let r of t){let t=b(r);!t||!P(r)||await v(t,e,n)}},[t,v]),syncDashboardRenamedAllApps:(0,h.useCallback)(async(e,n)=>{for(let r of t){let t=b(r);!t||!P(r)||await y(t,e,n)}},[t,y])}}function re(){let{pages:e,dashboards:t,apps:n,getTypeStatus:r}=a(),i=s(),o=(0,h.useRef)(i);o.current=i;let c=u(),{syncPageCreated:l,syncDashboardCreated:d,syncPageDeleted:f,syncDashboardDeleted:p}=ne(),m=(0,h.useRef)(null),g=(0,h.useRef)(null),_=(0,h.useRef)(0),v=(0,h.useRef)(!1),y=e=>e&&typeof e==`object`&&`name`in e?e.name:void 0;return(0,h.useEffect)(()=>{if(v.current)return;if(c){m.current=null,g.current=null;return}if(r&&(r(`page`)!==`ready`||r(`dashboard`)!==`ready`))return;let i=e=>new Set(e.filter(e=>!N(e)).map(e=>e?.name).filter(e=>typeof e==`string`&&e.length>0)),a=i(e??[]),o=i(t??[]),s=m.current,u=g.current;if(s===null||u===null){m.current=a,g.current=o;return}let h=[...a].filter(e=>!s.has(e)),b=[...s].filter(e=>!a.has(e)),x=[...o].filter(e=>!u.has(e)),S=[...u].filter(e=>!o.has(e));if(h.length===0&&b.length===0&&x.length===0&&S.length===0){m.current=a,g.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||!P(e))){for(let e of h){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 d(t,e)}for(let e of S){if(w)break;await p(t,e)}}}}finally{_.current===C&&(m.current=a,g.current=o,v.current=!1)}})(),()=>{w=!0}},[e,t,n,c,r,l,d,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 R({pathname:e,appName:t,objects:n=[],basePathSegment:r=`apps`,disabled:i=!1}){let{addRecentItem:a}=d(),o=(0,h.useRef)(n);o.current=n,(0,h.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])}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 q(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??[])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}:{}});if(t.length!==0)return{id:e.id,role:e.role,parts:t}}).filter(e=>!!e)}function J(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)?J(e.parts):[]}function ie(e,t){for(let n of J(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 Y(e){if(!e)return[];let t=[],n=new Map;return e.forEach((e,r)=>{let i=e.role;if(i===`tool`){ie(e.content,n);return}if(i!==`user`&&i!==`assistant`&&i!==`system`)return;let a=J(e.content);if(a.length!==0){if(i===`assistant`)for(let e of a){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 X(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 Z(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 ae(e,t){await fetch(`${e}/conversations/${encodeURIComponent(t)}`,{method:`DELETE`,credentials:`include`}).catch(()=>{})}function oe(e){let{userId:t,scope:n,apiBase:r,activeId:i,forceNew:a}=e,[o,s]=(0,h.useState)(void 0),[c,l]=(0,h.useState)([]),[u,d]=(0,h.useState)(!!t),f=(0,h.useRef)(!0),p=(0,h.useRef)(void 0);return(0,h.useEffect)(()=>(f.current=!0,()=>{f.current=!1}),[]),(0,h.useEffect)(()=>{if(!t){s(void 0),l([]),d(!1),p.current=void 0;return}if(!i&&!a&&p.current===t&&o)return;let e=!1,c=V(t,n);return!i&&a&&(s(void 0),l([])),d(!0),(async()=>{try{if(i){let n=await X(r,i);if(e)return;if(n){U(c,n.id),s(n.id);let e=Y(n.messages);l(e.length>0?e:G(n.id)),p.current=t;return}U(c,void 0),K(i,[])}else if(!a){let n=H(c);if(n){let i=await X(r,n);if(e)return;if(i){s(i.id);let e=Y(i.messages);l(e.length>0?e:G(i.id)),p.current=t;return}U(c,void 0),K(n,[])}}let n=await Z(r);if(e)return;U(c,n.id),s(n.id),l(Y(n.messages)),p.current=t}catch{e||(s(void 0),l([]))}finally{e||d(!1)}})(),()=>{e=!0}},[t,n,r,i,a]),{conversationId:o,initialMessages:c,isLoading:u,reset:(0,h.useCallback)(async()=>{if(!t)return;let e=V(t,n);d(!0);try{o&&await ae(r,o),K(o,[]),U(e,void 0);let t=await Z(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])}}var se=new Set([`new chat`,`new conversation`,`untitled`,`新对话`]);function ce(e){let t=e?.trim().toLowerCase();return!t||se.has(t)}function le(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=le(e)??Q(e.preview);return{id:e.id,title:ce(t)?void 0:t,agentId:e.agentId,createdAt:e.createdAt,updatedAt:e.updatedAt,preview:n}}async function ue(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 de(e){let{userId:t,apiBase:n,limit:r=50,refreshKey:i}=e,[a,o]=(0,h.useState)([]),[s,c]=(0,h.useState)(!!t),[l,u]=(0,h.useState)(void 0),[d,f]=(0,h.useState)(0),p=(0,h.useCallback)(async()=>{f(e=>e+1)},[]),m=(0,h.useCallback)(async e=>{try{await fetch(`${n}/conversations/${encodeURIComponent(e)}`,{method:`DELETE`,credentials:`include`})}finally{o(t=>t.filter(t=>t.id!==e))}},[n]),g=(0,h.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,h.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=>ue(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:g}}async function fe(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 pe(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 me(e){let{chatApi:t,conversationId:n}=e,[r,i]=(0,h.useState)(!1),a=(0,h.useRef)(void 0);return{errorSuppressed:r,handleChatError:(0,h.useCallback)(async e=>{let r=t?.replace(/\/agents\/[^/]+\/chat$/,``);if(!n||!r){i(!1);return}try{let e=Y((await X(r,n))?.messages);if(pe(e)&&a.current){a.current(e),i(!0);return}}catch{}i(!1)},[n,t]),setMessagesRef:a,resetSuppression:(0,h.useCallback)(()=>i(!1),[])}}export{oe as a,re as c,b as d,g as f,q as i,ee as l,fe as n,K as o,de as r,R as s,me as t,C as u};
1
+ import{o as e}from"./rolldown-runtime-CMxvf4Kt.js";import{_ as t,f as n,u as r}from"./vendor-react-DR370ovB.js";import{I as i,T as a,r as o,w as s}from"./framework-BLEk-ou3.js";import{Dt as c}from"./ui-components-NS_7__gn.js";import{r as l}from"./vendor-ui-utils-rQOI1gAo.js";import"./AdapterProvider-DJb3ZVmJ.js";import{u}from"./MetadataProvider-Dh20h6BN.js";import{n as d}from"./RecentItemsProvider-B76qldBH.js";import{i as f}from"./useActionModal-BE61500N.js";import{n as p}from"./ui-layout-BdKOzi1L.js";import{n as m}from"./appRoute-D5vwtoc_.js";var h=e(t(),1);function g({objectName:e,objectLabel:t,dataSource:a,onEdit:s,onRefresh:c,onConfirm:u,onToast:d}){let f=r(),{appName:p}=n(),{t:m}=o(),g=`/apps/${p}`,{execute:_,loading:v,error:y,runner:b}=i({context:{objectName:e,objectLabel:t||e,baseUrl:g},onConfirm:u,onToast:d});return(0,h.useEffect)(()=>{b.registerHandler(`create`,async()=>(s?.(null),{success:!0})),b.registerHandler(`delete`,async n=>{let r=Array.isArray(n.params?.records)?n.params.records.filter(e=>e?.id!=null):null;if(r&&r.length>1){let n=await Promise.allSettled(r.map(t=>a.delete(e,t.id))),i=n.filter(e=>e.status===`rejected`).length,o=n.length-i;return c?.(),i===0?(l.success(m(`objectActions.bulkDeleteSuccess`,{count:o,label:t||e,defaultValue:`Deleted ${o} ${t||e} records`})),{success:!0,reload:!0}):(l.error(m(`objectActions.bulkDeletePartial`,{succeeded:o,failed:i,defaultValue:`${o} deleted, ${i} failed`})),{success:!1,error:`${i} failed`})}let i=n.params?.recordId??n.params?.record?.id??r?.[0]?.id??n.recordId;if(!i)return{success:!1,error:m(`objectActions.noRecordId`)};try{return await a.delete(e,i),c?.(),l.success(m(`objectActions.deleteSuccess`,{label:t||e})),{success:!0,reload:!0}}catch(n){return l.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:`${g}/${t}`),{success:!0}}),b.registerHandler(`refresh`,async()=>(c?.(),{success:!0,reload:!0}))},[b,e,a,s,c,f,g,m,t]),{execute:_,create:(0,h.useCallback)(()=>{s?.(null)},[s]),deleteRecord:(0,h.useCallback)(async e=>_({type:`delete`,confirmText:m(`objectActions.deleteConfirm`),params:{recordId:e}}),[_,m]),navigateToView:(0,h.useCallback)(t=>{f(`${g}/${e}/view/${t}`)},[f,g,e]),navigateToRecord:(0,h.useCallback)(t=>{f(`${g}/${e}/record/${encodeURIComponent(t)}`)},[f,g,e]),loading:v,error:y}}var _=20;function v(e,t=``){let{href:n,external:r}=p(e,t);return r?n:!n||n===`#`?``:n}function y(e){return`nav:${e}`}function b(){let{favorites:e,addFavorite:t,removeFavorite:n,setPinned:r,pinnedNavIds:i}=f(),a=(0,h.useCallback)((e,i,a,o)=>{let s=y(e);i?(a&&t({id:s,label:a.label,href:v(a,o??``),type:`nav`,navId:e,pinned:!0}),r(s,!0)):n(s)},[t,n,r]),o=(0,h.useCallback)(e=>i.has(e),[i]),s=(0,h.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<_;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,h.useCallback)(()=>{for(let t of e)t.type===`nav`&&n(t.id)},[e,n]);return{pinnedIds:(0,h.useMemo)(()=>Array.from(i),[i]),togglePin:a,isPinned:o,applyPins:s,clearPins:c}}var x=768,S=1024;function C(){let{setOpen:e,isMobile:t}=c(),n=(0,h.useRef)(e);(0,h.useEffect)(()=>{n.current=e},[e]),(0,h.useEffect)(()=>{if(t)return;let e=!1;function r(){let t=window.innerWidth,r=t>=x&&t<S;r&&!e&&n.current(!1),e=r}return r(),window.addEventListener(`resize`,r),()=>window.removeEventListener(`resize`,r)},[t])}function w(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 T(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 E=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=w(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(T)};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 ee(){let e=s();return(0,h.useMemo)(()=>e?new E(e):null,[e])}var te=0;function D(e=`nav`){return`${e}_${Date.now()}_${++te}`}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 M(e){return typeof e==`string`&&e.startsWith(`sys_`)}function N(e){if(!e||typeof e!=`object`)return!1;let t=e;return t._packageId!=null||t._provenance===`package`?!0:M(t.name)}function P(e){if(!e||typeof e!=`object`)return!1;let t=e,n=t._lock??t.protection?.lock;return n!==`full`&&n!==`no-overlay`}function ne(){let e=s(),{apps:t,refresh:n}=a(),{t:r}=o(),i=(0,h.useRef)(e);i.current=e;let c=(0,h.useRef)(n);c.current=n;let u=(0,h.useCallback)(async(e,t)=>{let n=i.current?.getClient();n&&await n.meta.saveItem(`app`,e,t),await c.current?.()},[]),d=(0,h.useCallback)(e=>m(t,e),[t]),f=(0,h.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 u(e,s),l.success(r(`navigationSync.addedPage`,{name:n||t}),{action:{label:r(`navigationSync.undoLabel`),onClick:async()=>{try{await u(e,{...i,navigation:a}),l.info(r(`navigationSync.undone`))}catch{l.error(r(`navigationSync.undoFailed`))}}}})}catch{l.error(r(`navigationSync.updateFailed`))}},[d,u,r]),p=(0,h.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 u(e,s),l.success(r(`navigationSync.addedDashboard`,{name:n||t}),{action:{label:r(`navigationSync.undoLabel`),onClick:async()=>{try{await u(e,{...i,navigation:a}),l.info(r(`navigationSync.undone`))}catch{l.error(r(`navigationSync.undoFailed`))}}}})}catch{l.error(r(`navigationSync.updateFailed`))}},[d,u,r]),g=(0,h.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 u(e,o),l.success(r(`navigationSync.removedPage`,{name:t}),{action:{label:r(`navigationSync.undoLabel`),onClick:async()=>{try{await u(e,{...n,navigation:i}),l.info(r(`navigationSync.undone`))}catch{l.error(r(`navigationSync.undoFailed`))}}}})}catch{l.error(r(`navigationSync.updateFailed`))}},[d,u,r]),_=(0,h.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 u(e,o),l.success(r(`navigationSync.removedDashboard`,{name:t}),{action:{label:r(`navigationSync.undoLabel`),onClick:async()=>{try{await u(e,{...n,navigation:i}),l.info(r(`navigationSync.undone`))}catch{l.error(r(`navigationSync.undoFailed`))}}}})}catch{l.error(r(`navigationSync.updateFailed`))}},[d,u,r]),v=(0,h.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 u(e,s),l.success(r(`navigationSync.renamedPage`,{oldName:t,newName:n}),{action:{label:r(`navigationSync.undoLabel`),onClick:async()=>{try{await u(e,{...i,navigation:a}),l.info(r(`navigationSync.undone`))}catch{l.error(r(`navigationSync.undoFailed`))}}}})}catch{l.error(r(`navigationSync.updateFailed`))}},[d,u,r]),y=(0,h.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 u(e,s),l.success(r(`navigationSync.renamedDashboard`,{oldName:t,newName:n}),{action:{label:r(`navigationSync.undoLabel`),onClick:async()=>{try{await u(e,{...i,navigation:a}),l.info(r(`navigationSync.undone`))}catch{l.error(r(`navigationSync.undoFailed`))}}}})}catch{l.error(r(`navigationSync.updateFailed`))}},[d,u,r]),b=e=>e&&typeof e==`object`&&`name`in e?e.name:void 0;return{syncPageCreated:f,syncDashboardCreated:p,syncPageDeleted:g,syncDashboardDeleted:_,syncPageRenamed:v,syncDashboardRenamed:y,syncPageCreatedAllApps:(0,h.useCallback)(async(e,n)=>{for(let r of t){let t=b(r);!t||!P(r)||await f(t,e,n)}},[t,f]),syncDashboardCreatedAllApps:(0,h.useCallback)(async(e,n)=>{for(let r of t){let t=b(r);!t||!P(r)||await p(t,e,n)}},[t,p]),syncPageDeletedAllApps:(0,h.useCallback)(async e=>{for(let n of t){let t=b(n);!t||!P(n)||await g(t,e)}},[t,g]),syncDashboardDeletedAllApps:(0,h.useCallback)(async e=>{for(let n of t){let t=b(n);!t||!P(n)||await _(t,e)}},[t,_]),syncPageRenamedAllApps:(0,h.useCallback)(async(e,n)=>{for(let r of t){let t=b(r);!t||!P(r)||await v(t,e,n)}},[t,v]),syncDashboardRenamedAllApps:(0,h.useCallback)(async(e,n)=>{for(let r of t){let t=b(r);!t||!P(r)||await y(t,e,n)}},[t,y])}}function re(){let{pages:e,dashboards:t,apps:n,getTypeStatus:r}=a(),i=s(),o=(0,h.useRef)(i);o.current=i;let c=u(),{syncPageCreated:l,syncDashboardCreated:d,syncPageDeleted:f,syncDashboardDeleted:p}=ne(),m=(0,h.useRef)(null),g=(0,h.useRef)(null),_=(0,h.useRef)(0),v=(0,h.useRef)(!1),y=e=>e&&typeof e==`object`&&`name`in e?e.name:void 0;return(0,h.useEffect)(()=>{if(v.current)return;if(c){m.current=null,g.current=null;return}if(r&&(r(`page`)!==`ready`||r(`dashboard`)!==`ready`))return;let i=e=>new Set(e.filter(e=>!N(e)).map(e=>e?.name).filter(e=>typeof e==`string`&&e.length>0)),a=i(e??[]),o=i(t??[]),s=m.current,u=g.current;if(s===null||u===null){m.current=a,g.current=o;return}let h=[...a].filter(e=>!s.has(e)),b=[...s].filter(e=>!a.has(e)),x=[...o].filter(e=>!u.has(e)),S=[...u].filter(e=>!o.has(e));if(h.length===0&&b.length===0&&x.length===0&&S.length===0){m.current=a,g.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||!P(e))){for(let e of h){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 d(t,e)}for(let e of S){if(w)break;await p(t,e)}}}}finally{_.current===C&&(m.current=a,g.current=o,v.current=!1)}})(),()=>{w=!0}},[e,t,n,c,r,l,d,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 R({pathname:e,appName:t,objects:n=[],basePathSegment:r=`apps`,disabled:i=!1}){let{addRecentItem:a}=d(),o=(0,h.useRef)(n);o.current=n,(0,h.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])}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 q(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??[])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}:{}});if(t.length!==0)return{id:e.id,role:e.role,parts:t}}).filter(e=>!!e)}function J(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)?J(e.parts):[]}function ie(e,t){for(let n of J(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 Y(e){if(!e)return[];let t=[],n=new Map;return e.forEach((e,r)=>{let i=e.role;if(i===`tool`){ie(e.content,n);return}if(i!==`user`&&i!==`assistant`&&i!==`system`)return;let a=J(e.content);if(a.length!==0){if(i===`assistant`)for(let e of a){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 X(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 Z(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 ae(e,t){await fetch(`${e}/conversations/${encodeURIComponent(t)}`,{method:`DELETE`,credentials:`include`}).catch(()=>{})}function oe(e){let{userId:t,scope:n,apiBase:r,activeId:i,forceNew:a}=e,[o,s]=(0,h.useState)(void 0),[c,l]=(0,h.useState)([]),[u,d]=(0,h.useState)(!!t),f=(0,h.useRef)(!0),p=(0,h.useRef)(void 0);return(0,h.useEffect)(()=>(f.current=!0,()=>{f.current=!1}),[]),(0,h.useEffect)(()=>{if(!t){s(void 0),l([]),d(!1),p.current=void 0;return}if(!i&&!a&&p.current===t&&o)return;let e=!1,c=V(t,n);return!i&&a&&(s(void 0),l([])),d(!0),(async()=>{try{if(i){let n=await X(r,i);if(e)return;if(n){U(c,n.id),s(n.id);let e=Y(n.messages);l(e.length>0?e:G(n.id)),p.current=t;return}U(c,void 0),K(i,[])}else if(!a){let n=H(c);if(n){let i=await X(r,n);if(e)return;if(i){s(i.id);let e=Y(i.messages);l(e.length>0?e:G(i.id)),p.current=t;return}U(c,void 0),K(n,[])}}let n=await Z(r);if(e)return;U(c,n.id),s(n.id),l(Y(n.messages)),p.current=t}catch{e||(s(void 0),l([]))}finally{e||d(!1)}})(),()=>{e=!0}},[t,n,r,i,a]),{conversationId:o,initialMessages:c,isLoading:u,reset:(0,h.useCallback)(async()=>{if(!t)return;let e=V(t,n);d(!0);try{o&&await ae(r,o),K(o,[]),U(e,void 0);let t=await Z(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])}}var se=new Set([`new chat`,`new conversation`,`untitled`,`新对话`]);function ce(e){let t=e?.trim().toLowerCase();return!t||se.has(t)}function le(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=le(e)??Q(e.preview);return{id:e.id,title:ce(t)?void 0:t,agentId:e.agentId,createdAt:e.createdAt,updatedAt:e.updatedAt,preview:n}}async function ue(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 de(e){let{userId:t,apiBase:n,limit:r=50,refreshKey:i}=e,[a,o]=(0,h.useState)([]),[s,c]=(0,h.useState)(!!t),[l,u]=(0,h.useState)(void 0),[d,f]=(0,h.useState)(0),p=(0,h.useCallback)(async()=>{f(e=>e+1)},[]),m=(0,h.useCallback)(async e=>{try{await fetch(`${n}/conversations/${encodeURIComponent(e)}`,{method:`DELETE`,credentials:`include`})}finally{o(t=>t.filter(t=>t.id!==e))}},[n]),g=(0,h.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,h.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=>ue(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:g}}async function fe(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 pe(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 me(e){let{chatApi:t,conversationId:n}=e,[r,i]=(0,h.useState)(!1),a=(0,h.useRef)(void 0);return{errorSuppressed:r,handleChatError:(0,h.useCallback)(async e=>{let r=t?.replace(/\/agents\/[^/]+\/chat$/,``);if(!n||!r){i(!1);return}try{let e=Y((await X(r,n))?.messages);if(pe(e)&&a.current){a.current(e),i(!0);return}}catch{}i(!1)},[n,t]),setMessagesRef:a,resetSuppression:(0,h.useCallback)(()=>i(!1),[])}}export{oe as a,re as c,b as d,g as f,q as i,ee as l,fe as n,K as o,de as r,R as s,me as t,C as u};
@@ -1 +1 @@
1
- function e(e){let{objectDef:t,baseUrl:n,record:r}=e;if(!t?.name||t.editMode!==`page`)return{kind:`modal`};let i=r?.id??r?._id;if(r&&i!=null&&i!==``){let e=encodeURIComponent(String(i));return{kind:`page`,url:`${n}/${t.name}/record/${e}/edit`}}return{kind:`page`,url:`${n}/${t.name}/new`}}function t(e){let{action:t,context:n={},defaultBaseUrl:r}=e,i=t.params?.objectName??t.objectName??n.objectName,a=n.baseUrl??r;return i?{success:!0,url:`${a}/${i}/new`}:{success:!1,error:`navigate_create: objectName is required`}}function n(e){let{action:t,context:n={},defaultBaseUrl:r}=e,i=t.params?.objectName??t.objectName??n.objectName,a=t.params?.recordId??t.recordId,o=n.baseUrl??r;return!i||a==null||a===``?{success:!1,error:`navigate_edit: objectName and recordId are required`}:{success:!0,url:`${o}/${i}/record/${encodeURIComponent(String(a))}/edit`}}var r=new Set([`created_by`,`updated_by`,`owner_id`]);function i(e){return e?Array.isArray(e)?e.filter(e=>e&&e.name!=null).map(e=>[String(e.name),e]):Object.entries(e):[]}function a(e,t){if(!e?.name||!Array.isArray(t)||t.length===0)return[];let n=e.name,a=[],o=[],s=new Set;for(let e of t)if(!(!e?.name||e.name===n))for(let[t,c]of i(e.fields)){if(!c)continue;let i=c.type;if(i!==`lookup`&&i!==`master_detail`||(c.reference_to||c.reference)!==n||r.has(t)||c.relatedList===!1||s.has(e.name))continue;s.add(e.name);let l={childObject:e.name,childLabel:e.label||e.name,referenceField:t,isOwned:i===`master_detail`,...typeof c.relatedListTitle==`string`&&c.relatedListTitle?{title:c.relatedListTitle}:{},...Array.isArray(c.relatedListColumns)&&c.relatedListColumns.length>0?{columns:c.relatedListColumns}:{}};(l.isOwned?a:o).push(l);break}return[...a,...o]}function o(e,t){if(e!=null){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 s(e){return e&&e.charAt(0).toUpperCase()+e.slice(1)}var c=`\0`,l=`[-\\u2013\\u2014|/·,:]`;function u(e,t){let n=typeof e==`string`?e:e&&typeof e==`object`&&typeof e.source==`string`?e.source:void 0;if(!n||!t)return t?.id||t?._id||`Record`;let r=!1,i=n.replace(/\{([^{}]+)\}/g,(e,n)=>{let i=String(n).trim().split(`.`),a=t;for(let e of i){if(a==null)break;a=a[e]}if(a&&typeof a==`object`){let e=a,t=e.name??e.full_name??e.display_name??e.label??e.title??e.subject??null;(t==null||typeof t==`string`&&!t.trim())&&(t=[e.salutation,e.first_name,e.last_name].filter(e=>typeof e==`string`&&e.trim()).map(e=>e.trim()).join(` `)||(typeof e.email==`string`&&e.email.trim()?e.email.trim():null)),a=t}return a==null||a===``?c:(r=!0,String(a))});if(!r)return``;let a=RegExp(`\\s*${l}\\s*${c}`,`g`),o=RegExp(`${c}\\s*${l}\\s*`,`g`);return i=i.replace(a,``).replace(o,``).replace(new RegExp(c,`g`),``).replace(/\s+/g,` `).trim(),i}function d(e,t){if(e?.titleFormat){let n=u(e.titleFormat,t);if(n)return n}return t?.name||t?.full_name||t?.fullName||t?.title||t?.label||t?.subject||t?.id||t?._id||`Untitled`}export{t as a,a as i,d as n,n as o,o as r,e as s,s as t};
1
+ function e(e){let{objectDef:t,baseUrl:n,record:r}=e;if(!t?.name||t.editMode!==`page`)return{kind:`modal`};let i=r?.id??r?._id;if(r&&i!=null&&i!==``){let e=encodeURIComponent(String(i));return{kind:`page`,url:`${n}/${t.name}/record/${e}/edit`}}return{kind:`page`,url:`${n}/${t.name}/new`}}function t(e){let{action:t,context:n={},defaultBaseUrl:r}=e,i=t.params?.objectName??t.objectName??n.objectName,a=n.baseUrl??r;return i?{success:!0,url:`${a}/${i}/new`}:{success:!1,error:`navigate_create: objectName is required`}}function n(e){let{action:t,context:n={},defaultBaseUrl:r}=e,i=t.params?.objectName??t.objectName??n.objectName,a=t.params?.recordId??t.recordId,o=n.baseUrl??r;return!i||a==null||a===``?{success:!1,error:`navigate_edit: objectName and recordId are required`}:{success:!0,url:`${o}/${i}/record/${encodeURIComponent(String(a))}/edit`}}var r=new Set([`created_by`,`updated_by`,`owner_id`]);function i(e){return e?Array.isArray(e)?e.filter(e=>e&&e.name!=null).map(e=>[String(e.name),e]):Object.entries(e):[]}function a(e,t){if(!e?.name||!Array.isArray(t)||t.length===0)return[];let n=e.name,a=[],o=[],s=new Set;for(let e of t)if(!(!e?.name||e.name===n))for(let[t,c]of i(e.fields)){if(!c)continue;let i=c.type;if(i!==`lookup`&&i!==`master_detail`||(c.reference_to||c.reference)!==n||r.has(t)||c.relatedList===!1||s.has(e.name))continue;s.add(e.name);let l={childObject:e.name,childLabel:e.label||e.name,referenceField:t,isOwned:i===`master_detail`,...typeof c.relatedListTitle==`string`&&c.relatedListTitle?{title:c.relatedListTitle}:{},...Array.isArray(c.relatedListColumns)&&c.relatedListColumns.length>0?{columns:c.relatedListColumns}:{}};(l.isOwned?a:o).push(l);break}return[...a,...o]}function o(e,t){if(e!=null){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}}var s=`\0`,c=`[-\\u2013\\u2014|/·,:]`;function l(e,t){let n=typeof e==`string`?e:e&&typeof e==`object`&&typeof e.source==`string`?e.source:void 0;if(!n||!t)return t?.id||t?._id||`Record`;let r=!1,i=n.replace(/\{([^{}]+)\}/g,(e,n)=>{let i=String(n).trim().split(`.`),a=t;for(let e of i){if(a==null)break;a=a[e]}if(a&&typeof a==`object`){let e=a,t=e.name??e.full_name??e.display_name??e.label??e.title??e.subject??null;(t==null||typeof t==`string`&&!t.trim())&&(t=[e.salutation,e.first_name,e.last_name].filter(e=>typeof e==`string`&&e.trim()).map(e=>e.trim()).join(` `)||(typeof e.email==`string`&&e.email.trim()?e.email.trim():null)),a=t}return a==null||a===``?s:(r=!0,String(a))});if(!r)return``;let a=RegExp(`\\s*${c}\\s*${s}`,`g`),o=RegExp(`${s}\\s*${c}\\s*`,`g`);return i=i.replace(a,``).replace(o,``).replace(new RegExp(s,`g`),``).replace(/\s+/g,` `).trim(),i}function u(e,t){if(e?.titleFormat){let n=l(e.titleFormat,t);if(n)return n}return t?.name||t?.full_name||t?.fullName||t?.title||t?.label||t?.subject||t?.id||t?._id||`Untitled`}export{n as a,t as i,o as n,e as o,a as r,u as t};
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-BgnAjV6_.js"></script>
21
+ <script type="module" crossorigin src="./assets/index-A8r_lURn.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-CJe1zUD0.css">
24
+ <link rel="stylesheet" crossorigin href="./assets/index-BGyrRTzt.css">
25
25
  <link rel="modulepreload" href="./assets/framework-BLEk-ou3.js" />
26
- <link rel="modulepreload" href="./assets/ui-components-CrPYFyEM.js" />
26
+ <link rel="modulepreload" href="./assets/ui-components-NS_7__gn.js" />
27
27
  <link rel="modulepreload" href="./assets/vendor-radix-CSVEhP0L.js" />
28
28
  <link rel="modulepreload" href="./assets/vendor-react-DR370ovB.js" />
29
29
  </head>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@objectstack/console",
3
- "version": "9.9.1",
3
+ "version": "9.10.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,t as n}from"./vendor-react-DR370ovB.js";import{R as r,f as i,h as a}from"./vendor-objectstack-BNd856rx.js";import{$n as o,$s as s,$t as c,Co as l,Da as u,Ea as d,Fa as f,Fs as p,Ho as m,Ia as h,Ji as g,Kr as _,Lr as v,Ls as y,Mo as b,Ni as x,Or as ee,Pa as te,Qi as ne,Qo as S,Si as re,Sr as C,Ui as ie,Ur as ae,Ws as oe,Xa as se,Yi as ce,Yr as le,Zi as ue,ca as de,di as fe,ec as pe,en as me,fa as he,hs as ge,io as _e,ja as ve,li as ye,ls as be,ni as xe,on as Se,oo as Ce,pa as w,pi as T,rs as E,si as D,tn as O,to as k,wr as A,zi as we,zs as Te}from"./ui-components-CrPYFyEM.js";import{C as j,_ as Ee,a as De,g as M,h as Oe,i as N,m as P,n as ke,r as F,t as Ae,v as je,y as Me}from"./mergeServerFields-zZ2r6yTA.js";var I=e(t(),1),L=(e,t,n,r,i)=>({id:e,label:t,labelZh:n,category:r,Icon:i}),R={text:L(`text`,`Text`,`单行文本`,`text`,v),textarea:L(`textarea`,`Text Area`,`多行文本`,`text`,_),email:L(`email`,`Email`,`邮箱`,`text`,s),url:L(`url`,`URL`,`网址`,`text`,Ce),phone:L(`phone`,`Phone`,`电话`,`text`,g),password:L(`password`,`Password`,`密码`,`text`,ve),markdown:L(`markdown`,`Markdown`,`Markdown`,`text`,l),html:L(`html`,`HTML`,`HTML`,`text`,S),richtext:L(`richtext`,`Rich Text`,`富文本`,`text`,ye),number:L(`number`,`Number`,`数字`,`number`,k),currency:L(`currency`,`Currency`,`货币`,`number`,m),percent:L(`percent`,`Percent`,`百分比`,`number`,ce),date:L(`date`,`Date`,`日期`,`date`,y),datetime:L(`datetime`,`Date/Time`,`日期时间`,`date`,y),time:L(`time`,`Time`,`时间`,`date`,E),boolean:L(`boolean`,`Checkbox`,`复选框`,`logic`,D),toggle:L(`toggle`,`Toggle`,`开关`,`logic`,ae),select:L(`select`,`Picklist`,`下拉选择`,`selection`,te),multiselect:L(`multiselect`,`Multi-Select`,`多选`,`selection`,f),radio:L(`radio`,`Radio`,`单选`,`selection`,ge),checkboxes:L(`checkboxes`,`Checkboxes`,`复选组`,`selection`,f),lookup:L(`lookup`,`Lookup`,`查找关系`,`relation`,h),master_detail:L(`master_detail`,`Master-Detail`,`主从关系`,`relation`,A),tree:L(`tree`,`Tree`,`树形关系`,`relation`,he),image:L(`image`,`Image`,`图片`,`media`,se),file:L(`file`,`File`,`文件`,`media`,ne),avatar:L(`avatar`,`Avatar`,`头像`,`media`,be),video:L(`video`,`Video`,`视频`,`media`,ee),audio:L(`audio`,`Audio`,`音频`,`media`,w),formula:L(`formula`,`Formula`,`公式`,`calculated`,Te),summary:L(`summary`,`Rollup`,`汇总`,`calculated`,T),autonumber:L(`autonumber`,`Auto Number`,`自动编号`,`calculated`,k),composite:L(`composite`,`Composite`,`复合字段`,`advanced`,oe),repeater:L(`repeater`,`Repeater`,`重复字段`,`advanced`,x),location:L(`location`,`Location`,`地理坐标`,`advanced`,u),address:L(`address`,`Address`,`地址`,`advanced`,d),code:L(`code`,`Code`,`代码`,`advanced`,S),json:L(`json`,`JSON`,`JSON`,`advanced`,b),color:L(`color`,`Color`,`颜色`,`advanced`,de),rating:L(`rating`,`Rating`,`评分`,`advanced`,xe),slider:L(`slider`,`Slider`,`滑块`,`advanced`,fe),signature:L(`signature`,`Signature`,`签名`,`advanced`,ue),qrcode:L(`qrcode`,`QR Code`,`二维码`,`advanced`,we),progress:L(`progress`,`Progress`,`进度条`,`advanced`,p),tags:L(`tags`,`Tags`,`标签`,`advanced`,le),vector:L(`vector`,`Vector`,`向量`,`advanced`,pe)},Ne=[`text`,`number`,`date`,`logic`,`selection`,`relation`,`media`,`calculated`,`advanced`],Pe={text:`Text`,number:`Number`,date:`Date & Time`,logic:`Logic`,selection:`Selection`,relation:`Relation`,media:`Media`,calculated:`Calculated`,advanced:`Advanced`},z={text:{icon:`text-slate-500 dark:text-slate-400`,badge:`border-slate-200 bg-slate-50 text-slate-600 dark:border-slate-700/50 dark:bg-slate-800/40 dark:text-slate-300`},number:{icon:`text-blue-600 dark:text-blue-400`,badge:`border-blue-200 bg-blue-50 text-blue-700 dark:border-blue-800/50 dark:bg-blue-950/40 dark:text-blue-300`},date:{icon:`text-violet-600 dark:text-violet-400`,badge:`border-violet-200 bg-violet-50 text-violet-700 dark:border-violet-800/50 dark:bg-violet-950/40 dark:text-violet-300`},logic:{icon:`text-amber-600 dark:text-amber-400`,badge:`border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-800/50 dark:bg-amber-950/40 dark:text-amber-300`},selection:{icon:`text-teal-600 dark:text-teal-400`,badge:`border-teal-200 bg-teal-50 text-teal-700 dark:border-teal-800/50 dark:bg-teal-950/40 dark:text-teal-300`},relation:{icon:`text-indigo-600 dark:text-indigo-400`,badge:`border-indigo-200 bg-indigo-50 text-indigo-700 dark:border-indigo-800/50 dark:bg-indigo-950/40 dark:text-indigo-300`},media:{icon:`text-pink-600 dark:text-pink-400`,badge:`border-pink-200 bg-pink-50 text-pink-700 dark:border-pink-800/50 dark:bg-pink-950/40 dark:text-pink-300`},calculated:{icon:`text-emerald-600 dark:text-emerald-400`,badge:`border-emerald-200 bg-emerald-50 text-emerald-700 dark:border-emerald-800/50 dark:bg-emerald-950/40 dark:text-emerald-300`},advanced:{icon:`text-zinc-500 dark:text-zinc-400`,badge:`border-zinc-200 bg-zinc-50 text-zinc-600 dark:border-zinc-700/50 dark:bg-zinc-800/40 dark:text-zinc-300`}};function Fe(e){return z[B(e).category]}var Ie={text:`文本`,number:`数值`,date:`日期/时间`,logic:`逻辑`,selection:`选择`,relation:`关系`,media:`媒体`,calculated:`计算`,advanced:`高级`},Le=Ne.map(e=>({category:e,types:Object.keys(R).filter(t=>R[t].category===e)}));function B(e){return typeof e==`string`&&e in R?R[e]:{id:`text`,label:typeof e==`string`?e:`unknown`,labelZh:typeof e==`string`?e:`未知`,category:`advanced`,Icon:v}}var V=n(),H=`text/x-objectui-viewcol`;function U({type:e}){let t=B(e),n=Fe(e),r=t.Icon;return(0,V.jsx)(r,{className:`h-3.5 w-3.5 shrink-0 ${n.icon}`})}function W({index:e,label:t,fieldName:n,fieldType:r,selected:i,canEdit:a,dragging:o,dropBefore:s,onSelect:c,onRemove:l,onDragStart:u,onDragEnd:d,onDragOverRow:f,onDropRow:p}){return(0,V.jsxs)(`div`,{className:`relative`,children:[s&&(0,V.jsx)(`span`,{className:`pointer-events-none absolute -top-0.5 left-0 right-0 h-0.5 rounded bg-primary`}),(0,V.jsxs)(`div`,{role:`button`,tabIndex:0,draggable:a,"aria-pressed":i,onDragStart:t=>{a&&(t.dataTransfer.effectAllowed=`move`,t.dataTransfer.setData(H,String(e)),u())},onDragEnd:d,onDragOver:e=>{!a||!o||e.dataTransfer.types.includes(H)&&(e.preventDefault(),e.dataTransfer.dropEffect=`move`,f())},onDrop:e=>{a&&e.dataTransfer.types.includes(H)&&(e.preventDefault(),e.stopPropagation(),p())},onClick:c,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),c())},className:`group flex items-center gap-2 rounded-md border bg-card px-2 py-1.5 text-xs transition-colors hover:border-primary/40 `+(i?`border-primary ring-1 ring-primary `:`border-border `)+(a?`cursor-grab active:cursor-grabbing`:``),children:[a&&(0,V.jsx)(_e,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground/40 group-hover:text-muted-foreground`}),(0,V.jsx)(U,{type:r}),(0,V.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-medium`,children:t}),n&&n!==t&&(0,V.jsx)(`code`,{className:`max-w-[7rem] shrink-0 truncate text-[10px] text-muted-foreground`,children:n}),a&&(0,V.jsx)(`span`,{role:`button`,tabIndex:0,"aria-label":`Remove ${t}`,onClick:e=>{e.stopPropagation(),l()},onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),e.stopPropagation(),l())},className:`inline-flex h-4 w-4 shrink-0 items-center justify-center rounded text-muted-foreground/60 hover:bg-destructive/10 hover:text-destructive`,children:(0,V.jsx)(C,{className:`h-3 w-3`})})]})]})}function G({fields:e,usedNames:t,loading:n,error:r,onAdd:i}){let a=I.useMemo(()=>F(),[]),[s,l]=I.useState(!1),[u,d]=I.useState(``),f=I.useMemo(()=>{let t=u.trim().toLowerCase();return t?e.filter(e=>e.name.toLowerCase().includes(t)||e.label.toLowerCase().includes(t)):e},[e,u]);return(0,V.jsxs)(c,{open:s,onOpenChange:l,children:[(0,V.jsx)(O,{asChild:!0,children:(0,V.jsxs)(`button`,{type:`button`,className:`inline-flex items-center gap-1 rounded-md border border-dashed px-2 py-1 text-xs text-muted-foreground hover:border-primary/40 hover:bg-accent/40 hover:text-foreground`,children:[(0,V.jsx)(ie,{className:`h-3.5 w-3.5`}),` `,N(`engine.form.addFieldPlain`,a)]})}),(0,V.jsxs)(me,{align:`start`,className:`w-72 p-0`,children:[(0,V.jsxs)(`div`,{className:`relative border-b p-2`,children:[(0,V.jsx)(re,{className:`pointer-events-none absolute left-4 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground`}),(0,V.jsx)(`input`,{autoFocus:!0,value:u,onChange:e=>d(e.target.value),placeholder:N(`engine.form.searchFields`,a),className:`h-8 w-full rounded border border-input bg-background pl-7 pr-2 text-xs outline-none focus:border-primary`})]}),(0,V.jsx)(`div`,{className:`max-h-72 overflow-auto p-1`,children:n?(0,V.jsx)(K,{children:N(`engine.form.loadingFields`,a)}):r?(0,V.jsx)(K,{tone:`warn`,children:De(`engine.form.noObjectFields`,a,{error:r})}):f.length===0?(0,V.jsx)(K,{children:N(u?`engine.form.noMatchingFields`:`engine.form.noFieldsOnObject`,a)}):f.map(e=>{let n=t.has(e.name);return(0,V.jsxs)(`button`,{type:`button`,onClick:()=>i(e),className:`flex w-full items-center gap-2 rounded px-2 py-1.5 text-left text-xs hover:bg-accent`,children:[(0,V.jsx)(U,{type:e.type}),(0,V.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-medium`,children:e.label}),e.name!==e.label&&(0,V.jsx)(`code`,{className:`max-w-[6rem] truncate text-[10px] text-muted-foreground`,children:e.name}),n&&(0,V.jsx)(o,{variant:`secondary`,className:`px-1 py-0 text-[9px]`,children:N(`engine.form.added`,a)})]},e.name)})})]})]})}function K({children:e,tone:t}){return(0,V.jsx)(`div`,{className:`px-2 py-4 text-center text-[11px] `+(t===`warn`?`text-amber-600 dark:text-amber-300`:`text-muted-foreground`),children:e})}function Re(e,t){if(typeof e==`string`&&e)return e;if(e&&typeof e==`object`){let t=e.default;if(typeof t==`string`&&t)return t}return t}function q(e){let t=typeof e.name==`string`?e.name:``;if(!t)return null;let n=Array.isArray(e.dimensions)?e.dimensions.filter(e=>e&&typeof e.name==`string`&&e.name).map(e=>({name:e.name,type:typeof e.type==`string`?e.type:void 0})):[],r=Array.isArray(e.measures)?e.measures.filter(e=>e&&typeof e.name==`string`&&e.name).map(e=>({name:e.name,aggregate:typeof e.aggregate==`string`?e.aggregate:void 0,certified:e.certified===!0})):[];return{name:t,label:Re(e.label,t),dimensions:n,measures:r}}function ze(e){let t=j(),[n,r]=I.useState({datasets:e??[],loading:!e,error:null});return I.useEffect(()=>{if(e){r({datasets:e,loading:!1,error:null});return}let n=!1;return r(e=>({...e,loading:!0,error:null})),t.list(`dataset`).then(e=>{n||r({datasets:(Array.isArray(e)?e:[]).map(q).filter(e=>e!==null),loading:!1,error:null})}).catch(e=>{n||r({datasets:[],loading:!1,error:e?.message??String(e)})}),()=>{n=!0}},[t,e]),n}function Be(e,t){let n=j(),r=e?t.datasets.find(t=>t.name===e):void 0,i=!!e&&!t.loading&&(!r||r.dimensions.length===0&&r.measures.length===0),[a,o]=I.useState(null);I.useEffect(()=>{if(!i||!e||a?.name===e)return;let t=!1;return n.get(`dataset`,e).then(n=>{t||o({name:e,entry:n?q(n):null,error:n?null:`Dataset not found`})}).catch(n=>{t||o({name:e,entry:null,error:n?.message??String(n)})}),()=>{t=!0}},[n,e,i,a]);let s=i&&a?.name===e?a.entry:r;return{dimensions:s?.dimensions??[],measures:s?.measures??[],loading:t.loading||i&&a?.name!==e,error:(i&&a?.name===e?a.error:null)??t.error}}var Ve={io:`input`,unrepresentable:`any`},He=new Set([`dataset`,`values`,`rows`,`columns`,`name`]),J,Y=!1;function X(){if(J||Y)return J;try{J=r(i,Ve)}catch(e){Y=!0,typeof console<`u`&&console.warn(`[report-schema] failed to derive Report JSONSchema from spec`,e)}return J}var Z;function Ue(){if(Z)return Z;if(!(!a||typeof a!=`object`)){try{let e=JSON.parse(JSON.stringify(a)),t=X()?.properties;for(let n of e.sections??[])n.fields=(n.fields??[]).filter(e=>{let n=typeof e==`string`?e:e?.field;return!(He.has(n)||t&&!(n in t))});if(t&&`runtimeFilter`in t){let t=new Set;for(let n of e.sections??[])for(let e of n.fields??[])t.add(typeof e==`string`?e:e?.field);t.has(`runtimeFilter`)||(e.sections=[...e.sections??[],{label:`Filter`,description:`Render-time scope filter, ANDed at query time.`,collapsible:!0,collapsed:!0,fields:[{field:`runtimeFilter`,widget:`json`}]}])}e.sections=(e.sections??[]).filter(e=>(e.fields??[]).length>0),Z=e}catch(e){typeof console<`u`&&console.warn(`[report-schema] failed to prepare reportForm from spec`,e);return}return Z}}var We=new Set([`type`,`label`,`name`,`dataset`,`values`,`rows`,`columns`]),Ge={tabular:`engine.inspector.report.type.tabular`,summary:`engine.inspector.report.type.summary`,matrix:`engine.inspector.report.type.matrix`,joined:`engine.inspector.report.type.joined`};function Ke(e,t){return I.useMemo(()=>{let n=X()?.properties?.type?.enum,r=(Array.isArray(n)&&n.length?n.filter(e=>typeof e==`string`):[`tabular`,`summary`,`matrix`,`joined`]).map(e=>{let n=Ge[e],r=n?N(n,t):e;return{value:e,label:r===n?e:r}});return!r.some(t=>t.value===e)&&e&&r.push({value:e,label:e}),r},[e,t])}function Q(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}function $({label:e,emptyText:t,names:n,options:r,loading:i,error:a,readOnly:s,onCommit:c}){let[l,u]=I.useState(null),[d,f]=I.useState(null),p=I.useMemo(()=>new Set(n),[n]),m=I.useMemo(()=>{let e=new Map;for(let t of r)e.set(t.name,t.type);return e},[r]);return(0,V.jsxs)(`div`,{className:`border-t pt-3 space-y-1.5`,children:[(0,V.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,V.jsx)(Se,{className:`text-xs text-muted-foreground`,children:e}),(0,V.jsx)(o,{variant:`outline`,className:`text-[10px]`,children:n.length})]}),n.length===0?(0,V.jsx)(`p`,{className:`rounded-md border border-dashed bg-muted/30 px-3 py-3 text-center text-[11px] text-muted-foreground`,children:t}):(0,V.jsx)(`div`,{className:`space-y-1`,children:n.map((e,t)=>(0,V.jsx)(W,{index:t,label:e,fieldName:e,fieldType:m.get(e)??`number`,selected:!1,canEdit:!s,dragging:l!==null,dropBefore:d===t&&l!==null&&l!==t,onSelect:()=>{},onRemove:()=>c(Me(n,t,null)),onDragStart:()=>u(t),onDragEnd:()=>{u(null),f(null)},onDragOverRow:()=>f(t),onDropRow:()=>{l!=null&&l!==t&&c(je(n,l,t)),u(null),f(null)}},`${e}-${t}`))}),!s&&(0,V.jsx)(G,{fields:r,usedNames:p,loading:i,error:a,onAdd:e=>c(Ee(n,e.name))})]})}function qe({draft:e,onPatch:t,readOnly:n,locale:r,datasetCatalogOverride:i,serverSchema:a}){let o=I.useCallback(e=>N(e,r),[r]),s=typeof e.type==`string`?e.type:`tabular`,c=Ke(s,r),l=typeof e.label==`string`?e.label:``,u=typeof e.dataset==`string`?e.dataset:``,d=I.useMemo(()=>Q(e.values),[e.values]),f=I.useMemo(()=>Q(e.rows),[e.rows]),p=I.useMemo(()=>Q(e.columns),[e.columns]),m=ze(i),h=Be(u||void 0,m),g=I.useMemo(()=>{let e=m.datasets.map(e=>({value:e.name,label:e.label&&e.label!==e.name?`${e.label} (${e.name})`:e.name}));return u&&!e.some(e=>e.value===u)&&e.push({value:u,label:u}),e},[m.datasets,u]),_=I.useMemo(()=>h.measures.map(e=>({name:e.name,label:e.aggregate?`${e.name} · ${e.aggregate}`:e.name,type:`number`,hidden:!1})),[h.measures]),v=I.useMemo(()=>h.dimensions.map(e=>({name:e.name,label:e.name,type:e.type??`text`,hidden:!1})),[h.dimensions]),y=s!==`joined`,{schema:b,form:x}=I.useMemo(()=>Ae({bundledSchema:X(),bundledForm:Ue(),serverSchema:a,excludeFields:We,sectionTitle:N(`engine.inspector.moreFields`,r)}),[a,r]);return(0,V.jsxs)(Oe,{kindLabel:o(`engine.inspector.report.kind`),title:String(l||e.name||o(`engine.inspector.report.kind`)),onClose:()=>{},closeLabel:o(`engine.inspector.report.close`),hideClose:!0,children:[(0,V.jsx)(M,{label:o(`engine.inspector.report.label`),value:l,onCommit:e=>t({label:e}),placeholder:o(`engine.inspector.report.labelPlaceholder`),disabled:n}),(0,V.jsx)(P,{label:o(`engine.inspector.report.type`),value:s,options:c,onCommit:e=>t({type:e}),disabled:n}),y&&(0,V.jsxs)(V.Fragment,{children:[m.datasets.length>0||u?(0,V.jsx)(P,{label:o(`engine.inspector.report.dataset`),value:u,options:g,onCommit:e=>t({dataset:e}),disabled:n}):(0,V.jsx)(M,{label:o(`engine.inspector.report.dataset`),value:u,onCommit:e=>t({dataset:e}),placeholder:o(`engine.inspector.report.datasetPlaceholder`),disabled:n,mono:!0}),(0,V.jsx)($,{label:o(`engine.inspector.report.values`),emptyText:o(`engine.inspector.report.valuesEmpty`),names:d,options:_,loading:h.loading,error:h.error,readOnly:n,onCommit:e=>t({values:e})}),(0,V.jsx)($,{label:o(`engine.inspector.report.rows`),emptyText:o(`engine.inspector.report.rowsEmpty`),names:f,options:v,loading:h.loading,error:h.error,readOnly:n,onCommit:e=>t({rows:e})}),s===`matrix`&&(0,V.jsx)($,{label:o(`engine.inspector.report.columnsAcross`),emptyText:o(`engine.inspector.report.columnsAcrossEmpty`),names:p,options:v,loading:h.loading,error:h.error,readOnly:n,onCommit:e=>t({columns:e})})]}),(0,V.jsx)(`div`,{className:`border-t pt-3`,children:b?(0,V.jsx)(ke,{schema:b,form:x,value:e,hiddenFields:[`type`,`label`,`name`,`dataset`,`values`,`rows`,`columns`],readOnly:n,onChange:e=>t(e)}):(0,V.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:o(`engine.inspector.report.noSchema`)})})]})}export{Ie as a,Le as c,Pe as i,G as n,z as o,W as r,R as s,qe as t};