@svgrid/enterprise 3.0.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (235) hide show
  1. package/README.md +95 -95
  2. package/dist/ExpressionEditorHarness.svelte.d.ts +2 -2
  3. package/dist/SvAdvancedFilter.svelte.d.ts +2 -2
  4. package/dist/SvAlertRuleEditor.svelte.d.ts +2 -2
  5. package/dist/SvAlertsManager.svelte.d.ts +3 -3
  6. package/dist/SvAlertsPanel.svelte.d.ts +1 -1
  7. package/dist/SvAuthGate.svelte +115 -115
  8. package/dist/SvAuthGate.svelte.d.ts +1 -1
  9. package/dist/SvBoard.svelte.d.ts +1 -1
  10. package/dist/SvExportMenu.svelte +553 -553
  11. package/dist/SvExportMenu.svelte.d.ts +2 -2
  12. package/dist/SvExpressionEditor.svelte.d.ts +2 -2
  13. package/dist/SvFileInput.svelte +113 -113
  14. package/dist/SvGridAlerts.svelte.d.ts +2 -2
  15. package/dist/SvGridBoard.svelte +2358 -2358
  16. package/dist/SvGridBulkEditDrawer.svelte.d.ts +1 -1
  17. package/dist/SvGridEditPanel.svelte +1157 -1157
  18. package/dist/SvGridEditPanel.svelte.d.ts +3 -3
  19. package/dist/SvGridMasterDetail.svelte +116 -116
  20. package/dist/SvGridMasterDetail.svelte.d.ts +1 -1
  21. package/dist/SvGridScheduler.svelte +5358 -5358
  22. package/dist/SvImportDialog.svelte +1020 -1020
  23. package/dist/SvImportDialog.svelte.d.ts +2 -2
  24. package/dist/SvLookupInput.svelte +180 -180
  25. package/dist/SvLookupInput.svelte.d.ts +1 -1
  26. package/dist/SvPivotDesigner.svelte +1990 -1990
  27. package/dist/SvPivotDesigner.svelte.d.ts +2 -2
  28. package/dist/SvRecordDetail.svelte.d.ts +1 -1
  29. package/dist/SvSchedule.svelte.d.ts +1 -1
  30. package/dist/SvSchemaChart.svelte +234 -234
  31. package/dist/SvSchemaChart.svelte.d.ts +2 -2
  32. package/dist/SvSchemaDashboard.svelte +130 -130
  33. package/dist/SvSchemaDashboard.svelte.d.ts +3 -3
  34. package/dist/advanced-filter/expr-columns-from-grid.d.ts +1 -1
  35. package/dist/advanced-filter-enable.js +3 -3
  36. package/dist/alerts/alert-engine-attach.d.ts +2 -2
  37. package/dist/alerts/alert-engine-attach.js +3 -3
  38. package/dist/alerts/alert-engine.d.ts +1 -1
  39. package/dist/alerts/alert-engine.js +2 -2
  40. package/dist/alerts/alert-formats.d.ts +1 -1
  41. package/dist/alerts/alert-formats.js +1 -1
  42. package/dist/alerts/alert-observer.d.ts +3 -3
  43. package/dist/alerts/alert-observer.js +1 -1
  44. package/dist/alerts/alert-storage.d.ts +1 -1
  45. package/dist/alerts/alert-store.svelte.d.ts +1 -1
  46. package/dist/alerts/alert-types.d.ts +2 -2
  47. package/dist/alerts.js +2 -2
  48. package/dist/board.js +2 -2
  49. package/dist/cdn/svgrid-enterprise.svelte-external.js +1161 -1144
  50. package/dist/designer/assets/GridMenus-B1JtIN21.js +8 -0
  51. package/dist/designer/assets/SvDateRangeInput-C0iCCZ8o.css +1 -0
  52. package/dist/designer/assets/{SvDateRangeInput-CVn-yqrQ.js → SvDateRangeInput-CjO7nn_x.js} +1 -1
  53. package/dist/designer/assets/SvDateTimePicker-ByBD_ov6.js +1 -0
  54. package/dist/designer/assets/SvDateTimePicker-DPv09DIT.css +1 -0
  55. package/dist/designer/assets/SvField-YDLipR6O.css +1 -0
  56. package/dist/designer/assets/{SvField-BsqiA5me.js → SvField-cj1PFNgZ.js} +1 -1
  57. package/dist/designer/assets/{preload-helper-CG0n22O7.js → SvGrid.helpers-BgT-gnCo.js} +1 -1
  58. package/dist/designer/assets/SvGridCellEditor-0W1L2hJ1.js +2 -0
  59. package/dist/designer/assets/SvGridChart-DBOR4xcz.js +2 -0
  60. package/dist/designer/assets/SvGridChart-fkMWeh1J.css +1 -0
  61. package/dist/designer/assets/SvGridChartPanel-symrhNnR.js +11 -0
  62. package/dist/designer/assets/SvGridChartView-BmRxq6mU.js +1 -0
  63. package/dist/designer/assets/SvGridChartView-DUc-1RUf.css +1 -0
  64. package/dist/designer/assets/SvGridDropdown-Bb3HH2Aj.js +1 -0
  65. package/dist/designer/assets/SvGridDropdown-CcidB3rm.css +1 -0
  66. package/dist/designer/assets/SvListBox-1oUF6Iav.js +110 -0
  67. package/dist/designer/assets/SvListBox-BXfyqy4a.css +1 -0
  68. package/dist/designer/assets/cell-formatting-wr5wm7US.js +1 -0
  69. package/dist/designer/assets/chart-DXFganU8.js +1 -0
  70. package/dist/designer/assets/date-format-DGagAqRc.css +1 -0
  71. package/dist/designer/assets/{date-format-4DJvNtG2.js → date-format-onlYDsrY.js} +1 -1
  72. package/dist/designer/assets/export-format-D-eP4b2l.js +6 -0
  73. package/dist/designer/assets/{index-zUBix-JQ.js → index-C_a9Cj8Y.js} +2984 -141
  74. package/dist/designer/assets/index-k2stW6L8.css +1 -0
  75. package/dist/designer/assets/preload-helper-HclGiUj8.js +1 -0
  76. package/dist/designer/assets/src-D9p27OGC.js +58 -0
  77. package/dist/designer/index.html +22 -22
  78. package/dist/export-conditional.d.ts +1 -1
  79. package/dist/export-print.js +19 -19
  80. package/dist/export-xls.d.ts +2 -2
  81. package/dist/export.d.ts +2 -2
  82. package/dist/export.js +7 -7
  83. package/dist/expressions/builder-tree.d.ts +2 -2
  84. package/dist/expressions/builder-tree.js +1 -1
  85. package/dist/expressions/compile.d.ts +1 -1
  86. package/dist/import.js +1 -1
  87. package/dist/index.d.ts +53 -53
  88. package/dist/index.js +50 -50
  89. package/dist/install.d.ts +4 -4
  90. package/dist/install.js +11 -11
  91. package/dist/license.d.ts +3 -2
  92. package/dist/license.js +9 -4
  93. package/dist/node/studio.js +123 -114
  94. package/dist/pivot-chart.d.ts +1 -1
  95. package/dist/pivot-designer.d.ts +1 -1
  96. package/dist/pivot-enable.js +3 -3
  97. package/dist/print.d.ts +1 -1
  98. package/dist/print.js +4 -4
  99. package/dist/scheduler-config.d.ts +5 -5
  100. package/dist/scheduler-freebusy.d.ts +1 -1
  101. package/dist/scheduler-freebusy.js +1 -1
  102. package/dist/scheduler.js +2 -2
  103. package/dist/schema-designer.d.ts +1 -1
  104. package/dist/schema-designer.js +2 -2
  105. package/dist/selection-bar.js +2 -2
  106. package/dist/sources/aggregate.d.ts +1 -1
  107. package/dist/sources/auth-supabase.js +1 -1
  108. package/dist/sources/dashboard.d.ts +2 -2
  109. package/dist/sources/dashboard.js +1 -1
  110. package/dist/sources/index.d.ts +13 -13
  111. package/dist/sources/index.js +13 -13
  112. package/dist/sources/realtime-supabase.js +1 -1
  113. package/dist/sources/relation-lookup.d.ts +1 -1
  114. package/dist/sources/relation-lookup.js +1 -1
  115. package/dist/sources/rest-adapters.d.ts +1 -1
  116. package/dist/sources/rest-adapters.js +1 -1
  117. package/dist/sources/rest.d.ts +2 -2
  118. package/dist/sources/rest.js +3 -3
  119. package/dist/sources/supabase.d.ts +2 -2
  120. package/dist/sources/supabase.js +3 -3
  121. package/dist/sources/with-entity-rules.d.ts +1 -1
  122. package/dist/sources/with-entity-rules.js +1 -1
  123. package/dist/sources/with-relation-labels.d.ts +1 -1
  124. package/dist/studio/emit-project.js +2161 -2127
  125. package/dist/studio/emit-schema.js +369 -369
  126. package/dist/studio/index.d.ts +1 -1
  127. package/dist/studio/index.js +1 -1
  128. package/dist/studio/introspect-db.js +45 -45
  129. package/dist/studio/project.d.ts +10 -0
  130. package/dist/studio/samples/crm.js +6 -6
  131. package/dist/studio/samples/fleet.js +7 -7
  132. package/dist/studio/samples/insurance.js +9 -9
  133. package/dist/studio/samples/inventory.js +12 -12
  134. package/dist/studio/samples/projects.js +5 -5
  135. package/dist/studio/samples/support.js +8 -8
  136. package/dist/studio/scaffold-app.js +104 -104
  137. package/dist/studio/scaffold.js +151 -151
  138. package/dist/studio/ui-components.d.ts +7 -0
  139. package/dist/studio/ui-components.js +35 -0
  140. package/dist/sveltekit/in-memory.d.ts +3 -3
  141. package/dist/sveltekit/in-memory.js +4 -4
  142. package/dist/sveltekit/index.d.ts +6 -6
  143. package/dist/sveltekit/index.js +5 -5
  144. package/dist/sveltekit/query-plan.d.ts +1 -1
  145. package/dist/sveltekit/sql-source.d.ts +4 -4
  146. package/dist/sveltekit/sql-source.js +4 -4
  147. package/dist/sveltekit/sql.d.ts +1 -1
  148. package/dist/sveltekit/transport.d.ts +2 -2
  149. package/dist/sveltekit/transport.js +1 -1
  150. package/dist/upgrade-prompt.js +25 -25
  151. package/package.json +6 -3
  152. package/dist/designer/assets/GridMenus-Cgilexpk.js +0 -8
  153. package/dist/designer/assets/SvDateRangeInput-BV5OXYQ2.css +0 -1
  154. package/dist/designer/assets/SvDateTimePicker-BdioTrJQ.js +0 -1
  155. package/dist/designer/assets/SvDateTimePicker-CY8TK4BT.css +0 -1
  156. package/dist/designer/assets/SvField-BF-9TJSd.css +0 -1
  157. package/dist/designer/assets/SvGridCellEditor-dLY7_kk9.js +0 -2
  158. package/dist/designer/assets/SvGridChart-BEDNTdc5.js +0 -2
  159. package/dist/designer/assets/SvGridChart-Vu4Nvjiv.css +0 -1
  160. package/dist/designer/assets/SvGridChartPanel-x3lzSxuf.js +0 -10
  161. package/dist/designer/assets/SvGridChartView-CAKhPELi.js +0 -1
  162. package/dist/designer/assets/SvGridChartView-DX9HfkBR.css +0 -1
  163. package/dist/designer/assets/SvGridDropdown-CAYG7Y-O.js +0 -1
  164. package/dist/designer/assets/SvGridDropdown-Crwb2P3Q.css +0 -1
  165. package/dist/designer/assets/SvListBox-CVYQcLX9.js +0 -1
  166. package/dist/designer/assets/SvListBox-DgN8kvjt.css +0 -1
  167. package/dist/designer/assets/chart-DHEgt4lN.js +0 -1
  168. package/dist/designer/assets/date-format-Dzy4mTGh.css +0 -1
  169. package/dist/designer/assets/export-format-DwjuTfrQ.js +0 -6
  170. package/dist/designer/assets/index-Cp7fDJ3b.css +0 -1
  171. package/dist/designer/assets/js-scroller.svelte-Bhxqb3-c.js +0 -110
  172. package/dist/designer/assets/src-B7DNcoQK.css +0 -1
  173. package/dist/designer/assets/src-BoYyigAC.js +0 -2896
  174. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/_svelte_metadata.json +0 -1
  175. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/_metadata.json +0 -178
  176. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-BOv1rBKp.js +0 -3875
  177. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-BOv1rBKp.js.map +0 -1
  178. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-B9vgIdCd.js +0 -21
  179. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-B9vgIdCd.js.map +0 -1
  180. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-T1qbW_qD.js +0 -1938
  181. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-T1qbW_qD.js.map +0 -1
  182. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-Bo11SfVK.js +0 -205
  183. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-Bo11SfVK.js.map +0 -1
  184. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-X7D4vfrZ.js +0 -18
  185. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-X7D4vfrZ.js.map +0 -1
  186. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-oyUje5i1.js +0 -264
  187. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-oyUje5i1.js.map +0 -1
  188. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-DeSQgSFm.js +0 -697
  189. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-DeSQgSFm.js.map +0 -1
  190. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/package.json +0 -3
  191. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js +0 -134
  192. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js.map +0 -1
  193. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js +0 -55
  194. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js.map +0 -1
  195. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_attachments.js +0 -2
  196. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js +0 -46843
  197. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js.map +0 -1
  198. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js +0 -237
  199. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js.map +0 -1
  200. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_events.js +0 -2
  201. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js +0 -4
  202. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js.map +0 -1
  203. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_client.js +0 -7
  204. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js +0 -4
  205. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js.map +0 -1
  206. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js +0 -5
  207. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js.map +0 -1
  208. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js +0 -5
  209. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js.map +0 -1
  210. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js +0 -5
  211. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js.map +0 -1
  212. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_server.js +0 -6
  213. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js +0 -83
  214. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js.map +0 -1
  215. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js +0 -559
  216. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js.map +0 -1
  217. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js +0 -24
  218. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js.map +0 -1
  219. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js +0 -122
  220. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js.map +0 -1
  221. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_server.js +0 -2
  222. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js +0 -89
  223. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js.map +0 -1
  224. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js +0 -241
  225. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js.map +0 -1
  226. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-BbWyXNk1.js +0 -4938
  227. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-BbWyXNk1.js.map +0 -1
  228. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DI_fC7vt.js +0 -495
  229. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DI_fC7vt.js.map +0 -1
  230. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-Dyr3lQv9.js +0 -190
  231. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-Dyr3lQv9.js.map +0 -1
  232. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-_9FHH-LF.js +0 -8
  233. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-_9FHH-LF.js.map +0 -1
  234. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-CUbSPnyP.js +0 -138
  235. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-CUbSPnyP.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,55 +1,55 @@
