@objectstack/console 16.0.0-rc.1 → 16.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/README.md +1 -1
  2. package/dist/.objectui-sha +1 -1
  3. package/dist/assets/{AdapterProvider-DkXaFA1A.js → AdapterProvider-CqW7TSvk.js} +1 -1
  4. package/dist/assets/{AiPendingActionsPage-C1pkyzWu.js → AiPendingActionsPage-C-QNNI9k.js} +1 -1
  5. package/dist/assets/{ApiConsolePage-BCujjvCA.js → ApiConsolePage-DSvjQt5N.js} +1 -1
  6. package/dist/assets/{AppDocsIndex-DwtDfwnR.js → AppDocsIndex-B4Vi3Lmx.js} +1 -1
  7. package/dist/assets/{AppManagementPage-KPrmIA-f.js → AppManagementPage-l7bxl-aE.js} +1 -1
  8. package/dist/assets/{ApprovalsInboxPage-DFQUv0F_.js → ApprovalsInboxPage-BV4PlaEv.js} +1 -1
  9. package/dist/assets/{AuditLogPage-BNkFvefV.js → AuditLogPage-ChJYd7GY.js} +1 -1
  10. package/dist/assets/{ComponentNavView-FTFk3uvC.js → ComponentNavView-C4OkKu2y.js} +1 -1
  11. package/dist/assets/CreateViewDialog-DwpQ8KvO.js +1 -0
  12. package/dist/assets/{DashboardView-Y6nIjjJB.js → DashboardView-CuDS84Jp.js} +1 -1
  13. package/dist/assets/{DeveloperHubPage-CYPM3AvL.js → DeveloperHubPage-CnVzl2hV.js} +1 -1
  14. package/dist/assets/{DocShell-DnXj6ocC.js → DocShell-D83T8iWF.js} +1 -1
  15. package/dist/assets/{ExpressionProvider-BrbZIz2M.js → ExpressionProvider-CyltvbX0.js} +1 -1
  16. package/dist/assets/{FlowRunsPage-BAbmqrqx.js → FlowRunsPage-BE8HeEGL.js} +1 -1
  17. package/dist/assets/{IntegrationsPage-CyD9iolE.js → IntegrationsPage-DI3vZb2A.js} +1 -1
  18. package/dist/assets/{InterfaceListPage-DdaX7c_c.js → InterfaceListPage-BL7sW-SC.js} +1 -1
  19. package/dist/assets/{ManagedByBadge-DbYycO1m.js → ManagedByBadge-D8aPzQJc.js} +1 -1
  20. package/dist/assets/MarketplaceAccessDenied-B00hPOtj.js +1 -0
  21. package/dist/assets/{MarketplaceInstalledPage-BtD9NMRl.js → MarketplaceInstalledPage-BdLyXA35.js} +1 -1
  22. package/dist/assets/{MarketplacePackagePage-DHrjr3jY.js → MarketplacePackagePage-By15SZoJ.js} +1 -1
  23. package/dist/assets/{MarketplacePage-Dw2yHsdE.js → MarketplacePage-BKxIWeT_.js} +1 -1
  24. package/dist/assets/MetadataInspector-CcRGESLn.js +1 -0
  25. package/dist/assets/{MetadataProvider-BnfG1pyl.js → MetadataProvider-CjWp0ChY.js} +1 -1
  26. package/dist/assets/ObjectDataPage-DiQJROyN.js +1 -0
  27. package/dist/assets/{PageView-jtsz_IPE.js → PageView-CJY74CxE.js} +1 -1
  28. package/dist/assets/{ProfilePage-BhlwjGUP.js → ProfilePage-CjxWQMQA.js} +1 -1
  29. package/dist/assets/PublicFormsPage-BVEV96-N.js +1 -0
  30. package/dist/assets/RecordDetailView-DpRJpP6t.js +9 -0
  31. package/dist/assets/{RecordFormPage-BRDfPdPg.js → RecordFormPage-BMs8Sa4p.js} +1 -1
  32. package/dist/assets/ReportDefaultInspector-BpXXGsGu.js +3 -0
  33. package/dist/assets/ReportView-C0fP1MLd.js +2 -0
  34. package/dist/assets/SearchResultsPage-CjSZ416m.js +1 -0
  35. package/dist/assets/{SettingsHub-DqS8nfs-.js → SettingsHub-DhWm94wF.js} +1 -1
  36. package/dist/assets/{SettingsView-DHrrHsbU.js → SettingsView-Dd0B_UlN.js} +1 -1
  37. package/dist/assets/{SystemHubPage-BWPXrnc9.js → SystemHubPage-C5Widsf0.js} +1 -1
  38. package/dist/assets/{useMetadata-Byeqylbl.js → createDerive-DGOUbVlZ.js} +1 -1
  39. package/dist/assets/data-adapter-Dz0aiaG6.js +9 -0
  40. package/dist/assets/framework-BqSgd3ir.js +8 -0
  41. package/dist/assets/{getIcon-EzAarNT8.js → getIcon-BZn0biL3.js} +1 -1
  42. package/dist/assets/{highlighted-body-OFNGDK62-3tGE6imP.js → highlighted-body-OFNGDK62-CDb4f2Sa.js} +1 -1
  43. package/dist/assets/{i18n-CWIk44wT.js → i18n-SjY5NweX.js} +1 -1
  44. package/dist/assets/{index-LuGaXtX0.js → index-CgfL2xiq.js} +1 -1
  45. package/dist/assets/index-De6xiiED.css +2 -0
  46. package/dist/assets/mermaid-GHXKKRXX-CWn_Hnds.js +1 -0
  47. package/dist/assets/metadata-admin-BRw86sJ-.js +25 -0
  48. package/dist/assets/{plugin-calendar-Bx_Bsdae.js → plugin-calendar-C4ZXapZt.js} +1 -1
  49. package/dist/assets/plugin-charts-D5Lb0q0u.js +7 -0
  50. package/dist/assets/plugin-chatbot-dJq9DS4J.js +120 -0
  51. package/dist/assets/{plugin-dashboard-D2VhHDxA.js → plugin-dashboard-Cr7jkjy7.js} +3 -3
  52. package/dist/assets/{plugin-form-HMQsT2Tp.js → plugin-form-D4kHsl47.js} +1 -1
  53. package/dist/assets/{plugin-gantt-CMpG3oO4.js → plugin-gantt-8LuVErg3.js} +2 -2
  54. package/dist/assets/plugin-grid-CDpGckvD.js +8 -0
  55. package/dist/assets/plugin-kanban-Xwny03DA.js +1 -0
  56. package/dist/assets/{plugin-map-zagD7Zuk.js → plugin-map-CVC4XDJz.js} +1 -1
  57. package/dist/assets/{plugin-markdown-DtcSX8M_.js → plugin-markdown-By5yxTCK.js} +1 -1
  58. package/dist/assets/{plugin-report-BRs6v5vb.js → plugin-report-DwvPiTGE.js} +1 -1
  59. package/dist/assets/{plugin-timeline-Cl8J9HYj.js → plugin-timeline-D2Sep4-I.js} +1 -1
  60. package/dist/assets/{plugin-tree-B3zTpUOf.js → plugin-tree-Doah8whm.js} +1 -1
  61. package/dist/assets/plugin-view-DZXBuUS9.js +1 -0
  62. package/dist/assets/plugins-views-BGSw-KmQ.js +4 -0
  63. package/dist/assets/runtime-metadata-persistence-CEZY_PIp.js +1 -0
  64. package/dist/assets/{skeletons-CPF9cI6N.js → skeletons-D0Z3uPzj.js} +1 -1
  65. package/dist/assets/src-DPHY2JFl.js +1 -0
  66. package/dist/assets/src-RHOMTPFk.js +19 -0
  67. package/dist/assets/{src-A4S4Zx5p.js → src-YtGn_UVR.js} +1 -1
  68. package/dist/assets/{types-CtGENai_.js → types-BR_9hYa5.js} +1 -1
  69. package/dist/assets/{ui-components-D1psd5qA.js → ui-components-Ci5ufF7g.js} +11 -11
  70. package/dist/assets/{ui-layout-UgL2qgLW.js → ui-layout-D_8Fal4s.js} +1 -1
  71. package/dist/assets/{use-book-data-CWCLCSUn.js → use-book-data-CV2dCLgr.js} +1 -1
  72. package/dist/assets/{appRoute-C7XNGt8B.js → utils-CFdPTF34.js} +1 -1
  73. package/dist/assets/{vendor-i18n-ByHglwq-.js → vendor-i18n-D2ce6sLS.js} +1 -1
  74. package/dist/assets/vendor-radix-B1fu-dZi.js +46 -0
  75. package/dist/assets/{vendor-sentry-C3ouQ5cr.js → vendor-sentry-BFtl-K03.js} +25 -25
  76. package/dist/index.html +5 -5
  77. package/package.json +4 -4
  78. package/dist/assets/CreateViewDialog-DTzKynzF.js +0 -1
  79. package/dist/assets/MarketplaceAccessDenied-Csr3Jh7C.js +0 -1
  80. package/dist/assets/MetadataInspector-C6pU5_lx.js +0 -1
  81. package/dist/assets/ObjectDataPage-BA93ldBf.js +0 -1
  82. package/dist/assets/PublicFormsPage-D5kg7qJa.js +0 -1
  83. package/dist/assets/RecordDetailView-F0k3QMTV.js +0 -9
  84. package/dist/assets/ReportDefaultInspector-CYCJDOVb.js +0 -3
  85. package/dist/assets/ReportView-Dtz9IJbH.js +0 -2
  86. package/dist/assets/SearchResultsPage-0pCQZ9_u.js +0 -1
  87. package/dist/assets/data-adapter-BR5P3Htq.js +0 -9
  88. package/dist/assets/framework-brxTxzwx.js +0 -8
  89. package/dist/assets/index-D3TWmLHH.css +0 -2
  90. package/dist/assets/mermaid-GHXKKRXX-btdeklf1.js +0 -1
  91. package/dist/assets/metadata-admin-Buf34qxl.js +0 -25
  92. package/dist/assets/plugin-charts-DqND8tT3.js +0 -7
  93. package/dist/assets/plugin-chatbot-DwbSyUax.js +0 -120
  94. package/dist/assets/plugin-grid-Dz4WW_sQ.js +0 -8
  95. package/dist/assets/plugin-kanban-fgScBnfP.js +0 -1
  96. package/dist/assets/plugin-view-BDYhOlHx.js +0 -1
  97. package/dist/assets/plugins-views-Dc4ARhcP.js +0 -4
  98. package/dist/assets/runtime-metadata-persistence-D1KKivGr.js +0 -1
  99. package/dist/assets/src-By-rFjBo.js +0 -1
  100. package/dist/assets/src-CRFYUj2Z.js +0 -19
  101. package/dist/assets/utils-Bxty7IIa.js +0 -1
  102. package/dist/assets/vendor-radix-CWCRv2pn.js +0 -46
