@objectstack/console 16.0.0 → 16.1.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.
- package/README.md +1 -1
- package/dist/.objectui-sha +1 -1
- package/dist/assets/{AdapterProvider-C6zOh6HD.js → AdapterProvider-CqW7TSvk.js} +1 -1
- package/dist/assets/{AiPendingActionsPage-CnAw7P3v.js → AiPendingActionsPage-C-QNNI9k.js} +1 -1
- package/dist/assets/{ApiConsolePage-BI45__VZ.js → ApiConsolePage-DSvjQt5N.js} +1 -1
- package/dist/assets/{AppDocsIndex-f25vfEKO.js → AppDocsIndex-B4Vi3Lmx.js} +1 -1
- package/dist/assets/{AppManagementPage-Bg9uJgOg.js → AppManagementPage-l7bxl-aE.js} +1 -1
- package/dist/assets/{ApprovalsInboxPage-DNHuqeXG.js → ApprovalsInboxPage-BV4PlaEv.js} +1 -1
- package/dist/assets/{AuditLogPage-B7miw4yM.js → AuditLogPage-ChJYd7GY.js} +1 -1
- package/dist/assets/{ComponentNavView-hbkzWx99.js → ComponentNavView-C4OkKu2y.js} +1 -1
- package/dist/assets/{CreateViewDialog-C9MmF1EQ.js → CreateViewDialog-DwpQ8KvO.js} +1 -1
- package/dist/assets/{DashboardView-B5fvjbK1.js → DashboardView-CuDS84Jp.js} +1 -1
- package/dist/assets/{DeveloperHubPage-CLMxDfF8.js → DeveloperHubPage-CnVzl2hV.js} +1 -1
- package/dist/assets/{DocShell-Xat5mAFu.js → DocShell-D83T8iWF.js} +1 -1
- package/dist/assets/{ExpressionProvider-BrbZIz2M.js → ExpressionProvider-CyltvbX0.js} +1 -1
- package/dist/assets/{FlowRunsPage-D3geofgO.js → FlowRunsPage-BE8HeEGL.js} +1 -1
- package/dist/assets/{IntegrationsPage-BomrdGvC.js → IntegrationsPage-DI3vZb2A.js} +1 -1
- package/dist/assets/{InterfaceListPage-B-1CV8r_.js → InterfaceListPage-BL7sW-SC.js} +1 -1
- package/dist/assets/{ManagedByBadge-B6i8b85J.js → ManagedByBadge-D8aPzQJc.js} +1 -1
- package/dist/assets/{MarketplaceAccessDenied-CB0BqpZm.js → MarketplaceAccessDenied-B00hPOtj.js} +1 -1
- package/dist/assets/{MarketplaceInstalledPage-k4tMP5Il.js → MarketplaceInstalledPage-BdLyXA35.js} +1 -1
- package/dist/assets/{MarketplacePackagePage-DFu-NbiT.js → MarketplacePackagePage-By15SZoJ.js} +1 -1
- package/dist/assets/{MarketplacePage-hFFqWDhG.js → MarketplacePage-BKxIWeT_.js} +1 -1
- package/dist/assets/{MetadataInspector-GuDvqIYj.js → MetadataInspector-CcRGESLn.js} +1 -1
- package/dist/assets/{MetadataProvider-1pC12cNH.js → MetadataProvider-CjWp0ChY.js} +1 -1
- package/dist/assets/{ObjectDataPage-BXb8qS_O.js → ObjectDataPage-DiQJROyN.js} +1 -1
- package/dist/assets/{PageView-CJffWMXV.js → PageView-CJY74CxE.js} +1 -1
- package/dist/assets/{ProfilePage-giyDPnkE.js → ProfilePage-CjxWQMQA.js} +1 -1
- package/dist/assets/{PublicFormsPage-CvTGsvEk.js → PublicFormsPage-BVEV96-N.js} +1 -1
- package/dist/assets/{RecordDetailView-BWj_n2Xd.js → RecordDetailView-DpRJpP6t.js} +1 -1
- package/dist/assets/{RecordFormPage-DaAXyIFl.js → RecordFormPage-BMs8Sa4p.js} +1 -1
- package/dist/assets/{ReportDefaultInspector-nzEI_7uY.js → ReportDefaultInspector-BpXXGsGu.js} +2 -2
- package/dist/assets/{ReportView-BkvoSROz.js → ReportView-C0fP1MLd.js} +1 -1
- package/dist/assets/SearchResultsPage-CjSZ416m.js +1 -0
- package/dist/assets/{SettingsHub-CLEl9yB4.js → SettingsHub-DhWm94wF.js} +1 -1
- package/dist/assets/{SettingsView-D48FlZZ-.js → SettingsView-Dd0B_UlN.js} +1 -1
- package/dist/assets/{SystemHubPage-Bcedpt6c.js → SystemHubPage-C5Widsf0.js} +1 -1
- package/dist/assets/{createDerive-CoXOsdH9.js → createDerive-DGOUbVlZ.js} +1 -1
- package/dist/assets/{data-adapter-C-CzgrY8.js → data-adapter-Dz0aiaG6.js} +2 -2
- package/dist/assets/framework-BqSgd3ir.js +8 -0
- package/dist/assets/{getIcon-CHjgso2Q.js → getIcon-BZn0biL3.js} +1 -1
- package/dist/assets/{highlighted-body-OFNGDK62-iRcLhe8Y.js → highlighted-body-OFNGDK62-CDb4f2Sa.js} +1 -1
- package/dist/assets/{i18n-BBfFXbqS.js → i18n-SjY5NweX.js} +1 -1
- package/dist/assets/{index-DQKFSIRa.js → index-CgfL2xiq.js} +1 -1
- package/dist/assets/mermaid-GHXKKRXX-CWn_Hnds.js +1 -0
- package/dist/assets/{metadata-admin-DUDb4_-I.js → metadata-admin-BRw86sJ-.js} +4 -4
- package/dist/assets/{plugin-calendar-BwqRXov_.js → plugin-calendar-C4ZXapZt.js} +1 -1
- package/dist/assets/{plugin-charts-DFywQsyC.js → plugin-charts-D5Lb0q0u.js} +1 -1
- package/dist/assets/{plugin-chatbot-ChDQ0sZw.js → plugin-chatbot-dJq9DS4J.js} +3 -3
- package/dist/assets/{plugin-dashboard-LbTxdFyx.js → plugin-dashboard-Cr7jkjy7.js} +1 -1
- package/dist/assets/{plugin-form-B69IWc-v.js → plugin-form-D4kHsl47.js} +1 -1
- package/dist/assets/{plugin-gantt-DNfSxpfa.js → plugin-gantt-8LuVErg3.js} +1 -1
- package/dist/assets/{plugin-grid-D5ooeMq3.js → plugin-grid-CDpGckvD.js} +1 -1
- package/dist/assets/{plugin-kanban-CDv0cMku.js → plugin-kanban-Xwny03DA.js} +1 -1
- package/dist/assets/{plugin-map-CFb9fmBs.js → plugin-map-CVC4XDJz.js} +1 -1
- package/dist/assets/{plugin-markdown-BxslElNy.js → plugin-markdown-By5yxTCK.js} +1 -1
- package/dist/assets/{plugin-report-DEkf0Fe2.js → plugin-report-DwvPiTGE.js} +1 -1
- package/dist/assets/{plugin-timeline-DUw-qsiu.js → plugin-timeline-D2Sep4-I.js} +1 -1
- package/dist/assets/{plugin-tree-8wyez9hx.js → plugin-tree-Doah8whm.js} +1 -1
- package/dist/assets/{plugin-view-baVOQ3XC.js → plugin-view-DZXBuUS9.js} +1 -1
- package/dist/assets/{plugins-views-Bi6X55Wz.js → plugins-views-BGSw-KmQ.js} +1 -1
- package/dist/assets/{runtime-metadata-persistence-Clk8TRxl.js → runtime-metadata-persistence-CEZY_PIp.js} +1 -1
- package/dist/assets/{skeletons-D8fbNHVX.js → skeletons-D0Z3uPzj.js} +1 -1
- package/dist/assets/{src-IWc9jIui.js → src-DPHY2JFl.js} +1 -1
- package/dist/assets/src-RHOMTPFk.js +19 -0
- package/dist/assets/{src-DM9imiv_.js → src-YtGn_UVR.js} +1 -1
- package/dist/assets/{types-DwzGXr-7.js → types-BR_9hYa5.js} +1 -1
- package/dist/assets/{ui-components-BDIRZFoR.js → ui-components-Ci5ufF7g.js} +2 -2
- package/dist/assets/{ui-layout-ZABgadCW.js → ui-layout-D_8Fal4s.js} +1 -1
- package/dist/assets/{use-book-data-C4CaJKQX.js → use-book-data-CV2dCLgr.js} +1 -1
- package/dist/assets/{appRoute-C7XNGt8B.js → utils-CFdPTF34.js} +1 -1
- package/dist/index.html +3 -3
- package/package.json +4 -4
- package/dist/assets/SearchResultsPage-Badp3TZy.js +0 -1
- package/dist/assets/framework-brxTxzwx.js +0 -8
- package/dist/assets/mermaid-GHXKKRXX-o9V61CTW.js +0 -1
- package/dist/assets/src-BEYY1hUL.js +0 -19
- package/dist/assets/utils-Bxty7IIa.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{a as t,d as n,r,y as i}from"./vendor-react-BKSb6vFP.js";import{At as a,Co as o,Ft as s,Ho as c,It as l,Kt as u,Lt as d,Mc as f,Mt as p,Pt as m,Qt as h,Rt as g,Ws as _,fr as v,hi as y,ir as b,jt as x,nr as S,oa as C,rr as w,sa as T,ut as E,zt as D}from"./ui-components-BDIRZFoR.js";import{_ as O,c as k,d as A,n as j,o as M,p as N,s as P,t as F,u as I,v as L,y as R}from"./vendor-dndkit-DoG7p74h.js";var z=e(i(),1),B=r();function V(e){let t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);if(!t)return null;let n=parseInt(t[1],16)/255,r=parseInt(t[2],16)/255,i=parseInt(t[3],16)/255,a=Math.max(n,r,i),o=Math.min(n,r,i),s=0,c=0,l=(a+o)/2;if(a!==o){let e=a-o;switch(c=l>.5?e/(2-a-o):e/(a+o),a){case n:s=((r-i)/e+(r<i?6:0))/6;break;case r:s=((i-n)/e+2)/6;break;case i:s=((n-r)/e+4)/6;break}}return{h:s*360,s:c*100,l:l*100}}function H(e){let t=V(e);return t?`${Math.round(t.h)} ${Math.round(t.s)}% ${Math.round(t.l)}%`:null}function U(e){let t=V(e);if(!t)return null;let n=Math.max(t.l,65),r=t.s>80?Math.max(t.s-10,70):t.s;return`${Math.round(t.h)} ${Math.round(r)}% ${Math.round(n)}%`}function W(e){let t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);if(!t)return`0 0% 100%`;let n=e=>{let t=e/255;return t<=.03928?t/12.92:((t+.055)/1.055)**2.4},r=n(parseInt(t[1],16)),i=n(parseInt(t[2],16)),a=n(parseInt(t[3],16));return .2126*r+.7152*i+.0722*a>.6?`222 47% 11%`:`0 0% 100%`}function G(e,t){(0,z.useEffect)(()=>{let n=document.documentElement,r=()=>n.classList.contains(`dark`),i=()=>{if(e?.primaryColor){let t=H(e.primaryColor),i=U(e.primaryColor),a=r()&&i||t;a&&(n.style.setProperty(`--brand-primary`,e.primaryColor),n.style.setProperty(`--brand-primary-hsl`,t||a),n.style.setProperty(`--primary`,a),n.style.setProperty(`--primary-foreground`,r()?`222 47% 11%`:W(e.primaryColor)),n.style.setProperty(`--ring`,a),n.style.setProperty(`--sidebar-primary`,a),n.style.setProperty(`--sidebar-ring`,a))}else n.style.removeProperty(`--brand-primary`),n.style.removeProperty(`--brand-primary-hsl`),n.style.removeProperty(`--primary`),n.style.removeProperty(`--primary-foreground`),n.style.removeProperty(`--ring`),n.style.removeProperty(`--sidebar-primary`),n.style.removeProperty(`--sidebar-ring`);if(e?.accentColor){let t=H(e.accentColor),i=U(e.accentColor),a=r()&&i||t;a&&(n.style.setProperty(`--brand-accent`,e.accentColor),n.style.setProperty(`--brand-accent-hsl`,t||a),n.style.setProperty(`--accent`,a),n.style.setProperty(`--accent-foreground`,r()?`222 47% 11%`:W(e.accentColor)))}else n.style.removeProperty(`--brand-accent`),n.style.removeProperty(`--brand-accent-hsl`),n.style.removeProperty(`--accent`),n.style.removeProperty(`--accent-foreground`)};i();let a=new MutationObserver(e=>{for(let t of e)if(t.type===`attributes`&&t.attributeName===`class`){i();break}});if(a.observe(n,{attributes:!0,attributeFilter:[`class`]}),e?.favicon){let t=document.querySelector(`#favicon`)||document.querySelector(`link[rel="icon"]`);t&&(t.href=e.favicon)}return t&&(document.title=t),()=>{a.disconnect(),n.style.removeProperty(`--brand-primary`),n.style.removeProperty(`--brand-primary-hsl`),n.style.removeProperty(`--brand-accent`),n.style.removeProperty(`--brand-accent-hsl`),n.style.removeProperty(`--primary`),n.style.removeProperty(`--primary-foreground`),n.style.removeProperty(`--ring`),n.style.removeProperty(`--sidebar-primary`),n.style.removeProperty(`--sidebar-ring`),n.style.removeProperty(`--accent`),n.style.removeProperty(`--accent-foreground`)}},[e?.primaryColor,e?.accentColor,e?.favicon,t])}function K({sidebar:e,navbar:t,children:n,className:r,defaultOpen:i=!0,branding:a,rightRail:o}){return G(a,a?.title),(0,B.jsxs)(D,{defaultOpen:i,className:`!flex-col h-svh overflow-hidden`,children:[(0,B.jsx)(`header`,{className:`sticky top-0 z-30 flex h-14 w-full shrink-0 items-center gap-2 border-b bg-background px-2 sm:px-4`,children:t}),(0,B.jsxs)(`div`,{className:`flex flex-1 min-h-0 w-full`,children:[e,(0,B.jsx)(m,{className:`min-w-0`,children:(0,B.jsx)(`main`,{className:f(`flex-1 min-w-0 overflow-auto p-3 sm:p-4 md:p-6 pb-20 sm:pb-4 md:pb-6`,r),children:n})}),o]})]})}function q(e){return e?E(e):c}function J(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 ee(e,t,n,r,i,a,o){let s=J(e.label,n);if(typeof e.label!=`string`)return s;let c=e=>!!e&&s.trim().toLowerCase()!==e.trim().toLowerCase();if(e.type===`object`&&e.objectName){if(e.viewName)return c(e.viewName)?s:a?a(e.objectName,e.viewName,s):s;if(c(e.objectName))return s;if(t)return t(e.objectName,s)}if(e.type===`dashboard`&&e.dashboardName){if(c(e.dashboardName))return s;if(r)return r(e.dashboardName,s)}if(e.type===`group`&&e.id){if(c(e.id))return s;if(i)return i(e.id,s)}return o&&e.id&&!c(e.id)?o(e.id,s):s}var te=e=>!(e===!1||e===`false`),Y=()=>!0,ne=()=>!0,re=/\{(current_user_id|current_org_id|[a-z][a-z0-9_]*)\}/g;function X(e,t){if(!e.includes(`{`))return e;let n=!1,r=e.replace(re,(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 Z(e,t,n){switch(e.type){case`object`:{let r=`${t}/${e.objectName??``}`,i=e.recordId;if(i){let t=X(i,n);if(t){let n=`${r}/record/${encodeURIComponent(t)}`;return{href:e.recordMode===`edit`?`${n}/edit`:n,external:!1}}}let a=e.filters;if(a&&typeof a==`object`&&!Array.isArray(a)){let e=new URLSearchParams;for(let[t,r]of Object.entries(a)){if(r==null||t===``)continue;let i=X(String(r),n);i!==null&&e.set(`filter[${t}]`,i)}let t=e.toString();return{href:t?`${r}/data?${t}`:`${r}/data`,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=X(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=X(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}}}var Q=50,ie=40,ae=30,oe=25,se=10,ce=5;function le(e){let t=new Map;return new URLSearchParams(e).forEach((e,n)=>{let r=/^filter\[(.+)\]$/.exec(n);r&&r[1]&&e!==``&&t.set(r[1],e)}),t}function ue(e,t){return t.startsWith(`${e}.`)?t.slice(e.length+1):t}function de(e,t,n,r,i){let{href:a,external:o}=Z(e,r,i);if(o||a===`#`)return 0;if(e.type===`object`&&e.objectName){let a=`${r}/${e.objectName}`;if(t!==a&&!t.startsWith(`${a}/`))return 0;let o=t===a?[]:t.slice(a.length+1).split(`/`),s=e.recordId;if(s){let e=X(s,i);if(e)return o[0]===`record`&&decodeURIComponent(o[1]??``)===e?Q:0}let c=e.filters;if(c&&typeof c==`object`&&!Array.isArray(c)){if(o[0]!==`data`)return 0;let e=new Map;for(let[t,n]of Object.entries(c)){if(n==null||t===``)continue;let r=X(String(n),i);r!==null&&e.set(t,r)}if(e.size!==n.size)return 0;for(let[t,r]of e)if(n.get(t)!==r)return 0;return ie}return e.viewName?o[0]!==`view`||!o[1]?0:ue(e.objectName,decodeURIComponent(o[1]))===ue(e.objectName,e.viewName)?ae:0:o.length===0?oe:se}let s=a.split(`?`)[0];if(t===s)return oe;let c=e.componentRef;return c&&c.split(`:`)[1]===`directory`?0:t.startsWith(`${s}/`)?ce:0}function fe(e,t,n,r,i){let a=le(n),o=null,s=0,c=e=>{if(e)for(let n of e){if(n.type===`group`){c(n.children);continue}let e=de(n,t,a,r,i);e>s&&(o=n,s=e)}};return c(e),o}var pe=z.createContext(null);function me(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=me(r.children,t);return n.length>0&&e.push({...r,children:n}),e}return J(r.label).toLowerCase().includes(n)&&e.push(r),e},[])}var he=5;function ge({item:e,basePath:t,evalVis:n,checkPerm:r,checkCap:i,onAction:a,enablePinning:o,onPinToggle:s,enableReorder:c,resolveObjectLabel:l,resolveDashboardLabel:u,resolveGroupLabel:d,resolveViewLabel:f,resolveItemLabel:p,t:m,templateContext:h}){let{attributes:g,listeners:_,setNodeRef:v,transform:y,transition:b,isDragging:x}=M({id:e.id,disabled:!c});return(0,B.jsx)(`div`,{ref:v,style:{transform:R.Transform.toString(y),transition:b,opacity:x?.5:void 0,zIndex:x?10:void 0},...g,children:(0,B.jsx)($,{item:e,basePath:t,evalVis:n,checkPerm:r,checkCap:i,onAction:a,enablePinning:o,onPinToggle:s,dragListeners:c?_:void 0,resolveObjectLabel:l,resolveDashboardLabel:u,resolveGroupLabel:d,resolveViewLabel:f,resolveItemLabel:p,t:m,templateContext:h})})}function $({item:e,basePath:n,evalVis:r,checkPerm:i,checkCap:c,onAction:m,enablePinning:y,onPinToggle:E,dragListeners:D,resolveObjectLabel:O,resolveDashboardLabel:k,resolveGroupLabel:A,resolveViewLabel:j,resolveItemLabel:M,t:N,templateContext:P}){let F=u(),I=F?`min-h-[44px] text-[15px] gap-3 rounded-xl`:void 0,L=f(`shrink-0`,F?`h-5 w-5`:`h-4 w-4`),R=(()=>{let t=e.expanded;if(typeof t==`boolean`)return t;if(typeof e.defaultOpen==`boolean`)return e.defaultOpen})(),V=e.type===`group`?e.children?.length??0:0,H=z.useContext(pe),[U,W]=(0,z.useState)(z.useMemo(()=>{if(e.type!==`group`||!H)return!1;let t=e=>!!e?.some(e=>e.id===H||e.type===`group`&&t(e.children));return t(e.children)},[e,H])?!0:R??!(V>=8));if(!r(e.visible)||e.requiredPermissions?.length&&!i(e.requiredPermissions))return null;let G=e.requiresObject,K=e.requiresService;if(G&&!c(`object`,G)||K&&!c(`service`,K))return null;if(e.type===`separator`)return(0,B.jsx)(h,{className:`my-2`});if(e.type===`group`){let t=(e.children??[]).slice().sort((e,t)=>(e.order??0)-(t.order??0)),o=ee(e,O,N,k,A,j,M);return(0,B.jsx)(S,{open:U,onOpenChange:W,children:(0,B.jsxs)(a,{children:[(0,B.jsx)(p,{asChild:!0,children:(0,B.jsxs)(b,{className:f(`flex w-full items-center justify-between`,F&&`min-h-[44px] text-[15px] rounded-xl`),children:[o,(0,B.jsx)(_,{className:f(`ml-auto transition-transform`,F?`h-5 w-5`:`h-4 w-4`,U&&`rotate-90`)})]})}),(0,B.jsx)(w,{children:(0,B.jsx)(x,{children:(0,B.jsx)(s,{children:t.map(e=>(0,B.jsx)($,{item:e,basePath:n,evalVis:r,checkPerm:i,checkCap:c,onAction:m,enablePinning:y,onPinToggle:E,resolveObjectLabel:O,resolveDashboardLabel:k,resolveGroupLabel:A,resolveViewLabel:j,resolveItemLabel:M,t:N,templateContext:P},e.id))})})})]})})}if(e.type===`action`){let t=q(e.icon),r=J(e.label,N);return(0,B.jsxs)(g,{children:[D&&(0,B.jsx)(`span`,{className:`absolute left-0.5 top-1/2 -translate-y-1/2 cursor-grab text-muted-foreground`,"aria-label":N?N(`console.nav.dragToReorder`,{defaultValue:`Drag to reorder`}):`Drag to reorder`,...D,children:(0,B.jsx)(o,{className:`h-3.5 w-3.5`})}),(0,B.jsxs)(d,{tooltip:r,onClick:()=>m?.(e),className:I,children:[(0,B.jsx)(t,{className:L}),(0,B.jsx)(`span`,{children:r}),e.badge!=null&&(0,B.jsx)(v,{variant:e.badgeVariant??`default`,className:`ml-auto text-[10px] px-1.5 py-0`,children:e.badge})]}),y&&E&&(0,B.jsx)(l,{showOnHover:!0,onClick:()=>E(e.id,!e.pinned,e,n),"aria-label":N?N(e.pinned?`console.nav.unpinItem`:`console.nav.pinItem`,{defaultValue:e.pinned?`Unpin ${r}`:`Pin ${r}`,name:r}):e.pinned?`Unpin ${r}`:`Pin ${r}`,children:e.pinned?(0,B.jsx)(C,{className:`h-3.5 w-3.5`}):(0,B.jsx)(T,{className:`h-3.5 w-3.5`})})]})}let te=q(e.icon),{href:Y,external:ne}=Z(e,n,P),re=H!==null&&e.id===H,X=ee(e,O,N,k,A,j,M),Q=(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(te,{className:L}),(0,B.jsx)(`span`,{children:X}),e.badge!=null&&(0,B.jsx)(v,{variant:e.badgeVariant??`default`,className:`ml-auto text-[10px] px-1.5 py-0`,children:e.badge})]});return(0,B.jsxs)(g,{children:[D&&(0,B.jsx)(`span`,{className:`absolute left-0.5 top-1/2 -translate-y-1/2 cursor-grab text-muted-foreground`,"aria-label":N?N(`console.nav.dragToReorder`,{defaultValue:`Drag to reorder`}):`Drag to reorder`,...D,children:(0,B.jsx)(o,{className:`h-3.5 w-3.5`})}),(0,B.jsx)(d,{asChild:!0,isActive:re,tooltip:X,className:I,children:ne?(0,B.jsx)(`a`,{href:Y,target:`_blank`,rel:`noopener noreferrer`,children:Q}):(0,B.jsx)(t,{to:Y,children:Q})}),y&&E&&(0,B.jsx)(l,{showOnHover:!0,onClick:()=>E(e.id,!e.pinned,e,n),"aria-label":N?N(e.pinned?`console.nav.unpinItem`:`console.nav.pinItem`,{defaultValue:e.pinned?`Unpin ${X}`:`Pin ${X}`,name:X}):e.pinned?`Unpin ${X}`:`Pin ${X}`,children:e.pinned?(0,B.jsx)(C,{className:`h-3.5 w-3.5`}):(0,B.jsx)(T,{className:`h-3.5 w-3.5`})})]})}function _e({items:e,basePath:t=``,evaluateVisibility:r=te,checkPermission:i=Y,checkCapability:o=ne,onAction:c,searchQuery:l,enablePinning:u,onPinToggle:d,enableReorder:f,onReorder:m,resolveObjectLabel:h,resolveDashboardLabel:g,resolveGroupLabel:_,resolveViewLabel:v,resolveItemLabel:b,t:S,templateContext:C}){let w=n(),T=(0,z.useMemo)(()=>fe(e,w.pathname,w.search,t,C)?.id??null,[e,w.pathname,w.search,t,C]),E=(0,z.useMemo)(()=>l?me(e,l):e,[e,l]),D=(0,z.useMemo)(()=>ve(E),[E]),M=E.slice().sort((e,t)=>(e.order??0)-(t.order??0)),R=L(O(A,{activationConstraint:{distance:he}}),O(I)),V=e=>{let{active:t,over:n}=e;if(!n||t.id===n.id||!m)return;let r=M.findIndex(e=>e.id===t.id),i=M.findIndex(e=>e.id===n.id);r===-1||i===-1||m(j(M,r,i).map((e,t)=>({...e,order:t})))},H={basePath:t,evalVis:r,checkPerm:i,checkCap:o,onAction:c,enablePinning:u,onPinToggle:d,resolveObjectLabel:h,resolveDashboardLabel:g,resolveGroupLabel:_,resolveViewLabel:v,resolveItemLabel:b,t:S,templateContext:C},U=M.some(e=>e.type===`group`),W=D.length>0&&u?(0,B.jsxs)(a,{children:[(0,B.jsxs)(p,{className:`flex items-center gap-1.5`,children:[(0,B.jsx)(y,{className:`h-3.5 w-3.5`}),S?S(`console.nav.favorites`,{defaultValue:`Favorites`}):`Favorites`]}),(0,B.jsx)(x,{children:(0,B.jsx)(s,{children:D.map(e=>(0,B.jsx)($,{item:e,...H},`fav-${e.id}`))})})]}):null;if(!U){let e=M.filter(e=>e.type!==`group`).map(e=>e.id),t=f?(0,B.jsx)(k,{sensors:R,collisionDetection:N,onDragEnd:V,children:(0,B.jsx)(F,{items:e,strategy:P,children:(0,B.jsx)(s,{children:M.map(e=>(0,B.jsx)(ge,{item:e,enableReorder:f,...H},e.id))})})}):(0,B.jsx)(s,{children:M.map(e=>(0,B.jsx)($,{item:e,...H},e.id))});return(0,B.jsxs)(pe.Provider,{value:T,children:[W,(0,B.jsx)(a,{children:(0,B.jsx)(x,{children:t})})]})}let G=[],K=[],q=e=>{if(K.length===0)return;let t=K;K=[],G.push((0,B.jsx)(a,{children:(0,B.jsx)(x,{children:(0,B.jsx)(s,{children:t.map(e=>(0,B.jsx)($,{item:e,...H},e.id))})})},e))};return M.forEach((e,t)=>{e.type===`group`?(q(`leaf-${t}`),G.push((0,B.jsx)($,{item:e,...H},e.id))):K.push(e)}),q(`leaf-end`),(0,B.jsxs)(pe.Provider,{value:T,children:[W,G]})}function ve(e){let t=[];for(let n of e)n.pinned&&n.type!==`group`&&n.type!==`separator`&&t.push(n),n.children?.length&&t.push(...ve(n.children));return t}export{Z as n,K as r,_e as t};
|
|
1
|
+
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{a as t,d as n,r,y as i}from"./vendor-react-BKSb6vFP.js";import{At as a,Co as o,Ft as s,Ho as c,It as l,Kt as u,Lt as d,Mc as f,Mt as p,Pt as m,Qt as h,Rt as g,Ws as _,fr as v,hi as y,ir as b,jt as x,nr as S,oa as C,rr as w,sa as T,ut as E,zt as D}from"./ui-components-Ci5ufF7g.js";import{_ as O,c as k,d as A,n as j,o as M,p as N,s as P,t as F,u as I,v as L,y as R}from"./vendor-dndkit-DoG7p74h.js";var z=e(i(),1),B=r();function V(e){let t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);if(!t)return null;let n=parseInt(t[1],16)/255,r=parseInt(t[2],16)/255,i=parseInt(t[3],16)/255,a=Math.max(n,r,i),o=Math.min(n,r,i),s=0,c=0,l=(a+o)/2;if(a!==o){let e=a-o;switch(c=l>.5?e/(2-a-o):e/(a+o),a){case n:s=((r-i)/e+(r<i?6:0))/6;break;case r:s=((i-n)/e+2)/6;break;case i:s=((n-r)/e+4)/6;break}}return{h:s*360,s:c*100,l:l*100}}function H(e){let t=V(e);return t?`${Math.round(t.h)} ${Math.round(t.s)}% ${Math.round(t.l)}%`:null}function U(e){let t=V(e);if(!t)return null;let n=Math.max(t.l,65),r=t.s>80?Math.max(t.s-10,70):t.s;return`${Math.round(t.h)} ${Math.round(r)}% ${Math.round(n)}%`}function W(e){let t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);if(!t)return`0 0% 100%`;let n=e=>{let t=e/255;return t<=.03928?t/12.92:((t+.055)/1.055)**2.4},r=n(parseInt(t[1],16)),i=n(parseInt(t[2],16)),a=n(parseInt(t[3],16));return .2126*r+.7152*i+.0722*a>.6?`222 47% 11%`:`0 0% 100%`}function G(e,t){(0,z.useEffect)(()=>{let n=document.documentElement,r=()=>n.classList.contains(`dark`),i=()=>{if(e?.primaryColor){let t=H(e.primaryColor),i=U(e.primaryColor),a=r()&&i||t;a&&(n.style.setProperty(`--brand-primary`,e.primaryColor),n.style.setProperty(`--brand-primary-hsl`,t||a),n.style.setProperty(`--primary`,a),n.style.setProperty(`--primary-foreground`,r()?`222 47% 11%`:W(e.primaryColor)),n.style.setProperty(`--ring`,a),n.style.setProperty(`--sidebar-primary`,a),n.style.setProperty(`--sidebar-ring`,a))}else n.style.removeProperty(`--brand-primary`),n.style.removeProperty(`--brand-primary-hsl`),n.style.removeProperty(`--primary`),n.style.removeProperty(`--primary-foreground`),n.style.removeProperty(`--ring`),n.style.removeProperty(`--sidebar-primary`),n.style.removeProperty(`--sidebar-ring`);if(e?.accentColor){let t=H(e.accentColor),i=U(e.accentColor),a=r()&&i||t;a&&(n.style.setProperty(`--brand-accent`,e.accentColor),n.style.setProperty(`--brand-accent-hsl`,t||a),n.style.setProperty(`--accent`,a),n.style.setProperty(`--accent-foreground`,r()?`222 47% 11%`:W(e.accentColor)))}else n.style.removeProperty(`--brand-accent`),n.style.removeProperty(`--brand-accent-hsl`),n.style.removeProperty(`--accent`),n.style.removeProperty(`--accent-foreground`)};i();let a=new MutationObserver(e=>{for(let t of e)if(t.type===`attributes`&&t.attributeName===`class`){i();break}});if(a.observe(n,{attributes:!0,attributeFilter:[`class`]}),e?.favicon){let t=document.querySelector(`#favicon`)||document.querySelector(`link[rel="icon"]`);t&&(t.href=e.favicon)}return t&&(document.title=t),()=>{a.disconnect(),n.style.removeProperty(`--brand-primary`),n.style.removeProperty(`--brand-primary-hsl`),n.style.removeProperty(`--brand-accent`),n.style.removeProperty(`--brand-accent-hsl`),n.style.removeProperty(`--primary`),n.style.removeProperty(`--primary-foreground`),n.style.removeProperty(`--ring`),n.style.removeProperty(`--sidebar-primary`),n.style.removeProperty(`--sidebar-ring`),n.style.removeProperty(`--accent`),n.style.removeProperty(`--accent-foreground`)}},[e?.primaryColor,e?.accentColor,e?.favicon,t])}function K({sidebar:e,navbar:t,children:n,className:r,defaultOpen:i=!0,branding:a,rightRail:o}){return G(a,a?.title),(0,B.jsxs)(D,{defaultOpen:i,className:`!flex-col h-svh overflow-hidden`,children:[(0,B.jsx)(`header`,{className:`sticky top-0 z-30 flex h-14 w-full shrink-0 items-center gap-2 border-b bg-background px-2 sm:px-4`,children:t}),(0,B.jsxs)(`div`,{className:`flex flex-1 min-h-0 w-full`,children:[e,(0,B.jsx)(m,{className:`min-w-0`,children:(0,B.jsx)(`main`,{className:f(`flex-1 min-w-0 overflow-auto p-3 sm:p-4 md:p-6 pb-20 sm:pb-4 md:pb-6`,r),children:n})}),o]})]})}function q(e){return e?E(e):c}function J(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 ee(e,t,n,r,i,a,o){let s=J(e.label,n);if(typeof e.label!=`string`)return s;let c=e=>!!e&&s.trim().toLowerCase()!==e.trim().toLowerCase();if(e.type===`object`&&e.objectName){if(e.viewName)return c(e.viewName)?s:a?a(e.objectName,e.viewName,s):s;if(c(e.objectName))return s;if(t)return t(e.objectName,s)}if(e.type===`dashboard`&&e.dashboardName){if(c(e.dashboardName))return s;if(r)return r(e.dashboardName,s)}if(e.type===`group`&&e.id){if(c(e.id))return s;if(i)return i(e.id,s)}return o&&e.id&&!c(e.id)?o(e.id,s):s}var te=e=>!(e===!1||e===`false`),Y=()=>!0,ne=()=>!0,re=/\{(current_user_id|current_org_id|[a-z][a-z0-9_]*)\}/g;function X(e,t){if(!e.includes(`{`))return e;let n=!1,r=e.replace(re,(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 Z(e,t,n){switch(e.type){case`object`:{let r=`${t}/${e.objectName??``}`,i=e.recordId;if(i){let t=X(i,n);if(t){let n=`${r}/record/${encodeURIComponent(t)}`;return{href:e.recordMode===`edit`?`${n}/edit`:n,external:!1}}}let a=e.filters;if(a&&typeof a==`object`&&!Array.isArray(a)){let e=new URLSearchParams;for(let[t,r]of Object.entries(a)){if(r==null||t===``)continue;let i=X(String(r),n);i!==null&&e.set(`filter[${t}]`,i)}let t=e.toString();return{href:t?`${r}/data?${t}`:`${r}/data`,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=X(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=X(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}}}var Q=50,ie=40,ae=30,oe=25,se=10,ce=5;function le(e){let t=new Map;return new URLSearchParams(e).forEach((e,n)=>{let r=/^filter\[(.+)\]$/.exec(n);r&&r[1]&&e!==``&&t.set(r[1],e)}),t}function ue(e,t){return t.startsWith(`${e}.`)?t.slice(e.length+1):t}function de(e,t,n,r,i){let{href:a,external:o}=Z(e,r,i);if(o||a===`#`)return 0;if(e.type===`object`&&e.objectName){let a=`${r}/${e.objectName}`;if(t!==a&&!t.startsWith(`${a}/`))return 0;let o=t===a?[]:t.slice(a.length+1).split(`/`),s=e.recordId;if(s){let e=X(s,i);if(e)return o[0]===`record`&&decodeURIComponent(o[1]??``)===e?Q:0}let c=e.filters;if(c&&typeof c==`object`&&!Array.isArray(c)){if(o[0]!==`data`)return 0;let e=new Map;for(let[t,n]of Object.entries(c)){if(n==null||t===``)continue;let r=X(String(n),i);r!==null&&e.set(t,r)}if(e.size!==n.size)return 0;for(let[t,r]of e)if(n.get(t)!==r)return 0;return ie}return e.viewName?o[0]!==`view`||!o[1]?0:ue(e.objectName,decodeURIComponent(o[1]))===ue(e.objectName,e.viewName)?ae:0:o.length===0?oe:se}let s=a.split(`?`)[0];if(t===s)return oe;let c=e.componentRef;return c&&c.split(`:`)[1]===`directory`?0:t.startsWith(`${s}/`)?ce:0}function fe(e,t,n,r,i){let a=le(n),o=null,s=0,c=e=>{if(e)for(let n of e){if(n.type===`group`){c(n.children);continue}let e=de(n,t,a,r,i);e>s&&(o=n,s=e)}};return c(e),o}var pe=z.createContext(null);function me(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=me(r.children,t);return n.length>0&&e.push({...r,children:n}),e}return J(r.label).toLowerCase().includes(n)&&e.push(r),e},[])}var he=5;function ge({item:e,basePath:t,evalVis:n,checkPerm:r,checkCap:i,onAction:a,enablePinning:o,onPinToggle:s,enableReorder:c,resolveObjectLabel:l,resolveDashboardLabel:u,resolveGroupLabel:d,resolveViewLabel:f,resolveItemLabel:p,t:m,templateContext:h}){let{attributes:g,listeners:_,setNodeRef:v,transform:y,transition:b,isDragging:x}=M({id:e.id,disabled:!c});return(0,B.jsx)(`div`,{ref:v,style:{transform:R.Transform.toString(y),transition:b,opacity:x?.5:void 0,zIndex:x?10:void 0},...g,children:(0,B.jsx)($,{item:e,basePath:t,evalVis:n,checkPerm:r,checkCap:i,onAction:a,enablePinning:o,onPinToggle:s,dragListeners:c?_:void 0,resolveObjectLabel:l,resolveDashboardLabel:u,resolveGroupLabel:d,resolveViewLabel:f,resolveItemLabel:p,t:m,templateContext:h})})}function $({item:e,basePath:n,evalVis:r,checkPerm:i,checkCap:c,onAction:m,enablePinning:y,onPinToggle:E,dragListeners:D,resolveObjectLabel:O,resolveDashboardLabel:k,resolveGroupLabel:A,resolveViewLabel:j,resolveItemLabel:M,t:N,templateContext:P}){let F=u(),I=F?`min-h-[44px] text-[15px] gap-3 rounded-xl`:void 0,L=f(`shrink-0`,F?`h-5 w-5`:`h-4 w-4`),R=(()=>{let t=e.expanded;if(typeof t==`boolean`)return t;if(typeof e.defaultOpen==`boolean`)return e.defaultOpen})(),V=e.type===`group`?e.children?.length??0:0,H=z.useContext(pe),[U,W]=(0,z.useState)(z.useMemo(()=>{if(e.type!==`group`||!H)return!1;let t=e=>!!e?.some(e=>e.id===H||e.type===`group`&&t(e.children));return t(e.children)},[e,H])?!0:R??!(V>=8));if(!r(e.visible)||e.requiredPermissions?.length&&!i(e.requiredPermissions))return null;let G=e.requiresObject,K=e.requiresService;if(G&&!c(`object`,G)||K&&!c(`service`,K))return null;if(e.type===`separator`)return(0,B.jsx)(h,{className:`my-2`});if(e.type===`group`){let t=(e.children??[]).slice().sort((e,t)=>(e.order??0)-(t.order??0)),o=ee(e,O,N,k,A,j,M);return(0,B.jsx)(S,{open:U,onOpenChange:W,children:(0,B.jsxs)(a,{children:[(0,B.jsx)(p,{asChild:!0,children:(0,B.jsxs)(b,{className:f(`flex w-full items-center justify-between`,F&&`min-h-[44px] text-[15px] rounded-xl`),children:[o,(0,B.jsx)(_,{className:f(`ml-auto transition-transform`,F?`h-5 w-5`:`h-4 w-4`,U&&`rotate-90`)})]})}),(0,B.jsx)(w,{children:(0,B.jsx)(x,{children:(0,B.jsx)(s,{children:t.map(e=>(0,B.jsx)($,{item:e,basePath:n,evalVis:r,checkPerm:i,checkCap:c,onAction:m,enablePinning:y,onPinToggle:E,resolveObjectLabel:O,resolveDashboardLabel:k,resolveGroupLabel:A,resolveViewLabel:j,resolveItemLabel:M,t:N,templateContext:P},e.id))})})})]})})}if(e.type===`action`){let t=q(e.icon),r=J(e.label,N);return(0,B.jsxs)(g,{children:[D&&(0,B.jsx)(`span`,{className:`absolute left-0.5 top-1/2 -translate-y-1/2 cursor-grab text-muted-foreground`,"aria-label":N?N(`console.nav.dragToReorder`,{defaultValue:`Drag to reorder`}):`Drag to reorder`,...D,children:(0,B.jsx)(o,{className:`h-3.5 w-3.5`})}),(0,B.jsxs)(d,{tooltip:r,onClick:()=>m?.(e),className:I,children:[(0,B.jsx)(t,{className:L}),(0,B.jsx)(`span`,{children:r}),e.badge!=null&&(0,B.jsx)(v,{variant:e.badgeVariant??`default`,className:`ml-auto text-[10px] px-1.5 py-0`,children:e.badge})]}),y&&E&&(0,B.jsx)(l,{showOnHover:!0,onClick:()=>E(e.id,!e.pinned,e,n),"aria-label":N?N(e.pinned?`console.nav.unpinItem`:`console.nav.pinItem`,{defaultValue:e.pinned?`Unpin ${r}`:`Pin ${r}`,name:r}):e.pinned?`Unpin ${r}`:`Pin ${r}`,children:e.pinned?(0,B.jsx)(C,{className:`h-3.5 w-3.5`}):(0,B.jsx)(T,{className:`h-3.5 w-3.5`})})]})}let te=q(e.icon),{href:Y,external:ne}=Z(e,n,P),re=H!==null&&e.id===H,X=ee(e,O,N,k,A,j,M),Q=(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(te,{className:L}),(0,B.jsx)(`span`,{children:X}),e.badge!=null&&(0,B.jsx)(v,{variant:e.badgeVariant??`default`,className:`ml-auto text-[10px] px-1.5 py-0`,children:e.badge})]});return(0,B.jsxs)(g,{children:[D&&(0,B.jsx)(`span`,{className:`absolute left-0.5 top-1/2 -translate-y-1/2 cursor-grab text-muted-foreground`,"aria-label":N?N(`console.nav.dragToReorder`,{defaultValue:`Drag to reorder`}):`Drag to reorder`,...D,children:(0,B.jsx)(o,{className:`h-3.5 w-3.5`})}),(0,B.jsx)(d,{asChild:!0,isActive:re,tooltip:X,className:I,children:ne?(0,B.jsx)(`a`,{href:Y,target:`_blank`,rel:`noopener noreferrer`,children:Q}):(0,B.jsx)(t,{to:Y,children:Q})}),y&&E&&(0,B.jsx)(l,{showOnHover:!0,onClick:()=>E(e.id,!e.pinned,e,n),"aria-label":N?N(e.pinned?`console.nav.unpinItem`:`console.nav.pinItem`,{defaultValue:e.pinned?`Unpin ${X}`:`Pin ${X}`,name:X}):e.pinned?`Unpin ${X}`:`Pin ${X}`,children:e.pinned?(0,B.jsx)(C,{className:`h-3.5 w-3.5`}):(0,B.jsx)(T,{className:`h-3.5 w-3.5`})})]})}function _e({items:e,basePath:t=``,evaluateVisibility:r=te,checkPermission:i=Y,checkCapability:o=ne,onAction:c,searchQuery:l,enablePinning:u,onPinToggle:d,enableReorder:f,onReorder:m,resolveObjectLabel:h,resolveDashboardLabel:g,resolveGroupLabel:_,resolveViewLabel:v,resolveItemLabel:b,t:S,templateContext:C}){let w=n(),T=(0,z.useMemo)(()=>fe(e,w.pathname,w.search,t,C)?.id??null,[e,w.pathname,w.search,t,C]),E=(0,z.useMemo)(()=>l?me(e,l):e,[e,l]),D=(0,z.useMemo)(()=>ve(E),[E]),M=E.slice().sort((e,t)=>(e.order??0)-(t.order??0)),R=L(O(A,{activationConstraint:{distance:he}}),O(I)),V=e=>{let{active:t,over:n}=e;if(!n||t.id===n.id||!m)return;let r=M.findIndex(e=>e.id===t.id),i=M.findIndex(e=>e.id===n.id);r===-1||i===-1||m(j(M,r,i).map((e,t)=>({...e,order:t})))},H={basePath:t,evalVis:r,checkPerm:i,checkCap:o,onAction:c,enablePinning:u,onPinToggle:d,resolveObjectLabel:h,resolveDashboardLabel:g,resolveGroupLabel:_,resolveViewLabel:v,resolveItemLabel:b,t:S,templateContext:C},U=M.some(e=>e.type===`group`),W=D.length>0&&u?(0,B.jsxs)(a,{children:[(0,B.jsxs)(p,{className:`flex items-center gap-1.5`,children:[(0,B.jsx)(y,{className:`h-3.5 w-3.5`}),S?S(`console.nav.favorites`,{defaultValue:`Favorites`}):`Favorites`]}),(0,B.jsx)(x,{children:(0,B.jsx)(s,{children:D.map(e=>(0,B.jsx)($,{item:e,...H},`fav-${e.id}`))})})]}):null;if(!U){let e=M.filter(e=>e.type!==`group`).map(e=>e.id),t=f?(0,B.jsx)(k,{sensors:R,collisionDetection:N,onDragEnd:V,children:(0,B.jsx)(F,{items:e,strategy:P,children:(0,B.jsx)(s,{children:M.map(e=>(0,B.jsx)(ge,{item:e,enableReorder:f,...H},e.id))})})}):(0,B.jsx)(s,{children:M.map(e=>(0,B.jsx)($,{item:e,...H},e.id))});return(0,B.jsxs)(pe.Provider,{value:T,children:[W,(0,B.jsx)(a,{children:(0,B.jsx)(x,{children:t})})]})}let G=[],K=[],q=e=>{if(K.length===0)return;let t=K;K=[],G.push((0,B.jsx)(a,{children:(0,B.jsx)(x,{children:(0,B.jsx)(s,{children:t.map(e=>(0,B.jsx)($,{item:e,...H},e.id))})})},e))};return M.forEach((e,t)=>{e.type===`group`?(q(`leaf-${t}`),G.push((0,B.jsx)($,{item:e,...H},e.id))):K.push(e)}),q(`leaf-end`),(0,B.jsxs)(pe.Provider,{value:T,children:[W,G]})}function ve(e){let t=[];for(let n of e)n.pinned&&n.type!==`group`&&n.type!==`separator`&&t.push(n),n.children?.length&&t.push(...ve(n.children));return t}export{Z as n,K as r,_e as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{y as t}from"./vendor-react-BKSb6vFP.js";import{j as n}from"./framework-
|
|
1
|
+
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{y as t}from"./vendor-react-BKSb6vFP.js";import{j as n}from"./framework-BqSgd3ir.js";import"./src-RHOMTPFk.js";var r=e(t(),1),i=`uncategorized`;function a(e){let t=e.indexOf(`_`);return t>0?e.slice(0,t):e}function o(e){return e.packageId??a(e.name)}function s(e){return e.packageId??a(e.name)}function c(e){return e.slug??e.name}function l(e){let t=e.replace(/[.+^${}()|[\]\\]/g,`\\$&`).replace(/\*/g,`.*`);return RegExp(`^${t}$`)}function u(e,t,n){return n&&o(e)!==n?!1:typeof t==`string`?l(t).test(e.name):Array.isArray(e.tags)&&e.tags.includes(t.tag)}function d(e,t){return(e.order??0)-(t.order??0)||(e.label??e.name).localeCompare(t.label??t.name)}function f(e){return{doc:e.name,label:e.label,description:e.description}}function p(e,t,n){let r=n??e.packageId,a=[...e.groups??[]].map((e,t)=>({g:e,i:t})).sort((e,t)=>(e.g.order??0)-(t.g.order??0)||e.i-t.i).map(e=>e.g),o=new Set,s=new Map(t.map(e=>[e.name,e])),c=new Map;for(let e of a){if(e.pages)continue;let n=e.package??r,i=t.filter(t=>o.has(t.name)?!1:e.include!=null&&u(t,e.include,n)||t.group!=null&&t.group===e.key);i.sort(d),i.forEach(e=>o.add(e.name)),c.set(e.key,i)}let l=[];for(let e of a){let n;if(e.pages){let i=e.package??r;n=[];let a=new Set(e.pages.filter(e=>typeof e==`string`&&e!==`...`&&e!==`---`));for(let r of e.pages)if(r===`---`)n.push({separator:!0});else if(r===`...`){let r=t.filter(t=>!o.has(t.name)&&!a.has(t.name)&&(e.include!=null&&u(t,e.include,i)||t.group!=null&&t.group===e.key));r.sort(d),r.forEach(e=>{o.add(e.name),n.push(f(e))})}else if(typeof r==`string`){let e=s.get(r);o.add(r),n.push(e?f(e):{doc:r})}else if(r.doc){let e=s.get(r.doc);o.add(r.doc),n.push({...e?f(e):{doc:r.doc},label:r.label??e?.label,badge:r.badge,icon:r.icon})}else r.href&&n.push({href:r.href,label:r.label,badge:r.badge,icon:r.icon})}else n=(c.get(e.key)??[]).map(f);l.push({key:e.key,label:e.label,entries:n})}let p=t.filter(e=>!o.has(e.name)).sort(d);return p.length&&l.push({key:i,label:`Uncategorized`,entries:p.map(f),synthetic:!0}),{name:e.name,label:e.label,description:e.description,groups:l}}function m(e,t){return{name:e,label:t??e,audience:`org`,groups:[{key:`all`,label:t??`Documentation`,include:`*`,package:e}]}}function h(e){let t=new Set;e.packageId&&t.add(e.packageId);for(let n of e.groups??[])n.package&&t.add(n.package);return t}function g(e,t){let n=h(e);return n.size===0?t:t.filter(e=>n.has(o(e)))}function _(e){return[...e].map((e,t)=>({b:e,i:t})).sort((e,t)=>(e.b.order??0)-(t.b.order??0)||(e.b.label??e.b.name).localeCompare(t.b.label??t.b.name)||e.i-t.i).map(e=>e.b)}function v(e,t){let n=p(e,g(e,t)),r=new Set;for(let e of n.groups)if(!e.synthetic)for(let t of e.entries)t.doc&&!t.separator&&r.add(t.doc);return r.size}function y(e,t){return e.map(e=>({name:e.name,slug:c(e),label:e.label??e.name,description:e.description,subtitle:e.implicit&&!e.description?e.packageId:void 0,icon:e.icon,packageId:e.packageId,docCount:v(e,t)}))}function b(e,t){let n=new Set(e.map(s)),r=[...new Set(t.map(o))].filter(e=>!n.has(e)).map(e=>({...m(e),label:x(e),packageId:e,implicit:!0}));return[..._(e),..._(r)]}function x(e){let t=e.split(`.`).pop()||e;return t.charAt(0).toUpperCase()+t.slice(1)}function S(e,t,n){let r=n.find(t=>t.name===e),i=r?o(r):a(e);return _(t).find(e=>s(e)===i)??null}function C(e){let t=[];for(let n of e.groups)for(let e of n.entries)e.doc&&!e.separator&&t.push(e.doc);return t.find(e=>/(^|_)index$/.test(e))??t[0]}function w(e){if(Array.isArray(e))return e;let t=e;return Array.isArray(t?.items)?t.items:Array.isArray(t?.value)?t.value:[]}function T(e){return!e||typeof e.name!=`string`||!e.name?null:{name:e.name,label:e.label,description:e.description,slug:e.slug,icon:e.icon,order:typeof e.order==`number`?e.order:void 0,audience:e.audience,groups:Array.isArray(e.groups)?e.groups:[],packageId:e._packageId??e.packageId}}function E(e){return!e||typeof e.name!=`string`||!e.name?null:{name:e.name,label:e.label,description:e.description,order:typeof e.order==`number`?e.order:void 0,group:typeof e.group==`string`?e.group:void 0,tags:Array.isArray(e.tags)?e.tags:void 0,packageId:e._packageId??e.packageId}}function D(){let e=n(),[t,i]=(0,r.useState)({authoredBooks:[],docs:[],state:`loading`});(0,r.useEffect)(()=>{let t=!1;async function n(){if(!e)return;let n=e.getClient();if(!n?.meta?.getItems){i({authoredBooks:[],docs:[],state:`error`,error:`meta.getItems is not available`});return}i(e=>({...e,state:`loading`}));try{let e=await n.meta.getItems(`doc`),r=[];try{r=await n.meta.getItems(`book`)}catch{r=[]}if(t)return;let a=w(e).map(E).filter(e=>e!==null),o=w(r).map(T).filter(e=>e!==null);i({authoredBooks:o,docs:a,state:`ready`})}catch(e){if(t)return;i({authoredBooks:[],docs:[],state:`error`,error:e?.message??`Failed to load documentation`})}}return n(),()=>{t=!0}},[e]);let a=(0,r.useMemo)(()=>b(t.authoredBooks,t.docs),[t.authoredBooks,t.docs]);return{...t,books:a}}var O={authoredBooks:[],books:[],docs:[],state:`loading`},k=(0,r.createContext)(null);function A(){return(0,r.useContext)(k)??O}export{y as a,s as c,c as i,p as l,A as n,C as o,D as r,S as s,k as t,g as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function e(e){if(e)return e._packageId??e.name??void 0}function t(e,t){if(!(!e||t==null))return e.find(e=>e?._packageId===t)??e.find(e=>e?.name===t)}function n(e,t){if(!t)return null;let n=c(e);return n?`/studio/${encodeURIComponent(n)}/data`:null}function r(e,t,n){if(!t)return null;let r=c(e);if(!r)return null;let i=n?.type,a=n?.name;if(!i||!a)return null;let o=`${i}:${encodeURIComponent(a)}`;return`/studio/${encodeURIComponent(r)}/interfaces?surface=${o}`}function i(e,t,n){if(!t)return null;let r=c(e);if(!r||!n)return null;let i=`object:${encodeURIComponent(n)}`;return`/studio/${encodeURIComponent(r)}/data?surface=${i}`}var a=new Set([`dashboard`,`page`,`report`]),o=new Set([...a,`system`]);function s(e,t,s){let c=s?.type,l=s?.name;return c&&l&&a.has(c)?r(e,t,{type:c,name:l}):c&&!o.has(c)?i(e,t,c):n(e,t)}function c(e){let t=e?._packageId;return typeof t!=`string`||!t||t===`sys_metadata`?null:t}export{
|
|
1
|
+
function e(e){if(e)return e._packageId??e.name??void 0}function t(e,t){if(!(!e||t==null))return e.find(e=>e?._packageId===t)??e.find(e=>e?.name===t)}function n(e,t){if(!t)return null;let n=c(e);return n?`/studio/${encodeURIComponent(n)}/data`:null}function r(e,t,n){if(!t)return null;let r=c(e);if(!r)return null;let i=n?.type,a=n?.name;if(!i||!a)return null;let o=`${i}:${encodeURIComponent(a)}`;return`/studio/${encodeURIComponent(r)}/interfaces?surface=${o}`}function i(e,t,n){if(!t)return null;let r=c(e);if(!r||!n)return null;let i=`object:${encodeURIComponent(n)}`;return`/studio/${encodeURIComponent(r)}/data?surface=${i}`}var a=new Set([`dashboard`,`page`,`report`]),o=new Set([...a,`system`]);function s(e,t,s){let c=s?.type,l=s?.name;return c&&l&&a.has(c)?r(e,t,{type:c,name:l}):c&&!o.has(c)?i(e,t,c):n(e,t)}function c(e){let t=e?._packageId;return typeof t!=`string`||!t||t===`sys_metadata`?null:t}function l(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}}export{t as i,e as n,s as r,l as t};
|
package/dist/index.html
CHANGED
|
@@ -46,12 +46,12 @@
|
|
|
46
46
|
<script>
|
|
47
47
|
window.process = window.process || { env: { NODE_ENV: 'development' }, version: '', platform: 'browser' };
|
|
48
48
|
</script>
|
|
49
|
-
<script type="module" crossorigin src="./assets/index-
|
|
49
|
+
<script type="module" crossorigin src="./assets/index-CgfL2xiq.js"></script>
|
|
50
50
|
<link rel="stylesheet" crossorigin href="./assets/ui-components-BL3SEdAz.css">
|
|
51
51
|
<link rel="stylesheet" crossorigin href="./assets/plugin-dashboard-DnNKJB60.css">
|
|
52
52
|
<link rel="stylesheet" crossorigin href="./assets/index-De6xiiED.css">
|
|
53
|
-
<link rel="modulepreload" href="./assets/framework-
|
|
54
|
-
<link rel="modulepreload" href="./assets/ui-components-
|
|
53
|
+
<link rel="modulepreload" href="./assets/framework-BqSgd3ir.js" />
|
|
54
|
+
<link rel="modulepreload" href="./assets/ui-components-Ci5ufF7g.js" />
|
|
55
55
|
<link rel="modulepreload" href="./assets/vendor-radix-B1fu-dZi.js" />
|
|
56
56
|
<link rel="modulepreload" href="./assets/vendor-react-BKSb6vFP.js" />
|
|
57
57
|
</head>
|
package/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@objectstack/console",
|
|
3
|
-
"version": "16.
|
|
3
|
+
"version": "16.1.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
|
-
"homepage": "https://github.com/objectstack-ai/
|
|
6
|
+
"homepage": "https://github.com/objectstack-ai/objectstack/tree/main/packages/console",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
|
-
"url": "git+https://github.com/objectstack-ai/
|
|
9
|
+
"url": "git+https://github.com/objectstack-ai/objectstack.git",
|
|
10
10
|
"directory": "packages/console"
|
|
11
11
|
},
|
|
12
12
|
"bugs": {
|
|
13
|
-
"url": "https://github.com/objectstack-ai/
|
|
13
|
+
"url": "https://github.com/objectstack-ai/objectstack/issues"
|
|
14
14
|
},
|
|
15
15
|
"publishConfig": {
|
|
16
16
|
"access": "public"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e,r as t}from"./rolldown-runtime-DAXXjFlN.js";import{a as n,h as r,m as i,r as a,y as o}from"./vendor-react-BKSb6vFP.js";import{p as s}from"./infrastructure-C6pQBkbt.js";import{M as c}from"./framework-brxTxzwx.js";import{Ec as l,Ho as u,Ii as d,Uc as f,fr as p,io as m,ls as h,mn as g,or as _,sr as v,tc as y}from"./ui-components-BDIRZFoR.js";import"./MetadataProvider-1pC12cNH.js";import{n as b}from"./ui-layout-ZABgadCW.js";import{r as x}from"./appRoute-C7XNGt8B.js";var S=t({SearchResultsPage:()=>O}),C=e(o(),1),w=a();function T(e){let t=[];for(let n of e)n.type===`group`&&n.children?t.push(...T(n.children)):t.push(n);return t}var E={object:h,dashboard:m,page:u,report:y},D={object:`bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-200`,dashboard:`bg-purple-100 text-purple-800 dark:bg-purple-900 dark:text-purple-200`,page:`bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200`,report:`bg-orange-100 text-orange-800 dark:bg-orange-900 dark:text-orange-200`};function O(){let{t:e}=f(),{appName:t}=i(),[a,o]=r(),[u,m]=(0,C.useState)(a.get(`q`)||``),{apps:y}=c(),S=y||[],O=x(S,t)||S[0],k=`/apps/${t}`,{user:A,activeOrganization:j}=s(),M=(0,C.useMemo)(()=>{if(!O)return[];let e=T(O.navigation||[]),t={currentUserId:A?.id??null,currentOrgId:j?.id??null};return e.map(e=>{let{href:n}=b(e,k,t);return{id:e.id,label:e.label||e.objectName||e.dashboardName||e.pageName||e.reportName||``,href:n,type:e.type,description:e.description}}).filter(e=>e.href!==`#`)},[O,k,A?.id]),N=(0,C.useMemo)(()=>{if(!u.trim())return M;let e=u.toLowerCase();return M.filter(t=>t.label.toLowerCase().includes(e)||t.type.toLowerCase().includes(e)||t.description&&t.description.toLowerCase().includes(e))},[M,u]),P=e=>{m(e),o(e?{q:e}:{})},F=(0,C.useMemo)(()=>{let e={};for(let t of N)(e[t.type]||=[]).push(t);return e},[N]);return(0,w.jsxs)(`div`,{className:`flex flex-col gap-6 p-4 sm:p-6 max-w-4xl mx-auto`,children:[(0,w.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,w.jsxs)(n,{to:k,className:`flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground transition-colors`,children:[(0,w.jsx)(l,{className:`h-4 w-4`}),e(`search.back`)]}),(0,w.jsx)(`h1`,{className:`text-xl font-semibold`,children:e(`search.title`)})]}),(0,w.jsxs)(`div`,{className:`relative`,children:[(0,w.jsx)(`label`,{htmlFor:`search-results-input`,className:`sr-only`,children:e(`search.placeholder`)}),(0,w.jsx)(d,{className:`absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground`,"aria-hidden":`true`}),(0,w.jsx)(g,{id:`search-results-input`,value:u,onChange:e=>P(e.target.value),placeholder:e(`search.placeholder`),className:`pl-10 h-11 text-base`,autoFocus:!0})]}),(0,w.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:u.trim()?e(N.length===1?`search.resultsCount`:`search.resultsCountPlural`,{count:N.length,query:u}):e(`search.itemsAvailable`,{count:M.length})}),N.length===0?(0,w.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-12 text-center`,children:[(0,w.jsx)(d,{className:`h-12 w-12 text-muted-foreground/30 mb-4`}),(0,w.jsx)(`p`,{className:`text-lg font-medium text-muted-foreground`,children:e(`search.noResults`)}),(0,w.jsx)(`p`,{className:`text-sm text-muted-foreground/80 mt-1`,children:e(`search.noResultsHint`)})]}):(0,w.jsx)(`div`,{className:`space-y-6`,children:Object.entries(F).map(([t,r])=>{let i=E[t]||h,a=`search.type${t.charAt(0).toUpperCase()}${t.slice(1)}s`;return`${t.charAt(0).toUpperCase()}${t.slice(1)}`,(0,w.jsxs)(`div`,{children:[(0,w.jsxs)(`h2`,{className:`text-sm font-medium text-muted-foreground mb-2 flex items-center gap-1.5`,children:[(0,w.jsx)(i,{className:`h-4 w-4`}),e(a),(0,w.jsx)(p,{variant:`secondary`,className:`ml-1 text-xs`,children:r.length})]}),(0,w.jsx)(`div`,{className:`grid gap-2`,children:r.map(t=>{let r=E[t.type]||h,i=`search.badge${t.type.charAt(0).toUpperCase()}${t.type.slice(1)}`;return(0,w.jsx)(n,{to:t.href,className:`rounded-lg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`,children:(0,w.jsx)(_,{className:`hover:bg-accent/50 transition-colors cursor-pointer`,children:(0,w.jsxs)(v,{className:`flex items-center gap-3 p-3`,children:[(0,w.jsx)(`div`,{className:`flex h-8 w-8 items-center justify-center rounded ${D[t.type]||``}`,children:(0,w.jsx)(r,{className:`h-4 w-4`})}),(0,w.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,w.jsx)(`p`,{className:`text-sm font-medium truncate`,children:t.label}),t.description&&(0,w.jsx)(`p`,{className:`text-xs text-muted-foreground truncate`,children:t.description})]}),(0,w.jsx)(p,{variant:`outline`,className:`text-xs shrink-0`,children:e(i)})]})})},t.id)})})]},t)})})]})}export{S as t};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import{i as e,o as t,t as n}from"./rolldown-runtime-DAXXjFlN.js";import{r,y as i}from"./vendor-react-BKSb6vFP.js";import{D as a,k as o}from"./vendor-objectstack-CjHQG7Oa.js";var s=`object-grid.list-view.object-form.embeddable-form.object-master-detail-form.object-kanban.object-calendar.object-gantt.object-timeline.object-map.object-metric.object-chart.dashboard.object-pivot.record:details.record:highlights.record:related_list.record:path.line_items.flex.grid.stack.card.tabs.accordion.container.page:header.text.image.icon.markdown.element:divider.badge.alert.button.html`.split(`.`);new Set(s);var c=new class{components=new Map;lazyEntries=new Map;listeners=new Set;register(e,t,n){let r=n?.namespace?`${n.namespace}:${e}`:e;if(n?.namespace||console.warn(`Registering component "${e}" without a namespace is deprecated. Please provide a namespace in the meta parameter.\n\n Migration:\n // Before (deprecated):\n registry.register('${e}', MyComponent);\n\n // After:\n registry.register('${e}', MyComponent, { namespace: 'my-plugin' });\n\n See: https://github.com/objectstack-ai/objectui/blob/main/MIGRATION_GUIDE.md`),this.components.has(r),this.components.set(r,{type:r,component:t,...n}),n?.namespace&&!n?.skipFallback){let i=this.components.get(e);i&&i.component!==t&&i.type!==r&&console.warn(`Component "${e}" bare-name fallback is being overwritten by "${r}". If this is intentional keep going; otherwise register "${r}" with { skipFallback: true } so it doesn't claim the bare "${e}" key.`),this.components.set(e,{type:r,component:t,...n})}this.lazyEntries.delete(r),this.lazyEntries.delete(e),this.notify()}unregister(e,t){let n=t?`${t}:${e}`:e,r=this.components.delete(n);if(t){let t=this.components.get(e);t&&t.type===n&&this.components.delete(e)}return this.lazyEntries.delete(n),this.lazyEntries.delete(e),r&&this.notify(),r}registerLazy(e,t,n){let r=n?.namespace?`${n.namespace}:${e}`:e,i={loader:t,meta:n};this.lazyEntries.set(r,i),n?.namespace&&!n?.skipFallback&&this.lazyEntries.set(e,i)}hasLazy(e,t){return t?this.lazyEntries.has(`${t}:${e}`):this.lazyEntries.has(e)}loadLazy(e,t){let n=t?`${t}:${e}`:e,r=this.lazyEntries.get(n);if(r)return r.pending||=r.loader().catch(e=>{throw r.pending=void 0,e}),r.pending}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}notify(){for(let e of this.listeners)try{e()}catch(e){console.error(`[Registry] listener error`,e)}}get(e,t){if(t){let n=`${t}:${e}`;return this.components.get(n)?.component}return this.components.get(e)?.component}getConfig(e,t){if(t){let n=`${t}:${e}`;return this.components.get(n)}return this.components.get(e)}has(e,t){if(t){let n=`${t}:${e}`;return this.components.has(n)}return this.components.has(e)}getAllTypes(){return Array.from(this.components.keys())}getAllConfigs(){return Array.from(this.components.values())}getPublicConfigs(){let e=new Set,t=[],n=(n,r)=>{!r||e.has(r.type)||(e.add(r.type),t.push({...r,type:n}))};for(let e of s)n(e,this.getConfig(e));for(let[e,t]of this.components.entries())t.tier===`public`&&!e.includes(`:`)&&n(e,t);return t}getNamespaceComponents(e){return Array.from(this.components.values()).filter(t=>t.namespace===e)}},l={type:{required:!0,validate:e=>typeof e==`string`&&e.length>0,message:`type must be a non-empty string`},id:{required:!1,validate:e=>typeof e==`string`,message:`id must be a string`},className:{required:!1,validate:e=>typeof e==`string`,message:`className must be a string`},visible:{required:!1,validate:e=>typeof e==`boolean`,message:`visible must be a boolean`},disabled:{required:!1,validate:e=>typeof e==`boolean`,message:`disabled must be a boolean`}};function u(e,t=`schema`){let n=[];return!e||typeof e!=`object`?(n.push({path:t,message:`Schema must be an object`,type:`error`,code:`INVALID_SCHEMA`}),n):(Object.entries(l).forEach(([r,i])=>{let a=e[r];i.required&&a===void 0&&n.push({path:`${t}.${r}`,message:`${r} is required`,type:`error`,code:`MISSING_REQUIRED`}),a!==void 0&&!i.validate(a)&&n.push({path:`${t}.${r}`,message:i.message,type:`error`,code:`INVALID_TYPE`})}),n)}function d(e,t=`schema`){let n=[];return e.type===`crud`&&((!e.columns||!Array.isArray(e.columns))&&n.push({path:`${t}.columns`,message:`CRUD schema requires columns array`,type:`error`,code:`MISSING_COLUMNS`}),!e.api&&!e.dataSource&&n.push({path:`${t}.api`,message:`CRUD schema requires api or dataSource`,type:`warning`,code:`MISSING_DATA_SOURCE`}),e.columns&&Array.isArray(e.columns)&&e.columns.forEach((e,r)=>{e.name||n.push({path:`${t}.columns[${r}]`,message:`Column requires name property`,type:`error`,code:`MISSING_COLUMN_NAME`})}),e.fields&&Array.isArray(e.fields)&&e.fields.forEach((e,r)=>{e.name||n.push({path:`${t}.fields[${r}]`,message:`Field requires name property`,type:`error`,code:`MISSING_FIELD_NAME`})})),n}function f(e,t=`schema`){let n=[];return e.type===`form`&&e.fields&&Array.isArray(e.fields)&&e.fields.forEach((r,i)=>{r.name||n.push({path:`${t}.fields[${i}]`,message:`Form field requires name property`,type:`error`,code:`MISSING_FIELD_NAME`}),e.fields.filter(e=>e.name===r.name).length>1&&n.push({path:`${t}.fields[${i}]`,message:`Duplicate field name: ${r.name}`,type:`warning`,code:`DUPLICATE_FIELD_NAME`})}),n}function p(e,t=`schema`){let n=[],r=e.children||e.body;if(r){if(Array.isArray(r))r.forEach((e,r)=>{if(typeof e==`object`&&e){let i=m(e,`${t}.children[${r}]`);n.push(...i.errors,...i.warnings)}});else if(typeof r==`object`&&r){let e=m(r,`${t}.children`);n.push(...e.errors,...e.warnings)}}return n}function m(e,t=`schema`){let n=[];n.push(...u(e,t)),n.push(...d(e,t)),n.push(...f(e,t)),n.push(...p(e,t));let r=n.filter(e=>e.type===`error`),i=n.filter(e=>e.type===`warning`);return{valid:r.length===0,errors:r,warnings:i}}function h(e){return{$eq:`=`,$ne:`!=`,$gt:`>`,$gte:`>=`,$lt:`<`,$lte:`<=`,$in:`in`,$nin:`nin`,$notin:`nin`,$between:`between`,$contains:`contains`,$notContains:`notcontains`,$notcontains:`notcontains`,$startsWith:`startswith`,$startswith:`startswith`,$endsWith:`endswith`,$endswith:`endswith`}[e]||null}function g(e){let t=[];for(let[n,r]of Object.entries(e))if(r!=null)if(typeof r==`object`&&!Array.isArray(r))for(let[e,i]of Object.entries(r)){if(e===`$regex`){console.warn(`[ObjectUI] Warning: \$regex operator is not fully supported. Converting to 'contains' which only supports substring matching, not regex patterns. Field: '${n}', Value: ${JSON.stringify(i)}. Consider using $contains or $startsWith instead.`),t.push([n,`contains`,i]);continue}if(e===`$null`){t.push([n,i?`is_null`:`is_not_null`,!0]);continue}if(e===`$exists`){t.push([n,i?`is_not_null`:`is_null`,!0]);continue}let r=h(e);if(r)t.push([n,r,i]);else throw Error(`[ObjectUI] Unknown filter operator '${e}' for field '${n}'. Supported operators: $eq, $ne, $gt, $gte, $lt, $lte, $in, $nin, $between, $contains, $notContains, $startsWith, $endsWith, $null, $exists. If you need exact object matching, use the value directly without an operator.`)}else t.push([n,`=`,r]);return t.length===0?e:t.length===1?t[0]:[`and`,...t]}var _={platform:{create:!0,import:!0,edit:!0,delete:!0,exportCsv:!0},config:{create:!0,import:!1,edit:!0,delete:!0,exportCsv:!0},system:{create:!1,import:!1,edit:!1,delete:!1,exportCsv:!0},"engine-owned":{create:!1,import:!1,edit:!1,delete:!1,exportCsv:!0},"append-only":{create:!1,import:!1,edit:!1,delete:!1,exportCsv:!0},"better-auth":{create:!1,import:!1,edit:!1,delete:!1,exportCsv:!0}};function v(e,t){if(e==null)return{enabled:t};if(typeof e==`boolean`)return{enabled:e};let n=e.enabled??t;if(e.visibleWhen==null&&e.disabledWhen==null)return{enabled:n};let r={};return e.visibleWhen!=null&&(r.visibleWhen=e.visibleWhen),e.disabledWhen!=null&&(r.disabledWhen=e.disabledWhen),{enabled:n,predicates:r}}function y(e){return v(e,!1).predicates}function ee(e){let t=_[e?.managedBy??`platform`]??_.platform,n=e?.userActions??{},r=v(n.edit,t.edit),i=v(n.delete,t.delete),a={create:n.create??t.create,import:n.import??t.import,edit:r.enabled,delete:i.enabled,exportCsv:n.exportCsv??t.exportCsv};return r.predicates&&(a.editPredicates=r.predicates),i.predicates&&(a.deletePredicates=i.predicates),a}function te(e){return e===!0||typeof e==`object`&&!!e&&e.enabled===!0}function ne(e){if(e?.managedBy!==`system`)return!1;let t=e?.userActions??{};return t.create===!0||te(t.edit)||te(t.delete)}function re(e){return ee(e).edit}function ie(e){if(Array.isArray(e))return e;if(e&&typeof e==`object`){if(Array.isArray(e.records))return e.records;if(Array.isArray(e.data))return e.data;if(Array.isArray(e.value))return e.value}return[]}var ae=new Set([`lookup`,`master_detail`,`tree`,`user`]);function oe(e){return!!e&&typeof e==`object`&&ae.has(e.type)}function se(e,t){if(!e||typeof e!=`object`)return[];let n=[];for(let[t,r]of Object.entries(e))oe(r)&&n.push(t);if(n.length===0)return[];if(t&&Array.isArray(t)&&t.length>0){let e=new Set;for(let n of t)if(typeof n==`string`)e.add(n);else if(n&&typeof n==`object`){let t=n.field??n.name??n.fieldName;t&&e.add(t)}return n.filter(t=>e.has(t))}return n}var b=class e{scopes=[];constructor(e={}){this.scopes.push(new Map(Object.entries(e)))}pushScope(e){this.scopes.push(new Map(Object.entries(e)))}popScope(){this.scopes.length>1&&this.scopes.pop()}get(e){let t=e.split(`.`),n=t[0];for(let e=this.scopes.length-1;e>=0;e--)if(this.scopes[e].has(n)){let r=this.scopes[e].get(n);for(let e=1;e<t.length;e++)if(r&&typeof r==`object`)r=r[t[e]];else return;return r}}set(e,t){this.scopes.length>0&&this.scopes[this.scopes.length-1].set(e,t)}has(e){let t=e.split(`.`)[0];for(let e=this.scopes.length-1;e>=0;e--)if(this.scopes[e].has(t))return!0;return!1}toObject(){let e={};for(let t of this.scopes)for(let[n,r]of t.entries())e[n]=r;return e}createChild(t={}){let n=new e;return n.scopes=[...this.scopes,new Map(Object.entries(t))],n}},x={Math,JSON,parseInt,parseFloat,isNaN,isFinite},ce=new Set([`constructor`,`__proto__`,`prototype`,`__defineGetter__`,`__defineSetter__`,`__lookupGetter__`,`__lookupSetter__`]),S=class e{source=``;pos=0;context={};_evaluating=!0;evaluate(e,t){this.source=e.trim(),this.pos=0,this.context={...x,...t};let n=this.parseTernary();if(this.skipWhitespace(),this.pos<this.source.length)throw SyntaxError(`Unexpected token "${this.source[this.pos]}" at position ${this.pos} in expression "${e}"`);return n}skipWhitespace(){for(;this.pos<this.source.length&&/\s/.test(this.source[this.pos]);)this.pos++}peek(e=0){return this.source[this.pos+e]??``}consume(){return this.source[this.pos++]??``}withEvaluation(e,t){let n=this._evaluating;this._evaluating=e;try{return t()}finally{this._evaluating=n}}assertSafeProp(e){if(typeof e==`string`&&ce.has(e))throw TypeError(`Access to property "${e}" is not permitted in expressions`)}parseTernary(){let e=this.parseNullish();if(this.skipWhitespace(),this.peek()===`?`&&this.peek(1)!==`?`){if(this.pos++,this.skipWhitespace(),!this._evaluating){if(this.parseTernary(),this.skipWhitespace(),this.peek()!==`:`)throw SyntaxError(`Expected ":" in ternary expression`);this.pos++,this.skipWhitespace(),this.parseTernary();return}if(e){let e=this.parseTernary();if(this.skipWhitespace(),this.peek()!==`:`)throw SyntaxError(`Expected ":" in ternary expression`);return this.pos++,this.skipWhitespace(),this.withEvaluation(!1,()=>this.parseTernary()),e}else{if(this.withEvaluation(!1,()=>this.parseTernary()),this.skipWhitespace(),this.peek()!==`:`)throw SyntaxError(`Expected ":" in ternary expression`);return this.pos++,this.skipWhitespace(),this.parseTernary()}}return e}parseNullish(){let e=this.parseOr();for(this.skipWhitespace();this.peek()===`?`&&this.peek(1)===`?`;){if(this.pos+=2,this.skipWhitespace(),this._evaluating&&e!=null)this.withEvaluation(!1,()=>this.parseOr());else{let t=this.parseOr();this._evaluating&&(e??=t)}this.skipWhitespace()}return e}parseOr(){let e=this.parseAnd();for(this.skipWhitespace();this.peek()===`|`&&this.peek(1)===`|`;){if(this.pos+=2,this.skipWhitespace(),this._evaluating&&e)this.withEvaluation(!1,()=>this.parseAnd());else{let t=this.parseAnd();this._evaluating&&(e||=t)}this.skipWhitespace()}return e}parseAnd(){let e=this.parseEquality();for(this.skipWhitespace();this.peek()===`&`&&this.peek(1)===`&`;){if(this.pos+=2,this.skipWhitespace(),this._evaluating&&!e)this.withEvaluation(!1,()=>this.parseEquality());else{let t=this.parseEquality();this._evaluating&&(e&&=t)}this.skipWhitespace()}return e}parseEquality(){let e=this.parseAddition();for(this.skipWhitespace();;){let t;if(this.peek()===`=`&&this.peek(1)===`=`&&this.peek(2)===`=`)t=`===`,this.pos+=3;else if(this.peek()===`!`&&this.peek(1)===`=`&&this.peek(2)===`=`)t=`!==`,this.pos+=3;else if(this.peek()===`=`&&this.peek(1)===`=`)t=`==`,this.pos+=2;else if(this.peek()===`!`&&this.peek(1)===`=`)t=`!=`,this.pos+=2;else if(this.peek()===`>`&&this.peek(1)===`=`)t=`>=`,this.pos+=2;else if(this.peek()===`<`&&this.peek(1)===`=`)t=`<=`,this.pos+=2;else if(this.peek()===`>`&&this.peek(1)!==`>`)t=`>`,this.pos++;else if(this.peek()===`<`&&this.peek(1)!==`<`)t=`<`,this.pos++;else break;this.skipWhitespace();let n=this.parseAddition();switch(t){case`===`:e=e===n;break;case`!==`:e=e!==n;break;case`==`:e=e==n;break;case`!=`:e=e!=n;break;case`>`:e=e>n;break;case`<`:e=e<n;break;case`>=`:e=e>=n;break;case`<=`:e=e<=n;break}this.skipWhitespace()}return e}parseAddition(){let e=this.parseMultiplication();for(this.skipWhitespace();(this.peek()===`+`||this.peek()===`-`)&&this.peek(1)!==`=`;){let t=this.consume();this.skipWhitespace();let n=this.parseMultiplication();e=t===`+`?e+n:e-n,this.skipWhitespace()}return e}parseMultiplication(){let e=this.parseUnary();for(this.skipWhitespace();(this.peek()===`*`||this.peek()===`/`||this.peek()===`%`)&&this.peek(1)!==`=`;){let t=this.consume();this.skipWhitespace();let n=this.parseUnary();t===`*`?e*=n:t===`/`?e/=n:e%=n,this.skipWhitespace()}return e}parseUnary(){if(this.skipWhitespace(),this.source.startsWith(`typeof`,this.pos)&&!/[\w$]/.test(this.source[this.pos+6]??``)){this.pos+=6,this.skipWhitespace();try{return typeof this.parseUnary()}catch{return`undefined`}}return this.peek()===`!`?(this.pos++,!this.parseUnary()):this.peek()===`-`?(this.pos++,-this.parseUnary()):this.peek()===`+`?(this.pos++,+this.parseUnary()):this.parseMember()}parseMember(){let e=this.parsePrimary();for(;;){this.skipWhitespace();let t=this.peek()===`?`&&this.peek(1)===`.`;if(this.peek()===`.`&&this.peek(1)!==`.`||t){t&&this.pos++,this.pos++,this.skipWhitespace();let n=this.parseIdentifierName();if(!n)break;if(this.assertSafeProp(n),this.skipWhitespace(),this.peek()===`(`){this.pos++;let t=this.parseArgList();if(this.peek()!==`)`)throw SyntaxError(`Expected ")" after argument list at position ${this.pos}`);if(this.pos++,!this._evaluating){e=void 0;continue}e=e!=null&&typeof e[n]==`function`?e[n](...t):void 0}else{if(!this._evaluating){e=void 0;continue}e=e?.[n]}continue}let n=this.peek()===`?`&&this.peek(1)===`[`;if(this.peek()===`[`||n){n&&this.pos++,this.pos++,this.skipWhitespace();let t=this.parseTernary();if(this.skipWhitespace(),this.peek()!==`]`)throw SyntaxError(`Expected "]" after bracket expression at position ${this.pos}`);if(this.pos++,this.assertSafeProp(t),!this._evaluating){e=void 0;continue}e=e?.[t];continue}if(this.peek()===`(`){this.pos++;let t=this.parseArgList();if(this.peek()!==`)`)throw SyntaxError(`Expected ")" after argument list at position ${this.pos}`);if(this.pos++,!this._evaluating){e=void 0;continue}if(typeof e==`function`)e=e(...t);else throw TypeError(`${String(e)} is not a function`);continue}break}return e}parsePrimary(){this.skipWhitespace();let e=this.peek();if(e===`(`){this.pos++;let e=this.parseTernary();if(this.skipWhitespace(),this.peek()!==`)`)throw SyntaxError(`Expected ")" to close "(" expression at position ${this.pos}`);return this.pos++,e}if(e===`[`)return this.parseArrayLiteral();if(e===`"`||e===`'`)return this.parseString(e);if(/\d/.test(e)||e===`.`&&/\d/.test(this.peek(1)))return this.parseNumber();if(/[a-zA-Z_$]/.test(e))return this.parseIdentifierOrKeyword();throw SyntaxError(`Unexpected character "${e}" at position ${this.pos}`)}parseArrayLiteral(){this.pos++;let e=[];for(this.skipWhitespace();this.peek()!==`]`&&this.pos<this.source.length;)e.push(this.parseTernary()),this.skipWhitespace(),this.peek()===`,`&&(this.pos++,this.skipWhitespace());if(this.peek()!==`]`)throw SyntaxError(`Expected "]" to close array literal at position ${this.pos}`);return this.pos++,e}parseString(e){this.pos++;let t=``;for(;this.pos<this.source.length;){let n=this.source[this.pos];if(n===`\\`){this.pos++;let e=this.source[this.pos++]??``;switch(e){case`n`:t+=`
|
|
2
|
-
`;break;case`t`:t+=` `;break;case`r`:t+=`\r`;break;case`\\`:t+=`\\`;break;case`"`:t+=`"`;break;case`'`:t+=`'`;break;case"`":t+="`";break;default:t+=e}}else if(n===e){this.pos++;break}else t+=n,this.pos++}return t}parseNumber(){let e=this.pos,t=!1;for(;this.pos<this.source.length&&/\d/.test(this.source[this.pos]);)t=!0,this.pos++;if(this.source[this.pos]===`.`)for(this.pos++;this.pos<this.source.length&&/\d/.test(this.source[this.pos]);)t=!0,this.pos++;if(/[eE]/.test(this.source[this.pos]??``)){this.pos++,/[+-]/.test(this.source[this.pos]??``)&&this.pos++;let t=0;for(;this.pos<this.source.length&&/\d/.test(this.source[this.pos]);)t++,this.pos++;if(t===0)throw SyntaxError(`Invalid numeric literal exponent at position ${e}`)}if(!t)throw SyntaxError(`Invalid numeric literal at position ${e}`);let n=this.source.slice(e,this.pos),r=Number(n);if(!Number.isFinite(r))throw SyntaxError(`Invalid numeric literal "${n}" at position ${e}`);return r}parseIdentifierName(){let e=this.pos;for(;this.pos<this.source.length&&/[\w$]/.test(this.source[this.pos]);)this.pos++;return this.source.slice(e,this.pos)}parseIdentifierOrKeyword(){let e=this.parseIdentifierName();switch(e){case`true`:return!0;case`false`:return!1;case`null`:return null;case`undefined`:return;case`NaN`:return NaN;case`Infinity`:return 1/0}if(e===`new`)return this.parseNewExpression();if(this.skipWhitespace(),this.peek()===`=`&&this.peek(1)===`>`)return this.parseArrowFunction(e);if(this.peek()===`(`){this.pos++;let t=this.parseArgList();if(this.peek()!==`)`)throw SyntaxError(`Expected ")" after argument list at position ${this.pos}`);if(this.pos++,!this._evaluating)return;let n=this.context[e];if(typeof n==`function`)return n(...t);throw TypeError(`"${e}" is not a function`)}if(this._evaluating){if(!(e in this.context))throw ReferenceError(`${e} is not defined`);return this.context[e]}}parseNewExpression(){this.skipWhitespace();let e=this.parseIdentifierName();this.skipWhitespace();let t=[];if(this.peek()===`(`){if(this.pos++,t=this.parseArgList(),this.peek()!==`)`)throw SyntaxError(`Expected ")" after new ${e}() at position ${this.pos}`);this.pos++}if(this._evaluating)switch(e){case`Date`:return new Date(...t);case`RegExp`:return new RegExp(t[0],t[1]);default:throw TypeError(`new ${e}() is not supported in expressions`)}}parseArrowFunction(t){this.pos+=2,this.skipWhitespace();let n=this.pos,r=this.scanExpressionEnd(),i=this.source.slice(n,r).trim();this.pos=r;let a=this.context;return n=>new e().evaluate(i,{...a,[t]:n})}scanExpressionEnd(){let e=this.pos,t=0,n=!1,r=``;for(;e<this.source.length;){let i=this.source[e];if(n){if(i===`\\`){e+=2;continue}i===r&&(n=!1),e++;continue}if(i===`"`||i===`'`){n=!0,r=i,e++;continue}if(i===`(`||i===`[`)t++;else if(i===`)`||i===`]`){if(t===0)break;t--}else if(i===`,`&&t===0)break;e++}return e}parseArgList(){let e=[];for(this.skipWhitespace();this.peek()!==`)`&&this.pos<this.source.length;)e.push(this.parseTernary()),this.skipWhitespace(),this.peek()===`,`&&(this.pos++,this.skipWhitespace());return e}},C=class{cache=new Map;maxSize;constructor(e=1e3){this.maxSize=e}compile(e,t){let n=`${e}::${t.join(`,`)}`;if(this.cache.has(n)){let e=this.cache.get(n);return e.hitCount++,e}this.cache.size>=this.maxSize&&this.evictLFU();let r={fn:this.compileExpression(e,t),varNames:[...t],expression:e,compiledAt:Date.now(),hitCount:1};return this.cache.set(n,r),r}compileExpression(e,t){let n=new S;return(...r)=>{let i={};for(let e=0;e<t.length;e++)i[t[e]]=r[e];return n.evaluate(e,i)}}evictLFU(){let e=null,t=1/0,n=1/0;for(let[r,i]of this.cache.entries())(i.hitCount<n||i.hitCount===n&&i.compiledAt<t)&&(e=r,t=i.compiledAt,n=i.hitCount);e&&this.cache.delete(e)}has(e,t){let n=`${e}::${t.join(`,`)}`;return this.cache.has(n)}clear(){this.cache.clear()}getStats(){let e=0,t=[];for(let n of this.cache.values())e+=n.hitCount,t.push({expression:n.expression,hitCount:n.hitCount});return{size:this.cache.size,maxSize:this.maxSize,totalHits:e,entries:t.sort((e,t)=>t.hitCount-e.hitCount)}}},w=class{functions=new Map;constructor(){this.registerDefaults()}register(e,t){this.functions.set(e.toUpperCase(),t)}get(e){return this.functions.get(e.toUpperCase())}has(e){return this.functions.has(e.toUpperCase())}getNames(){return Array.from(this.functions.keys())}toObject(){let e={};for(let[t,n]of this.functions)e[t]=n;return e}registerDefaults(){this.registerAggregationFunctions(),this.registerDateFunctions(),this.registerLogicFunctions(),this.registerStringFunctions(),this.registerStringSearchFunctions(),this.registerStatisticalFunctions()}registerAggregationFunctions(){this.register(`SUM`,(...e)=>T(e).reduce((e,t)=>e+t,0)),this.register(`AVG`,(...e)=>{let t=T(e);return t.length===0?0:t.reduce((e,t)=>e+t,0)/t.length}),this.register(`COUNT`,(...e)=>E(e).filter(e=>e!=null).length),this.register(`MIN`,(...e)=>{let t=T(e);return t.length===0?0:Math.min(...t)}),this.register(`MAX`,(...e)=>{let t=T(e);return t.length===0?0:Math.max(...t)})}registerDateFunctions(){this.register(`TODAY`,()=>new Date().toISOString().split(`T`)[0]),this.register(`NOW`,()=>new Date().toISOString()),this.register(`DATEADD`,(e,t,n)=>{let r=new Date(e);if(isNaN(r.getTime()))throw Error(`DATEADD: Invalid date "${e}"`);switch(String(n).toLowerCase()){case`day`:case`days`:r.setDate(r.getDate()+t);break;case`month`:case`months`:r.setMonth(r.getMonth()+t);break;case`year`:case`years`:r.setFullYear(r.getFullYear()+t);break;case`hour`:case`hours`:r.setHours(r.getHours()+t);break;case`minute`:case`minutes`:r.setMinutes(r.getMinutes()+t);break;default:throw Error(`DATEADD: Unsupported unit "${n}"`)}return r.toISOString()}),this.register(`DATEDIFF`,(e,t,n)=>{let r=new Date(e),i=new Date(t);if(isNaN(r.getTime()))throw Error(`DATEDIFF: Invalid date "${e}"`);if(isNaN(i.getTime()))throw Error(`DATEDIFF: Invalid date "${t}"`);let a=i.getTime()-r.getTime();switch(String(n).toLowerCase()){case`day`:case`days`:return Math.floor(a/(1e3*60*60*24));case`month`:case`months`:return(i.getFullYear()-r.getFullYear())*12+(i.getMonth()-r.getMonth());case`year`:case`years`:return i.getFullYear()-r.getFullYear();case`hour`:case`hours`:return Math.floor(a/(1e3*60*60));case`minute`:case`minutes`:return Math.floor(a/(1e3*60));default:throw Error(`DATEDIFF: Unsupported unit "${n}"`)}}),this.register(`DATEFORMAT`,(e,t)=>{let n=new Date(e);if(isNaN(n.getTime()))throw Error(`DATEFORMAT: Invalid date "${e}"`);let r=(e,t=2)=>String(e).padStart(t,`0`);return t.replace(`YYYY`,String(n.getFullYear())).replace(`YY`,String(n.getFullYear()).slice(-2)).replace(`MM`,r(n.getMonth()+1)).replace(`DD`,r(n.getDate())).replace(`HH`,r(n.getHours())).replace(`mm`,r(n.getMinutes())).replace(`ss`,r(n.getSeconds()))})}registerLogicFunctions(){this.register(`IF`,(e,t,n)=>e?t:n),this.register(`AND`,(...e)=>e.every(Boolean)),this.register(`OR`,(...e)=>e.some(Boolean)),this.register(`NOT`,e=>!e),this.register(`SWITCH`,(e,...t)=>{for(let n=0;n<t.length-1;n+=2)if(e===t[n])return t[n+1];if(t.length%2==1)return t[t.length-1]})}registerStringFunctions(){this.register(`CONCAT`,(...e)=>e.map(e=>String(e??``)).join(``)),this.register(`LEFT`,(e,t)=>String(e??``).substring(0,t)),this.register(`RIGHT`,(e,t)=>{let n=String(e??``);return n.substring(Math.max(0,n.length-t))}),this.register(`TRIM`,e=>String(e??``).trim()),this.register(`UPPER`,e=>String(e??``).toUpperCase()),this.register(`LOWER`,e=>String(e??``).toLowerCase())}registerStringSearchFunctions(){this.register(`FIND`,(e,t,n)=>String(t??``).indexOf(String(e??``),n??0)),this.register(`REPLACE`,(e,t,n)=>String(e??``).split(String(t??``)).join(String(n??``))),this.register(`SUBSTRING`,(e,t,n)=>{let r=String(e??``);return n===void 0?r.substring(t):r.substring(t,t+n)}),this.register(`REGEX`,(e,t,n)=>{let r=String(e??``);return new RegExp(t,n).test(r)}),this.register(`LEN`,e=>String(e??``).length)}registerStatisticalFunctions(){this.register(`MEDIAN`,(...e)=>{let t=T(e).sort((e,t)=>e-t);if(t.length===0)return 0;let n=Math.floor(t.length/2);return t.length%2==0?(t[n-1]+t[n])/2:t[n]}),this.register(`STDEV`,(...e)=>{let t=T(e);if(t.length<2)return 0;let n=t.reduce((e,t)=>e+t,0)/t.length,r=t.map(e=>(e-n)**2).reduce((e,t)=>e+t,0)/(t.length-1);return Math.sqrt(r)}),this.register(`VARIANCE`,(...e)=>{let t=T(e);if(t.length<2)return 0;let n=t.reduce((e,t)=>e+t,0)/t.length;return t.map(e=>(e-n)**2).reduce((e,t)=>e+t,0)/(t.length-1)}),this.register(`PERCENTILE`,(e,...t)=>{let n=T(t).sort((e,t)=>e-t);if(n.length===0)return 0;let r=Math.max(0,Math.min(100,e))/100*(n.length-1),i=Math.floor(r),a=Math.ceil(r);if(i===a)return n[i];let o=r-i;return n[i]+o*(n[a]-n[i])})}};function T(e){let t=[];for(let n of e)if(Array.isArray(n))t.push(...T(n));else{let e=Number(n);isNaN(e)||t.push(e)}return t}function E(e){let t=[];for(let n of e)Array.isArray(n)?t.push(...E(n)):t.push(n);return t}function le(e){return typeof e==`string`?{dialect:`cel`,source:e}:{dialect:e.dialect??`cel`,source:e.source}}function D(e,t,n,r,i){if(e==null||typeof e==`string`&&!e.trim())return n;try{let o=a.evaluate(le(e),{record:t,previous:r,...i?{extra:i}:{}});return o.ok?o.value===!0:n}catch{return n}}function O(e,t,n,r,i){let a=e.visibleWhen==null||D(e.visibleWhen,t,!0,r,i),o=n.readonly===!0||e.readonlyWhen!=null&&D(e.readonlyWhen,t,!1,r,i),s=e.requiredWhen??e.conditionalRequired;return{visible:a,readonly:o,required:n.required===!0||s!=null&&D(s,t,!1,r,i)}}var k=class e{context;cache;formulas;constructor(e,t,n){e instanceof b?this.context=e:this.context=new b(e||{}),this.cache=t||new C,this.formulas=n||new w}evaluate(e,t={}){if(e&&typeof e==`object`&&typeof e.source==`string`&&(e=e.source),typeof e!=`string`)return e;let{defaultValue:n,throwOnError:r=!1,sanitize:i=!0}=t;try{if(!e.includes("${"))return e;let t=e.match(/^\$\{([^}]+)\}$/);return t?this.evaluateExpression(t[1].trim(),{sanitize:i}):e.replace(/\$\{([^}]+)\}/g,(e,t)=>{try{let e=this.evaluateExpression(t.trim(),{sanitize:i});return String(e??``)}catch(n){if(r)throw n;return console.warn(`Expression evaluation failed for: ${t}`,n),e}})}catch(t){if(r)throw t;return console.warn(`Failed to evaluate expression: ${e}`,t),n??e}}evaluateExpression(e,t={}){let{sanitize:n=!0}=t;if(!(!e||e.trim()===``)){if(n&&this.isDangerous(e))throw Error(`Potentially dangerous expression detected: ${e}`);try{let t=this.context.toObject(),n={...this.formulas.toObject(),...t},r=Object.keys(n),i=Object.values(n);return this.cache.compile(e,r).fn(...i)}catch(t){throw Error(`Failed to evaluate expression "${e}": ${t.message}`)}}}isDangerous(e){return[/eval\s*\(/i,/Function\s*\(/i,/setTimeout\s*\(/i,/setInterval\s*\(/i,/import\s*\(/i,/require\s*\(/i,/process\./i,/global\./i,/window\./i,/document\./i,/__proto__/i,/constructor\s*\(/i,/prototype\./i].some(t=>t.test(e))}evaluateCondition(e,t={}){if(typeof e==`boolean`)return e;if(e&&typeof e==`object`&&e.dialect===`cel`&&typeof e.source==`string`)return this.evaluateCelCondition(e.source,t);if(e&&typeof e==`object`&&typeof e.source==`string`&&(e=e.source),!e)return!0;if(typeof e!=`string`)return!!e;let n=e.trim();if(!n)return!0;if(n.includes("${"))return!!this.evaluate(n,t);try{return!!this.evaluateExpression(n,{sanitize:t.sanitize!==!1})}catch(e){if(t.throwOnError)throw e;return!0}}evaluateCelCondition(e,t){if(!e.trim())return!0;let n=this.context.toObject(),r=n.record,i=r&&typeof r==`object`&&!Array.isArray(r)?r:n;if(!t.throwOnError)return D(e,i,!0,void 0,n);let a=D(e,i,!0,void 0,n);if(a!==D(e,i,!1,void 0,n))throw Error(`CEL predicate failed to evaluate: ${e}`);return a}updateContext(e){Object.entries(e).forEach(([e,t])=>{this.context.set(e,t)})}getContext(){return this.context}withContext(t){return new e(this.context.createChild(t),this.cache,this.formulas)}getCacheStats(){return this.cache.getStats()}clearCache(){this.cache.clear()}getFormulas(){return this.formulas}registerFunction(e,t){this.formulas.register(e,t)}};new C,new w;var ue=/\$\{|===|!==|\?\.|\?\?|\.(?:includes|indexOf|toUpperCase|toLowerCase|startsWith|endsWith|trim|split|map|filter|reduce|find|some|every|join|slice|charAt|padStart|padEnd|replace|match|test)\s*\(/;function de(e){return ue.test(e)}var fe=new Set;function pe(e){fe.has(e)||(fe.add(e),console.warn(`[object-ui] A list conditional predicate uses the legacy expression dialect and is not portable to the server CEL engine: `+JSON.stringify(e)+`. Rewrite it as CEL (use "==" not "===", "x in [..]" for membership, ".contains()" not ".includes()", and drop template interpolation).`))}var me=new Set;function he(e,t){let n=(t??``)+`\0`+e;me.has(n)||(me.add(n),console.warn(`[object-ui] A list conditional predicate failed to evaluate`+(t?` (${t})`:``)+` and was treated as its safe default: `+JSON.stringify(e)+`. Check the field names and CEL syntax.`))}function ge(e,t,n){let r=D(e,t,!0,void 0,n);return r===D(e,t,!1,void 0,n)?{ok:!0,value:r}:{ok:!1,value:!1}}function _e(e,t,n={}){let r=n.fallback??!1;if(e==null)return r;let i=typeof e==`string`?e:void 0;if(i!==void 0&&!i.trim())return r;let a=t&&typeof t==`object`?t:{},o={...n.scope??{},...a,data:a};if(i!==void 0&&de(i)){pe(i);try{return new k({...o,record:a}).evaluateCondition(i,{throwOnError:!0})}catch{return n.warnOnError&&he(i,n.label),r}}if(!n.warnOnError)return D(e,a,r,void 0,o);let s=ge(e,a,o);return s.ok?s.value:(he(i??`(expression)`,n.label),r)}function A(e){if(e==null)return`null`;let t=typeof e;return t===`string`?JSON.stringify(e):t===`number`||t===`boolean`?String(e):Array.isArray(e)?`[${e.map(A).join(`, `)}]`:JSON.stringify(String(e))}function ve(e){let{field:t,operator:n,value:r}=e;if(!t||!n)return null;let i=`record[${JSON.stringify(t)}]`;switch(n){case`equals`:return`${i} == ${A(r)}`;case`not_equals`:return`${i} != ${A(r)}`;case`greater_than`:return`${i} > ${A(r)}`;case`less_than`:return`${i} < ${A(r)}`;case`contains`:return`${i}.contains(${A(r)})`;case`in`:return`${i} in ${A(Array.isArray(r)?r:[r])}`;default:return null}}function ye(e){return e.condition==null?typeof e.expression==`string`&&e.expression.trim()?e.expression:ve(e):e.condition}function be(e){let t={};if(e.style&&typeof e.style==`object`)for(let[n,r]of Object.entries(e.style))r!=null&&(t[n]=String(r));return e.backgroundColor&&(t.backgroundColor=String(e.backgroundColor)),e.textColor&&(t.color=String(e.textColor)),e.borderColor&&(t.borderColor=String(e.borderColor)),t}function xe(e,t,n){if(!t||t.length===0)return{};let r=e&&typeof e==`object`?e:{};for(let e=0;e<t.length;e++){let i=t[e];if(!i||typeof i!=`object`)continue;let a=ye(i);if(a!=null&&_e(a,r,{fallback:!1,scope:n,label:`conditionalFormatting[${e}]`}))return be(i)}return{}}function Se(e){return e?(Array.isArray(e)?e:[e]).map(e=>typeof e==`string`?e:e&&typeof e==`object`?e.field:null).filter(e=>typeof e==`string`&&e.length>0):[]}function Ce(e){return e==null||e===``||Array.isArray(e)&&e.length===0}function we(e,t){return Se(e).some(e=>Ce(t[e]))}function Te(e,t,n){return!e||e.length===0?[]:e.filter(e=>e?.visibleWhen==null||D(e.visibleWhen,t,!0,void 0,n))}function Ee(e,t){return Ce(e)?!0:Array.isArray(e)?e.every(e=>t.some(t=>t.value===e)):t.some(t=>t.value===e)}function De(e,t,n,r){let i=Se(n),a=i.length>0&&we(n,t);return{options:a?[]:Te(e,t,r),gated:a,dependsOnFields:i}}function Oe(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.id==`string`&&typeof t.type==`string`&&typeof t.objectName==`string`&&typeof t.recordId==`string`&&typeof t.timestamp==`number`}var j=new class e{undoStack=[];redoStack=[];maxHistory;listeners=new Set;constructor(e){this.maxHistory=e?.maxHistory??50}push(e){this.undoStack.push(e),this.undoStack.length>this.maxHistory&&this.undoStack.shift(),this.redoStack=[],this.notify()}peekUndo(){return this.undoStack[this.undoStack.length-1]}peekRedo(){return this.redoStack[this.redoStack.length-1]}popUndo(){let e=this.undoStack.pop();return e&&(this.redoStack.push(e),this.notify()),e}popRedo(){let e=this.redoStack.pop();return e&&(this.undoStack.push(e),this.notify()),e}clear(){this.undoStack=[],this.redoStack=[],this.notify()}get canUndo(){return this.undoStack.length>0}get canRedo(){return this.redoStack.length>0}get undoCount(){return this.undoStack.length}get redoCount(){return this.redoStack.length}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}getHistory(){return[...this.undoStack]}getRedoHistory(){return[...this.redoStack]}pushBatch(e){e.length!==0&&(this.undoStack.push(...e),this.undoStack.length>this.maxHistory&&this.undoStack.splice(0,this.undoStack.length-this.maxHistory),this.redoStack=[],this.notify())}popUndoBatch(e){let t=Math.min(e,this.undoStack.length);if(t===0)return[];let n=this.undoStack.splice(this.undoStack.length-t,t);return this.redoStack.push(...n),this.notify(),n}popRedoBatch(e){let t=Math.min(e,this.redoStack.length);if(t===0)return[];let n=this.redoStack.splice(this.redoStack.length-t,t);return this.undoStack.push(...n),this.notify(),n}static STORAGE_KEY=`objectui:undo-history`;saveToStorage(){try{let t=JSON.stringify({undoStack:this.undoStack,redoStack:this.redoStack});localStorage.setItem(e.STORAGE_KEY,t)}catch{}}loadFromStorage(){try{if(typeof localStorage>`u`)return;let t=localStorage.getItem(e.STORAGE_KEY);if(!t)return;let n=JSON.parse(t);Array.isArray(n.undoStack)&&(this.undoStack=n.undoStack.filter(Oe)),Array.isArray(n.redoStack)&&(this.redoStack=n.redoStack.filter(Oe)),this.undoStack.length>this.maxHistory&&this.undoStack.splice(0,this.undoStack.length-this.maxHistory),this.notify()}catch{}}notify(){this.listeners.forEach(e=>e())}};function ke(e){let t=e.user;if(t===void 0)return e;let n=e.os;return n&&typeof n==`object`&&n.user===t?e:{...e,os:{...n&&typeof n==`object`?n:{},user:t}}}var M=class{handlers=new Map;scripts=new Map;evaluator;context;confirmHandler;toastHandler;modalHandler;navigationHandler;paramCollectionHandler;resultDialogHandler;constructor(e={}){this.context=ke(e),this.evaluator=new k(this.context),this.confirmHandler=async e=>window.confirm(e),this.toastHandler=null,this.modalHandler=null,this.navigationHandler=null,this.paramCollectionHandler=null,this.resultDialogHandler=null}setConfirmHandler(e){this.confirmHandler=e}setToastHandler(e){this.toastHandler=e}setModalHandler(e){this.modalHandler=e}setNavigationHandler(e){this.navigationHandler=e}setParamCollectionHandler(e){this.paramCollectionHandler=e}setResultDialogHandler(e){this.resultDialogHandler=e}registerHandler(e,t){this.handlers.set(e,t)}unregisterHandler(e){this.handlers.delete(e)}registerScript(e,t){this.scripts.set(e,t)}unregisterScript(e){this.scripts.delete(e)}async execute(e){try{let t=e.type||e.actionType||e.name||``;if(e.condition&&!this.evaluator.evaluateCondition(e.condition))return{success:!1,error:`Action condition not met`};if(e.disabled!=null&&e.disabled!==!1){let t=!1;try{t=this.evaluator.evaluateCondition(e.disabled)}catch{t=!1}if(t)return{success:!1,error:`Action is disabled`}}let n=e.confirm?.message||e.confirmText;if(n&&!await this.confirmHandler(this.evaluator.evaluate(n),e.confirm?{title:e.confirm.title,confirmText:e.confirm.confirmText,cancelText:e.confirm.cancelText}:void 0))return{success:!1,error:`Action cancelled by user`};let r=e.actionParams&&Array.isArray(e.actionParams)?e.actionParams:Array.isArray(e.params)?e.params:void 0;if(r&&r.length>0&&this.paramCollectionHandler){let t=await this.paramCollectionHandler(r,e);if(t===null)return{success:!1,error:`Action cancelled by user (params)`};let n=Array.isArray(e.params)?{}:e.params||{},i=n._rowRecord;e.params={...n,...t},i!==void 0&&(e.params._rowRecord=i)}if(t&&this.handlers.has(t)){let n=await this.handlers.get(t)(e,this.context);return await this.handlePostExecution(e,n),n}let i;switch(t){case`script`:i=await this.executeScript(e);break;case`url`:i=await this.executeUrl(e);break;case`modal`:i=await this.executeModal(e);break;case`flow`:i=await this.executeFlow(e);break;case`api`:i=await this.executeAPI(e);break;case`form`:i=await this.executeForm(e);break;case`navigation`:i=await this.executeNavigation(e);break;default:e.navigate?i=await this.executeNavigation(e):e.api||e.endpoint?i=await this.executeAPI(e):e.onClick?(await e.onClick(),i={success:!0}):i=await this.executeActionSchema(e)}return await this.handlePostExecution(e,i),i}catch(t){let n={success:!1,error:t.message};return await this.handlePostExecution(e,n),n}}async executeChain(e,t=`sequential`){if(e.length===0)return{success:!0};if(t===`parallel`){let t=await Promise.allSettled(e.map(e=>this.execute(e)));if(t.filter(e=>e.status===`rejected`||e.status===`fulfilled`&&!e.value.success).length>0)return{success:!1,error:t.find(e=>e.status===`fulfilled`&&!e.value.success)?.value?.error||`One or more parallel actions failed`};let n=t[t.length-1];return n.status===`fulfilled`?n.value:{success:!1,error:`Action failed`}}let n={success:!0};for(let t of e)if(n=await this.execute(t),!n.success)return n;return n}async handlePostExecution(e,t){let n=!!(e.resultDialog&&t.success);if(this.toastHandler){let r=e.toast??{showOnSuccess:!0,showOnError:!0},i=e.toast?.duration;if(t.success&&!n&&!t.silent&&r.showOnSuccess!==!1){let n=(t.data&&typeof t.data==`object`&&typeof t.data.message==`string`?String(t.data.message).trim():``)||e.successMessage||`Action completed successfully`;if(t.undo)try{j.push(t.undo)}catch{}this.toastHandler(n,{type:`success`,duration:i,undo:t.undo?{}:void 0})}if(!t.success&&r.showOnError!==!1&&t.error){let n=e.errorMessage||t.error,r=typeof n==`string`?n:n&&typeof n.message==`string`?n.message:`Action failed`;this.toastHandler(r,{type:`error`,duration:i})}}if(n)if(this.resultDialogHandler)try{await this.resultDialogHandler(e.resultDialog,t.data,e)}catch(e){console.warn(`[ActionRunner] resultDialog handler rejected; treating as acknowledged`,e)}else console.warn(`[ActionRunner] action.resultDialog set but no resultDialogHandler registered — the response value will not be shown to the user.`,{action:e.name,data:t.data});if(e.refreshAfter&&t.success&&(t.reload=!0),e.chain&&e.chain.length>0&&t.success){let n=await this.executeChain(e.chain,e.chainMode||`sequential`);n.success||(t.success=!1,t.error=n.error),n.data&&(t.data=n.data),n.redirect&&(t.redirect=n.redirect),n.reload&&(t.reload=!0)}if(t.success&&e.onSuccess){let t=Array.isArray(e.onSuccess)?e.onSuccess:[e.onSuccess];await this.executeChain(t,`sequential`)}if(!t.success&&e.onFailure){let t=Array.isArray(e.onFailure)?e.onFailure:[e.onFailure];await this.executeChain(t,`sequential`)}}async executeScript(e){let t=e.execute||e.target;if(!t)return{success:!1,error:`No script provided for script action`};let n=this.scripts.get(t);if(n)try{return await n(e,this.context)}catch(e){return{success:!1,error:`Script execution failed: ${e.message}`}}try{let e=this.evaluator.evaluate(`\${${t}}`);return e!=null&&typeof e.then==`function`&&(e=await e),{success:!0,data:e}}catch(e){return{success:!1,error:`Script execution failed: ${e.message}`}}}async executeUrl(e){let t=e.target||e.redirect;if(!t)return{success:!1,error:`No URL provided for url action`};let n=this.interpolateTarget(t,e),r=this.evaluator.evaluate(n);if(!this.isValidUrl(r))return{success:!1,error:`Invalid URL scheme. Only http://, https://, and relative URLs are allowed.`};let i=typeof this.context.apiBase==`string`?this.context.apiBase.replace(/\/+$/,``):``;i&&/^\/(api|_auth|_account)\//.test(r)&&(r=`${i}${r}`);let a=r.startsWith(`http://`)||r.startsWith(`https://`);if(/\/(api|_auth|_account)\//.test(r)&&(a||r.startsWith(`/`)))return window.location.href=r,{success:!0};let o=e.openIn===`new-tab`?!0:e.openIn===`self`?!1:e.params?.newTab??a;if(this.navigationHandler)return this.navigationHandler(r,{external:a,newTab:o}),{success:!0};if(o)window.open(r,`_blank`,`noopener,noreferrer`);else return{success:!0,redirect:r};return{success:!0}}async executeModal(e){let t=e.modal||e.target||e.params?.schema;return t?this.modalHandler?await this.modalHandler(t,this.context):{success:!0,modal:t}:{success:!1,error:`No modal schema or target provided for modal action`}}async executeFlow(e){let t=e.target||e.name;return t?this.handlers.has(`flow`)?await this.handlers.get(`flow`)(e,this.context):{success:!1,error:`Flow handler not registered. Cannot execute flow: ${t}`}:{success:!1,error:`No flow target provided for flow action`}}async executeActionSchema(e){let t={success:!0};if(e.api||e.endpoint){let n=await this.executeAPI(e);if(!n.success)return n;t.data=n.data}return e.onClick&&await e.onClick(),t.reload=e.reload!==!1,t.close=e.close!==!1,e.redirect&&(t.redirect=this.evaluator.evaluate(e.redirect)),t}async executeForm(e){let t=this.evaluator.evaluate(e.target);if(!t||typeof t!=`string`)return{success:!1,error:`No form target (FormView name) provided for form action`};let n=(this.context.record&&this.context.record.id)??(this.context.data&&this.context.data.id),r=`/forms/${t}`,i=n==null?r:`${r}?recordId=${encodeURIComponent(String(n))}`;return this.navigationHandler?(this.navigationHandler(i,{external:!1}),{success:!0}):{success:!0,redirect:i}}async executeNavigation(e){let t=e.navigate||e,n=this.evaluator.evaluate(t.to||t.target);if(!this.isValidUrl(n))return{success:!1,error:`Invalid URL scheme. Only http://, https://, and relative URLs are allowed.`};let r=t.external||typeof n==`string`&&(n.startsWith(`http://`)||n.startsWith(`https://`));if(this.navigationHandler)return this.navigationHandler(n,{external:r,newTab:t.newTab??r,replace:t.replace}),{success:!0};if(r)window.open(n,`_blank`,`noopener,noreferrer`);else return{success:!0,redirect:n};return{success:!0}}async executeAPI(e){let t=e.api||e.endpoint||e.target;if(!t)return{success:!1,error:`No API endpoint provided`};try{let n,r,i={"Content-Type":`application/json`},a,o=`json`;if(typeof t==`string`)n=this.interpolateTarget(t,e),r=e.method||`POST`,a=JSON.stringify(e.params||this.context.data||{});else{let s=t;if(n=this.interpolateTarget(s.url,e),r=s.method||e.method||`POST`,i={...i,...s.headers},o=s.responseType||`json`,s.queryParams){let e=new URLSearchParams(s.queryParams);n=`${n}${n.includes(`?`)?`&`:`?`}${e.toString()}`}s.body?a=typeof s.body==`string`?s.body:JSON.stringify(s.body):r!==`GET`&&r!==`HEAD`&&(a=JSON.stringify(e.params||this.context.data||{}))}let s={method:r,headers:i};a&&r!==`GET`&&r!==`HEAD`&&(s.body=a);let c=await fetch(n,s);if(!c.ok)throw Error(`HTTP ${c.status}: ${c.statusText}`);let l;switch(o){case`text`:l=await c.text();break;case`blob`:l=await c.blob();break;default:l=await c.json()}return{success:!0,data:l}}catch(e){return{success:!1,error:e.message}}}isValidUrl(e){return typeof e==`string`&&(e.startsWith(`http://`)||e.startsWith(`https://`)||e.startsWith(`/`)||e.startsWith(`./`))}interpolateTarget(e,t){if(typeof e!=`string`||e.indexOf("${")===-1)return e;let n=t.params&&typeof t.params==`object`&&!Array.isArray(t.params)?t.params:{},r=this.buildInterpolationContext();return e.replace(/\$\{(param|ctx)\.([\w.]+)\}/g,(e,t,i)=>{let a=Ae(t===`param`?n:r,i);return a==null?``:encodeURIComponent(String(a))})}buildInterpolationContext(){let e={origin:typeof window<`u`?window.location.origin:``,apiBase:typeof this.context.apiBase==`string`?this.context.apiBase.replace(/\/+$/,``):``,user:this.context.user??{},org:this.context.org??this.context.organization??{},recordId:this.context.record?.id??this.context.recordId};return this.context.ctx&&typeof this.context.ctx==`object`&&Object.assign(e,this.context.ctx),e}updateContext(e){this.context=ke({...this.context,...e}),this.evaluator.updateContext(this.context)}getContext(){return this.context}getEvaluator(){return this.evaluator}};function Ae(e,t){if(e!=null)return t.split(`.`).reduce((e,t)=>{if(e!=null)return e[t]},e)}function je(e){return/^[a-z][a-z0-9]*(_[a-z0-9]+)*$/.test(e)}function Me(e){return{type:`app`,name:e.name,title:e.title,label:e.title,description:e.description,icon:e.icon,logo:e.branding.logo,favicon:e.branding.favicon,branding:e.branding,layout:e.layout,navigation:e.navigation}}function Ne(e){if(!e)return null;let t=e.stageField;if(t===!1)return null;if(typeof t==`string`&&t)return t;let n=e.fields||{};for(let e of[`status`,`stage`,`state`,`phase`])if(e in n)return e;for(let[e,t]of Object.entries(n)){let n=(t?.type||``).toLowerCase();if(n===`status`||n===`stage`)return e}return null}var Pe=new Set(`id._id.__v._version._rev.created.created_at.createdAt.created_by.createdBy.modified.modified_by.updated_at.updatedAt.updated_by.updatedBy.deleted.deleted_at.deletedAt.is_deleted.instance_state.locked.owner_id.organization_id.tenant_id.company_id.space`.split(`.`));function Fe(e,t){return t?.system===!0||Pe.has(e)}function N(e,t){if(typeof e==`string`)return e;if(e&&typeof e==`object`){let t=e.default;if(typeof t==`string`)return t}return t}function Ie(e){let t=e.type??`tabular`,n=t===`joined`||t===`tabular`?`tabular`:t,r=(e.values??[]).map(e=>({name:e,label:N(void 0,e)})),i=(e.rows??[]).map(e=>({field:e,sort:`asc`}));return{type:`report`,title:N(e.label,e.name),description:e.description?N(e.description,``):void 0,reportType:n,fields:r,groupBy:i.length>0?i:void 0}}function Le(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.name!=`string`||t.type===`report`&&Array.isArray(t.fields)?!1:typeof t.dataset==`string`||Array.isArray(t.blocks)||typeof t.type==`string`&&[`tabular`,`summary`,`matrix`,`joined`].includes(t.type)}var Re=[`list_toolbar`,`list_item`,`record_header`,`record_more`,`record_related`,`record_section`,`global_nav`];o(Re);function ze(e){return e.toLowerCase().split(`+`).map(e=>e.trim()).sort().join(`+`)}var Be=new Set;function Ve(e,t,n){let r=typeof t==`string`?t:t&&typeof t==`object`&&typeof t.source==`string`?t.source:String(t),i=`${String(e)}::${r}`;if(Be.has(i))return;Be.add(i);let a=n instanceof Error?n.message:String(n);console.warn(`[ActionEngine] action "${String(e)}" hidden: its \`visible\` predicate threw — ${a}. Predicate: ${r}. Action predicates evaluate against { record, recordId, objectName, user, os.user, … }; use \`record.<field>\` (not a bare field).`)}var He=class{actions=new Map;mappings=[];shortcuts=[];normalizedShortcutMap=new Map;runner;constructor(e={}){this.runner=e instanceof M?e:new M(e)}getRunner(){return this.runner}registerAction(e,t){let n=e.name||e.type||``;if(!n)throw Error(`Action must have a name or type`);this.actions.set(n,{action:e,locations:t?.locations||[],shortcut:t?.shortcut,bulkEnabled:t?.bulkEnabled??!1,priority:t?.priority??100}),t?.shortcut&&(this.shortcuts.push({keys:t.shortcut,actionName:n}),this.normalizedShortcutMap.set(ze(t.shortcut),n))}registerActions(e){for(let t of e)this.registerAction(t,{locations:t.locations,shortcut:t.shortcut,bulkEnabled:t.bulkEnabled})}unregisterAction(e){let t=this.actions.get(e);t?.shortcut&&this.normalizedShortcutMap.delete(ze(t.shortcut)),this.actions.delete(e),this.shortcuts=this.shortcuts.filter(t=>t.actionName!==e),this.mappings=this.mappings.filter(t=>t.actionName!==e)}addMapping(e){this.mappings.push(e)}getActionsForLocation(e){let t=this.runner.getEvaluator();return Array.from(this.actions.values()).filter(t=>t.locations.includes(e)).filter(e=>{let t=e.action.requiredPermissions;if(!Array.isArray(t)||t.length===0)return!0;let n=this.runner.getContext()?.user?.systemPermissions;return!Array.isArray(n)||t.every(e=>n.includes(e))}).filter(e=>{let n=e.action.visible;if(n==null||n===``||n===!0)return!0;if(n===!1)return!1;let r;if(typeof n==`string`)r=`\${${n}}`;else if(typeof n==`object`&&typeof n.source==`string`){let e=n.source;if(!e)return!0;r=`\${${e}}`}else r=!!n;try{return t.evaluateCondition(r,{throwOnError:!0})}catch(t){return Ve(e.action.name,n,t),!1}}).sort((e,t)=>(e.priority??100)-(t.priority??100)).map(e=>e.action)}getBulkActions(){return Array.from(this.actions.values()).filter(e=>e.bulkEnabled).sort((e,t)=>(e.priority??100)-(t.priority??100)).map(e=>e.action)}getShortcuts(){return[...this.shortcuts]}getAction(e){return this.actions.get(e)?.action}async executeAction(e,t){let n=this.actions.get(e);return n?(t&&this.runner.updateContext(t),this.runner.execute(n.action)):{success:!1,error:`Action not found: ${e}`}}async dispatch(e,t){let n=this.mappings.filter(t=>t.event===e);if(n.length===0)return[];let r=[];for(let e of n){if(e.condition&&!this.runner.getEvaluator().evaluateCondition(e.condition))continue;let n=await this.executeAction(e.actionName,t);r.push(n)}return r}async handleShortcut(e,t){let n=this.normalizedShortcutMap.get(ze(e));return n?this.executeAction(n,t):null}async executeBulk(e,t,n){let r=this.actions.get(e);if(!r)return{total:0,succeeded:0,failed:0,results:[{success:!1,error:`Action not found: ${e}`}]};if(!r.bulkEnabled)return{total:0,succeeded:0,failed:0,results:[{success:!1,error:`Action ${e} does not support bulk operations`}]};let i=[],a=0,o=0;if(n?.parallel){let e=t.map(e=>(this.runner.updateContext({record:e,selectedRecords:t}),this.runner.execute(r.action))),n=await Promise.allSettled(e);for(let e of n)e.status===`fulfilled`?(i.push(e.value),e.value.success?a++:o++):(i.push({success:!1,error:e.reason?.message||`Unknown error`}),o++)}else for(let e of t){this.runner.updateContext({record:e,selectedRecords:t});let s=await this.runner.execute(r.action);if(i.push(s),s.success)a++;else if(o++,!n?.continueOnError)break}return{total:t.length,succeeded:a,failed:o,results:i}}updateContext(e){this.runner.updateContext(e)}clear(){this.actions.clear(),this.mappings=[],this.shortcuts=[],this.normalizedShortcutMap.clear()}};async function Ue(e,t){let{ids:n,allowBulk:r,offset:i,label:a=`bulk`}=e,o={succeeded:0,failed:0,errors:[]};if(r&&typeof t.bulkCall==`function`)try{let e=await t.bulkCall(n),r=Math.max(0,Math.min(e,n.length));o.succeeded+=r;let s=n.length-r;return s>0&&(o.failed+=s,o.errors.push({id:`batch_${i}`,error:`${s} record${s===1?``:`s`} failed in ${a}`})),o}catch{}return(await Promise.allSettled(n.map(e=>t.perRow(e)))).forEach((e,t)=>{e.status===`fulfilled`?o.succeeded+=1:(o.failed+=1,o.errors.push({id:n[t],error:e.reason instanceof Error?e.reason.message:String(e.reason)}))}),o}function We(e){if(e!=null)return e.id??e._id??e.recordId}function Ge(e,t){let n={};for(let[r,i]of Object.entries(e))if(i&&typeof i==`object`&&!Array.isArray(i)&&typeof i.$ref==`number`){let e=i.$ref,a=We(t[e]);if(a===void 0)throw Error(`batchTransaction: field "${r}" references operation ${e}, which has not produced an id (forward or invalid $ref)`);n[r]=a}else n[r]=i;return n}async function P(e,t){let n=[],r=[];try{for(let i of t){let t=i.action??`create`;if(t===`create`){let t=await e.create(i.object,Ge(i.data??{},n));n.push(t);let a=We(t);a&&r.push({object:i.object,id:a})}else if(t===`update`){if(i.id==null)throw Error(`batchTransaction: update on "${i.object}" requires an id`);n.push(await e.update(i.object,i.id,Ge(i.data??{},n)))}else{if(i.id==null)throw Error(`batchTransaction: delete on "${i.object}" requires an id`);n.push(await e.delete(i.object,i.id))}}return{results:n}}catch(t){throw r.length>0&&await Promise.allSettled([...r].reverse().map(t=>e.delete(t.object,t.id))),t}}function Ke(e,t){return typeof e.batchTransaction==`function`?e.batchTransaction(t):P(e,t)}function qe(e,t,n){let r=e;if(t&&(r=r.replace(/\/+$/,``)+`/`+t.replace(/^\/+/,``)),n&&Object.keys(n).length>0){let e=new URLSearchParams;for(let[t,r]of Object.entries(n))r!=null&&e.set(t,String(r));let t=e.toString();t&&(r+=(r.includes(`?`)?`&`:`?`)+t)}return r}function Je(e){if(!e)return{};let t={};return e.$select?.length&&(t.$select=e.$select.join(`,`)),e.$filter&&Object.keys(e.$filter).length>0&&(t.$filter=JSON.stringify(e.$filter)),e.$orderby&&(Array.isArray(e.$orderby)?typeof e.$orderby[0]==`string`?t.$orderby=e.$orderby.join(`,`):t.$orderby=e.$orderby.map(e=>`${e.field} ${e.order||`asc`}`).join(`,`):t.$orderby=Object.entries(e.$orderby).map(([e,t])=>`${e} ${t}`).join(`,`)),e.$skip!==void 0&&(t.$skip=e.$skip),e.$top!==void 0&&(t.$top=e.$top),e.$expand?.length&&(t.$expand=e.$expand.join(`,`)),e.$search&&(t.$search=e.$search),e.$count&&(t.$count=`true`),t}function Ye(e,t){return{...e,...t}}var Xe=class{readConfig;writeConfig;fetchFn;defaultHeaders;constructor(e){this.readConfig=e.read,this.writeConfig=e.write,this.fetchFn=e.fetch??globalThis.fetch.bind(globalThis),this.defaultHeaders=e.defaultHeaders??{}}async request(e,t={}){if(!e)throw Error(`ApiDataSource: No HTTP configuration provided for this operation. Ensure the ViewData has read/write configs.`);let n=t.method??e.method??`GET`,r={...e.params,...t.queryParams},i=qe(e.url,t.pathSuffix,r),a=Ye(Ye(this.defaultHeaders,e.headers),t.headers),o={method:n,headers:a};t.body!==void 0&&n!==`GET`&&(t.body instanceof FormData||t.body instanceof Blob?o.body=t.body:typeof t.body==`string`?(o.body=t.body,a[`Content-Type`]||=`text/plain`):(o.body=JSON.stringify(t.body),a[`Content-Type`]||=`application/json`));let s=await this.fetchFn(i,o);if(!s.ok){let e=await s.text().catch(()=>``);throw Error(`ApiDataSource: HTTP ${s.status} ${s.statusText} — ${e}`)}return(s.headers.get(`content-type`)??``).includes(`application/json`)?s.json():await s.text()}async find(e,t){let n=Je(t),r=await this.request(this.readConfig,{method:`GET`,queryParams:n});return this.normalizeQueryResult(r)}async findOne(e,t,n){try{let e=Je(n);return await this.request(this.readConfig,{pathSuffix:String(t),method:`GET`,queryParams:e})??null}catch{return null}}async create(e,t){let n=this.writeConfig??this.readConfig;return this.request(n,{method:`POST`,body:t})}async update(e,t,n,r){let i=this.writeConfig??this.readConfig;return this.request(i,{pathSuffix:String(t),method:`PATCH`,body:n,...r?.ifMatch?{headers:{"If-Match":String(r.ifMatch)}}:{}})}async delete(e,t,n){let r=this.writeConfig??this.readConfig;try{return await this.request(r,{pathSuffix:String(t),method:`DELETE`,...n?.ifMatch?{headers:{"If-Match":String(n.ifMatch)}}:{}}),!0}catch{return!1}}batchTransaction(e){return P(this,e)}async getObjectSchema(e){return{name:e,fields:{}}}async getView(e,t){return null}async getApp(e){return null}async aggregate(e,t){let n={field:t.field,function:t.function,groupBy:t.groupBy};t.filter&&(n.filter=typeof t.filter==`string`?t.filter:JSON.stringify(t.filter));let r=await this.request(this.readConfig,{pathSuffix:`aggregate`,method:`GET`,queryParams:n});return Array.isArray(r)?r:r?.data&&Array.isArray(r.data)?r.data:r?.results&&Array.isArray(r.results)?r.results:[]}normalizeQueryResult(e){if(Array.isArray(e))return{data:e,total:e.length};if(e&&typeof e==`object`){if(Array.isArray(e.data)&&(`total`in e||`totalCount`in e))return{data:e.data,total:e.total??e.totalCount??e.data.length,hasMore:e.hasMore,cursor:e.cursor};for(let t of[`data`,`items`,`results`,`records`,`value`])if(Array.isArray(e[t]))return{data:e[t],total:e.total??e.totalCount??e.count??e[t].length,hasMore:e.hasMore??e.hasNextPage};return{data:[e],total:1}}return{data:[],total:0}}};function F(e,t){return t?e[t]:e.id??e._id}function Ze(e,t){if(!t||t.length===0)return!0;let n=t[0];if(n===`and`)return t.slice(1).every(t=>Ze(e,t));if(n===`or`)return t.slice(1).some(t=>Ze(e,t));if(t.length===3&&typeof n==`string`){let[n,r,i]=t,a=e[n];switch(r){case`=`:return a===i;case`!=`:return a!==i;case`>`:return a>i;case`>=`:return a>=i;case`<`:return a<i;case`<=`:return a<=i;case`in`:return Array.isArray(i)&&i.includes(a);case`not in`:case`not_in`:case`nin`:case`notin`:return Array.isArray(i)&&!i.includes(a);case`contains`:{let e=typeof a==`string`?a.toLowerCase():``;return typeof a==`string`&&e.includes(String(i).toLowerCase())}case`notcontains`:{let e=typeof a==`string`?a.toLowerCase():``;return typeof a==`string`&&!e.includes(String(i).toLowerCase())}case`startswith`:{let e=typeof a==`string`?a.toLowerCase():``;return typeof a==`string`&&e.startsWith(String(i).toLowerCase())}case`between`:return Array.isArray(i)&&i.length===2&&a>=i[0]&&a<=i[1];default:return!0}}return!0}function Qe(e,t){for(let[n,r]of Object.entries(t)){let t=e[n];if(r&&typeof r==`object`&&!Array.isArray(r))for(let[e,n]of Object.entries(r))switch(e){case`$gt`:if(!(t>n))return!1;break;case`$gte`:if(!(t>=n))return!1;break;case`$lt`:if(!(t<n))return!1;break;case`$lte`:if(!(t<=n))return!1;break;case`$ne`:if(t===n)return!1;break;case`$in`:if(!Array.isArray(n)||!n.includes(t))return!1;break;case`$contains`:if(typeof t!=`string`||!t.toLowerCase().includes(String(n).toLowerCase()))return!1;break;default:break}else if(t!==r)return!1}return!0}function $e(e,t){if(!t)return e;let n=[];return Array.isArray(t)?n=t.map(e=>typeof e==`string`?e.startsWith(`-`)?{field:e.slice(1),order:`desc`}:{field:e,order:`asc`}:{field:e.field,order:e.order??`asc`}):typeof t==`object`&&(n=Object.entries(t).map(([e,t])=>({field:e,order:t}))),n.length===0?e:[...e].sort((e,t)=>{for(let{field:r,order:i}of n){let n=e[r],a=t[r];if(n===a)continue;if(n==null)return i===`asc`?-1:1;if(a==null)return i===`asc`?1:-1;let o=n<a?-1:1;return i===`asc`?o:-o}return 0})}function et(e,t){if(!t||t.length===0)return e;let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}var tt=class{items;idField;mutationListeners=new Set;constructor(e){this.items=JSON.parse(JSON.stringify(e.items)),this.idField=e.idField}emitMutation(e){for(let t of this.mutationListeners)try{t(e)}catch(e){console.warn(`ValueDataSource: mutation listener error`,e)}}async find(e,t){let n=[...this.items];if(t?.$filter&&(Array.isArray(t.$filter)&&t.$filter.length>0?n=n.filter(e=>Ze(e,t.$filter)):!Array.isArray(t.$filter)&&Object.keys(t.$filter).length>0&&(n=n.filter(e=>Qe(e,t.$filter)))),t?.$search){let e=t.$search.toLowerCase();n=n.filter(t=>Object.values(t).some(t=>typeof t==`string`&&t.toLowerCase().includes(e)))}let r=n.length;n=$e(n,t?.$orderby);let i=t?.$skip??0,a=t?.$top;return i>0&&(n=n.slice(i)),a!==void 0&&(n=n.slice(0,a)),t?.$select?.length&&(n=n.map(e=>et(e,t.$select))),{data:n,total:r,hasMore:i+(a??n.length)<r}}async findOne(e,t,n){let r=this.items.find(e=>String(F(e,this.idField))===String(t));return r?n?.$select?.length?et(r,n.$select):{...r}:null}async create(e,t){let n={...t};if(!F(n,this.idField)){let e=this.idField??`id`;n[e]=`auto_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}return this.items.push(n),this.emitMutation({type:`create`,resource:e,record:{...n}}),{...n}}async update(e,t,n){let r=this.items.findIndex(e=>String(F(e,this.idField))===String(t));if(r===-1)throw Error(`ValueDataSource: Record with id "${t}" not found`);return this.items[r]={...this.items[r],...n},this.emitMutation({type:`update`,resource:e,id:t,record:{...this.items[r]}}),{...this.items[r]}}async delete(e,t){let n=this.items.findIndex(e=>String(F(e,this.idField))===String(t));return n===-1?!1:(this.items.splice(n,1),this.emitMutation({type:`delete`,resource:e,id:t}),!0)}async bulk(e,t,n){let r=[];for(let i of n)switch(t){case`create`:r.push(await this.create(e,i));break;case`update`:{let t=F(i,this.idField);t!==void 0&&r.push(await this.update(e,t,i));break}case`delete`:{let t=F(i,this.idField);t!==void 0&&await this.delete(e,t);break}}return r}batchTransaction(e){return P(this,e)}async getObjectSchema(e){if(this.items.length===0)return{name:e,fields:{}};let t=this.items[0],n={};for(let[e,r]of Object.entries(t))n[e]={type:typeof r};return{name:e,fields:n}}async getView(e,t){return null}async getApp(e){return null}async aggregate(e,t){let{field:n,function:r,groupBy:i}=t,a={};for(let e of this.items){let t=String(e[i]??`Unknown`);a[t]||(a[t]=[]),a[t].push(e)}return Object.entries(a).map(([e,t])=>{let a=t.map(e=>Number(e[n])||0),o;switch(r){case`count`:o=t.length;break;case`avg`:o=a.length>0?a.reduce((e,t)=>e+t,0)/a.length:0;break;case`min`:o=a.length>0?Math.min(...a):0;break;case`max`:o=a.length>0?Math.max(...a):0;break;default:o=a.reduce((e,t)=>e+t,0);break}return{[i]:e,[n]:o}})}onMutation(e){return this.mutationListeners.add(e),()=>{this.mutationListeners.delete(e)}}get count(){return this.items.length}getAll(){return JSON.parse(JSON.stringify(this.items))}};function nt(e,t,n){if(!e)return t??null;switch(e.provider){case`object`:return t??null;case`api`:return new Xe({read:e.read,write:e.write,fetch:n?.fetch,defaultHeaders:n?.defaultHeaders});case`value`:return new tt({items:e.items??[],idField:n?.idField});default:return t??null}}var I=`https://objectui.dev/docs/errors`,rt={"OBJUI-001":{code:`OBJUI-001`,message:'Unknown component type: "${type}"',suggestion:`Ensure the component is registered via registry.register() before rendering. Check for typos in the component type name.`,docUrl:`${I}/OBJUI-001`},"OBJUI-002":{code:`OBJUI-002`,message:"Schema validation failed: ${reason}",suggestion:`Verify the schema against the ObjectUI JSON spec. Run the built-in schema validator for details.`,docUrl:`${I}/OBJUI-002`},"OBJUI-003":{code:`OBJUI-003`,message:"Expression evaluation failed: ${expression}",suggestion:`Check the expression syntax and ensure all referenced variables exist in the current data scope.`,docUrl:`${I}/OBJUI-003`},"OBJUI-004":{code:`OBJUI-004`,message:'Plugin dependency missing: "${dependency}"',suggestion:`Install the required dependency and register it before loading this plugin.`,docUrl:`${I}/OBJUI-004`},"OBJUI-005":{code:`OBJUI-005`,message:'Plugin already loaded: "${plugin}"',suggestion:`A plugin with the same name is already registered. Remove the duplicate or use a unique plugin name.`,docUrl:`${I}/OBJUI-005`},"OBJUI-006":{code:`OBJUI-006`,message:'Plugin not found: "${plugin}"',suggestion:`Verify the plugin name and ensure it has been registered before access.`,docUrl:`${I}/OBJUI-006`},"OBJUI-007":{code:`OBJUI-007`,message:'Registry namespace deprecated: "${namespace}"',suggestion:`Migrate to the new namespace format. See the migration guide for details.`,docUrl:`${I}/OBJUI-007`},"OBJUI-008":{code:`OBJUI-008`,message:'Read-only scope violation: "${scope}"',suggestion:`You are trying to mutate a read-only data scope. Use a writable scope or clone the data before modifying.`,docUrl:`${I}/OBJUI-008`},"OBJUI-009":{code:`OBJUI-009`,message:'Invalid field configuration: "${field}"',suggestion:`Check the field schema for required properties (type, name). Ensure the field widget is registered.`,docUrl:`${I}/OBJUI-009`},"OBJUI-010":{code:`OBJUI-010`,message:'Action execution failed: "${action}"',suggestion:`Verify the action handler is registered and that all required parameters are provided.`,docUrl:`${I}/OBJUI-010`}},it=class extends Error{code;details;constructor(e,t,n){super(e),this.code=t,this.details=n,this.name=`ObjectUIError`,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}toJSON(){return{name:this.name,message:this.message,code:this.code,details:this.details,stack:this.stack}}};function at(e){return e instanceof it}var L=`__debug`;function ot(e){let t=e;if(t===void 0)try{t=typeof window<`u`?window.location.search:``}catch{t=``}let n=new URLSearchParams(t),r=n.has(L),i=n.has(`${L}_schema`),a=n.has(`${L}_perf`),o=n.has(`${L}_data`),s=n.has(`${L}_expr`),c=n.has(`${L}_events`),l=n.has(`${L}_registry`);return{enabled:r||i||a||o||s||c||l,...i&&{schema:i},...a&&{perf:a},...o&&{data:o},...s&&{expr:s},...c&&{events:c},...l&&{registry:l}}}function R(){try{if(typeof window<`u`)try{if(ot(window.location.search).enabled)return!0}catch{}let e=typeof globalThis<`u`&&globalThis.OBJECTUI_DEBUG;return e===!0||e===`true`||globalThis.process?.env?.OBJECTUI_DEBUG===`true`}catch{return!1}}function st(e,t,n){R()&&(n===void 0?console.log(`[ObjectUI Debug][${e}] ${t}`):console.log(`[ObjectUI Debug][${e}] ${t}`,n))}var z=new Map;function ct(e){R()&&z.set(e,performance.now())}function lt(e){if(!R())return;let t=z.get(e);if(t!==void 0){let n=(performance.now()-t).toFixed(2);console.log(`[ObjectUI Debug][perf] ${e}: ${n}ms`),z.delete(e)}}var ut=200,dt=class e{static instance=null;entries=[];subscribers=new Set;static getInstance(){return e.instance||=new e,e.instance}static resetInstance(){e.instance=null}addPerf(e){this.push({kind:`perf`,data:e})}addExpr(e){this.push({kind:`expr`,data:e})}addEvent(e){this.push({kind:`event`,data:e})}getEntries(e){return e?this.entries.filter(t=>t.kind===e):this.entries.slice()}clear(){this.entries=[]}subscribe(e){return this.subscribers.add(e),()=>this.subscribers.delete(e)}push(e){this.entries.push(e),this.entries.length>ut&&(this.entries=this.entries.slice(-200));for(let t of this.subscribers)try{t(e)}catch{}}},ft={medium:991,small:640,xsmall:479},pt=e=>e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`),mt=e=>Object.entries(e).filter(([,e])=>e!=null&&e!==``).map(([e,t])=>`${pt(e)}: ${typeof t==`number`?String(t):t} !important;`).join(` `);function ht(e){if(!e||typeof e!=`object`)return!1;let t=e;return!!(t.large||t.medium||t.small||t.xsmall)}function gt(e){return`os-s-${String(e).replace(/[^a-zA-Z0-9_-]/g,`-`)}`}function _t(e,t){let n=[];if(t.large){let r=mt(t.large);r&&n.push(`${e} { ${r} }`)}for(let r of[`medium`,`small`,`xsmall`]){let i=t[r];if(!i)continue;let a=mt(i);a&&n.push(`@media (max-width: ${ft[r]}px) { ${e} { ${a} } }`)}return n.join(`
|
|
3
|
-
`)}var vt={"react-pages":!0},B=new Map,yt=!1;function bt(){if(yt)return;yt=!0;let e=globalThis;if(Array.isArray(e.__OBJECTUI_CAPABILITIES__))for(let t of e.__OBJECTUI_CAPABILITIES__)typeof t==`string`&&!B.has(t)&&B.set(t,!0);if(Array.isArray(e.__OBJECTUI_CAPABILITIES_DISABLED__))for(let t of e.__OBJECTUI_CAPABILITIES_DISABLED__)typeof t==`string`&&B.set(t,!1)}function xt(e){bt();let t=B.get(e);return t===void 0?vt[e]??!1:t}var St=`react-pages`,Ct=/\$\{event\.([a-zA-Z0-9_]+)\}/g;function wt(e,t){return typeof e!=`string`||e.indexOf("${event.")===-1?e:e.replace(Ct,(e,n)=>{let r=t[n];return r==null?``:String(r)})}function Tt(e,t){if(typeof e==`string`){let n=e.match(/^\$\{event\.([a-zA-Z0-9_]+)\}$/);if(n){let e=t[n[1]];return e===``||e===void 0?null:e}return wt(e,t)}if(Array.isArray(e))return e.map(e=>Tt(e,t));if(e&&typeof e==`object`){let n={};for(let[r,i]of Object.entries(e))n[r]=Tt(i,t);return n}return e}function Et(e,t,n={}){if(e?.filter)return Tt(e.filter,t);let r={},{rowField:i,columnField:a,groupByField:o}=n,s=t.scope??`cell`;return s===`total`?r:((s===`cell`||s===`row`)&&i&&`rowKey`in t&&(r[i]=t.rowKey===``?null:t.rowKey),(s===`cell`||s===`column`)&&a&&`colKey`in t&&(r[a]=t.colKey===``?null:t.colKey),o&&`category`in t&&(r[o]=t.category===``?null:t.category),r)}function Dt(e,t,n=`Details`){if(e?.title){let n=wt(e.title,t).trim();if(n)return n}let r=[];return t.rowLabel&&r.push(t.rowLabel),t.colLabel&&r.push(t.colLabel),t.categoryLabel?r.push(t.categoryLabel):t.category&&r.push(t.category),t.series&&r.push(t.series),r.length>0?r.join(` × `):n}function Ot(e){return e?e.enabled!==!1:!1}function V(e,t=new Date){if(e==null)return e;let n=e=>{let t=new Date(e);return t.setHours(0,0,0,0),t},r=e=>{let t=n(e);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,`0`)}-${String(t.getDate()).padStart(2,`0`)}`},i=e=>{let t=n(e),r=(t.getDay()+6)%7;return t.setDate(t.getDate()-r),t},a=e=>new Date(e.getFullYear(),e.getMonth(),1),o=e=>{let t=Math.floor(e.getMonth()/3);return new Date(e.getFullYear(),t*3,1)},s=e=>new Date(e.getFullYear(),0,1),c=(e,t)=>new Date(e.getFullYear(),e.getMonth()+t,1),l=(e,t)=>{let r=n(e);return r.setDate(r.getDate()+t),r},u=e=>l(c(a(e),1),-1),d=e=>l(i(e),6),f=e=>l(c(o(e),3),-1),p=e=>new Date(e.getFullYear(),11,31),m={today:()=>r(t),yesterday:()=>r(l(t,-1)),tomorrow:()=>r(l(t,1)),now:()=>t.toISOString(),current_week_start:()=>r(i(t)),current_week_end:()=>r(d(t)),current_month_start:()=>r(a(t)),current_month_end:()=>r(u(t)),current_quarter_start:()=>r(o(t)),current_quarter_end:()=>r(f(t)),current_year_start:()=>r(s(t)),current_year_end:()=>r(p(t)),last_week_start:()=>r(l(i(t),-7)),last_week_end:()=>r(l(i(t),-1)),last_month_start:()=>r(c(a(t),-1)),last_month_end:()=>r(l(a(t),-1)),last_quarter_start:()=>r(c(o(t),-3)),last_quarter_end:()=>r(l(o(t),-1)),last_year_start:()=>r(new Date(t.getFullYear()-1,0,1)),last_year_end:()=>r(new Date(t.getFullYear()-1,11,31)),next_week_start:()=>r(l(i(t),7)),next_month_start:()=>r(c(a(t),1)),next_quarter_start:()=>r(c(o(t),3)),next_year_start:()=>r(new Date(t.getFullYear()+1,0,1))};for(let[e,t]of Object.entries({week_start:`current_week_start`,week_end:`current_week_end`,month_start:`current_month_start`,month_end:`current_month_end`,quarter_start:`current_quarter_start`,quarter_end:`current_quarter_end`,year_start:`current_year_start`,year_end:`current_year_end`}))m[e]=m[t];let h=/^(\d+)_(minutes?|hours?|days?|weeks?|months?|years?)_(ago|from_now)$/,g=e=>{let n=e.match(h);if(!n)return null;let i=parseInt(n[1],10);if(!Number.isFinite(i))return null;let a=n[3]===`ago`?-1:1,o=n[2].replace(/s$/,``);if(o===`minute`)return new Date(t.getTime()+a*i*60*1e3).toISOString();if(o===`hour`)return new Date(t.getTime()+a*i*60*60*1e3).toISOString();if(o===`day`)return r(l(t,a*i));if(o===`week`)return r(l(t,a*i*7));if(o===`month`){let e=new Date(t.getFullYear(),t.getMonth()+a*i,t.getDate());return r(e)}if(o===`year`){let e=new Date(t.getFullYear()+a*i,t.getMonth(),t.getDate());return r(e)}return null},_=/\$?\{([a-zA-Z0-9_]+)\}/g,v=e=>{if(e==null)return e;if(typeof e==`string`){let t=e.match(/^\$?\{([a-zA-Z0-9_]+)\}$/);if(t){let e=t[1];if(m[e])return m[e]();let n=g(e);if(n!=null)return n}let n=!1,r=e.replace(_,(e,t)=>{if(m[t])return n=!0,m[t]();let r=g(t);return r==null?e:(n=!0,r)});return n?r:e}if(Array.isArray(e))return e.map(v);if(typeof e==`object`){let t={};for(let n of Object.keys(e))t[n]=v(e[n]);return t}return e};return v(e)}var kt=`dateRange`,At=`created_at`,jt={today:{from:`{today}`,to:`{today}`},yesterday:{from:`{yesterday}`,to:`{yesterday}`},this_week:{from:`{current_week_start}`,to:`{current_week_end}`},last_week:{from:`{last_week_start}`,to:`{last_week_end}`},this_month:{from:`{current_month_start}`,to:`{current_month_end}`},last_month:{from:`{last_month_start}`,to:`{last_month_end}`},this_quarter:{from:`{current_quarter_start}`,to:`{current_quarter_end}`},last_quarter:{from:`{last_quarter_start}`,to:`{last_quarter_end}`},this_year:{from:`{current_year_start}`,to:`{current_year_end}`},last_year:{from:`{last_year_start}`,to:`{last_year_end}`},last_7_days:{from:`{7_days_ago}`,to:`{today}`},last_30_days:{from:`{30_days_ago}`,to:`{today}`},last_90_days:{from:`{90_days_ago}`,to:`{today}`}},Mt=Object.keys(jt);function Nt(e){if(!Array.isArray(e)||e.length===0)return;let t=[];for(let n of e)if(n!=null)if(typeof n==`object`){let e=n.value;if(e==null)continue;let r=n.label;t.push({value:String(e),label:typeof r==`string`&&r?r:String(e)})}else t.push({value:String(n),label:String(n)});return t.length>0?t:void 0}function Pt(e){let t=new Map;if(e.dateRange){let n=e.dateRange.defaultRange;t.set(kt,{name:kt,field:e.dateRange.field||At,type:`dateRange`,defaultValue:n&&n!==`custom`?{preset:n}:void 0,allowCustomRange:e.dateRange.allowCustomRange})}for(let n of e.globalFilters??[]){if(!n?.field)continue;let e=n.name||n.field;t.has(e)&&typeof console<`u`&&console.warn(`[dashboard-filters] duplicate filter name "${e}" — the later definition wins`),t.set(e,{name:e,field:n.field,label:n.label,type:n.type??`text`,options:Nt(n.options),optionsFrom:n.optionsFrom,defaultValue:n.defaultValue,targetWidgets:n.targetWidgets})}return Array.from(t.values())}function Ft(e){return e.map(e=>({name:e.name,type:e.type===`dateRange`?`object`:`string`,defaultValue:e.defaultValue}))}function It(e,t){if(t==null||t===``)return!0;if(Array.isArray(t))return t.length===0;if(e.type===`dateRange`||e.type===`date`){let e=t;return typeof e==`object`&&!e.preset&&!e.from&&!e.to}return typeof t==`object`&&Object.keys(t).length===0}function Lt(e,t){if(!It(e,t)){if(e.type===`dateRange`||e.type===`date`){let e=t;if(typeof e==`object`){let t=e.preset?jt[e.preset]:void 0,n=t?.from??e.from,r=t?.to??e.to;return!n&&!r?void 0:{...n?{$gte:n}:{},...r?{$lte:r}:{}}}return t}return e.type===`select`||e.type===`lookup`?Array.isArray(t)?{$in:t}:t:e.type===`text`?{$contains:t}:t}}function Rt(e,t){let n=e.filterBindings?.[t.name];if(n!==!1){if(typeof n==`string`&&n)return n;if(!(t.targetWidgets&&t.targetWidgets.length>0&&(!e.id||!t.targetWidgets.includes(e.id))))return t.field}}function zt(e,t,n,r){let i=[];for(let a of t){let t=n[a.name];if(It(a,t))continue;let o=Rt(e,a);if(!o)continue;if(typeof e.filterBindings?.[a.name]!=`string`&&r&&!r.has(o)){typeof console<`u`&&console.warn(`[dashboard-filters] skipping filter "${a.name}" on widget "${e.id??`?`}": default field "${o}" does not exist on the widget's object — map it with filterBindings: { "${a.name}": "<field>" } or opt out with false`);continue}let s=Lt(a,t);s!==void 0&&i.push({[o]:s})}if(i.length!==0)return i.length===1?i[0]:{$and:i}}function Bt(e,t){let n=e&&Object.keys(e).length>0,r=t&&Object.keys(t).length>0;if(n&&r)return{$and:[e,t]};if(n)return e;if(r)return t}var Vt={current_week_start:`last_week_start`,current_week_end:`last_week_end`,current_month_start:`last_month_start`,current_month_end:`last_month_end`,current_quarter_start:`last_quarter_start`,current_quarter_end:`last_quarter_end`,current_year_start:`last_year_start`,current_year_end:`last_year_end`,week_start:`last_week_start`,week_end:`last_week_end`,month_start:`last_month_start`,month_end:`last_month_end`,quarter_start:`last_quarter_start`,quarter_end:`last_quarter_end`,year_start:`last_year_start`,year_end:`last_year_end`,today:`yesterday`};function H(e,t){if(e==null)return e;if(typeof e==`string`)return e.replace(/\$?\{([a-zA-Z0-9_]+)\}/g,(e,n)=>{let r=t[n];return r?`{${r}}`:e});if(Array.isArray(e))return e.map(e=>H(e,t));if(typeof e==`object`){let n={};for(let r of Object.keys(e))n[r]=H(e[r],t);return n}return e}function Ht(e,t){let n=t.match(/^(\d+)([dwMy])$/);if(!n)return null;let r=parseInt(n[1],10),i=n[2],a=new Date(e);if(i===`d`)a.setDate(a.getDate()-r);else if(i===`w`)a.setDate(a.getDate()-r*7);else if(i===`M`)a.setMonth(a.getMonth()-r);else if(i===`y`)a.setFullYear(a.getFullYear()-r);else return null;return a}function Ut(e,t,n=new Date){if(t===`previousYear`)return V(e,new Date(n.getFullYear()-1,n.getMonth(),n.getDate(),n.getHours(),n.getMinutes(),n.getSeconds()));if(typeof t==`object`&&t&&`offset`in t){let r=Ht(n,t.offset);return r?V(e,r):V(e,n)}return V(H(e,Vt),n)}function Wt(e,t){if(e===`previousYear`)return`vsLastYear`;if(typeof e==`object`&&e&&`offset`in e)return`vsPreviousPeriod`;let n=t?JSON.stringify(t):``;return/current_year_|year_start|year_end/.test(n)?`vsLastYear`:/current_quarter_|quarter_start|quarter_end/.test(n)?`vsLastQuarter`:/current_month_|month_start|month_end/.test(n)?`vsLastMonth`:/current_week_|week_start|week_end/.test(n)?`vsLastWeek`:/\btoday\b/.test(n)?`vsYesterday`:`vsPreviousPeriod`}function Gt(e,t,n,r){let i=(t??[]).filter(Boolean),a=(n??[]).filter(Boolean),o=Array.isArray(e)?e:[],s=e=>(r??[]).find(t=>t.name===e)?.label??e;if(i.length>=2&&a.length===1){let e=i[0],t=i[1],n=a[0],r=[],s=new Map;for(let i of o){let a=i[e],o=String(a??``);s.has(o)||s.set(o,{[e]:a});let c=String(i[t]??``);c!==``&&!r.includes(c)&&r.push(c),s.get(o)[c]=i[n]}return{data:Array.from(s.values()),xAxisKey:e,series:r.map(e=>({dataKey:e,label:e}))}}return{data:o,xAxisKey:i[0],series:a.map(e=>({dataKey:e,label:s(e)}))}}function Kt(e,t){let n=Array.isArray(e)?e:[];if(!t)return n;let r=Object.keys(t).filter(e=>t[e]&&Object.keys(t[e]).length>0);return r.length===0?n:n.map(e=>{let n=null;for(let i of r){let r=e[i];if(r==null)continue;let a=t[i][String(r)];a!=null&&a!==r&&(n||={...e},n[i]=a)}return n??e})}function qt(e,t,n,r,i){let a=(t??[]).filter(Boolean),o=(n??[]).filter(Boolean),s=Array.isArray(e)?e:[],c=a[0];if(!c)return-1;let l=String(r??``);if(a.length>=2&&o.length===1){let e=a[1],t=String(i??``);return s.findIndex(n=>String(n[c]??``)===l&&String(n[e]??``)===t)}return s.findIndex(e=>String(e[c]??``)===l)}function Jt(e){if(!Array.isArray(e)||e.length===0)return null;let t={};for(let n of e)if(n&&typeof n==`object`){let e=n;typeof e.color==`string`&&e.color&&(e.value!=null&&(t[String(e.value)]=e.color),e.label!=null&&(t[String(e.label)]=e.color))}return Object.keys(t).length>0?t:null}function Yt(e){if(!Array.isArray(e)||e.length===0)return null;let t={};for(let n of e)if(n&&typeof n==`object`){let e=n;if(e.value!=null&&e.label!=null){let n=String(e.value),r=String(e.label);r!==n&&(t[n]=r)}}return Object.keys(t).length>0?t:null}function Xt(e){return e>-1&&e<1?e*100:e}function Zt(e,t,n){if(e==null)return`—`;if(typeof e!=`number`)return String(e);let r=t?t.split(`.`)[1]?.match(/0/g)?.length??0:void 0;if(n)try{return new Intl.NumberFormat(void 0,{style:`currency`,currency:n,minimumFractionDigits:r??0,maximumFractionDigits:r??2}).format(e)}catch{}if(!t)return Number.isInteger(e)?String(e):e.toLocaleString(void 0,{maximumFractionDigits:2});let i=t.includes(`%`);return`${t.includes(`$`)?`$`:``}${(i?Xt(e):e).toLocaleString(void 0,{minimumFractionDigits:r??0,maximumFractionDigits:r??0})}${i?`%`:``}`}function Qt(e){return e==null?`—`:typeof e==`number`?Number.isInteger(e)?String(e):e.toLocaleString(void 0,{maximumFractionDigits:2}):String(e)}function $t(e,t,n){let r=new Map((e??[]).map(e=>[e.name,e])),i=e=>r.get(e);return{measureField:i,headerLabel:e=>{let r=i(e)?.label??e;return t&&n?n(t,e,r):r}}}function en(e,t,n,r,i){let a={};for(let r of t){let t=e?.[r];a[n[r]]=t===``||t===void 0?null:t}if(i)for(let e of Object.values(i))e&&e.field&&(a[e.field]={$gte:e.gte,$lt:e.lt});return r?{...r,...a}:a}var U=`\0`,tn=`[-\\u2013\\u2014|/·,:]`,nn=[`name`,`title`,`subject`,`label`,`full_name`,`display_name`],rn=new Set([`date`,`datetime`,`time`,`number`,`currency`,`percent`,`boolean`,`file`,`image`,`attachment`,`json`,`geolocation`,`select`,`multiselect`,`picklist`,`multipicklist`,`lookup`,`master_detail`,`reference`,`autonumber`,`auto_number`,`phone`]),an=new Set([`text`,`string`,`textarea`,`html`]);function on(e){let t=e.name??e.full_name??e.display_name??e.label??e.title??e.subject??null;return t==null||typeof t==`string`&&!t.trim()?[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):typeof t==`string`?t:String(t)}function sn(e,t){let n=typeof e==`string`?e:e&&typeof e==`object`&&typeof e.source==`string`?e.source:void 0;if(!n||!t||typeof t!=`object`)return``;n=n.replace(/\{\{\s*([^{}]+?)\s*\}\}/g,`{$1}`);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]}return a&&typeof a==`object`&&(a=on(a)),a==null||a===``?U:(r=!0,String(a))});if(!r)return``;let a=RegExp(`\\s*${tn}\\s*${U}`,`g`),o=RegExp(`${U}\\s*${tn}\\s*`,`g`);return i=i.replace(a,``).replace(o,``).replace(new RegExp(U,`g`),``).replace(/\s+/g,` `).trim(),i}function cn(e){if(!e||typeof e!=`object`)return!1;let t=typeof e.type==`string`?e.type.toLowerCase():void 0;if(!t)return!0;if(t===`formula`){let t=String(e.data_type??e.dataType??e.returnType??e.result_type??``).toLowerCase();return an.has(t)}return!rn.has(t)}function ln(e){return e?Array.isArray(e)?e.filter(e=>e&&typeof e==`object`&&typeof e.name==`string`).map(e=>[e.name,e]):typeof e==`object`?Object.keys(e).map(t=>[t,e[t]]):[]:[]}var un=new WeakMap;function dn(e){let t=ln(e?.fields).filter(([,e])=>cn(e));if(t.length===0)return;for(let e of nn){let n=t.find(([t])=>t.toLowerCase()===e);if(n)return n[0]}let n=t.find(([e])=>{let t=e.toLowerCase();return t.endsWith(`_name`)||t.endsWith(`_title`)||t.startsWith(`name_`)});return n?n[0]:t[0][0]}function fn(e){if(typeof e!=`object`||!e)return dn(e);if(un.has(e))return un.get(e);let t=dn(e);return un.set(e,t),t}var pn=[`name`,`full_name`,`fullName`,`display_name`,`displayName`,`title`,`subject`,`label`];function W(e,t){if(!t||!e||typeof e!=`object`)return;let n=e[t];if(n&&typeof n==`object`&&(n=on(n)),n==null)return;let r=typeof n==`string`?n.trim():String(n);return r===``?void 0:r}function mn(e,t,n){let r=W(t,n?.titleField)??W(t,e?.titleField);if(r)return r;let i=W(t,e?.nameField??e?.displayNameField??e?.NAME_FIELD_KEY);if(i)return i;if(e?.titleFormat){let n=sn(e.titleFormat,t);if(n)return n}let a=W(t,fn(e));if(a)return a;if(n?.deriveFromRecordKeys!==!1&&t&&typeof t==`object`){for(let e of pn){let n=W(t,e);if(n)return n}for(let e of Object.keys(t)){let n=e.toLowerCase();if(!(n===`id`||n===`_id`||n.endsWith(`_id`)||n.startsWith(`_`))&&(n.endsWith(`_name`)||n.endsWith(`_title`)||n.startsWith(`name_`))){let n=W(t,e);if(n)return n}}}let o=t?.id??t?._id;return o!=null&&String(o).trim()!==``?`Record #${o}`:n?.fallback??`Untitled`}var hn=/[\\/:*?"<>|\u0000-\u001f]+/g,gn=80;function G(e){return e?String(e).replace(hn,`_`).replace(/\s+/g,` `).replace(/_{2,}/g,`_`).replace(/^[\s._-]+|[\s._-]+$/g,``).slice(0,gn):``}function _n(e,t={},n=new Date){let r=G(t.prefix),i=r||G(t.label)||G(t.objectName)||`export`,a=G(t.viewLabel);!r&&a&&a.toLowerCase()!==i.toLowerCase()&&(i=`${i}-${a}`.slice(0,gn));let o=e=>String(e).padStart(2,`0`),s=`${n.getFullYear()}${o(n.getMonth()+1)}${o(n.getDate())}-${o(n.getHours())}${o(n.getMinutes())}${o(n.getSeconds())}`;return`${i}-${s}.${e}`}function vn(e){if(!e||typeof e!=`object`)return e;let t=e,n=t.reference_to??t.reference??t.referenceTo;return n==null||n===``?e:(t.reference_to===void 0&&(t.reference_to=n),t.reference===void 0&&(t.reference=n),e)}function yn(e){let t=e&&typeof e==`object`?e.fields:null;if(!t||typeof t!=`object`)return e;let n=Array.isArray(t)?t:Object.values(t);for(let e of n)vn(e);return e}var K=t(i(),1),q=r(),J=(0,K.createContext)(null),bn=({children:e,dataSource:t,debug:n,debugFlags:r,apiFetch:i})=>{let a=(0,K.useContext)(J),o=i??a?.apiFetch,s=(0,K.useMemo)(()=>({dataSource:t,debug:n,debugFlags:r,apiFetch:o}),[t,n,r,o]);return(0,q.jsx)(J.Provider,{value:s,children:e})},xn=()=>{let e=(0,K.useContext)(J);if(!e)throw Error(`useSchemaContext must be used within a SchemaRendererProvider`);return e},Sn=e=>{let t=(0,K.useContext)(J)?.dataSource;if(e&&t)return e.split(`.`).reduce((e,t)=>e&&e[t],t)},Cn=(0,K.createContext)({});function wn({scope:e,children:t}){return(0,K.createElement)(Cn.Provider,{value:e},t)}function Y(){return(0,K.useContext)(Cn)}function Tn(e){if(!(e==null||e===``)){if(typeof e==`boolean`)return e;if(typeof e==`string`)return`\${${e}}`;if(typeof e==`object`&&typeof e.source==`string`){let t=e.source;return t?e.dialect===`cel`?{dialect:`cel`,source:t}:`\${${t}}`:void 0}}}var En=new Set;function Dn(e,t={},n){let r=Y();return(0,K.useMemo)(()=>{let i=new k({...r,...t});if(n?.throwOnError)try{return i.evaluateCondition(e,{throwOnError:!0})}catch(t){let r=typeof e==`string`?e:String(e),i=`${n?.label??``}::${r}`;if(!En.has(i)){En.add(i);let e=t instanceof Error?t.message:String(t);console.warn(`[object-ui] ${n?.label??`a component`} was hidden/disabled: its predicate threw — ${e}. Predicate: ${r}.`)}return!1}return i.evaluateCondition(e)},[e,t,r,n?.throwOnError,n?.label])}function On(e,t,n){let r=Y(),i=n?.fallback??!0;return(0,K.useMemo)(()=>typeof e==`boolean`?e:e==null||e===``?i:_e(e,t??{},{fallback:i,scope:r,warnOnError:n?.warnOnError,label:n?.label}),[e,t,r,i,n?.warnOnError,n?.label])}var kn=(0,K.createContext)(null);function An(e){if(!e||e.length===0)return{};let t={};for(let n of e)if(n.defaultValue!==void 0)t[n.name]=n.defaultValue;else switch(n.type){case`number`:t[n.name]=0;break;case`boolean`:t[n.name]=!1;break;case`object`:t[n.name]={};break;case`array`:t[n.name]=[];break;default:t[n.name]=``;break}return t}var jn=({definitions:e,children:t})=>{let n=(0,K.useContext)(kn),[r,i]=(0,K.useState)(()=>An(e)),a=(0,K.useMemo)(()=>e??[],[e]),o=(0,K.useMemo)(()=>new Set(a.map(e=>e.name)),[a]),s=(0,K.useCallback)((e,t)=>{if(!o.has(e)&&n&&n.definitions.some(t=>t.name===e)){n.setVariable(e,t);return}i(n=>({...n,[e]:t}))},[o,n]),c=(0,K.useCallback)(e=>{for(let[t,n]of Object.entries(e))s(t,n)},[s]),l=(0,K.useCallback)(()=>{i(An(e))},[e]),u=(0,K.useMemo)(()=>n?{...n.variables,...r}:r,[n,r]),d=(0,K.useMemo)(()=>n?[...n.definitions.filter(e=>!o.has(e.name)),...a]:a,[n,a,o]),f=(0,K.useMemo)(()=>({variables:u,definitions:d,setVariable:s,setVariables:c,resetVariables:l}),[u,d,s,c,l]);return(0,q.jsx)(kn.Provider,{value:f,children:t})};jn.displayName=`PageVariablesProvider`;function X(){return(0,K.useContext)(kn)||{variables:{},definitions:[],setVariable:()=>{},setVariables:()=>{},resetVariables:()=>{}}}function Mn(e){let{variables:t,definitions:n,setVariable:r}=X();return(0,K.useMemo)(()=>{if(!e)return null;let i=n.find(t=>t.source===e);return i?{name:i.name,value:t[i.name],setValue:e=>r(i.name,e)}:null},[e,n,t,r])}function Nn(e){if(e!=null)return typeof e==`string`?e:e.defaultValue||e.key}var Pn=(()=>{try{return!1}catch{return!0}})(),Fn=typeof WeakMap<`u`?new WeakMap:{set(){},get(){},has(){return!1}},Z=typeof WeakSet<`u`?new WeakSet:{add(){},has(){return!1}};function In(e){if(!Pn||!e||typeof e!=`object`)return{valid:!0,messages:[]};let t=Fn.get(e);if(t)return t;let n={valid:!0,messages:[]};try{let t=m(e);if(!t.valid){let r=t.errors.map(e=>`${e.path}: ${e.message}`);n={valid:!1,messages:r},Z.has(e)||(Z.add(e),console.warn(`[ObjectUI] Invalid schema detected:
|
|
4
|
-
`+r.join(`
|
|
5
|
-
`),e))}}catch(t){Z.has(e)||(Z.add(e),console.warn(`[ObjectUI] Schema validator threw:`,t))}return Fn.set(e,n),n}function Ln(e){let t={};return e.ariaLabel&&(t[`aria-label`]=Nn(e.ariaLabel)),e.ariaDescribedBy&&(t[`aria-describedby`]=e.ariaDescribedBy),e.role&&(t.role=e.role),t}var Rn=class extends K.Component{state={hasError:!1,error:null};static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidUpdate(e){this.state.hasError&&(e.componentType!==this.props.componentType||e.resetKey!==this.props.resetKey)&&this.setState({hasError:!1,error:null})}handleRetry=()=>{this.setState({hasError:!1,error:null})};render(){if(this.state.hasError&&this.state.error){let e=this.state.error;return at(e),(0,q.jsxs)(`div`,{className:`p-4 border border-orange-400 rounded bg-orange-50 text-orange-700 my-2`,role:`alert`,children:[(0,q.jsxs)(`p`,{className:`font-medium`,children:[`Component`,this.props.componentType?` "${this.props.componentType}"`:``,` failed to render`]}),(0,q.jsx)(`p`,{className:`text-sm mt-1`,children:e.message}),!1,(0,q.jsx)(`button`,{onClick:this.handleRetry,className:`mt-2 text-sm underline hover:no-underline`,children:`Retry`})]})}return this.props.children}},zn=(0,K.forwardRef)(({schema:e,...t},n)=>{let r=(0,K.useContext)(J),i=r?.dataSource||{},a=Y(),{variables:o}=X(),[,s]=(0,K.useReducer)(e=>e+1,0);(0,K.useEffect)(()=>{let e=c.subscribe(s);return s(),e},[]);let[l,u]=(0,K.useState)(null),d=K.useId(),f=(0,K.useMemo)(()=>{if(!e||typeof e==`string`)return e;let t=new k({...a,current_user:a?.user,data:i,page:o}),n={...e};if(n.properties){let e=n.type,t=n.id,r=n.properties;for(let[e,t]of Object.entries(r))e===`type`||e===`id`||(n[e]=t);e!==void 0&&(n.type=e),t!==void 0&&(n.id=t),n.properties=r}if(typeof n.content==`string`&&(n.content=t.evaluate(n.content)),n.props){let e={...n.props};for(let[n,r]of Object.entries(e))e[n]=t.evaluate(r);n.props=e}return(n.visible===void 0?n.visibleWhen===void 0?n.visibleOn===void 0?n.visibility===void 0?n.hidden===void 0?n.hiddenOn!==void 0&&t.evaluateCondition(n.hiddenOn):t.evaluateCondition(n.hidden):!t.evaluateCondition(n.visibility):!t.evaluateCondition(n.visibleOn):!t.evaluateCondition(n.visibleWhen):!t.evaluateCondition(n.visible))&&(n._hidden=!0),(n.disabled===void 0?n.disabledOn!==void 0&&t.evaluateCondition(n.disabledOn):t.evaluateCondition(n.disabled))&&(n._disabled=!0),n},[e,i,a,o]);if(!f||f?._hidden)return null;if(typeof f==`string`)return(0,q.jsx)(q.Fragment,{children:f});let p=Pn?In(e):{valid:!0,messages:[]};st(`schema`,`Rendering schema node`,{type:f.type,id:f.id});let m=c.get(f.type);if(!m){if(!l&&c.hasLazy(f.type)){let e=c.loadLazy(f.type);if(e)return e.catch(e=>{u(e instanceof Error?e:Error(String(e)))}),(0,q.jsxs)(`div`,{className:`p-2 text-sm text-muted-foreground animate-pulse`,role:`status`,"aria-live":`polite`,"data-lazy-loading":f.type,children:[`Loading `,(0,q.jsx)(`code`,{children:f.type}),`…`]})}return st(`schema`,`Component not found in registry`,{type:f.type}),rt[`OBJUI-001`],(0,q.jsxs)(`div`,{className:`p-4 border border-red-500 rounded text-red-500 bg-red-50 my-2`,role:`alert`,children:[(0,q.jsxs)(`p`,{className:`font-medium`,children:[`Unknown component type: `,(0,q.jsx)(`strong`,{children:f.type})]}),l&&(0,q.jsxs)(`p`,{className:`text-xs mt-1`,children:[`Failed to load plugin: `,l.message]}),!1,(0,q.jsx)(`pre`,{className:`text-xs mt-2 overflow-auto`,children:JSON.stringify(f,null,2)})]})}let{type:h,children:g,body:_,schema:v,visible:y,visibleWhen:ee,visibleOn:te,visibility:ne,hidden:re,hiddenOn:ie,disabled:ae,disabledOn:oe,_hidden:se,_disabled:b,responsiveStyles:x,...ce}=f,S=ht(x),C=S?gt(f.id??d):``,w=S?_t(`.${C}`,x):``,T=C?[f.className,C].filter(Boolean).join(` `):f.className,E=C?{...f,className:T}:f,le=Ln(f),D=r?.debug||r?.debugFlags?.enabled,O={};D&&(O[`data-debug-type`]=f.type,f.id&&(O[`data-debug-id`]=f.id)),ct(`render:${f.type}:${f.id??`anon`}`);let ue=D?performance.now():0,de=(0,q.jsxs)(Rn,{componentType:f.type,resetKey:f.id??null,children:[w?(0,q.jsx)(`style`,{"data-os-scope":C,dangerouslySetInnerHTML:{__html:w}}):null,K.createElement(m,{schema:E,...ce,...f.props||{},...le,...O,disabled:b||void 0,className:T,"data-obj-id":f.id,"data-obj-type":f.type,...Pn&&!p.valid?{"data-obj-schema-invalid":`true`}:{},...t})]});if(lt(`render:${f.type}:${f.id??`anon`}`),D&&ue){let e=performance.now()-ue;dt.getInstance().addPerf({type:f.type,id:f.id,durationMs:e,timestamp:Date.now()})}return de});zn.displayName=`SchemaRenderer`;function Bn(e={}){let{context:t={},onConfirm:n,onToast:r,onModal:i,onNavigate:a,onParamCollection:o,onResultDialog:s}=`context`in e?e:{context:e},[c,l]=(0,K.useState)(!1),[u,d]=(0,K.useState)(null),[f,p]=(0,K.useState)(null),m=(0,K.useMemo)(()=>{let e=new M(t);return n&&e.setConfirmHandler(n),r&&e.setToastHandler(r),i&&e.setModalHandler(i),a&&e.setNavigationHandler(a),o&&e.setParamCollectionHandler(o),s&&e.setResultDialogHandler(s),e},[JSON.stringify(t)]);return{execute:(0,K.useCallback)(async e=>{l(!0),d(null),p(null);try{let t=await m.execute(e);return p(t),t.success||d(t.error||`Action failed`),t}catch(e){let t=e.message;d(t);let n={success:!1,error:t};return p(n),n}finally{l(!1)}},[m]),loading:c,error:u,result:f,updateContext:(0,K.useCallback)(e=>{m.updateContext(e)},[m]),runner:m}}function Vn(e){let{navigation:t,objectName:n,onNavigate:r,onRowClick:i}=e,[a,o]=(0,K.useState)(!1),[s,c]=(0,K.useState)(null),l=t?.mode??`page`,u=t?.width,d=t?.view,f=l===`drawer`||l===`modal`||l===`split`||l===`popover`,p=(0,K.useCallback)(()=>{o(!1),c(null)},[]),m=(0,K.useCallback)(e=>{c(e),o(!0)},[]),h=(0,K.useCallback)((e,a)=>{if(i){i(e,a);return}if(a&&(a.metaKey||a.ctrlKey||a.button===1)){let t=e.id||e._id;if(r&&t!=null){r(t,`new_window`);return}}if(!t){let t=e.id||e._id;r&&t!=null&&r(t,d??`view`);return}if(!(l===`none`||t.preventNavigation)){if(l===`new_window`||t.openNewTab){let t=e.id||e._id;if(r&&t!=null){r(t,`new_window`);return}let i=encodeURIComponent(String(t)),a=n?`/${n}/record/${i}`:`/${i}`;window.open(a,`_blank`);return}if(l===`page`){let t=e.id||e._id;r&&t!=null&&r(t,d??`view`);return}if(f){c(e),o(!0);return}}},[i,t,l,n,r,f,d]);return(0,K.useMemo)(()=>({isOpen:a,selectedRecord:s,mode:l,close:p,open:m,setIsOpen:o,handleClick:h,width:u,view:d,isOverlay:f}),[a,s,l,p,m,h,u,d,f])}var Hn=(0,K.createContext)(!1),Un=({value:e=!0,children:t})=>(0,q.jsx)(Hn.Provider,{value:e,children:t}),Wn=()=>(0,K.useContext)(Hn),Q=(0,K.createContext)(null),Gn=({children:e,context:t={},onConfirm:n,onToast:r,onModal:i,onNavigate:a,onParamCollection:o,onResultDialog:s,handlers:c})=>{let[l,u]=(0,K.useState)(!1),[d,f]=(0,K.useState)(null),[p,m]=(0,K.useState)(null),h=(0,K.useMemo)(()=>{let e=new M({...t,ctx:t&&typeof t.ctx==`object`?{...t,...t.ctx}:{...t}});return n&&e.setConfirmHandler(n),r&&e.setToastHandler(r),i&&e.setModalHandler(i),a&&e.setNavigationHandler(a),o&&e.setParamCollectionHandler(o),s&&e.setResultDialogHandler(s),c&&Object.entries(c).forEach(([t,n])=>{e.registerHandler(t,n)}),e},[JSON.stringify(t)]),g=(0,K.useCallback)(async e=>{u(!0),f(null),m(null);try{let t=await h.execute(e);return m(t),t.success||f(t.error||`Action failed`),t}catch(e){let t=e.message;f(t);let n={success:!1,error:t};return m(n),n}finally{u(!1)}},[h]),_=(0,K.useCallback)(async(e,t)=>{u(!0),f(null),m(null);try{let n=await h.executeChain(e,t);return m(n),n.success||f(n.error||`Chain failed`),n}catch(e){let t=e.message;f(t);let n={success:!1,error:t};return m(n),n}finally{u(!1)}},[h]),v=(0,K.useCallback)(e=>{h.updateContext(e)},[h]),y=(0,K.useMemo)(()=>({execute:g,executeChain:_,loading:l,error:d,result:p,runner:h,updateContext:v}),[g,_,l,d,p,h,v]);return(0,q.jsx)(Q.Provider,{value:y,children:e})};Gn.displayName=`ActionProvider`;function Kn(){let e=(0,K.useContext)(Q);if(!e){let e=new M;return{execute:t=>e.execute(t),executeChain:(t,n)=>e.executeChain(t,n),loading:!1,error:null,result:null,runner:e,updateContext:t=>e.updateContext(t)}}return e}function qn(){return(0,K.useContext)(Q)!==null}(0,K.createContext)(null);var Jn=0,Yn=(0,K.createContext)(null),Xn=({children:e,config:t={},onToast:n})=>{let r=(0,K.useMemo)(()=>({position:`top-right`,defaultDuration:5e3,maxVisible:5,stacking:!0,...t}),[JSON.stringify(t)]),[i,a]=(0,K.useState)([]),o=(0,K.useCallback)(e=>{let t=`notification-${++Jn}`,i={...e,id:t,createdAt:new Date,read:!1};a(e=>[i,...e]),n&&n(i);let o=e.duration??r.defaultDuration??5e3;return o>0&&setTimeout(()=>{a(e=>e.filter(e=>e.id!==t))},o),t},[r.defaultDuration,n]),s=(0,K.useCallback)((e,t)=>o({title:e,message:t,severity:`info`}),[o]),c=(0,K.useCallback)((e,t)=>o({title:e,message:t,severity:`success`}),[o]),l=(0,K.useCallback)((e,t)=>o({title:e,message:t,severity:`warning`}),[o]),u=(0,K.useCallback)((e,t)=>o({title:e,message:t,severity:`error`}),[o]),d=(0,K.useCallback)(e=>{a(t=>t.map(t=>t.id===e?{...t,read:!0}:t))},[]),f=(0,K.useCallback)(()=>{a(e=>e.map(e=>({...e,read:!0})))},[]),p=(0,K.useCallback)(e=>{a(t=>t.filter(t=>t.id!==e))},[]),m=(0,K.useCallback)(()=>{a([])},[]),h=(0,K.useMemo)(()=>i.filter(e=>!e.read).length,[i]),g=(0,K.useMemo)(()=>({notifications:i,unreadCount:h,notify:o,info:s,success:c,warning:l,error:u,markAsRead:d,markAllAsRead:f,dismiss:p,clearAll:m,config:r}),[i,h,o,s,c,l,u,d,f,p,m,r]);return(0,q.jsx)(Yn.Provider,{value:g,children:e})};Xn.displayName=`NotificationProvider`;var Zn=(0,K.createContext)(null),Qn=({children:e,config:t={},onDragStart:n,onDrop:r,onDragCancel:i})=>{let a=(0,K.useMemo)(()=>({enabled:!0,showPreview:!0,autoScroll:!0,...t}),[JSON.stringify(t)]),[o,s]=(0,K.useState)(null),[c]=(0,K.useState)(()=>new Map),l=(0,K.useCallback)(e=>{a.enabled&&(s(e),n?.({item:e,targetZoneId:null,effect:`move`}))},[a.enabled,n]),u=(0,K.useCallback)(e=>{if(!o)return;let t=(e?c.get(e):void 0)?.effect??`move`;r?.({item:o,targetZoneId:e??null,effect:t}),s(null)},[o,c,r]),d=(0,K.useCallback)(()=>{o&&(i?.({item:o,targetZoneId:null,effect:`none`}),s(null))},[o,i]),f=(0,K.useCallback)(e=>{c.set(e.id,e)},[c]),p=(0,K.useCallback)(e=>{c.delete(e)},[c]),m=(0,K.useCallback)((e,t)=>{let n=c.get(e);return!n||n.disabled?!1:n.acceptTypes.includes(t)},[c]),h=(0,K.useMemo)(()=>({config:a,enabled:a.enabled??!0,activeItem:o,dropZones:c,startDrag:l,endDrag:u,cancelDrag:d,registerDropZone:f,unregisterDropZone:p,canDrop:m}),[a,o,c,l,u,d,f,p,m]);return(0,q.jsx)(Zn.Provider,{value:h,children:e})};Qn.displayName=`DndProvider`;function $n(){let e=(0,K.useContext)(Zn);if(!e)throw Error(`useDnd must be used within a <DndProvider>. Wrap your app with <DndProvider> to use the drag and drop system.`);return e}function er(){return(0,K.useContext)(Zn)!==null}var tr=(0,K.createContext)(null);function nr(){return(0,K.useContext)(tr)}var rr=(0,K.createContext)(null);function ir(){return(0,K.useContext)(rr)||{apps:[],objects:[],dashboards:[],reports:[],pages:[],loading:!1,error:null,refresh:async()=>{},invalidate:()=>{},ensureType:async()=>[],getItem:async()=>null,getItemsByType:()=>[],getTypeStatus:()=>`ready`}}function ar(e,t){let{getItem:n}=ir(),[r,i]=(0,K.useState)({item:null,loading:!!t,error:null});return(0,K.useEffect)(()=>{if(!t){i({item:null,loading:!1,error:null});return}let r=!1;return i(e=>({...e,loading:!0,error:null})),n(e,t).then(e=>{r||i({item:e,loading:!1,error:null})}).catch(e=>{r||i({item:null,loading:!1,error:e instanceof Error?e:Error(String(e))})}),()=>{r=!0}},[e,t,n]),r}var or=K.createContext(null),sr=({children:e})=>{let t=K.useMemo(()=>{let e=new Map,t=fr,n=new Set,r=()=>{let r=new Set;for(let t of e.values())for(let e of t)r.add(e);if(r.size===t.size){let e=!0;for(let n of r)if(!t.has(n)){e=!1;break}if(e)return}t=r,n.forEach(e=>e())};return{getNames:()=>t,subscribe:e=>(n.add(e),()=>{n.delete(e)}),register:(t,n)=>{let i=e.get(t);i&&i.length===n.length&&i.every((e,t)=>e===n[t])||(e.set(t,[...n]),r())},unregister:t=>{e.delete(t)&&r()}}},[]);return(0,q.jsx)(or.Provider,{value:t,children:e})};function cr(){let e=K.useContext(or);return K.useSyncExternalStore(e?e.subscribe:ur,e?e.getNames:dr,e?e.getNames:dr)}function lr(e,t){let n=K.useContext(or),r=t.join(`|`);K.useEffect(()=>{if(n)return n.register(e,r.length===0?[]:r.split(`|`)),()=>n.unregister(e)},[n,e,r])}var ur=e=>()=>{},dr=()=>fr,fr=new Set,pr=K.createContext(null),mr=({children:e,...t})=>{let n=K.useMemo(()=>t,[t.objectName,t.recordId,t.dataSource,t.data,t.objectSchema,t.loading,t.error,t.refresh,t.embedded,t.headerSystemActions,t.isFavorite,t.onToggleFavorite]);return(0,q.jsx)(pr.Provider,{value:n,children:e})};function hr(){return K.useContext(pr)}var gr=K.createContext(null),_r=({canEdit:e=!0,locked:t=!1,lockedReason:n,children:r})=>{let[i,a]=K.useState(!1),[o,s]=K.useState({}),[c,l]=K.useState(null),[u,d]=K.useState(!1),[f,p]=K.useState(null),m=K.useCallback(t=>{e&&(l(t??null),a(!0),p(null))},[e]),h=K.useCallback((e,t)=>{s(n=>({...n,[e]:t}))},[]),g=K.useCallback(()=>{s({}),a(!1),l(null),d(!1),p(null)},[]),_=K.useMemo(()=>({editing:i,canEdit:e,locked:t,lockedReason:n,draft:o,autoFocusField:c,saving:u,error:f,enter:m,setField:h,cancel:g,reset:g,setSaving:d,setError:p}),[i,e,t,n,o,c,u,f,m,h,g]);return(0,q.jsx)(gr.Provider,{value:_,children:r})};function vr(){return K.useContext(gr)}var yr=K.createContext(null),br=({children:e,...t})=>{let n=K.useMemo(()=>t,[t.items,t.onAddComment,t.onAddReply,t.onToggleReaction,t.mentionSuggestions,t.onUploadAttachments,t.loading,t.error]);return(0,q.jsx)(yr.Provider,{value:n,children:e})};function xr(){return K.useContext(yr)}var Sr=(0,K.createContext)({}),Cr=({value:e,children:t})=>(0,q.jsx)(Sr.Provider,{value:e,children:t});function wr(){return(0,K.useContext)(Sr)}var Tr=(0,K.createContext)(null),Er=({value:e,children:t})=>(0,q.jsx)(Tr.Provider,{value:e,children:t});function Dr(){return(0,K.useContext)(Tr)}function Or(){let{variables:e}=X(),{updateContext:t}=Kn();return K.useEffect(()=>(t({pageVariables:e}),()=>{t({pageVariables:{}})}),[e,t]),null}Or.displayName=`PageVariableActionBridge`;function kr(e){return!e||!(e.enabled===!1||e.handlerReady===!1||e.status===`stub`||e.status===`unavailable`)}[`a[href]`,`button:not([disabled])`,`input:not([disabled])`,`select:not([disabled])`,`textarea:not([disabled])`,`[tabindex]:not([tabindex="-1"])`].join(`, `);var Ar={compact:32,comfortable:40,spacious:52},jr={compact:`py-1 px-2`,comfortable:`py-2 px-3`,spacious:`py-3 px-4`},Mr={compact:`text-xs`,comfortable:`text-sm`,spacious:`text-base`},Nr=[`compact`,`comfortable`,`spacious`];function Pr(e=`comfortable`,t){let[n,r]=(0,K.useState)(e),i=t?.rowHeights??Ar,a=t?.paddingClasses??jr,o=t?.fontSizeClasses??Mr,s=(0,K.useRef)(t?.onChange);(0,K.useEffect)(()=>{s.current=t?.onChange},[t?.onChange]);let c=(0,K.useRef)(e);(0,K.useEffect)(()=>{e!==c.current&&(c.current=e,r(e))},[e]);let l=(0,K.useCallback)(e=>{r(t=>t===e?t:(queueMicrotask(()=>s.current?.(e)),e))},[]),u=(0,K.useCallback)(()=>{r(e=>{let t=Nr[(Nr.indexOf(e)+1)%Nr.length];return queueMicrotask(()=>s.current?.(t)),t})},[]);return(0,K.useMemo)(()=>({mode:n,setMode:l,cycle:u,rowHeight:i[n],paddingClass:a[n],fontSizeClass:o[n]}),[n,l,u,i,a,o])}function Fr(e){return typeof window>`u`?()=>{}:(window.addEventListener(`online`,e),window.addEventListener(`offline`,e),()=>{window.removeEventListener(`online`,e),window.removeEventListener(`offline`,e)})}function Ir(){return typeof navigator<`u`?navigator.onLine:!0}function Lr(){return!0}var Rr=`objectui-offline-queue`;function zr(){if(typeof localStorage>`u`)return[];try{let e=localStorage.getItem(Rr);return e?JSON.parse(e):[]}catch{return[]}}function Br(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(Rr,JSON.stringify(e))}catch{}}var Vr=0;function Hr(){return Vr+=1,`mut_${Date.now()}_${Vr}`}var $={enabled:!0,strategy:`network_first`,offlineIndicator:!0,offlineMessage:`You are currently offline. Changes will be synced when reconnected.`,queueMaxSize:100};function Ur(e={}){let{enabled:t=$.enabled,strategy:n=$.strategy,offlineIndicator:r=$.offlineIndicator,offlineMessage:i=$.offlineMessage,queueMaxSize:a=$.queueMaxSize,sync:o}=e,s=(0,K.useSyncExternalStore)(Fr,Ir,Lr),[c,l]=(0,K.useState)(zr),[u,d]=(0,K.useState)(`idle`),f=(0,K.useRef)(o);f.current=o,(0,K.useEffect)(()=>{Br(c)},[c]),(0,K.useEffect)(()=>{t&&(s?u===`offline`&&d(`idle`):d(`offline`))},[s,t,u]);let p=(0,K.useCallback)(e=>{t&&l(t=>{let n={...e,id:Hr(),timestamp:Date.now()},r=[...t,n];return r.length>a?r.slice(r.length-a):r})},[t,a]),m=(0,K.useCallback)(()=>{l([])},[]),h=(0,K.useCallback)(async()=>{if(!(!t||c.length===0)){d(`syncing`);try{let e=f.current?.batchSize??c.length,t=c.slice(0,e);await new Promise(e=>setTimeout(e,0)),l(e=>e.filter(e=>!t.some(t=>t.id===e.id))),d(`idle`)}catch{d(`error`)}}},[t,c]);return(0,K.useEffect)(()=>{if(!t||!s||c.length===0)return;let e=setTimeout(()=>{h()},100);return()=>clearTimeout(e)},[s,t]),(0,K.useMemo)(()=>({isOnline:s,enabled:t,syncState:u,strategy:n,pendingCount:c.length,queueMutation:p,sync:h,clearQueue:m,showIndicator:r&&!s,offlineMessage:i}),[s,t,u,n,c.length,p,h,m,r,i])}function Wr(){return{canUndo:j.canUndo,canRedo:j.canRedo,undoDescription:j.peekUndo()?.description,redoDescription:j.peekRedo()?.description,history:j.getHistory()}}function Gr(){return{canUndo:!1,canRedo:!1,undoDescription:void 0,redoDescription:void 0,history:[]}}var Kr=Wr();function qr(e){return j.subscribe(()=>{Kr=Wr(),e()})}function Jr(){return Kr}function Yr(e={}){let t=(0,K.useRef)(e);t.current=e;let n=(0,K.useSyncExternalStore)(qr,Jr,Gr),r=(0,K.useCallback)(async(e,n,r)=>{let i=t.current.dataSource;if(!i)return;let a=r===`undo`?{create:`delete`,update:`update`,delete:`create`}[e.type]:e.type;a===`delete`?await i.delete(e.objectName,e.recordId):a===`update`?await i.update(e.objectName,e.recordId,n):await i.create(e.objectName,n)},[]),i=(0,K.useCallback)(async()=>{let e=j.popUndo();e&&(await r(e,e.undoData,`undo`),t.current.onUndo?.(e))},[r]),a=(0,K.useCallback)(async()=>{let e=j.popRedo();e&&(await r(e,e.redoData,`redo`),t.current.onRedo?.(e))},[r]);return(0,K.useEffect)(()=>{let e=e=>{!(e.ctrlKey||e.metaKey)||e.key.toLowerCase()!==`z`||(e.preventDefault(),e.shiftKey?a():i())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[i,a]),(0,K.useMemo)(()=>({...n,undo:i,redo:a}),[n,i,a])}function Xr(e={}){let{actions:t=[],context:n={}}=e,r=(0,K.useContext)(Q)?.runner??null,i=(0,K.useMemo)(()=>{let e=n&&Object.keys(n).length>0?{...n,ctx:n.ctx&&typeof n.ctx==`object`?{...n,...n.ctx}:{...n}}:n,i=r?new He(r):new He(e);if(r&&n&&Object.keys(n).length>0){let e=i.getRunner(),t=e.getEvaluator().getContext().toObject(),r=t&&typeof t.ctx==`object`?t.ctx:{},a=n.ctx&&typeof n.ctx==`object`?n.ctx:n,o={...n,ctx:{...r,...a}};e.updateContext(o)}return i.registerActions(t),i},[r,JSON.stringify(t),JSON.stringify(n)]);return{getActionsForLocation:(0,K.useCallback)(e=>i.getActionsForLocation(e),[i]),getBulkActions:(0,K.useCallback)(()=>i.getBulkActions(),[i]),executeAction:(0,K.useCallback)((e,t)=>i.executeAction(e,t),[i]),handleShortcut:(0,K.useCallback)(e=>i.handleShortcut(e),[i]),engine:i}}function Zr(e,t){return!0}function Qr(e,t={}){let n=ir(),[r,i]=(0,K.useState)(!1),[a,o]=(0,K.useState)(null);(0,K.useEffect)(()=>{let e=!1;if(!n.ensureType){i(!0);return}return n.ensureType(`page`).then(()=>{e||(i(!0),o(null))}).catch(t=>{e||(o(t instanceof Error?t:Error(String(t))),i(!0))}),()=>{e=!0}},[n]);let s=(0,K.useMemo)(()=>{if(!e&&!t.pageName)return null;let r=Array.isArray(n.pages)?n.pages:[];if(!r.length)return null;if(t.pageName)return r.find(e=>e?.name===t.pageName)??null;let i=r.filter(n=>!n||(n.pageType??(n.type===`record`?`record`:void 0))!==`record`||n.object!==e?!1:Zr(n,t));return i.length?(i.sort((e,t)=>(t?.priority??0)-(e?.priority??0)),i[0]):null},[n.pages,e,t.pageName,t.recordType,t.profile,t.app,t.formFactor]),{page:c,slots:l}=(0,K.useMemo)(()=>s?s.kind===`slotted`?{page:null,slots:s.slots??{}}:{page:s,slots:null}:{page:null,slots:null},[s]);return{page:c,slots:l,loading:n.loading||!r,error:a??n.error??null}}function $r(e,t,n){if(!e)return 0;let r=e.toLowerCase(),i=(t||``).toLowerCase();return(n||``).toLowerCase()===r?110:i===r?100:i.startsWith(r)?80:i.split(/[\s_\-/.,:;()[\]]+/).filter(Boolean).some(e=>e.startsWith(r))?60:i.includes(r)?40:0}function ei(e){let{query:t,objects:n,dataSource:r,objectNames:i,maxObjectsQueried:a=8,topPerObject:o=3,minLength:s=2,debounceMs:c=250,enabled:l=!0,getDisplayName:u=mn}=e,[d,f]=(0,K.useState)([]),[p,m]=(0,K.useState)(!1),[h,g]=(0,K.useState)(void 0),_=(0,K.useMemo)(()=>{if(!Array.isArray(n)||n.length===0)return[];let e;if(Array.isArray(i)&&i.length>0){let t=new Map;for(let e of n){let n=e?.name;typeof n==`string`&&t.set(n,e)}e=i.map(e=>t.get(e)).filter(e=>e!=null)}else e=n.filter(e=>e?.searchable!==!1);return e.slice(0,a)},[n,i,a]),v=(0,K.useMemo)(()=>_.map(e=>`${e?.name}:${e?.titleField??``}`).join(`|`),[_]),y=(0,K.useRef)(0);return(0,K.useEffect)(()=>{if(!l||!r||_.length===0){f([]),m(!1),g(void 0);return}let e=(t??``).trim();if(e.length<s){f([]),m(!1),g(void 0);return}let n=++y.current;m(!0),g(void 0);let i=setTimeout(()=>{if(y.current!==n)return;let t=_.map(t=>Promise.resolve().then(()=>r.find(t.name,{$search:e,$top:o})).then(e=>({obj:t,res:e,err:null})).catch(e=>({obj:t,res:null,err:e})));Promise.allSettled(t).then(t=>{if(y.current!==n)return;let r=[],i;for(let n of t){if(n.status!==`fulfilled`)continue;let{obj:t,res:a,err:s}=n.value;if(s){let e=s?.httpStatus??s?.status,t=s?.code;if(e===404||t===`object_not_found`)continue;i=s instanceof Error?s:Error(String(s));continue}let c=Array.isArray(a?.data)?a.data:Array.isArray(a)?a:[];for(let n of c.slice(0,o)){let i=n?.id??n?._id;if(i==null)continue;let a=u(t,n);r.push({objectName:t.name,objectLabel:typeof t.label==`string`&&t.label.length>0?t.label:t.name,recordId:String(i),display:a,icon:t?.icon,score:$r(e,a,String(i)),raw:n})}}r.sort((e,t)=>t.score-e.score),f(r),m(!1),g(i)})},c);return()=>{clearTimeout(i)}},[t,l,r,v,o,s,c,u]),{results:d,isSearching:p,error:h}}var ti=new Set,ni=`objectui:related-changed`;function ri(e){for(let t of Array.from(ti))try{t(e)}catch{}typeof window<`u`&&window.dispatchEvent(new CustomEvent(ni,{detail:{objectName:e.objectName,recordId:e.recordId}}))}function ii(e){return ti.add(e),()=>ti.delete(e)}function ai(e,t,n){return e.objectName===`*`?!0:e.objectName===t?n===void 0||e.recordId===void 0||e.recordId===n:!1}function oi(e,t){let[n,r]=(0,K.useState)(0);return(0,K.useEffect)(()=>{if(e)return ii(n=>{ai(n,e,t)&&r(e=>e+1)})},[e,t]),n}function si(e){(0,K.useEffect)(()=>{let t=e;if(t?.onMutation)return t.onMutation(e=>{e?.resource&&ri({objectName:e.resource,recordId:e.id==null?void 0:String(e.id)})})},[e])}function ci(...e){for(let t of e)if(typeof t==`string`&&t.trim())return t;return null}function li(e){let t=e,n=t&&typeof t==`object`?ci(t.details?.error,t.details?.message,t.error):null;if(!n){let r=e instanceof Error?e.message:typeof e==`string`?e:typeof t?.message==`string`?t.message:``,i=r.indexOf(`{`);if(i>=0)try{let e=JSON.parse(r.slice(i));n=ci(e?.error,e?.message)}catch{}!n&&r.trim()&&(n=r)}return n&&n.replace(/^\[[^\]]+\]\s*/,``).replace(/^[A-Z][A-Z0-9_]+:\s*/,``).trim()||null}function ui(e){let t=e;if(!t||typeof t!=`object`)return!1;if((t.httpStatus??t.status??t.statusCode)===403)return!0;let n=ci(t.code,t.details?.code)??``;if(n===`PERMISSION_DENIED`||n===`FORBIDDEN`)return!0;let r=`${typeof t.message==`string`?t.message:``} ${t.details?.error??t.error??``}`;return/row-level security|access denied|permission denied|not permitted/i.test(r)}var di=n(((t,n)=>{var r=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,s=(e,t)=>{for(var n in t)r(e,n,{get:t[n],enumerable:!0})},c=(e,t,n,s)=>{if(t&&typeof t==`object`||typeof t==`function`)for(let c of a(t))!o.call(e,c)&&c!==n&&r(e,c,{get:()=>t[c],enumerable:!(s=i(t,c))||s.enumerable});return e},l=e=>c(r({},`__esModule`,{value:!0}),e),u={};s(u,{ObjectLogger:()=>g,createLogger:()=>_}),n.exports=l(u);var d={debug:0,info:1,warn:2,error:3,fatal:4,silent:5},f={debug:`\x1B[36m`,info:`\x1B[32m`,warn:`\x1B[33m`,error:`\x1B[31m`,fatal:`\x1B[35m`,silent:``},p=`\x1B[0m`;function m(e){if(typeof process<`u`){let e={}.NO_COLOR;if(e!==void 0&&e!==``)return!1}return!!e?.isTTY}function h(t){if(typeof process>`u`)return;let n=process.getBuiltinModule;if(typeof n==`function`)try{return n.call(process,`node:${t}`)}catch{return}try{return e(t)}catch{return}}var g=class e{constructor(e={},t={}){this.ownsFileStream=!1,this.fileLoggingDisabled=!1,this.config={name:e.name,level:e.level??`info`,format:e.format??`pretty`,redact:e.redact??[`password`,`token`,`secret`,`key`],sourceLocation:e.sourceLocation??!1,file:e.file,rotation:e.rotation??{maxSize:`10m`,maxFiles:5}},this.bindings=t,this.config.file&&typeof process<`u`&&this.openFileStream(this.config.file)}openFileStream(e){let t=h(`fs`),n=h(`path`);if(!t||!n){this.disableFileLogging(e,`no filesystem access in this runtime`);return}try{t.mkdirSync(n.dirname(e),{recursive:!0});let r=t.createWriteStream(e,{flags:`a`});r.on(`error`,t=>this.disableFileLogging(e,t.message)),this.fileStream=r,this.ownsFileStream=!0}catch(t){this.disableFileLogging(e,t.message)}}disableFileLogging(e,t){if(this.fileStream=void 0,this.ownsFileStream=!1,this.fileLoggingDisabled)return;this.fileLoggingDisabled=!0;let n=`${this.config.name?`[${this.config.name}] `:``}logger: file logging disabled \u2014 cannot write to ${e}: ${t}`;typeof process<`u`&&process.stderr?process.stderr.write(n+`
|
|
6
|
-
`):typeof console<`u`&&console.warn(n)}isEnabled(e){return d[e]>=d[this.config.level]}redactSensitive(e){if(!e||typeof e!=`object`)return e;let t=Array.isArray(e)?[...e]:{...e};for(let e in t){let n=e.toLowerCase();this.config.redact.some(e=>n.includes(e.toLowerCase()))?t[e]=`***REDACTED***`:typeof t[e]==`object`&&t[e]!==null&&(t[e]=this.redactSensitive(t[e]))}return t}write(e,t,n,r){if(!this.isEnabled(e))return;let i=this.redactSensitive({...this.bindings,...n,...r?{error:{message:r.message,stack:r.stack}}:{}}),a=Object.keys(i).length>0,o=new Date().toISOString(),s=e===`error`||e===`fatal`,c=typeof process<`u`?process:void 0,l=c?s?c.stderr:c.stdout:void 0,u,d;if(this.config.format===`json`)u=d=JSON.stringify({time:o,level:e,...this.config.name?{name:this.config.name}:{},msg:t,...i});else if(this.config.format===`text`){let n=[o,e.toUpperCase(),t];a&&n.push(JSON.stringify(i)),u=d=n.join(` | `)}else{let n=this.config.name?`[${this.config.name}] `:``,r=`${o} ${e.toUpperCase()}`,s=` ${n}${t}`;a&&(s+=` ${JSON.stringify(i)}`),d=r+s;let c=f[e]||``;u=c&&m(l)?`${c}${r}${p}${s}`:d}l?l.write(u+`
|
|
7
|
-
`):typeof console<`u`&&(e===`error`||e===`fatal`?console.error:e===`warn`?console.warn:e===`debug`?console.debug:console.log)(u),this.fileStream&&this.fileStream.write(d+`
|
|
8
|
-
`)}debug(e,t){this.write(`debug`,e,t)}info(e,t){this.write(`info`,e,t)}warn(e,t){this.write(`warn`,e,t)}error(e,t,n){t instanceof Error?this.write(`error`,e,n,t):this.write(`error`,e,t)}fatal(e,t,n){t instanceof Error?this.write(`fatal`,e,n,t):this.write(`fatal`,e,t)}log(e,...t){this.info(e,t.length>0?{args:t}:void 0)}child(t){let n=new e({...this.config,file:void 0},{...this.bindings,...t});return n.config.file=this.config.file,n.fileStream=this.fileStream,n}withTrace(e,t){return this.child({traceId:e,spanId:t})}async destroy(){let e=this.fileStream;this.fileStream=void 0,!(!e||!this.ownsFileStream)&&(this.ownsFileStream=!1,await new Promise(t=>e.end(t)))}};function _(e){return new g(e)}0&&(n.exports={ObjectLogger:g,createLogger:_})}));export{On as $,ie as $t,rr as A,St as At,Un as B,Ie as Bt,vr as C,zt as Ct,hr as D,Et as Dt,cr as E,V as Et,er as F,P as Ft,Nn as G,Me as Gt,Vn as H,Fe as Ht,Q as I,Ke as It,X as J,xe as Jt,jn as K,Ee as Kt,Gn as L,Ue as Lt,ir as M,ot as Mt,ar as N,nt as Nt,lr as O,Ot,$n as P,tt as Pt,Y as Q,se as Qt,Kn as R,Re as Rt,_r as S,Mt as St,mr as T,Pt as Tt,Bn as U,Ne as Ut,Wn as V,Pe as Vt,zn as W,je as Wt,Tn as X,D as Xt,wn as Y,k as Yt,Dn as Z,O as Zt,Dr as _,qt as _t,ii as a,g as an,_n as at,br as b,Ut as bt,ei as c,mn as ct,Yr as d,Qt as dt,re as en,J as et,Ur as f,Zt as ft,Er as g,Jt as gt,Or as h,Yt as ht,ri as i,y as in,yn as it,nr as j,xt as jt,tr as k,Dt as kt,Qr as l,en as lt,kr as m,Gt as mt,li as n,v as nn,Sn as nt,oi as o,c as on,G as ot,Pr as p,Xt as pt,Mn as q,De as qt,ui as r,ee as rn,xn as rt,si as s,sn as st,di as t,ne as tn,bn as tt,Xr as u,$t as ut,Cr as v,Kt as vt,sr as w,Ft as wt,xr as x,Bt as xt,wr as y,Wt as yt,qn as z,Le as zt};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as e}from"./plugin-chatbot-ChDQ0sZw.js";export{e as Mermaid};
|