1
1
  export { setLicenseKey, clearLicenseKey, getLicenseKey, isLicenseKeySet, hasValidLicense, assertEnterpriseLicensed, nudgeEnterprise, checkLicenseKey,
2
2
  // Trial expiry. The built-in card already appears on its own once a trial
3
3
  // lapses; these are for hosts that would rather render their own banner.
4
- isLicenseExpired, getLicenseExpiry, } from './license';
5
- export { parseLicenseExpiry } from './license-core';
6
- export { exportGrid, copyExportToClipboard, } from './export';
4
+ isLicenseExpired, getLicenseExpiry, } from './license.js';
5
+ export { parseLicenseExpiry } from './license-core.js';
6
+ export { exportGrid, copyExportToClipboard, } from './export.js';
7
7
  export { default as SvExportMenu } from './SvExportMenu.svelte';
8
- export { buildPdfDocDefinition } from './export-pdf';
9
- export { printGrid } from './print';
10
- export { importData, readImportMatrix, mapImportMatrix, mapImportMatrixAsync, autoMapColumns, inferImportColumnTypes, } from './import';
8
+ export { buildPdfDocDefinition } from './export-pdf.js';
9
+ export { printGrid } from './print.js';
10
+ export { importData, readImportMatrix, mapImportMatrix, mapImportMatrixAsync, autoMapColumns, inferImportColumnTypes, } from './import.js';
11
11
  export { default as SvImportDialog } from './SvImportDialog.svelte';
12
- export { installEnterprise } from './install';
12
+ export { installEnterprise } from './install.js';
13
13
  // Scheduler / calendar view (Pro). `enableSchedulerView()` registers the
14
14
  // renderer so `<SvGrid scheduler={...}>` shows a Month/Week/Day/Agenda calendar.
15
15
  // The pure model helpers + config types live in @svgrid/grid; import them from there.