@@ -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{n as r}from"./infrastructure-C6pQBkbt.js";import{D as i,It as a,V as o,W as s,et as c,on as l,rn as u,rt as d}from"./framework-brxTxzwx.js";import{p as f}from"./vendor-objectstack-CjHQG7Oa.js";import{Ai as p,Bc as m,Cr as h,Er as g,Fs as _,Gs as v,Gt as y,Jt as b,Ka as x,Ks as S,Kt as C,Mc as w,Or as T,Qn as E,S as D,Sr as O,Tr as k,Ws as A,Xn as j,Xt as M,Y as N,Yt as P,Zt as F,_t as I,an as L,br as R,cr as z,er as ee,g as te,gt as B,ht as ne,lr as V,on as H,or as U,qa as re,qs as ie,qt as ae,s as W,sn as G,sr as K,t as oe,tr as se,ur as q,vt as ce,wr as le,xr as ue,yr as de,zc as J}from"./ui-components-D1psd5qA.js";import{r as Y}from"./vendor-ui-utils-D-WJ115h.js";var X=e(n(),1);function Z(e){try{return typeof window>`u`?!1:new URL(e,window.location.href).origin===window.location.origin}catch{return!1}}function fe(e,t){if(!e)return null;let n=t?.id??t?.recordId??t?._id;if(n==null||n===``)return null;let r=e.replace(/\{(?:id|recordId)\}/g,String(n));return Z(r)?r:null}var Q=t(),$=({label:e,description:t,collapsible:n=!1,collapsed:r=!1,columns:i=1,children:a,className:o,gridClassName:s,showBorder:c})=>{let[l,u]=(0,X.useState)(r),d={1:`grid-cols-1`,2:`grid-cols-1 md:grid-cols-2`,3:`grid-cols-1 md:grid-cols-2 lg:grid-cols-3`,4:`grid-cols-1 md:grid-cols-2 lg:grid-cols-4`},f=()=>{n&&u(!l)},p=c??!!e,m=e||t?(0,Q.jsxs)(`div`,{className:w(`flex items-start gap-2`,!p&&`mb-4`,n&&`cursor-pointer select-none`),onClick:f,role:n?`button`:void 0,"aria-expanded":n?!l:void 0,children:[n&&(0,Q.jsx)(`span`,{className:`mt-0.5 text-muted-foreground`,children:l?(0,Q.jsx)(A,{className:`h-4 w-4`}):(0,Q.jsx)(v,{className:`h-4 w-4`})}),(0,Q.jsxs)(`div`,{className:`flex-1`,children:[e&&(0,Q.jsx)(`h3`,{className:`text-sm font-semibold text-foreground`,children:e}),t&&(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground mt-0.5`,children:t})]})]}):null,h=l?null:(0,Q.jsx)(`div`,{className:w(`grid gap-4`,s||d[i]),children:a});return p?(0,Q.jsxs)(U,{className:w(`form-section bg-muted/40 shadow-none`,o),children:[m&&(0,Q.jsx)(V,{className:`border-b border-border pb-3`,children:m}),h&&(0,Q.jsx)(K,{className:`pt-4`,children:h})]}):(0,Q.jsxs)(`div`,{className:w(`form-section`,o),children:[m,h]})};function pe(e,t){return typeof t==`string`&&t.trim()||typeof t==`object`&&t&&typeof t.source==`string`&&t.source.trim()?{...e,visibleOn:t}:e}function me(e,t){let n=t.objectSchema?.fields?.[e];return n?{name:e,label:t.fieldLabel(t.objectName,e,n.label||e),type:te(n.type),required:n.required||!1,disabled:t.readOnly||t.mode===`view`||n.readonly,placeholder:n.placeholder,description:n.help||n.description,validation:oe(n),field:n,options:n.options,multiple:n.multiple,visibleWhen:n.visibleWhen,readonlyWhen:n.readonlyWhen,requiredWhen:n.requiredWhen,conditionalRequired:n.conditionalRequired}:{name:e,label:e,type:`input`}}function he(e,t){if(typeof e==`string`){let n=t.objectSchema?.fields?.[e];return pe(me(e,t),n?.visible_on??n?.visibleOn)}let n=e;if(typeof n.field!=`string`)return pe(n,n.visibleOn);let r=n.field,i=me(r,t);n.type!=null&&(i.type=te(n.type)),n.widget!=null&&(i.widget=n.widget),n.label!=null&&(i.label=n.label),n.placeholder!=null&&(i.placeholder=n.placeholder),n.helpText!=null&&(i.description=n.helpText),n.required!=null&&(i.required=n.required),n.readonly!=null&&(i.disabled=n.readonly||i.disabled),n.immutable!=null&&(i.immutable=n.immutable),n.hidden!=null&&(i.hidden=n.hidden),n.colSpan!=null&&(i.colSpan=n.colSpan),n.span!=null&&(i.span=n.span),n.options!=null&&(i.options=n.options),n.multiple!=null&&(i.multiple=n.multiple);let a=n.reference??n.reference_to;return a!=null&&(i.reference=a,i.reference_to=a),n.maxLength!=null&&(i.maxLength=n.maxLength),n.minLength!=null&&(i.minLength=n.minLength),n.min!=null&&(i.min=n.min),n.max!=null&&(i.max=n.max),n.precision!=null&&(i.precision=n.precision),n.scale!=null&&(i.scale=n.scale),n.language!=null&&(i.language=n.language),Array.isArray(n.fields)&&(i.fields=n.fields),pe(i,n.visibleOn)}function ge(e,t){return(e.fields??[]).map(e=>he(e,t))}var _e=new Set([`field:formula`,`field:summary`,`field:auto_number`,`field:autonumber`]),ve=new Set([`field:textarea`,`field:markdown`,`field:html`,`field:grid`,`field:rich-text`,`textarea`,`markdown`,`html`,`grid`,`rich-text`]),ye=new Set([`formula`,`summary`,`auto_number`,`autonumber`]);function be(e){return ve.has(e)}function xe(e){return ye.has(e)}function Se(e){return e<=3?1:e<=8?2:e<=15?3:4}function Ce(e){return e&&e>0?Math.min(Math.floor(e),4):1}function we(e,t,n){let r=Ce(t);return r<=1?1:e.span===`full`?r:e.colSpan==null?e.type&&be(e.type)?r:Math.min(r,Math.max(1,Math.round(r/Math.min(Math.max(1,Math.floor(n||r)),r)))):Math.min(Math.max(1,Math.floor(e.colSpan)),r)}function Te(e,t,n){let r=Ce(t);return r<=1?e:e.map(e=>{if(e.type===`section-divider`)return e;let t=we(e,r,n);return t>1?{...e,colSpan:t}:e.colSpan!=null&&e.colSpan!==1?{...e,colSpan:1}:e})}var Ee=new Set([`id`,`created_at`,`createdAt`,`updated_at`,`updatedAt`,`last_modified_at`,`lastModifiedAt`,`deleted_at`,`deletedAt`,`created_by`,`createdBy`,`updated_by`,`updatedBy`,`last_modified_by`,`lastModifiedBy`,`organization_id`,`organizationId`,`org_id`,`orgId`,`tenant_id`,`tenantId`,`owner`,`owner_id`,`_version`,`_rev`]);function De(e,t){return e.filter(e=>{if(Ee.has(e.name))return!1;let n=t?.fields?.[e.name];return!(n?.hidden===!0||n?.readonly===!0)})}function Oe(e,t){return e.filter(e=>{if(e.type&&_e.has(e.type))return!1;let n=t?.fields?.[e.name];return!n||!xe(n.type)})}var ke={1:void 0,2:`grid gap-4 grid-cols-1 @md:grid-cols-2`,3:`grid gap-4 grid-cols-1 @md:grid-cols-2 @2xl:grid-cols-3`,4:`grid gap-4 grid-cols-1 @md:grid-cols-2 @2xl:grid-cols-3 @4xl:grid-cols-4`};function Ae(e){return ke[e&&e>0?Math.min(Math.floor(e),4):1]}function je(e,t){let n=t&&t>1?Math.min(Math.floor(t),4):1,r=n>1?Te(e,n):e,i=Ae(n);return{fields:r,columns:n,...i?{fieldContainerClass:i}:{}}}function Me(e){return e<=1?`default`:e===2?`xl`:`full`}function Ne(e,t,n,r){let i=[...e];if(i=De(i,t),r===`create`&&(i=Oe(i,t)),n!==void 0)return i=Te(i,n),{fields:i,columns:n};let a=Se(i.length);return i=Te(i,a),{fields:i,columns:a}}var Pe=({schema:e,dataSource:t,className:n})=>{let{fieldLabel:r}=J(),[i,a]=(0,X.useState)(null),[o,c]=(0,X.useState)({}),[l,u]=(0,X.useState)(!0),[d,f]=(0,X.useState)(null),[p,m]=(0,X.useState)(e.defaultTab||e.sections[0]?.name||e.sections[0]?.label||`tab-0`);X.useEffect(()=>{(async()=>{if(!t){u(!1);return}try{let n=await t.getObjectSchema(e.objectName);a(n)}catch(e){f(e)}})()},[e.objectName,t]),X.useEffect(()=>{(i||!t)&&(async()=>{if(e.mode===`create`||!e.recordId||!t){c(e.initialData||e.initialValues||{}),u(!1);return}try{let n=await t.findOne(e.objectName,e.recordId);c(n||{})}catch(e){f(e)}finally{u(!1)}})()},[i,e.mode,e.recordId,e.initialData,e.initialValues,t,e.objectName]);let h=(0,X.useCallback)(t=>ge(t,{objectSchema:i,objectName:e.objectName,readOnly:e.readOnly,mode:e.mode,fieldLabel:r}),[i,e.readOnly,e.mode,e.objectName,r]),g=(0,X.useCallback)(async n=>{if(!t)return e.onSuccess&&await e.onSuccess(n),n;try{let r;return e.mode===`create`?r=await t.create(e.objectName,n):e.mode===`edit`&&e.recordId&&(r=await t.update(e.objectName,e.recordId,n)),e.onSuccess&&await e.onSuccess(r),r}catch(t){throw e.onError&&e.onError(t),t}},[e,t]),_=(0,X.useCallback)(()=>{e.onCancel&&e.onCancel()},[e]),v=(e,t)=>e.name||e.label||`tab-${t}`;if(d)return(0,Q.jsxs)(`div`,{className:`p-4 border border-red-300 bg-red-50 rounded-md`,children:[(0,Q.jsx)(`h3`,{className:`text-red-800 font-semibold`,children:`Error loading form`}),(0,Q.jsx)(`p`,{className:`text-red-600 text-sm mt-1`,children:d.message})]});if(l)return(0,Q.jsxs)(`div`,{className:`p-8 text-center`,children:[(0,Q.jsx)(`div`,{className:`inline-block animate-spin rounded-full h-8 w-8 border-b-2 border-gray-900`}),(0,Q.jsx)(`p`,{className:`mt-2 text-sm text-gray-600`,children:`Loading form...`})]});let y={type:`form`,fields:e.sections.flatMap(e=>h(e)),layout:`vertical`,defaultValues:o,submitLabel:e.submitText||(e.mode===`create`?`Create`:`Update`),cancelLabel:e.cancelText,showSubmit:e.showSubmit!==!1&&e.mode!==`view`,showCancel:e.showCancel!==!1,onSubmit:g,onCancel:_},b=e.tabPosition===`left`||e.tabPosition===`right`;return(0,Q.jsx)(`div`,{className:w(`w-full`,n,e.className),children:(0,Q.jsxs)(ne,{value:p,onValueChange:m,orientation:b?`vertical`:`horizontal`,className:w(b&&`flex gap-4`),children:[(0,Q.jsx)(I,{className:w(b?`flex-col h-auto`:``,e.tabPosition===`bottom`&&`order-last`,e.tabPosition===`right`&&`order-last`),children:e.sections.map((e,t)=>(0,Q.jsx)(ce,{value:v(e,t),className:b?`w-full justify-start`:``,children:e.label||`Tab ${t+1}`},v(e,t)))}),(0,Q.jsx)(`div`,{className:`flex-1`,children:e.sections.map((t,n)=>(0,Q.jsx)(B,{value:v(t,n),className:`mt-0`,children:(0,Q.jsx)($,{description:t.description,columns:1,className:t.className,gridClassName:t.gridClassName,children:(0,Q.jsx)(s,{schema:{...y,...je(h(t),t.columns||1),showSubmit:e.showSubmit!==!1&&e.mode!==`view`,showCancel:e.showCancel!==!1}})})},v(t,n)))})]})})},Fe=({schema:e,dataSource:t,className:n})=>{let{fieldLabel:r}=J(),[i,a]=(0,X.useState)(null),[o,c]=(0,X.useState)({}),[l,u]=(0,X.useState)(!0),[d,f]=(0,X.useState)(null),[p,m]=(0,X.useState)(0),[h,g]=(0,X.useState)(new Set),[_,v]=(0,X.useState)(!1),[y,b]=(0,X.useState)(null),x=X.useId(),[C,E]=(0,X.useState)(0),D=X.useRef(!1),O=e.sections.length,k=p===0,j=p===O-1;X.useEffect(()=>{(async()=>{if(!t){u(!1);return}try{let n=await t.getObjectSchema(e.objectName);a(n)}catch(e){f(e)}})()},[e.objectName,t]),X.useEffect(()=>{(i||!t)&&(async()=>{if(e.mode===`create`||!e.recordId||!t){D.current||=(c(e.initialData||e.initialValues||{}),!0),u(!1);return}try{let n=await t.findOne(e.objectName,e.recordId);c(n||{})}catch(e){f(e)}finally{u(!1)}})()},[i,e.mode,e.recordId,e.initialData,e.initialValues,t,e.objectName]);let M=(0,X.useCallback)(t=>ge(t,{objectSchema:i,objectName:e.objectName,readOnly:e.readOnly,mode:e.mode,fieldLabel:r}),[i,e.readOnly,e.mode,e.objectName,r]),N=(0,X.useMemo)(()=>p>=0&&p<O?M(e.sections[p]):[],[p,O,e.sections,M]),P=(0,X.useCallback)(async n=>{let r={...o,...n};if(c(r),g(e=>new Set(e).add(p)),j){v(!0);try{if(!t)return e.onSuccess&&await e.onSuccess(r),r;let n;if(e.mode===`create`?n=await t.create(e.objectName,r):e.mode===`edit`&&e.recordId&&(n=await t.update(e.objectName,e.recordId,r)),e.onSuccess)await e.onSuccess(n);else if(e.submitBehavior){let t=e.submitBehavior;switch(t.kind){case`redirect`:Z(t.url)&&setTimeout(()=>window.location.assign(t.url),t.delayMs??0);break;case`continue`:c({}),g(new Set),m(0),E(e=>e+1);break;default:{let n=t.kind===`thank-you`&&t.message?t.message:e.successMessage||(e.mode===`create`?`Created`:`Saved`);Y.success(n),b({title:t.kind===`thank-you`?t.title:void 0,message:n});break}}}else{let t=fe(e.navigateOnSuccess,n);if(t)return window.location.assign(t),n;Y.success(e.successMessage||(e.mode===`create`?`Created`:`Saved`)),e.resetOnSuccess&&e.mode===`create`&&(c({}),g(new Set),m(0),E(e=>e+1))}return n}catch(t){throw e.onError&&e.onError(t),t}finally{v(!1)}}else F(p+1)},[o,p,j,e,t]),F=(0,X.useCallback)(t=>{t>=0&&t<O&&(m(t),e.onStepChange&&e.onStepChange(t))},[O,e]),I=(0,X.useCallback)(()=>{F(p-1)},[p,F]),L=(0,X.useCallback)(()=>{e.onCancel&&e.onCancel()},[e]),R=(0,X.useCallback)(t=>{(e.allowSkip||h.has(t)||t<=p)&&F(t)},[e.allowSkip,h,p,F]);if(d)return(0,Q.jsxs)(`div`,{className:`p-4 border border-red-300 bg-red-50 rounded-md`,children:[(0,Q.jsx)(`h3`,{className:`text-red-800 font-semibold`,children:`Error loading form`}),(0,Q.jsx)(`p`,{className:`text-red-600 text-sm mt-1`,children:d.message})]});if(l)return(0,Q.jsxs)(`div`,{className:`p-8 text-center`,children:[(0,Q.jsx)(`div`,{className:`inline-block animate-spin rounded-full h-8 w-8 border-b-2 border-gray-900`}),(0,Q.jsx)(`p`,{className:`mt-2 text-sm text-gray-600`,children:`Loading form...`})]});if(y)return(0,Q.jsx)(`div`,{className:w(`w-full`,n,e.className),children:(0,Q.jsxs)(`div`,{className:`rounded-md border bg-card p-8 text-center`,children:[(0,Q.jsx)(`h3`,{className:`text-lg font-semibold`,children:y.title??`Thanks!`}),y.message&&(0,Q.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:y.message})]})});let z=e.sections[p];return(0,Q.jsxs)(`div`,{className:w(`w-full`,n,e.className),children:[e.showStepIndicator!==!1&&(0,Q.jsx)(`nav`,{"aria-label":`Progress`,className:`mb-8`,children:(0,Q.jsx)(`ol`,{className:`flex items-center`,children:e.sections.map((t,n)=>{let r=n===p,i=h.has(n),a=e.allowSkip||i||n<=p;return(0,Q.jsxs)(`li`,{className:w(`relative flex-1`,n!==O-1&&`pr-8 sm:pr-12`),children:[n!==O-1&&(0,Q.jsx)(`div`,{className:`absolute top-3 sm:top-4 left-6 -right-4 sm:left-10 sm:-right-2 h-0.5`,"aria-hidden":`true`,children:(0,Q.jsx)(`div`,{className:w(`h-full`,i?`bg-primary`:`bg-muted`)})}),(0,Q.jsxs)(`button`,{type:`button`,className:w(`group relative flex items-center`,a?`cursor-pointer`:`cursor-not-allowed`),onClick:()=>R(n),disabled:!a,children:[(0,Q.jsx)(`span`,{className:w(`flex h-6 w-6 sm:h-8 sm:w-8 items-center justify-center rounded-full text-xs sm:text-sm font-medium transition-colors`,i&&`bg-primary text-primary-foreground`,r&&!i&&`border-2 border-primary bg-background text-primary`,!r&&!i&&`border-2 border-muted bg-background text-muted-foreground`),children:i?(0,Q.jsx)(ie,{className:`h-3 w-3 sm:h-4 sm:w-4`}):n+1}),(0,Q.jsx)(`span`,{className:`ml-2 sm:ml-3 text-xs sm:text-sm font-medium hidden sm:block`,children:(0,Q.jsx)(`span`,{className:w(r?`text-foreground`:`text-muted-foreground`),children:t.label||`Step ${n+1}`})})]})]},n)})})}),(0,Q.jsx)(`div`,{className:`min-h-[200px]`,children:z&&(0,Q.jsx)($,{label:z.label,description:z.description,columns:1,className:z.className,gridClassName:z.gridClassName,children:N.length>0?(0,Q.jsx)(s,{schema:{type:`form`,objectName:e.objectName,id:x,...je(N,z.columns||1),layout:`vertical`,defaultValues:o,showSubmit:!1,showCancel:!1,onSubmit:P}},C):(0,Q.jsx)(`div`,{className:`text-center py-8 text-muted-foreground`,children:`No fields configured for this step`})})}),(0,Q.jsxs)(`div`,{className:`flex items-center justify-between mt-6 pt-4 border-t`,children:[(0,Q.jsx)(`div`,{children:e.showCancel!==!1&&(0,Q.jsx)(T,{variant:`ghost`,onClick:L,children:e.cancelText||`Cancel`})}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsxs)(`span`,{className:`text-sm text-muted-foreground mr-2`,children:[`Step `,p+1,` of `,O]}),!k&&(0,Q.jsxs)(T,{variant:`outline`,onClick:I,children:[(0,Q.jsx)(S,{className:`h-4 w-4 mr-1`}),e.prevText||`Back`]}),j?(0,Q.jsxs)(T,{type:`submit`,form:x,disabled:_||e.mode===`view`,children:[_&&(0,Q.jsx)(re,{className:`mr-2 h-4 w-4 animate-spin`,"aria-hidden":!0}),_?`Submitting...`:e.submitText||(e.mode===`create`?`Create`:`Update`)]}):(0,Q.jsxs)(T,{type:`submit`,form:x,children:[e.nextText||`Next`,(0,Q.jsx)(A,{className:`h-4 w-4 ml-1`})]})]})]})]})},Ie=({schema:e,dataSource:t,className:n})=>{let{fieldLabel:r}=J(),[i,a]=(0,X.useState)(null),[o,c]=(0,X.useState)({}),[l,u]=(0,X.useState)(!0),[d,f]=(0,X.useState)(null);(0,X.useEffect)(()=>{(async()=>{if(!t){u(!1);return}try{let n=await t.getObjectSchema(e.objectName);a(n)}catch(e){f(e),u(!1)}})()},[e.objectName,t]),(0,X.useEffect)(()=>{(i||!t)&&(async()=>{if(e.mode===`create`||!e.recordId){c(e.initialData||e.initialValues||{}),u(!1);return}if(!t){c(e.initialData||e.initialValues||{}),u(!1);return}try{let n=await t.findOne(e.objectName,e.recordId);c(n||{})}catch(e){f(e)}finally{u(!1)}})()},[i,e.mode,e.recordId,e.initialData,e.initialValues,t,e.objectName]);let p=(0,X.useCallback)(t=>ge(t,{objectSchema:i,objectName:e.objectName,readOnly:e.readOnly,mode:e.mode,fieldLabel:r}),[i,e.readOnly,e.mode,e.objectName,r]),m=(0,X.useCallback)(async n=>{if(!t)return e.onSuccess&&await e.onSuccess(n),n;try{let r;return e.mode===`create`?r=await t.create(e.objectName,n):e.mode===`edit`&&e.recordId&&(r=await t.update(e.objectName,e.recordId,n)),e.onSuccess&&await e.onSuccess(r),r}catch(t){throw e.onError&&e.onError(t),t}},[e,t]),h=(0,X.useCallback)(()=>{e.onCancel&&e.onCancel()},[e]),g=(0,X.useMemo)(()=>e.sections.slice(0,1),[e.sections]),_=(0,X.useMemo)(()=>e.sections.slice(1),[e.sections]);(0,X.useMemo)(()=>e.sections.flatMap(e=>p(e)),[e.sections,p]);let v=e.splitDirection||`horizontal`,y=e.splitSize||50;if(d)return(0,Q.jsxs)(`div`,{className:`p-4 border border-red-300 bg-red-50 rounded-md`,children:[(0,Q.jsx)(`h3`,{className:`text-red-800 font-semibold`,children:`Error loading form`}),(0,Q.jsx)(`p`,{className:`text-red-600 text-sm mt-1`,children:d.message})]});if(l)return(0,Q.jsxs)(`div`,{className:`p-8 text-center`,children:[(0,Q.jsx)(`div`,{className:`inline-block animate-spin rounded-full h-8 w-8 border-b-2 border-gray-900`}),(0,Q.jsx)(`p`,{className:`mt-2 text-sm text-gray-600`,children:`Loading form...`})]});let b={type:`form`,objectName:e.objectName,layout:`vertical`,defaultValues:o,onSubmit:m,onCancel:h},x=(t,n)=>(0,Q.jsx)(`div`,{className:`space-y-6 p-4`,children:t.map((t,r)=>(0,Q.jsx)($,{label:t.label,description:t.description,columns:1,className:t.className,gridClassName:t.gridClassName,children:(0,Q.jsx)(s,{schema:{...b,...je(p(t),t.columns||1),showSubmit:n&&e.showSubmit!==!1&&e.mode!==`view`,showCancel:n&&e.showCancel!==!1,submitLabel:e.submitText||(e.mode===`create`?`Create`:`Update`),cancelLabel:e.cancelText}})},t.name||t.label||r))});return(0,Q.jsx)(`div`,{className:w(`w-full`,n,e.className),children:(0,Q.jsxs)(G,{orientation:v,className:`min-h-[300px] rounded-lg border`,children:[(0,Q.jsx)(H,{defaultSize:y,minSize:20,children:x(g,_.length===0)}),_.length>0&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(L,{withHandle:e.splitResizable!==!1}),(0,Q.jsx)(H,{defaultSize:100-y,minSize:20,children:x(_,!0)})]})]})})},Le=new Set([`id`,`_id`,`created_at`,`updated_at`,`createdAt`,`updatedAt`,`organization_id`,`organizationId`]),Re=new Set([`formula`,`summary`,`rollup`,`lookup_value`,`auto_number`,`autonumber`,`computed`]);function ze(e,t){if(!e||typeof e!=`object`)return e;let n={},r=t?.fields;for(let[t,i]of Object.entries(e))if(!Le.has(t)){if(r){let e=r[t];if(!e)continue;let n=String(e.type||``).toLowerCase();if(Re.has(n)||e.computed===!0||e.formula||e.readOnly===!0||e.readonly===!0)continue}n[t]=i}return n}var Be=e=>e==null?void 0:e.id??e._id??e.recordId,Ve=(e,t)=>t?ze(e,t):e,He=new Set([`id`,`_id`,`recordId`]);function Ue(e,t){return!e||Object.entries(e).every(([e,n])=>e===t||He.has(e)?!0:n==null||n===``)}function We(e,t,n){let r=[{object:e,action:`create`,data:t}];for(let e of n)for(let t of e.rows)Ue(t,e.relationshipField)||r.push({object:e.childObject,action:`create`,data:{...Ve(t,e.childSchema),[e.relationshipField]:{$ref:0}}});return r}function Ge(e,t,n,r){let i=[{object:e,action:`update`,id:t,data:n}];for(let e of r){let n=(e.rows||[]).map(n=>({...n,[e.relationshipField]:t})),{toCreate:r,toUpdate:a,toDelete:o}=Ke(e.original||[],n);for(let t of r){if(Ue(t,e.relationshipField))continue;let{id:n,_id:r,recordId:a,...o}=t;i.push({object:e.childObject,action:`create`,data:Ve(o,e.childSchema)})}for(let t of a)i.push({object:e.childObject,action:`update`,id:Be(t),data:Ve(t,e.childSchema)});for(let t of o)i.push({object:e.childObject,action:`delete`,id:t})}return i}function Ke(e,t){let n=new Set(t.map(Be).filter(Boolean));return{toCreate:t.filter(e=>!Be(e)),toUpdate:t.filter(e=>Be(e)),toDelete:(e||[]).map(Be).filter(e=>!!e&&!n.has(e))}}function qe(e,t){return Array.isArray(e)?e.reduce((e,n)=>{let r=Number(n?.[t]);return e+(Number.isFinite(r)?r:0)},0):0}var Je=new Set([`id`,`_id`,`recordId`,`created_at`,`updated_at`,`created_by`,`updated_by`,`createdAt`,`updatedAt`,`createdBy`,`updatedBy`,`organization_id`,`tenant_id`,`space`,`owner`]),Ye=new Set([`position`,`sort_order`,`sequence`,`line_no`,`line_number`,`sort`]),Xe=new Set([`formula`,`summary`,`rollup`,`autonumber`,`auto_number`,`json`,`object`,`grid`,`table`,`location`,`vector`,`html`,`markdown`,`richtext`]);function Ze(e){switch(e){case`number`:case`percent`:case`rating`:case`slider`:return`number`;case`currency`:return`currency`;case`date`:case`datetime`:case`time`:return`date`;case`select`:case`picklist`:case`radio`:case`boolean`:case`toggle`:return`select`;case`lookup`:case`master_detail`:return`lookup`;case`file`:case`image`:case`avatar`:return`file`;default:return`text`}}var Qe=new Set([`image`,`avatar`]);function $e(e,t){e.multiple==null&&t?.multiple&&(e.multiple=!0),e.accept??(Array.isArray(t?.accept)&&t.accept.length>0?e.accept=t.accept:Qe.has(t?.type)&&(e.accept=[`image/*`]))}function et(e){if(e?.type===`boolean`||e?.type===`toggle`)return[{label:`Yes`,value:`true`},{label:`No`,value:`false`}];let t=e?.options;if(Array.isArray(t))return t.map(e=>typeof e==`object`&&e?{label:String(e.label??e.value),value:String(e.value)}:{label:String(e),value:String(e)})}function tt(e,t){let n=e?.fields;if(!n||typeof n!=`object`)return;let r;for(let[e,i]of Object.entries(n)){let n=i;if(n?.reference===t){if(n?.type===`master_detail`)return e;n?.type===`lookup`&&!r&&(r=e)}}return r}var nt=[`name`,`title`,`subject`,`label`,`full_name`,`display_name`,`code`],rt={select:0,currency:1,number:1,lookup:2,date:3,text:4};function it(e,t){if(t<=0||e.length<=t)return e;let n=new Set,r=e.find(e=>nt.includes(e.field))??e[0];r&&n.add(r.field);for(let t of e)t.required&&n.add(t.field);let i=e.map((e,t)=>({c:e,i:t})).filter(({c:e})=>!n.has(e.field)).sort((e,t)=>(rt[e.c.type]??5)-(rt[t.c.type]??5)||e.i-t.i);for(let{c:e}of i){if(n.size>=t)break;n.add(e.field)}return e.map(e=>n.has(e.field)?e:{...e,defaultHidden:!0})}function at(e,t={}){let n=e?.fields;if(!n||typeof n!=`object`)return[];let r=new Set([...t.exclude??[],...t.relationshipField?[t.relationshipField]:[]]),i=[];for(let[e,t]of Object.entries(n)){let n=t;if(Je.has(e)||r.has(e)||Ye.has(e)||n?.system||n?.readonly||n?.hidden||Xe.has(n?.type))continue;let a={field:e,label:n?.label||e,type:Ze(n?.type),required:!!n?.required},o=et(n);a.type===`select`&&o&&(a.options=o),a.type===`lookup`&&(a.reference=n?.reference,a.displayField=n?.display_field||n?.reference_field),a.type===`file`&&$e(a,n),n?.readonlyWhen&&(a.readonlyWhen=n.readonlyWhen),(n?.requiredWhen??n?.conditionalRequired)&&(a.requiredWhen=n.requiredWhen??n.conditionalRequired);let s=typeof n?.expression==`string`?n.expression:n?.expression?.source;s&&typeof s==`string`&&(a.computed=!0,a.expr=s,a.required=!1,typeof n?.scale==`number`&&(a.scale=n.scale)),i.push(a)}return it(i,t.maxColumns??6)}function ot(e,t){let n=e??[],r=t?.fields;return!n.length||!r||typeof r!=`object`?n:n.map(e=>{if(e.type)return e;let t=r[e.field];if(!t)return e;let n=Ze(t?.type),i={...e,type:n};i.label??=t?.label||e.field,i.required??=!!t?.required;let a=et(t);n===`select`&&a&&!i.options&&(i.options=a),n===`lookup`&&(i.reference??=t?.reference,i.displayField??=t?.display_field||t?.reference_field),n===`file`&&$e(i,t),i.readonlyWhen==null&&t?.readonlyWhen&&(i.readonlyWhen=t.readonlyWhen),i.requiredWhen==null&&(t?.requiredWhen??t?.conditionalRequired)&&(i.requiredWhen=t.requiredWhen??t.conditionalRequired);let o=typeof t?.expression==`string`?t.expression:t?.expression?.source;return!i.computed&&o&&typeof o==`string`&&(i.computed=!0,i.expr=o,i.required=!1,typeof t?.scale==`number`&&(i.scale=t.scale)),i})}var st=new Set([`formula`,`summary`,`rollup`,`autonumber`,`auto_number`]);function ct(e,t={}){let n=e?.fields;if(!n||typeof n!=`object`)return[];let r=new Set([...t.exclude??[],...t.relationshipField?[t.relationshipField]:[]]),i=[];for(let[e,t]of Object.entries(n)){let n=t;Je.has(e)||r.has(e)||Ye.has(e)||n?.system||n?.hidden||st.has(n?.type)||i.push(e)}return i}var lt=new Set([`textarea`,`richtext`,`html`,`markdown`,`rich-text`,`json`,`location`,`address`]),ut=new Set([`file`,`image`,`avatar`]);function dt(e,t,n={}){if(t===`grid`||t===`form`)return t;let r=e?.fields??{},i=ct(e,{relationshipField:n.relationshipField});return i.some(e=>lt.has(r[e]?.type))||i.filter(e=>ut.has(r[e]?.type)).length>=2||i.length>8?`form`:`grid`}var ft=[`amount`,`total`,`subtotal`,`line_total`,`line_amount`,`net_amount`];function pt(e){let t=e.filter(e=>e.type===`number`||e.type===`currency`);if(t.length===0)return;let n=t.find(e=>e.computed);if(n)return n.field;let r=t.find(e=>ft.includes(e.field));if(r)return r.field;let i=[...t].reverse().find(e=>e.type===`currency`);return i?i.field:t[t.length-1].field}function mt(e,t,n,r={}){let i=r.relationshipField||tt(t,n);if(!i)throw Error(`MasterDetailForm: could not find a lookup/master_detail field on "${e}" referencing "${n}". Set relationshipField explicitly.`);let a=r.columns?.length?ot(r.columns,t):at(t,{relationshipField:i}),o=r.amountField||pt(a);return{childObject:e,relationshipField:i,columns:a,formFields:ct(t,{relationshipField:i}),mode:dt(t,r.inlineEdit??(t?.fields)?.[i]?.inlineEdit,{relationshipField:i}),amountField:o,sortField:Object.keys(t?.fields??{}).find(e=>Ye.has(e))}}function ht(e){if(!e)return{};let t={};return e.querySelectorAll(`[name]`).forEach(e=>{let n=e.getAttribute(`name`);if(n){if(e.tagName===`INPUT`){let r=e;if(r.type===`checkbox`){t[n]=r.checked;return}if(r.type===`radio`){r.checked&&(t[n]=r.value);return}if(r.type===`number`||r.type===`range`){if(r.value===``){t[n]=null;return}let e=Number(r.value);t[n]=Number.isFinite(e)?e:r.value;return}t[n]=r.value;return}t[n]=e.value}}),t}var gt=({details:e,state:t,setRows:n,formHostRef:r,taxRateField:i,formKey:a,onRowExpand:o,onAddViaForm:s})=>{let[c,l]=(0,X.useState)({}),u=(0,X.useRef)(``);(0,X.useEffect)(()=>{let e=r.current;if(!e)return;let t=()=>{let t=ht(e),n;try{n=JSON.stringify(t)}catch{n=String(Math.random())}n!==u.current&&(u.current=n,l(t))};t();let n=()=>t();e.addEventListener(`input`,n),e.addEventListener(`change`,n);let i=[120,360,800].map(e=>setTimeout(t,e));return()=>{e.removeEventListener(`input`,n),e.removeEventListener(`change`,n),i.forEach(clearTimeout)}},[r,a,e.length]);let d=c[i],f=d===void 0?null:Number.isFinite(Number(d))?Number(d):0,p=e.reduce((e,n,r)=>e+qe(t[r]?.rows??[],n.amountField||`amount`),0),m=f!==null&&e.some(e=>!!e.amountField),h=f??0,g=h/100*p,_=p+g,v=e=>`¥${e.toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2})}`;return(0,Q.jsxs)(Q.Fragment,{children:[e.map((e,r)=>(0,Q.jsxs)(`section`,{className:`space-y-2`,children:[(0,Q.jsx)(`h3`,{className:`text-sm font-medium text-foreground`,children:e.title||`Line Items`}),e.columns?.length?(0,Q.jsx)(D,{value:t[r]?.rows??[],onChange:e=>n(r,e),contextRecord:c,...e.inlineMode===`form`||(e.formFields?.length??0)>(e.columns?.length??0)?{onRowExpand:e=>o(r,e)}:{},displayMode:e.inlineMode===`form`?`list`:`grid`,...e.inlineMode===`form`?{onAdd:()=>s(r)}:{},field:{columns:e.columns,total_field:m?void 0:e.amountField||(e.totalField?`amount`:void 0),sort_field:e.sortField,min_rows:e.minRows,max_rows:e.maxRows,add_label:e.inlineMode===`form`?e.addLabel||`Add`:e.addLabel}}):(0,Q.jsx)(`p`,{className:`py-4 text-sm text-muted-foreground`,children:`Loading columns…`})]},`${e.childObject}-${r}`)),m&&(0,Q.jsx)(`div`,{className:`flex justify-end`,children:(0,Q.jsxs)(`dl`,{className:`w-64 space-y-1.5 text-sm`,"data-testid":`md-totals`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Q.jsx)(`dt`,{className:`text-muted-foreground`,children:`Subtotal`}),(0,Q.jsx)(`dd`,{className:`tabular-nums`,"data-testid":`md-subtotal`,children:v(p)})]}),(0,Q.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Q.jsxs)(`dt`,{className:`text-muted-foreground`,children:[`Tax (`,h,`%)`]}),(0,Q.jsx)(`dd`,{className:`tabular-nums`,"data-testid":`md-tax`,children:v(g)})]}),(0,Q.jsxs)(`div`,{className:`flex items-center justify-between border-t border-border pt-1.5 text-base font-semibold`,children:[(0,Q.jsx)(`dt`,{children:`Total`}),(0,Q.jsx)(`dd`,{className:`tabular-nums`,"data-testid":`md-grand-total`,children:v(_)})]})]})})]})},_t=({schema:e,dataSource:t,className:n})=>{let r=e.details||[],i=e.mode===`edit`&&!!e.recordId,o=r.some(e=>!e.relationshipField||!e.columns?.length||e.columns.some(e=>!e.type)),[s,c]=(0,X.useState)(o?null:r),l=s??r;(0,X.useEffect)(()=>{if(!o){c(r);return}if(!t||typeof t.getObjectSchema!=`function`)return;let n=!1;return(async()=>{let i=await Promise.all(r.map(async n=>{let r=n.columns?.length?n.columns.every(e=>!!e.type):!1;if(n.relationshipField&&r)return n;try{let r=await t.getObjectSchema(n.childObject);if(n.relationshipField&&n.columns?.length)return{...n,columns:ot(n.columns,r)};let i=mt(n.childObject,r,e.objectName,{relationshipField:n.relationshipField,columns:n.columns,amountField:n.amountField});return{...n,relationshipField:i.relationshipField,columns:i.columns,formFields:n.formFields??i.formFields,inlineMode:n.inlineMode??i.mode,amountField:n.amountField??i.amountField,sortField:n.sortField??i.sortField}}catch{return n}}));n||c(i)})(),()=>{n=!0}},[t,e.objectName,e.details]);let[u,d]=(0,X.useState)(()=>r.map(()=>({rows:[],original:[]}))),f=(0,X.useRef)(u);f.current=u;let p=(0,X.useRef)({});(0,X.useEffect)(()=>{let e=t;if(!e||typeof e.getObjectSchema!=`function`)return;let n=!1,i=Array.from(new Set(r.map(e=>e.childObject).filter(Boolean)));return(async()=>{let t=await Promise.all(i.map(async t=>{try{return[t,await e.getObjectSchema(t)]}catch{return[t,null]}}));if(n)return;let r={};for(let[e,n]of t)n&&(r[e]=n);p.current=r})(),()=>{n=!0}},[t,e.objectName,e.details]);let[m,h]=(0,X.useState)(0),[g,_]=(0,X.useState)(!1),v=(0,X.useRef)(!1),y=(0,X.useRef)(null),b=(0,X.useCallback)(()=>{v.current=!1,_(!1),y.current&&=(clearTimeout(y.current),null)},[]);(0,X.useEffect)(()=>{let n=!1;if(!(!i||!t))return(async()=>{let r=await Promise.all(l.map(async n=>{if(!n.relationshipField)return{rows:[],original:[]};try{let r=(await t.find(n.childObject,{$filter:{[n.relationshipField]:e.recordId},$top:500}))?.data??[];return{rows:r.map(e=>({...e})),original:r.map(e=>({...e}))}}catch{return{rows:[],original:[]}}}));n||d(r)})(),()=>{n=!0}},[i,t,e.recordId,s]);let x=(0,X.useCallback)((e,t)=>{d(n=>n.map((n,r)=>r===e?{...n,rows:t}:n))},[]),S=e.taxRateField||`tax_rate`,[C,E]=(0,X.useState)(null),D=C?u[C.detailIdx]?.rows?.[C.rowIdx]:void 0,O=C?l[C.detailIdx]:void 0,k=(0,X.useCallback)((e,t,n)=>{d(r=>r.map((r,i)=>i===e?{...r,rows:r.rows.map((e,r)=>r===t?{...e,...n}:e)}:r))},[]),A=(0,X.useCallback)(e=>{d(t=>{let n=t.map((t,n)=>n===e?{...t,rows:[...t.rows,{}]}:t),r=n[e].rows.length-1;return E({detailIdx:e,rowIdx:r,isNew:!0}),n})},[]),j=(0,X.useCallback)(()=>{E(e=>(e?.isNew&&d(t=>t.map((t,n)=>n===e.detailIdx?{...t,rows:t.rows.filter((t,n)=>n!==e.rowIdx)}:t)),null))},[]),M=(0,X.useCallback)(async t=>{b(),e.onSuccess||Y.success(i?e.title?`${e.title} saved`:`Saved`:`Created`),i||(d(l.map(()=>({rows:[],original:[]}))),h(e=>e+1)),await e.onSuccess?.(t)},[i,e.onSuccess,e.title,l.length,b]),N=(0,X.useCallback)(t=>{b(),Y.error(t?.message||`Save failed`),e.onError?.(t)},[e,b]),P=(0,X.useCallback)(async n=>{if(!t)throw Error(`MasterDetailForm: dataSource is required`);let r={...n};return l.forEach((e,t)=>{e.totalField&&(r[e.totalField]=qe(f.current[t]?.rows??[],e.amountField||`amount`))}),(await a(t,i?Ge(e.objectName,e.recordId,r,l.filter(e=>e.relationshipField).map((e,t)=>({childObject:e.childObject,relationshipField:e.relationshipField,rows:f.current[t]?.rows??[],original:f.current[t]?.original??[],childSchema:p.current[e.childObject]}))):We(e.objectName,r,l.filter(e=>e.relationshipField).map((e,t)=>({childObject:e.childObject,relationshipField:e.relationshipField,rows:f.current[t]?.rows??[],childSchema:p.current[e.childObject]})))))?.results?.[0]??{...r,id:e.recordId}},[t,l,e.objectName,e.recordId,i]),F=(0,X.useMemo)(()=>({type:`object-form`,objectName:e.objectName,mode:e.mode??`create`,recordId:e.recordId,initialValues:e.initialValues,initialData:e.initialData,formType:e.formType,sections:e.sections,fields:e.fields,title:e.title,showSubmit:!1,showCancel:!1,submitHandler:P,onSuccess:M,onError:N}),[e,P,M,N]),I=(0,X.useRef)(null),L=e.submitText??(i?`Save`:`Create`),R=(0,X.useCallback)(()=>{v.current||I.current?.querySelector(`form`)&&(v.current=!0,_(!0),setTimeout(()=>{(I.current?.querySelector(`form`))?.requestSubmit()},0),y.current=setTimeout(()=>b(),1500))},[b]);return(0,X.useEffect)(()=>()=>{y.current&&clearTimeout(y.current)},[]),(0,Q.jsxs)(`div`,{className:w(`space-y-6`,n,e.className),children:[(0,Q.jsx)(`div`,{ref:I,children:(0,Q.jsx)(Tt,{schema:F,dataSource:t},m)}),(0,Q.jsx)(gt,{details:l,state:u,setRows:x,formHostRef:I,taxRateField:S,formKey:m,onRowExpand:(e,t)=>E({detailIdx:e,rowIdx:t}),onAddViaForm:A}),C&&O&&(0,Q.jsxs)(U,{className:`border-primary/40 shadow-none ring-1 ring-primary/10`,"data-testid":`md-row-form`,children:[(0,Q.jsxs)(V,{className:`pb-2 flex flex-row items-center justify-between gap-2 space-y-0`,children:[(0,Q.jsxs)(q,{className:`text-sm font-medium`,children:[O.title||`Line item`,` — row `,C.rowIdx+1]}),(0,Q.jsx)(T,{type:`button`,variant:`ghost`,size:`sm`,className:`h-7 text-xs text-muted-foreground`,onClick:j,children:`Close`})]}),(0,Q.jsx)(K,{children:(0,Q.jsx)(Tt,{schema:{type:`object-form`,objectName:O.childObject,mode:`edit`,initialData:D??{},...O.formFields?.length?{fields:O.formFields}:{},submitText:`Apply`,submitHandler:async e=>e,onSuccess:e=>{k(C.detailIdx,C.rowIdx,e),E(null)},onCancel:j},dataSource:t},`row-${C.detailIdx}-${C.rowIdx}`)})]}),e.showSubmit!==!1&&(0,Q.jsxs)(`div`,{className:`flex items-center justify-end gap-2 border-t border-border pt-4`,children:[e.onCancel&&(0,Q.jsx)(T,{type:`button`,variant:`outline`,onClick:e.onCancel,disabled:g,"data-testid":`md-form-cancel`,children:e.cancelText??`Cancel`}),(0,Q.jsx)(T,{type:`button`,onClick:R,disabled:g||o&&!s,"data-testid":`md-form-submit`,children:g?`Saving…`:L})]})]})},vt={1:void 0,2:`grid gap-4 grid-cols-1 @md:grid-cols-2`,3:`grid gap-4 grid-cols-1 @md:grid-cols-2 @2xl:grid-cols-3`,4:`grid gap-4 grid-cols-1 @md:grid-cols-2 @2xl:grid-cols-3 @4xl:grid-cols-4`},yt=m({"form.discardTitle":`Discard changes?`,"form.discardMessage":`You have unsaved changes. If you close this form now, your edits will be lost.`,"form.keepEditing":`Keep editing`,"form.discard":`Discard`},`form.discardTitle`),bt=({schema:e,dataSource:t,className:n})=>{let{fieldLabel:r}=J(),{t:i}=yt(),a=o(),[c,l]=(0,X.useState)(null),[u,d]=(0,X.useState)([]),[f,p]=(0,X.useState)({}),[m,_]=(0,X.useState)(!0),[v,y]=(0,X.useState)(null),[x,S]=(0,X.useState)(!1),[C,E]=(0,X.useState)(!1),[D,A]=(0,X.useState)(!1),j=(0,X.useRef)(!1),N=e.confirmOnDiscard!==!1,I=e.open!==!1,L=e.drawerSide||`right`,z=(0,X.useId)(),[ee,B]=(0,X.useState)(()=>{let t={};return e.sections?.forEach((e,n)=>{let r=e.name||String(n);e.collapsed&&(t[r]=!0)}),t});(0,X.useEffect)(()=>{(async()=>{if(!t){_(!1);return}try{let n=await t.getObjectSchema(e.objectName);l(n)}catch(e){y(e),_(!1)}})()},[e.objectName,t]),(0,X.useEffect)(()=>{(c||!t)&&(async()=>{if(e.mode===`create`||!e.recordId){p(e.initialData||e.initialValues||{}),_(!1);return}if(!t){p(e.initialData||e.initialValues||{}),_(!1);return}try{let n=await t.findOne(e.objectName,e.recordId);p(n||{})}catch(e){y(e)}finally{_(!1)}})()},[c,e.mode,e.recordId,e.initialData,e.initialValues,t,e.objectName]);let ne=(0,X.useCallback)(t=>ge(t,{objectSchema:c,objectName:e.objectName,readOnly:e.readOnly,mode:e.mode,fieldLabel:r}),[c,e.readOnly,e.mode,e.objectName,r]);(0,X.useEffect)(()=>{if(!c&&t)return;if(e.customFields?.length){d(e.customFields),_(!1);return}if(e.sections?.length){_(!1);return}if(!c)return;let n=e.fields||Object.keys(c.fields||{}),i=[];for(let t of n){let n=typeof t==`string`?t:t.name;if(!n)continue;let a=c.fields?.[n];a&&i.push({name:n,label:r(e.objectName,n,a.label||n),type:te(a.type),required:a.required||!1,disabled:e.readOnly||e.mode===`view`||a.readonly,placeholder:a.placeholder,description:a.help||a.description,validation:oe(a),field:a,options:a.options,multiple:a.multiple})}d(i),_(!1)},[c,e.fields,e.customFields,e.sections,e.readOnly,e.mode,t]);let V=(0,X.useCallback)(async n=>{A(!0);try{if(!t)return e.onSuccess&&await e.onSuccess(n),e.onOpenChange?.(!1),n;let r,i=ze(n,c);return e.mode===`create`?r=await t.create(e.objectName,i):e.mode===`edit`&&e.recordId&&(r=await t.update(e.objectName,e.recordId,i)),e.onSuccess&&await e.onSuccess(r),e.onOpenChange?.(!1),r}catch(t){throw e.onError&&e.onError(t),t}finally{A(!1)}},[e,t,c]),H=(0,X.useCallback)(()=>{E(!1),j.current&&(j.current=!1,e.onCancel?.()),e.onOpenChange?.(!1)},[e]),U=(0,X.useCallback)(e=>{j.current=e,N&&x?E(!0):H()},[N,x,H]),ie=(0,X.useCallback)(()=>{j.current=!0,H()},[H]),W=(0,X.useMemo)(()=>{if(e.drawerWidth)return L===`left`||L===`right`?{width:e.drawerWidth,maxWidth:e.drawerWidth}:{height:e.drawerWidth,maxHeight:e.drawerWidth}},[e.drawerWidth,L]),G=e.layout===`vertical`||e.layout===`horizontal`?e.layout:`vertical`,K=e.showSubmit!==!1&&e.mode!==`view`,se=e.showCancel!==!1,q=e.submitText||(e.mode===`create`?`Create`:`Update`),ce=e.cancelText||`Cancel`,Y={type:`form`,objectName:e.objectName,layout:G,defaultValues:f,submitLabel:q,cancelLabel:ce,showSubmit:K,showCancel:se,onSubmit:V,onCancel:ie,onDirtyChange:S,showActions:!1,id:z},Z=()=>{if(v)return(0,Q.jsxs)(`div`,{className:`p-4 border border-red-300 bg-red-50 rounded-md`,children:[(0,Q.jsx)(`h3`,{className:`text-red-800 font-semibold`,children:`Error loading form`}),(0,Q.jsx)(`p`,{className:`text-red-600 text-sm mt-1`,children:v.message})]});if(m)return(0,Q.jsxs)(`div`,{className:`p-8 text-center`,children:[(0,Q.jsx)(`div`,{className:`inline-block animate-spin rounded-full h-8 w-8 border-b-2 border-gray-900`}),(0,Q.jsx)(`p`,{className:`mt-2 text-sm text-gray-600`,children:`Loading form...`})]});if(e.sections?.length){let t=[];return e.sections.forEach((e,n)=>{let r=e.name||String(n),i=ee[r]??e.collapsed??!1;t.push({name:`__section_${r}`,label:e.label||``,type:`section-divider`,colSpan:4,collapsible:e.collapsible,collapsed:i,onToggle:e.collapsible?()=>B(e=>({...e,[r]:!i})):void 0,className:e.className});let a=ne(e);i?t.push(...a.map(e=>({...e,hidden:!0}))):t.push(...a)}),(0,Q.jsx)(s,{schema:{...Y,fields:t}})}let t=Ne(u,c,e.columns,e.mode),n=vt[t.columns||1];return(0,Q.jsx)(s,{schema:{...Y,fields:t.fields,columns:t.columns,...n?{fieldContainerClass:n}:{}}})},fe=e.subforms,$=fe?.length&&e.mode!==`view`?(0,Q.jsx)(_t,{schema:{type:`object-master-detail-form`,objectName:e.objectName,mode:e.mode===`edit`?`edit`:`create`,recordId:e.recordId,fields:e.fields,sections:e.sections,submitText:e.submitText,cancelText:ce,details:fe,onSuccess:async t=>{await e.onSuccess?.(t),e.onOpenChange?.(!1)},onError:e.onError,onCancel:()=>e.onOpenChange?.(!1)},dataSource:t}):Z();return a?(0,Q.jsxs)(`div`,{className:`@container rounded-md border bg-card p-4`,children:[(e.title||e.description)&&(0,Q.jsxs)(`div`,{className:`mb-3 space-y-0.5`,children:[e.title&&(0,Q.jsx)(`div`,{className:`text-sm font-semibold`,children:e.title}),e.description&&(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e.description})]}),$]}):(0,Q.jsx)(ae,{open:I,onOpenChange:t=>{if(t){e.onOpenChange?.(!0);return}U(!1)},children:(0,Q.jsxs)(b,{side:L,className:w(`overflow-y-auto`,n,e.className),style:W,children:[(e.title||e.description)&&(0,Q.jsxs)(M,{children:[e.title&&(0,Q.jsx)(F,{children:e.title}),e.description?(0,Q.jsx)(P,{children:e.description}):(0,Q.jsx)(P,{className:`sr-only`,children:`Complete the form fields, then submit or cancel.`})]}),(0,Q.jsx)(`div`,{className:`@container py-4`,children:$}),!v&&!m&&!(fe?.length&&e.mode!==`view`)&&(K||se)&&(0,Q.jsx)(`div`,{className:`shrink-0 border-t px-4 py-3 bg-background`,"data-testid":`drawer-form-footer`,children:(0,Q.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-2 sm:justify-end`,children:[se&&(0,Q.jsx)(T,{type:`button`,variant:`outline`,onClick:ie,disabled:D,className:`w-full sm:w-auto`,children:ce}),K&&(0,Q.jsxs)(T,{type:`submit`,form:z,disabled:D,className:`w-full sm:w-auto`,children:[D&&(0,Q.jsx)(re,{className:`mr-2 h-4 w-4 animate-spin`}),q]})]})}),(0,Q.jsx)(de,{open:C,onOpenChange:E,children:(0,Q.jsxs)(O,{children:[(0,Q.jsxs)(k,{children:[(0,Q.jsx)(g,{children:i(`form.discardTitle`)}),(0,Q.jsx)(h,{children:i(`form.discardMessage`)})]}),(0,Q.jsxs)(le,{children:[(0,Q.jsx)(ue,{onClick:()=>{j.current=!1},children:i(`form.keepEditing`)}),(0,Q.jsx)(R,{onClick:H,children:i(`form.discard`)})]})]})})]})})};function xt(e,t){let n=f({fieldGroups:t,fields:Object.fromEntries(e.map(e=>[e.name,{group:e.group}]))});if(!n)return null;let r=new Set(n.flatMap(e=>e.fields)),i=e.map(e=>e.name).filter(e=>!r.has(e)),a=n.map(e=>({...e.key===void 0?{}:{name:e.key},...e.key===void 0?{}:{label:e.label??e.key},fields:[...e.fields],...e.collapse===`none`?{}:{collapsible:!0},...e.collapse===`collapsed`?{collapsed:!0}:{}}));if(i.length>0){let e=a[a.length-1];e&&e.name===void 0?e.fields=[...e.fields??[],...i]:a.push({fields:i})}return a}var St=m({"form.discardTitle":`Discard changes?`,"form.discardMessage":`You have unsaved changes. If you close this form now, your edits will be lost.`,"form.keepEditing":`Keep editing`,"form.discard":`Discard`},`form.discardTitle`),Ct={sm:`sm:max-w-sm`,default:`sm:max-w-lg`,lg:`sm:max-w-2xl`,xl:`sm:max-w-5xl`,full:`sm:max-w-[95vw] sm:w-full`},wt=({schema:e,dataSource:t,className:n})=>{let{fieldLabel:i,sectionLabel:a}=J(),{t:c}=St(),l=o(),u=r(),d=(0,X.useCallback)(t=>{if(!u?.isLoaded)return t;let n=[];for(let r of t){if(!r?.name){n.push(r);continue}u.checkField(e.objectName,r.name,`read`)&&(!u.checkField(e.objectName,r.name,`write`)&&e.mode!==`view`?n.push({...r,readOnly:!0,disabled:!0}):n.push(r))}return n},[u,e.objectName,e.mode]),[f,p]=(0,X.useState)(null),[m,_]=(0,X.useState)([]),[v,b]=(0,X.useState)({}),[x,S]=(0,X.useState)(!0),[C,D]=(0,X.useState)(null),[A,M]=(0,X.useState)(!1),[P,F]=(0,X.useState)(!1),[L,z]=(0,X.useState)(!1),V=(0,X.useRef)(!1),H=e.confirmOnDiscard!==!1,U=e.open!==!1,ie=(0,X.useId)(),ae=(0,X.useMemo)(()=>{if(e.sections?.length||e.customFields?.length)return null;let t=De(m,f);e.mode===`create`&&(t=Oe(t,f));let n=xt(t,f?.fieldGroups);if(!n)return null;let r=e.columns&&e.columns>0?Math.min(Math.floor(e.columns),4):Se(t.length);return n.map(e=>({...e,columns:r}))},[e.sections,e.customFields,e.columns,e.mode,m,f]),W=e.sections?.length?e.sections:ae??void 0,G=(0,X.useMemo)(()=>W?.length||e.customFields?.length?null:Ne(m,f,e.columns,e.mode),[m,f,e.columns,e.mode,W,e.customFields]),K=Ct[(0,X.useMemo)(()=>{if(e.modalSize)return e.modalSize;if(G?.columns&&G.columns>1)return Me(G.columns);if(W?.length){let e=Math.max(...W.map(e=>Number(e.columns)||1));if(e>1)return Me(e)}return`default`},[e.modalSize,G,W])]||Ct.default;(0,X.useEffect)(()=>{(async()=>{if(!t){S(!1);return}try{let n=await t.getObjectSchema(e.objectName);p(n)}catch(e){D(e),S(!1)}})()},[e.objectName,t]),(0,X.useEffect)(()=>{(f||!t)&&(async()=>{if(e.mode===`create`||!e.recordId){b(e.initialData||e.initialValues||{}),S(!1);return}if(!t){b(e.initialData||e.initialValues||{}),S(!1);return}try{let n=await t.findOne(e.objectName,e.recordId);b(n||{})}catch(e){D(e)}finally{S(!1)}})()},[f,e.mode,e.recordId,e.initialData,e.initialValues,t,e.objectName]);let q=(0,X.useCallback)(t=>ge(t,{objectSchema:f,objectName:e.objectName,readOnly:e.readOnly,mode:e.mode,fieldLabel:i}),[f,e.readOnly,e.mode,e.objectName,i]);(0,X.useEffect)(()=>{if(!f&&t)return;if(e.customFields?.length){_(e.customFields),S(!1);return}if(e.sections?.length){S(!1);return}if(!f)return;let n=e.fields||Object.keys(f.fields||{}),r=[];for(let t of n){let n=typeof t==`string`?t:t.name;if(!n)continue;let a=f.fields?.[n];a&&r.push({name:n,label:i(e.objectName,n,a.label||n),type:te(a.type),required:a.required||!1,disabled:e.readOnly||e.mode===`view`||a.readonly,placeholder:a.placeholder,description:a.help||a.description,validation:oe(a),field:a,options:a.options,multiple:a.multiple,visibleWhen:a.visibleWhen,readonlyWhen:a.readonlyWhen,requiredWhen:a.requiredWhen??a.conditionalRequired,group:a.group})}_(r),S(!1)},[f,e.fields,e.customFields,e.sections,e.readOnly,e.mode,t]);let Y=(0,X.useCallback)(async n=>{M(!0);try{if(!t)return e.onSuccess&&await e.onSuccess(n),e.onOpenChange?.(!1),n;let r,i=ze(n,f);if(u?.isLoaded){let t={};for(let n of Object.keys(i))u.checkField(e.objectName,n,`write`)&&(t[n]=i[n]);i=t}return e.mode===`create`?r=await t.create(e.objectName,i):e.mode===`edit`&&e.recordId&&(r=await t.update(e.objectName,e.recordId,i)),e.onSuccess&&await e.onSuccess(r),e.onOpenChange?.(!1),r}catch(t){throw e.onError&&e.onError(t),t}finally{M(!1)}},[e,t,f,u]),Z=(0,X.useCallback)(()=>{z(!1),V.current&&(V.current=!1,e.onCancel?.()),e.onOpenChange?.(!1)},[e]),fe=(0,X.useCallback)(e=>{V.current=e,H&&P?z(!0):Z()},[H,P,Z]),pe=(0,X.useCallback)(()=>{V.current=!0,Z()},[Z]),me=e.layout===`vertical`||e.layout===`horizontal`?e.layout:`vertical`,he=e.showSubmit!==!1&&e.mode!==`view`,_e=e.showCancel!==!1,ve=e.submitText||(e.mode===`create`?`Create`:`Update`),ye=e.cancelText||`Cancel`,be={type:`form`,objectName:e.objectName,layout:me,defaultValues:v,submitLabel:ve,cancelLabel:ye,showSubmit:he,showCancel:_e,onSubmit:Y,onCancel:pe,onDirtyChange:F,showActions:!1,id:ie},xe=()=>{if(C)return(0,Q.jsxs)(`div`,{className:`p-4 border border-red-300 bg-red-50 rounded-md`,children:[(0,Q.jsx)(`h3`,{className:`text-red-800 font-semibold`,children:`Error loading form`}),(0,Q.jsx)(`p`,{className:`text-red-600 text-sm mt-1`,children:C.message})]});if(x)return(0,Q.jsx)(`div`,{className:`space-y-4`,"data-testid":`modal-form-skeleton`,children:[1,2,3].map(e=>(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsx)(y,{className:`h-4 w-24`}),(0,Q.jsx)(y,{className:`h-10 w-full`})]},e))});if(e.sections?.length){let t=e.sections,n=(e,t)=>e.name||e.label||String(t),r=t=>t.name?a(e.objectName,t.name,t.label||t.name):t.label,i=e=>(0,Q.jsx)(s,{schema:{...be,...je(d(q(e)),e.columns||1)}});return e.contentLayout===`tabbed`&&t.length>1?(0,Q.jsxs)(ne,{defaultValue:n(t[0],0),className:`w-full`,children:[(0,Q.jsx)(I,{className:`mb-4`,children:t.map((e,t)=>(0,Q.jsx)(ce,{value:n(e,t),children:r(e)||`Section ${t+1}`},n(e,t)))}),t.map((e,t)=>(0,Q.jsx)(B,{value:n(e,t),children:(0,Q.jsx)($,{description:e.description,columns:1,className:e.className,gridClassName:e.gridClassName,children:i(e)})},n(e,t)))]}):(0,Q.jsx)(`div`,{className:`space-y-6`,children:t.map((e,t)=>(0,Q.jsx)($,{label:r(e),description:e.description,columns:1,className:e.className,gridClassName:e.gridClassName,children:i(e)},n(e,t)))})}if(ae?.length){let t=Number(ae[0]?.columns)||1,n=[];ae.forEach((r,i)=>{let o=d(q(r));if(!o.length)return;let s=r.name?a(e.objectName,r.name,r.label||r.name):r.label;s&&n.push({name:`__section_${r.name||i}`,label:s,type:`section-divider`}),n.push(...t>1?Te(o,t):o)});let r=ke[t];return(0,Q.jsx)(s,{schema:{...be,fields:n,columns:t,...r?{fieldContainerClass:r}:{}}})}let t=G??Ne(m,f,e.columns,e.mode),n=ke[t.columns||1];return(0,Q.jsx)(s,{schema:{...be,fields:d(t.fields),columns:t.columns,...n?{fieldContainerClass:n}:{}}})},Ce=e.subforms;if(l)return(0,Q.jsxs)(`div`,{className:`@container rounded-md border bg-card p-4`,children:[(e.title||e.description)&&(0,Q.jsxs)(`div`,{className:`mb-3 space-y-0.5`,children:[e.title&&(0,Q.jsx)(`div`,{className:`text-sm font-semibold`,children:e.title}),e.description&&(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e.description})]}),xe()]});if(Ce?.length&&e.mode!==`view`)return(0,Q.jsx)(j,{open:U,onOpenChange:e.onOpenChange,children:(0,Q.jsxs)(N,{className:w(K,`flex flex-col h-[100dvh] sm:h-auto sm:max-h-[90vh] overflow-hidden p-0`,n,e.className),children:[(e.title||e.description)&&(0,Q.jsxs)(ee,{className:`shrink-0 px-4 pt-4 sm:px-6 sm:pt-6 pb-2 border-b`,children:[e.title&&(0,Q.jsx)(se,{children:e.title}),e.description?(0,Q.jsx)(E,{children:e.description}):(0,Q.jsx)(E,{className:`sr-only`,children:`Enter the record and its line items, then save.`})]}),(0,Q.jsx)(`div`,{className:`@container flex-1 overflow-y-auto px-4 sm:px-6 py-4`,children:(0,Q.jsx)(_t,{schema:{type:`object-master-detail-form`,objectName:e.objectName,mode:e.mode===`edit`?`edit`:`create`,recordId:e.recordId,fields:e.fields,sections:e.sections,initialValues:e.initialValues,initialData:e.initialData,submitText:ve,cancelText:ye,details:Ce,onSuccess:async t=>{await e.onSuccess?.(t),e.onOpenChange?.(!1)},onError:e.onError,onCancel:()=>e.onOpenChange?.(!1)},dataSource:t})})]})});let we=!x&&!C&&(he||_e);return(0,Q.jsx)(j,{open:U,onOpenChange:t=>{if(t){e.onOpenChange?.(!0);return}fe(!1)},children:(0,Q.jsxs)(N,{className:w(K,`flex flex-col h-[100dvh] sm:h-auto sm:max-h-[90vh] overflow-hidden p-0`,n,e.className),children:[(e.title||e.description)&&(0,Q.jsxs)(ee,{className:`shrink-0 px-4 pt-4 sm:px-6 sm:pt-6 pb-2 border-b`,children:[e.title&&(0,Q.jsx)(se,{children:e.title}),e.description?(0,Q.jsx)(E,{children:e.description}):(0,Q.jsx)(E,{className:`sr-only`,children:`Complete the form fields, then submit or cancel.`})]}),(0,Q.jsx)(`div`,{className:`@container flex-1 overflow-y-auto px-4 sm:px-6 py-4`,children:xe()}),we&&(0,Q.jsx)(`div`,{className:`shrink-0 border-t px-4 sm:px-6 py-3 bg-background`,"data-testid":`modal-form-footer`,children:(0,Q.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-2 sm:justify-end`,children:[_e&&(0,Q.jsx)(T,{type:`button`,variant:`outline`,onClick:pe,disabled:A,className:`w-full sm:w-auto`,children:ye}),he&&(0,Q.jsxs)(T,{type:`submit`,form:ie,disabled:A,className:`w-full sm:w-auto`,children:[A&&(0,Q.jsx)(re,{className:`mr-2 h-4 w-4 animate-spin`}),ve]})]})}),(0,Q.jsx)(de,{open:L,onOpenChange:z,children:(0,Q.jsxs)(O,{children:[(0,Q.jsxs)(k,{children:[(0,Q.jsx)(g,{children:c(`form.discardTitle`)}),(0,Q.jsx)(h,{children:c(`form.discardMessage`)})]}),(0,Q.jsxs)(le,{children:[(0,Q.jsx)(ue,{onClick:()=>{V.current=!1},children:c(`form.keepEditing`)}),(0,Q.jsx)(R,{onClick:Z,children:c(`form.discard`)})]})]})})]})})},Tt=({schema:e,dataSource:t})=>{let n=r(),i=(0,X.useMemo)(()=>{let t=e.groups,r=!e.sections?.length&&Array.isArray(t)&&t.length?{...e,sections:t.map(e=>({label:e.title??e.label,description:e.description,collapsible:e.collapsible,collapsed:e.defaultCollapsed??e.collapsed,fields:e.fields??[]}))}:e;if(!n?.isLoaded)return r;let i=e=>e?.name?n.checkField(r.objectName,e.name,`read`)?!n.checkField(r.objectName,e.name,`write`)&&r.mode!==`view`?{...e,readOnly:!0,disabled:!0}:e:null:e,a=e=>Array.isArray(e)?e.map(i).filter(Boolean):e;return{...r,fields:a(r.fields),sections:r.sections?.map(e=>({...e,fields:a(e.fields)}))}},[e,n]),{sectionLabel:a}=J(),o=e=>e?.name?a(i.objectName,e.name,e.label||e.name):e?.label;if(i.subforms?.length&&i.mode!==`view`&&i.formType!==`drawer`&&i.formType!==`modal`)return(0,Q.jsx)(_t,{schema:{type:`object-master-detail-form`,objectName:i.objectName,mode:i.mode===`edit`?`edit`:`create`,recordId:i.recordId,initialValues:i.initialValues,initialData:i.initialData,formType:i.formType===`tabbed`?`tabbed`:`simple`,sections:i.sections,fields:i.fields,title:i.title,submitText:i.submitText,cancelText:i.cancelText,showSubmit:i.showSubmit,details:i.subforms,onSuccess:i.onSuccess,onError:i.onError,onCancel:i.onCancel,className:i.className},dataSource:t});if(i.formType===`tabbed`&&i.sections?.length)return(0,Q.jsx)(Pe,{schema:{...i,formType:`tabbed`,sections:i.sections.map(e=>({name:e.name,label:o(e),description:e.description,columns:e.columns,fields:e.fields,className:e.className,gridClassName:e.gridClassName})),defaultTab:i.defaultTab,tabPosition:i.tabPosition},dataSource:t,className:i.className});if(i.formType===`wizard`&&i.sections?.length)return(0,Q.jsx)(Fe,{schema:{...i,formType:`wizard`,sections:i.sections.map(e=>({name:e.name,label:o(e),description:e.description,columns:e.columns,fields:e.fields,className:e.className,gridClassName:e.gridClassName})),allowSkip:i.allowSkip,showStepIndicator:i.showStepIndicator,nextText:i.nextText,prevText:i.prevText,onStepChange:i.onStepChange},dataSource:t,className:i.className});if(i.formType===`split`&&i.sections?.length)return(0,Q.jsx)(Ie,{schema:{...i,formType:`split`,sections:i.sections.map(e=>({name:e.name,label:o(e),description:e.description,columns:e.columns,fields:e.fields,className:e.className,gridClassName:e.gridClassName})),splitDirection:i.splitDirection,splitSize:i.splitSize,splitResizable:i.splitResizable},dataSource:t,className:i.className});if(i.formType===`drawer`){let{layout:e,...n}=i,r=i.layout===`vertical`||i.layout===`horizontal`?i.layout:void 0;return(0,Q.jsx)(bt,{schema:{...n,layout:r,formType:`drawer`,sections:i.sections?.map(e=>({name:e.name,label:o(e),description:e.description,columns:e.columns,fields:e.fields,collapsible:e.collapsible,collapsed:e.collapsed,className:e.className})),open:i.open,onOpenChange:i.onOpenChange,drawerSide:i.drawerSide,drawerWidth:i.drawerWidth},dataSource:t,className:i.className})}if(i.formType===`modal`){let{layout:e,...n}=i,r=i.layout===`vertical`||i.layout===`horizontal`?i.layout:void 0;return(0,Q.jsx)(wt,{schema:{...n,layout:r,formType:`modal`,sections:i.sections?.map(e=>({name:e.name,label:o(e),description:e.description,columns:e.columns,fields:e.fields,className:e.className,gridClassName:e.gridClassName})),open:i.open,onOpenChange:i.onOpenChange,modalSize:i.modalSize,modalCloseButton:i.modalCloseButton},dataSource:t,className:i.className})}return(0,Q.jsx)(Et,{schema:i,dataSource:t})},Et=({schema:e,dataSource:t})=>{let{fieldLabel:n,sectionLabel:i}=J(),a=C(),o=r(),c=(0,X.useCallback)(t=>{if(!o?.isLoaded)return t;let n=[];for(let r of t)o.checkField(e.objectName,r.name,`read`)&&(!o.checkField(e.objectName,r.name,`write`)&&e.mode!==`view`?n.push({...r,readOnly:!0,disabled:!0,description:r.description??`You do not have edit access to this field.`}):n.push(r));return n},[o,e.objectName,e.mode]),[l,d]=(0,X.useState)(null),[f,p]=(0,X.useState)([]),[m,h]=(0,X.useState)(null),[g,_]=(0,X.useState)(!0),[v,y]=(0,X.useState)(null),[b,x]=(0,X.useState)(null),S=e.customFields&&e.customFields.length>0;(0,X.useEffect)(()=>{S&&(h(e.initialData||e.initialValues||{}),_(!1))},[S,e.initialData,e.initialValues]),(0,X.useEffect)(()=>{S?d({name:e.objectName,fields:{}}):e.objectName&&t?(async()=>{try{if(!t)throw Error(`DataSource is required when using ObjectQL schema fetching (inline fields not provided)`);let n=await t.getObjectSchema(e.objectName);if(!n)throw Error(`No schema found for object "${e.objectName}"`);d(n)}catch(e){y(e),_(!1)}})():S||_(!1)},[e.objectName,t,S]),(0,X.useEffect)(()=>{l&&!S&&(async()=>{if(!e.recordId||e.mode===`create`){h(e.initialData||e.initialValues||{}),_(!1);return}if(!S){if(!t){y(Error(`DataSource is required for fetching record data (inline data not provided)`)),_(!1);return}_(!0);try{let n=await t.findOne(e.objectName,e.recordId);h(n)}catch(e){console.error(`Failed to fetch record:`,e),y(e)}finally{_(!1)}}})()},[e.objectName,e.recordId,e.mode,e.initialValues,e.initialData,t,l,S]);let w=(0,X.useCallback)(e=>e,[]);(0,X.useEffect)(()=>{if(S&&e.customFields){p(e.customFields.map(w)),_(!1);return}if(!l)return;let r=[],i=u(l),a=!(e.mode===`edit`?i.edit:e.mode!==`create`||i.create),o=e.fields||Object.keys(l.fields||{});(Array.isArray(o)?o:Object.keys(o)).forEach(t=>{let i=typeof t==`string`?t:t.name;if(!i)return;let o=l.fields?.[i];if(!o&&!S)return;let s=!o?.permissions||o?.permissions.write!==!1;if(e.mode!==`view`&&!s)return;let c=e.customFields?.find(e=>e.name===i);if(c)r.push(w(c));else if(o){let s={name:i,label:n(e.objectName,i,o.label||t),type:te(o.type),required:o.required||!1,disabled:e.readOnly||e.mode===`view`||o.readonly||a,placeholder:o.placeholder,description:o.help||o.description,validation:oe(o),visibleWhen:o.visibleWhen,readonlyWhen:o.readonlyWhen,requiredWhen:o.requiredWhen??o.conditionalRequired,group:o.group,field:o,widget:o.widget};if((o.type===`select`||o.type===`lookup`||o.type===`master_detail`)&&(s.options=o.options||[],s.multiple=o.multiple),(o.type===`number`||o.type===`currency`||o.type===`percent`)&&(s.inputType=`number`,s.min=o.min,s.max=o.max,s.step=o.precision?10**-o.precision:void 0),o.type===`date`&&(s.inputType=`date`),o.type===`datetime`&&(s.inputType=`datetime-local`),(o.type===`text`||o.type===`textarea`||o.type===`markdown`||o.type===`html`)&&(s.maxLength=o.max_length,s.minLength=o.min_length),(o.type===`file`||o.type===`image`)&&(s.inputType=`file`,s.multiple=o.multiple,s.accept=o.accept?o.accept.join(`,`):void 0,o.max_size)){let e=`Max size: ${W(o.max_size)}`;s.description=s.description?`${s.description} (${e})`:e}o.type===`email`&&(s.inputType=`email`),o.type===`phone`&&(s.inputType=`tel`),o.type===`url`&&(s.inputType=`url`),o.type===`password`&&(s.inputType=`password`),o.type===`time`&&(s.inputType=`time`),(o.type===`formula`||o.type===`summary`||o.type===`auto_number`)&&(s.disabled=!0),o.visible_on&&(s.visibleOn=o.visible_on),r.push(s)}}),p(r),!S&&e.recordId&&e.mode!==`create`&&t||_(!1)},[l,e.fields,e.customFields,e.readOnly,e.mode,S,e.recordId,t]);let T=(0,X.useCallback)(async(n,r)=>{if(n&&(n.nativeEvent||n._reactName===`onSubmit`)&&(console.warn(`ObjectForm: Received Event instead of data in handleSubmit! This suggests a Form renderer issue.`),r===void 0&&(n={})),S&&!t)return e.onSuccess&&await e.onSuccess(n),n;if(!t)throw Error(`DataSource is required for form submission (inline mode not configured)`);let i=ze(n,S?null:l);if(o?.isLoaded&&i&&typeof i==`object`){let t={};for(let n of Object.keys(i))o.checkField(e.objectName,n,`write`)&&(t[n]=i[n]);i=t}try{let n;if(e.submitHandler)n=await e.submitHandler(i);else if(e.mode===`create`)n=await t.create(e.objectName,i);else if(e.mode===`edit`&&e.recordId)n=await t.update(e.objectName,e.recordId,i);else throw Error(`Invalid form mode or missing record ID`);if(e.onSuccess)await e.onSuccess(n);else if(!e.submitHandler&&e.submitBehavior){let t=e.submitBehavior;switch(t.kind){case`redirect`:Z(t.url)&&setTimeout(()=>window.location.assign(t.url),t.delayMs??0);break;case`continue`:break;default:{let n=t.kind===`thank-you`&&t.message?t.message:e.successMessage||(e.mode===`create`?`Created`:`Saved`);Y.success(n),x({title:t.kind===`thank-you`?t.title:void 0,message:n});break}}}else if(!e.submitHandler){let t=fe(e.navigateOnSuccess,n);if(t)return window.location.assign(t),n;Y.success(e.successMessage||(e.mode===`create`?`Created`:`Saved`))}return n}catch(t){throw console.error(`Failed to submit form:`,t),e.onError&&e.onError(t),t}},[e,t,S,o,l]),E=(0,X.useCallback)(()=>{e.onCancel&&e.onCancel()},[e]),D={...X.useMemo(()=>{if(!l?.fields)return{};let e={};return Object.keys(l.fields).forEach(t=>{let n=l.fields[t];n.defaultValue!==void 0&&(e[t]=n.defaultValue)}),e},[l]),...m},O=X.useMemo(()=>{let t=De(f,l);return e.mode===`create`&&(t=Oe(t,l)),t},[f,l,e.mode]),k=X.useMemo(()=>e.sections?.length?null:xt(O,l?.fieldGroups),[e.sections,O,l]),A=e.sections?.length?e.sections:k,[j,M]=(0,X.useState)({});if(v)return(0,Q.jsxs)(`div`,{className:`p-3 sm:p-4 border border-red-300 bg-red-50 rounded-md`,children:[(0,Q.jsx)(`h3`,{className:`text-red-800 font-semibold`,children:`Error loading form`}),(0,Q.jsx)(`p`,{className:`text-red-600 text-sm mt-1`,children:v.message})]});if(g)return(0,Q.jsxs)(`div`,{className:`p-4 sm:p-8 text-center`,children:[(0,Q.jsx)(`div`,{className:`inline-block animate-spin rounded-full h-8 w-8 border-b-2 border-gray-900`}),(0,Q.jsx)(`p`,{className:`mt-2 text-sm text-gray-600`,children:`Loading form...`})]});if(b)return(0,Q.jsxs)(`div`,{className:`rounded-md border bg-card p-6 sm:p-8 text-center`,children:[(0,Q.jsx)(`h3`,{className:`text-lg font-semibold`,children:b.title??`Thanks!`}),b.message&&(0,Q.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:b.message})]});let N=e.layout===`vertical`||e.layout===`horizontal`?e.layout:`vertical`;if(A?.length&&(!e.formType||e.formType===`simple`)){let t=k?O:f,n=e=>typeof e==`number`&&e>0?Math.min(Math.floor(e),4):void 0,r=A.map(e=>n(e.columns)).filter(e=>e!=null),a=A.reduce((e,t)=>e+(Array.isArray(t.fields)?t.fields.length:0),0),o=n(e.columns)??(r.length?Math.max(...r):Se(a)),l=[];A.forEach((r,a)=>{let s=new Map(r.fields.map(e=>[typeof e==`string`?e:e.field??e.name,e])),u=Array.from(s.keys()),d=c(t.filter(e=>u.includes(e.name))).map(e=>{let t=s.get(e.name);if(!t||typeof t!=`object`)return e;let n=t,r={...e};return n.visibleOn!=null&&(r.visibleOn=n.visibleOn),n.colSpan!=null&&(r.colSpan=n.colSpan),n.span!=null&&(r.span=n.span),r});if(d.length===0)return;let f=r.name||r.label||String(a),p=r.name?i(e.objectName,r.name,r.label||r.name):r.label,m=j[f]??r.collapsed??!1;p&&l.push({name:`__section_${f}`,label:p,type:`section-divider`,colSpan:4,collapsible:r.collapsible,collapsed:m,onToggle:r.collapsible?()=>M(e=>({...e,[f]:!m})):void 0,className:r.className});let h=n(r.columns),g=o>1?Te(d,o,h):d;p&&m?l.push(...g.map(e=>({...e,hidden:!0}))):l.push(...g)});let u=l,d=Ae(o);return(0,Q.jsx)(`div`,{className:`w-full @container`,children:(0,Q.jsx)(s,{schema:{type:`form`,objectName:e.objectName,fields:u,layout:N,columns:o,...d?{fieldContainerClass:d}:{},defaultValues:D,showSubmit:e.showSubmit!==!1&&e.mode!==`view`,showCancel:e.showCancel!==!1,submitLabel:e.submitText||(e.mode===`create`?`Create`:`Update`),cancelLabel:e.cancelText,onSubmit:T,onCancel:E}})})}let P=e.sections?.length,F=c(f),I=P?{fields:F,columns:e.columns}:Ne(F,l,e.columns,e.mode),L=e.mobile,R=L?.fullscreenLongText?I.fields.map(e=>{let t=e.type;return t===`textarea`||t===`field:textarea`||t===`string-multiline`||t===`field:markdown`||t===`field:html`?{...e,mobile_fullscreen:!0}:e}):I.fields,z=L?.stepper,ee=L?.stepperMinFields??8,B=Math.max(1,L?.stepperFieldsPerStep??1);if(!e.formType&&!P&&R.length>=2&&(z===!0||z===`auto`&&a&&R.length>=ee)){let n=R,r=[];for(let e=0;e<n.length;e+=B){let t=n.slice(e,e+B);r.push({name:`step-${Math.floor(e/B)+1}`,label:t[0]?.label||t[0]?.name||`Step ${Math.floor(e/B)+1}`,fields:t})}return(0,Q.jsx)(Fe,{schema:{...e,formType:`wizard`,sections:r,showStepIndicator:!0},dataSource:t,className:e.className})}let ne={type:`form`,objectName:e.objectName,fields:R,layout:N,columns:I.columns,submitLabel:e.submitText||(e.mode===`create`?`Create`:`Update`),cancelLabel:e.cancelText,showSubmit:e.showSubmit!==!1&&e.mode!==`view`,showCancel:e.showCancel!==!1,resetOnSubmit:e.showReset||e.submitBehavior?.kind===`continue`||!e.submitBehavior&&e.resetOnSuccess&&e.mode===`create`,defaultValues:D,onSubmit:T,onCancel:E,className:e.className,mobileStickyActions:!!L?.stickyActions};return(0,Q.jsx)(`div`,{className:L?.stickyActions?`w-full pb-20 md:pb-0`:`w-full`,"data-mobile-form":L?`true`:void 0,children:(0,Q.jsx)(s,{schema:ne})})},Dt={text:200,email:254,url:2048,phone:32,textarea:5e3,markdown:5e3,html:5e3},Ot=`_company_website_2`,kt=1500;function At(e,t=[]){try{let n=new URL(e,typeof window<`u`?window.location.href:`http://localhost`);return typeof window<`u`&&n.origin===window.location.origin?!0:n.protocol!==`https:`&&n.protocol!==`http:`?!1:t.some(e=>{if(e===n.host)return!0;if(e.startsWith(`*.`)){let t=e.slice(1);return n.host.endsWith(t)&&n.host.length>t.length}return!1})}catch{return!1}}function jt(e){return e&&e.map(e=>{let t=Dt[String(e.type||``).toLowerCase()];return!t||(e.maxLength??e.max_length)?e:{...e,maxLength:t}})}var Mt=({config:e,dataSource:t,prefillParams:n,className:r})=>{let[i,a]=(0,X.useState)(!1),[o,s]=(0,X.useState)(!1),[c,l]=(0,X.useState)(null),[u,d]=(0,X.useState)(!(e.consent?.required??!!e.consent)),[f,m]=(0,X.useState)(null),h=(0,X.useRef)(null),g=(0,X.useRef)(0);(0,X.useEffect)(()=>{i||(g.current=Date.now())},[i]);let v=e.honeypot===!1?null:e.honeypot||Ot,y=e.minFillTime??kt,b=(0,X.useMemo)(()=>jt(e.customFields),[e.customFields]),S=(0,X.useMemo)(()=>{if(!t||b&&b.length>0||!e.fields||e.fields.length===0)return;let n=async(e,t)=>t;return{...t,create:n,update:(e,t,n)=>Promise.resolve(n),delete:()=>Promise.reject(Error(`Not permitted on public form`))}},[t,b,e.fields]),C=(0,X.useMemo)(()=>{let t={};if(n)for(let[e,r]of Object.entries(n))t[e]=r;if(typeof window<`u`&&e.allowedPrefillFields?.length){let n=new Set(e.allowedPrefillFields);new URLSearchParams(window.location.search).forEach((e,r)=>{n.has(r)&&!(r in t)&&(t[r]=e)})}return Object.keys(t).length>0?t:void 0},[n,e.allowedPrefillFields]),w=(0,X.useCallback)(async n=>{if(e.consent?.required&&!u){m(e.texts?.consentRequired??`Please accept the privacy policy to continue.`);return}if(m(null),v&&h.current?.value){a(!0);return}if(y>0&&Date.now()-g.current<y){l(e.texts?.rateLimited??`Please take a moment to review your answers before submitting.`);return}let r={...n};v&&delete r[v],e.captchaToken&&(r._captcha=e.captchaToken),s(!0),l(null);try{t&&await t.create(e.objectName,r),a(!0);let n=e.thankYouPage?.redirectUrl;if(n)if(At(n,e.allowedRedirectHosts)){let t=e.thankYouPage?.redirectDelay??3e3;setTimeout(()=>{window.location.href=n},t)}else console.warn(`[EmbeddableForm] Blocked unsafe redirect target:`,n),l(e.texts?.redirectBlocked??null)}catch(e){l(e instanceof Error?e.message:`Failed to submit form. Please try again.`)}finally{s(!1)}},[t,e,u,v,y]),E=(0,X.useCallback)(()=>{a(!1),l(null)},[]),D=(0,X.useMemo)(()=>{let t={};return e.branding?.backgroundColor&&(t.backgroundColor=e.branding.backgroundColor),t},[e.branding]);if(i){let t=e.thankYouPage,n=e.texts??{},i=Math.ceil((t?.redirectDelay??3e3)/1e3),a=(n.redirecting??`Redirecting in {{seconds}} seconds…`).replace(`{{seconds}}`,String(i));return(0,Q.jsx)(`div`,{className:`min-h-screen flex items-center justify-center p-4 bg-gradient-to-b from-muted/40 via-background to-background ${r||``}`,style:D,children:(0,Q.jsxs)(`div`,{className:`max-w-md w-full bg-card border rounded-xl shadow-sm p-8 text-center space-y-4`,children:[(0,Q.jsx)(`div`,{className:`mx-auto inline-flex h-14 w-14 items-center justify-center rounded-full bg-emerald-50 text-emerald-600 dark:bg-emerald-500/10 dark:text-emerald-400`,children:(0,Q.jsx)(_,{className:`h-8 w-8`,"aria-hidden":`true`})}),(0,Q.jsx)(`h2`,{className:`text-xl font-semibold text-foreground`,children:t?.title||n.thankYouTitle||`Thank You!`}),(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:t?.message||n.thankYouMessage||`Your submission has been received successfully.`}),e.allowMultiple&&(0,Q.jsx)(T,{variant:`outline`,size:`sm`,onClick:E,className:`mt-2`,children:n.submitAnother??`Submit Another Response`}),t?.redirectUrl&&(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:a})]})})}let O=e.texts??{},k=!!e.consent?.required,A=`${e.formId}-consent`;return(0,Q.jsx)(`div`,{className:`min-h-screen flex items-center justify-center p-4 sm:p-6 bg-gradient-to-b from-muted/40 via-background to-background ${r||``}`,style:D,children:(0,Q.jsxs)(`div`,{className:`max-w-2xl w-full bg-card border rounded-xl shadow-sm overflow-hidden`,children:[e.branding?.coverImage&&(0,Q.jsx)(`div`,{className:`h-28 sm:h-32 w-full bg-cover bg-center`,style:{backgroundImage:`url(${JSON.stringify(e.branding.coverImage)})`},role:`presentation`}),(0,Q.jsxs)(`div`,{className:`px-6 sm:px-8 pt-7 pb-5 border-b bg-muted/20`,style:e.branding?.primaryColor?{borderBottomColor:e.branding.primaryColor}:void 0,children:[e.branding?.logo&&(0,Q.jsx)(`img`,{src:e.branding.logo,alt:``,className:`h-8 mb-4`}),e.title&&(0,Q.jsx)(`h1`,{className:`text-2xl font-semibold tracking-tight text-foreground`,children:e.title}),e.description&&(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground mt-2 leading-relaxed`,children:e.description}),(0,Q.jsx)(`p`,{className:`text-[11px] text-muted-foreground/70 mt-3`,"aria-hidden":`true`,children:O.requiredHint??`* Required field`})]}),(0,Q.jsxs)(`div`,{className:`relative px-6 sm:px-8 py-6`,children:[c&&(0,Q.jsx)(`div`,{role:`alert`,"aria-live":`assertive`,className:`mb-4 p-3 bg-destructive/10 border border-destructive/30 rounded-md text-sm text-destructive`,children:c}),(0,Q.jsx)(Tt,{schema:{type:`object-form`,objectName:e.objectName,mode:`create`,fields:e.fields,customFields:b,initialData:C,onSuccess:w,submitText:o?O.submitting??`Submitting...`:O.submit??`Submit`},dataSource:S}),v&&(0,Q.jsxs)(`div`,{"aria-hidden":`true`,className:`absolute left-[-10000px] top-auto h-px w-px overflow-hidden`,children:[(0,Q.jsx)(`label`,{htmlFor:`${e.formId}-${v}`,children:`Do not fill this field`}),(0,Q.jsx)(`input`,{ref:h,id:`${e.formId}-${v}`,type:`text`,name:v,tabIndex:-1,autoComplete:`off`,defaultValue:``})]}),e.consent&&(0,Q.jsxs)(`div`,{className:`mt-4`,children:[(0,Q.jsxs)(`label`,{className:`flex items-start gap-2 text-sm text-foreground cursor-pointer select-none`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,id:A,checked:u,onChange:e=>{d(e.target.checked),e.target.checked&&m(null)},"aria-required":k||void 0,"aria-invalid":f?`true`:void 0,"aria-describedby":f?`${A}-error`:void 0,className:`mt-0.5 h-4 w-4 rounded border-input accent-primary`}),(0,Q.jsxs)(`span`,{className:`leading-relaxed`,children:[e.consent.label??O.consentLabelDefault??`I agree to the privacy policy.`,k&&(0,Q.jsx)(`span`,{"aria-hidden":`true`,className:`text-destructive ml-0.5`,children:`*`}),e.consent.privacyUrl&&(0,Q.jsxs)(Q.Fragment,{children:[` `,(0,Q.jsx)(`a`,{href:e.consent.privacyUrl,target:`_blank`,rel:`noopener noreferrer`,className:`underline text-primary hover:opacity-80`,children:O.consentLink??`Privacy policy`})]})]})]}),f&&(0,Q.jsx)(`p`,{id:`${A}-error`,role:`alert`,className:`mt-1.5 text-xs text-destructive`,children:f})]}),o&&(0,Q.jsxs)(`div`,{className:`mt-3 flex items-center gap-2 text-xs text-muted-foreground`,children:[(0,Q.jsx)(re,{className:`h-3.5 w-3.5 animate-spin`,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{children:O.submitting??`Submitting…`})]})]}),(0,Q.jsxs)(`div`,{className:`px-6 sm:px-8 py-4 border-t bg-muted/20 flex flex-col sm:flex-row items-center justify-between gap-2`,children:[(0,Q.jsxs)(`p`,{className:`inline-flex items-center gap-1.5 text-xs text-muted-foreground`,children:[(0,Q.jsx)(x,{className:`h-3 w-3`,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{children:O.secureNotice??`Your information is transmitted securely and only used to respond to your request.`})]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-3 text-xs text-muted-foreground/80`,children:[e.privacyPolicyUrl&&(0,Q.jsxs)(`a`,{href:e.privacyPolicyUrl,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 underline hover:text-foreground`,children:[(0,Q.jsx)(p,{className:`h-3 w-3`,"aria-hidden":`true`}),O.consentLink??`Privacy policy`]}),(0,Q.jsx)(`span`,{children:O.poweredBy??`Powered by ObjectStack`})]})]})]})})};function Nt(e){return e<60?`${Math.round(e)}s`:e<3600?`${Math.floor(e/60)}m ${Math.round(e%60)}s`:`${Math.floor(e/3600)}h ${Math.floor(e%3600/60)}m`}var Pt=({formId:e,formTitle:t,metrics:n,className:r})=>{let i=(0,X.useMemo)(()=>{if(!n.abandonedSubmissions)return 100;let e=n.totalSubmissions+n.abandonedSubmissions;return e===0?0:Math.round(n.totalSubmissions/e*100)},[n.totalSubmissions,n.abandonedSubmissions]),a=(0,X.useMemo)(()=>n.dailySubmissions?.length?Math.max(...n.dailySubmissions.map(e=>e.count),1):1,[n.dailySubmissions]);return(0,Q.jsxs)(`div`,{className:`space-y-4 ${r||``}`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h2`,{className:`text-lg font-semibold text-foreground`,children:t||`Form Analytics`}),(0,Q.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`Form ID: `,e]})]}),(0,Q.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-3 gap-4`,children:[(0,Q.jsx)(U,{children:(0,Q.jsxs)(V,{className:`pb-2`,children:[(0,Q.jsx)(z,{children:`Total Submissions`}),(0,Q.jsx)(q,{className:`text-2xl`,children:n.totalSubmissions.toLocaleString()})]})}),(0,Q.jsxs)(U,{children:[(0,Q.jsxs)(V,{className:`pb-2`,children:[(0,Q.jsx)(z,{children:`Fill Rate`}),(0,Q.jsxs)(q,{className:`text-2xl`,children:[i,`%`]})]}),(0,Q.jsx)(K,{children:(0,Q.jsx)(`div`,{className:`w-full bg-muted rounded-full h-2`,children:(0,Q.jsx)(`div`,{className:`bg-primary rounded-full h-2 transition-all`,style:{width:`${i}%`}})})})]}),(0,Q.jsx)(U,{children:(0,Q.jsxs)(V,{className:`pb-2`,children:[(0,Q.jsx)(z,{children:`Avg. Completion Time`}),(0,Q.jsx)(q,{className:`text-2xl`,children:n.avgCompletionTime?Nt(n.avgCompletionTime):`—`})]})})]}),n.dailySubmissions&&n.dailySubmissions.length>0&&(0,Q.jsxs)(U,{children:[(0,Q.jsx)(V,{children:(0,Q.jsx)(q,{className:`text-sm font-medium`,children:`Daily Submissions`})}),(0,Q.jsx)(K,{children:(0,Q.jsx)(`div`,{className:`flex items-end gap-1 h-32`,children:n.dailySubmissions.map((e,t)=>(0,Q.jsxs)(`div`,{className:`flex-1 flex flex-col items-center gap-1`,children:[(0,Q.jsx)(`div`,{className:`w-full bg-primary/80 rounded-t transition-all hover:bg-primary`,style:{height:`${e.count/a*100}%`,minHeight:e.count>0?`4px`:`0`},title:`${e.date}: ${e.count} submissions`}),(0,Q.jsx)(`span`,{className:`text-[10px] text-muted-foreground truncate w-full text-center`,children:e.date.slice(-5)})]},t))})})]}),n.fieldDropOff&&n.fieldDropOff.length>0&&(0,Q.jsxs)(U,{children:[(0,Q.jsxs)(V,{children:[(0,Q.jsx)(q,{className:`text-sm font-medium`,children:`Field Completion Rates`}),(0,Q.jsx)(z,{children:`Percentage of users who completed each field`})]}),(0,Q.jsx)(K,{children:(0,Q.jsx)(`div`,{className:`space-y-3`,children:n.fieldDropOff.map((e,t)=>(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsxs)(`div`,{className:`flex justify-between text-sm`,children:[(0,Q.jsx)(`span`,{className:`text-foreground`,children:e.label}),(0,Q.jsxs)(`span`,{className:`text-muted-foreground`,children:[e.completionRate,`%`]})]}),(0,Q.jsx)(`div`,{className:`w-full bg-muted rounded-full h-1.5`,children:(0,Q.jsx)(`div`,{className:`rounded-full h-1.5 transition-all ${e.completionRate>=80?`bg-green-500`:e.completionRate>=50?`bg-yellow-500`:`bg-destructive`}`,style:{width:`${e.completionRate}%`}})})]},t))})})]})]})},Ft=({schema:e})=>{let t=d()?.dataSource,n=i(),r=e.parentObject||n?.objectName,o=e.parentId||e.recordId||n?.recordId,[s,c]=(0,X.useState)([]),[l,u]=(0,X.useState)([]),[f,p]=(0,X.useState)(!0),[m,h]=(0,X.useState)(!1),[g,_]=(0,X.useState)(!1),[v,y]=(0,X.useState)(null),[b,x]=(0,X.useState)(null);(0,X.useEffect)(()=>{let n=t;if(!n||typeof n.getObjectSchema!=`function`)return;let r=!1;return n.getObjectSchema(e.childObject).then(e=>{r||x(e??null)}).catch(()=>{r||x(null)}),()=>{r=!0}},[t,e.childObject]);let S=(0,X.useCallback)(async()=>{if(!t||!o){p(!1);return}p(!0);try{let n=(await t.find(e.childObject,{$filter:{[e.relationshipField]:o},$top:500}))?.data??[];c(n.map(e=>({...e}))),u(n.map(e=>({...e}))),_(!1)}catch(e){y(e?.message||`Failed to load line items`)}finally{p(!1)}},[t,o,e.childObject,e.relationshipField]);(0,X.useEffect)(()=>{S()},[S]);let C=(0,X.useCallback)(e=>{c(e),_(!0)},[]),E=(0,X.useCallback)(async()=>{if(!(!t||!o)){h(!0),y(null);try{let n=!!(r&&e.totalField),i=n?{[e.totalField]:qe(s,e.amountField||`amount`)}:{},c=Ge(r??``,o,i,[{childObject:e.childObject,relationshipField:e.relationshipField,rows:s,original:l,childSchema:b}]);n||(c=c.slice(1)),c.length&&await a(t,c),await S()}catch(e){y(e?.message||`Failed to save line items`)}finally{h(!1)}}},[t,o,s,l,e,r,S,b]),O=(0,X.useMemo)(()=>({columns:e.columns,total_field:e.totalField?e.amountField||`amount`:void 0,min_rows:e.minRows,max_rows:e.maxRows,allow_add:!e.readonly,allow_delete:!e.readonly}),[e]);return(0,Q.jsxs)(U,{className:w(`shadow-none`),children:[(0,Q.jsxs)(V,{className:`flex-row items-center justify-between gap-2 pb-2`,children:[(0,Q.jsx)(q,{className:`text-sm font-medium`,children:e.title||`Line Items`}),!e.readonly&&(0,Q.jsx)(T,{type:`button`,size:`sm`,onClick:E,disabled:m||f||!g||!o,children:m?`Saving…`:`Save`})]}),(0,Q.jsxs)(K,{children:[v&&(0,Q.jsx)(`p`,{className:`mb-2 text-sm text-destructive`,children:v}),f?(0,Q.jsx)(`p`,{className:`py-6 text-center text-sm text-muted-foreground`,children:`Loading…`}):o?(0,Q.jsx)(D,{value:s,onChange:C,field:O,readonly:e.readonly}):(0,Q.jsx)(`p`,{className:`py-6 text-center text-sm text-muted-foreground`,children:`Save the record first to add line items.`})]})]})},It=({schema:e})=>(0,Q.jsx)(Tt,{schema:e,dataSource:(0,X.useContext)(c)?.dataSource??void 0});l.register(`object-form`,It,{namespace:`plugin-form`,label:`Object Form`,category:`plugin`,inputs:[{name:`objectName`,type:`string`,label:`Object Name`,required:!0},{name:`fields`,type:`array`,label:`Fields`},{name:`mode`,type:`enum`,label:`Mode`,enum:[`create`,`edit`,`view`]},{name:`formType`,type:`enum`,label:`Form Type`,enum:[`simple`,`tabbed`,`wizard`,`split`,`drawer`,`modal`]},{name:`sections`,type:`array`,label:`Sections`},{name:`title`,type:`string`,label:`Title`},{name:`description`,type:`string`,label:`Description`},{name:`layout`,type:`enum`,label:`Layout`,enum:[`vertical`,`horizontal`,`inline`,`grid`]},{name:`columns`,type:`number`,label:`Columns`},{name:`defaultTab`,type:`string`,label:`Default Tab`},{name:`tabPosition`,type:`enum`,label:`Tab Position`,enum:[`top`,`bottom`,`left`,`right`]},{name:`allowSkip`,type:`boolean`,label:`Allow Skip Steps`},{name:`showStepIndicator`,type:`boolean`,label:`Show Step Indicator`},{name:`splitDirection`,type:`enum`,label:`Split Direction`,enum:[`horizontal`,`vertical`]},{name:`splitSize`,type:`number`,label:`Split Panel Size (%)`},{name:`splitResizable`,type:`boolean`,label:`Split Resizable`},{name:`drawerSide`,type:`enum`,label:`Drawer Side`,enum:[`top`,`bottom`,`left`,`right`]},{name:`drawerWidth`,type:`string`,label:`Drawer Width`},{name:`modalSize`,type:`enum`,label:`Modal Size`,enum:[`sm`,`default`,`lg`,`xl`,`full`]}]}),l.register(`form`,It,{namespace:`view`,skipFallback:!0,label:`Data Form View`,category:`view`,inputs:[{name:`objectName`,type:`string`,label:`Object Name`,required:!0},{name:`fields`,type:`array`,label:`Fields`},{name:`mode`,type:`enum`,label:`Mode`,enum:[`create`,`edit`,`view`]}]}),l.register(`embeddable-form`,({schema:e})=>(0,Q.jsx)(Mt,{config:e}),{namespace:`plugin-form`,label:`Embeddable Form`,category:`plugin`,inputs:[{name:`formId`,type:`string`,label:`Form ID`,required:!0},{name:`objectName`,type:`string`,label:`Object Name`,required:!0},{name:`title`,type:`string`,label:`Form Title`},{name:`description`,type:`string`,label:`Description`},{name:`fields`,type:`array`,label:`Fields`},{name:`allowMultiple`,type:`boolean`,label:`Allow Multiple Submissions`}]}),l.register(`form-analytics`,({schema:e})=>(0,Q.jsx)(Pt,{formId:e.formId,formTitle:e.formTitle,metrics:e.metrics||{totalSubmissions:0}}),{namespace:`plugin-form`,label:`Form Analytics`,category:`plugin`,inputs:[{name:`formId`,type:`string`,label:`Form ID`,required:!0},{name:`formTitle`,type:`string`,label:`Form Title`},{name:`metrics`,type:`object`,label:`Submission Metrics`}]}),l.register(`object-master-detail-form`,({schema:e})=>(0,Q.jsx)(_t,{schema:e,dataSource:(0,X.useContext)(c)?.dataSource??void 0}),{namespace:`plugin-form`,label:`Master-Detail Form`,category:`plugin`,inputs:[{name:`objectName`,type:`string`,label:`Parent Object`,required:!0},{name:`mode`,type:`enum`,label:`Mode`,enum:[`create`,`edit`]},{name:`sections`,type:`array`,label:`Parent Sections`},{name:`details`,type:`array`,label:`Detail Collections`,required:!0}]}),l.register(`line_items`,({schema:e})=>(0,Q.jsx)(Ft,{schema:e}),{namespace:`record`,skipFallback:!0,label:`Line Items`,category:`record`,inputs:[{name:`childObject`,type:`string`,label:`Child Object`,required:!0},{name:`relationshipField`,type:`string`,label:`Relationship Field`,required:!0},{name:`columns`,type:`array`,label:`Columns`,required:!0},{name:`totalField`,type:`string`,label:`Parent Total Field`},{name:`amountField`,type:`string`,label:`Amount Column`}]});export{Ae as a,dt as i,wt as n,Se as o,bt as r,be as s,Tt as t};
1
+ import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{r as t,y as n}from"./vendor-react-BKSb6vFP.js";import{n as r}from"./infrastructure-C6pQBkbt.js";import{D as i,It as a,V as o,W as s,et as c,on as l,rn as u,rt as d}from"./framework-BqSgd3ir.js";import{p as f}from"./vendor-objectstack-CjHQG7Oa.js";import{Ai as p,Bc as m,Cr as h,Er as g,Fs as _,Gs as v,Gt as y,Jt as b,Ka as x,Ks as S,Kt as C,Mc as w,Or as T,Qn as E,S as D,Sr as O,Tr as k,Ws as A,Xn as j,Xt as M,Y as N,Yt as P,Zt as F,_t as I,an as L,br as R,cr as z,er as ee,g as te,gt as B,ht as ne,lr as V,on as H,or as U,qa as re,qs as ie,qt as ae,s as W,sn as G,sr as K,t as oe,tr as se,ur as q,vt as ce,wr as le,xr as ue,yr as de,zc as J}from"./ui-components-Ci5ufF7g.js";import{r as Y}from"./vendor-ui-utils-D-WJ115h.js";var X=e(n(),1);function Z(e){try{return typeof window>`u`?!1:new URL(e,window.location.href).origin===window.location.origin}catch{return!1}}function fe(e,t){if(!e)return null;let n=t?.id??t?.recordId??t?._id;if(n==null||n===``)return null;let r=e.replace(/\{(?:id|recordId)\}/g,String(n));return Z(r)?r:null}var Q=t(),$=({label:e,description:t,collapsible:n=!1,collapsed:r=!1,columns:i=1,children:a,className:o,gridClassName:s,showBorder:c})=>{let[l,u]=(0,X.useState)(r),d={1:`grid-cols-1`,2:`grid-cols-1 md:grid-cols-2`,3:`grid-cols-1 md:grid-cols-2 lg:grid-cols-3`,4:`grid-cols-1 md:grid-cols-2 lg:grid-cols-4`},f=()=>{n&&u(!l)},p=c??!!e,m=e||t?(0,Q.jsxs)(`div`,{className:w(`flex items-start gap-2`,!p&&`mb-4`,n&&`cursor-pointer select-none`),onClick:f,role:n?`button`:void 0,"aria-expanded":n?!l:void 0,children:[n&&(0,Q.jsx)(`span`,{className:`mt-0.5 text-muted-foreground`,children:l?(0,Q.jsx)(A,{className:`h-4 w-4`}):(0,Q.jsx)(S,{className:`h-4 w-4`})}),(0,Q.jsxs)(`div`,{className:`flex-1`,children:[e&&(0,Q.jsx)(`h3`,{className:`text-sm font-semibold text-foreground`,children:e}),t&&(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground mt-0.5`,children:t})]})]}):null,h=l?null:(0,Q.jsx)(`div`,{className:w(`grid gap-4`,s||d[i]),children:a});return p?(0,Q.jsxs)(U,{className:w(`form-section bg-muted/40 shadow-none`,o),children:[m&&(0,Q.jsx)(V,{className:`border-b border-border pb-3`,children:m}),h&&(0,Q.jsx)(K,{className:`pt-4`,children:h})]}):(0,Q.jsxs)(`div`,{className:w(`form-section`,o),children:[m,h]})};function pe(e,t){return typeof t==`string`&&t.trim()||typeof t==`object`&&t&&typeof t.source==`string`&&t.source.trim()?{...e,visibleOn:t}:e}function me(e,t){let n=t.objectSchema?.fields?.[e];return n?{name:e,label:t.fieldLabel(t.objectName,e,n.label||e),type:te(n.type),required:n.required||!1,disabled:t.readOnly||t.mode===`view`||n.readonly,placeholder:n.placeholder,description:n.help||n.description,validation:oe(n),field:n,options:n.options,multiple:n.multiple,visibleWhen:n.visibleWhen,readonlyWhen:n.readonlyWhen,requiredWhen:n.requiredWhen,conditionalRequired:n.conditionalRequired}:{name:e,label:e,type:`input`}}function he(e,t){if(typeof e==`string`){let n=t.objectSchema?.fields?.[e];return pe(me(e,t),n?.visible_on??n?.visibleOn)}let n=e;if(typeof n.field!=`string`)return pe(n,n.visibleOn);let r=n.field,i=me(r,t);n.type!=null&&(i.type=te(n.type)),n.widget!=null&&(i.widget=n.widget),n.label!=null&&(i.label=n.label),n.placeholder!=null&&(i.placeholder=n.placeholder),n.helpText!=null&&(i.description=n.helpText),n.required!=null&&(i.required=n.required),n.readonly!=null&&(i.disabled=n.readonly||i.disabled),n.immutable!=null&&(i.immutable=n.immutable),n.hidden!=null&&(i.hidden=n.hidden),n.colSpan!=null&&(i.colSpan=n.colSpan),n.span!=null&&(i.span=n.span),n.options!=null&&(i.options=n.options),n.multiple!=null&&(i.multiple=n.multiple);let a=n.reference??n.reference_to;return a!=null&&(i.reference=a,i.reference_to=a),n.maxLength!=null&&(i.maxLength=n.maxLength),n.minLength!=null&&(i.minLength=n.minLength),n.min!=null&&(i.min=n.min),n.max!=null&&(i.max=n.max),n.precision!=null&&(i.precision=n.precision),n.scale!=null&&(i.scale=n.scale),n.language!=null&&(i.language=n.language),Array.isArray(n.fields)&&(i.fields=n.fields),pe(i,n.visibleOn)}function ge(e,t){return(e.fields??[]).map(e=>he(e,t))}var _e=new Set([`field:formula`,`field:summary`,`field:auto_number`,`field:autonumber`]),ve=new Set([`field:textarea`,`field:markdown`,`field:html`,`field:grid`,`field:rich-text`,`textarea`,`markdown`,`html`,`grid`,`rich-text`]),ye=new Set([`formula`,`summary`,`auto_number`,`autonumber`]);function be(e){return ve.has(e)}function xe(e){return ye.has(e)}function Se(e){return e<=3?1:e<=8?2:e<=15?3:4}function Ce(e){return e&&e>0?Math.min(Math.floor(e),4):1}function we(e,t,n){let r=Ce(t);return r<=1?1:e.span===`full`?r:e.colSpan==null?e.type&&be(e.type)?r:Math.min(r,Math.max(1,Math.round(r/Math.min(Math.max(1,Math.floor(n||r)),r)))):Math.min(Math.max(1,Math.floor(e.colSpan)),r)}function Te(e,t,n){let r=Ce(t);return r<=1?e:e.map(e=>{if(e.type===`section-divider`)return e;let t=we(e,r,n);return t>1?{...e,colSpan:t}:e.colSpan!=null&&e.colSpan!==1?{...e,colSpan:1}:e})}var Ee=new Set([`id`,`created_at`,`createdAt`,`updated_at`,`updatedAt`,`last_modified_at`,`lastModifiedAt`,`deleted_at`,`deletedAt`,`created_by`,`createdBy`,`updated_by`,`updatedBy`,`last_modified_by`,`lastModifiedBy`,`organization_id`,`organizationId`,`org_id`,`orgId`,`tenant_id`,`tenantId`,`owner`,`owner_id`,`_version`,`_rev`]);function De(e,t){return e.filter(e=>{if(Ee.has(e.name))return!1;let n=t?.fields?.[e.name];return!(n?.hidden===!0||n?.readonly===!0)})}function Oe(e,t){return e.filter(e=>{if(e.type&&_e.has(e.type))return!1;let n=t?.fields?.[e.name];return!n||!xe(n.type)})}var ke={1:void 0,2:`grid gap-4 grid-cols-1 @md:grid-cols-2`,3:`grid gap-4 grid-cols-1 @md:grid-cols-2 @2xl:grid-cols-3`,4:`grid gap-4 grid-cols-1 @md:grid-cols-2 @2xl:grid-cols-3 @4xl:grid-cols-4`};function Ae(e){return ke[e&&e>0?Math.min(Math.floor(e),4):1]}function je(e,t){let n=t&&t>1?Math.min(Math.floor(t),4):1,r=n>1?Te(e,n):e,i=Ae(n);return{fields:r,columns:n,...i?{fieldContainerClass:i}:{}}}function Me(e){return e<=1?`default`:e===2?`xl`:`full`}function Ne(e,t,n,r){let i=[...e];if(i=De(i,t),r===`create`&&(i=Oe(i,t)),n!==void 0)return i=Te(i,n),{fields:i,columns:n};let a=Se(i.length);return i=Te(i,a),{fields:i,columns:a}}var Pe=({schema:e,dataSource:t,className:n})=>{let{fieldLabel:r}=J(),[i,a]=(0,X.useState)(null),[o,c]=(0,X.useState)({}),[l,u]=(0,X.useState)(!0),[d,f]=(0,X.useState)(null),[p,m]=(0,X.useState)(e.defaultTab||e.sections[0]?.name||e.sections[0]?.label||`tab-0`);X.useEffect(()=>{(async()=>{if(!t){u(!1);return}try{let n=await t.getObjectSchema(e.objectName);a(n)}catch(e){f(e)}})()},[e.objectName,t]),X.useEffect(()=>{(i||!t)&&(async()=>{if(e.mode===`create`||!e.recordId||!t){c(e.initialData||e.initialValues||{}),u(!1);return}try{let n=await t.findOne(e.objectName,e.recordId);c(n||{})}catch(e){f(e)}finally{u(!1)}})()},[i,e.mode,e.recordId,e.initialData,e.initialValues,t,e.objectName]);let h=(0,X.useCallback)(t=>ge(t,{objectSchema:i,objectName:e.objectName,readOnly:e.readOnly,mode:e.mode,fieldLabel:r}),[i,e.readOnly,e.mode,e.objectName,r]),g=(0,X.useCallback)(async n=>{if(!t)return e.onSuccess&&await e.onSuccess(n),n;try{let r;return e.mode===`create`?r=await t.create(e.objectName,n):e.mode===`edit`&&e.recordId&&(r=await t.update(e.objectName,e.recordId,n)),e.onSuccess&&await e.onSuccess(r),r}catch(t){throw e.onError&&e.onError(t),t}},[e,t]),_=(0,X.useCallback)(()=>{e.onCancel&&e.onCancel()},[e]),v=(e,t)=>e.name||e.label||`tab-${t}`;if(d)return(0,Q.jsxs)(`div`,{className:`p-4 border border-red-300 bg-red-50 rounded-md`,children:[(0,Q.jsx)(`h3`,{className:`text-red-800 font-semibold`,children:`Error loading form`}),(0,Q.jsx)(`p`,{className:`text-red-600 text-sm mt-1`,children:d.message})]});if(l)return(0,Q.jsxs)(`div`,{className:`p-8 text-center`,children:[(0,Q.jsx)(`div`,{className:`inline-block animate-spin rounded-full h-8 w-8 border-b-2 border-gray-900`}),(0,Q.jsx)(`p`,{className:`mt-2 text-sm text-gray-600`,children:`Loading form...`})]});let y={type:`form`,fields:e.sections.flatMap(e=>h(e)),layout:`vertical`,defaultValues:o,submitLabel:e.submitText||(e.mode===`create`?`Create`:`Update`),cancelLabel:e.cancelText,showSubmit:e.showSubmit!==!1&&e.mode!==`view`,showCancel:e.showCancel!==!1,onSubmit:g,onCancel:_},b=e.tabPosition===`left`||e.tabPosition===`right`;return(0,Q.jsx)(`div`,{className:w(`w-full`,n,e.className),children:(0,Q.jsxs)(ne,{value:p,onValueChange:m,orientation:b?`vertical`:`horizontal`,className:w(b&&`flex gap-4`),children:[(0,Q.jsx)(I,{className:w(b?`flex-col h-auto`:``,e.tabPosition===`bottom`&&`order-last`,e.tabPosition===`right`&&`order-last`),children:e.sections.map((e,t)=>(0,Q.jsx)(ce,{value:v(e,t),className:b?`w-full justify-start`:``,children:e.label||`Tab ${t+1}`},v(e,t)))}),(0,Q.jsx)(`div`,{className:`flex-1`,children:e.sections.map((t,n)=>(0,Q.jsx)(B,{value:v(t,n),className:`mt-0`,children:(0,Q.jsx)($,{description:t.description,columns:1,className:t.className,gridClassName:t.gridClassName,children:(0,Q.jsx)(s,{schema:{...y,...je(h(t),t.columns||1),showSubmit:e.showSubmit!==!1&&e.mode!==`view`,showCancel:e.showCancel!==!1}})})},v(t,n)))})]})})},Fe=({schema:e,dataSource:t,className:n})=>{let{fieldLabel:r}=J(),[i,a]=(0,X.useState)(null),[o,c]=(0,X.useState)({}),[l,u]=(0,X.useState)(!0),[d,f]=(0,X.useState)(null),[p,m]=(0,X.useState)(0),[h,g]=(0,X.useState)(new Set),[_,y]=(0,X.useState)(!1),[b,x]=(0,X.useState)(null),S=X.useId(),[C,E]=(0,X.useState)(0),D=X.useRef(!1),O=e.sections.length,k=p===0,j=p===O-1;X.useEffect(()=>{(async()=>{if(!t){u(!1);return}try{let n=await t.getObjectSchema(e.objectName);a(n)}catch(e){f(e)}})()},[e.objectName,t]),X.useEffect(()=>{(i||!t)&&(async()=>{if(e.mode===`create`||!e.recordId||!t){D.current||=(c(e.initialData||e.initialValues||{}),!0),u(!1);return}try{let n=await t.findOne(e.objectName,e.recordId);c(n||{})}catch(e){f(e)}finally{u(!1)}})()},[i,e.mode,e.recordId,e.initialData,e.initialValues,t,e.objectName]);let M=(0,X.useCallback)(t=>ge(t,{objectSchema:i,objectName:e.objectName,readOnly:e.readOnly,mode:e.mode,fieldLabel:r}),[i,e.readOnly,e.mode,e.objectName,r]),N=(0,X.useMemo)(()=>p>=0&&p<O?M(e.sections[p]):[],[p,O,e.sections,M]),P=(0,X.useCallback)(async n=>{let r={...o,...n};if(c(r),g(e=>new Set(e).add(p)),j){y(!0);try{if(!t)return e.onSuccess&&await e.onSuccess(r),r;let n;if(e.mode===`create`?n=await t.create(e.objectName,r):e.mode===`edit`&&e.recordId&&(n=await t.update(e.objectName,e.recordId,r)),e.onSuccess)await e.onSuccess(n);else if(e.submitBehavior){let t=e.submitBehavior;switch(t.kind){case`redirect`:Z(t.url)&&setTimeout(()=>window.location.assign(t.url),t.delayMs??0);break;case`continue`:c({}),g(new Set),m(0),E(e=>e+1);break;default:{let n=t.kind===`thank-you`&&t.message?t.message:e.successMessage||(e.mode===`create`?`Created`:`Saved`);Y.success(n),x({title:t.kind===`thank-you`?t.title:void 0,message:n});break}}}else{let t=fe(e.navigateOnSuccess,n);if(t)return window.location.assign(t),n;Y.success(e.successMessage||(e.mode===`create`?`Created`:`Saved`)),e.resetOnSuccess&&e.mode===`create`&&(c({}),g(new Set),m(0),E(e=>e+1))}return n}catch(t){throw e.onError&&e.onError(t),t}finally{y(!1)}}else F(p+1)},[o,p,j,e,t]),F=(0,X.useCallback)(t=>{t>=0&&t<O&&(m(t),e.onStepChange&&e.onStepChange(t))},[O,e]),I=(0,X.useCallback)(()=>{F(p-1)},[p,F]),L=(0,X.useCallback)(()=>{e.onCancel&&e.onCancel()},[e]),R=(0,X.useCallback)(t=>{(e.allowSkip||h.has(t)||t<=p)&&F(t)},[e.allowSkip,h,p,F]);if(d)return(0,Q.jsxs)(`div`,{className:`p-4 border border-red-300 bg-red-50 rounded-md`,children:[(0,Q.jsx)(`h3`,{className:`text-red-800 font-semibold`,children:`Error loading form`}),(0,Q.jsx)(`p`,{className:`text-red-600 text-sm mt-1`,children:d.message})]});if(l)return(0,Q.jsxs)(`div`,{className:`p-8 text-center`,children:[(0,Q.jsx)(`div`,{className:`inline-block animate-spin rounded-full h-8 w-8 border-b-2 border-gray-900`}),(0,Q.jsx)(`p`,{className:`mt-2 text-sm text-gray-600`,children:`Loading form...`})]});if(b)return(0,Q.jsx)(`div`,{className:w(`w-full`,n,e.className),children:(0,Q.jsxs)(`div`,{className:`rounded-md border bg-card p-8 text-center`,children:[(0,Q.jsx)(`h3`,{className:`text-lg font-semibold`,children:b.title??`Thanks!`}),b.message&&(0,Q.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:b.message})]})});let z=e.sections[p];return(0,Q.jsxs)(`div`,{className:w(`w-full`,n,e.className),children:[e.showStepIndicator!==!1&&(0,Q.jsx)(`nav`,{"aria-label":`Progress`,className:`mb-8`,children:(0,Q.jsx)(`ol`,{className:`flex items-center`,children:e.sections.map((t,n)=>{let r=n===p,i=h.has(n),a=e.allowSkip||i||n<=p;return(0,Q.jsxs)(`li`,{className:w(`relative flex-1`,n!==O-1&&`pr-8 sm:pr-12`),children:[n!==O-1&&(0,Q.jsx)(`div`,{className:`absolute top-3 sm:top-4 left-6 -right-4 sm:left-10 sm:-right-2 h-0.5`,"aria-hidden":`true`,children:(0,Q.jsx)(`div`,{className:w(`h-full`,i?`bg-primary`:`bg-muted`)})}),(0,Q.jsxs)(`button`,{type:`button`,className:w(`group relative flex items-center`,a?`cursor-pointer`:`cursor-not-allowed`),onClick:()=>R(n),disabled:!a,children:[(0,Q.jsx)(`span`,{className:w(`flex h-6 w-6 sm:h-8 sm:w-8 items-center justify-center rounded-full text-xs sm:text-sm font-medium transition-colors`,i&&`bg-primary text-primary-foreground`,r&&!i&&`border-2 border-primary bg-background text-primary`,!r&&!i&&`border-2 border-muted bg-background text-muted-foreground`),children:i?(0,Q.jsx)(ie,{className:`h-3 w-3 sm:h-4 sm:w-4`}):n+1}),(0,Q.jsx)(`span`,{className:`ml-2 sm:ml-3 text-xs sm:text-sm font-medium hidden sm:block`,children:(0,Q.jsx)(`span`,{className:w(r?`text-foreground`:`text-muted-foreground`),children:t.label||`Step ${n+1}`})})]})]},n)})})}),(0,Q.jsx)(`div`,{className:`min-h-[200px]`,children:z&&(0,Q.jsx)($,{label:z.label,description:z.description,columns:1,className:z.className,gridClassName:z.gridClassName,children:N.length>0?(0,Q.jsx)(s,{schema:{type:`form`,objectName:e.objectName,id:S,...je(N,z.columns||1),layout:`vertical`,defaultValues:o,showSubmit:!1,showCancel:!1,onSubmit:P}},C):(0,Q.jsx)(`div`,{className:`text-center py-8 text-muted-foreground`,children:`No fields configured for this step`})})}),(0,Q.jsxs)(`div`,{className:`flex items-center justify-between mt-6 pt-4 border-t`,children:[(0,Q.jsx)(`div`,{children:e.showCancel!==!1&&(0,Q.jsx)(T,{variant:`ghost`,onClick:L,children:e.cancelText||`Cancel`})}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsxs)(`span`,{className:`text-sm text-muted-foreground mr-2`,children:[`Step `,p+1,` of `,O]}),!k&&(0,Q.jsxs)(T,{variant:`outline`,onClick:I,children:[(0,Q.jsx)(v,{className:`h-4 w-4 mr-1`}),e.prevText||`Back`]}),j?(0,Q.jsxs)(T,{type:`submit`,form:S,disabled:_||e.mode===`view`,children:[_&&(0,Q.jsx)(re,{className:`mr-2 h-4 w-4 animate-spin`,"aria-hidden":!0}),_?`Submitting...`:e.submitText||(e.mode===`create`?`Create`:`Update`)]}):(0,Q.jsxs)(T,{type:`submit`,form:S,children:[e.nextText||`Next`,(0,Q.jsx)(A,{className:`h-4 w-4 ml-1`})]})]})]})]})},Ie=({schema:e,dataSource:t,className:n})=>{let{fieldLabel:r}=J(),[i,a]=(0,X.useState)(null),[o,c]=(0,X.useState)({}),[l,u]=(0,X.useState)(!0),[d,f]=(0,X.useState)(null);(0,X.useEffect)(()=>{(async()=>{if(!t){u(!1);return}try{let n=await t.getObjectSchema(e.objectName);a(n)}catch(e){f(e),u(!1)}})()},[e.objectName,t]),(0,X.useEffect)(()=>{(i||!t)&&(async()=>{if(e.mode===`create`||!e.recordId){c(e.initialData||e.initialValues||{}),u(!1);return}if(!t){c(e.initialData||e.initialValues||{}),u(!1);return}try{let n=await t.findOne(e.objectName,e.recordId);c(n||{})}catch(e){f(e)}finally{u(!1)}})()},[i,e.mode,e.recordId,e.initialData,e.initialValues,t,e.objectName]);let p=(0,X.useCallback)(t=>ge(t,{objectSchema:i,objectName:e.objectName,readOnly:e.readOnly,mode:e.mode,fieldLabel:r}),[i,e.readOnly,e.mode,e.objectName,r]),m=(0,X.useCallback)(async n=>{if(!t)return e.onSuccess&&await e.onSuccess(n),n;try{let r;return e.mode===`create`?r=await t.create(e.objectName,n):e.mode===`edit`&&e.recordId&&(r=await t.update(e.objectName,e.recordId,n)),e.onSuccess&&await e.onSuccess(r),r}catch(t){throw e.onError&&e.onError(t),t}},[e,t]),h=(0,X.useCallback)(()=>{e.onCancel&&e.onCancel()},[e]),g=(0,X.useMemo)(()=>e.sections.slice(0,1),[e.sections]),_=(0,X.useMemo)(()=>e.sections.slice(1),[e.sections]);(0,X.useMemo)(()=>e.sections.flatMap(e=>p(e)),[e.sections,p]);let v=e.splitDirection||`horizontal`,y=e.splitSize||50;if(d)return(0,Q.jsxs)(`div`,{className:`p-4 border border-red-300 bg-red-50 rounded-md`,children:[(0,Q.jsx)(`h3`,{className:`text-red-800 font-semibold`,children:`Error loading form`}),(0,Q.jsx)(`p`,{className:`text-red-600 text-sm mt-1`,children:d.message})]});if(l)return(0,Q.jsxs)(`div`,{className:`p-8 text-center`,children:[(0,Q.jsx)(`div`,{className:`inline-block animate-spin rounded-full h-8 w-8 border-b-2 border-gray-900`}),(0,Q.jsx)(`p`,{className:`mt-2 text-sm text-gray-600`,children:`Loading form...`})]});let b={type:`form`,objectName:e.objectName,layout:`vertical`,defaultValues:o,onSubmit:m,onCancel:h},x=(t,n)=>(0,Q.jsx)(`div`,{className:`space-y-6 p-4`,children:t.map((t,r)=>(0,Q.jsx)($,{label:t.label,description:t.description,columns:1,className:t.className,gridClassName:t.gridClassName,children:(0,Q.jsx)(s,{schema:{...b,...je(p(t),t.columns||1),showSubmit:n&&e.showSubmit!==!1&&e.mode!==`view`,showCancel:n&&e.showCancel!==!1,submitLabel:e.submitText||(e.mode===`create`?`Create`:`Update`),cancelLabel:e.cancelText}})},t.name||t.label||r))});return(0,Q.jsx)(`div`,{className:w(`w-full`,n,e.className),children:(0,Q.jsxs)(G,{orientation:v,className:`min-h-[300px] rounded-lg border`,children:[(0,Q.jsx)(H,{defaultSize:y,minSize:20,children:x(g,_.length===0)}),_.length>0&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(L,{withHandle:e.splitResizable!==!1}),(0,Q.jsx)(H,{defaultSize:100-y,minSize:20,children:x(_,!0)})]})]})})},Le=new Set([`id`,`_id`,`created_at`,`updated_at`,`createdAt`,`updatedAt`,`organization_id`,`organizationId`]),Re=new Set([`formula`,`summary`,`rollup`,`lookup_value`,`auto_number`,`autonumber`,`computed`]);function ze(e,t){if(!e||typeof e!=`object`)return e;let n={},r=t?.fields;for(let[t,i]of Object.entries(e))if(!Le.has(t)){if(r){let e=r[t];if(!e)continue;let n=String(e.type||``).toLowerCase();if(Re.has(n)||e.computed===!0||e.formula||e.readOnly===!0||e.readonly===!0)continue}n[t]=i}return n}var Be=e=>e==null?void 0:e.id??e._id??e.recordId,Ve=(e,t)=>t?ze(e,t):e,He=new Set([`id`,`_id`,`recordId`]);function Ue(e,t){return!e||Object.entries(e).every(([e,n])=>e===t||He.has(e)?!0:n==null||n===``)}function We(e,t,n){let r=[{object:e,action:`create`,data:t}];for(let e of n)for(let t of e.rows)Ue(t,e.relationshipField)||r.push({object:e.childObject,action:`create`,data:{...Ve(t,e.childSchema),[e.relationshipField]:{$ref:0}}});return r}function Ge(e,t,n,r){let i=[{object:e,action:`update`,id:t,data:n}];for(let e of r){let n=(e.rows||[]).map(n=>({...n,[e.relationshipField]:t})),{toCreate:r,toUpdate:a,toDelete:o}=Ke(e.original||[],n);for(let t of r){if(Ue(t,e.relationshipField))continue;let{id:n,_id:r,recordId:a,...o}=t;i.push({object:e.childObject,action:`create`,data:Ve(o,e.childSchema)})}for(let t of a)i.push({object:e.childObject,action:`update`,id:Be(t),data:Ve(t,e.childSchema)});for(let t of o)i.push({object:e.childObject,action:`delete`,id:t})}return i}function Ke(e,t){let n=new Set(t.map(Be).filter(Boolean));return{toCreate:t.filter(e=>!Be(e)),toUpdate:t.filter(e=>Be(e)),toDelete:(e||[]).map(Be).filter(e=>!!e&&!n.has(e))}}function qe(e,t){return Array.isArray(e)?e.reduce((e,n)=>{let r=Number(n?.[t]);return e+(Number.isFinite(r)?r:0)},0):0}var Je=new Set([`id`,`_id`,`recordId`,`created_at`,`updated_at`,`created_by`,`updated_by`,`createdAt`,`updatedAt`,`createdBy`,`updatedBy`,`organization_id`,`tenant_id`,`space`,`owner`]),Ye=new Set([`position`,`sort_order`,`sequence`,`line_no`,`line_number`,`sort`]),Xe=new Set([`formula`,`summary`,`rollup`,`autonumber`,`auto_number`,`json`,`object`,`grid`,`table`,`location`,`vector`,`html`,`markdown`,`richtext`]);function Ze(e){switch(e){case`number`:case`percent`:case`rating`:case`slider`:return`number`;case`currency`:return`currency`;case`date`:case`datetime`:case`time`:return`date`;case`select`:case`picklist`:case`radio`:case`boolean`:case`toggle`:return`select`;case`lookup`:case`master_detail`:return`lookup`;case`file`:case`image`:case`avatar`:return`file`;default:return`text`}}var Qe=new Set([`image`,`avatar`]);function $e(e,t){e.multiple==null&&t?.multiple&&(e.multiple=!0),e.accept??(Array.isArray(t?.accept)&&t.accept.length>0?e.accept=t.accept:Qe.has(t?.type)&&(e.accept=[`image/*`]))}function et(e){if(e?.type===`boolean`||e?.type===`toggle`)return[{label:`Yes`,value:`true`},{label:`No`,value:`false`}];let t=e?.options;if(Array.isArray(t))return t.map(e=>typeof e==`object`&&e?{label:String(e.label??e.value),value:String(e.value)}:{label:String(e),value:String(e)})}function tt(e,t){let n=e?.fields;if(!n||typeof n!=`object`)return;let r;for(let[e,i]of Object.entries(n)){let n=i;if(n?.reference===t){if(n?.type===`master_detail`)return e;n?.type===`lookup`&&!r&&(r=e)}}return r}var nt=[`name`,`title`,`subject`,`label`,`full_name`,`display_name`,`code`],rt={select:0,currency:1,number:1,lookup:2,date:3,text:4};function it(e,t){if(t<=0||e.length<=t)return e;let n=new Set,r=e.find(e=>nt.includes(e.field))??e[0];r&&n.add(r.field);for(let t of e)t.required&&n.add(t.field);let i=e.map((e,t)=>({c:e,i:t})).filter(({c:e})=>!n.has(e.field)).sort((e,t)=>(rt[e.c.type]??5)-(rt[t.c.type]??5)||e.i-t.i);for(let{c:e}of i){if(n.size>=t)break;n.add(e.field)}return e.map(e=>n.has(e.field)?e:{...e,defaultHidden:!0})}function at(e,t={}){let n=e?.fields;if(!n||typeof n!=`object`)return[];let r=new Set([...t.exclude??[],...t.relationshipField?[t.relationshipField]:[]]),i=[];for(let[e,t]of Object.entries(n)){let n=t;if(Je.has(e)||r.has(e)||Ye.has(e)||n?.system||n?.readonly||n?.hidden||Xe.has(n?.type))continue;let a={field:e,label:n?.label||e,type:Ze(n?.type),required:!!n?.required},o=et(n);a.type===`select`&&o&&(a.options=o),a.type===`lookup`&&(a.reference=n?.reference,a.displayField=n?.display_field||n?.reference_field),a.type===`file`&&$e(a,n),n?.readonlyWhen&&(a.readonlyWhen=n.readonlyWhen),(n?.requiredWhen??n?.conditionalRequired)&&(a.requiredWhen=n.requiredWhen??n.conditionalRequired);let s=typeof n?.expression==`string`?n.expression:n?.expression?.source;s&&typeof s==`string`&&(a.computed=!0,a.expr=s,a.required=!1,typeof n?.scale==`number`&&(a.scale=n.scale)),i.push(a)}return it(i,t.maxColumns??6)}function ot(e,t){let n=e??[],r=t?.fields;return!n.length||!r||typeof r!=`object`?n:n.map(e=>{if(e.type)return e;let t=r[e.field];if(!t)return e;let n=Ze(t?.type),i={...e,type:n};i.label??=t?.label||e.field,i.required??=!!t?.required;let a=et(t);n===`select`&&a&&!i.options&&(i.options=a),n===`lookup`&&(i.reference??=t?.reference,i.displayField??=t?.display_field||t?.reference_field),n===`file`&&$e(i,t),i.readonlyWhen==null&&t?.readonlyWhen&&(i.readonlyWhen=t.readonlyWhen),i.requiredWhen==null&&(t?.requiredWhen??t?.conditionalRequired)&&(i.requiredWhen=t.requiredWhen??t.conditionalRequired);let o=typeof t?.expression==`string`?t.expression:t?.expression?.source;return!i.computed&&o&&typeof o==`string`&&(i.computed=!0,i.expr=o,i.required=!1,typeof t?.scale==`number`&&(i.scale=t.scale)),i})}var st=new Set([`formula`,`summary`,`rollup`,`autonumber`,`auto_number`]);function ct(e,t={}){let n=e?.fields;if(!n||typeof n!=`object`)return[];let r=new Set([...t.exclude??[],...t.relationshipField?[t.relationshipField]:[]]),i=[];for(let[e,t]of Object.entries(n)){let n=t;Je.has(e)||r.has(e)||Ye.has(e)||n?.system||n?.hidden||st.has(n?.type)||i.push(e)}return i}var lt=new Set([`textarea`,`richtext`,`html`,`markdown`,`rich-text`,`json`,`location`,`address`]),ut=new Set([`file`,`image`,`avatar`]);function dt(e,t,n={}){if(t===`grid`||t===`form`)return t;let r=e?.fields??{},i=ct(e,{relationshipField:n.relationshipField});return i.some(e=>lt.has(r[e]?.type))||i.filter(e=>ut.has(r[e]?.type)).length>=2||i.length>8?`form`:`grid`}var ft=[`amount`,`total`,`subtotal`,`line_total`,`line_amount`,`net_amount`];function pt(e){let t=e.filter(e=>e.type===`number`||e.type===`currency`);if(t.length===0)return;let n=t.find(e=>e.computed);if(n)return n.field;let r=t.find(e=>ft.includes(e.field));if(r)return r.field;let i=[...t].reverse().find(e=>e.type===`currency`);return i?i.field:t[t.length-1].field}function mt(e,t,n,r={}){let i=r.relationshipField||tt(t,n);if(!i)throw Error(`MasterDetailForm: could not find a lookup/master_detail field on "${e}" referencing "${n}". Set relationshipField explicitly.`);let a=r.columns?.length?ot(r.columns,t):at(t,{relationshipField:i}),o=r.amountField||pt(a);return{childObject:e,relationshipField:i,columns:a,formFields:ct(t,{relationshipField:i}),mode:dt(t,r.inlineEdit??(t?.fields)?.[i]?.inlineEdit,{relationshipField:i}),amountField:o,sortField:Object.keys(t?.fields??{}).find(e=>Ye.has(e))}}function ht(e){if(!e)return{};let t={};return e.querySelectorAll(`[name]`).forEach(e=>{let n=e.getAttribute(`name`);if(n){if(e.tagName===`INPUT`){let r=e;if(r.type===`checkbox`){t[n]=r.checked;return}if(r.type===`radio`){r.checked&&(t[n]=r.value);return}if(r.type===`number`||r.type===`range`){if(r.value===``){t[n]=null;return}let e=Number(r.value);t[n]=Number.isFinite(e)?e:r.value;return}t[n]=r.value;return}t[n]=e.value}}),t}var gt=({details:e,state:t,setRows:n,formHostRef:r,taxRateField:i,formKey:a,onRowExpand:o,onAddViaForm:s})=>{let[c,l]=(0,X.useState)({}),u=(0,X.useRef)(``);(0,X.useEffect)(()=>{let e=r.current;if(!e)return;let t=()=>{let t=ht(e),n;try{n=JSON.stringify(t)}catch{n=String(Math.random())}n!==u.current&&(u.current=n,l(t))};t();let n=()=>t();e.addEventListener(`input`,n),e.addEventListener(`change`,n);let i=[120,360,800].map(e=>setTimeout(t,e));return()=>{e.removeEventListener(`input`,n),e.removeEventListener(`change`,n),i.forEach(clearTimeout)}},[r,a,e.length]);let d=c[i],f=d===void 0?null:Number.isFinite(Number(d))?Number(d):0,p=e.reduce((e,n,r)=>e+qe(t[r]?.rows??[],n.amountField||`amount`),0),m=f!==null&&e.some(e=>!!e.amountField),h=f??0,g=h/100*p,_=p+g,v=e=>`¥${e.toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2})}`;return(0,Q.jsxs)(Q.Fragment,{children:[e.map((e,r)=>(0,Q.jsxs)(`section`,{className:`space-y-2`,children:[(0,Q.jsx)(`h3`,{className:`text-sm font-medium text-foreground`,children:e.title||`Line Items`}),e.columns?.length?(0,Q.jsx)(D,{value:t[r]?.rows??[],onChange:e=>n(r,e),contextRecord:c,...e.inlineMode===`form`||(e.formFields?.length??0)>(e.columns?.length??0)?{onRowExpand:e=>o(r,e)}:{},displayMode:e.inlineMode===`form`?`list`:`grid`,...e.inlineMode===`form`?{onAdd:()=>s(r)}:{},field:{columns:e.columns,total_field:m?void 0:e.amountField||(e.totalField?`amount`:void 0),sort_field:e.sortField,min_rows:e.minRows,max_rows:e.maxRows,add_label:e.inlineMode===`form`?e.addLabel||`Add`:e.addLabel}}):(0,Q.jsx)(`p`,{className:`py-4 text-sm text-muted-foreground`,children:`Loading columns…`})]},`${e.childObject}-${r}`)),m&&(0,Q.jsx)(`div`,{className:`flex justify-end`,children:(0,Q.jsxs)(`dl`,{className:`w-64 space-y-1.5 text-sm`,"data-testid":`md-totals`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Q.jsx)(`dt`,{className:`text-muted-foreground`,children:`Subtotal`}),(0,Q.jsx)(`dd`,{className:`tabular-nums`,"data-testid":`md-subtotal`,children:v(p)})]}),(0,Q.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Q.jsxs)(`dt`,{className:`text-muted-foreground`,children:[`Tax (`,h,`%)`]}),(0,Q.jsx)(`dd`,{className:`tabular-nums`,"data-testid":`md-tax`,children:v(g)})]}),(0,Q.jsxs)(`div`,{className:`flex items-center justify-between border-t border-border pt-1.5 text-base font-semibold`,children:[(0,Q.jsx)(`dt`,{children:`Total`}),(0,Q.jsx)(`dd`,{className:`tabular-nums`,"data-testid":`md-grand-total`,children:v(_)})]})]})})]})},_t=({schema:e,dataSource:t,className:n})=>{let r=e.details||[],i=e.mode===`edit`&&!!e.recordId,o=r.some(e=>!e.relationshipField||!e.columns?.length||e.columns.some(e=>!e.type)),[s,c]=(0,X.useState)(o?null:r),l=s??r;(0,X.useEffect)(()=>{if(!o){c(r);return}if(!t||typeof t.getObjectSchema!=`function`)return;let n=!1;return(async()=>{let i=await Promise.all(r.map(async n=>{let r=n.columns?.length?n.columns.every(e=>!!e.type):!1;if(n.relationshipField&&r)return n;try{let r=await t.getObjectSchema(n.childObject);if(n.relationshipField&&n.columns?.length)return{...n,columns:ot(n.columns,r)};let i=mt(n.childObject,r,e.objectName,{relationshipField:n.relationshipField,columns:n.columns,amountField:n.amountField});return{...n,relationshipField:i.relationshipField,columns:i.columns,formFields:n.formFields??i.formFields,inlineMode:n.inlineMode??i.mode,amountField:n.amountField??i.amountField,sortField:n.sortField??i.sortField}}catch{return n}}));n||c(i)})(),()=>{n=!0}},[t,e.objectName,e.details]);let[u,d]=(0,X.useState)(()=>r.map(()=>({rows:[],original:[]}))),f=(0,X.useRef)(u);f.current=u;let p=(0,X.useRef)({});(0,X.useEffect)(()=>{let e=t;if(!e||typeof e.getObjectSchema!=`function`)return;let n=!1,i=Array.from(new Set(r.map(e=>e.childObject).filter(Boolean)));return(async()=>{let t=await Promise.all(i.map(async t=>{try{return[t,await e.getObjectSchema(t)]}catch{return[t,null]}}));if(n)return;let r={};for(let[e,n]of t)n&&(r[e]=n);p.current=r})(),()=>{n=!0}},[t,e.objectName,e.details]);let[m,h]=(0,X.useState)(0),[g,_]=(0,X.useState)(!1),v=(0,X.useRef)(!1),y=(0,X.useRef)(null),b=(0,X.useCallback)(()=>{v.current=!1,_(!1),y.current&&=(clearTimeout(y.current),null)},[]);(0,X.useEffect)(()=>{let n=!1;if(!(!i||!t))return(async()=>{let r=await Promise.all(l.map(async n=>{if(!n.relationshipField)return{rows:[],original:[]};try{let r=(await t.find(n.childObject,{$filter:{[n.relationshipField]:e.recordId},$top:500}))?.data??[];return{rows:r.map(e=>({...e})),original:r.map(e=>({...e}))}}catch{return{rows:[],original:[]}}}));n||d(r)})(),()=>{n=!0}},[i,t,e.recordId,s]);let x=(0,X.useCallback)((e,t)=>{d(n=>n.map((n,r)=>r===e?{...n,rows:t}:n))},[]),S=e.taxRateField||`tax_rate`,[C,E]=(0,X.useState)(null),D=C?u[C.detailIdx]?.rows?.[C.rowIdx]:void 0,O=C?l[C.detailIdx]:void 0,k=(0,X.useCallback)((e,t,n)=>{d(r=>r.map((r,i)=>i===e?{...r,rows:r.rows.map((e,r)=>r===t?{...e,...n}:e)}:r))},[]),A=(0,X.useCallback)(e=>{d(t=>{let n=t.map((t,n)=>n===e?{...t,rows:[...t.rows,{}]}:t),r=n[e].rows.length-1;return E({detailIdx:e,rowIdx:r,isNew:!0}),n})},[]),j=(0,X.useCallback)(()=>{E(e=>(e?.isNew&&d(t=>t.map((t,n)=>n===e.detailIdx?{...t,rows:t.rows.filter((t,n)=>n!==e.rowIdx)}:t)),null))},[]),M=(0,X.useCallback)(async t=>{b(),e.onSuccess||Y.success(i?e.title?`${e.title} saved`:`Saved`:`Created`),i||(d(l.map(()=>({rows:[],original:[]}))),h(e=>e+1)),await e.onSuccess?.(t)},[i,e.onSuccess,e.title,l.length,b]),N=(0,X.useCallback)(t=>{b(),Y.error(t?.message||`Save failed`),e.onError?.(t)},[e,b]),P=(0,X.useCallback)(async n=>{if(!t)throw Error(`MasterDetailForm: dataSource is required`);let r={...n};return l.forEach((e,t)=>{e.totalField&&(r[e.totalField]=qe(f.current[t]?.rows??[],e.amountField||`amount`))}),(await a(t,i?Ge(e.objectName,e.recordId,r,l.filter(e=>e.relationshipField).map((e,t)=>({childObject:e.childObject,relationshipField:e.relationshipField,rows:f.current[t]?.rows??[],original:f.current[t]?.original??[],childSchema:p.current[e.childObject]}))):We(e.objectName,r,l.filter(e=>e.relationshipField).map((e,t)=>({childObject:e.childObject,relationshipField:e.relationshipField,rows:f.current[t]?.rows??[],childSchema:p.current[e.childObject]})))))?.results?.[0]??{...r,id:e.recordId}},[t,l,e.objectName,e.recordId,i]),F=(0,X.useMemo)(()=>({type:`object-form`,objectName:e.objectName,mode:e.mode??`create`,recordId:e.recordId,initialValues:e.initialValues,initialData:e.initialData,formType:e.formType,sections:e.sections,fields:e.fields,title:e.title,showSubmit:!1,showCancel:!1,submitHandler:P,onSuccess:M,onError:N}),[e,P,M,N]),I=(0,X.useRef)(null),L=e.submitText??(i?`Save`:`Create`),R=(0,X.useCallback)(()=>{v.current||I.current?.querySelector(`form`)&&(v.current=!0,_(!0),setTimeout(()=>{(I.current?.querySelector(`form`))?.requestSubmit()},0),y.current=setTimeout(()=>b(),1500))},[b]);return(0,X.useEffect)(()=>()=>{y.current&&clearTimeout(y.current)},[]),(0,Q.jsxs)(`div`,{className:w(`space-y-6`,n,e.className),children:[(0,Q.jsx)(`div`,{ref:I,children:(0,Q.jsx)(Tt,{schema:F,dataSource:t},m)}),(0,Q.jsx)(gt,{details:l,state:u,setRows:x,formHostRef:I,taxRateField:S,formKey:m,onRowExpand:(e,t)=>E({detailIdx:e,rowIdx:t}),onAddViaForm:A}),C&&O&&(0,Q.jsxs)(U,{className:`border-primary/40 shadow-none ring-1 ring-primary/10`,"data-testid":`md-row-form`,children:[(0,Q.jsxs)(V,{className:`pb-2 flex flex-row items-center justify-between gap-2 space-y-0`,children:[(0,Q.jsxs)(q,{className:`text-sm font-medium`,children:[O.title||`Line item`,` — row `,C.rowIdx+1]}),(0,Q.jsx)(T,{type:`button`,variant:`ghost`,size:`sm`,className:`h-7 text-xs text-muted-foreground`,onClick:j,children:`Close`})]}),(0,Q.jsx)(K,{children:(0,Q.jsx)(Tt,{schema:{type:`object-form`,objectName:O.childObject,mode:`edit`,initialData:D??{},...O.formFields?.length?{fields:O.formFields}:{},submitText:`Apply`,submitHandler:async e=>e,onSuccess:e=>{k(C.detailIdx,C.rowIdx,e),E(null)},onCancel:j},dataSource:t},`row-${C.detailIdx}-${C.rowIdx}`)})]}),e.showSubmit!==!1&&(0,Q.jsxs)(`div`,{className:`flex items-center justify-end gap-2 border-t border-border pt-4`,children:[e.onCancel&&(0,Q.jsx)(T,{type:`button`,variant:`outline`,onClick:e.onCancel,disabled:g,"data-testid":`md-form-cancel`,children:e.cancelText??`Cancel`}),(0,Q.jsx)(T,{type:`button`,onClick:R,disabled:g||o&&!s,"data-testid":`md-form-submit`,children:g?`Saving…`:L})]})]})},vt={1:void 0,2:`grid gap-4 grid-cols-1 @md:grid-cols-2`,3:`grid gap-4 grid-cols-1 @md:grid-cols-2 @2xl:grid-cols-3`,4:`grid gap-4 grid-cols-1 @md:grid-cols-2 @2xl:grid-cols-3 @4xl:grid-cols-4`},yt=m({"form.discardTitle":`Discard changes?`,"form.discardMessage":`You have unsaved changes. If you close this form now, your edits will be lost.`,"form.keepEditing":`Keep editing`,"form.discard":`Discard`},`form.discardTitle`),bt=({schema:e,dataSource:t,className:n})=>{let{fieldLabel:r}=J(),{t:i}=yt(),a=o(),[c,l]=(0,X.useState)(null),[u,d]=(0,X.useState)([]),[f,p]=(0,X.useState)({}),[m,_]=(0,X.useState)(!0),[v,y]=(0,X.useState)(null),[x,S]=(0,X.useState)(!1),[C,E]=(0,X.useState)(!1),[D,A]=(0,X.useState)(!1),j=(0,X.useRef)(!1),N=e.confirmOnDiscard!==!1,I=e.open!==!1,L=e.drawerSide||`right`,z=(0,X.useId)(),[ee,B]=(0,X.useState)(()=>{let t={};return e.sections?.forEach((e,n)=>{let r=e.name||String(n);e.collapsed&&(t[r]=!0)}),t});(0,X.useEffect)(()=>{(async()=>{if(!t){_(!1);return}try{let n=await t.getObjectSchema(e.objectName);l(n)}catch(e){y(e),_(!1)}})()},[e.objectName,t]),(0,X.useEffect)(()=>{(c||!t)&&(async()=>{if(e.mode===`create`||!e.recordId){p(e.initialData||e.initialValues||{}),_(!1);return}if(!t){p(e.initialData||e.initialValues||{}),_(!1);return}try{let n=await t.findOne(e.objectName,e.recordId);p(n||{})}catch(e){y(e)}finally{_(!1)}})()},[c,e.mode,e.recordId,e.initialData,e.initialValues,t,e.objectName]);let ne=(0,X.useCallback)(t=>ge(t,{objectSchema:c,objectName:e.objectName,readOnly:e.readOnly,mode:e.mode,fieldLabel:r}),[c,e.readOnly,e.mode,e.objectName,r]);(0,X.useEffect)(()=>{if(!c&&t)return;if(e.customFields?.length){d(e.customFields),_(!1);return}if(e.sections?.length){_(!1);return}if(!c)return;let n=e.fields||Object.keys(c.fields||{}),i=[];for(let t of n){let n=typeof t==`string`?t:t.name;if(!n)continue;let a=c.fields?.[n];a&&i.push({name:n,label:r(e.objectName,n,a.label||n),type:te(a.type),required:a.required||!1,disabled:e.readOnly||e.mode===`view`||a.readonly,placeholder:a.placeholder,description:a.help||a.description,validation:oe(a),field:a,options:a.options,multiple:a.multiple})}d(i),_(!1)},[c,e.fields,e.customFields,e.sections,e.readOnly,e.mode,t]);let V=(0,X.useCallback)(async n=>{A(!0);try{if(!t)return e.onSuccess&&await e.onSuccess(n),e.onOpenChange?.(!1),n;let r,i=ze(n,c);return e.mode===`create`?r=await t.create(e.objectName,i):e.mode===`edit`&&e.recordId&&(r=await t.update(e.objectName,e.recordId,i)),e.onSuccess&&await e.onSuccess(r),e.onOpenChange?.(!1),r}catch(t){throw e.onError&&e.onError(t),t}finally{A(!1)}},[e,t,c]),H=(0,X.useCallback)(()=>{E(!1),j.current&&(j.current=!1,e.onCancel?.()),e.onOpenChange?.(!1)},[e]),U=(0,X.useCallback)(e=>{j.current=e,N&&x?E(!0):H()},[N,x,H]),ie=(0,X.useCallback)(()=>{j.current=!0,H()},[H]),W=(0,X.useMemo)(()=>{if(e.drawerWidth)return L===`left`||L===`right`?{width:e.drawerWidth,maxWidth:e.drawerWidth}:{height:e.drawerWidth,maxHeight:e.drawerWidth}},[e.drawerWidth,L]),G=e.layout===`vertical`||e.layout===`horizontal`?e.layout:`vertical`,K=e.showSubmit!==!1&&e.mode!==`view`,se=e.showCancel!==!1,q=e.submitText||(e.mode===`create`?`Create`:`Update`),ce=e.cancelText||`Cancel`,Y={type:`form`,objectName:e.objectName,layout:G,defaultValues:f,submitLabel:q,cancelLabel:ce,showSubmit:K,showCancel:se,onSubmit:V,onCancel:ie,onDirtyChange:S,showActions:!1,id:z},Z=()=>{if(v)return(0,Q.jsxs)(`div`,{className:`p-4 border border-red-300 bg-red-50 rounded-md`,children:[(0,Q.jsx)(`h3`,{className:`text-red-800 font-semibold`,children:`Error loading form`}),(0,Q.jsx)(`p`,{className:`text-red-600 text-sm mt-1`,children:v.message})]});if(m)return(0,Q.jsxs)(`div`,{className:`p-8 text-center`,children:[(0,Q.jsx)(`div`,{className:`inline-block animate-spin rounded-full h-8 w-8 border-b-2 border-gray-900`}),(0,Q.jsx)(`p`,{className:`mt-2 text-sm text-gray-600`,children:`Loading form...`})]});if(e.sections?.length){let t=[];return e.sections.forEach((e,n)=>{let r=e.name||String(n),i=ee[r]??e.collapsed??!1;t.push({name:`__section_${r}`,label:e.label||``,type:`section-divider`,colSpan:4,collapsible:e.collapsible,collapsed:i,onToggle:e.collapsible?()=>B(e=>({...e,[r]:!i})):void 0,className:e.className});let a=ne(e);i?t.push(...a.map(e=>({...e,hidden:!0}))):t.push(...a)}),(0,Q.jsx)(s,{schema:{...Y,fields:t}})}let t=Ne(u,c,e.columns,e.mode),n=vt[t.columns||1];return(0,Q.jsx)(s,{schema:{...Y,fields:t.fields,columns:t.columns,...n?{fieldContainerClass:n}:{}}})},fe=e.subforms,$=fe?.length&&e.mode!==`view`?(0,Q.jsx)(_t,{schema:{type:`object-master-detail-form`,objectName:e.objectName,mode:e.mode===`edit`?`edit`:`create`,recordId:e.recordId,fields:e.fields,sections:e.sections,submitText:e.submitText,cancelText:ce,details:fe,onSuccess:async t=>{await e.onSuccess?.(t),e.onOpenChange?.(!1)},onError:e.onError,onCancel:()=>e.onOpenChange?.(!1)},dataSource:t}):Z();return a?(0,Q.jsxs)(`div`,{className:`@container rounded-md border bg-card p-4`,children:[(e.title||e.description)&&(0,Q.jsxs)(`div`,{className:`mb-3 space-y-0.5`,children:[e.title&&(0,Q.jsx)(`div`,{className:`text-sm font-semibold`,children:e.title}),e.description&&(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e.description})]}),$]}):(0,Q.jsx)(ae,{open:I,onOpenChange:t=>{if(t){e.onOpenChange?.(!0);return}U(!1)},children:(0,Q.jsxs)(b,{side:L,className:w(`overflow-y-auto`,n,e.className),style:W,children:[(e.title||e.description)&&(0,Q.jsxs)(M,{children:[e.title&&(0,Q.jsx)(F,{children:e.title}),e.description?(0,Q.jsx)(P,{children:e.description}):(0,Q.jsx)(P,{className:`sr-only`,children:`Complete the form fields, then submit or cancel.`})]}),(0,Q.jsx)(`div`,{className:`@container py-4`,children:$}),!v&&!m&&!(fe?.length&&e.mode!==`view`)&&(K||se)&&(0,Q.jsx)(`div`,{className:`shrink-0 border-t px-4 py-3 bg-background`,"data-testid":`drawer-form-footer`,children:(0,Q.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-2 sm:justify-end`,children:[se&&(0,Q.jsx)(T,{type:`button`,variant:`outline`,onClick:ie,disabled:D,className:`w-full sm:w-auto`,children:ce}),K&&(0,Q.jsxs)(T,{type:`submit`,form:z,disabled:D,className:`w-full sm:w-auto`,children:[D&&(0,Q.jsx)(re,{className:`mr-2 h-4 w-4 animate-spin`}),q]})]})}),(0,Q.jsx)(de,{open:C,onOpenChange:E,children:(0,Q.jsxs)(O,{children:[(0,Q.jsxs)(k,{children:[(0,Q.jsx)(g,{children:i(`form.discardTitle`)}),(0,Q.jsx)(h,{children:i(`form.discardMessage`)})]}),(0,Q.jsxs)(le,{children:[(0,Q.jsx)(ue,{onClick:()=>{j.current=!1},children:i(`form.keepEditing`)}),(0,Q.jsx)(R,{onClick:H,children:i(`form.discard`)})]})]})})]})})};function xt(e,t){let n=f({fieldGroups:t,fields:Object.fromEntries(e.map(e=>[e.name,{group:e.group}]))});if(!n)return null;let r=new Set(n.flatMap(e=>e.fields)),i=e.map(e=>e.name).filter(e=>!r.has(e)),a=n.map(e=>({...e.key===void 0?{}:{name:e.key},...e.key===void 0?{}:{label:e.label??e.key},fields:[...e.fields],...e.collapse===`none`?{}:{collapsible:!0},...e.collapse===`collapsed`?{collapsed:!0}:{}}));if(i.length>0){let e=a[a.length-1];e&&e.name===void 0?e.fields=[...e.fields??[],...i]:a.push({fields:i})}return a}var St=m({"form.discardTitle":`Discard changes?`,"form.discardMessage":`You have unsaved changes. If you close this form now, your edits will be lost.`,"form.keepEditing":`Keep editing`,"form.discard":`Discard`},`form.discardTitle`),Ct={sm:`sm:max-w-sm`,default:`sm:max-w-lg`,lg:`sm:max-w-2xl`,xl:`sm:max-w-5xl`,full:`sm:max-w-[95vw] sm:w-full`},wt=({schema:e,dataSource:t,className:n})=>{let{fieldLabel:i,sectionLabel:a}=J(),{t:c}=St(),l=o(),u=r(),d=(0,X.useCallback)(t=>{if(!u?.isLoaded)return t;let n=[];for(let r of t){if(!r?.name){n.push(r);continue}u.checkField(e.objectName,r.name,`read`)&&(!u.checkField(e.objectName,r.name,`write`)&&e.mode!==`view`?n.push({...r,readOnly:!0,disabled:!0}):n.push(r))}return n},[u,e.objectName,e.mode]),[f,p]=(0,X.useState)(null),[m,_]=(0,X.useState)([]),[v,b]=(0,X.useState)({}),[x,S]=(0,X.useState)(!0),[C,D]=(0,X.useState)(null),[A,M]=(0,X.useState)(!1),[P,F]=(0,X.useState)(!1),[L,z]=(0,X.useState)(!1),V=(0,X.useRef)(!1),H=e.confirmOnDiscard!==!1,U=e.open!==!1,ie=(0,X.useId)(),ae=(0,X.useMemo)(()=>{if(e.sections?.length||e.customFields?.length)return null;let t=De(m,f);e.mode===`create`&&(t=Oe(t,f));let n=xt(t,f?.fieldGroups);if(!n)return null;let r=e.columns&&e.columns>0?Math.min(Math.floor(e.columns),4):Se(t.length);return n.map(e=>({...e,columns:r}))},[e.sections,e.customFields,e.columns,e.mode,m,f]),W=e.sections?.length?e.sections:ae??void 0,G=(0,X.useMemo)(()=>W?.length||e.customFields?.length?null:Ne(m,f,e.columns,e.mode),[m,f,e.columns,e.mode,W,e.customFields]),K=Ct[(0,X.useMemo)(()=>{if(e.modalSize)return e.modalSize;if(G?.columns&&G.columns>1)return Me(G.columns);if(W?.length){let e=Math.max(...W.map(e=>Number(e.columns)||1));if(e>1)return Me(e)}return`default`},[e.modalSize,G,W])]||Ct.default;(0,X.useEffect)(()=>{(async()=>{if(!t){S(!1);return}try{let n=await t.getObjectSchema(e.objectName);p(n)}catch(e){D(e),S(!1)}})()},[e.objectName,t]),(0,X.useEffect)(()=>{(f||!t)&&(async()=>{if(e.mode===`create`||!e.recordId){b(e.initialData||e.initialValues||{}),S(!1);return}if(!t){b(e.initialData||e.initialValues||{}),S(!1);return}try{let n=await t.findOne(e.objectName,e.recordId);b(n||{})}catch(e){D(e)}finally{S(!1)}})()},[f,e.mode,e.recordId,e.initialData,e.initialValues,t,e.objectName]);let q=(0,X.useCallback)(t=>ge(t,{objectSchema:f,objectName:e.objectName,readOnly:e.readOnly,mode:e.mode,fieldLabel:i}),[f,e.readOnly,e.mode,e.objectName,i]);(0,X.useEffect)(()=>{if(!f&&t)return;if(e.customFields?.length){_(e.customFields),S(!1);return}if(e.sections?.length){S(!1);return}if(!f)return;let n=e.fields||Object.keys(f.fields||{}),r=[];for(let t of n){let n=typeof t==`string`?t:t.name;if(!n)continue;let a=f.fields?.[n];a&&r.push({name:n,label:i(e.objectName,n,a.label||n),type:te(a.type),required:a.required||!1,disabled:e.readOnly||e.mode===`view`||a.readonly,placeholder:a.placeholder,description:a.help||a.description,validation:oe(a),field:a,options:a.options,multiple:a.multiple,visibleWhen:a.visibleWhen,readonlyWhen:a.readonlyWhen,requiredWhen:a.requiredWhen??a.conditionalRequired,group:a.group})}_(r),S(!1)},[f,e.fields,e.customFields,e.sections,e.readOnly,e.mode,t]);let Y=(0,X.useCallback)(async n=>{M(!0);try{if(!t)return e.onSuccess&&await e.onSuccess(n),e.onOpenChange?.(!1),n;let r,i=ze(n,f);if(u?.isLoaded){let t={};for(let n of Object.keys(i))u.checkField(e.objectName,n,`write`)&&(t[n]=i[n]);i=t}return e.mode===`create`?r=await t.create(e.objectName,i):e.mode===`edit`&&e.recordId&&(r=await t.update(e.objectName,e.recordId,i)),e.onSuccess&&await e.onSuccess(r),e.onOpenChange?.(!1),r}catch(t){throw e.onError&&e.onError(t),t}finally{M(!1)}},[e,t,f,u]),Z=(0,X.useCallback)(()=>{z(!1),V.current&&(V.current=!1,e.onCancel?.()),e.onOpenChange?.(!1)},[e]),fe=(0,X.useCallback)(e=>{V.current=e,H&&P?z(!0):Z()},[H,P,Z]),pe=(0,X.useCallback)(()=>{V.current=!0,Z()},[Z]),me=e.layout===`vertical`||e.layout===`horizontal`?e.layout:`vertical`,he=e.showSubmit!==!1&&e.mode!==`view`,_e=e.showCancel!==!1,ve=e.submitText||(e.mode===`create`?`Create`:`Update`),ye=e.cancelText||`Cancel`,be={type:`form`,objectName:e.objectName,layout:me,defaultValues:v,submitLabel:ve,cancelLabel:ye,showSubmit:he,showCancel:_e,onSubmit:Y,onCancel:pe,onDirtyChange:F,showActions:!1,id:ie},xe=()=>{if(C)return(0,Q.jsxs)(`div`,{className:`p-4 border border-red-300 bg-red-50 rounded-md`,children:[(0,Q.jsx)(`h3`,{className:`text-red-800 font-semibold`,children:`Error loading form`}),(0,Q.jsx)(`p`,{className:`text-red-600 text-sm mt-1`,children:C.message})]});if(x)return(0,Q.jsx)(`div`,{className:`space-y-4`,"data-testid":`modal-form-skeleton`,children:[1,2,3].map(e=>(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsx)(y,{className:`h-4 w-24`}),(0,Q.jsx)(y,{className:`h-10 w-full`})]},e))});if(e.sections?.length){let t=e.sections,n=(e,t)=>e.name||e.label||String(t),r=t=>t.name?a(e.objectName,t.name,t.label||t.name):t.label,i=e=>(0,Q.jsx)(s,{schema:{...be,...je(d(q(e)),e.columns||1)}});return e.contentLayout===`tabbed`&&t.length>1?(0,Q.jsxs)(ne,{defaultValue:n(t[0],0),className:`w-full`,children:[(0,Q.jsx)(I,{className:`mb-4`,children:t.map((e,t)=>(0,Q.jsx)(ce,{value:n(e,t),children:r(e)||`Section ${t+1}`},n(e,t)))}),t.map((e,t)=>(0,Q.jsx)(B,{value:n(e,t),children:(0,Q.jsx)($,{description:e.description,columns:1,className:e.className,gridClassName:e.gridClassName,children:i(e)})},n(e,t)))]}):(0,Q.jsx)(`div`,{className:`space-y-6`,children:t.map((e,t)=>(0,Q.jsx)($,{label:r(e),description:e.description,columns:1,className:e.className,gridClassName:e.gridClassName,children:i(e)},n(e,t)))})}if(ae?.length){let t=Number(ae[0]?.columns)||1,n=[];ae.forEach((r,i)=>{let o=d(q(r));if(!o.length)return;let s=r.name?a(e.objectName,r.name,r.label||r.name):r.label;s&&n.push({name:`__section_${r.name||i}`,label:s,type:`section-divider`}),n.push(...t>1?Te(o,t):o)});let r=ke[t];return(0,Q.jsx)(s,{schema:{...be,fields:n,columns:t,...r?{fieldContainerClass:r}:{}}})}let t=G??Ne(m,f,e.columns,e.mode),n=ke[t.columns||1];return(0,Q.jsx)(s,{schema:{...be,fields:d(t.fields),columns:t.columns,...n?{fieldContainerClass:n}:{}}})},Ce=e.subforms;if(l)return(0,Q.jsxs)(`div`,{className:`@container rounded-md border bg-card p-4`,children:[(e.title||e.description)&&(0,Q.jsxs)(`div`,{className:`mb-3 space-y-0.5`,children:[e.title&&(0,Q.jsx)(`div`,{className:`text-sm font-semibold`,children:e.title}),e.description&&(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e.description})]}),xe()]});if(Ce?.length&&e.mode!==`view`)return(0,Q.jsx)(j,{open:U,onOpenChange:e.onOpenChange,children:(0,Q.jsxs)(N,{className:w(K,`flex flex-col h-[100dvh] sm:h-auto sm:max-h-[90vh] overflow-hidden p-0`,n,e.className),children:[(e.title||e.description)&&(0,Q.jsxs)(ee,{className:`shrink-0 px-4 pt-4 sm:px-6 sm:pt-6 pb-2 border-b`,children:[e.title&&(0,Q.jsx)(se,{children:e.title}),e.description?(0,Q.jsx)(E,{children:e.description}):(0,Q.jsx)(E,{className:`sr-only`,children:`Enter the record and its line items, then save.`})]}),(0,Q.jsx)(`div`,{className:`@container flex-1 overflow-y-auto px-4 sm:px-6 py-4`,children:(0,Q.jsx)(_t,{schema:{type:`object-master-detail-form`,objectName:e.objectName,mode:e.mode===`edit`?`edit`:`create`,recordId:e.recordId,fields:e.fields,sections:e.sections,initialValues:e.initialValues,initialData:e.initialData,submitText:ve,cancelText:ye,details:Ce,onSuccess:async t=>{await e.onSuccess?.(t),e.onOpenChange?.(!1)},onError:e.onError,onCancel:()=>e.onOpenChange?.(!1)},dataSource:t})})]})});let we=!x&&!C&&(he||_e);return(0,Q.jsx)(j,{open:U,onOpenChange:t=>{if(t){e.onOpenChange?.(!0);return}fe(!1)},children:(0,Q.jsxs)(N,{className:w(K,`flex flex-col h-[100dvh] sm:h-auto sm:max-h-[90vh] overflow-hidden p-0`,n,e.className),children:[(e.title||e.description)&&(0,Q.jsxs)(ee,{className:`shrink-0 px-4 pt-4 sm:px-6 sm:pt-6 pb-2 border-b`,children:[e.title&&(0,Q.jsx)(se,{children:e.title}),e.description?(0,Q.jsx)(E,{children:e.description}):(0,Q.jsx)(E,{className:`sr-only`,children:`Complete the form fields, then submit or cancel.`})]}),(0,Q.jsx)(`div`,{className:`@container flex-1 overflow-y-auto px-4 sm:px-6 py-4`,children:xe()}),we&&(0,Q.jsx)(`div`,{className:`shrink-0 border-t px-4 sm:px-6 py-3 bg-background`,"data-testid":`modal-form-footer`,children:(0,Q.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-2 sm:justify-end`,children:[_e&&(0,Q.jsx)(T,{type:`button`,variant:`outline`,onClick:pe,disabled:A,className:`w-full sm:w-auto`,children:ye}),he&&(0,Q.jsxs)(T,{type:`submit`,form:ie,disabled:A,className:`w-full sm:w-auto`,children:[A&&(0,Q.jsx)(re,{className:`mr-2 h-4 w-4 animate-spin`}),ve]})]})}),(0,Q.jsx)(de,{open:L,onOpenChange:z,children:(0,Q.jsxs)(O,{children:[(0,Q.jsxs)(k,{children:[(0,Q.jsx)(g,{children:c(`form.discardTitle`)}),(0,Q.jsx)(h,{children:c(`form.discardMessage`)})]}),(0,Q.jsxs)(le,{children:[(0,Q.jsx)(ue,{onClick:()=>{V.current=!1},children:c(`form.keepEditing`)}),(0,Q.jsx)(R,{onClick:Z,children:c(`form.discard`)})]})]})})]})})},Tt=({schema:e,dataSource:t})=>{let n=r(),i=(0,X.useMemo)(()=>{let t=e.groups,r=!e.sections?.length&&Array.isArray(t)&&t.length?{...e,sections:t.map(e=>({label:e.title??e.label,description:e.description,collapsible:e.collapsible,collapsed:e.defaultCollapsed??e.collapsed,fields:e.fields??[]}))}:e;if(!n?.isLoaded)return r;let i=e=>e?.name?n.checkField(r.objectName,e.name,`read`)?!n.checkField(r.objectName,e.name,`write`)&&r.mode!==`view`?{...e,readOnly:!0,disabled:!0}:e:null:e,a=e=>Array.isArray(e)?e.map(i).filter(Boolean):e;return{...r,fields:a(r.fields),sections:r.sections?.map(e=>({...e,fields:a(e.fields)}))}},[e,n]),{sectionLabel:a}=J(),o=e=>e?.name?a(i.objectName,e.name,e.label||e.name):e?.label;if(i.subforms?.length&&i.mode!==`view`&&i.formType!==`drawer`&&i.formType!==`modal`)return(0,Q.jsx)(_t,{schema:{type:`object-master-detail-form`,objectName:i.objectName,mode:i.mode===`edit`?`edit`:`create`,recordId:i.recordId,initialValues:i.initialValues,initialData:i.initialData,formType:i.formType===`tabbed`?`tabbed`:`simple`,sections:i.sections,fields:i.fields,title:i.title,submitText:i.submitText,cancelText:i.cancelText,showSubmit:i.showSubmit,details:i.subforms,onSuccess:i.onSuccess,onError:i.onError,onCancel:i.onCancel,className:i.className},dataSource:t});if(i.formType===`tabbed`&&i.sections?.length)return(0,Q.jsx)(Pe,{schema:{...i,formType:`tabbed`,sections:i.sections.map(e=>({name:e.name,label:o(e),description:e.description,columns:e.columns,fields:e.fields,className:e.className,gridClassName:e.gridClassName})),defaultTab:i.defaultTab,tabPosition:i.tabPosition},dataSource:t,className:i.className});if(i.formType===`wizard`&&i.sections?.length)return(0,Q.jsx)(Fe,{schema:{...i,formType:`wizard`,sections:i.sections.map(e=>({name:e.name,label:o(e),description:e.description,columns:e.columns,fields:e.fields,className:e.className,gridClassName:e.gridClassName})),allowSkip:i.allowSkip,showStepIndicator:i.showStepIndicator,nextText:i.nextText,prevText:i.prevText,onStepChange:i.onStepChange},dataSource:t,className:i.className});if(i.formType===`split`&&i.sections?.length)return(0,Q.jsx)(Ie,{schema:{...i,formType:`split`,sections:i.sections.map(e=>({name:e.name,label:o(e),description:e.description,columns:e.columns,fields:e.fields,className:e.className,gridClassName:e.gridClassName})),splitDirection:i.splitDirection,splitSize:i.splitSize,splitResizable:i.splitResizable},dataSource:t,className:i.className});if(i.formType===`drawer`){let{layout:e,...n}=i,r=i.layout===`vertical`||i.layout===`horizontal`?i.layout:void 0;return(0,Q.jsx)(bt,{schema:{...n,layout:r,formType:`drawer`,sections:i.sections?.map(e=>({name:e.name,label:o(e),description:e.description,columns:e.columns,fields:e.fields,collapsible:e.collapsible,collapsed:e.collapsed,className:e.className})),open:i.open,onOpenChange:i.onOpenChange,drawerSide:i.drawerSide,drawerWidth:i.drawerWidth},dataSource:t,className:i.className})}if(i.formType===`modal`){let{layout:e,...n}=i,r=i.layout===`vertical`||i.layout===`horizontal`?i.layout:void 0;return(0,Q.jsx)(wt,{schema:{...n,layout:r,formType:`modal`,sections:i.sections?.map(e=>({name:e.name,label:o(e),description:e.description,columns:e.columns,fields:e.fields,className:e.className,gridClassName:e.gridClassName})),open:i.open,onOpenChange:i.onOpenChange,modalSize:i.modalSize,modalCloseButton:i.modalCloseButton},dataSource:t,className:i.className})}return(0,Q.jsx)(Et,{schema:i,dataSource:t})},Et=({schema:e,dataSource:t})=>{let{fieldLabel:n,sectionLabel:i}=J(),a=C(),o=r(),c=(0,X.useCallback)(t=>{if(!o?.isLoaded)return t;let n=[];for(let r of t)o.checkField(e.objectName,r.name,`read`)&&(!o.checkField(e.objectName,r.name,`write`)&&e.mode!==`view`?n.push({...r,readOnly:!0,disabled:!0,description:r.description??`You do not have edit access to this field.`}):n.push(r));return n},[o,e.objectName,e.mode]),[l,d]=(0,X.useState)(null),[f,p]=(0,X.useState)([]),[m,h]=(0,X.useState)(null),[g,_]=(0,X.useState)(!0),[v,y]=(0,X.useState)(null),[b,x]=(0,X.useState)(null),S=e.customFields&&e.customFields.length>0;(0,X.useEffect)(()=>{S&&(h(e.initialData||e.initialValues||{}),_(!1))},[S,e.initialData,e.initialValues]),(0,X.useEffect)(()=>{S?d({name:e.objectName,fields:{}}):e.objectName&&t?(async()=>{try{if(!t)throw Error(`DataSource is required when using ObjectQL schema fetching (inline fields not provided)`);let n=await t.getObjectSchema(e.objectName);if(!n)throw Error(`No schema found for object "${e.objectName}"`);d(n)}catch(e){y(e),_(!1)}})():S||_(!1)},[e.objectName,t,S]),(0,X.useEffect)(()=>{l&&!S&&(async()=>{if(!e.recordId||e.mode===`create`){h(e.initialData||e.initialValues||{}),_(!1);return}if(!S){if(!t){y(Error(`DataSource is required for fetching record data (inline data not provided)`)),_(!1);return}_(!0);try{let n=await t.findOne(e.objectName,e.recordId);h(n)}catch(e){console.error(`Failed to fetch record:`,e),y(e)}finally{_(!1)}}})()},[e.objectName,e.recordId,e.mode,e.initialValues,e.initialData,t,l,S]);let w=(0,X.useCallback)(e=>e,[]);(0,X.useEffect)(()=>{if(S&&e.customFields){p(e.customFields.map(w)),_(!1);return}if(!l)return;let r=[],i=u(l),a=!(e.mode===`edit`?i.edit:e.mode!==`create`||i.create),o=e.fields||Object.keys(l.fields||{});(Array.isArray(o)?o:Object.keys(o)).forEach(t=>{let i=typeof t==`string`?t:t.name;if(!i)return;let o=l.fields?.[i];if(!o&&!S)return;let s=!o?.permissions||o?.permissions.write!==!1;if(e.mode!==`view`&&!s)return;let c=e.customFields?.find(e=>e.name===i);if(c)r.push(w(c));else if(o){let s={name:i,label:n(e.objectName,i,o.label||t),type:te(o.type),required:o.required||!1,disabled:e.readOnly||e.mode===`view`||o.readonly||a,placeholder:o.placeholder,description:o.help||o.description,validation:oe(o),visibleWhen:o.visibleWhen,readonlyWhen:o.readonlyWhen,requiredWhen:o.requiredWhen??o.conditionalRequired,group:o.group,field:o,widget:o.widget};if((o.type===`select`||o.type===`lookup`||o.type===`master_detail`)&&(s.options=o.options||[],s.multiple=o.multiple),(o.type===`number`||o.type===`currency`||o.type===`percent`)&&(s.inputType=`number`,s.min=o.min,s.max=o.max,s.step=o.precision?10**-o.precision:void 0),o.type===`date`&&(s.inputType=`date`),o.type===`datetime`&&(s.inputType=`datetime-local`),(o.type===`text`||o.type===`textarea`||o.type===`markdown`||o.type===`html`)&&(s.maxLength=o.max_length,s.minLength=o.min_length),(o.type===`file`||o.type===`image`)&&(s.inputType=`file`,s.multiple=o.multiple,s.accept=o.accept?o.accept.join(`,`):void 0,o.max_size)){let e=`Max size: ${W(o.max_size)}`;s.description=s.description?`${s.description} (${e})`:e}o.type===`email`&&(s.inputType=`email`),o.type===`phone`&&(s.inputType=`tel`),o.type===`url`&&(s.inputType=`url`),o.type===`password`&&(s.inputType=`password`),o.type===`time`&&(s.inputType=`time`),(o.type===`formula`||o.type===`summary`||o.type===`auto_number`)&&(s.disabled=!0),o.visible_on&&(s.visibleOn=o.visible_on),r.push(s)}}),p(r),!S&&e.recordId&&e.mode!==`create`&&t||_(!1)},[l,e.fields,e.customFields,e.readOnly,e.mode,S,e.recordId,t]);let T=(0,X.useCallback)(async(n,r)=>{if(n&&(n.nativeEvent||n._reactName===`onSubmit`)&&(console.warn(`ObjectForm: Received Event instead of data in handleSubmit! This suggests a Form renderer issue.`),r===void 0&&(n={})),S&&!t)return e.onSuccess&&await e.onSuccess(n),n;if(!t)throw Error(`DataSource is required for form submission (inline mode not configured)`);let i=ze(n,S?null:l);if(o?.isLoaded&&i&&typeof i==`object`){let t={};for(let n of Object.keys(i))o.checkField(e.objectName,n,`write`)&&(t[n]=i[n]);i=t}try{let n;if(e.submitHandler)n=await e.submitHandler(i);else if(e.mode===`create`)n=await t.create(e.objectName,i);else if(e.mode===`edit`&&e.recordId)n=await t.update(e.objectName,e.recordId,i);else throw Error(`Invalid form mode or missing record ID`);if(e.onSuccess)await e.onSuccess(n);else if(!e.submitHandler&&e.submitBehavior){let t=e.submitBehavior;switch(t.kind){case`redirect`:Z(t.url)&&setTimeout(()=>window.location.assign(t.url),t.delayMs??0);break;case`continue`:break;default:{let n=t.kind===`thank-you`&&t.message?t.message:e.successMessage||(e.mode===`create`?`Created`:`Saved`);Y.success(n),x({title:t.kind===`thank-you`?t.title:void 0,message:n});break}}}else if(!e.submitHandler){let t=fe(e.navigateOnSuccess,n);if(t)return window.location.assign(t),n;Y.success(e.successMessage||(e.mode===`create`?`Created`:`Saved`))}return n}catch(t){throw console.error(`Failed to submit form:`,t),e.onError&&e.onError(t),t}},[e,t,S,o,l]),E=(0,X.useCallback)(()=>{e.onCancel&&e.onCancel()},[e]),D={...X.useMemo(()=>{if(!l?.fields)return{};let e={};return Object.keys(l.fields).forEach(t=>{let n=l.fields[t];n.defaultValue!==void 0&&(e[t]=n.defaultValue)}),e},[l]),...m},O=X.useMemo(()=>{let t=De(f,l);return e.mode===`create`&&(t=Oe(t,l)),t},[f,l,e.mode]),k=X.useMemo(()=>e.sections?.length?null:xt(O,l?.fieldGroups),[e.sections,O,l]),A=e.sections?.length?e.sections:k,[j,M]=(0,X.useState)({});if(v)return(0,Q.jsxs)(`div`,{className:`p-3 sm:p-4 border border-red-300 bg-red-50 rounded-md`,children:[(0,Q.jsx)(`h3`,{className:`text-red-800 font-semibold`,children:`Error loading form`}),(0,Q.jsx)(`p`,{className:`text-red-600 text-sm mt-1`,children:v.message})]});if(g)return(0,Q.jsxs)(`div`,{className:`p-4 sm:p-8 text-center`,children:[(0,Q.jsx)(`div`,{className:`inline-block animate-spin rounded-full h-8 w-8 border-b-2 border-gray-900`}),(0,Q.jsx)(`p`,{className:`mt-2 text-sm text-gray-600`,children:`Loading form...`})]});if(b)return(0,Q.jsxs)(`div`,{className:`rounded-md border bg-card p-6 sm:p-8 text-center`,children:[(0,Q.jsx)(`h3`,{className:`text-lg font-semibold`,children:b.title??`Thanks!`}),b.message&&(0,Q.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:b.message})]});let N=e.layout===`vertical`||e.layout===`horizontal`?e.layout:`vertical`;if(A?.length&&(!e.formType||e.formType===`simple`)){let t=k?O:f,n=e=>typeof e==`number`&&e>0?Math.min(Math.floor(e),4):void 0,r=A.map(e=>n(e.columns)).filter(e=>e!=null),a=A.reduce((e,t)=>e+(Array.isArray(t.fields)?t.fields.length:0),0),o=n(e.columns)??(r.length?Math.max(...r):Se(a)),l=[];A.forEach((r,a)=>{let s=new Map(r.fields.map(e=>[typeof e==`string`?e:e.field??e.name,e])),u=Array.from(s.keys()),d=c(t.filter(e=>u.includes(e.name))).map(e=>{let t=s.get(e.name);if(!t||typeof t!=`object`)return e;let n=t,r={...e};return n.visibleOn!=null&&(r.visibleOn=n.visibleOn),n.colSpan!=null&&(r.colSpan=n.colSpan),n.span!=null&&(r.span=n.span),r});if(d.length===0)return;let f=r.name||r.label||String(a),p=r.name?i(e.objectName,r.name,r.label||r.name):r.label,m=j[f]??r.collapsed??!1;p&&l.push({name:`__section_${f}`,label:p,type:`section-divider`,colSpan:4,collapsible:r.collapsible,collapsed:m,onToggle:r.collapsible?()=>M(e=>({...e,[f]:!m})):void 0,className:r.className});let h=n(r.columns),g=o>1?Te(d,o,h):d;p&&m?l.push(...g.map(e=>({...e,hidden:!0}))):l.push(...g)});let u=l,d=Ae(o);return(0,Q.jsx)(`div`,{className:`w-full @container`,children:(0,Q.jsx)(s,{schema:{type:`form`,objectName:e.objectName,fields:u,layout:N,columns:o,...d?{fieldContainerClass:d}:{},defaultValues:D,showSubmit:e.showSubmit!==!1&&e.mode!==`view`,showCancel:e.showCancel!==!1,submitLabel:e.submitText||(e.mode===`create`?`Create`:`Update`),cancelLabel:e.cancelText,onSubmit:T,onCancel:E}})})}let P=e.sections?.length,F=c(f),I=P?{fields:F,columns:e.columns}:Ne(F,l,e.columns,e.mode),L=e.mobile,R=L?.fullscreenLongText?I.fields.map(e=>{let t=e.type;return t===`textarea`||t===`field:textarea`||t===`string-multiline`||t===`field:markdown`||t===`field:html`?{...e,mobile_fullscreen:!0}:e}):I.fields,z=L?.stepper,ee=L?.stepperMinFields??8,B=Math.max(1,L?.stepperFieldsPerStep??1);if(!e.formType&&!P&&R.length>=2&&(z===!0||z===`auto`&&a&&R.length>=ee)){let n=R,r=[];for(let e=0;e<n.length;e+=B){let t=n.slice(e,e+B);r.push({name:`step-${Math.floor(e/B)+1}`,label:t[0]?.label||t[0]?.name||`Step ${Math.floor(e/B)+1}`,fields:t})}return(0,Q.jsx)(Fe,{schema:{...e,formType:`wizard`,sections:r,showStepIndicator:!0},dataSource:t,className:e.className})}let ne={type:`form`,objectName:e.objectName,fields:R,layout:N,columns:I.columns,submitLabel:e.submitText||(e.mode===`create`?`Create`:`Update`),cancelLabel:e.cancelText,showSubmit:e.showSubmit!==!1&&e.mode!==`view`,showCancel:e.showCancel!==!1,resetOnSubmit:e.showReset||e.submitBehavior?.kind===`continue`||!e.submitBehavior&&e.resetOnSuccess&&e.mode===`create`,defaultValues:D,onSubmit:T,onCancel:E,className:e.className,mobileStickyActions:!!L?.stickyActions};return(0,Q.jsx)(`div`,{className:L?.stickyActions?`w-full pb-20 md:pb-0`:`w-full`,"data-mobile-form":L?`true`:void 0,children:(0,Q.jsx)(s,{schema:ne})})},Dt={text:200,email:254,url:2048,phone:32,textarea:5e3,markdown:5e3,html:5e3},Ot=`_company_website_2`,kt=1500;function At(e,t=[]){try{let n=new URL(e,typeof window<`u`?window.location.href:`http://localhost`);return typeof window<`u`&&n.origin===window.location.origin?!0:n.protocol!==`https:`&&n.protocol!==`http:`?!1:t.some(e=>{if(e===n.host)return!0;if(e.startsWith(`*.`)){let t=e.slice(1);return n.host.endsWith(t)&&n.host.length>t.length}return!1})}catch{return!1}}function jt(e){return e&&e.map(e=>{let t=Dt[String(e.type||``).toLowerCase()];return!t||(e.maxLength??e.max_length)?e:{...e,maxLength:t}})}var Mt=({config:e,dataSource:t,prefillParams:n,className:r})=>{let[i,a]=(0,X.useState)(!1),[o,s]=(0,X.useState)(!1),[c,l]=(0,X.useState)(null),[u,d]=(0,X.useState)(!(e.consent?.required??!!e.consent)),[f,m]=(0,X.useState)(null),h=(0,X.useRef)(null),g=(0,X.useRef)(0);(0,X.useEffect)(()=>{i||(g.current=Date.now())},[i]);let v=e.honeypot===!1?null:e.honeypot||Ot,y=e.minFillTime??kt,b=(0,X.useMemo)(()=>jt(e.customFields),[e.customFields]),S=(0,X.useMemo)(()=>{if(!t||b&&b.length>0||!e.fields||e.fields.length===0)return;let n=async(e,t)=>t;return{...t,create:n,update:(e,t,n)=>Promise.resolve(n),delete:()=>Promise.reject(Error(`Not permitted on public form`))}},[t,b,e.fields]),C=(0,X.useMemo)(()=>{let t={};if(n)for(let[e,r]of Object.entries(n))t[e]=r;if(typeof window<`u`&&e.allowedPrefillFields?.length){let n=new Set(e.allowedPrefillFields);new URLSearchParams(window.location.search).forEach((e,r)=>{n.has(r)&&!(r in t)&&(t[r]=e)})}return Object.keys(t).length>0?t:void 0},[n,e.allowedPrefillFields]),w=(0,X.useCallback)(async n=>{if(e.consent?.required&&!u){m(e.texts?.consentRequired??`Please accept the privacy policy to continue.`);return}if(m(null),v&&h.current?.value){a(!0);return}if(y>0&&Date.now()-g.current<y){l(e.texts?.rateLimited??`Please take a moment to review your answers before submitting.`);return}let r={...n};v&&delete r[v],e.captchaToken&&(r._captcha=e.captchaToken),s(!0),l(null);try{t&&await t.create(e.objectName,r),a(!0);let n=e.thankYouPage?.redirectUrl;if(n)if(At(n,e.allowedRedirectHosts)){let t=e.thankYouPage?.redirectDelay??3e3;setTimeout(()=>{window.location.href=n},t)}else console.warn(`[EmbeddableForm] Blocked unsafe redirect target:`,n),l(e.texts?.redirectBlocked??null)}catch(e){l(e instanceof Error?e.message:`Failed to submit form. Please try again.`)}finally{s(!1)}},[t,e,u,v,y]),E=(0,X.useCallback)(()=>{a(!1),l(null)},[]),D=(0,X.useMemo)(()=>{let t={};return e.branding?.backgroundColor&&(t.backgroundColor=e.branding.backgroundColor),t},[e.branding]);if(i){let t=e.thankYouPage,n=e.texts??{},i=Math.ceil((t?.redirectDelay??3e3)/1e3),a=(n.redirecting??`Redirecting in {{seconds}} seconds…`).replace(`{{seconds}}`,String(i));return(0,Q.jsx)(`div`,{className:`min-h-screen flex items-center justify-center p-4 bg-gradient-to-b from-muted/40 via-background to-background ${r||``}`,style:D,children:(0,Q.jsxs)(`div`,{className:`max-w-md w-full bg-card border rounded-xl shadow-sm p-8 text-center space-y-4`,children:[(0,Q.jsx)(`div`,{className:`mx-auto inline-flex h-14 w-14 items-center justify-center rounded-full bg-emerald-50 text-emerald-600 dark:bg-emerald-500/10 dark:text-emerald-400`,children:(0,Q.jsx)(_,{className:`h-8 w-8`,"aria-hidden":`true`})}),(0,Q.jsx)(`h2`,{className:`text-xl font-semibold text-foreground`,children:t?.title||n.thankYouTitle||`Thank You!`}),(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:t?.message||n.thankYouMessage||`Your submission has been received successfully.`}),e.allowMultiple&&(0,Q.jsx)(T,{variant:`outline`,size:`sm`,onClick:E,className:`mt-2`,children:n.submitAnother??`Submit Another Response`}),t?.redirectUrl&&(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:a})]})})}let O=e.texts??{},k=!!e.consent?.required,A=`${e.formId}-consent`;return(0,Q.jsx)(`div`,{className:`min-h-screen flex items-center justify-center p-4 sm:p-6 bg-gradient-to-b from-muted/40 via-background to-background ${r||``}`,style:D,children:(0,Q.jsxs)(`div`,{className:`max-w-2xl w-full bg-card border rounded-xl shadow-sm overflow-hidden`,children:[e.branding?.coverImage&&(0,Q.jsx)(`div`,{className:`h-28 sm:h-32 w-full bg-cover bg-center`,style:{backgroundImage:`url(${JSON.stringify(e.branding.coverImage)})`},role:`presentation`}),(0,Q.jsxs)(`div`,{className:`px-6 sm:px-8 pt-7 pb-5 border-b bg-muted/20`,style:e.branding?.primaryColor?{borderBottomColor:e.branding.primaryColor}:void 0,children:[e.branding?.logo&&(0,Q.jsx)(`img`,{src:e.branding.logo,alt:``,className:`h-8 mb-4`}),e.title&&(0,Q.jsx)(`h1`,{className:`text-2xl font-semibold tracking-tight text-foreground`,children:e.title}),e.description&&(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground mt-2 leading-relaxed`,children:e.description}),(0,Q.jsx)(`p`,{className:`text-[11px] text-muted-foreground/70 mt-3`,"aria-hidden":`true`,children:O.requiredHint??`* Required field`})]}),(0,Q.jsxs)(`div`,{className:`relative px-6 sm:px-8 py-6`,children:[c&&(0,Q.jsx)(`div`,{role:`alert`,"aria-live":`assertive`,className:`mb-4 p-3 bg-destructive/10 border border-destructive/30 rounded-md text-sm text-destructive`,children:c}),(0,Q.jsx)(Tt,{schema:{type:`object-form`,objectName:e.objectName,mode:`create`,fields:e.fields,customFields:b,initialData:C,onSuccess:w,submitText:o?O.submitting??`Submitting...`:O.submit??`Submit`},dataSource:S}),v&&(0,Q.jsxs)(`div`,{"aria-hidden":`true`,className:`absolute left-[-10000px] top-auto h-px w-px overflow-hidden`,children:[(0,Q.jsx)(`label`,{htmlFor:`${e.formId}-${v}`,children:`Do not fill this field`}),(0,Q.jsx)(`input`,{ref:h,id:`${e.formId}-${v}`,type:`text`,name:v,tabIndex:-1,autoComplete:`off`,defaultValue:``})]}),e.consent&&(0,Q.jsxs)(`div`,{className:`mt-4`,children:[(0,Q.jsxs)(`label`,{className:`flex items-start gap-2 text-sm text-foreground cursor-pointer select-none`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,id:A,checked:u,onChange:e=>{d(e.target.checked),e.target.checked&&m(null)},"aria-required":k||void 0,"aria-invalid":f?`true`:void 0,"aria-describedby":f?`${A}-error`:void 0,className:`mt-0.5 h-4 w-4 rounded border-input accent-primary`}),(0,Q.jsxs)(`span`,{className:`leading-relaxed`,children:[e.consent.label??O.consentLabelDefault??`I agree to the privacy policy.`,k&&(0,Q.jsx)(`span`,{"aria-hidden":`true`,className:`text-destructive ml-0.5`,children:`*`}),e.consent.privacyUrl&&(0,Q.jsxs)(Q.Fragment,{children:[` `,(0,Q.jsx)(`a`,{href:e.consent.privacyUrl,target:`_blank`,rel:`noopener noreferrer`,className:`underline text-primary hover:opacity-80`,children:O.consentLink??`Privacy policy`})]})]})]}),f&&(0,Q.jsx)(`p`,{id:`${A}-error`,role:`alert`,className:`mt-1.5 text-xs text-destructive`,children:f})]}),o&&(0,Q.jsxs)(`div`,{className:`mt-3 flex items-center gap-2 text-xs text-muted-foreground`,children:[(0,Q.jsx)(re,{className:`h-3.5 w-3.5 animate-spin`,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{children:O.submitting??`Submitting…`})]})]}),(0,Q.jsxs)(`div`,{className:`px-6 sm:px-8 py-4 border-t bg-muted/20 flex flex-col sm:flex-row items-center justify-between gap-2`,children:[(0,Q.jsxs)(`p`,{className:`inline-flex items-center gap-1.5 text-xs text-muted-foreground`,children:[(0,Q.jsx)(x,{className:`h-3 w-3`,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{children:O.secureNotice??`Your information is transmitted securely and only used to respond to your request.`})]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-3 text-xs text-muted-foreground/80`,children:[e.privacyPolicyUrl&&(0,Q.jsxs)(`a`,{href:e.privacyPolicyUrl,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 underline hover:text-foreground`,children:[(0,Q.jsx)(p,{className:`h-3 w-3`,"aria-hidden":`true`}),O.consentLink??`Privacy policy`]}),(0,Q.jsx)(`span`,{children:O.poweredBy??`Powered by ObjectStack`})]})]})]})})};function Nt(e){return e<60?`${Math.round(e)}s`:e<3600?`${Math.floor(e/60)}m ${Math.round(e%60)}s`:`${Math.floor(e/3600)}h ${Math.floor(e%3600/60)}m`}var Pt=({formId:e,formTitle:t,metrics:n,className:r})=>{let i=(0,X.useMemo)(()=>{if(!n.abandonedSubmissions)return 100;let e=n.totalSubmissions+n.abandonedSubmissions;return e===0?0:Math.round(n.totalSubmissions/e*100)},[n.totalSubmissions,n.abandonedSubmissions]),a=(0,X.useMemo)(()=>n.dailySubmissions?.length?Math.max(...n.dailySubmissions.map(e=>e.count),1):1,[n.dailySubmissions]);return(0,Q.jsxs)(`div`,{className:`space-y-4 ${r||``}`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h2`,{className:`text-lg font-semibold text-foreground`,children:t||`Form Analytics`}),(0,Q.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`Form ID: `,e]})]}),(0,Q.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-3 gap-4`,children:[(0,Q.jsx)(U,{children:(0,Q.jsxs)(V,{className:`pb-2`,children:[(0,Q.jsx)(z,{children:`Total Submissions`}),(0,Q.jsx)(q,{className:`text-2xl`,children:n.totalSubmissions.toLocaleString()})]})}),(0,Q.jsxs)(U,{children:[(0,Q.jsxs)(V,{className:`pb-2`,children:[(0,Q.jsx)(z,{children:`Fill Rate`}),(0,Q.jsxs)(q,{className:`text-2xl`,children:[i,`%`]})]}),(0,Q.jsx)(K,{children:(0,Q.jsx)(`div`,{className:`w-full bg-muted rounded-full h-2`,children:(0,Q.jsx)(`div`,{className:`bg-primary rounded-full h-2 transition-all`,style:{width:`${i}%`}})})})]}),(0,Q.jsx)(U,{children:(0,Q.jsxs)(V,{className:`pb-2`,children:[(0,Q.jsx)(z,{children:`Avg. Completion Time`}),(0,Q.jsx)(q,{className:`text-2xl`,children:n.avgCompletionTime?Nt(n.avgCompletionTime):`—`})]})})]}),n.dailySubmissions&&n.dailySubmissions.length>0&&(0,Q.jsxs)(U,{children:[(0,Q.jsx)(V,{children:(0,Q.jsx)(q,{className:`text-sm font-medium`,children:`Daily Submissions`})}),(0,Q.jsx)(K,{children:(0,Q.jsx)(`div`,{className:`flex items-end gap-1 h-32`,children:n.dailySubmissions.map((e,t)=>(0,Q.jsxs)(`div`,{className:`flex-1 flex flex-col items-center gap-1`,children:[(0,Q.jsx)(`div`,{className:`w-full bg-primary/80 rounded-t transition-all hover:bg-primary`,style:{height:`${e.count/a*100}%`,minHeight:e.count>0?`4px`:`0`},title:`${e.date}: ${e.count} submissions`}),(0,Q.jsx)(`span`,{className:`text-[10px] text-muted-foreground truncate w-full text-center`,children:e.date.slice(-5)})]},t))})})]}),n.fieldDropOff&&n.fieldDropOff.length>0&&(0,Q.jsxs)(U,{children:[(0,Q.jsxs)(V,{children:[(0,Q.jsx)(q,{className:`text-sm font-medium`,children:`Field Completion Rates`}),(0,Q.jsx)(z,{children:`Percentage of users who completed each field`})]}),(0,Q.jsx)(K,{children:(0,Q.jsx)(`div`,{className:`space-y-3`,children:n.fieldDropOff.map((e,t)=>(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsxs)(`div`,{className:`flex justify-between text-sm`,children:[(0,Q.jsx)(`span`,{className:`text-foreground`,children:e.label}),(0,Q.jsxs)(`span`,{className:`text-muted-foreground`,children:[e.completionRate,`%`]})]}),(0,Q.jsx)(`div`,{className:`w-full bg-muted rounded-full h-1.5`,children:(0,Q.jsx)(`div`,{className:`rounded-full h-1.5 transition-all ${e.completionRate>=80?`bg-green-500`:e.completionRate>=50?`bg-yellow-500`:`bg-destructive`}`,style:{width:`${e.completionRate}%`}})})]},t))})})]})]})},Ft=({schema:e})=>{let t=d()?.dataSource,n=i(),r=e.parentObject||n?.objectName,o=e.parentId||e.recordId||n?.recordId,[s,c]=(0,X.useState)([]),[l,u]=(0,X.useState)([]),[f,p]=(0,X.useState)(!0),[m,h]=(0,X.useState)(!1),[g,_]=(0,X.useState)(!1),[v,y]=(0,X.useState)(null),[b,x]=(0,X.useState)(null);(0,X.useEffect)(()=>{let n=t;if(!n||typeof n.getObjectSchema!=`function`)return;let r=!1;return n.getObjectSchema(e.childObject).then(e=>{r||x(e??null)}).catch(()=>{r||x(null)}),()=>{r=!0}},[t,e.childObject]);let S=(0,X.useCallback)(async()=>{if(!t||!o){p(!1);return}p(!0);try{let n=(await t.find(e.childObject,{$filter:{[e.relationshipField]:o},$top:500}))?.data??[];c(n.map(e=>({...e}))),u(n.map(e=>({...e}))),_(!1)}catch(e){y(e?.message||`Failed to load line items`)}finally{p(!1)}},[t,o,e.childObject,e.relationshipField]);(0,X.useEffect)(()=>{S()},[S]);let C=(0,X.useCallback)(e=>{c(e),_(!0)},[]),E=(0,X.useCallback)(async()=>{if(!(!t||!o)){h(!0),y(null);try{let n=!!(r&&e.totalField),i=n?{[e.totalField]:qe(s,e.amountField||`amount`)}:{},c=Ge(r??``,o,i,[{childObject:e.childObject,relationshipField:e.relationshipField,rows:s,original:l,childSchema:b}]);n||(c=c.slice(1)),c.length&&await a(t,c),await S()}catch(e){y(e?.message||`Failed to save line items`)}finally{h(!1)}}},[t,o,s,l,e,r,S,b]),O=(0,X.useMemo)(()=>({columns:e.columns,total_field:e.totalField?e.amountField||`amount`:void 0,min_rows:e.minRows,max_rows:e.maxRows,allow_add:!e.readonly,allow_delete:!e.readonly}),[e]);return(0,Q.jsxs)(U,{className:w(`shadow-none`),children:[(0,Q.jsxs)(V,{className:`flex-row items-center justify-between gap-2 pb-2`,children:[(0,Q.jsx)(q,{className:`text-sm font-medium`,children:e.title||`Line Items`}),!e.readonly&&(0,Q.jsx)(T,{type:`button`,size:`sm`,onClick:E,disabled:m||f||!g||!o,children:m?`Saving…`:`Save`})]}),(0,Q.jsxs)(K,{children:[v&&(0,Q.jsx)(`p`,{className:`mb-2 text-sm text-destructive`,children:v}),f?(0,Q.jsx)(`p`,{className:`py-6 text-center text-sm text-muted-foreground`,children:`Loading…`}):o?(0,Q.jsx)(D,{value:s,onChange:C,field:O,readonly:e.readonly}):(0,Q.jsx)(`p`,{className:`py-6 text-center text-sm text-muted-foreground`,children:`Save the record first to add line items.`})]})]})},It=({schema:e})=>(0,Q.jsx)(Tt,{schema:e,dataSource:(0,X.useContext)(c)?.dataSource??void 0});l.register(`object-form`,It,{namespace:`plugin-form`,label:`Object Form`,category:`plugin`,inputs:[{name:`objectName`,type:`string`,label:`Object Name`,required:!0},{name:`fields`,type:`array`,label:`Fields`},{name:`mode`,type:`enum`,label:`Mode`,enum:[`create`,`edit`,`view`]},{name:`formType`,type:`enum`,label:`Form Type`,enum:[`simple`,`tabbed`,`wizard`,`split`,`drawer`,`modal`]},{name:`sections`,type:`array`,label:`Sections`},{name:`title`,type:`string`,label:`Title`},{name:`description`,type:`string`,label:`Description`},{name:`layout`,type:`enum`,label:`Layout`,enum:[`vertical`,`horizontal`,`inline`,`grid`]},{name:`columns`,type:`number`,label:`Columns`},{name:`defaultTab`,type:`string`,label:`Default Tab`},{name:`tabPosition`,type:`enum`,label:`Tab Position`,enum:[`top`,`bottom`,`left`,`right`]},{name:`allowSkip`,type:`boolean`,label:`Allow Skip Steps`},{name:`showStepIndicator`,type:`boolean`,label:`Show Step Indicator`},{name:`splitDirection`,type:`enum`,label:`Split Direction`,enum:[`horizontal`,`vertical`]},{name:`splitSize`,type:`number`,label:`Split Panel Size (%)`},{name:`splitResizable`,type:`boolean`,label:`Split Resizable`},{name:`drawerSide`,type:`enum`,label:`Drawer Side`,enum:[`top`,`bottom`,`left`,`right`]},{name:`drawerWidth`,type:`string`,label:`Drawer Width`},{name:`modalSize`,type:`enum`,label:`Modal Size`,enum:[`sm`,`default`,`lg`,`xl`,`full`]}]}),l.register(`form`,It,{namespace:`view`,skipFallback:!0,label:`Data Form View`,category:`view`,inputs:[{name:`objectName`,type:`string`,label:`Object Name`,required:!0},{name:`fields`,type:`array`,label:`Fields`},{name:`mode`,type:`enum`,label:`Mode`,enum:[`create`,`edit`,`view`]}]}),l.register(`embeddable-form`,({schema:e})=>(0,Q.jsx)(Mt,{config:e}),{namespace:`plugin-form`,label:`Embeddable Form`,category:`plugin`,inputs:[{name:`formId`,type:`string`,label:`Form ID`,required:!0},{name:`objectName`,type:`string`,label:`Object Name`,required:!0},{name:`title`,type:`string`,label:`Form Title`},{name:`description`,type:`string`,label:`Description`},{name:`fields`,type:`array`,label:`Fields`},{name:`allowMultiple`,type:`boolean`,label:`Allow Multiple Submissions`}]}),l.register(`form-analytics`,({schema:e})=>(0,Q.jsx)(Pt,{formId:e.formId,formTitle:e.formTitle,metrics:e.metrics||{totalSubmissions:0}}),{namespace:`plugin-form`,label:`Form Analytics`,category:`plugin`,inputs:[{name:`formId`,type:`string`,label:`Form ID`,required:!0},{name:`formTitle`,type:`string`,label:`Form Title`},{name:`metrics`,type:`object`,label:`Submission Metrics`}]}),l.register(`object-master-detail-form`,({schema:e})=>(0,Q.jsx)(_t,{schema:e,dataSource:(0,X.useContext)(c)?.dataSource??void 0}),{namespace:`plugin-form`,label:`Master-Detail Form`,category:`plugin`,inputs:[{name:`objectName`,type:`string`,label:`Parent Object`,required:!0},{name:`mode`,type:`enum`,label:`Mode`,enum:[`create`,`edit`]},{name:`sections`,type:`array`,label:`Parent Sections`},{name:`details`,type:`array`,label:`Detail Collections`,required:!0}]}),l.register(`line_items`,({schema:e})=>(0,Q.jsx)(Ft,{schema:e}),{namespace:`record`,skipFallback:!0,label:`Line Items`,category:`record`,inputs:[{name:`childObject`,type:`string`,label:`Child Object`,required:!0},{name:`relationshipField`,type:`string`,label:`Relationship Field`,required:!0},{name:`columns`,type:`array`,label:`Columns`,required:!0},{name:`totalField`,type:`string`,label:`Parent Total Field`},{name:`amountField`,type:`string`,label:`Amount Column`}]});export{Ae as a,dt as i,wt as n,Se as o,bt as r,be as s,Tt as t};