@objectstack/console 15.1.1 → 16.0.0-rc.1
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/dist/.objectui-sha +1 -1
- package/dist/assets/{AdapterProvider-BFaddpzn.js → AdapterProvider-DkXaFA1A.js} +1 -1
- package/dist/assets/{AiPendingActionsPage-CvBOdCmI.js → AiPendingActionsPage-C1pkyzWu.js} +1 -1
- package/dist/assets/ApiConsolePage-BCujjvCA.js +1 -0
- package/dist/assets/{AppDocsIndex-BYY7DwDn.js → AppDocsIndex-DwtDfwnR.js} +1 -1
- package/dist/assets/{AppManagementPage-ct829ZDs.js → AppManagementPage-KPrmIA-f.js} +1 -1
- package/dist/assets/ApprovalsInboxPage-DFQUv0F_.js +1 -0
- package/dist/assets/AuditLogPage-BNkFvefV.js +1 -0
- package/dist/assets/ComponentNavView-FTFk3uvC.js +1 -0
- package/dist/assets/{CreateViewDialog-C1plmcyi.js → CreateViewDialog-DTzKynzF.js} +1 -1
- package/dist/assets/DashboardView-Y6nIjjJB.js +1 -0
- package/dist/assets/{DeveloperHubPage-Cv1WYOxY.js → DeveloperHubPage-CYPM3AvL.js} +1 -1
- package/dist/assets/{DocShell-CLtiW77i.js → DocShell-DnXj6ocC.js} +1 -1
- package/dist/assets/{ExpressionProvider-E8d0a2zy.js → ExpressionProvider-BrbZIz2M.js} +1 -1
- package/dist/assets/FlowRunsPage-BAbmqrqx.js +1 -0
- package/dist/assets/{IntegrationsPage-3Mmj9WPX.js → IntegrationsPage-CyD9iolE.js} +2 -2
- package/dist/assets/InterfaceListPage-DdaX7c_c.js +1 -0
- package/dist/assets/ManagedByBadge-DbYycO1m.js +1 -0
- package/dist/assets/{MarketplaceAccessDenied-BBrk9Zzt.js → MarketplaceAccessDenied-Csr3Jh7C.js} +1 -1
- package/dist/assets/{MarketplaceInstalledPage-Baul16n9.js → MarketplaceInstalledPage-BtD9NMRl.js} +1 -1
- package/dist/assets/MarketplacePackagePage-DHrjr3jY.js +4 -0
- package/dist/assets/{MarketplacePage-CIiUcu2P.js → MarketplacePage-Dw2yHsdE.js} +1 -1
- package/dist/assets/{MetadataInspector-Ty_bVFlI.js → MetadataInspector-C6pU5_lx.js} +1 -1
- package/dist/assets/{MetadataProvider-Dw6hFBw2.js → MetadataProvider-BnfG1pyl.js} +1 -1
- package/dist/assets/ObjectDataPage-BA93ldBf.js +1 -0
- package/dist/assets/PageView-jtsz_IPE.js +1 -0
- package/dist/assets/ProfilePage-BhlwjGUP.js +1 -0
- package/dist/assets/{PublicFormsPage-DIXBuC2U.js → PublicFormsPage-D5kg7qJa.js} +1 -1
- package/dist/assets/RecordDetailView-F0k3QMTV.js +9 -0
- package/dist/assets/RecordFormPage-BRDfPdPg.js +1 -0
- package/dist/assets/ReportDefaultInspector-CYCJDOVb.js +3 -0
- package/dist/assets/ReportView-Dtz9IJbH.js +2 -0
- package/dist/assets/{SearchResultsPage-BXtahiUa.js → SearchResultsPage-0pCQZ9_u.js} +1 -1
- package/dist/assets/{SettingsHub-Cbb36Ak1.js → SettingsHub-DqS8nfs-.js} +1 -1
- package/dist/assets/{SettingsView-MqDu9fQ0.js → SettingsView-DHrrHsbU.js} +1 -1
- package/dist/assets/{SystemHubPage-CRlHp6zs.js → SystemHubPage-BWPXrnc9.js} +1 -1
- package/dist/assets/data-adapter-BR5P3Htq.js +9 -0
- package/dist/assets/drillUrlFilters-BL8PeMrH.js +1 -0
- package/dist/assets/framework-brxTxzwx.js +8 -0
- package/dist/assets/getIcon-EzAarNT8.js +1 -0
- package/dist/assets/{highlighted-body-OFNGDK62-CmEyqxRh.js → highlighted-body-OFNGDK62-3tGE6imP.js} +1 -1
- package/dist/assets/i18n-CWIk44wT.js +9 -0
- package/dist/assets/index-D3TWmLHH.css +2 -0
- package/dist/assets/index-LuGaXtX0.js +2 -0
- package/dist/assets/infrastructure-C6pQBkbt.js +3 -0
- package/dist/assets/mermaid-GHXKKRXX-btdeklf1.js +1 -0
- package/dist/assets/metadata-admin-Buf34qxl.js +25 -0
- package/dist/assets/plugin-calendar-Bx_Bsdae.js +1 -0
- package/dist/assets/plugin-charts-DqND8tT3.js +7 -0
- package/dist/assets/plugin-chatbot-DwbSyUax.js +120 -0
- package/dist/assets/plugin-dashboard-D2VhHDxA.js +6 -0
- package/dist/assets/plugin-form-HMQsT2Tp.js +1 -0
- package/dist/assets/plugin-gantt-CMpG3oO4.js +63 -0
- package/dist/assets/plugin-grid-Dz4WW_sQ.js +8 -0
- package/dist/assets/plugin-kanban-fgScBnfP.js +1 -0
- package/dist/assets/plugin-map-zagD7Zuk.js +1 -0
- package/dist/assets/{plugin-markdown-CeSEfSMe.js → plugin-markdown-DtcSX8M_.js} +1 -1
- package/dist/assets/plugin-report-BRs6v5vb.js +59 -0
- package/dist/assets/plugin-timeline-Cl8J9HYj.js +1 -0
- package/dist/assets/plugin-tree-B3zTpUOf.js +1 -0
- package/dist/assets/plugin-view-BDYhOlHx.js +1 -0
- package/dist/assets/plugins-views-Dc4ARhcP.js +4 -0
- package/dist/assets/{skeletons-DGSWW9zt.js → skeletons-CPF9cI6N.js} +1 -1
- package/dist/assets/{src-2Uisncjb.js → src-A4S4Zx5p.js} +1 -1
- package/dist/assets/src-By-rFjBo.js +1 -0
- package/dist/assets/src-CRFYUj2Z.js +19 -0
- package/dist/assets/{types-C7NHW0h6.js → types-CtGENai_.js} +1 -1
- package/dist/assets/ui-components-D1psd5qA.js +72 -0
- package/dist/assets/ui-layout-UgL2qgLW.js +1 -0
- package/dist/assets/{use-book-data-BwZnHc4z.js → use-book-data-CWCLCSUn.js} +1 -1
- package/dist/assets/{useMetadata-IV9x2kG3.js → useMetadata-Byeqylbl.js} +1 -1
- package/dist/assets/useOpenRecordList-BfKYZKMn.js +1 -0
- package/dist/assets/vendor-objectstack-CjHQG7Oa.js +114 -0
- package/dist/index.html +4 -4
- package/package.json +1 -1
- package/dist/assets/ApiConsolePage-BETRFRmt.js +0 -1
- package/dist/assets/ApprovalsInboxPage-CLRfOCfN.js +0 -1
- package/dist/assets/AuditLogPage-DrVbfMwo.js +0 -1
- package/dist/assets/ComponentNavView-BdBCf414.js +0 -1
- package/dist/assets/DashboardView-YwIvqU1F.js +0 -1
- package/dist/assets/FlowRunsPage-Kk2pQjuI.js +0 -1
- package/dist/assets/InterfaceListPage-BEv_Whkh.js +0 -1
- package/dist/assets/ManagedByBadge-h6zYSYEw.js +0 -1
- package/dist/assets/MarketplacePackagePage-C4BoxM9O.js +0 -4
- package/dist/assets/ObjectDataPage-C0VN22jG.js +0 -1
- package/dist/assets/PageView-9Qd343Y8.js +0 -1
- package/dist/assets/ProfilePage-DotFPbJV.js +0 -1
- package/dist/assets/RecordDetailView-WbRO9Qfl.js +0 -2
- package/dist/assets/RecordFormPage-CVM9R6n6.js +0 -1
- package/dist/assets/ReportDefaultInspector-Dfj5Pq4K.js +0 -3
- package/dist/assets/ReportView-BuAo4KRU.js +0 -2
- package/dist/assets/data-adapter-BaT0fWzy.js +0 -9
- package/dist/assets/framework-CavAJOoG.js +0 -6
- package/dist/assets/getIcon-CJv2JJRu.js +0 -1
- package/dist/assets/i18n--Ef6MgVx.js +0 -9
- package/dist/assets/index-DwHOkKSZ.css +0 -2
- package/dist/assets/index-sUYxMYg4.js +0 -2
- package/dist/assets/infrastructure-1EBA2wrr.js +0 -3
- package/dist/assets/mermaid-GHXKKRXX-B608OHDp.js +0 -1
- package/dist/assets/metadata-admin-CaWsYPuu.js +0 -25
- package/dist/assets/plugin-calendar-lTyyzuqa.js +0 -1
- package/dist/assets/plugin-charts-CXDDqZeY.js +0 -7
- package/dist/assets/plugin-chatbot-CGYrsTXi.js +0 -120
- package/dist/assets/plugin-dashboard-oozFEUjN.js +0 -6
- package/dist/assets/plugin-form-Hw4-ReuX.js +0 -1
- package/dist/assets/plugin-gantt-DIrw5DOt.js +0 -102
- package/dist/assets/plugin-grid-QB7O_mff.js +0 -8
- package/dist/assets/plugin-kanban-C3U_tMs4.js +0 -1
- package/dist/assets/plugin-map-Lz3zZGqA.js +0 -1
- package/dist/assets/plugin-report-CMTOJSLw.js +0 -59
- package/dist/assets/plugin-timeline-CKcNCEwi.js +0 -1
- package/dist/assets/plugin-tree-BLG1qg4e.js +0 -1
- package/dist/assets/plugin-view-CwV64XEY.js +0 -1
- package/dist/assets/plugins-views-CoEgR96I.js +0 -4
- package/dist/assets/src-1qbKZhoo.js +0 -1
- package/dist/assets/src-DXuM24AK.js +0 -18
- package/dist/assets/ui-components-CHaxvtjc.js +0 -72
- package/dist/assets/ui-layout-BLgfeXIq.js +0 -1
- package/dist/assets/useOpenRecordList-C75NAaDm.js +0 -1
- package/dist/assets/vendor-objectstack-BTM1m7k5.js +0 -104
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={gte:`>=`,lte:`<=`,gt:`>`,lt:`<`},t={$gte:`gte`,$lte:`lte`,$gt:`gt`,$lt:`lt`};function n(t){let n=[];return t.forEach((t,r)=>{if(t===``)return;let i=/^filter\[([^\]]+)\]\[([a-z]+)\]$/.exec(r);if(i){let r=e[i[2]];r&&n.push([i[1],r,t]);return}let a=/^filter\[([^\]]+)\]$/.exec(r);a&&a[1]&&n.push([a[1],`=`,t])}),n}function r(e){let n=new URLSearchParams;if(!e)return n;for(let[r,i]of Object.entries(e))if(i!=null){if(typeof i==`object`&&!Array.isArray(i)){for(let[e,a]of Object.entries(t)){let t=i[e];t!=null&&n.set(`filter[${r}][${a}]`,String(t))}continue}n.set(`filter[${r}]`,String(i))}return n}function i(e,t){let n=`filter[${t}]`;for(let t of Array.from(e.keys()))(t===n||t.startsWith(`${n}[`))&&e.delete(t);return e}function a(e){let t=[],n=new Map;for(let r of e)n.has(r[0])||(n.set(r[0],[]),t.push(r[0])),n.get(r[0]).push(r);return t.map(e=>{let t=n.get(e),r=t.find(([,e])=>e===`>=`||e===`>`),i=t.find(([,e])=>e===`<`||e===`<=`);return{field:e,text:r||i?`${r?String(r[2]):`…`} → ${i?String(i[2]):`…`}`:`= ${String(t[0][2])}`}})}export{r as i,a as n,n as r,i as t};
|
|
@@ -0,0 +1,8 @@
|
|
|
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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{y as t}from"./vendor-react-BKSb6vFP.js";import{ft as n,ls as r,pt as i}from"./ui-components-D1psd5qA.js";var a=e(t(),1);function o(e){return e.includes(`-`)?e.toLowerCase():e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).replace(/([A-Z]+)([A-Z][a-z])/g,`$1-$2`).toLowerCase()}var s=new Set(i),c=new Map;function l(e){if(!e)return r;let t=c.get(e);if(t)return t;let i=o(e);if(!s.has(i))return c.set(e,r),r;let l=e=>a.createElement(n,{name:i,fallback:r,...e});return l.displayName=`LucideIcon(${e})`,c.set(e,l),l}export{l as t};
|
package/dist/assets/{highlighted-body-OFNGDK62-CmEyqxRh.js → highlighted-body-OFNGDK62-3tGE6imP.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{r as t,y as n}from"./vendor-react-BKSb6vFP.js";import{a as r,o as i,s as a}from"./plugin-chatbot-
|
|
1
|
+
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{r as t,y as n}from"./vendor-react-BKSb6vFP.js";import{a as r,o as i,s as a}from"./plugin-chatbot-DwbSyUax.js";var o=e(n(),1),s=t(),c=({code:e,language:t,raw:n,className:c,startLine:l,lineNumbers:u,...d})=>{let{shikiTheme:f}=(0,o.useContext)(a),p=i(),[m,h]=(0,o.useState)(n);return(0,o.useEffect)(()=>{if(!p){h(n);return}let r=p.highlight({code:e,language:t,themes:f},e=>{h(e)});r&&h(r)},[e,t,f,p,n]),(0,s.jsx)(r,{className:c,language:t,lineNumbers:u,result:m,startLine:l,...d})};export{c as HighlightedCodeBlockBody};
|