16
- export { enableSchedulerView, SvGridScheduler } from './scheduler';
16
+ export { enableSchedulerView, SvGridScheduler } from './scheduler.js';
17
17
  // Kanban board view (Pro). `enableBoardView()` registers the renderer so
18
18
  // `<SvGrid board={...}>` shows lanes of cards. Config types live in @svgrid/grid.
19
- export { enableBoardView, SvGridBoard } from './board';
19
+ export { enableBoardView, SvGridBoard } from './board.js';
20
20
  // Bulk-action bar over the row selection (Pro). `enableSelectionBar()` registers
21
21
  // the renderer so `<SvGrid selectionBar={...}>` floats a bar over the grid while
22
22
  // rows are selected. The prop + its config types live in @svgrid/grid.
23
- export { enableSelectionBar, SvGridSelectionBar } from './selection-bar';
23
+ export { enableSelectionBar, SvGridSelectionBar } from './selection-bar.js';
24
24
  // Bulk edit engine behind the bar's `editFields` button - exported so an app
25
25
  // can drive the same write from its own UI.
26
- export { applyBulkEdit, bulkEditableFields, bulkEditInitialValues, coerceBulkValue } from './bulk-edit';
26
+ export { applyBulkEdit, bulkEditableFields, bulkEditInitialValues, coerceBulkValue } from './bulk-edit.js';
27
27
  export { default as SvGridBulkEditDrawer } from './SvGridBulkEditDrawer.svelte';
28
28
  // In-grid pivot mode (Pro). `enablePivot()` registers the pivot engine so
29
29
  // `<SvGrid pivot={...}>` renders a pivot table in place of the flat table.
30
- export { enablePivot } from './pivot-enable';
31
- export { enableAdvancedFilter } from './advanced-filter-enable';
30
+ export { enablePivot } from './pivot-enable.js';
31
+ export { enableAdvancedFilter } from './advanced-filter-enable.js';
32
32
  export { default as SvAdvancedFilter } from './SvAdvancedFilter.svelte';
33
- export { exprColumnsFromGrid, } from './advanced-filter/expr-columns-from-grid';
34
- export { compilePredicate, compileScalar, } from './expressions/compile';
35
- export { buildDependencyGraph, topoOrder, hasCycle, requiredStart, cascade, violations, } from './scheduler-dependencies';
36
- export { expandAssignments, resourceLoad, overallocations, assignedMinutes, } from './scheduler-assignments';
37
- export { columnSummaries, sumReducer, countReducer, busyMinutesReducer, } from './scheduler-summary';
38
- export { buildAxis, timeToX, xToTime, resolveZoom, zoomPresets, } from './scheduler-axis';
39
- export { buildResourceRows, visibleResourceIds, } from './scheduler-resource-tree';
40
- export { heatCells, heatPeak } from './scheduler-heatmap';
41
- export { respectsBuffer, withinDurationBounds, afterLead, } from './scheduler-booking';
42
- export { availableSlots, mergeIntervals, subtractIntervals, } from './scheduler-slots';
43
- export { mergeBusy, commonFree } from './scheduler-freebusy';
44
- export { createStagedEditing, } from './staged-editing';
45
- export { createScheduler, parseCron, cronMatches, cronMatchesParsed, isScheduleDue, nextRun, CRON_PRESETS, } from './scheduling';
46
- export { dismissUnlicensedNudge } from './watermark';
47
- export { showUpgradePrompt, dismissUpgradePrompt, } from './upgrade-prompt';
48
- export { createPivotModel, pivotAggregators, filterCollapsedPivotRows, } from './pivot';
49
- export { titleCase, resolveIdField, schemaToColumns, schemaToFormFields, isFieldHidden, validateField, applyComputed, validateEntity, } from './schema';
50
- export { planQuery, coerce, createInMemoryDataSource, createKitDataSource, createKitHandlers, createSqlDataSource, planToSql, } from './sveltekit';
51
- export { createSupabaseDataSource, createRestDataSource, offsetLimitAdapter, dummyJsonAdapter, jsonServerAdapter, introspectSupabaseTable, listSupabaseTables, createSupabaseRealtime, createRelationLookup, createSupabaseAuth, aggregateRows, chartFieldsFromSchema, normalizeFilters, buildEntitySchema, pickLabelField, linkRelationLabels, withEntityRules, withRelationLabels, reduceValue, kpiSeries, sparklinePoints, seriesDelta, formatKpiValue, dashboardFromSchema, } from './sources';
52
- export { buildInitialValues, controlKind, editMode, evalValidationRules, fieldState, sectionVisible, hasFieldConditions, rowId, stripHiddenValues, toSubmitValues, validateAll, visibleFormFields, } from './edit-panel';
33
+ export { exprColumnsFromGrid, } from './advanced-filter/expr-columns-from-grid.js';
34
+ export { compilePredicate, compileScalar, } from './expressions/compile.js';
35
+ export { buildDependencyGraph, topoOrder, hasCycle, requiredStart, cascade, violations, } from './scheduler-dependencies.js';
36
+ export { expandAssignments, resourceLoad, overallocations, assignedMinutes, } from './scheduler-assignments.js';
37
+ export { columnSummaries, sumReducer, countReducer, busyMinutesReducer, } from './scheduler-summary.js';
38
+ export { buildAxis, timeToX, xToTime, resolveZoom, zoomPresets, } from './scheduler-axis.js';
39
+ export { buildResourceRows, visibleResourceIds, } from './scheduler-resource-tree.js';
40
+ export { heatCells, heatPeak } from './scheduler-heatmap.js';
41
+ export { respectsBuffer, withinDurationBounds, afterLead, } from './scheduler-booking.js';
42
+ export { availableSlots, mergeIntervals, subtractIntervals, } from './scheduler-slots.js';
43
+ export { mergeBusy, commonFree } from './scheduler-freebusy.js';
44
+ export { createStagedEditing, } from './staged-editing.js';
45
+ export { createScheduler, parseCron, cronMatches, cronMatchesParsed, isScheduleDue, nextRun, CRON_PRESETS, } from './scheduling.js';
46
+ export { dismissUnlicensedNudge } from './watermark.js';
47
+ export { showUpgradePrompt, dismissUpgradePrompt, } from './upgrade-prompt.js';
48
+ export { createPivotModel, pivotAggregators, filterCollapsedPivotRows, } from './pivot.js';
49
+ export { titleCase, resolveIdField, schemaToColumns, schemaToFormFields, isFieldHidden, validateField, applyComputed, validateEntity, } from './schema.js';
50
+ export { planQuery, coerce, createInMemoryDataSource, createKitDataSource, createKitHandlers, createSqlDataSource, planToSql, } from './sveltekit/index.js';
51
+ export { createSupabaseDataSource, createRestDataSource, offsetLimitAdapter, dummyJsonAdapter, jsonServerAdapter, introspectSupabaseTable, listSupabaseTables, createSupabaseRealtime, createRelationLookup, createSupabaseAuth, aggregateRows, chartFieldsFromSchema, normalizeFilters, buildEntitySchema, pickLabelField, linkRelationLabels, withEntityRules, withRelationLabels, reduceValue, kpiSeries, sparklinePoints, seriesDelta, formatKpiValue, dashboardFromSchema, } from './sources/index.js';
52
+ export { buildInitialValues, controlKind, editMode, evalValidationRules, fieldState, sectionVisible, hasFieldConditions, rowId, stripHiddenValues, toSubmitValues, validateAll, visibleFormFields, } from './edit-panel.js';
53
53
  export { default as SvGridEditPanel } from './SvGridEditPanel.svelte';
54
54
  export { default as SvLookupInput } from './SvLookupInput.svelte';
55
55
  export { default as SvFileInput } from './SvFileInput.svelte';
@@ -59,7 +59,7 @@ export { default as SvSchemaDashboard } from './SvSchemaDashboard.svelte';
59
59
  export { default as SvBoard } from './SvBoard.svelte';
60
60
  export { default as SvSchedule } from './SvSchedule.svelte';
61
61
  export { default as SvRecordDetail } from './SvRecordDetail.svelte';
62
- export { FIELD_TYPES, blankField, addField, removeField, updateField, moveField, validateSchema, isSchemaValid, sampleRows, } from './schema-designer';
62
+ export { FIELD_TYPES, blankField, addField, removeField, updateField, moveField, validateSchema, isSchemaValid, sampleRows, } from './schema-designer.js';
63
63
  // NOTE: The visual designer components (SvSchemaDesigner, SvStudioDesigner) are
64
64
  // the commercial "SvGrid Studio" seller. They live entirely in the PRIVATE
