@svgrid/enterprise 2.5.1 → 2.5.2

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.
@@ -30,7 +30,7 @@ Contact sales@jqwidgets.com for details or visit the license page: https://svgri
30
30
  <p style="margin:10px 0 0;font-size:11px;color:#64748b;">
31
31
  Already licensed? Call <code style="color:#94a3b8;">setLicenseKey()</code> at startup to hide this.
32
32
  </p>
33
- `,n.querySelector(`[data-act="x"]`)?.addEventListener(`click`,()=>Pp(n)),n.querySelector(`[data-act="trial"]`)?.addEventListener(`click`,()=>Pp(n)),n.querySelector(`[data-act="pricing"]`)?.addEventListener(`click`,()=>Pp(n)),n}function Ip(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`)}var Lp=null,Rp=!1;function zp(){return Lp!=null}function Bp(e){let t=fp(Lp);t.valid&&!t.expired||(xp(),Np(e,{expired:t.expired===!0}))}function Vp(e){let t=fp(Lp);switch(t.status){case`unset`:xp(),Np(e);return;case`invalid`:throw Error(`@svgrid/enterprise: invalid license key format (expected "${up}..." prefix).`);case`revoked`:throw Error(`@svgrid/enterprise: this license key has been revoked. Contact sales@jqwidgets.com for a replacement.`);case`dev`:case`eval`:if(t.expired){xp(),Np(e,{expired:!0});return}Rp||=(console.info(`@svgrid/enterprise: using a development / evaluation license. Not for production use.`),!0);return;case`licensed`:return}}var Hp=!1;function Up(){if(Hp)return;if(typeof window>`u`)throw Error(`@svgrid/enterprise: installSmartShim() requires a browser environment`);let e=window.Smart??{Utilities:{}};e.Utilities=e.Utilities??{},typeof e.Utilities.Assign!=`function`&&(e.Utilities.Assign=(t,n)=>{e.Utilities[t]=n}),(!e.Utilities.Core||typeof e.Utilities.Core.toDash!=`function`)&&(e.Utilities.Core={toDash:e=>e.replace(/[A-Z]/g,e=>`-`+e.toLowerCase())}),window.Smart=e,Hp=!0}var Wp=/[\x00-\x08\x0B\x0C\x0E-\x1F]/g;function Gp(e){return e.replace(Wp,``).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`)}function Kp(e){let t=(e,t=2)=>String(e).padStart(t,`0`);return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}T${t(e.getHours())}:${t(e.getMinutes())}:${t(e.getSeconds())}.000`}async function qp(e,t,n,r={}){let i=Math.max(1,r.chunkRows??5e3),a=n.length,o=r.rawValues===!0,s=r.cellVisual,c=r.precisionSafe===!0,l=new Map,u=[`<Style ss:ID="sHeader"><Font ss:Bold="1"/><Interior ss:Color="#F2F2F2" ss:Pattern="Solid"/></Style>`],d=e=>e===`right`?`Right`:e===`center`?`Center`:`Left`,f=e=>{let t=e.align&&e.align!==`left`;if(!e.numFmt&&!e.fill&&!e.color&&!e.bold&&!t)return;let n=`${e.numFmt??``}|${e.fill??``}|${e.color??``}|${e.bold?`b`:``}|${e.align??``}`,r=l.get(n);if(r)return r;let i=`s${l.size+1}`,a=[];return t&&a.push(`<Alignment ss:Horizontal="${d(e.align)}"/>`),(e.color||e.bold)&&a.push(`<Font${e.color?` ss:Color="${e.color}"`:``}${e.bold?` ss:Bold="1"`:``}/>`),e.fill&&a.push(`<Interior ss:Color="${e.fill}" ss:Pattern="Solid"/>`),e.numFmt&&a.push(`<NumberFormat ss:Format="${Gp(e.numFmt)}"/>`),u.push(`<Style ss:ID="${i}">${a.join(``)}</Style>`),l.set(n,i),i};function p(e,t,n,r){let i=e.link?.(t)||void 0,a=s?.(n,r),l=t=>f({numFmt:t,fill:a?.fill,color:a?.color,bold:a?.bold,align:e.align});if(e.exportValue){let n=e.exportValue(t),r=n==null?``:String(n);return{type:`String`,value:a?.icon?`${a.icon} ${r}`:r,styleId:l(),href:i}}let u=t[e.field];if(a?.icon){let t=o?String(u??``):me(u,e.format);return{type:`String`,value:`${a.icon} ${t}`,styleId:l(),href:i}}let d=e=>c&&Math.abs(e)>=0x38d7ea4c68000;if(o){let e=u==null?``:String(u);return typeof u==`number`&&Number.isFinite(u)&&!d(u)?{type:`Number`,value:e,styleId:l(),href:i}:{type:`String`,value:e,styleId:l(),href:i}}let p=pe(u,e.format);if(p.ok){let t=Se(e.format);return p.value instanceof Date?{type:`DateTime`,value:Kp(p.value),styleId:l(t),href:i}:d(p.value)?{type:`String`,value:String(p.value),styleId:l(),href:i}:{type:`Number`,value:String(p.value),styleId:l(t),href:i}}return{type:`String`,value:me(u,e.format),styleId:l(),href:i}}let m=e=>`<Cell${e.styleId?` ss:StyleID="${e.styleId}"`:``}${e.href?` ss:HRef="${Gp(e.href)}"`:``}><Data ss:Type="${e.type}">${Gp(e.value)}</Data></Cell>`,h=r.widths?r.widths.map(e=>`<Column ss:Width="${Math.round(e*.75)}"/>`).join(``):``,g=Math.max(0,Math.floor(r.freezeColumns??0)),_=r.freezeHeader||g>0?`<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"><FreezePanes/><FrozenNoSplit/>`+(r.freezeHeader?`<SplitHorizontal>1</SplitHorizontal><TopRowBottomPane>1</TopRowBottomPane>`:``)+(g>0?`<SplitVertical>${g}</SplitVertical><LeftColumnRightPane>${g}</LeftColumnRightPane>`:``)+`<ActivePane>2</ActivePane></WorksheetOptions>`:``,v=[`<Row>${t.map(e=>`<Cell ss:StyleID="sHeader"><Data ss:Type="String">${Gp(e.header??e.field)}</Data></Cell>`).join(``)}</Row>`];for(let e=0;e<a;e++){if(r.signal?.aborted)throw new DOMException(`Export aborted`,`AbortError`);let o=n[e],s=t.map((t,n)=>m(p(t,o,e,n))).join(``);v.push(`<Row>${s}</Row>`),e>0&&e%i===0&&(r.onProgress?.({phase:`serialize`,ratio:e/a,row:e,total:a}),await new Promise(e=>setTimeout(e,0)))}return r.onProgress?.({phase:`serialize`,ratio:1,row:a,total:a}),`<?xml version="1.0"?>
33
+ `,n.querySelector(`[data-act="x"]`)?.addEventListener(`click`,()=>Pp(n)),n.querySelector(`[data-act="trial"]`)?.addEventListener(`click`,()=>Pp(n)),n.querySelector(`[data-act="pricing"]`)?.addEventListener(`click`,()=>Pp(n)),n}function Ip(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`)}var Lp=null,Rp=!1;function zp(){return Lp!=null}function Bp(e){let t=fp(Lp);if(t.valid&&!t.expired)return;let n=t.valid&&t.expired===!0;n||xp(),Np(e,{expired:n})}function Vp(e){let t=fp(Lp);switch(t.status){case`unset`:xp(),Np(e);return;case`invalid`:throw Error(`@svgrid/enterprise: invalid license key format (expected "${up}..." prefix).`);case`revoked`:throw Error(`@svgrid/enterprise: this license key has been revoked. Contact sales@jqwidgets.com for a replacement.`);case`dev`:case`eval`:if(t.expired){Np(e,{expired:!0});return}Rp||=(console.info(`@svgrid/enterprise: using a development / evaluation license. Not for production use.`),!0);return;case`licensed`:return}}var Hp=!1;function Up(){if(Hp)return;if(typeof window>`u`)throw Error(`@svgrid/enterprise: installSmartShim() requires a browser environment`);let e=window.Smart??{Utilities:{}};e.Utilities=e.Utilities??{},typeof e.Utilities.Assign!=`function`&&(e.Utilities.Assign=(t,n)=>{e.Utilities[t]=n}),(!e.Utilities.Core||typeof e.Utilities.Core.toDash!=`function`)&&(e.Utilities.Core={toDash:e=>e.replace(/[A-Z]/g,e=>`-`+e.toLowerCase())}),window.Smart=e,Hp=!0}var Wp=/[\x00-\x08\x0B\x0C\x0E-\x1F]/g;function Gp(e){return e.replace(Wp,``).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`)}function Kp(e){let t=(e,t=2)=>String(e).padStart(t,`0`);return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}T${t(e.getHours())}:${t(e.getMinutes())}:${t(e.getSeconds())}.000`}async function qp(e,t,n,r={}){let i=Math.max(1,r.chunkRows??5e3),a=n.length,o=r.rawValues===!0,s=r.cellVisual,c=r.precisionSafe===!0,l=new Map,u=[`<Style ss:ID="sHeader"><Font ss:Bold="1"/><Interior ss:Color="#F2F2F2" ss:Pattern="Solid"/></Style>`],d=e=>e===`right`?`Right`:e===`center`?`Center`:`Left`,f=e=>{let t=e.align&&e.align!==`left`;if(!e.numFmt&&!e.fill&&!e.color&&!e.bold&&!t)return;let n=`${e.numFmt??``}|${e.fill??``}|${e.color??``}|${e.bold?`b`:``}|${e.align??``}`,r=l.get(n);if(r)return r;let i=`s${l.size+1}`,a=[];return t&&a.push(`<Alignment ss:Horizontal="${d(e.align)}"/>`),(e.color||e.bold)&&a.push(`<Font${e.color?` ss:Color="${e.color}"`:``}${e.bold?` ss:Bold="1"`:``}/>`),e.fill&&a.push(`<Interior ss:Color="${e.fill}" ss:Pattern="Solid"/>`),e.numFmt&&a.push(`<NumberFormat ss:Format="${Gp(e.numFmt)}"/>`),u.push(`<Style ss:ID="${i}">${a.join(``)}</Style>`),l.set(n,i),i};function p(e,t,n,r){let i=e.link?.(t)||void 0,a=s?.(n,r),l=t=>f({numFmt:t,fill:a?.fill,color:a?.color,bold:a?.bold,align:e.align});if(e.exportValue){let n=e.exportValue(t),r=n==null?``:String(n);return{type:`String`,value:a?.icon?`${a.icon} ${r}`:r,styleId:l(),href:i}}let u=t[e.field];if(a?.icon){let t=o?String(u??``):me(u,e.format);return{type:`String`,value:`${a.icon} ${t}`,styleId:l(),href:i}}let d=e=>c&&Math.abs(e)>=0x38d7ea4c68000;if(o){let e=u==null?``:String(u);return typeof u==`number`&&Number.isFinite(u)&&!d(u)?{type:`Number`,value:e,styleId:l(),href:i}:{type:`String`,value:e,styleId:l(),href:i}}let p=pe(u,e.format);if(p.ok){let t=Se(e.format);return p.value instanceof Date?{type:`DateTime`,value:Kp(p.value),styleId:l(t),href:i}:d(p.value)?{type:`String`,value:String(p.value),styleId:l(),href:i}:{type:`Number`,value:String(p.value),styleId:l(t),href:i}}return{type:`String`,value:me(u,e.format),styleId:l(),href:i}}let m=e=>`<Cell${e.styleId?` ss:StyleID="${e.styleId}"`:``}${e.href?` ss:HRef="${Gp(e.href)}"`:``}><Data ss:Type="${e.type}">${Gp(e.value)}</Data></Cell>`,h=r.widths?r.widths.map(e=>`<Column ss:Width="${Math.round(e*.75)}"/>`).join(``):``,g=Math.max(0,Math.floor(r.freezeColumns??0)),_=r.freezeHeader||g>0?`<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"><FreezePanes/><FrozenNoSplit/>`+(r.freezeHeader?`<SplitHorizontal>1</SplitHorizontal><TopRowBottomPane>1</TopRowBottomPane>`:``)+(g>0?`<SplitVertical>${g}</SplitVertical><LeftColumnRightPane>${g}</LeftColumnRightPane>`:``)+`<ActivePane>2</ActivePane></WorksheetOptions>`:``,v=[`<Row>${t.map(e=>`<Cell ss:StyleID="sHeader"><Data ss:Type="String">${Gp(e.header??e.field)}</Data></Cell>`).join(``)}</Row>`];for(let e=0;e<a;e++){if(r.signal?.aborted)throw new DOMException(`Export aborted`,`AbortError`);let o=n[e],s=t.map((t,n)=>m(p(t,o,e,n))).join(``);v.push(`<Row>${s}</Row>`),e>0&&e%i===0&&(r.onProgress?.({phase:`serialize`,ratio:e/a,row:e,total:a}),await new Promise(e=>setTimeout(e,0)))}return r.onProgress?.({phase:`serialize`,ratio:1,row:a,total:a}),`<?xml version="1.0"?>
34
34
  <?mso-application progid="Excel.Sheet"?>