65
65
  // website repo (website/src/lib/designer), NOT in this public package - they
@@ -67,36 +67,36 @@ export { FIELD_TYPES, blankField, addField, removeField, updateField, moveField,
67
67
  // the MCP server depends on it.
68
68
  // The Studio project model + codegen (also on the pure `@svgrid/enterprise/studio`
69
69
  // subpath) - re-exported so the designer and its model come from one import.
70
- export { createProject, defaultScreenFor, emitStudioProject, emitStudioAppBundle, emitStudioApp, sampleApps, getSampleApp, starterProject, liveDataSamples, getLiveDataSample, starterDatasets, getStarterDataset, crudSuiteScreens, addCrudSuite, crudAppFromSchemas, introspectJson, sanitizeStudioProject, buildStudioBugReport, addBlock, addBlockAt, removeBlock, moveBlock, reorderBlock, updateBlock, addScreen, removeScreen, updateScreen, duplicateScreen, reorderScreen, insertBlock, addEntity, removeEntity, updateEntity, formPlan, setEntityForm, setFormColumns, addFormSection, updateFormSection, removeFormSection, moveFormSection, moveFormField, moveFormFields, setFieldConditions, updateEntityField, setFieldInput, setFieldHidden, formControlsFor, formControlSettings, suggestFormSections, setDataSource, defaultEntitySource, setEntityDataSource, entityDataSource, setTheme, setThemePreset, setShell, sanitizeProject, screenFromTemplate, addScreenFromTemplate, addFreestandingScreen, serializeProject, parseProject, blockPalette, validateProject, isProjectValid, entityOf, studioThemes, defaultStudioTheme, getStudioTheme, resolveThemeTokens, isDarkTheme, themeStyleString, } from './studio';
71
- export { buildConnectionString, parseConnectionString, redactConnectionString, isFileDialect, DRIVER_PACKAGE, DEFAULT_PORT, countTableRows, probeConnection, } from './studio';
72
- export { buildDisplayRows, isDetailRow, toggleExpanded, } from './master-detail';
70
+ export { createProject, defaultScreenFor, emitStudioProject, emitStudioAppBundle, emitStudioApp, sampleApps, getSampleApp, starterProject, liveDataSamples, getLiveDataSample, starterDatasets, getStarterDataset, crudSuiteScreens, addCrudSuite, crudAppFromSchemas, introspectJson, sanitizeStudioProject, buildStudioBugReport, addBlock, addBlockAt, removeBlock, moveBlock, reorderBlock, updateBlock, addScreen, removeScreen, updateScreen, duplicateScreen, reorderScreen, insertBlock, addEntity, removeEntity, updateEntity, formPlan, setEntityForm, setFormColumns, addFormSection, updateFormSection, removeFormSection, moveFormSection, moveFormField, moveFormFields, setFieldConditions, updateEntityField, setFieldInput, setFieldHidden, formControlsFor, formControlSettings, suggestFormSections, setDataSource, defaultEntitySource, setEntityDataSource, entityDataSource, setTheme, setThemePreset, setShell, sanitizeProject, screenFromTemplate, addScreenFromTemplate, addFreestandingScreen, serializeProject, parseProject, blockPalette, validateProject, isProjectValid, entityOf, studioThemes, defaultStudioTheme, getStudioTheme, resolveThemeTokens, isDarkTheme, themeStyleString, } from './studio/index.js';
71
+ export { buildConnectionString, parseConnectionString, redactConnectionString, isFileDialect, DRIVER_PACKAGE, DEFAULT_PORT, countTableRows, probeConnection, } from './studio/index.js';
72
+ export { buildDisplayRows, isDetailRow, toggleExpanded, } from './master-detail.js';
73
73
  export { default as SvGridMasterDetail } from './SvGridMasterDetail.svelte';
74
74
  export { default as SvPivotDesigner } from './SvPivotDesigner.svelte';
75
- export { ALL_AGGREGATORS, AGG_LABEL, EMPTY_LAYOUT, defaultLayoutFor, } from './pivot-designer';
75
+ export { ALL_AGGREGATORS, AGG_LABEL, EMPTY_LAYOUT, defaultLayoutFor, } from './pivot-designer.js';
76
76
  // The AI helpers (setAIProvider, aiFilter, aiSmartFill, aiSummarize, aiClassify,
77
77
  // aiExport, aiFindAnomalies, aiChart, enableAiCharting, ...) are now BUILT-IN and
78
78
  // FREE in @svgrid/grid - import them from there. Enterprise only registers its
79
79
  // export engine so AI-planned Excel/PDF exports can run (see install.ts).
80
- export { pivotToChartSpec } from './pivot-chart';
80
+ export { pivotToChartSpec } from './pivot-chart.js';
81
81
  // Expression / query language (Pro). One predicate/scalar/change model that
82
82
  // powers alerts (and, in time, styled + calculated columns). Leaf comparisons
83
83
  // reuse the grid's own `applyExcelFilter`, so operators match the filter row.
84
- export { evaluatePredicate, evaluateScalar, evaluateChange, BUILTIN_FUNCTION_NAMES, isBuiltinFunction, } from './expressions/evaluate';
85
- export { parsePredicate, stringifyPredicate, stringifyScalar, validateExpression, collectColumnRefs, ExpressionParseError, } from './expressions/parse';
86
- export { OPERATORS, operatorMeta, operatorsForType, isValueless, isSetOperator, isRangeOperator, columnById, resolveColumnRef, columnLabel, columnRefText, } from './expressions/expression-columns';
84
+ export { evaluatePredicate, evaluateScalar, evaluateChange, BUILTIN_FUNCTION_NAMES, isBuiltinFunction, } from './expressions/evaluate.js';
85
+ export { parsePredicate, stringifyPredicate, stringifyScalar, validateExpression, collectColumnRefs, ExpressionParseError, } from './expressions/parse.js';
86
+ export { OPERATORS, operatorMeta, operatorsForType, isValueless, isSetOperator, isRangeOperator, columnById, resolveColumnRef, columnLabel, columnRefText, } from './expressions/expression-columns.js';
87
87
  export { default as SvExpressionEditor } from './SvExpressionEditor.svelte';
88
88
  // Alert Rules engine (Pro). Declarative "when this holds / this moves -> toast /
89
89
  // badge / highlight / flash / prevent-edit / log". Authored at runtime,
90
90
  // persisted, shareable. Surfacing reuses the grid's toast + conditional-format
91
91
  // engines; `<SvGridAlerts>` is the runtime overlay the consumer mounts.
92
- export { enableAlerts } from './alerts';
93
- export { createAlertEngine, renderTemplate, } from './alerts/alert-engine';
94
- export { attachAlertEngine, applyAlertEvents, } from './alerts/alert-engine-attach';
95
- export { memoryAlertRules, localStorageAlertRules, createAlertRules, } from './alerts/alert-storage';
96
- export { createAlertObserver, } from './alerts/alert-observer';
97
- export { createAlertScheduler, } from './alerts/alert-scheduler';
98
- export { toConditionalFormats, rulesToConditionalFormats } from './alerts/alert-formats';
99
- export { alertStore } from './alerts/alert-store.svelte';
92
+ export { enableAlerts } from './alerts.js';
93
+ export { createAlertEngine, renderTemplate, } from './alerts/alert-engine.js';
94
+ export { attachAlertEngine, applyAlertEvents, } from './alerts/alert-engine-attach.js';
95
+ export { memoryAlertRules, localStorageAlertRules, createAlertRules, } from './alerts/alert-storage.js';
96
+ export { createAlertObserver, } from './alerts/alert-observer.js';
97
+ export { createAlertScheduler, } from './alerts/alert-scheduler.js';
98
+ export { toConditionalFormats, rulesToConditionalFormats } from './alerts/alert-formats.js';
99
+ export { alertStore } from './alerts/alert-store.svelte.js';
100
100
  export { default as SvGridAlerts } from './SvGridAlerts.svelte';
101
101
  export { default as SvAlertRuleEditor } from './SvAlertRuleEditor.svelte';
102
102
  export { default as SvAlertsManager } from './SvAlertsManager.svelte';
package/dist/install.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  import type { RowData, TableFeatures, SvGridApi } from '@svgrid/grid';
2
- import { type ExportOptions, type ExportResult, type ClipboardExportOptions } from './export';
3
- import { type PrintOptions } from './print';
4
- import { type ImportOptions, type ImportResult } from './import';
2
+ import { type ExportOptions, type ExportResult, type ClipboardExportOptions } from './export.js';
3
+ import { type PrintOptions } from './print.js';
4
+ import { type ImportOptions, type ImportResult } from './import.js';
5
5
  import { type AIChartOptions, type AIChartPlan, type AIFilterOptions, type AIFilterResult, type AISmartFillOptions, type AISmartFillResult, type AISummarizeOptions, type AISummary, type AIClassifyOptions, type AIClassifyResult, type AIExportOptions, type AIExportPlan, type AIAnomalyOptions, type AIAnomalyResult } from '@svgrid/grid';
6
- import { type PivotConfig, type PivotResult } from './pivot';
6
+ import { type PivotConfig, type PivotResult } from './pivot.js';
7
7
  /** The `api.ai.*` namespace added by the enterprise install. */
8
8
  export type EnterpriseAIApi<TData extends RowData> = {
9
9
  /** Natural-language -> filter + sort plan (and optionally apply it). */
package/dist/install.js CHANGED
@@ -1,17 +1,17 @@
1
- import { exportGrid, copyExportToClipboard, } from './export';
2
- import { printGrid } from './print';
3
- import { importData } from './import';
4
- import { isLicenseKeySet } from './license';
5
- import { emitUnlicensedNudge } from './watermark';
1
+ import { exportGrid, copyExportToClipboard, } from './export.js';
2
+ import { printGrid } from './print.js';
3
+ import { importData } from './import.js';
4
+ import { isLicenseKeySet } from './license.js';
5
+ import { emitUnlicensedNudge } from './watermark.js';
6
6
  // AI helpers are built-in + free in @svgrid/grid now; enterprise just wires them
7
7
  // into the Pro API and registers its export engine so AI exports can write xlsx/pdf.
8
8
  import { aiFilter, aiSmartFill, aiSummarize, aiClassify, aiExport, aiFindAnomalies, aiChart, enableAiCharting, registerExportProvider, } from '@svgrid/grid';
9
- import { createPivotModel, } from './pivot';
10
- import { enableSchedulerView } from './scheduler';
11
- import { enableBoardView } from './board';
12
- import { enableSelectionBar } from './selection-bar';
13
- import { enableAdvancedFilter } from './advanced-filter-enable';
14
- import { enablePivot } from './pivot-enable';
9
+ import { createPivotModel, } from './pivot.js';
10
+ import { enableSchedulerView } from './scheduler.js';
11
+ import { enableBoardView } from './board.js';
12
+ import { enableSelectionBar } from './selection-bar.js';
13
+ import { enableAdvancedFilter } from './advanced-filter-enable.js';
14
+ import { enablePivot } from './pivot-enable.js';
15
15
  /**
16
16
  * Augment a SvGridApi instance with Pro methods (`exportData`, `print`,
17
17
  * `ai.*`). Mutates and returns the same object so existing references
package/dist/license.d.ts CHANGED
@@ -1,5 +1,6 @@
1
- import { type EnterpriseFeatureLabel } from './upgrade-prompt';
2
- export { checkLicenseKey, type LicenseInfo, type LicenseStatus } from './license-core';
1
+ import { type EnterpriseFeatureLabel } from './upgrade-prompt.js';
2
+ export { checkLicenseKey, type LicenseInfo, type LicenseStatus } from './license-core.js';
3
+ export { dismissUnlicensedNudge } from './watermark.js';
3
4
  export declare function setLicenseKey(key: string): void;
4
5
  export declare function clearLicenseKey(): void;
5
6
  export declare function getLicenseKey(): string | null;
package/dist/license.js CHANGED
@@ -18,10 +18,15 @@
18
18
  // + the upgrade card. Stays a soft gate
19
19
  // so a trial ending cannot break a build.
20
20
  // any other "SVENTERPRISE-..." -> works silently (paid production)
21
- import { checkLicenseKey, VALID_PREFIX } from './license-core';
22
- import { emitUnlicensedNudge } from './watermark';
23
- import { showUpgradePrompt } from './upgrade-prompt';
24
- export { checkLicenseKey } from './license-core';
21
+ import { checkLicenseKey, VALID_PREFIX } from './license-core.js';
22
+ import { emitUnlicensedNudge } from './watermark.js';
23
+ import { showUpgradePrompt } from './upgrade-prompt.js';
24
+ export { checkLicenseKey } from './license-core.js';
25
+ // The nudge the key silences, on the same subpath as the key: an app that only
26
+ // wants to set its licence imports `@svgrid/enterprise/license` and never
27
+ // pulls the component barrel (the package has no `sideEffects` flag, so a
28
+ // barrel import carries every module it reaches into the importer's chunk).
29
+ export { dismissUnlicensedNudge } from './watermark.js';
25
30
  let currentKey = null;
26
31
  let noticedDev = false;
27
32
  let noticedExpired = false;
@@ -1,5 +1,4 @@
1
1
  import { defaultThemePreset, getThemePreset, resolveThemeTokens as resolveThemeTokens$1, themePresets } from "@svgrid/grid/themes";
2
- import { isRangeOperator, isSetOperator, isValuelessOperator } from "@svgrid/grid/filtering";
3
2
  //#region src/schema.ts
4
3
  /** `first_name` / `firstName` / `first-name` -> `First Name`. */
5
4
  function titleCase$2(field) {
@@ -1130,7 +1129,7 @@ function introspectOpenApi(specText) {
1130
1129
  }
1131
1130
  //#endregion
1132
1131
  //#region src/studio/introspect-db.ts
1133
- function truthy$1(v) {
1132
+ function truthy(v) {
1134
1133
  return v === 1 || v === "1" || v === true;
1135
1134
  }
1136
1135
  function identQuote(name) {
@@ -1165,7 +1164,7 @@ function fieldFrom(name, rawType, pk, notNull) {
1165
1164
  }
1166
1165
  /** Map catalog rows (aliased name/type/nullable/pk) from information_schema dialects. */
1167
1166
  function infoSchemaFields(rows) {
1168
- return rows.map((r) => fieldFrom(String(r.name), String(r.type ?? ""), truthy$1(r.pk), !truthy$1(r.nullable)));
1167
+ return rows.map((r) => fieldFrom(String(r.name), String(r.type ?? ""), truthy(r.pk), !truthy(r.nullable)));
1169
1168
  }
1170
1169
  /** Map SQLite `PRAGMA table_info` rows (name/type/notnull/pk-as-index). */
1171
1170
  function sqliteFields(rows) {
@@ -2011,112 +2010,6 @@ function scaffoldApp(schemas, options = {}) {
2011
2010
  return { files };
2012
2011
  }
2013
2012
  //#endregion
2014
- //#region src/expressions/expression-columns.ts
2015
- /**
2016
- * Column metadata for the expression layer - the small, self-contained operator
2017
- * catalogue the editor draws from, plus name <-> id resolution for the
2018
- * `[Bracketed Name]` reference syntax.
2019
- *
2020
- * The operator set mirrors the grid's own filter row (text / number / date),
2021
- * so an expression's operators line up with what a user already knows from the
2022
- * column menu.
2023
- *
2024
- * Identity and input-shape semantics come from the grid's shared catalogue, so
2025
- * the two surfaces cannot disagree about which operators exist or which need a
2026
- * chip input / no input / a second value. Labels and ordering stay local on
2027
- * purpose: the editor leads with `Equals` where the filter menu leads with
2028
- * `Contains`, and each is right for its context.
2029
- */
2030
- var TEXT = ["text"];
2031
- var NUM = ["number"];
2032
- var DATES = ["date", "datetime"];
2033
- var ALL = [
2034
- "text",
2035
- "number",
2036
- "date",
2037
- "datetime",
2038
- "boolean"
2039
- ];
2040
- /** The full operator catalogue, ordered as the editor should present it. */
2041
- var OPERATORS = [
2042
- {
2043
- value: "equals",
2044
- label: "Equals",
2045
- types: ALL
2046
- },
2047
- {
2048
- value: "notEquals",
2049
- label: "Not equals",
2050
- types: ALL
2051
- },
2052
- {
2053
- value: "contains",
2054
- label: "Contains",
2055
- types: TEXT
2056
- },
2057
- {
2058
- value: "notContains",
2059
- label: "Not contains",
2060
- types: TEXT
2061
- },
2062
- {
2063
- value: "startsWith",
2064
- label: "Starts with",
2065
- types: TEXT
2066
- },
2067
- {
2068
- value: "endsWith",
2069
- label: "Ends with",
2070
- types: TEXT
2071
- },
2072
- {
2073
- value: "regex",
2074
- label: "Matches regex",
2075
- types: TEXT
2076
- },
2077
- {
2078
- value: "greaterThan",
2079
- label: "Greater than",
2080
- types: [...NUM, ...DATES]
2081
- },
2082
- {
2083
- value: "lessThan",
2084
- label: "Less than",
2085
- types: [...NUM, ...DATES]
2086
- },
2087
- {
2088
- value: "between",
2089
- label: "Between",
2090
- types: [...NUM, ...DATES]
2091
- },
2092
- {
2093
- value: "in",
2094
- label: "In",
2095
- types: ["text", "number"]
2096
- },
2097
- {
2098
- value: "notIn",
2099
- label: "Not in",
2100
- types: ["text", "number"]
2101
- },
2102
- {
2103
- value: "isBlank",
2104
- label: "Is blank",
2105
- types: ALL
2106
- },
2107
- {
2108
- value: "isNotBlank",
2109
- label: "Is not blank",
2110
- types: ALL
2111
- }
2112
- ].map((op) => ({
2113
- ...op,
2114
- ...isValuelessOperator(op.value) ? { valueless: true } : {},
2115
- ...isSetOperator(op.value) ? { set: true } : {},
2116
- ...isRangeOperator(op.value) ? { range: true } : {}
2117
- }));
2118
- new Map(OPERATORS.map((op) => [op.value, op]));
2119
- //#endregion
2120
2013
  //#region src/expressions/parse.ts
2121
2014
  /** Every column id referenced anywhere in a predicate (deduped, in order). */
2122
2015
  function collectColumnRefs(expr) {
@@ -11408,7 +11301,8 @@ var GRID_CURATED_PROPS = /* @__PURE__ */ new Set([
11408
11301
  "conditionalFormats",
11409
11302
  "features",
11410
11303
  "editable",
11411
- "enableInlineEditing"
11304
+ "enableInlineEditing",
11305
+ "icons"
11412
11306
  ]);
11413
11307
  /** The Grid's raw prop surface for the "All properties" panel: every extracted SvGrid
11414
11308
  * prop the curated controls do NOT already manage. Sorted by group then label. */
@@ -11423,6 +11317,83 @@ function gridPropSurface() {
11423
11317
  };
11424
11318
  return g.props.filter((p) => !GRID_CURATED_PROPS.has(p.key)).map((p) => ({ ...p })).sort((a, b) => order[a.group ?? "common"] - order[b.group ?? "common"] || a.label.localeCompare(b.label));
11425
11319
  }
11320
+ var GRID_ICON_GROUP_RULES = [
11321
+ {
11322
+ label: "Header + column menu",
11323
+ match: (n) => [
11324
+ "sort",
11325
+ "sort-asc",
11326
+ "sort-desc",
11327
+ "filter",
11328
+ "menu",
11329
+ "chevron-down",
11330
+ "chevron-right",
11331
+ "autosize",
11332
+ "columns",
11333
+ "reset"
11334
+ ].includes(n)
11335
+ },
11336
+ {
11337
+ label: "Filter operators",
11338
+ match: (n) => n.startsWith("op-")
11339
+ },
11340
+ {
11341
+ label: "Pinning",
11342
+ match: (n) => n === "pin-left" || n === "pin-right" || n === "unpin"
11343
+ },
11344
+ {
11345
+ label: "Rows + grouping",
11346
+ match: (n) => [
11347
+ "group",
11348
+ "group-add",
11349
+ "row-number",
11350
+ "pinned-row-top",
11351
+ "pinned-row-bottom",
11352
+ "drag-handle",
11353
+ "breadcrumb-separator"
11354
+ ].includes(n)
11355
+ },
11356
+ {
11357
+ label: "Toolbar + overlays",
11358
+ match: (n) => [
11359
+ "search",
11360
+ "tool-panel",
11361
+ "chart",
11362
+ "advanced-filter",
11363
+ "column-group-caret"
11364
+ ].includes(n)
11365
+ },
11366
+ {
11367
+ label: "Pager",
11368
+ match: (n) => n.startsWith("page-")
11369
+ },
11370
+ {
11371
+ label: "Find + move",
11372
+ match: (n) => n.startsWith("find-") || n.startsWith("move-")
11373
+ },
11374
+ {
11375
+ label: "Close + clear",
11376
+ match: (n) => [
11377
+ "x",
11378
+ "close",
11379
+ "clear",
11380
+ "remove"
11381
+ ].includes(n)
11382
+ },
11383
+ {
11384
+ label: "Other",
11385
+ match: () => true
11386
+ }
11387
+ ];
11388
+ /** Split the grid's icon catalogue into the picker's display groups, in order,
11389
+ * dropping any that came out empty. Takes the names rather than importing them so
11390
+ * the studio metadata module stays free of a runtime dependency on the grid. */
11391
+ function gridIconGroups(names) {
11392
+ return GRID_ICON_GROUP_RULES.map((rule, i) => ({
11393
+ label: rule.label,
11394
+ names: names.filter((n) => GRID_ICON_GROUP_RULES.findIndex((c) => c.match(n)) === i)
11395
+ })).filter((g) => g.names.length);
11396
+ }
11426
11397
  var GRID_API_UNSETTABLE = /* @__PURE__ */ new Set([
11427
11398
  "data",
11428
11399
  "columns",
@@ -16000,17 +15971,18 @@ function blockMarkup(entity, schemaVar, typeName, block, resolve, ctx = { hasRec
16000
15971
  const idSafe = block.id.replace(/-/g, "_");
16001
15972
  const colVar = `columns_${idSafe}`;
16002
15973
  const emptyMsg = `No ${(entity.label ?? entity.name).toLowerCase()} yet.`;
15974
+ const gridIcons = gridIconParts(cfg, idSafe);
16003
15975
  if (cfg.scheduler) {
16004
15976
  const schDisp = relationDisplayFields(ctx.rawEntity ?? entity, resolve);
16005
15977
  const schAsText = (f) => schDisp.get(f) ?? f;
16006
15978
  return ` <div ${span}${cls}>
16007
- <SvGrid
15979
+ ${gridIcons.decls} <SvGrid
16008
15980
  data={allRows}
16009
15981
  columns={${colVar}}
16010
15982
  getRowId={(r) => String((r as Record<string, unknown>)[idField])}
16011
15983
  loading={!allRowsReady}
16012
15984
  scheduler={${schedulerConfigExpr(cfg.scheduler, typeName, schAsText)}}
16013
- containerHeight=${ctx.pane ? "\"100%\"" : `{${block.height ?? 640}}`}
15985
+ ${gridIcons.attr ? ` ${gridIcons.attr}\n` : ""} containerHeight=${ctx.pane ? "\"100%\"" : `{${block.height ?? 640}}`}
16014
15986
  />
16015
15987
  </div>`;
16016
15988
  }
@@ -16090,6 +16062,7 @@ function blockMarkup(entity, schemaVar, typeName, block, resolve, ctx = { hasRec
16090
16062
  if (apiBody.length === 1 && ctx.captureApi && !grouped) lines.push(`onApiReady={(a) => (${ctx.captureApi} = a)}`);
16091
16063
  else if (apiBody.length) lines.push(`onApiReady={(a) => { ${apiBody.join("; ")} }}`);
16092
16064
  lines.push(`containerHeight=${ctx.pane ? "\"100%\"" : `{${block.height ?? 360}}`}`);
16065
+ if (gridIcons.attr) lines.push(gridIcons.attr);
16093
16066
  if (cfg.props && Object.keys(cfg.props).length) {
16094
16067
  const emitted = new Set(lines.map((l) => l.split(/[=\s]/)[0]));
16095
16068
  for (const [k, v] of Object.entries(cfg.props)) {
@@ -16097,8 +16070,9 @@ function blockMarkup(entity, schemaVar, typeName, block, resolve, ctx = { hasRec
16097
16070
  lines.push(v === true ? k : `${k}={${JSON.stringify(v)}}`);
16098
16071
  }
16099
16072
  }
16073
+ const exportBar = gridHasExport(cfg) && ctx.captureApi ? exportToolbarMarkup(cfg.export, ctx.captureApi, entity.name) : "";
16100
16074
  return ` <div ${span}${cls}>
16101
- ${gridHasExport(cfg) && ctx.captureApi ? exportToolbarMarkup(cfg.export, ctx.captureApi, entity.name) : ""} <SvGrid
16075
+ ${gridIcons.decls}${exportBar} <SvGrid
16102
16076
  ${lines.join("\n ")}
16103
16077
  />
16104
16078
  </div>`;
@@ -16434,6 +16408,41 @@ function conditionalFormatsExpr(cfg) {
16434
16408
  }
16435
16409
  return entries.length ? `[${entries.join(", ")}]` : null;
16436
16410
  }
16411
+ /** Snippet declarations + the `icons={...}` attribute for a grid's no-code icon
16412
+ * overrides. SvGrid's `icons` prop takes a map of SNIPPETS, so each override has to
16413
+ * become a real snippet declared next to the grid; it cannot be a value the way
16414
+ * every other prop in the panel is. That is the whole reason icons get their own
16415
+ * config field instead of riding along in `props`, which is JSON.stringify'd.
16416
+ *
16417
+ * A value that reads as a tag is emitted as markup, so a user can paste an inline
16418
+ * `<svg>` or reference a component they imported in code-behind. Anything else goes
16419
+ * through an expression rather than as bare template text, so a glyph containing a
16420
+ * brace, a quote or an angle bracket cannot break the page it lands in. That last
16421
+ * case is not hypothetical: `<` and `>` are perfectly good pager arrows, which is
16422
+ * why this looks for a whole tag rather than just a leading bracket.
16423
+ *
16424
+ * Snippets are declared inside the block's own wrapper and prefixed with the block
16425
+ * id, so two grids on one screen can override the same icon differently. */
16426
+ function gridIconParts(cfg, idSafe) {
16427
+ const entries = Object.entries(cfg.icons ?? {}).filter(([name, v]) => name && typeof v === "string" && v.trim() !== "");
16428
+ if (!entries.length) return {
16429
+ decls: "",
16430
+ attr: ""
16431
+ };
16432
+ const decls = [];
16433
+ const pairs = [];
16434
+ for (const [name, glyph] of entries) {
16435
+ const snip = `icon_${idSafe}_${name.replace(/[^A-Za-z0-9]/g, "_")}`;
16436
+ const g = glyph.trim();
16437
+ const body = /^<[a-zA-Z][\s\S]*>$/.test(g) ? g : `{${jsStr(glyph)}}`;
16438
+ decls.push(` {#snippet ${snip}()}${body}{/snippet}`);
16439
+ pairs.push(`${jsStr(name)}: ${snip}`);
16440
+ }
16441
+ return {
16442
+ decls: decls.join("\n") + "\n",
16443
+ attr: `icons={{ ${pairs.join(", ")} }}`
16444
+ };
16445
+ }
16437
16446
  var fieldLabel = (f) => f.label ?? f.field;
16438
16447
  /** Stable per-block identifiers for a filter panel's state + apply function. */
16439
16448
  var facetNames = (block) => {
@@ -41586,4 +41595,4 @@ function checkLicenseKey(key, now = /* @__PURE__ */ new Date()) {
41586
41595
  };
41587
41596
  }
41588
41597
  //#endregion
41589
- export { CANVAS_COLS, CANVAS_GAP_PX, CANVAS_ROW_PX, CONTAINER_CHILD_KINDS, CONTAINER_DISPLAY_KINDS, CRUD_ACTIONS, DEFAULT_PORT, DRIVER_PACKAGE, FORM_SUBMIT, GRID_API_MEMBERS, GRID_CURATED_PROPS, GRID_EVENTS, GRID_PRESETS, MANAGED_END, MANAGED_START, ON_LOAD, PANE_LAYOUTS, STANDARD_UI_EVENTS, TAB_CHILD_KINDS, TRIGGER_EVENTS, UI_COMPONENT_REGISTRY, UserError, addAccordionBlock, addAccordionComponent, addAccordionSection, addBlock, addBlockAt, addComponentBlock, addCrudSuite, addEntity, addFormSection, addFreestandingScreen, addHandlerStep, addScreen, addScreenAction, addScreenFromTemplate, addStateVar, addTab, addTabBlock, addTabComponent, applyGridPreset, blockClassName, blockColumns, blockPalette, blockStyleCss, buildCanvasLayout, buildConnectionString, buildCopilotMessages, buildDockLayout, buildStudioBugReport, canvasOpts, canvasRectOf, changeSlot, checkLicenseKey, clickSlot, compileCondition, compileHandlerSteps, compileStep, compileTriggerStep, compileTriggerSteps, compileValue, componentHandleMembers, componentHandleName, componentHasBindings, countTableRows, createProject, crudAppFromSchemas, crudSuiteScreens, csvToEntity, ctxAmbientDts, ctxCompletions, dashScreen, defaultBlockConfig, defaultEntitySource, defaultScreenFor, defaultStudioTheme, deployCommands, detailScreen, detectDelimiter, disableScreenCode, dockOpts, dockPaneIds, dockPaneTitleOf, duplicateBlock, duplicateScreen, emitEntityModules, emitStudioApp, emitStudioAppBundle, emitStudioFragment, emitStudioProject, enableScreenCode, entityDataSource, entityOf, entityScreenPage, eventSlot, flattenBlocks, formControlSettings, formControlsFor, formPlan, formScreen, generateRows, generateValue, getLiveDataSample, getSampleApp, getStarterDataset, getStudioTheme, gridApiSettableProps, gridColumns, gridConfig, gridOpts, gridPresetLabel, gridPropSurface, inferType, insertBlock, introspectDatabase, introspectDrizzle, introspectDrizzleAll, introspectJson, introspectOpenApi, introspectPrisma, introspectPrismaAll, isDarkTheme, isFieldHidden, isFileDialect, isPaneLayout, isProjectValid, isTenantScoped, isUserError, linkRelationLabels, listDatabaseTables, listScreen, liveDataSamples, mapSqlType, mergeBlockStyle, mergeManaged, missingEnvKeys, moveBlock, moveFormField, moveFormFields, moveFormSection, moveHandlerStep, parseConnectionString, parseCsv, parseProject, parseSelection, pickLabelField, prepareEntities, probeConnection, projectFromModelText, reconcileDock, redactConnectionString, refineField, refineFields, removeAccordionBlock, removeAccordionSection, removeBlock, removeEntity, removeFormSection, removeScreen, removeScreenAction, removeStateVar, removeTab, removeTabBlock, renameAccordionSection, renameTab, reorderBlock, reorderScreen, reseedScreenDock, resolveDeployTarget, resolveIdField, resolveSchema, resolveSchemas, resolveThemeTokens, resolveThemeTokensFor, roleCanAction, roleCanScreen, rowSelectSlot, runStudioAdd, runStudioAddApp, runStudioInit, runtimeDeps, sampleApps, sanitizeClassName, sanitizeProject, sanitizeStudioProject, scaffold, scaffoldApp, schemaToColumns, schemaToFormFields, screenDataset, screenFromTemplate, screenHandles, screenLayoutOf, seedUsers, serializeProject, setAccordionMultiple, setAuth, setCanvasRect, setComponentBinding, setComponentName, setDataLayer, setDataSource, setDeployTarget, setDockPaneTitle, setEntityDataSource, setEntityForm, setFieldConditions, setFieldHidden, setFieldInput, setFormColumns, setHandlerBody, setHandlerSteps, setJob, setLayoutOpts, setScreenDock, setScreenHandlersSource, setScreenLayout, setScreenRenderGrid, setScreenRenderMode, setShell, setTenancy, setTheme, setThemePreset, setTrigger, skipUserOwned, splitOpts, ssrEligible, ssrScreenShape, stackOpts, starterDatasets, starterProject, stateInitExpr, stateTsType, statusPills, stepsToCode, studioDeployInfo, studioThemes, suggestFormSections, summarizeVerify, syncDockPanes, tenantField, themeStyleString, triggersOf, uiComponentSpec, updateBlock, updateEntity, updateEntityField, updateFormSection, updateHandlerStep, updateScreen, updateStateVar, validateProject, verifyScaffold, withSsrDefaults };
41598
+ export { CANVAS_COLS, CANVAS_GAP_PX, CANVAS_ROW_PX, CONTAINER_CHILD_KINDS, CONTAINER_DISPLAY_KINDS, CRUD_ACTIONS, DEFAULT_PORT, DRIVER_PACKAGE, FORM_SUBMIT, GRID_API_MEMBERS, GRID_CURATED_PROPS, GRID_EVENTS, GRID_PRESETS, MANAGED_END, MANAGED_START, ON_LOAD, PANE_LAYOUTS, STANDARD_UI_EVENTS, TAB_CHILD_KINDS, TRIGGER_EVENTS, UI_COMPONENT_REGISTRY, UserError, addAccordionBlock, addAccordionComponent, addAccordionSection, addBlock, addBlockAt, addComponentBlock, addCrudSuite, addEntity, addFormSection, addFreestandingScreen, addHandlerStep, addScreen, addScreenAction, addScreenFromTemplate, addStateVar, addTab, addTabBlock, addTabComponent, applyGridPreset, blockClassName, blockColumns, blockPalette, blockStyleCss, buildCanvasLayout, buildConnectionString, buildCopilotMessages, buildDockLayout, buildStudioBugReport, canvasOpts, canvasRectOf, changeSlot, checkLicenseKey, clickSlot, compileCondition, compileHandlerSteps, compileStep, compileTriggerStep, compileTriggerSteps, compileValue, componentHandleMembers, componentHandleName, componentHasBindings, countTableRows, createProject, crudAppFromSchemas, crudSuiteScreens, csvToEntity, ctxAmbientDts, ctxCompletions, dashScreen, defaultBlockConfig, defaultEntitySource, defaultScreenFor, defaultStudioTheme, deployCommands, detailScreen, detectDelimiter, disableScreenCode, dockOpts, dockPaneIds, dockPaneTitleOf, duplicateBlock, duplicateScreen, emitEntityModules, emitStudioApp, emitStudioAppBundle, emitStudioFragment, emitStudioProject, enableScreenCode, entityDataSource, entityOf, entityScreenPage, eventSlot, flattenBlocks, formControlSettings, formControlsFor, formPlan, formScreen, generateRows, generateValue, getLiveDataSample, getSampleApp, getStarterDataset, getStudioTheme, gridApiSettableProps, gridColumns, gridConfig, gridIconGroups, gridOpts, gridPresetLabel, gridPropSurface, inferType, insertBlock, introspectDatabase, introspectDrizzle, introspectDrizzleAll, introspectJson, introspectOpenApi, introspectPrisma, introspectPrismaAll, isDarkTheme, isFieldHidden, isFileDialect, isPaneLayout, isProjectValid, isTenantScoped, isUserError, linkRelationLabels, listDatabaseTables, listScreen, liveDataSamples, mapSqlType, mergeBlockStyle, mergeManaged, missingEnvKeys, moveBlock, moveFormField, moveFormFields, moveFormSection, moveHandlerStep, parseConnectionString, parseCsv, parseProject, parseSelection, pickLabelField, prepareEntities, probeConnection, projectFromModelText, reconcileDock, redactConnectionString, refineField, refineFields, removeAccordionBlock, removeAccordionSection, removeBlock, removeEntity, removeFormSection, removeScreen, removeScreenAction, removeStateVar, removeTab, removeTabBlock, renameAccordionSection, renameTab, reorderBlock, reorderScreen, reseedScreenDock, resolveDeployTarget, resolveIdField, resolveSchema, resolveSchemas, resolveThemeTokens, resolveThemeTokensFor, roleCanAction, roleCanScreen, rowSelectSlot, runStudioAdd, runStudioAddApp, runStudioInit, runtimeDeps, sampleApps, sanitizeClassName, sanitizeProject, sanitizeStudioProject, scaffold, scaffoldApp, schemaToColumns, schemaToFormFields, screenDataset, screenFromTemplate, screenHandles, screenLayoutOf, seedUsers, serializeProject, setAccordionMultiple, setAuth, setCanvasRect, setComponentBinding, setComponentName, setDataLayer, setDataSource, setDeployTarget, setDockPaneTitle, setEntityDataSource, setEntityForm, setFieldConditions, setFieldHidden, setFieldInput, setFormColumns, setHandlerBody, setHandlerSteps, setJob, setLayoutOpts, setScreenDock, setScreenHandlersSource, setScreenLayout, setScreenRenderGrid, setScreenRenderMode, setShell, setTenancy, setTheme, setThemePreset, setTrigger, skipUserOwned, splitOpts, ssrEligible, ssrScreenShape, stackOpts, starterDatasets, starterProject, stateInitExpr, stateTsType, statusPills, stepsToCode, studioDeployInfo, studioThemes, suggestFormSections, summarizeVerify, syncDockPanes, tenantField, themeStyleString, triggersOf, uiComponentSpec, updateBlock, updateEntity, updateEntityField, updateFormSection, updateHandlerStep, updateScreen, updateStateVar, validateProject, verifyScaffold, withSsrDefaults };
@@ -14,7 +14,7 @@
14
14
  * - values = each leaf row's aggregated cell for that series column.
15
15
  */
16
16
  import type { ChartSpec, ChartType, TableFeatures } from '@svgrid/grid';
17
- import type { PivotResult } from './pivot';
17
+ import type { PivotResult } from './pivot.js';
18
18
  export type PivotChartOptions = {
19
19
  /** Chart type. Default `'bar'`. */
20
20
  type?: ChartType;
@@ -7,7 +7,7 @@
7
7
  * normalisation + serialisation without instantiating the component.
8
8
  */
9
9
  import type { CellFormatConfig } from '@svgrid/grid';
10
- import type { PivotAggregatorId } from './pivot';
10
+ import type { PivotAggregatorId } from './pivot.js';
11
11
  /** One field the designer offers in its left-rail picker.
12
12
  * Dimensions land in Rows by default; measures land in Values. */
13
13
  export type PivotField<T extends Record<string, unknown> = Record<string, unknown>> = {
@@ -17,9 +17,9 @@
17
17
  * ```
18
18
  */
19
19
  import { registerPivotEngine } from '@svgrid/grid';
20
- import { isLicenseKeySet } from './license';
21
- import { emitUnlicensedNudge } from './watermark';
22
- import { createPivotModel } from './pivot';
20
+ import { isLicenseKeySet } from './license.js';
21
+ import { emitUnlicensedNudge } from './watermark.js';
22
+ import { createPivotModel } from './pivot.js';
23
23
  let enabled = false;
24
24
  // The grid's `PivotEngine` seam is generic over row type; `createPivotModel` is
25
25
  // the concrete implementation. Bridge them with a single boundary cast.
package/dist/print.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { RowData, TableFeatures, SvGridApi } from '@svgrid/grid';
2
- import { type ExportColumn, type ExportRowSource } from './export';
2
+ import { type ExportColumn, type ExportRowSource } from './export.js';
3
3
  import type { ConditionalFormat } from '@svgrid/grid/format';
4
4
  export type PrintOptions<TData> = {
5
5
  /** Title placed above the printed grid. Defaults to "Grid". */
package/dist/print.js CHANGED
@@ -1,7 +1,7 @@
1
- import { assertEnterpriseLicensed } from './license';
2
- import { buildLinkResolver, projectRows, resolveColumns, resolveRowSource, } from './export';
3
- import { buildPrintDocument } from './export-print';
4
- import { buildConditionalResolver } from './export-conditional';
1
+ import { assertEnterpriseLicensed } from './license.js';
2
+ import { buildLinkResolver, projectRows, resolveColumns, resolveRowSource, } from './export.js';
3
+ import { buildPrintDocument } from './export-print.js';
4
+ import { buildConditionalResolver } from './export-conditional.js';
5
5
  export async function printGrid(api, opts) {
6
6
  assertEnterpriseLicensed('Print');
7
7
  if (typeof window === 'undefined') {
@@ -12,11 +12,11 @@
12
12
  * - Wave C: non-working-time collapse + continuous zoom
13
13
  */
14
14
  import type { SchedulerConfig, SchedulerResource, TableFeatures, RowData } from '@svgrid/grid';
15
- import type { SchedulerDependency } from './scheduler-dependencies';
16
- import type { SchedulerAssignment } from './scheduler-assignments';
17
- import type { ColumnReducer } from './scheduler-summary';
18
- import type { ZoomLevel } from './scheduler-axis';
19
- import type { SchedulerResourceGroup } from './scheduler-resource-tree';
15
+ import type { SchedulerDependency } from './scheduler-dependencies.js';
16
+ import type { SchedulerAssignment } from './scheduler-assignments.js';
17
+ import type { ColumnReducer } from './scheduler-summary.js';
18
+ import type { ZoomLevel } from './scheduler-axis.js';
19
+ import type { SchedulerResourceGroup } from './scheduler-resource-tree.js';
20
20
  export type SchedulerProConfig<TFeatures extends TableFeatures = TableFeatures, TData extends RowData = RowData> = SchedulerConfig<TFeatures, TData> & {
21
21
  /**
22
22
  * Event dependency links (predecessor -> successor). `from` / `to` are row ids