35
35
  <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40"><Styles>${u.join(``)}</Styles><Worksheet ss:Name="${Gp(e.slice(0,31)||`Sheet1`)}"><Table>${h}${v.join(``)}</Table>`+_+`</Worksheet></Workbook>`}var Jp={"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`,"'":`&apos;`},Yp=/[\x00-\x08\x0B\x0C\x0E-\x1F]/g;function Xp(e){return e.replace(Yp,``).replace(/[&<>"']/g,e=>Jp[e])}function Zp(e){let t=e,n=``;do n=String.fromCharCode(65+t%26)+n,t=Math.floor(t/26)-1;while(t>=0);return n}function Qp(e){if(!e)return null;let t=/^#?([0-9a-f]{6})$/i.exec(e.trim());return t?`FF`+t[1].toUpperCase():null}function $p(e){let t=Date.UTC(1899,11,30);return(e.getTime()-t)/864e5}var em=`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
36
36
  <Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Default Extension="xml" ContentType="application/xml"/><Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/><Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/><Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"/></Types>`,tm=`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
@@ -475,7 +475,7 @@ ${M}
475
475
  .st-home a { color: var(--sg-accent, #6366f1); font-weight: 600; }
476
476
  @keyframes st-home-spin { to { transform: rotate(360deg); } }
477
477
  </style>
478
- `}}function BT(e){for(let t of e)fv(t);let t=new Map(e.map(e=>[e.name,e])),n=e.map(e=>{let n=fT(e,t);return{schema:pT(e,n),infos:n}});return{entries:n,seed:mT(n)}}function VT(e,t={}){let{entries:n,seed:r}=BT(e),{file:i,needs:a}=IT(n,r,t.sources,t.supabaseConn),o=[_T(n),i];(a.supabase||t.supabaseAuth)&&!a.supabaseUrl&&(t.supabaseConn?.url||t.supabaseConn?.key)&&(a.supabaseUrl=t.supabaseConn.url,a.supabaseKey=t.supabaseConn.key),(a.supabase||t.supabaseAuth)&&o.push(LT(a));for(let e of a.sqlRoutes)o.push(OT(e.schema,e.table,e.dialect,{access:t.accessEnabled,audit:t.auditEnabled,screenIds:t.screensByEntity?.get(e.schema.name)??[],triggers:t.triggers?.[e.schema.name],dbSchema:e.dbSchema,tenantField:t.tenantField&&t.tenantScoped?.(e.schema.name)!==!1?t.tenantField:void 0}));return{files:o,prepared:n.map(e=>e.schema)}}var HT={light:{danger:`#dc2626`,success:`#16a34a`,warning:`#d97706`,info:`#0891b2`},dark:{danger:`#f87171`,success:`#4ade80`,warning:`#fbbf24`,info:`#22d3ee`}},UT=[{id:`ember`,name:`Ember`,radius:6,font:`ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif`,headerType:{weight:`500`},light:{bg:`#ffffff`,fg:`#1c1917`,muted:`#78716c`,border:`#e7e5e4`,headerBg:`#fafaf9`,headerFg:`#78716c`,accent:`#ff3e00`,rowAlt:`#ffffff`,rowHover:`#f5f5f4`,selectionBg:`#ffece3`,bgSubtle:`#fafaf9`,pinnedBg:`#fafaf9`,pinnedHeaderBg:`#f5f5f4`,pinnedDivider:`#e7e5e4`,pinnedBorder:`#e7e5e4`,pinnedShadow:`rgba(28, 25, 23, 0.10)`},dark:{bg:`#0c0a09`,fg:`#fafaf9`,muted:`#a8a29e`,border:`#292524`,headerBg:`#1c1917`,headerFg:`#a8a29e`,accent:`#ff5a1f`,rowAlt:`#0c0a09`,rowHover:`#1c1917`,selectionBg:`#3a2318`,bgSubtle:`#1c1917`,pinnedBg:`#151312`,pinnedHeaderBg:`#1c1917`,pinnedDivider:`#292524`,pinnedBorder:`#292524`,pinnedShadow:`rgba(0, 0, 0, 0.50)`}},{id:`shadcn`,name:`shadcn/ui`,radius:6,font:`ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif`,light:{bg:`#ffffff`,fg:`#09090b`,muted:`#71717a`,border:`#e4e4e7`,headerBg:`#fafafa`,headerFg:`#71717a`,accent:`#18181b`,rowAlt:`#ffffff`,rowHover:`#f4f4f5`,selectionBg:`#f4f4f5`},dark:{bg:`#0a0a0a`,fg:`#fafafa`,muted:`#a1a1aa`,border:`#27272a`,headerBg:`#18181b`,headerFg:`#a1a1aa`,accent:`#fafafa`,rowAlt:`#0a0a0a`,rowHover:`#18181b`,selectionBg:`#27272a`}},{id:`tailwind`,name:`Tailwind`,radius:6,font:`Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif`,light:{bg:`#ffffff`,fg:`#0f172a`,muted:`#64748b`,border:`#e2e8f0`,headerBg:`#f8fafc`,headerFg:`#0f172a`,accent:`#4f46e5`,rowAlt:`#ffffff`,rowHover:`#f1f5f9`,selectionBg:`#e0e7ff`},dark:{bg:`#0f172a`,fg:`#f8fafc`,muted:`#94a3b8`,border:`#334155`,headerBg:`#1e293b`,headerFg:`#f8fafc`,accent:`#818cf8`,rowAlt:`#0f172a`,rowHover:`#1e293b`,selectionBg:`#312e81`}},{id:`material`,name:`Material 3`,radius:8,font:`"Roboto Flex", Roboto, "Segoe UI", system-ui, sans-serif`,light:{bg:`#fef7ff`,fg:`#1d1b20`,muted:`#49454f`,border:`#cac4d0`,headerBg:`#f3edf7`,headerFg:`#1d1b20`,accent:`#6750a4`,rowAlt:`#fffbfe`,rowHover:`#ece6f0`,selectionBg:`#e8def8`},dark:{bg:`#141218`,fg:`#e6e0e9`,muted:`#cac4d0`,border:`#49454f`,headerBg:`#211f26`,headerFg:`#e6e0e9`,accent:`#d0bcff`,rowAlt:`#141218`,rowHover:`#2b2930`,selectionBg:`#4a4458`}},{id:`excel`,name:`Excel`,radius:0,font:`"Aptos", "Segoe UI", Calibri, Arial, sans-serif`,light:{bg:`#ffffff`,fg:`#323130`,muted:`#605e5c`,border:`#d2d0ce`,headerBg:`#f3f2f1`,headerFg:`#444444`,accent:`#107c41`,rowAlt:`#ffffff`,rowHover:`#edebe9`,selectionBg:`rgba(16, 124, 65, 0.10)`},dark:{bg:`#1b1a19`,fg:`#f3f2f1`,muted:`#c8c6c4`,border:`#3b3a39`,headerBg:`#252423`,headerFg:`#c8c6c4`,accent:`#58c188`,rowAlt:`#1b1a19`,rowHover:`#323130`,selectionBg:`rgba(88, 193, 136, 0.16)`}},{id:`fluent`,name:`Fluent 2`,radius:4,font:`"Segoe UI Variable", "Segoe UI", system-ui, sans-serif`,light:{bg:`#ffffff`,fg:`#242424`,muted:`#616161`,border:`#e0e0e0`,headerBg:`#f5f5f5`,headerFg:`#242424`,accent:`#0f6cbd`,rowAlt:`#fafafa`,rowHover:`#f0f0f0`,selectionBg:`#ebebeb`},dark:{bg:`#1f1f1f`,fg:`#ffffff`,muted:`#d6d6d6`,border:`#666666`,headerBg:`#141414`,headerFg:`#ffffff`,accent:`#479ef5`,rowAlt:`#1a1a1a`,rowHover:`#3d3d3d`,selectionBg:`#383838`}},{id:`carbon`,name:`Carbon`,radius:0,font:`"IBM Plex Sans", "Helvetica Neue", Arial, sans-serif`,light:{bg:`#ffffff`,fg:`#161616`,muted:`#525252`,border:`#e0e0e0`,headerBg:`#e0e0e0`,headerFg:`#161616`,accent:`#0f62fe`,rowAlt:`#f4f4f4`,rowHover:`#e8e8e8`,selectionBg:`#d0e2ff`},dark:{bg:`#161616`,fg:`#f4f4f4`,muted:`#c6c6c6`,border:`#393939`,headerBg:`#393939`,headerFg:`#f4f4f4`,accent:`#78a9ff`,rowAlt:`#262626`,rowHover:`#333333`,selectionBg:`#393939`}},{id:`sap`,name:`SAP Fiori`,radius:6,font:`"72", "72full", "Arial", sans-serif`,light:{bg:`#f5f6f7`,fg:`#131e29`,muted:`#556b82`,border:`#e5e5e5`,headerBg:`#ffffff`,headerFg:`#131e29`,accent:`#0070f2`,rowAlt:`#f5f6f7`,rowHover:`#eaecee`,selectionBg:`#ebf8ff`},dark:{bg:`#12171c`,fg:`#f5f6f7`,muted:`#8396a8`,border:`#2e3742`,headerBg:`#1d232a`,headerFg:`#f5f6f7`,accent:`#4db1ff`,rowAlt:`#12171c`,rowHover:`#222b35`,selectionBg:`#1d2d3e`}},{id:`salesforce`,name:`Salesforce`,radius:4,font:`"Salesforce Sans", "SF Pro", Helvetica, Arial, sans-serif`,light:{bg:`#ffffff`,fg:`#181818`,muted:`#757575`,border:`#c9c9c9`,headerBg:`#f3f3f3`,headerFg:`#181818`,accent:`#0176d3`,rowAlt:`#ffffff`,rowHover:`#f3f3f3`,selectionBg:`#ecebea`},dark:{bg:`#181818`,fg:`#ffffff`,muted:`#c9c9c9`,border:`#3e3e3c`,headerBg:`#2e2e2e`,headerFg:`#ffffff`,accent:`#1b96ff`,rowAlt:`#181818`,rowHover:`#2e2e2e`,selectionBg:`#1e4d8e`}},{id:`atlassian`,name:`Atlassian`,radius:3,font:`"Charlie Display", "Atlassian Sans", -apple-system, "Segoe UI", sans-serif`,light:{bg:`#ffffff`,fg:`#172b4d`,muted:`#44546f`,border:`#dcdfe4`,headerBg:`#fafbfc`,headerFg:`#44546f`,accent:`#0c66e4`,rowAlt:`#ffffff`,rowHover:`#f1f2f4`,selectionBg:`#e9f2ff`},dark:{bg:`#1d2125`,fg:`#b6c2cf`,muted:`#8590a2`,border:`#38414a`,headerBg:`#22272b`,headerFg:`#8590a2`,accent:`#579dff`,rowAlt:`#1d2125`,rowHover:`#2c333a`,selectionBg:`#09326c`}},{id:`github`,name:`GitHub`,radius:6,font:`-apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif`,light:{bg:`#ffffff`,fg:`#1f2328`,muted:`#59636e`,border:`#d1d9e0`,headerBg:`#f6f8fa`,headerFg:`#59636e`,accent:`#0969da`,rowAlt:`#ffffff`,rowHover:`#f6f8fa`,selectionBg:`#ddf4ff`},dark:{bg:`#0d1117`,fg:`#f0f6fc`,muted:`#9198a1`,border:`#3d444d`,headerBg:`#151b23`,headerFg:`#9198a1`,accent:`#4493f8`,rowAlt:`#0d1117`,rowHover:`#151b23`,selectionBg:`rgba(56, 139, 253, 0.10)`}},{id:`antd`,name:`Ant Design`,radius:6,font:`-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", sans-serif`,light:{bg:`#ffffff`,fg:`rgba(0, 0, 0, 0.88)`,muted:`rgba(0, 0, 0, 0.65)`,border:`#d9d9d9`,headerBg:`#fafafa`,headerFg:`rgba(0, 0, 0, 0.88)`,accent:`#066dff`,rowAlt:`#ffffff`,rowHover:`#f5f5f5`,selectionBg:`#e6f4ff`},dark:{bg:`#141414`,fg:`rgba(255, 255, 255, 0.85)`,muted:`rgba(255, 255, 255, 0.65)`,border:`#424242`,headerBg:`#1f1f1f`,headerFg:`rgba(255, 255, 255, 0.85)`,accent:`#1678d3`,rowAlt:`#141414`,rowHover:`#262626`,selectionBg:`#111a2c`}},{id:`ag-alpine`,name:`Alpine`,radius:3,font:`-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`,light:{bg:`#ffffff`,fg:`#181d1f`,muted:`rgba(24, 29, 31, 0.5)`,border:`#babfc7`,headerBg:`#f8f8f8`,headerFg:`#181d1f`,accent:`#2196f3`,rowAlt:`#fcfcfc`,rowHover:`rgba(33, 150, 243, 0.1)`,selectionBg:`rgba(33, 150, 243, 0.3)`},dark:{bg:`#181d1f`,fg:`#ffffff`,muted:`rgba(255, 255, 255, 0.5)`,border:`#68686e`,headerBg:`#222628`,headerFg:`#ffffff`,accent:`#2196f3`,rowAlt:`#222628`,rowHover:`rgba(33, 150, 243, 0.1)`,selectionBg:`rgba(33, 150, 243, 0.3)`}},{id:`bootstrap`,name:`Bootstrap 5`,radius:6,font:`system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif`,light:{bg:`#ffffff`,fg:`#212529`,muted:`#6c757d`,border:`#dee2e6`,headerBg:`#f8f9fa`,headerFg:`#212529`,accent:`#0d6efd`,rowAlt:`#fcfcfd`,rowHover:`#f2f2f2`,selectionBg:`#cfe2ff`},dark:{bg:`#212529`,fg:`#dee2e6`,muted:`#adb5bd`,border:`#495057`,headerBg:`#2b3035`,headerFg:`#dee2e6`,accent:`#0d6efd`,rowAlt:`#25292e`,rowHover:`#2c3034`,selectionBg:`#031633`}},{id:`vercel`,name:`Vercel`,radius:6,font:`"Geist", "Geist Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`,light:{bg:`#ffffff`,fg:`#000000`,muted:`#666666`,border:`#eaeaea`,headerBg:`#fafafa`,headerFg:`#666666`,accent:`#0070f3`,rowAlt:`#fafafa`,rowHover:`#f5f5f5`,selectionBg:`#e8f0fe`},dark:{bg:`#000000`,fg:`#ffffff`,muted:`#888888`,border:`#333333`,headerBg:`#111111`,headerFg:`#888888`,accent:`#3291ff`,rowAlt:`#0a0a0a`,rowHover:`#1a1a1a`,selectionBg:`#0d2847`}},{id:`linear`,name:`Linear`,radius:6,font:`"Inter Variable", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif`,light:{bg:`#ffffff`,fg:`#282a30`,muted:`#6b6f76`,border:`#e9e9eb`,headerBg:`#f7f8f8`,headerFg:`#6b6f76`,accent:`#5e6ad2`,rowAlt:`#fbfbfc`,rowHover:`#f4f4f5`,selectionBg:`#e8eafd`},dark:{bg:`#08090a`,fg:`#f7f8f8`,muted:`#8a8f98`,border:`#23252a`,headerBg:`#0f1011`,headerFg:`#8a8f98`,accent:`#5e6ad2`,rowAlt:`#0f1011`,rowHover:`#1a1b1e`,selectionBg:`#2a2d4a`}},{id:`notion`,name:`Notion`,radius:4,font:`ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif`,light:{bg:`#ffffff`,fg:`#37352f`,muted:`#787774`,border:`#e9e9e7`,headerBg:`#f7f6f3`,headerFg:`#787774`,accent:`#2383e2`,rowAlt:`#fbfbfa`,rowHover:`#f1f1ef`,selectionBg:`#d9eaf7`},dark:{bg:`#191919`,fg:`#d4d4d4`,muted:`#9b9b9b`,border:`#2f2f2f`,headerBg:`#202020`,headerFg:`#9b9b9b`,accent:`#529cca`,rowAlt:`#1c1c1c`,rowHover:`#252525`,selectionBg:`#20415c`}},{id:`nord`,name:`Nord`,radius:4,font:`"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`,light:{bg:`#eceff4`,fg:`#2e3440`,muted:`#4c566a`,border:`#d8dee9`,headerBg:`#e5e9f0`,headerFg:`#2e3440`,accent:`#5579a5`,rowAlt:`#e5e9f0`,rowHover:`#dde3ec`,selectionBg:`#d8dee9`},dark:{bg:`#2e3440`,fg:`#d8dee9`,muted:`#4c566a`,border:`#434c5e`,headerBg:`#3b4252`,headerFg:`#e5e9f0`,accent:`#88c0d0`,rowAlt:`#333b48`,rowHover:`#3b4252`,selectionBg:`#434c5e`}},{id:`dracula`,name:`Dracula`,radius:6,font:`-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`,light:{bg:`#fffbeb`,fg:`#1f1f1f`,muted:`#6c664b`,border:`#dedccf`,headerBg:`#ece9df`,headerFg:`#1f1f1f`,accent:`#644ac9`,rowAlt:`#fffdf5`,rowHover:`#f2efe3`,selectionBg:`#cfcfde`},dark:{bg:`#282a36`,fg:`#f8f8f2`,muted:`#6272a4`,border:`#44475a`,headerBg:`#21222c`,headerFg:`#f8f8f2`,accent:`#bd93f9`,rowAlt:`#2d2f3b`,rowHover:`#343746`,selectionBg:`#44475a`}},{id:`catppuccin`,name:`Catppuccin`,radius:8,font:`"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`,light:{bg:`#eff1f5`,fg:`#4c4f69`,muted:`#6c6f85`,border:`#ccd0da`,headerBg:`#e6e9ef`,headerFg:`#4c4f69`,accent:`#8839ef`,rowAlt:`#e6e9ef`,rowHover:`#dce0e8`,selectionBg:`#dce0e8`},dark:{bg:`#1e1e2e`,fg:`#cdd6f4`,muted:`#a6adc8`,border:`#313244`,headerBg:`#181825`,headerFg:`#cdd6f4`,accent:`#cba6f7`,rowAlt:`#1a1a28`,rowHover:`#313244`,selectionBg:`#45475a`}}],WT=UT.find(e=>e.id===`tailwind`)??UT[0],GT=e=>e?UT.find(t=>t.id===e):void 0;function KT(e){let t=parseInt(e,16),n=e=>{let t=e/255;return t<=.03928?t/12.92:((t+.055)/1.055)**2.4};return .2126*n(t>>16&255)+.7152*n(t>>8&255)+.0722*n(t&255)}function qT(e,t){let[n,r]=[KT(e),KT(t)];return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)}function JT(e){let t=/^#?([0-9a-f]{6})$/i.exec(e.trim());if(!t)return`#ffffff`;let n=t[1];return qT(`18181b`,n)>=qT(`ffffff`,n)?`#18181b`:`#ffffff`}function YT(e,t,n){let r=e??WT,i=r[t],a=n||i.accent,o=HT[t];return{"--sg-bg":i.bg,"--sg-fg":i.fg,"--sg-muted":i.muted,"--sg-border":i.border,"--sg-header-bg":i.headerBg,"--sg-header-fg":i.headerFg,...i.headerBorder?{"--sg-header-border":i.headerBorder}:{},...i.headerLabel?{"--sg-header-label-color":i.headerLabel}:{},...r.headerType?.weight?{"--sg-header-weight":r.headerType.weight}:{},...r.headerType?.size?{"--sg-header-size":r.headerType.size}:{},...r.headerType?.transform?{"--sg-header-transform":r.headerType.transform}:{},...r.headerType?.tracking?{"--sg-header-tracking":r.headerType.tracking}:{},"--sg-bg-subtle":i.bgSubtle??i.headerBg,"--sg-row-alt-bg":i.rowAlt,"--sg-row-hover-bg":i.rowHover,"--sg-selection-bg":i.selectionBg,...i.pinnedBg?{"--sg-pinned-bg":i.pinnedBg}:{},...i.pinnedHeaderBg?{"--sg-pinned-header-bg":i.pinnedHeaderBg}:{},...i.pinnedDivider?{"--sg-pinned-divider":i.pinnedDivider}:{},...i.pinnedBorder?{"--sg-pinned-border":i.pinnedBorder}:{},...i.pinnedShadow?{"--sg-pinned-shadow-color":i.pinnedShadow}:{},"--sg-input-bg":i.bg,"--sg-input-border":i.border,"--sg-accent":a,"--sg-on-accent":JT(a),"--sg-radius":`${r.radius}px`,"--sg-font":r.font,"--sg-danger":i.danger??o.danger,"--sg-success":i.success??o.success,"--sg-warning":i.warning??o.warning,"--sg-info":i.info??o.info,"--sg-focus-ring":i.focusRing??a,"--sg-muted-bg":i.rowHover,"--sg-skeleton-bg":i.rowHover,"--sg-radius-lg":`${r.radius*2}px`,"--sg-rating-on":i.warning??o.warning,"--sg-rating-empty":i.border,"--sg-invalid-fg":i.danger??o.danger,"--sg-scrollbar-bg":i.bgSubtle??i.headerBg,"--sg-scrollbar-border":i.border,"--sg-scrollbar-thumb":i.muted,"--sg-scrollbar-thumb-hover":i.fg,"--sg-scrollbar-thumb-active":i.fg,"--sg-scrollbar-arrow":i.muted,"--sg-scrollbar-arrow-hover":i.fg,"--sg-scrollbar-arrow-hover-bg":i.rowHover,"--sg-scrollbar-arrow-active":i.fg,"--sg-scrollbar-arrow-active-bg":i.selectionBg,"--sg-scrollbar-arrow-disabled":i.border}}var XT=UT,ZT=WT,QT=e=>GT(e),$T=e=>e?.mode===`dark`;function eE(e){return YT(QT(e?.preset)??ZT,e?.mode===`dark`?`dark`:`light`,e?.accent)}function tE(e,t){return YT(QT(e?.preset)??ZT,t,e?.accent)}function nE(e){let t=eE(e);return`${Object.entries(t).map(([e,t])=>`${e}: ${t}`).join(`; `)}; color-scheme: ${$T(e)?`dark`:`light`}; font-family: ${t[`--sg-font`]}`}var rE=`2.5.1`,iE=(e,t)=>e.some(e=>e.config.kind===t),aE=e=>`activeTab_${e.replace(/[^a-zA-Z0-9_$]/g,`_`)}`,oE=(e,t)=>`${e}-${t}`,sE=e=>`accOpen_${e.replace(/[^a-zA-Z0-9_$]/g,`_`)}`,cE=(e,t)=>`${e}-s${t}`,lE=e=>`md_${e.replace(/[^a-zA-Z0-9]/g,`_`)}_rows`;function uE(e){switch(e.type){case`number`:{let t=e.decimals;return t==null?`{ type: 'number' }`:`{ type: 'number', options: { minimumFractionDigits: ${t}, maximumFractionDigits: ${t} } }`}case`currency`:return`{ type: 'currency', currency: ${CE(e.currency||`USD`)} }`;case`percent`:{let t=[`type: 'percent'`];return e.valueIsPercentPoints&&t.push(`valueIsPercentPoints: true`),e.decimals!=null&&t.push(`options: { minimumFractionDigits: ${e.decimals}, maximumFractionDigits: ${e.decimals} }`),`{ ${t.join(`, `)} }`}case`date`:case`datetime`:return e.pattern?`{ type: '${e.type}', pattern: ${CE(e.pattern)} }`:`{ type: '${e.type}' }`}}function dE(e,t,n){if(t.config.kind!==`grid`)return`schemaToColumns(${e})`;let r=t.config,i=t.id.replace(/-/g,`_`),a=r.columns.filter(e=>e.show),o=r.editing===`inline`?``:`, editable: false`;if(a.length===0)return o?`schemaToColumns(${e}).map((c) => ({ ...c${o} }))`:`schemaToColumns(${e})`;let s=a.map(e=>`'${e.field}'`),c=a.map(e=>{let t=[];return e.header&&t.push(`header: ${JSON.stringify(e.header)}`),e.width!=null&&t.push(`width: ${e.width}`),e.align&&t.push(`align: '${e.align}'`),e.aggregate&&t.push(`aggregate: '${e.aggregate}'`),r.treeData&&e.field===r.treeData.labelField&&n?t.push(`cell: (ctx: CellContext<${n}>) => renderSnippet(treeCell_${i}, { value: ctx.getValue(), row: ctx.row.original })`):e.cellType&&n?t.push(`cell: (ctx: CellContext<${n}>) => renderSnippet(${IE(i,e.field)}, { value: ctx.getValue() })`):e.format&&t.push(`format: ${uE(e.format)}`),t.length?`'${e.field}': { ${t.join(`, `)} }`:null}).filter(e=>!!e),l=c.length?` const ov: Record<string, Partial<(typeof all)[number]>> = { ${c.join(`, `)} };`:``,u=c.length?`, ...(ov[String(c.field)] ?? {})`:``,d=`[${s.join(`, `)}].map((f) => all.find((c) => c.field === f)).filter((c): c is (typeof all)[number] => !!c)`;return`(() => { const all = schemaToColumns(${e});${l} return ${o||u?`${d}.map((c) => ({ ...c${o}${u} }))`:d} })()`}function fE(e,t){let n=[`grid-column: span ${mS(e)}`,`min-width: 0`];t&&n.push(t);let r=gS(e.style);return r&&n.push(r),`style="${n.join(`; `)}"`}var pE=e=>e&&e.replace(/[^#a-zA-Z0-9(),.%\s_-]/g,``).slice(0,40)||`var(--sg-accent)`;function mE(e,t){let n=[t,pS(e)].filter(Boolean).join(` `);return n?` class="${n}"`:``}function hE(e){let t=fS(e.className);return t?` ${t}`:``}function gE(e){let t=rw(e);if(t===`grid`){let t=GS(e),n=t.maxWidth?` max-width: ${t.maxWidth}px; margin-inline: auto;`:``;return` .st-screen { grid-template-columns: repeat(12, 1fr); gap: ${t.rowGap}px ${t.colGap}px; align-items: ${t.align};${n} }\n @media (max-width: ${t.mobileBreakpoint}px) { .st-screen { grid-template-columns: 1fr; gap: 12px; } }\n`}if(t===`stack`){let t=KS(e),n=t.maxWidth?` max-width: ${t.maxWidth}px;${t.align===`center`?` margin-inline: auto;`:``}`:``,r=t.minHeight?`\n .st-stack > * { min-height: ${t.minHeight}px; }`:``,i=t.dividers?`\n .st-stack > * + * { border-top: 1px solid var(--sg-border, #e2e8f0); padding-top: ${t.gap}px; }`:``;return` .st-stack { gap: ${t.gap}px;${n} }${r}${i}\n`}if(t===`canvas`){let t=YS(e),n=t.showGrid?`\n .st-canvas { background-image: linear-gradient(var(--sg-border, #e6e8ec) 1px, transparent 1px), linear-gradient(90deg, var(--sg-border, #e6e8ec) 1px, transparent 1px); background-size: calc((100% - ${t.cols-1} * ${t.gap}px) / ${t.cols} + ${t.gap}px) calc(${t.rowHeight}px + ${t.gap}px); }`:``;return` .st-canvas { grid-template-columns: repeat(${t.cols}, 1fr); grid-auto-rows: ${t.rowHeight}px; gap: ${t.gap}px; }${n}\n`}return``}function _E(e,t,n,r,i,a={hasRecord:!1}){let o=(e,t)=>a.i18n?`{$t('block.${t}', ${JSON.stringify(e)})}`:e,s=a.pane?`style="height: 100%; min-width: 0; min-height: 0; display: flex; flex-direction: column;"`:fE(r),c=mE(r),l=r.config,u=a.handleNames?.get(r.id),d=u?`${u}.rows`:`allRows`;switch(l.kind){case`grid`:{let t=r.id.replace(/-/g,`_`),o=`columns_${t}`,u=`No ${(e.label??e.name).toLowerCase()} yet.`;if(l.scheduler){let t=dT(a.rawEntity??e,i);return` <div ${s}${c}>
478
+ `}}function BT(e){for(let t of e)fv(t);let t=new Map(e.map(e=>[e.name,e])),n=e.map(e=>{let n=fT(e,t);return{schema:pT(e,n),infos:n}});return{entries:n,seed:mT(n)}}function VT(e,t={}){let{entries:n,seed:r}=BT(e),{file:i,needs:a}=IT(n,r,t.sources,t.supabaseConn),o=[_T(n),i];(a.supabase||t.supabaseAuth)&&!a.supabaseUrl&&(t.supabaseConn?.url||t.supabaseConn?.key)&&(a.supabaseUrl=t.supabaseConn.url,a.supabaseKey=t.supabaseConn.key),(a.supabase||t.supabaseAuth)&&o.push(LT(a));for(let e of a.sqlRoutes)o.push(OT(e.schema,e.table,e.dialect,{access:t.accessEnabled,audit:t.auditEnabled,screenIds:t.screensByEntity?.get(e.schema.name)??[],triggers:t.triggers?.[e.schema.name],dbSchema:e.dbSchema,tenantField:t.tenantField&&t.tenantScoped?.(e.schema.name)!==!1?t.tenantField:void 0}));return{files:o,prepared:n.map(e=>e.schema)}}var HT={light:{danger:`#dc2626`,success:`#16a34a`,warning:`#d97706`,info:`#0891b2`},dark:{danger:`#f87171`,success:`#4ade80`,warning:`#fbbf24`,info:`#22d3ee`}},UT=[{id:`ember`,name:`Ember`,radius:6,font:`ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif`,headerType:{weight:`500`},light:{bg:`#ffffff`,fg:`#1c1917`,muted:`#78716c`,border:`#e7e5e4`,headerBg:`#fafaf9`,headerFg:`#78716c`,accent:`#ff3e00`,rowAlt:`#ffffff`,rowHover:`#f5f5f4`,selectionBg:`#ffece3`,bgSubtle:`#fafaf9`,pinnedBg:`#fafaf9`,pinnedHeaderBg:`#f5f5f4`,pinnedDivider:`#e7e5e4`,pinnedBorder:`#e7e5e4`,pinnedShadow:`rgba(28, 25, 23, 0.10)`},dark:{bg:`#0c0a09`,fg:`#fafaf9`,muted:`#a8a29e`,border:`#292524`,headerBg:`#1c1917`,headerFg:`#a8a29e`,accent:`#ff5a1f`,rowAlt:`#0c0a09`,rowHover:`#1c1917`,selectionBg:`#3a2318`,bgSubtle:`#1c1917`,pinnedBg:`#151312`,pinnedHeaderBg:`#1c1917`,pinnedDivider:`#292524`,pinnedBorder:`#292524`,pinnedShadow:`rgba(0, 0, 0, 0.50)`}},{id:`shadcn`,name:`shadcn/ui`,radius:6,font:`ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif`,light:{bg:`#ffffff`,fg:`#09090b`,muted:`#71717a`,border:`#e4e4e7`,headerBg:`#fafafa`,headerFg:`#71717a`,accent:`#18181b`,rowAlt:`#ffffff`,rowHover:`#f4f4f5`,selectionBg:`#f4f4f5`},dark:{bg:`#0a0a0a`,fg:`#fafafa`,muted:`#a1a1aa`,border:`#27272a`,headerBg:`#18181b`,headerFg:`#a1a1aa`,accent:`#fafafa`,rowAlt:`#0a0a0a`,rowHover:`#18181b`,selectionBg:`#27272a`}},{id:`tailwind`,name:`Tailwind`,radius:6,font:`Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif`,light:{bg:`#ffffff`,fg:`#0f172a`,muted:`#64748b`,border:`#e2e8f0`,headerBg:`#f8fafc`,headerFg:`#0f172a`,accent:`#4f46e5`,rowAlt:`#ffffff`,rowHover:`#f1f5f9`,selectionBg:`#e0e7ff`},dark:{bg:`#0f172a`,fg:`#f8fafc`,muted:`#94a3b8`,border:`#334155`,headerBg:`#1e293b`,headerFg:`#f8fafc`,accent:`#818cf8`,rowAlt:`#0f172a`,rowHover:`#1e293b`,selectionBg:`#312e81`}},{id:`material`,name:`Material 3`,radius:8,font:`"Roboto Flex", Roboto, "Segoe UI", system-ui, sans-serif`,light:{bg:`#fef7ff`,fg:`#1d1b20`,muted:`#49454f`,border:`#cac4d0`,headerBg:`#f3edf7`,headerFg:`#1d1b20`,accent:`#6750a4`,rowAlt:`#fffbfe`,rowHover:`#ece6f0`,selectionBg:`#e8def8`},dark:{bg:`#141218`,fg:`#e6e0e9`,muted:`#cac4d0`,border:`#49454f`,headerBg:`#211f26`,headerFg:`#e6e0e9`,accent:`#d0bcff`,rowAlt:`#141218`,rowHover:`#2b2930`,selectionBg:`#4a4458`}},{id:`excel`,name:`Excel`,radius:0,font:`"Aptos", "Segoe UI", Calibri, Arial, sans-serif`,light:{bg:`#ffffff`,fg:`#323130`,muted:`#605e5c`,border:`#d2d0ce`,headerBg:`#f3f2f1`,headerFg:`#444444`,accent:`#107c41`,rowAlt:`#ffffff`,rowHover:`#edebe9`,selectionBg:`rgba(16, 124, 65, 0.10)`},dark:{bg:`#1b1a19`,fg:`#f3f2f1`,muted:`#c8c6c4`,border:`#3b3a39`,headerBg:`#252423`,headerFg:`#c8c6c4`,accent:`#58c188`,rowAlt:`#1b1a19`,rowHover:`#323130`,selectionBg:`rgba(88, 193, 136, 0.16)`}},{id:`fluent`,name:`Fluent 2`,radius:4,font:`"Segoe UI Variable", "Segoe UI", system-ui, sans-serif`,light:{bg:`#ffffff`,fg:`#242424`,muted:`#616161`,border:`#e0e0e0`,headerBg:`#f5f5f5`,headerFg:`#242424`,accent:`#0f6cbd`,rowAlt:`#fafafa`,rowHover:`#f0f0f0`,selectionBg:`#ebebeb`},dark:{bg:`#1f1f1f`,fg:`#ffffff`,muted:`#d6d6d6`,border:`#666666`,headerBg:`#141414`,headerFg:`#ffffff`,accent:`#479ef5`,rowAlt:`#1a1a1a`,rowHover:`#3d3d3d`,selectionBg:`#383838`}},{id:`carbon`,name:`Carbon`,radius:0,font:`"IBM Plex Sans", "Helvetica Neue", Arial, sans-serif`,light:{bg:`#ffffff`,fg:`#161616`,muted:`#525252`,border:`#e0e0e0`,headerBg:`#e0e0e0`,headerFg:`#161616`,accent:`#0f62fe`,rowAlt:`#f4f4f4`,rowHover:`#e8e8e8`,selectionBg:`#d0e2ff`},dark:{bg:`#161616`,fg:`#f4f4f4`,muted:`#c6c6c6`,border:`#393939`,headerBg:`#393939`,headerFg:`#f4f4f4`,accent:`#78a9ff`,rowAlt:`#262626`,rowHover:`#333333`,selectionBg:`#393939`}},{id:`sap`,name:`SAP Fiori`,radius:6,font:`"72", "72full", "Arial", sans-serif`,light:{bg:`#f5f6f7`,fg:`#131e29`,muted:`#556b82`,border:`#e5e5e5`,headerBg:`#ffffff`,headerFg:`#131e29`,accent:`#0070f2`,rowAlt:`#f5f6f7`,rowHover:`#eaecee`,selectionBg:`#ebf8ff`},dark:{bg:`#12171c`,fg:`#f5f6f7`,muted:`#8396a8`,border:`#2e3742`,headerBg:`#1d232a`,headerFg:`#f5f6f7`,accent:`#4db1ff`,rowAlt:`#12171c`,rowHover:`#222b35`,selectionBg:`#1d2d3e`}},{id:`salesforce`,name:`Salesforce`,radius:4,font:`"Salesforce Sans", "SF Pro", Helvetica, Arial, sans-serif`,light:{bg:`#ffffff`,fg:`#181818`,muted:`#757575`,border:`#c9c9c9`,headerBg:`#f3f3f3`,headerFg:`#181818`,accent:`#0176d3`,rowAlt:`#ffffff`,rowHover:`#f3f3f3`,selectionBg:`#ecebea`},dark:{bg:`#181818`,fg:`#ffffff`,muted:`#c9c9c9`,border:`#3e3e3c`,headerBg:`#2e2e2e`,headerFg:`#ffffff`,accent:`#1b96ff`,rowAlt:`#181818`,rowHover:`#2e2e2e`,selectionBg:`#1e4d8e`}},{id:`atlassian`,name:`Atlassian`,radius:3,font:`"Charlie Display", "Atlassian Sans", -apple-system, "Segoe UI", sans-serif`,light:{bg:`#ffffff`,fg:`#172b4d`,muted:`#44546f`,border:`#dcdfe4`,headerBg:`#fafbfc`,headerFg:`#44546f`,accent:`#0c66e4`,rowAlt:`#ffffff`,rowHover:`#f1f2f4`,selectionBg:`#e9f2ff`},dark:{bg:`#1d2125`,fg:`#b6c2cf`,muted:`#8590a2`,border:`#38414a`,headerBg:`#22272b`,headerFg:`#8590a2`,accent:`#579dff`,rowAlt:`#1d2125`,rowHover:`#2c333a`,selectionBg:`#09326c`}},{id:`github`,name:`GitHub`,radius:6,font:`-apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif`,light:{bg:`#ffffff`,fg:`#1f2328`,muted:`#59636e`,border:`#d1d9e0`,headerBg:`#f6f8fa`,headerFg:`#59636e`,accent:`#0969da`,rowAlt:`#ffffff`,rowHover:`#f6f8fa`,selectionBg:`#ddf4ff`},dark:{bg:`#0d1117`,fg:`#f0f6fc`,muted:`#9198a1`,border:`#3d444d`,headerBg:`#151b23`,headerFg:`#9198a1`,accent:`#4493f8`,rowAlt:`#0d1117`,rowHover:`#151b23`,selectionBg:`rgba(56, 139, 253, 0.10)`}},{id:`antd`,name:`Ant Design`,radius:6,font:`-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", sans-serif`,light:{bg:`#ffffff`,fg:`rgba(0, 0, 0, 0.88)`,muted:`rgba(0, 0, 0, 0.65)`,border:`#d9d9d9`,headerBg:`#fafafa`,headerFg:`rgba(0, 0, 0, 0.88)`,accent:`#066dff`,rowAlt:`#ffffff`,rowHover:`#f5f5f5`,selectionBg:`#e6f4ff`},dark:{bg:`#141414`,fg:`rgba(255, 255, 255, 0.85)`,muted:`rgba(255, 255, 255, 0.65)`,border:`#424242`,headerBg:`#1f1f1f`,headerFg:`rgba(255, 255, 255, 0.85)`,accent:`#1678d3`,rowAlt:`#141414`,rowHover:`#262626`,selectionBg:`#111a2c`}},{id:`ag-alpine`,name:`Alpine`,radius:3,font:`-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`,light:{bg:`#ffffff`,fg:`#181d1f`,muted:`rgba(24, 29, 31, 0.5)`,border:`#babfc7`,headerBg:`#f8f8f8`,headerFg:`#181d1f`,accent:`#2196f3`,rowAlt:`#fcfcfc`,rowHover:`rgba(33, 150, 243, 0.1)`,selectionBg:`rgba(33, 150, 243, 0.3)`},dark:{bg:`#181d1f`,fg:`#ffffff`,muted:`rgba(255, 255, 255, 0.5)`,border:`#68686e`,headerBg:`#222628`,headerFg:`#ffffff`,accent:`#2196f3`,rowAlt:`#222628`,rowHover:`rgba(33, 150, 243, 0.1)`,selectionBg:`rgba(33, 150, 243, 0.3)`}},{id:`bootstrap`,name:`Bootstrap 5`,radius:6,font:`system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif`,light:{bg:`#ffffff`,fg:`#212529`,muted:`#6c757d`,border:`#dee2e6`,headerBg:`#f8f9fa`,headerFg:`#212529`,accent:`#0d6efd`,rowAlt:`#fcfcfd`,rowHover:`#f2f2f2`,selectionBg:`#cfe2ff`},dark:{bg:`#212529`,fg:`#dee2e6`,muted:`#adb5bd`,border:`#495057`,headerBg:`#2b3035`,headerFg:`#dee2e6`,accent:`#0d6efd`,rowAlt:`#25292e`,rowHover:`#2c3034`,selectionBg:`#031633`}},{id:`vercel`,name:`Vercel`,radius:6,font:`"Geist", "Geist Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`,light:{bg:`#ffffff`,fg:`#000000`,muted:`#666666`,border:`#eaeaea`,headerBg:`#fafafa`,headerFg:`#666666`,accent:`#0070f3`,rowAlt:`#fafafa`,rowHover:`#f5f5f5`,selectionBg:`#e8f0fe`},dark:{bg:`#000000`,fg:`#ffffff`,muted:`#888888`,border:`#333333`,headerBg:`#111111`,headerFg:`#888888`,accent:`#3291ff`,rowAlt:`#0a0a0a`,rowHover:`#1a1a1a`,selectionBg:`#0d2847`}},{id:`linear`,name:`Linear`,radius:6,font:`"Inter Variable", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif`,light:{bg:`#ffffff`,fg:`#282a30`,muted:`#6b6f76`,border:`#e9e9eb`,headerBg:`#f7f8f8`,headerFg:`#6b6f76`,accent:`#5e6ad2`,rowAlt:`#fbfbfc`,rowHover:`#f4f4f5`,selectionBg:`#e8eafd`},dark:{bg:`#08090a`,fg:`#f7f8f8`,muted:`#8a8f98`,border:`#23252a`,headerBg:`#0f1011`,headerFg:`#8a8f98`,accent:`#5e6ad2`,rowAlt:`#0f1011`,rowHover:`#1a1b1e`,selectionBg:`#2a2d4a`}},{id:`notion`,name:`Notion`,radius:4,font:`ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif`,light:{bg:`#ffffff`,fg:`#37352f`,muted:`#787774`,border:`#e9e9e7`,headerBg:`#f7f6f3`,headerFg:`#787774`,accent:`#2383e2`,rowAlt:`#fbfbfa`,rowHover:`#f1f1ef`,selectionBg:`#d9eaf7`},dark:{bg:`#191919`,fg:`#d4d4d4`,muted:`#9b9b9b`,border:`#2f2f2f`,headerBg:`#202020`,headerFg:`#9b9b9b`,accent:`#529cca`,rowAlt:`#1c1c1c`,rowHover:`#252525`,selectionBg:`#20415c`}},{id:`nord`,name:`Nord`,radius:4,font:`"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`,light:{bg:`#eceff4`,fg:`#2e3440`,muted:`#4c566a`,border:`#d8dee9`,headerBg:`#e5e9f0`,headerFg:`#2e3440`,accent:`#5579a5`,rowAlt:`#e5e9f0`,rowHover:`#dde3ec`,selectionBg:`#d8dee9`},dark:{bg:`#2e3440`,fg:`#d8dee9`,muted:`#4c566a`,border:`#434c5e`,headerBg:`#3b4252`,headerFg:`#e5e9f0`,accent:`#88c0d0`,rowAlt:`#333b48`,rowHover:`#3b4252`,selectionBg:`#434c5e`}},{id:`dracula`,name:`Dracula`,radius:6,font:`-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`,light:{bg:`#fffbeb`,fg:`#1f1f1f`,muted:`#6c664b`,border:`#dedccf`,headerBg:`#ece9df`,headerFg:`#1f1f1f`,accent:`#644ac9`,rowAlt:`#fffdf5`,rowHover:`#f2efe3`,selectionBg:`#cfcfde`},dark:{bg:`#282a36`,fg:`#f8f8f2`,muted:`#6272a4`,border:`#44475a`,headerBg:`#21222c`,headerFg:`#f8f8f2`,accent:`#bd93f9`,rowAlt:`#2d2f3b`,rowHover:`#343746`,selectionBg:`#44475a`}},{id:`catppuccin`,name:`Catppuccin`,radius:8,font:`"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`,light:{bg:`#eff1f5`,fg:`#4c4f69`,muted:`#6c6f85`,border:`#ccd0da`,headerBg:`#e6e9ef`,headerFg:`#4c4f69`,accent:`#8839ef`,rowAlt:`#e6e9ef`,rowHover:`#dce0e8`,selectionBg:`#dce0e8`},dark:{bg:`#1e1e2e`,fg:`#cdd6f4`,muted:`#a6adc8`,border:`#313244`,headerBg:`#181825`,headerFg:`#cdd6f4`,accent:`#cba6f7`,rowAlt:`#1a1a28`,rowHover:`#313244`,selectionBg:`#45475a`}}],WT=UT.find(e=>e.id===`tailwind`)??UT[0],GT=e=>e?UT.find(t=>t.id===e):void 0;function KT(e){let t=parseInt(e,16),n=e=>{let t=e/255;return t<=.03928?t/12.92:((t+.055)/1.055)**2.4};return .2126*n(t>>16&255)+.7152*n(t>>8&255)+.0722*n(t&255)}function qT(e,t){let[n,r]=[KT(e),KT(t)];return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)}function JT(e){let t=/^#?([0-9a-f]{6})$/i.exec(e.trim());if(!t)return`#ffffff`;let n=t[1];return qT(`18181b`,n)>=qT(`ffffff`,n)?`#18181b`:`#ffffff`}function YT(e,t,n){let r=e??WT,i=r[t],a=n||i.accent,o=HT[t];return{"--sg-bg":i.bg,"--sg-fg":i.fg,"--sg-muted":i.muted,"--sg-border":i.border,"--sg-header-bg":i.headerBg,"--sg-header-fg":i.headerFg,...i.headerBorder?{"--sg-header-border":i.headerBorder}:{},...i.headerLabel?{"--sg-header-label-color":i.headerLabel}:{},...r.headerType?.weight?{"--sg-header-weight":r.headerType.weight}:{},...r.headerType?.size?{"--sg-header-size":r.headerType.size}:{},...r.headerType?.transform?{"--sg-header-transform":r.headerType.transform}:{},...r.headerType?.tracking?{"--sg-header-tracking":r.headerType.tracking}:{},"--sg-bg-subtle":i.bgSubtle??i.headerBg,"--sg-row-alt-bg":i.rowAlt,"--sg-row-hover-bg":i.rowHover,"--sg-selection-bg":i.selectionBg,...i.pinnedBg?{"--sg-pinned-bg":i.pinnedBg}:{},...i.pinnedHeaderBg?{"--sg-pinned-header-bg":i.pinnedHeaderBg}:{},...i.pinnedDivider?{"--sg-pinned-divider":i.pinnedDivider}:{},...i.pinnedBorder?{"--sg-pinned-border":i.pinnedBorder}:{},...i.pinnedShadow?{"--sg-pinned-shadow-color":i.pinnedShadow}:{},"--sg-input-bg":i.bg,"--sg-input-border":i.border,"--sg-accent":a,"--sg-on-accent":JT(a),"--sg-radius":`${r.radius}px`,"--sg-font":r.font,"--sg-danger":i.danger??o.danger,"--sg-success":i.success??o.success,"--sg-warning":i.warning??o.warning,"--sg-info":i.info??o.info,"--sg-focus-ring":i.focusRing??a,"--sg-muted-bg":i.rowHover,"--sg-skeleton-bg":i.rowHover,"--sg-radius-lg":`${r.radius*2}px`,"--sg-rating-on":i.warning??o.warning,"--sg-rating-empty":i.border,"--sg-invalid-fg":i.danger??o.danger,"--sg-scrollbar-bg":i.bgSubtle??i.headerBg,"--sg-scrollbar-border":i.border,"--sg-scrollbar-thumb":i.muted,"--sg-scrollbar-thumb-hover":i.fg,"--sg-scrollbar-thumb-active":i.fg,"--sg-scrollbar-arrow":i.muted,"--sg-scrollbar-arrow-hover":i.fg,"--sg-scrollbar-arrow-hover-bg":i.rowHover,"--sg-scrollbar-arrow-active":i.fg,"--sg-scrollbar-arrow-active-bg":i.selectionBg,"--sg-scrollbar-arrow-disabled":i.border}}var XT=UT,ZT=WT,QT=e=>GT(e),$T=e=>e?.mode===`dark`;function eE(e){return YT(QT(e?.preset)??ZT,e?.mode===`dark`?`dark`:`light`,e?.accent)}function tE(e,t){return YT(QT(e?.preset)??ZT,t,e?.accent)}function nE(e){let t=eE(e);return`${Object.entries(t).map(([e,t])=>`${e}: ${t}`).join(`; `)}; color-scheme: ${$T(e)?`dark`:`light`}; font-family: ${t[`--sg-font`]}`}var rE=`2.5.2`,iE=(e,t)=>e.some(e=>e.config.kind===t),aE=e=>`activeTab_${e.replace(/[^a-zA-Z0-9_$]/g,`_`)}`,oE=(e,t)=>`${e}-${t}`,sE=e=>`accOpen_${e.replace(/[^a-zA-Z0-9_$]/g,`_`)}`,cE=(e,t)=>`${e}-s${t}`,lE=e=>`md_${e.replace(/[^a-zA-Z0-9]/g,`_`)}_rows`;function uE(e){switch(e.type){case`number`:{let t=e.decimals;return t==null?`{ type: 'number' }`:`{ type: 'number', options: { minimumFractionDigits: ${t}, maximumFractionDigits: ${t} } }`}case`currency`:return`{ type: 'currency', currency: ${CE(e.currency||`USD`)} }`;case`percent`:{let t=[`type: 'percent'`];return e.valueIsPercentPoints&&t.push(`valueIsPercentPoints: true`),e.decimals!=null&&t.push(`options: { minimumFractionDigits: ${e.decimals}, maximumFractionDigits: ${e.decimals} }`),`{ ${t.join(`, `)} }`}case`date`:case`datetime`:return e.pattern?`{ type: '${e.type}', pattern: ${CE(e.pattern)} }`:`{ type: '${e.type}' }`}}function dE(e,t,n){if(t.config.kind!==`grid`)return`schemaToColumns(${e})`;let r=t.config,i=t.id.replace(/-/g,`_`),a=r.columns.filter(e=>e.show),o=r.editing===`inline`?``:`, editable: false`;if(a.length===0)return o?`schemaToColumns(${e}).map((c) => ({ ...c${o} }))`:`schemaToColumns(${e})`;let s=a.map(e=>`'${e.field}'`),c=a.map(e=>{let t=[];return e.header&&t.push(`header: ${JSON.stringify(e.header)}`),e.width!=null&&t.push(`width: ${e.width}`),e.align&&t.push(`align: '${e.align}'`),e.aggregate&&t.push(`aggregate: '${e.aggregate}'`),r.treeData&&e.field===r.treeData.labelField&&n?t.push(`cell: (ctx: CellContext<${n}>) => renderSnippet(treeCell_${i}, { value: ctx.getValue(), row: ctx.row.original })`):e.cellType&&n?t.push(`cell: (ctx: CellContext<${n}>) => renderSnippet(${IE(i,e.field)}, { value: ctx.getValue() })`):e.format&&t.push(`format: ${uE(e.format)}`),t.length?`'${e.field}': { ${t.join(`, `)} }`:null}).filter(e=>!!e),l=c.length?` const ov: Record<string, Partial<(typeof all)[number]>> = { ${c.join(`, `)} };`:``,u=c.length?`, ...(ov[String(c.field)] ?? {})`:``,d=`[${s.join(`, `)}].map((f) => all.find((c) => c.field === f)).filter((c): c is (typeof all)[number] => !!c)`;return`(() => { const all = schemaToColumns(${e});${l} return ${o||u?`${d}.map((c) => ({ ...c${o}${u} }))`:d} })()`}function fE(e,t){let n=[`grid-column: span ${mS(e)}`,`min-width: 0`];t&&n.push(t);let r=gS(e.style);return r&&n.push(r),`style="${n.join(`; `)}"`}var pE=e=>e&&e.replace(/[^#a-zA-Z0-9(),.%\s_-]/g,``).slice(0,40)||`var(--sg-accent)`;function mE(e,t){let n=[t,pS(e)].filter(Boolean).join(` `);return n?` class="${n}"`:``}function hE(e){let t=fS(e.className);return t?` ${t}`:``}function gE(e){let t=rw(e);if(t===`grid`){let t=GS(e),n=t.maxWidth?` max-width: ${t.maxWidth}px; margin-inline: auto;`:``;return` .st-screen { grid-template-columns: repeat(12, 1fr); gap: ${t.rowGap}px ${t.colGap}px; align-items: ${t.align};${n} }\n @media (max-width: ${t.mobileBreakpoint}px) { .st-screen { grid-template-columns: 1fr; gap: 12px; } }\n`}if(t===`stack`){let t=KS(e),n=t.maxWidth?` max-width: ${t.maxWidth}px;${t.align===`center`?` margin-inline: auto;`:``}`:``,r=t.minHeight?`\n .st-stack > * { min-height: ${t.minHeight}px; }`:``,i=t.dividers?`\n .st-stack > * + * { border-top: 1px solid var(--sg-border, #e2e8f0); padding-top: ${t.gap}px; }`:``;return` .st-stack { gap: ${t.gap}px;${n} }${r}${i}\n`}if(t===`canvas`){let t=YS(e),n=t.showGrid?`\n .st-canvas { background-image: linear-gradient(var(--sg-border, #e6e8ec) 1px, transparent 1px), linear-gradient(90deg, var(--sg-border, #e6e8ec) 1px, transparent 1px); background-size: calc((100% - ${t.cols-1} * ${t.gap}px) / ${t.cols} + ${t.gap}px) calc(${t.rowHeight}px + ${t.gap}px); }`:``;return` .st-canvas { grid-template-columns: repeat(${t.cols}, 1fr); grid-auto-rows: ${t.rowHeight}px; gap: ${t.gap}px; }${n}\n`}return``}function _E(e,t,n,r,i,a={hasRecord:!1}){let o=(e,t)=>a.i18n?`{$t('block.${t}', ${JSON.stringify(e)})}`:e,s=a.pane?`style="height: 100%; min-width: 0; min-height: 0; display: flex; flex-direction: column;"`:fE(r),c=mE(r),l=r.config,u=a.handleNames?.get(r.id),d=u?`${u}.rows`:`allRows`;switch(l.kind){case`grid`:{let t=r.id.replace(/-/g,`_`),o=`columns_${t}`,u=`No ${(e.label??e.name).toLowerCase()} yet.`;if(l.scheduler){let t=dT(a.rawEntity??e,i);return` <div ${s}${c}>
479
479
  <SvGrid
480
480
  data={allRows}
481
481
  columns={${o}}
@@ -4,7 +4,7 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>SvGrid Studio - Designer</title>
7
- <script type="module" crossorigin src="./assets/index-OwdzSsmo.js"></script>
7
+ <script type="module" crossorigin src="./assets/index-CM5xvaOy.js"></script>
8
8
  <link rel="modulepreload" crossorigin href="./assets/rolldown-runtime-Dd_uD5pT.js">
9
9
  <link rel="modulepreload" crossorigin href="./assets/disclose-version-CIm4S9xS.js">
10
10
  <link rel="modulepreload" crossorigin href="./assets/export-format-DwjuTfrQ.js">
@@ -16,7 +16,7 @@
16
16
  <link rel="modulepreload" crossorigin href="./assets/easing-zaypKrr0.js">
17
17
  <link rel="modulepreload" crossorigin href="./assets/chart-DHEgt4lN.js">
18
18
  <link rel="modulepreload" crossorigin href="./assets/SvGridChart-BEDNTdc5.js">
19
- <link rel="modulepreload" crossorigin href="./assets/src-LRVqg7Sf.js">
19
+ <link rel="modulepreload" crossorigin href="./assets/src-D-ET9Mmo.js">
20
20
  <link rel="modulepreload" crossorigin href="./assets/SvListBox-BVzVfCG3.js">
21
21
  <link rel="stylesheet" crossorigin href="./assets/dismissable-BF-9TJSd.css">
22
22
  <link rel="stylesheet" crossorigin href="./assets/SvDateTimePicker-Cygij-dr.css">
@@ -15130,7 +15130,7 @@ function hasFieldConditions(schema) {
15130
15130
  *
15131
15131
  * `version.test.ts` asserts this matches `package.json`, so the two cannot drift.
15132
15132
  */
15133
- var SVGRID_VERSION = "2.5.1";
15133
+ var SVGRID_VERSION = "2.5.2";
15134
15134
  //#endregion
15135
15135
  //#region src/studio/emit-project.ts
15136
15136
  var has = (blocks, kind) => blocks.some((b) => b.config.kind === kind);
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "type": "commercial",
5
5
  "url": "https://svgrid.com/pricing"
6
6
  },
7
- "version": "2.5.1",
7
+ "version": "2.5.2",
8
8
  "description": "Enterprise feature pack for SvGrid: Excel (xlsx), PDF, CSV, TSV and HTML export, Excel/CSV/JSON import, pivot tables with a drag-and-drop designer, paginated print, Kanban board and scheduler views. Requires a paid license key.",
9
9
  "license": "SEE LICENSE IN LICENSE",
10
10
  "author": "jQWidgets <sales@jqwidgets.com>",
@@ -9,10 +9,25 @@ import {
9
9
  setLicenseKey,
10
10
  } from './license'
11
11
  import { dismissUpgradePrompt } from './upgrade-prompt'
12
+ import { emitUnlicensedNudge } from './watermark'
13
+
14
+ // Keep everything else in the module real; only the watermark emitter is spied.
15
+ vi.mock('./watermark', async (importOriginal) => ({
16
+ ...(await importOriginal()),
17
+ emitUnlicensedNudge: vi.fn(),
18
+ }))
12
19
 
13
20
  const KEY = 'SVENTERPRISE-EVAL-GUNEI-5-20260904-RGY2TN'
14
21
  const CARD = '[data-svgrid-enterprise-upgrade]'
15
22
 
23
+ /** Calls to emitUnlicensedNudge() since the last reset.
24
+ *
25
+ * Spied rather than counted in the DOM: the real function attaches its badge
26
+ * to grid elements on a microtask, so in a document with no grid it renders
27
+ * nothing and a node count would read 0 for every case - passing even if the
28
+ * watermark were wired up wrongly. The call is the contract under test. */
29
+ const watermarkCalls = () => vi.mocked(emitUnlicensedNudge).mock.calls.length
30
+
16
31
  describe('trial key expiry parsing', () => {
17
32
  it('unlocks Enterprise today', () => {
18
33
  const info = checkLicenseKey(KEY, new Date('2026-08-21T12:00:00Z'))
@@ -51,6 +66,7 @@ describe('what happens after the trial ends', () => {
51
66
  vi.useRealTimers()
52
67
  clearLicenseKey()
53
68
  dismissUpgradePrompt()
69
+ vi.mocked(emitUnlicensedNudge).mockClear()
54
70
  document.body.innerHTML = ''
55
71
  })
56
72
 
@@ -81,6 +97,26 @@ describe('what happens after the trial ends', () => {
81
97
  expect(getLicenseExpiry()?.toISOString()).toBe('2026-09-04T23:59:59.999Z')
82
98
  })
83
99
 
100
+ it('a lapsed trial gets the card but NOT the watermark', () => {
101
+ vi.useFakeTimers({ now: new Date('2026-09-20T10:00:00Z') })
102
+ setLicenseKey(KEY)
103
+ assertEnterpriseLicensed('Export')
104
+
105
+ expect(document.querySelector(CARD)).not.toBeNull()
106
+ // Someone who evaluated and let the clock run out is a prospect mid-
107
+ // conversation; stamping their UI is the wrong pressure. An app with no
108
+ // key at all still gets both surfaces - covered below.
109
+ expect(watermarkCalls()).toBe(0)
110
+ })
111
+
112
+ it('an app with no key at all still gets the watermark', () => {
113
+ clearLicenseKey()
114
+ assertEnterpriseLicensed('Export')
115
+
116
+ expect(document.querySelector(CARD)).not.toBeNull()
117
+ expect(watermarkCalls()).toBeGreaterThan(0)
118
+ })
119
+
84
120
  it('a paid key never shows the card', () => {
85
121
  vi.useFakeTimers({ now: new Date('2026-09-20T10:00:00Z') })
86
122
  setLicenseKey('SVENTERPRISE-ACME-5-202705-ABC123')
package/src/license.ts CHANGED
@@ -12,10 +12,11 @@
12
12
  // in REVOKED_KEYS -> throws (revoked / leaked / expired)
13
13
  // starts with "SVENTERPRISE-DEV" or
14
14
  // "SVENTERPRISE-EVAL" -> works; one-time console.info notice
15
- // an EXPIRED dev/eval key -> still works, but nudges every session
16
- // (watermark + upgrade card). A trial
17
- // that ends must not break a running
18
- // app, so this stays a soft gate.
15
+ // an EXPIRED dev/eval key -> still works, but shows the upgrade
16
+ // card each session. No watermark: a
17
+ // lapsed trial is a prospect, not an
18
+ // unlicensed app. Stays a soft gate so a
19
+ // trial ending cannot break a build.
19
20
  // any other "SVENTERPRISE-..." -> works silently (paid production)
20
21
 
21
22
  import { checkLicenseKey, VALID_PREFIX, type LicenseInfo } from './license-core'
@@ -84,8 +85,13 @@ export function nudgeEnterprise(feature?: EnterpriseFeatureLabel): void {
84
85
  // `valid` stays true past a trial's expiry (the feature keeps running), so
85
86
  // checking it alone would let a lapsed trial through silently forever.
86
87
  if (info.valid && !info.expired) return
87
- emitUnlicensedNudge()
88
- showUpgradePrompt(feature, { expired: info.expired === true })
88
+ const lapsedTrial = info.valid && info.expired === true
89
+ // A lapsed trial gets the card but NOT the watermark. Someone who evaluated
90
+ // and let the clock run out is a prospect mid-conversation, not an app that
91
+ // never had a licence - stamping their UI is the wrong pressure. An app with
92
+ // no key at all still gets both.
93
+ if (!lapsedTrial) emitUnlicensedNudge()
94
+ showUpgradePrompt(feature, { expired: lapsedTrial })
89
95
  }
90
96
 
91
97
  export function assertEnterpriseLicensed(feature?: EnterpriseFeatureLabel): void {
@@ -111,10 +117,9 @@ export function assertEnterpriseLicensed(feature?: EnterpriseFeatureLabel): void
111
117
  case 'dev':
112
118
  case 'eval':
113
119
  if (info.expired) {
114
- // The trial is over. Deliberately NOT a throw: the app keeps working
115
- // and instead gets the same surfaces an unlicensed one does, so the
116
- // developer sees it without their users hitting a broken build.
117
- emitUnlicensedNudge()
120
+ // The trial is over. Deliberately NOT a throw: the app keeps working,
121
+ // so the developer sees the nudge without their users hitting a broken
122
+ // build. Card only - no watermark; see nudgeEnterprise() for why.
118
123
  showUpgradePrompt(feature, { expired: true })
119
124
  return
120
125
  }
package/src/version.ts CHANGED
@@ -10,4 +10,4 @@
10
10
  *
11
11
  * `version.test.ts` asserts this matches `package.json`, so the two cannot drift.
12
12
  */
13
- export const SVGRID_VERSION = '2.5.1'
13
+ export const SVGRID_VERSION = '2.5.2'