@svgrid/enterprise 2.5.2 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (620) hide show
  1. package/dist/SvAlertRuleEditor.svelte.d.ts +13 -0
  2. package/dist/SvAlertsManager.svelte.d.ts +14 -0
  3. package/dist/SvAlertsPanel.svelte.d.ts +9 -0
  4. package/dist/SvAuthGate.svelte.d.ts +22 -0
  5. package/dist/SvBoard.svelte.d.ts +35 -0
  6. package/dist/SvExportMenu.svelte.d.ts +61 -0
  7. package/dist/SvExpressionEditor.svelte.d.ts +12 -0
  8. package/dist/SvFileInput.svelte.d.ts +20 -0
  9. package/dist/SvGridAlerts.svelte.d.ts +77 -0
  10. package/dist/SvGridBoard.svelte.d.ts +30 -0
  11. package/dist/SvGridEditPanel.svelte.d.ts +73 -0
  12. package/dist/SvGridMasterDetail.svelte.d.ts +49 -0
  13. package/dist/SvGridScheduler.svelte.d.ts +30 -0
  14. package/dist/SvImportDialog.svelte.d.ts +88 -0
  15. package/dist/SvLookupInput.svelte.d.ts +21 -0
  16. package/dist/SvPivotDesigner.svelte.d.ts +176 -0
  17. package/dist/SvRecordDetail.svelte.d.ts +58 -0
  18. package/dist/SvSchedule.svelte.d.ts +29 -0
  19. package/dist/SvSchemaChart.svelte.d.ts +61 -0
  20. package/dist/SvSchemaDashboard.svelte.d.ts +46 -0
  21. package/dist/alerts/alert-engine-attach.d.ts +79 -0
  22. package/dist/alerts/alert-engine-attach.js +106 -0
  23. package/dist/alerts/alert-engine.d.ts +42 -0
  24. package/dist/alerts/alert-engine.js +196 -0
  25. package/dist/alerts/alert-formats.d.ts +26 -0
  26. package/dist/alerts/alert-formats.js +58 -0
  27. package/dist/alerts/alert-observer.d.ts +54 -0
  28. package/dist/alerts/alert-observer.js +156 -0
  29. package/dist/alerts/alert-scheduler.d.ts +30 -0
  30. package/dist/alerts/alert-scheduler.js +54 -0
  31. package/dist/alerts/alert-storage.d.ts +31 -0
  32. package/dist/alerts/alert-storage.js +92 -0
  33. package/dist/alerts/alert-store.svelte.d.ts +24 -0
  34. package/dist/alerts/alert-store.svelte.js +69 -0
  35. package/dist/alerts/alert-types.d.ts +86 -0
  36. package/dist/alerts/alert-types.js +1 -0
  37. package/dist/alerts.d.ts +2 -0
  38. package/{src/alerts.ts → dist/alerts.js} +9 -9
  39. package/dist/board.d.ts +7 -0
  40. package/{src/board.ts → dist/board.js} +13 -14
  41. package/dist/cdn/svgrid-enterprise.svelte-external.js +2987 -2981
  42. package/dist/designer/assets/{index-CM5xvaOy.js → index-BF0UH638.js} +3 -3
  43. package/dist/designer/assets/{src-D-ET9Mmo.js → src-BPJruwB9.js} +184 -184
  44. package/dist/designer/index.html +2 -2
  45. package/dist/edit-panel.d.ts +105 -0
  46. package/dist/edit-panel.js +350 -0
  47. package/dist/export-conditional.d.ts +31 -0
  48. package/dist/export-conditional.js +65 -0
  49. package/dist/export-ooxml.d.ts +93 -0
  50. package/dist/export-ooxml.js +385 -0
  51. package/dist/export-pdf.d.ts +107 -0
  52. package/dist/export-pdf.js +144 -0
  53. package/dist/export-print.d.ts +55 -0
  54. package/dist/export-print.js +91 -0
  55. package/{src/export-serialize.ts → dist/export-serialize.d.ts} +11 -24
  56. package/dist/export-serialize.js +11 -0
  57. package/dist/export-xls.d.ts +26 -0
  58. package/dist/export-xls.js +157 -0
  59. package/dist/export.d.ts +323 -0
  60. package/dist/export.js +1021 -0
  61. package/dist/expressions/evaluate.d.ts +17 -0
  62. package/dist/expressions/evaluate.js +214 -0
  63. package/dist/expressions/expression-columns.d.ts +61 -0
  64. package/dist/expressions/expression-columns.js +72 -0
  65. package/dist/expressions/expression-types.d.ts +125 -0
  66. package/dist/expressions/expression-types.js +1 -0
  67. package/dist/expressions/parse.d.ts +25 -0
  68. package/dist/expressions/parse.js +537 -0
  69. package/dist/import.d.ts +232 -0
  70. package/dist/import.js +846 -0
  71. package/dist/index.d.ts +66 -0
  72. package/dist/index.js +91 -0
  73. package/dist/install.d.ts +70 -0
  74. package/dist/install.js +61 -0
  75. package/dist/license-core.d.ts +37 -0
  76. package/dist/license-core.js +81 -0
  77. package/dist/license.d.ts +30 -0
  78. package/dist/license.js +139 -0
  79. package/dist/master-detail.d.ts +23 -0
  80. package/dist/master-detail.js +35 -0
  81. package/dist/node/studio.js +1 -1
  82. package/dist/pivot-chart.d.ts +28 -0
  83. package/dist/pivot-chart.js +71 -0
  84. package/dist/pivot-designer.d.ts +69 -0
  85. package/dist/pivot-designer.js +38 -0
  86. package/dist/pivot-enable.d.ts +6 -0
  87. package/{src/pivot-enable.ts → dist/pivot-enable.js} +13 -18
  88. package/dist/pivot.d.ts +111 -0
  89. package/dist/pivot.js +353 -0
  90. package/dist/print.d.ts +33 -0
  91. package/dist/print.js +61 -0
  92. package/dist/revoked.d.ts +1 -0
  93. package/{src/revoked.ts → dist/revoked.js} +5 -6
  94. package/dist/scheduler-assignments.d.ts +64 -0
  95. package/dist/scheduler-assignments.js +92 -0
  96. package/dist/scheduler-axis.d.ts +81 -0
  97. package/dist/scheduler-axis.js +180 -0
  98. package/{src/scheduler-booking.ts → dist/scheduler-booking.d.ts} +10 -43
  99. package/dist/scheduler-booking.js +50 -0
  100. package/dist/scheduler-config.d.ts +177 -0
  101. package/dist/scheduler-config.js +1 -0
  102. package/dist/scheduler-dependencies.d.ts +89 -0
  103. package/dist/scheduler-dependencies.js +179 -0
  104. package/dist/scheduler-freebusy.d.ts +19 -0
  105. package/{src/scheduler-freebusy.ts → dist/scheduler-freebusy.js} +9 -19
  106. package/{src/scheduler-heatmap.ts → dist/scheduler-heatmap.d.ts} +12 -35
  107. package/dist/scheduler-heatmap.js +41 -0
  108. package/dist/scheduler-resource-tree.d.ts +48 -0
  109. package/dist/scheduler-resource-tree.js +78 -0
  110. package/dist/scheduler-slots.d.ts +37 -0
  111. package/dist/scheduler-slots.js +80 -0
  112. package/dist/scheduler-summary.d.ts +41 -0
  113. package/dist/scheduler-summary.js +54 -0
  114. package/dist/scheduler.d.ts +7 -0
  115. package/{src/scheduler.ts → dist/scheduler.js} +13 -14
  116. package/dist/scheduling.d.ts +132 -0
  117. package/dist/scheduling.js +228 -0
  118. package/dist/schema-designer.d.ts +42 -0
  119. package/dist/schema-designer.js +117 -0
  120. package/dist/schema.d.ts +369 -0
  121. package/dist/schema.js +216 -0
  122. package/dist/smart-shim.d.ts +62 -0
  123. package/dist/smart-shim.js +34 -0
  124. package/dist/sources/aggregate.d.ts +43 -0
  125. package/dist/sources/aggregate.js +60 -0
  126. package/dist/sources/auth-supabase.d.ts +69 -0
  127. package/dist/sources/auth-supabase.js +39 -0
  128. package/dist/sources/dashboard.d.ts +65 -0
  129. package/dist/sources/dashboard.js +95 -0
  130. package/dist/sources/field-inference.d.ts +23 -0
  131. package/dist/sources/field-inference.js +52 -0
  132. package/dist/sources/filters.d.ts +35 -0
  133. package/dist/sources/filters.js +52 -0
  134. package/dist/sources/index.d.ts +18 -0
  135. package/dist/sources/index.js +18 -0
  136. package/dist/sources/introspect-supabase.d.ts +30 -0
  137. package/dist/sources/introspect-supabase.js +134 -0
  138. package/dist/sources/realtime-supabase.d.ts +37 -0
  139. package/dist/sources/realtime-supabase.js +52 -0
  140. package/dist/sources/relation-lookup.d.ts +50 -0
  141. package/dist/sources/relation-lookup.js +77 -0
  142. package/dist/sources/rest-adapters.d.ts +48 -0
  143. package/dist/sources/rest-adapters.js +85 -0
  144. package/dist/sources/rest.d.ts +38 -0
  145. package/dist/sources/rest.js +86 -0
  146. package/dist/sources/schema-from-columns.d.ts +37 -0
  147. package/dist/sources/schema-from-columns.js +48 -0
  148. package/dist/sources/supabase.d.ts +33 -0
  149. package/dist/sources/supabase.js +74 -0
  150. package/dist/sources/with-entity-rules.d.ts +25 -0
  151. package/dist/sources/with-entity-rules.js +47 -0
  152. package/dist/sources/with-relation-labels.d.ts +26 -0
  153. package/dist/sources/with-relation-labels.js +38 -0
  154. package/dist/staged-editing.d.ts +85 -0
  155. package/dist/staged-editing.js +0 -0
  156. package/dist/studio/bug-report.d.ts +61 -0
  157. package/dist/studio/bug-report.js +126 -0
  158. package/dist/studio/cli.d.ts +56 -0
  159. package/dist/studio/cli.js +70 -0
  160. package/dist/studio/copilot-core.d.ts +22 -0
  161. package/{src/studio/copilot-core.ts → dist/studio/copilot-core.js} +34 -38
  162. package/dist/studio/csv.d.ts +36 -0
  163. package/dist/studio/csv.js +173 -0
  164. package/dist/studio/db-connect-string.d.ts +45 -0
  165. package/dist/studio/db-connect-string.js +113 -0
  166. package/dist/studio/deploy-cli.d.ts +35 -0
  167. package/dist/studio/deploy-cli.js +81 -0
  168. package/dist/studio/emit-project.d.ts +77 -0
  169. package/dist/studio/emit-project.js +5389 -0
  170. package/dist/studio/emit-schema.d.ts +110 -0
  171. package/dist/studio/emit-schema.js +1128 -0
  172. package/dist/studio/index.d.ts +35 -0
  173. package/dist/studio/index.js +38 -0
  174. package/dist/studio/init-flow.d.ts +58 -0
  175. package/dist/studio/init-flow.js +451 -0
  176. package/dist/studio/introspect-db.d.ts +47 -0
  177. package/dist/studio/introspect-db.js +255 -0
  178. package/dist/studio/introspect-openapi.d.ts +19 -0
  179. package/dist/studio/introspect-openapi.js +244 -0
  180. package/dist/studio/introspect-prisma.d.ts +25 -0
  181. package/dist/studio/introspect-prisma.js +164 -0
  182. package/dist/studio/introspect.d.ts +35 -0
  183. package/dist/studio/introspect.js +306 -0
  184. package/dist/studio/project.d.ts +1327 -0
  185. package/dist/studio/project.js +1798 -0
  186. package/dist/studio/sample-data.d.ts +19 -0
  187. package/dist/studio/sample-data.js +207 -0
  188. package/dist/studio/samples/ats.d.ts +2 -0
  189. package/dist/studio/samples/ats.js +194 -0
  190. package/dist/studio/samples/clinic.d.ts +2 -0
  191. package/dist/studio/samples/clinic.js +171 -0
  192. package/dist/studio/samples/crm.d.ts +2 -0
  193. package/dist/studio/samples/crm.js +280 -0
  194. package/dist/studio/samples/datasets.d.ts +38 -0
  195. package/dist/studio/samples/datasets.js +296 -0
  196. package/dist/studio/samples/ecommerce.d.ts +2 -0
  197. package/dist/studio/samples/ecommerce.js +178 -0
  198. package/dist/studio/samples/events.d.ts +2 -0
  199. package/dist/studio/samples/events.js +192 -0
  200. package/dist/studio/samples/fleet.d.ts +2 -0
  201. package/dist/studio/samples/fleet.js +203 -0
  202. package/dist/studio/samples/gym.d.ts +2 -0
  203. package/dist/studio/samples/gym.js +205 -0
  204. package/dist/studio/samples/hr.d.ts +2 -0
  205. package/dist/studio/samples/hr.js +186 -0
  206. package/dist/studio/samples/index.d.ts +13 -0
  207. package/dist/studio/samples/index.js +44 -0
  208. package/dist/studio/samples/insurance.d.ts +2 -0
  209. package/dist/studio/samples/insurance.js +220 -0
  210. package/dist/studio/samples/inventory.d.ts +2 -0
  211. package/dist/studio/samples/inventory.js +204 -0
  212. package/dist/studio/samples/invoicing.d.ts +2 -0
  213. package/dist/studio/samples/invoicing.js +154 -0
  214. package/dist/studio/samples/library.d.ts +2 -0
  215. package/dist/studio/samples/library.js +171 -0
  216. package/dist/studio/samples/live-data.d.ts +5 -0
  217. package/dist/studio/samples/live-data.js +261 -0
  218. package/dist/studio/samples/projects.d.ts +2 -0
  219. package/dist/studio/samples/projects.js +203 -0
  220. package/dist/studio/samples/realestate.d.ts +2 -0
  221. package/dist/studio/samples/realestate.js +187 -0
  222. package/dist/studio/samples/restaurant.d.ts +2 -0
  223. package/dist/studio/samples/restaurant.js +180 -0
  224. package/dist/studio/samples/school.d.ts +2 -0
  225. package/dist/studio/samples/school.js +188 -0
  226. package/dist/studio/samples/shared.d.ts +142 -0
  227. package/dist/studio/samples/shared.js +164 -0
  228. package/dist/studio/samples/starter.d.ts +4 -0
  229. package/dist/studio/samples/starter.js +237 -0
  230. package/dist/studio/samples/subscriptions.d.ts +2 -0
  231. package/dist/studio/samples/subscriptions.js +175 -0
  232. package/dist/studio/samples/support.d.ts +2 -0
  233. package/dist/studio/samples/support.js +209 -0
  234. package/dist/studio/scaffold-app.d.ts +22 -0
  235. package/{src/studio/scaffold-app.ts → dist/studio/scaffold-app.js} +45 -63
  236. package/dist/studio/scaffold.d.ts +63 -0
  237. package/dist/studio/scaffold.js +346 -0
  238. package/dist/studio/screen-suites.d.ts +193 -0
  239. package/dist/studio/screen-suites.js +297 -0
  240. package/dist/studio/themes.d.ts +34 -0
  241. package/dist/studio/themes.js +41 -0
  242. package/dist/studio/ui-components.d.ts +89 -0
  243. package/dist/studio/ui-components.generated.d.ts +29 -0
  244. package/dist/studio/ui-components.generated.js +7139 -0
  245. package/dist/studio/ui-components.js +673 -0
  246. package/dist/studio/user-error.d.ts +23 -0
  247. package/{src/studio/user-error.ts → dist/studio/user-error.js} +10 -13
  248. package/dist/studio/verify.d.ts +34 -0
  249. package/dist/studio/verify.js +47 -0
  250. package/dist/sveltekit/in-memory.d.ts +14 -0
  251. package/dist/sveltekit/in-memory.js +113 -0
  252. package/dist/sveltekit/index.d.ts +6 -0
  253. package/dist/sveltekit/index.js +5 -0
  254. package/dist/sveltekit/query-plan.d.ts +44 -0
  255. package/dist/sveltekit/query-plan.js +76 -0
  256. package/dist/sveltekit/sql-source.d.ts +47 -0
  257. package/dist/sveltekit/sql-source.js +106 -0
  258. package/dist/sveltekit/sql.d.ts +48 -0
  259. package/dist/sveltekit/sql.js +73 -0
  260. package/dist/sveltekit/transport.d.ts +209 -0
  261. package/dist/sveltekit/transport.js +219 -0
  262. package/{src/sveltekit/types.ts → dist/sveltekit/types.d.ts} +8 -11
  263. package/dist/sveltekit/types.js +1 -0
  264. package/dist/upgrade-prompt.d.ts +16 -0
  265. package/dist/upgrade-prompt.js +141 -0
  266. package/dist/version.d.ts +13 -0
  267. package/{src/version.ts → dist/version.js} +1 -1
  268. package/dist/watermark.d.ts +2 -0
  269. package/dist/watermark.js +146 -0
  270. package/package.json +26 -24
  271. package/src/SvBoard.dom.test.ts +0 -67
  272. package/src/SvGridAlerts.dom.test.ts +0 -113
  273. package/src/SvGridEditPanel.dom.test.ts +0 -320
  274. package/src/SvRecordDetail.dom.test.ts +0 -137
  275. package/src/SvSchedule.dom.test.ts +0 -57
  276. package/src/ai-export-pdf.dom.test.ts +0 -77
  277. package/src/ai-export-xlsx.dom.test.ts +0 -90
  278. package/src/ai-export.dom.test.ts +0 -114
  279. package/src/alerts/alert-engine-attach.ts +0 -165
  280. package/src/alerts/alert-engine.test.ts +0 -135
  281. package/src/alerts/alert-engine.ts +0 -260
  282. package/src/alerts/alert-formats.test.ts +0 -87
  283. package/src/alerts/alert-formats.ts +0 -77
  284. package/src/alerts/alert-observer.test.ts +0 -189
  285. package/src/alerts/alert-observer.ts +0 -208
  286. package/src/alerts/alert-scheduler.ts +0 -96
  287. package/src/alerts/alert-storage.test.ts +0 -54
  288. package/src/alerts/alert-storage.ts +0 -116
  289. package/src/alerts/alert-store.svelte.ts +0 -80
  290. package/src/alerts/alert-types.ts +0 -94
  291. package/src/board.dom.test.ts +0 -941
  292. package/src/edit-panel.test.ts +0 -322
  293. package/src/edit-panel.ts +0 -379
  294. package/src/export-conditional.test.ts +0 -60
  295. package/src/export-conditional.ts +0 -94
  296. package/src/export-ooxml.test.ts +0 -152
  297. package/src/export-ooxml.ts +0 -489
  298. package/src/export-pdf.test.ts +0 -138
  299. package/src/export-pdf.ts +0 -245
  300. package/src/export-print.test.ts +0 -66
  301. package/src/export-print.ts +0 -132
  302. package/src/export-serialize.test.ts +0 -56
  303. package/src/export-xls.ts +0 -199
  304. package/src/export-xlsx-roundtrip.test.ts +0 -120
  305. package/src/export-xlsx.test.ts +0 -150
  306. package/src/export.test.ts +0 -349
  307. package/src/export.ts +0 -1464
  308. package/src/expressions/evaluate.test.ts +0 -111
  309. package/src/expressions/evaluate.ts +0 -237
  310. package/src/expressions/expression-columns.ts +0 -133
  311. package/src/expressions/expression-types.ts +0 -84
  312. package/src/expressions/parse.test.ts +0 -106
  313. package/src/expressions/parse.ts +0 -610
  314. package/src/import-automap.test.ts +0 -131
  315. package/src/import-hardening.test.ts +0 -158
  316. package/src/import.test.ts +0 -415
  317. package/src/import.ts +0 -1044
  318. package/src/index.ts +0 -569
  319. package/src/install.ts +0 -154
  320. package/src/license-core.test.ts +0 -23
  321. package/src/license-core.ts +0 -107
  322. package/src/license-expiry.test.ts +0 -127
  323. package/src/license.ts +0 -137
  324. package/src/master-detail.test.ts +0 -61
  325. package/src/master-detail.ts +0 -42
  326. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/_metadata.json +0 -178
  327. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-ZrPsKxob.js +0 -3875
  328. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-ZrPsKxob.js.map +0 -1
  329. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-ACqvWGE2.js +0 -21
  330. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-ACqvWGE2.js.map +0 -1
  331. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-D3w5jt92.js +0 -1938
  332. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-D3w5jt92.js.map +0 -1
  333. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-CC2V3H0y.js +0 -205
  334. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-CC2V3H0y.js.map +0 -1
  335. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-BXP37tAa.js +0 -18
  336. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-BXP37tAa.js.map +0 -1
  337. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-DwubnU5b.js +0 -264
  338. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-DwubnU5b.js.map +0 -1
  339. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-hD7f6PUz.js +0 -697
  340. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-hD7f6PUz.js.map +0 -1
  341. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js +0 -134
  342. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js.map +0 -1
  343. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js +0 -55
  344. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js.map +0 -1
  345. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_attachments.js +0 -2
  346. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js +0 -46843
  347. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js.map +0 -1
  348. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js +0 -237
  349. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js.map +0 -1
  350. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_events.js +0 -2
  351. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js +0 -4
  352. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js.map +0 -1
  353. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_client.js +0 -7
  354. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js +0 -4
  355. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js.map +0 -1
  356. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js +0 -5
  357. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js.map +0 -1
  358. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js +0 -5
  359. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js.map +0 -1
  360. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js +0 -5
  361. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js.map +0 -1
  362. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_server.js +0 -6
  363. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js +0 -83
  364. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js.map +0 -1
  365. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js +0 -559
  366. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js.map +0 -1
  367. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js +0 -24
  368. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js.map +0 -1
  369. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js +0 -122
  370. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js.map +0 -1
  371. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_server.js +0 -2
  372. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js +0 -89
  373. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js.map +0 -1
  374. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js +0 -241
  375. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js.map +0 -1
  376. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DBx1SCN6.js +0 -4938
  377. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DBx1SCN6.js.map +0 -1
  378. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-gjfpSTFS.js +0 -495
  379. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-gjfpSTFS.js.map +0 -1
  380. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-DKoOKg8S.js +0 -190
  381. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-DKoOKg8S.js.map +0 -1
  382. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-C0MiR7eR.js +0 -8
  383. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-C0MiR7eR.js.map +0 -1
  384. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-B6Y7P0Q-.js +0 -138
  385. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-B6Y7P0Q-.js.map +0 -1
  386. package/src/pivot-chart.test.ts +0 -86
  387. package/src/pivot-chart.ts +0 -112
  388. package/src/pivot-designer.ts +0 -101
  389. package/src/pivot.test.ts +0 -335
  390. package/src/pivot.ts +0 -578
  391. package/src/print.ts +0 -107
  392. package/src/scheduler-assignments.test.ts +0 -97
  393. package/src/scheduler-assignments.ts +0 -134
  394. package/src/scheduler-axis.test.ts +0 -108
  395. package/src/scheduler-axis.ts +0 -238
  396. package/src/scheduler-booking.test.ts +0 -57
  397. package/src/scheduler-config.ts +0 -179
  398. package/src/scheduler-dependencies.test.ts +0 -155
  399. package/src/scheduler-dependencies.ts +0 -223
  400. package/src/scheduler-freebusy.test.ts +0 -41
  401. package/src/scheduler-heatmap.test.ts +0 -39
  402. package/src/scheduler-resource-tree.test.ts +0 -84
  403. package/src/scheduler-resource-tree.ts +0 -107
  404. package/src/scheduler-slots.test.ts +0 -53
  405. package/src/scheduler-slots.ts +0 -94
  406. package/src/scheduler-summary.test.ts +0 -47
  407. package/src/scheduler-summary.ts +0 -81
  408. package/src/scheduling.test.ts +0 -194
  409. package/src/scheduling.ts +0 -293
  410. package/src/schema-designer.test.ts +0 -121
  411. package/src/schema-designer.ts +0 -142
  412. package/src/schema.test.ts +0 -268
  413. package/src/schema.ts +0 -562
  414. package/src/smart-shim.ts +0 -107
  415. package/src/sources/aggregate.test.ts +0 -79
  416. package/src/sources/aggregate.ts +0 -102
  417. package/src/sources/auth-supabase.test.ts +0 -80
  418. package/src/sources/auth-supabase.ts +0 -87
  419. package/src/sources/dashboard.kpi.test.ts +0 -50
  420. package/src/sources/dashboard.test.ts +0 -61
  421. package/src/sources/dashboard.ts +0 -136
  422. package/src/sources/field-inference.test.ts +0 -60
  423. package/src/sources/field-inference.ts +0 -63
  424. package/src/sources/filters.test.ts +0 -58
  425. package/src/sources/filters.ts +0 -70
  426. package/src/sources/index.ts +0 -67
  427. package/src/sources/introspect-supabase.test.ts +0 -112
  428. package/src/sources/introspect-supabase.ts +0 -139
  429. package/src/sources/realtime-supabase.test.ts +0 -93
  430. package/src/sources/realtime-supabase.ts +0 -99
  431. package/src/sources/relation-lookup.test.ts +0 -99
  432. package/src/sources/relation-lookup.ts +0 -128
  433. package/src/sources/rest-adapters.test.ts +0 -95
  434. package/src/sources/rest-adapters.ts +0 -120
  435. package/src/sources/rest.test.ts +0 -104
  436. package/src/sources/rest.ts +0 -129
  437. package/src/sources/schema-from-columns.test.ts +0 -106
  438. package/src/sources/schema-from-columns.ts +0 -88
  439. package/src/sources/supabase.test.ts +0 -110
  440. package/src/sources/supabase.ts +0 -99
  441. package/src/sources/with-entity-rules.test.ts +0 -104
  442. package/src/sources/with-entity-rules.ts +0 -78
  443. package/src/sources/with-relation-labels.test.ts +0 -75
  444. package/src/sources/with-relation-labels.ts +0 -73
  445. package/src/staged-editing.ts +0 -0
  446. package/src/studio/bug-report.test.ts +0 -101
  447. package/src/studio/bug-report.ts +0 -165
  448. package/src/studio/cli.test.ts +0 -187
  449. package/src/studio/cli.ts +0 -117
  450. package/src/studio/copilot-core.test.ts +0 -45
  451. package/src/studio/csv.test.ts +0 -90
  452. package/src/studio/csv.ts +0 -165
  453. package/src/studio/db-connect-string.test.ts +0 -94
  454. package/src/studio/db-connect-string.ts +0 -128
  455. package/src/studio/deploy-cli.test.ts +0 -56
  456. package/src/studio/deploy-cli.ts +0 -100
  457. package/src/studio/emit-project.test.ts +0 -3324
  458. package/src/studio/emit-project.ts +0 -5377
  459. package/src/studio/emit-schema.test.ts +0 -111
  460. package/src/studio/emit-schema.ts +0 -1181
  461. package/src/studio/index.ts +0 -380
  462. package/src/studio/init-flow.test.ts +0 -514
  463. package/src/studio/init-flow.ts +0 -556
  464. package/src/studio/introspect-db.test.ts +0 -186
  465. package/src/studio/introspect-db.ts +0 -312
  466. package/src/studio/introspect-openapi.test.ts +0 -84
  467. package/src/studio/introspect-openapi.ts +0 -252
  468. package/src/studio/introspect-prisma.test.ts +0 -99
  469. package/src/studio/introspect-prisma.ts +0 -175
  470. package/src/studio/introspect.test.ts +0 -172
  471. package/src/studio/introspect.ts +0 -310
  472. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/_svelte_metadata.json +0 -1
  473. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/package.json +0 -3
  474. package/src/studio/pipeline.test.ts +0 -42
  475. package/src/studio/project-robust.test.ts +0 -157
  476. package/src/studio/project.test.ts +0 -929
  477. package/src/studio/project.ts +0 -2394
  478. package/src/studio/sample-data.test.ts +0 -58
  479. package/src/studio/sample-data.ts +0 -203
  480. package/src/studio/samples/ats.ts +0 -202
  481. package/src/studio/samples/clinic.ts +0 -179
  482. package/src/studio/samples/crm.ts +0 -291
  483. package/src/studio/samples/datasets.test.ts +0 -84
  484. package/src/studio/samples/datasets.ts +0 -340
  485. package/src/studio/samples/ecommerce.ts +0 -187
  486. package/src/studio/samples/events.ts +0 -201
  487. package/src/studio/samples/fleet.ts +0 -213
  488. package/src/studio/samples/gym.ts +0 -215
  489. package/src/studio/samples/hr.ts +0 -195
  490. package/src/studio/samples/index.ts +0 -55
  491. package/src/studio/samples/insurance.ts +0 -229
  492. package/src/studio/samples/inventory.ts +0 -213
  493. package/src/studio/samples/invoicing.ts +0 -162
  494. package/src/studio/samples/library.ts +0 -180
  495. package/src/studio/samples/live-data.test.ts +0 -99
  496. package/src/studio/samples/live-data.ts +0 -306
  497. package/src/studio/samples/projects.ts +0 -212
  498. package/src/studio/samples/realestate.ts +0 -196
  499. package/src/studio/samples/restaurant.ts +0 -189
  500. package/src/studio/samples/samples.test.ts +0 -304
  501. package/src/studio/samples/school.ts +0 -197
  502. package/src/studio/samples/seed-floor.test.ts +0 -25
  503. package/src/studio/samples/shared.ts +0 -237
  504. package/src/studio/samples/starter.ts +0 -251
  505. package/src/studio/samples/subscriptions.ts +0 -183
  506. package/src/studio/samples/support.ts +0 -216
  507. package/src/studio/scaffold-app.test.ts +0 -91
  508. package/src/studio/scaffold.test.ts +0 -192
  509. package/src/studio/scaffold.ts +0 -390
  510. package/src/studio/screen-suites.test.ts +0 -269
  511. package/src/studio/screen-suites.ts +0 -448
  512. package/src/studio/themes.ts +0 -62
  513. package/src/studio/ui-components-surface.test.ts +0 -185
  514. package/src/studio/ui-components.generated.ts +0 -7154
  515. package/src/studio/ui-components.ts +0 -742
  516. package/src/studio/verify.test.ts +0 -47
  517. package/src/studio/verify.ts +0 -79
  518. package/src/sveltekit/in-memory.test.ts +0 -104
  519. package/src/sveltekit/in-memory.ts +0 -129
  520. package/src/sveltekit/index.ts +0 -24
  521. package/src/sveltekit/query-plan.test.ts +0 -109
  522. package/src/sveltekit/query-plan.ts +0 -125
  523. package/src/sveltekit/sql-source.test.ts +0 -198
  524. package/src/sveltekit/sql-source.ts +0 -171
  525. package/src/sveltekit/sql.test.ts +0 -80
  526. package/src/sveltekit/sql.ts +0 -131
  527. package/src/sveltekit/transport-scope.test.ts +0 -125
  528. package/src/sveltekit/transport.test.ts +0 -201
  529. package/src/sveltekit/transport.ts +0 -373
  530. package/src/upgrade-prompt.test.ts +0 -71
  531. package/src/upgrade-prompt.ts +0 -162
  532. package/src/version.test.ts +0 -17
  533. package/src/watermark.test.ts +0 -97
  534. package/src/watermark.ts +0 -156
  535. /package/{src → dist}/SvAlertRuleEditor.svelte +0 -0
  536. /package/{src → dist}/SvAlertsManager.svelte +0 -0
  537. /package/{src → dist}/SvAlertsPanel.svelte +0 -0
  538. /package/{src → dist}/SvAuthGate.svelte +0 -0
  539. /package/{src → dist}/SvBoard.svelte +0 -0
  540. /package/{src → dist}/SvExportMenu.svelte +0 -0
  541. /package/{src → dist}/SvExpressionEditor.svelte +0 -0
  542. /package/{src → dist}/SvFileInput.svelte +0 -0
  543. /package/{src → dist}/SvGridAlerts.svelte +0 -0
  544. /package/{src → dist}/SvGridBoard.svelte +0 -0
  545. /package/{src → dist}/SvGridEditPanel.svelte +0 -0
  546. /package/{src → dist}/SvGridMasterDetail.svelte +0 -0
  547. /package/{src → dist}/SvGridScheduler.svelte +0 -0
  548. /package/{src → dist}/SvImportDialog.svelte +0 -0
  549. /package/{src → dist}/SvLookupInput.svelte +0 -0
  550. /package/{src → dist}/SvPivotDesigner.svelte +0 -0
  551. /package/{src → dist}/SvRecordDetail.svelte +0 -0
  552. /package/{src → dist}/SvSchedule.svelte +0 -0
  553. /package/{src → dist}/SvSchemaChart.svelte +0 -0
  554. /package/{src → dist}/SvSchemaDashboard.svelte +0 -0
  555. /package/{src → dist}/pdfmake-shims.d.ts +0 -0
  556. /package/{src → dist}/smart.export.d.ts +0 -0
  557. /package/{src → dist}/smart.export.js +0 -0
  558. /package/{src → dist}/studio/HANDLERS-DESIGN.md +0 -0
  559. /package/{src → dist/studio}/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/_svelte_metadata.json +0 -0
  560. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/_metadata.json +0 -0
  561. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-BOv1rBKp.js +0 -0
  562. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-BOv1rBKp.js.map +0 -0
  563. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-B9vgIdCd.js +0 -0
  564. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-B9vgIdCd.js.map +0 -0
  565. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-T1qbW_qD.js +0 -0
  566. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-T1qbW_qD.js.map +0 -0
  567. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-Bo11SfVK.js +0 -0
  568. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-Bo11SfVK.js.map +0 -0
  569. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-X7D4vfrZ.js +0 -0
  570. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-X7D4vfrZ.js.map +0 -0
  571. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-oyUje5i1.js +0 -0
  572. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-oyUje5i1.js.map +0 -0
  573. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-DeSQgSFm.js +0 -0
  574. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-DeSQgSFm.js.map +0 -0
  575. /package/{src → dist/studio}/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/package.json +0 -0
  576. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js +0 -0
  577. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js.map +0 -0
  578. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js +0 -0
  579. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js.map +0 -0
  580. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_attachments.js +0 -0
  581. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js +0 -0
  582. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js.map +0 -0
  583. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js +0 -0
  584. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js.map +0 -0
  585. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_events.js +0 -0
  586. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js +0 -0
  587. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js.map +0 -0
  588. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_client.js +0 -0
  589. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js +0 -0
  590. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js.map +0 -0
  591. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js +0 -0
  592. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js.map +0 -0
  593. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js +0 -0
  594. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js.map +0 -0
  595. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js +0 -0
  596. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js.map +0 -0
  597. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_server.js +0 -0
  598. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js +0 -0
  599. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js.map +0 -0
  600. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js +0 -0
  601. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js.map +0 -0
  602. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js +0 -0
  603. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js.map +0 -0
  604. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js +0 -0
  605. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js.map +0 -0
  606. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_server.js +0 -0
  607. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js +0 -0
  608. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js.map +0 -0
  609. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js +0 -0
  610. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js.map +0 -0
  611. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-BbWyXNk1.js +0 -0
  612. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-BbWyXNk1.js.map +0 -0
  613. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DI_fC7vt.js +0 -0
  614. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DI_fC7vt.js.map +0 -0
  615. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-Dyr3lQv9.js +0 -0
  616. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-Dyr3lQv9.js.map +0 -0
  617. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-_9FHH-LF.js +0 -0
  618. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-_9FHH-LF.js.map +0 -0
  619. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-CUbSPnyP.js +0 -0
  620. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-CUbSPnyP.js.map +0 -0
@@ -0,0 +1,66 @@
1
+ export { setLicenseKey, clearLicenseKey, getLicenseKey, isLicenseKeySet, hasValidLicense, assertEnterpriseLicensed, nudgeEnterprise, checkLicenseKey, isLicenseExpired, getLicenseExpiry, type LicenseInfo, type LicenseStatus, } from './license';
2
+ export { parseLicenseExpiry } from './license-core';
3
+ export { exportGrid, copyExportToClipboard, type ExportFormat, type ExportOptions, type ExportColumn, type ExportCellStyle, type ExportStyles, type ExportHeaderFooterLine, type ExportSheet, type ExportRowSource, type ExportProgress, type ExportResult, type ClipboardFormat, type ClipboardExportOptions, } from './export';
4
+ export { default as SvExportMenu } from './SvExportMenu.svelte';
5
+ export { buildPdfDocDefinition, type PdfExportOptions, type PdfPageSize } from './export-pdf';
6
+ export { printGrid, type PrintOptions } from './print';
7
+ export { importData, readImportMatrix, mapImportMatrix, mapImportMatrixAsync, autoMapColumns, inferImportColumnTypes, type ImportFormat, type ImportFieldType, type ImportOptions, type ImportResult, type ImportProgress, type ImportColumnMap, type ImportColumnTypes, type ImportGridColumn, type ImportRowError, type ImportValidator, } from './import';
8
+ export { default as SvImportDialog } from './SvImportDialog.svelte';
9
+ export { installEnterprise, type EnterpriseGridApi, type EnterpriseAIApi, type EnterprisePivotApi } from './install';
10
+ export { enableSchedulerView, SvGridScheduler } from './scheduler';
11
+ export { enableBoardView, SvGridBoard } from './board';
12
+ export { enablePivot } from './pivot-enable';
13
+ export type { SchedulerProConfig } from './scheduler-config';
14
+ export { buildDependencyGraph, topoOrder, hasCycle, requiredStart, cascade, violations, type DependencyType, type SchedulerDependency, type EventTimes, type DependencyGraph, type CascadeOptions, } from './scheduler-dependencies';
15
+ export { expandAssignments, resourceLoad, overallocations, assignedMinutes, type SchedulerAssignment, type Allocation, type Overallocation, } from './scheduler-assignments';
16
+ export { columnSummaries, sumReducer, countReducer, busyMinutesReducer, type ColumnReducer, type SummaryItem, } from './scheduler-summary';
17
+ export { buildAxis, timeToX, xToTime, resolveZoom, zoomPresets, type Axis, type AxisSegment, type AxisSegmentKind, type BuildAxisOptions, type ZoomLevel, type ZoomMajorUnit, } from './scheduler-axis';
18
+ export { buildResourceRows, visibleResourceIds, type SchedulerResourceGroup, type ResourceRow, } from './scheduler-resource-tree';
19
+ export { heatCells, heatPeak, type HeatCell } from './scheduler-heatmap';
20
+ export { respectsBuffer, withinDurationBounds, afterLead, type BusyEvent, type GapMin, } from './scheduler-booking';
21
+ export { availableSlots, mergeIntervals, subtractIntervals, type Interval, type Slot, type SlotOptions, } from './scheduler-slots';
22
+ export { mergeBusy, commonFree } from './scheduler-freebusy';
23
+ export { createStagedEditing, type StagedChange, type StagedEditingApi, type StagedEditingEvent, } from './staged-editing';
24
+ export { createScheduler, parseCron, cronMatches, cronMatchesParsed, isScheduleDue, nextRun, CRON_PRESETS, type Schedule, type Scheduler, type SchedulerOptions, } from './scheduling';
25
+ export { dismissUnlicensedNudge } from './watermark';
26
+ export { showUpgradePrompt, dismissUpgradePrompt, type EnterpriseFeatureLabel, } from './upgrade-prompt';
27
+ export { createPivotModel, pivotAggregators, filterCollapsedPivotRows, type PivotAggregator, type PivotAggregatorId, type PivotConfig, type PivotResult, type PivotRow, type PivotRowKind, type PivotValueConfig, } from './pivot';
28
+ export { titleCase, resolveIdField, schemaToColumns, schemaToFormFields, validateField, applyComputed, validateEntity, type EntitySchema, type EntityField, type EntityFieldType, type EntityHooks, type FormFieldDescriptor, type FormLayout, type FormSection, type StudioEditorType, type StandardSchemaV1, type StandardSchemaResult, type ValidationOp, type ValidationRuleSpec, } from './schema';
29
+ export { planQuery, coerce, createInMemoryDataSource, createKitDataSource, createKitHandlers, createSqlDataSource, planToSql, type QueryPlan, type PlanPredicate, type PlanOp, type KitDataSourceOptions, type KitHandlerOptions, type KitScope, type KitHandlers, type KitMessage, type SqlDialect, type SqlPlan, type SqlExecutor, type SqlDataSourceConfig, type WritableDataSource, } from './sveltekit';
30
+ export { createSupabaseDataSource, createRestDataSource, offsetLimitAdapter, dummyJsonAdapter, jsonServerAdapter, introspectSupabaseTable, listSupabaseTables, createSupabaseRealtime, createRelationLookup, createSupabaseAuth, aggregateRows, chartFieldsFromSchema, normalizeFilters, buildEntitySchema, pickLabelField, linkRelationLabels, type SupabaseDataSourceConfig, type SupabaseClientLike, type RestDataSourceConfig, type RestAdapter, type OffsetLimitOptions, type IntrospectSupabaseOptions, type IntrospectedColumn, type ColumnReference, type NormalizedFilter, type NormalizedPredicate, type SupabaseRealtimeConfig, type SupabaseRealtimeClientLike, type SupabaseRealtimeHandle, type RealtimeChannelLike, type RealtimeChange, type RelationLookup, type RelationLookupConfig, type RelationOption, type SupabaseAuthConfig, type SupabaseAuthController, type SupabaseAuthClientLike, type AuthState, type AuthUser, withEntityRules, withRelationLabels, reduceValue, kpiSeries, sparklinePoints, seriesDelta, formatKpiValue, dashboardFromSchema, type AggregateReduce, type AggregateRequest, type AggregateBucket, type AggregateSource, type DashboardSpec, type DashboardWidget, type KpiWidget, type ChartWidget, type RelationLabelConfig, } from './sources';
31
+ export { buildInitialValues, controlKind, editMode, evalValidationRules, fieldState, hasFieldConditions, rowId, stripHiddenValues, toSubmitValues, validateAll, visibleFormFields, type EditMode, type ControlKind, type FieldState, } from './edit-panel';
32
+ export { default as SvGridEditPanel } from './SvGridEditPanel.svelte';
33
+ export { default as SvLookupInput } from './SvLookupInput.svelte';
34
+ export { default as SvFileInput } from './SvFileInput.svelte';
35
+ export { default as SvAuthGate } from './SvAuthGate.svelte';
36
+ export { default as SvSchemaChart } from './SvSchemaChart.svelte';
37
+ export { default as SvSchemaDashboard } from './SvSchemaDashboard.svelte';
38
+ export { default as SvBoard } from './SvBoard.svelte';
39
+ export { default as SvSchedule } from './SvSchedule.svelte';
40
+ export { default as SvRecordDetail } from './SvRecordDetail.svelte';
41
+ export { FIELD_TYPES, blankField, addField, removeField, updateField, moveField, validateSchema, isSchemaValid, sampleRows, type SchemaIssue, type SchemaIssueLevel, } from './schema-designer';
42
+ export { createProject, defaultScreenFor, emitStudioProject, emitStudioAppBundle, emitStudioApp, sampleApps, getSampleApp, starterProject, liveDataSamples, getLiveDataSample, type SampleApp, starterDatasets, getStarterDataset, type StarterDataset, crudSuiteScreens, addCrudSuite, crudAppFromSchemas, type CrudScreenKind, type CrudEditingMode, type CrudSuiteOptions, type CrudAppOptions, introspectJson, sanitizeStudioProject, buildStudioBugReport, type BugReport, type BugReportInput, addBlock, addBlockAt, removeBlock, moveBlock, reorderBlock, updateBlock, addScreen, removeScreen, updateScreen, duplicateScreen, reorderScreen, insertBlock, addEntity, removeEntity, updateEntity, setDataSource, defaultEntitySource, setEntityDataSource, entityDataSource, setTheme, setThemePreset, setShell, sanitizeProject, screenFromTemplate, addScreenFromTemplate, addFreestandingScreen, serializeProject, parseProject, blockPalette, validateProject, isProjectValid, entityOf, studioThemes, defaultStudioTheme, getStudioTheme, resolveThemeTokens, isDarkTheme, themeStyleString, type StudioTheme, type StudioProject, type Screen, type ScreenNav, type Block, type BlockKind, type BlockConfig, type GridConfig, type GridEditing, type GridDensity, type GridAlign, type PagerPosition, type GridColumnConfig, type ChartConfig, type KpiConfig, type KpiFormat, type DashboardConfig, type MasterDetailConfig, type LookupConfig, type Reduce, type DataSourceKind, type EntityDataSource, type MemorySource, type RestSource, type SqlSource, type SupabaseSource, type RestMethod, type ParamLocation, type ParamType, type RequestParam, type SqlDialectKind, type ProjectTheme, type ShellConfig, type ShellStyle, type ScreenTemplate, type PaletteItem, type ProjectIssue, type GeneratedFile, } from './studio';
43
+ export { buildConnectionString, parseConnectionString, redactConnectionString, isFileDialect, DRIVER_PACKAGE, DEFAULT_PORT, countTableRows, probeConnection, type SqlConnectionParts, type TableRowCount, type SqlDialectName, } from './studio';
44
+ export { buildDisplayRows, isDetailRow, toggleExpanded, type DetailRow, } from './master-detail';
45
+ export { default as SvGridMasterDetail } from './SvGridMasterDetail.svelte';
46
+ export { default as SvPivotDesigner } from './SvPivotDesigner.svelte';
47
+ export { ALL_AGGREGATORS, AGG_LABEL, EMPTY_LAYOUT, defaultLayoutFor, type PivotField, type PivotValueChip, type PivotFilterChip, type PivotLayout, type PivotPreset, type Well, } from './pivot-designer';
48
+ export { pivotToChartSpec, type PivotChartOptions } from './pivot-chart';
49
+ export { evaluatePredicate, evaluateScalar, evaluateChange, BUILTIN_FUNCTION_NAMES, isBuiltinFunction, } from './expressions/evaluate';
50
+ export { parsePredicate, stringifyPredicate, stringifyScalar, validateExpression, collectColumnRefs, ExpressionParseError, } from './expressions/parse';
51
+ export { OPERATORS, operatorMeta, operatorsForType, isValueless, isSetOperator, isRangeOperator, columnById, resolveColumnRef, columnLabel, columnRefText, type ExprColumn, type ExprColumnType, type OperatorMeta, } from './expressions/expression-columns';
52
+ export type { ScalarExpr, PredicateExpr, ChangeExpr, ComparisonOp, ArithmeticOp, AggFn, EvalContext, ExprRow, } from './expressions/expression-types';
53
+ export { default as SvExpressionEditor } from './SvExpressionEditor.svelte';
54
+ export { enableAlerts } from './alerts';
55
+ export { createAlertEngine, renderTemplate, type AlertEngine, type AlertEngineOptions, type ValidateEditResult, } from './alerts/alert-engine';
56
+ export { attachAlertEngine, applyAlertEvents, type AlertAttachment, type AttachAlertOptions, type FlashTarget, } from './alerts/alert-engine-attach';
57
+ export { memoryAlertRules, localStorageAlertRules, createAlertRules, type AlertRulesStorage, type AlertRulesManager, } from './alerts/alert-storage';
58
+ export { createAlertObserver, type AlertObserver, type AlertObserverOptions, } from './alerts/alert-observer';
59
+ export { createAlertScheduler, type AlertScheduler, type AlertSchedulerMode, } from './alerts/alert-scheduler';
60
+ export { toConditionalFormats, rulesToConditionalFormats, type StylingContext } from './alerts/alert-formats';
61
+ export { alertStore } from './alerts/alert-store.svelte';
62
+ export type { AlertRule, AlertEvent, AlertTrigger, AlertAction, AlertActionKind, AlertActionStyle, AlertScope, AlertSeverity, } from './alerts/alert-types';
63
+ export { default as SvGridAlerts } from './SvGridAlerts.svelte';
64
+ export { default as SvAlertRuleEditor } from './SvAlertRuleEditor.svelte';
65
+ export { default as SvAlertsManager } from './SvAlertsManager.svelte';
66
+ export { default as SvAlertsPanel } from './SvAlertsPanel.svelte';
package/dist/index.js ADDED
@@ -0,0 +1,91 @@
1
+ export { setLicenseKey, clearLicenseKey, getLicenseKey, isLicenseKeySet, hasValidLicense, assertEnterpriseLicensed, nudgeEnterprise, checkLicenseKey,
2
+ // Trial expiry. The built-in card already appears on its own once a trial
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';
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';
11
+ export { default as SvImportDialog } from './SvImportDialog.svelte';
12
+ export { installEnterprise } from './install';
13
+ // Scheduler / calendar view (Pro). `enableSchedulerView()` registers the
14
+ // renderer so `<SvGrid scheduler={...}>` shows a Month/Week/Day/Agenda calendar.
15
+ // The pure model helpers + config types live in @svgrid/grid; import them from there.
16
+ export { enableSchedulerView, SvGridScheduler } from './scheduler';
17
+ // Kanban board view (Pro). `enableBoardView()` registers the renderer so
18
+ // `<SvGrid board={...}>` shows lanes of cards. Config types live in @svgrid/grid.
19
+ export { enableBoardView, SvGridBoard } from './board';
20
+ // In-grid pivot mode (Pro). `enablePivot()` registers the pivot engine so
21
+ // `<SvGrid pivot={...}>` renders a pivot table in place of the flat table.
22
+ export { enablePivot } from './pivot-enable';
23
+ export { buildDependencyGraph, topoOrder, hasCycle, requiredStart, cascade, violations, } from './scheduler-dependencies';
24
+ export { expandAssignments, resourceLoad, overallocations, assignedMinutes, } from './scheduler-assignments';
25
+ export { columnSummaries, sumReducer, countReducer, busyMinutesReducer, } from './scheduler-summary';
26
+ export { buildAxis, timeToX, xToTime, resolveZoom, zoomPresets, } from './scheduler-axis';
27
+ export { buildResourceRows, visibleResourceIds, } from './scheduler-resource-tree';
28
+ export { heatCells, heatPeak } from './scheduler-heatmap';
29
+ export { respectsBuffer, withinDurationBounds, afterLead, } from './scheduler-booking';
30
+ export { availableSlots, mergeIntervals, subtractIntervals, } from './scheduler-slots';
31
+ export { mergeBusy, commonFree } from './scheduler-freebusy';
32
+ export { createStagedEditing, } from './staged-editing';
33
+ export { createScheduler, parseCron, cronMatches, cronMatchesParsed, isScheduleDue, nextRun, CRON_PRESETS, } from './scheduling';
34
+ export { dismissUnlicensedNudge } from './watermark';
35
+ export { showUpgradePrompt, dismissUpgradePrompt, } from './upgrade-prompt';
36
+ export { createPivotModel, pivotAggregators, filterCollapsedPivotRows, } from './pivot';
37
+ export { titleCase, resolveIdField, schemaToColumns, schemaToFormFields, validateField, applyComputed, validateEntity, } from './schema';
38
+ export { planQuery, coerce, createInMemoryDataSource, createKitDataSource, createKitHandlers, createSqlDataSource, planToSql, } from './sveltekit';
39
+ 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';
40
+ export { buildInitialValues, controlKind, editMode, evalValidationRules, fieldState, hasFieldConditions, rowId, stripHiddenValues, toSubmitValues, validateAll, visibleFormFields, } from './edit-panel';
41
+ export { default as SvGridEditPanel } from './SvGridEditPanel.svelte';
42
+ export { default as SvLookupInput } from './SvLookupInput.svelte';
43
+ export { default as SvFileInput } from './SvFileInput.svelte';
44
+ export { default as SvAuthGate } from './SvAuthGate.svelte';
45
+ export { default as SvSchemaChart } from './SvSchemaChart.svelte';
46
+ export { default as SvSchemaDashboard } from './SvSchemaDashboard.svelte';
47
+ export { default as SvBoard } from './SvBoard.svelte';
48
+ export { default as SvSchedule } from './SvSchedule.svelte';
49
+ export { default as SvRecordDetail } from './SvRecordDetail.svelte';
50
+ export { FIELD_TYPES, blankField, addField, removeField, updateField, moveField, validateSchema, isSchemaValid, sampleRows, } from './schema-designer';
51
+ // NOTE: The visual designer components (SvSchemaDesigner, SvStudioDesigner) are
52
+ // the commercial "SvGrid Studio" seller. They live entirely in the PRIVATE
53
+ // website repo (website/src/lib/designer), NOT in this public package - they
54
+ // import the public API below. The Studio *codegen* below stays public because
55
+ // the MCP server depends on it.
56
+ // The Studio project model + codegen (also on the pure `@svgrid/enterprise/studio`
57
+ // subpath) - re-exported so the designer and its model come from one import.
58
+ 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, 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';
59
+ export { buildConnectionString, parseConnectionString, redactConnectionString, isFileDialect, DRIVER_PACKAGE, DEFAULT_PORT, countTableRows, probeConnection, } from './studio';
60
+ export { buildDisplayRows, isDetailRow, toggleExpanded, } from './master-detail';
61
+ export { default as SvGridMasterDetail } from './SvGridMasterDetail.svelte';
62
+ export { default as SvPivotDesigner } from './SvPivotDesigner.svelte';
63
+ export { ALL_AGGREGATORS, AGG_LABEL, EMPTY_LAYOUT, defaultLayoutFor, } from './pivot-designer';
64
+ // The AI helpers (setAIProvider, aiFilter, aiSmartFill, aiSummarize, aiClassify,
65
+ // aiExport, aiFindAnomalies, aiChart, enableAiCharting, ...) are now BUILT-IN and
66
+ // FREE in @svgrid/grid - import them from there. Enterprise only registers its
67
+ // export engine so AI-planned Excel/PDF exports can run (see install.ts).
68
+ export { pivotToChartSpec } from './pivot-chart';
69
+ // Expression / query language (Pro). One predicate/scalar/change model that
70
+ // powers alerts (and, in time, styled + calculated columns). Leaf comparisons
71
+ // reuse the grid's own `applyExcelFilter`, so operators match the filter row.
72
+ export { evaluatePredicate, evaluateScalar, evaluateChange, BUILTIN_FUNCTION_NAMES, isBuiltinFunction, } from './expressions/evaluate';
73
+ export { parsePredicate, stringifyPredicate, stringifyScalar, validateExpression, collectColumnRefs, ExpressionParseError, } from './expressions/parse';
74
+ export { OPERATORS, operatorMeta, operatorsForType, isValueless, isSetOperator, isRangeOperator, columnById, resolveColumnRef, columnLabel, columnRefText, } from './expressions/expression-columns';
75
+ export { default as SvExpressionEditor } from './SvExpressionEditor.svelte';
76
+ // Alert Rules engine (Pro). Declarative "when this holds / this moves -> toast /
77
+ // badge / highlight / flash / prevent-edit / log". Authored at runtime,
78
+ // persisted, shareable. Surfacing reuses the grid's toast + conditional-format
79
+ // engines; `<SvGridAlerts>` is the runtime overlay the consumer mounts.
80
+ export { enableAlerts } from './alerts';
81
+ export { createAlertEngine, renderTemplate, } from './alerts/alert-engine';
82
+ export { attachAlertEngine, applyAlertEvents, } from './alerts/alert-engine-attach';
83
+ export { memoryAlertRules, localStorageAlertRules, createAlertRules, } from './alerts/alert-storage';
84
+ export { createAlertObserver, } from './alerts/alert-observer';
85
+ export { createAlertScheduler, } from './alerts/alert-scheduler';
86
+ export { toConditionalFormats, rulesToConditionalFormats } from './alerts/alert-formats';
87
+ export { alertStore } from './alerts/alert-store.svelte';
88
+ export { default as SvGridAlerts } from './SvGridAlerts.svelte';
89
+ export { default as SvAlertRuleEditor } from './SvAlertRuleEditor.svelte';
90
+ export { default as SvAlertsManager } from './SvAlertsManager.svelte';
91
+ export { default as SvAlertsPanel } from './SvAlertsPanel.svelte';
@@ -0,0 +1,70 @@
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';
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';
7
+ export type EnterpriseAIApi<TData extends RowData> = {
8
+ /** Natural-language -> filter + sort plan (and optionally apply it). */
9
+ filter(query: string, opts?: AIFilterOptions): Promise<AIFilterResult>;
10
+ /** Propose values for empty cells based on a few worked examples. */
11
+ smartFill<TValue = unknown>(opts: AISmartFillOptions): Promise<AISmartFillResult<TValue>>;
12
+ /** One-paragraph + bullets summary of a row, selection, group, or the whole view. */
13
+ summarize(opts: AISummarizeOptions): Promise<AISummary>;
14
+ /** Classify free-text cells into one of a known set of labels. */
15
+ classify(opts: AIClassifyOptions): Promise<AIClassifyResult>;
16
+ /** Natural-language export: "export EU orders from Q2 as a grouped PDF". */
17
+ export(query: string, opts?: AIExportOptions): Promise<AIExportPlan>;
18
+ /** Scan a slice for anomalies / outliers, returning a structured list. */
19
+ findAnomalies(opts?: AIAnomalyOptions): Promise<AIAnomalyResult>;
20
+ /** Natural-language chart: "revenue by region, stacked by product". */
21
+ chart(query: string, opts?: AIChartOptions): Promise<AIChartPlan>;
22
+ readonly _rowType?: TData;
23
+ };
24
+ export type EnterprisePivotApi<TFeatures extends TableFeatures, TData extends RowData> = {
25
+ /**
26
+ * Build a pivot row/column model from the grid's current data. Returns
27
+ * `{ rows, columns }` you can feed to a separate `<SvGrid>` instance
28
+ * (the typical pattern - the source grid stays unmodified). Pure: no
29
+ * mutation, no DOM access.
30
+ */
31
+ build(config: PivotConfig<TData>): PivotResult<TFeatures>;
32
+ /**
33
+ * Build a pivot from an arbitrary array (not necessarily the grid's
34
+ * data). Useful for previewing a designer's config against a sample
35
+ * before committing.
36
+ */
37
+ buildFrom<TIn extends RowData>(data: ReadonlyArray<TIn>, config: PivotConfig<TIn>): PivotResult<TFeatures>;
38
+ };
39
+ export type EnterpriseGridApi<TFeatures extends TableFeatures, TData extends RowData> = SvGridApi<TFeatures, TData> & {
40
+ /** Export the current visible rows to the chosen format. Returns the built
41
+ * file ({@link ExportResult}) for the dependency-free paths (undefined for
42
+ * the vendored-writer xlsx paths, which download directly). */
43
+ exportData(opts: ExportOptions<TData>): Promise<ExportResult | undefined>;
44
+ /** Copy the grid (view / selection / all) to the clipboard in a native text
45
+ * format (default `tsv`, pastes into Excel / Sheets as columns). */
46
+ copyExport(opts?: ClipboardExportOptions<TData>): Promise<void>;
47
+ /** Open a printable view of the current visible rows in a new window. */
48
+ print(opts?: PrintOptions<TData>): Promise<void>;
49
+ /** Read an Excel / CSV / TSV / JSON file (or inline text) into typed
50
+ * rows. Caller decides whether to commit into the grid or preview
51
+ * the parsed result first via the returned `ImportResult`. */
52
+ importData(opts: ImportOptions<TData>): Promise<ImportResult<TData>>;
53
+ /** AI helpers (Pro). All calls route through a consumer-registered
54
+ * AIProvider via setAIProvider(); no model client is bundled. */
55
+ ai: EnterpriseAIApi<TData>;
56
+ /** Pivot table builder (Pro). Pure - returns `{ rows, columns }` you
57
+ * hand to a separate `<SvGrid>` instance. */
58
+ pivot: EnterprisePivotApi<TFeatures, TData>;
59
+ };
60
+ /**
61
+ * Augment a SvGridApi instance with Pro methods (`exportData`, `print`,
62
+ * `ai.*`). Mutates and returns the same object so existing references
63
+ * keep working.
64
+ *
65
+ * If no license key has been set, the Pro methods still function but the
66
+ * grid shows a small "unlicensed" watermark linking to jqwidgets.com and
67
+ * the console emits a one-time nudge. Revoked or malformed keys throw on
68
+ * first call.
69
+ */
70
+ export declare function installEnterprise<TFeatures extends TableFeatures, TData extends RowData>(api: SvGridApi<TFeatures, TData>): EnterpriseGridApi<TFeatures, TData>;
@@ -0,0 +1,61 @@
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';
6
+ // AI helpers are built-in + free in @svgrid/grid now; enterprise just wires them
7
+ // into the Pro API and registers its export engine so AI exports can write xlsx/pdf.
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 { enablePivot } from './pivot-enable';
13
+ /**
14
+ * Augment a SvGridApi instance with Pro methods (`exportData`, `print`,
15
+ * `ai.*`). Mutates and returns the same object so existing references
16
+ * keep working.
17
+ *
18
+ * If no license key has been set, the Pro methods still function but the
19
+ * grid shows a small "unlicensed" watermark linking to jqwidgets.com and
20
+ * the console emits a one-time nudge. Revoked or malformed keys throw on
21
+ * first call.
22
+ */
23
+ export function installEnterprise(api) {
24
+ const pro = api;
25
+ pro.exportData = (opts) => exportGrid(pro, opts);
26
+ pro.copyExport = (opts) => copyExportToClipboard(pro, opts);
27
+ pro.print = (opts) => printGrid(pro, opts);
28
+ pro.importData = (opts) => importData(pro, opts);
29
+ pro.ai = {
30
+ filter: (query, opts) => aiFilter(pro, query, opts),
31
+ smartFill: (opts) => aiSmartFill(pro, opts),
32
+ summarize: (opts) => aiSummarize(pro, opts),
33
+ classify: (opts) => aiClassify(pro, opts),
34
+ export: (query, opts) => aiExport(pro, query, opts),
35
+ findAnomalies: (opts) => aiFindAnomalies(pro, opts),
36
+ chart: (query, opts) => aiChart(pro, query, opts),
37
+ };
38
+ // Wire the built-in chart panel's AI button (no-op without the `charting` prop).
39
+ enableAiCharting(pro);
40
+ // Register the scheduler / calendar view (no-op without the `scheduler` prop).
41
+ enableSchedulerView();
42
+ // Register the Kanban board view (no-op without the `board` prop).
43
+ enableBoardView();
44
+ // Register the export engine so built-in AI exports (aiExport) can write the
45
+ // enterprise formats (xlsx / pdf / ...); free grids without it get the plan only.
46
+ registerExportProvider(exportGrid);
47
+ enablePivot();
48
+ pro.pivot = {
49
+ build: (config) => createPivotModel(pro.getData(), config),
50
+ buildFrom: (data, config) =>
51
+ // PivotConfig is variance-strict in TIn; the runtime call only needs
52
+ // the row shape to match config.rows / config.cols field names, which
53
+ // the caller-side generic enforces.
54
+ createPivotModel(data, config),
55
+ };
56
+ // Surface the soft-gate state at install time so the watermark appears
57
+ // alongside the grid, not just after the user clicks Export.
58
+ if (!isLicenseKeySet())
59
+ emitUnlicensedNudge();
60
+ return pro;
61
+ }
@@ -0,0 +1,37 @@
1
+ export declare const VALID_PREFIX = "SVENTERPRISE-";
2
+ export type LicenseStatus = 'unset' | 'invalid' | 'revoked' | 'dev' | 'eval' | 'licensed';
3
+ export type LicenseInfo = {
4
+ status: LicenseStatus;
5
+ /** True when the key permits use (dev / eval / licensed). */
6
+ valid: boolean;
7
+ /** Expiry encoded in the key, when it carries one. Undefined otherwise. */
8
+ expiresAt?: Date;
9
+ /**
10
+ * True once `expiresAt` has passed. Deliberately does NOT clear `valid`:
11
+ * an expired trial keeps working and the callers nudge instead. Turning a
12
+ * lapsed key into a hard stop would break a running app on a date boundary,
13
+ * which is exactly what a soft gate exists to avoid.
14
+ */
15
+ expired?: boolean;
16
+ };
17
+ /**
18
+ * Pull the expiry out of a key.
19
+ *
20
+ * Keys are `SVENTERPRISE[-KIND]-<SLUG>-<SEATS>-<DATE>-<RANDOM>`, so the date is
21
+ * always the second-to-last segment regardless of whether a KIND is present.
22
+ * Two widths are accepted:
23
+ *
24
+ * YYYYMM - subscription granularity; expires at the end of that month.
25
+ * YYYYMMDD - trial granularity; expires at the end of that day.
26
+ *
27
+ * The 6-digit form came first, so every key issued before day-precision trials
28
+ * existed still parses. Anything else (including the older keys whose slug sits
29
+ * in that position) yields null, which reads as "no expiry encoded".
30
+ *
31
+ * Boundaries are UTC so a key does not lapse at a different instant per
32
+ * timezone. Kept in sync with `tools/issue-license.mjs`.
33
+ */
34
+ export declare function parseLicenseExpiry(key: string | null | undefined): Date | null;
35
+ /** Classify a license key string. Pure and side-effect-free.
36
+ * `now` is injectable so expiry behaviour is testable without faking clocks. */
37
+ export declare function checkLicenseKey(key: string | null | undefined, now?: Date): LicenseInfo;
@@ -0,0 +1,81 @@
1
+ // Pure license classification - no DOM, no Svelte, no module state. Shared by
2
+ // the browser gate (license.ts, via setLicenseKey) AND the Node/MCP generator
3
+ // (which reads the key from the SVGRID_LICENSE_KEY env var). One definition of
4
+ // "what a valid key is," so the two contexts can never drift.
5
+ //
6
+ // This is deliberately NOT crypto (see license.ts). It classifies a key string;
7
+ // callers decide what to do with the result. The Studio is soft-gate only:
8
+ // unlicensed use still works, it just nudges.
9
+ import { REVOKED_KEYS } from './revoked.js';
10
+ export const VALID_PREFIX = 'SVENTERPRISE-';
11
+ /**
12
+ * Pull the expiry out of a key.
13
+ *
14
+ * Keys are `SVENTERPRISE[-KIND]-<SLUG>-<SEATS>-<DATE>-<RANDOM>`, so the date is
15
+ * always the second-to-last segment regardless of whether a KIND is present.
16
+ * Two widths are accepted:
17
+ *
18
+ * YYYYMM - subscription granularity; expires at the end of that month.
19
+ * YYYYMMDD - trial granularity; expires at the end of that day.
20
+ *
21
+ * The 6-digit form came first, so every key issued before day-precision trials
22
+ * existed still parses. Anything else (including the older keys whose slug sits
23
+ * in that position) yields null, which reads as "no expiry encoded".
24
+ *
25
+ * Boundaries are UTC so a key does not lapse at a different instant per
26
+ * timezone. Kept in sync with `tools/issue-license.mjs`.
27
+ */
28
+ export function parseLicenseExpiry(key) {
29
+ if (!key)
30
+ return null;
31
+ const segments = key.split('-');
32
+ if (segments.length < 3)
33
+ return null;
34
+ const stamp = segments[segments.length - 2];
35
+ if (stamp == null)
36
+ return null;
37
+ if (/^\d{6}$/.test(stamp)) {
38
+ const year = Number(stamp.slice(0, 4));
39
+ const month = Number(stamp.slice(4, 6));
40
+ if (month < 1 || month > 12)
41
+ return null;
42
+ // Date.UTC's month is 0-based, so passing the 1-based month lands on the
43
+ // first of the FOLLOWING month; one millisecond earlier is the last instant
44
+ // of the month the key names.
45
+ return new Date(Date.UTC(year, month, 1) - 1);
46
+ }
47
+ if (/^\d{8}$/.test(stamp)) {
48
+ const year = Number(stamp.slice(0, 4));
49
+ const month = Number(stamp.slice(4, 6));
50
+ const day = Number(stamp.slice(6, 8));
51
+ if (month < 1 || month > 12 || day < 1 || day > 31)
52
+ return null;
53
+ const end = new Date(Date.UTC(year, month - 1, day, 23, 59, 59, 999));
54
+ // Reject a date that rolled over (e.g. 20260231), which would otherwise
55
+ // silently grant a few extra days.
56
+ if (end.getUTCMonth() !== month - 1)
57
+ return null;
58
+ return end;
59
+ }
60
+ return null;
61
+ }
62
+ /** Classify a license key string. Pure and side-effect-free.
63
+ * `now` is injectable so expiry behaviour is testable without faking clocks. */
64
+ export function checkLicenseKey(key, now = new Date()) {
65
+ if (key == null || key === '')
66
+ return { status: 'unset', valid: false };
67
+ if (!key.startsWith(VALID_PREFIX))
68
+ return { status: 'invalid', valid: false };
69
+ if (REVOKED_KEYS.has(key))
70
+ return { status: 'revoked', valid: false };
71
+ const expiresAt = parseLicenseExpiry(key) ?? undefined;
72
+ // Left undefined rather than false when the key encodes no date, so callers
73
+ // can tell "not expired" apart from "no expiry to check".
74
+ const expired = expiresAt ? now.getTime() > expiresAt.getTime() : undefined;
75
+ const status = key.startsWith('SVENTERPRISE-DEV')
76
+ ? 'dev'
77
+ : key.startsWith('SVENTERPRISE-EVAL')
78
+ ? 'eval'
79
+ : 'licensed';
80
+ return { status, valid: true, expiresAt, expired };
81
+ }
@@ -0,0 +1,30 @@
1
+ import { type EnterpriseFeatureLabel } from './upgrade-prompt';
2
+ export { checkLicenseKey, type LicenseInfo, type LicenseStatus } from './license-core';
3
+ export declare function setLicenseKey(key: string): void;
4
+ export declare function clearLicenseKey(): void;
5
+ export declare function getLicenseKey(): string | null;
6
+ /** True if a key is set at all (regardless of validity). */
7
+ export declare function isLicenseKeySet(): boolean;
8
+ /**
9
+ * True if the current key passes every check: present, valid prefix, not
10
+ * revoked. Use this from callers that want to branch on license status
11
+ * (e.g. UI that hides Pro-only options when unlicensed).
12
+ */
13
+ export declare function hasValidLicense(): boolean;
14
+ /**
15
+ * True when the current key encoded an expiry that has passed. The feature set
16
+ * still runs - this exists so a host can show its own banner rather than rely
17
+ * on the built-in card. Returns false when the key carries no expiry.
18
+ */
19
+ export declare function isLicenseExpired(): boolean;
20
+ /** When the current key lapses, or null if it encodes no expiry. */
21
+ export declare function getLicenseExpiry(): Date | null;
22
+ /**
23
+ * Soft-gate a Pro surface: if the current key isn't valid, nudge (watermark +
24
+ * one-time console log + a moment-of-intent upgrade card naming `feature`) and
25
+ * return. NEVER throws and NEVER blocks - the feature always runs. This is the
26
+ * gate the Studio uses, and it's safe to call on the server (the nudges no-op
27
+ * without a DOM). Idempotent/self-throttling, so call it freely at chokepoints.
28
+ */
29
+ export declare function nudgeEnterprise(feature?: EnterpriseFeatureLabel): void;
30
+ export declare function assertEnterpriseLicensed(feature?: EnterpriseFeatureLabel): void;
@@ -0,0 +1,139 @@
1
+ // Polite license gate. Not crypto - anyone with devtools can extract the key
2
+ // from a deployed bundle. The point is to make commercial use require a
3
+ // transaction, not to defeat reverse engineering.
4
+ //
5
+ // Behavior matrix:
6
+ //
7
+ // currentKey state -> result
8
+ // ────────────────────────────────────────────────────────────────────
9
+ // null (no key set) -> soft-gate: watermark + console.log,
10
+ // feature still runs
11
+ // does not start with "SVENTERPRISE-" -> throws (programmer error)
12
+ // in REVOKED_KEYS -> throws (revoked / leaked / expired)
13
+ // starts with "SVENTERPRISE-DEV" or
14
+ // "SVENTERPRISE-EVAL" -> works; one-time console.info notice
15
+ // an EXPIRED dev/eval key -> still works, but stops looking
16
+ // licensed: watermark + a one-time
17
+ // console notice naming the expiry date
18
+ // + the upgrade card. Stays a soft gate
19
+ // so a trial ending cannot break a build.
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';
25
+ let currentKey = null;
26
+ let noticedDev = false;
27
+ let noticedExpired = false;
28
+ /** One-time console notice for a trial that has run out. Separate from the
29
+ * dev/eval notice: that one says "not for production", this one says the
30
+ * evaluation is over and names the date, which is the actionable part. */
31
+ function noticeExpired(info) {
32
+ if (noticedExpired)
33
+ return;
34
+ noticedExpired = true;
35
+ const on = info.expiresAt ? ` on ${info.expiresAt.toISOString().slice(0, 10)}` : '';
36
+ // eslint-disable-next-line no-console
37
+ console.info(`@svgrid/enterprise: your evaluation license expired${on}. Everything still ` +
38
+ 'works, but the watermark and upgrade notice stay until a license key is set. ' +
39
+ 'Contact sales@jqwidgets.com or see https://svgrid.com/pricing');
40
+ }
41
+ export function setLicenseKey(key) {
42
+ if (typeof key !== 'string' || key.length === 0) {
43
+ throw new Error('@svgrid/enterprise: setLicenseKey() requires a non-empty string');
44
+ }
45
+ currentKey = key;
46
+ noticedDev = false;
47
+ noticedExpired = false;
48
+ }
49
+ export function clearLicenseKey() {
50
+ currentKey = null;
51
+ noticedDev = false;
52
+ noticedExpired = false;
53
+ }
54
+ export function getLicenseKey() {
55
+ return currentKey;
56
+ }
57
+ /** True if a key is set at all (regardless of validity). */
58
+ export function isLicenseKeySet() {
59
+ return currentKey != null;
60
+ }
61
+ /**
62
+ * True if the current key passes every check: present, valid prefix, not
63
+ * revoked. Use this from callers that want to branch on license status
64
+ * (e.g. UI that hides Pro-only options when unlicensed).
65
+ */
66
+ export function hasValidLicense() {
67
+ return checkLicenseKey(currentKey).valid;
68
+ }
69
+ /**
70
+ * True when the current key encoded an expiry that has passed. The feature set
71
+ * still runs - this exists so a host can show its own banner rather than rely
72
+ * on the built-in card. Returns false when the key carries no expiry.
73
+ */
74
+ export function isLicenseExpired() {
75
+ return checkLicenseKey(currentKey).expired === true;
76
+ }
77
+ /** When the current key lapses, or null if it encodes no expiry. */
78
+ export function getLicenseExpiry() {
79
+ return checkLicenseKey(currentKey).expiresAt ?? null;
80
+ }
81
+ /**
82
+ * Soft-gate a Pro surface: if the current key isn't valid, nudge (watermark +
83
+ * one-time console log + a moment-of-intent upgrade card naming `feature`) and
84
+ * return. NEVER throws and NEVER blocks - the feature always runs. This is the
85
+ * gate the Studio uses, and it's safe to call on the server (the nudges no-op
86
+ * without a DOM). Idempotent/self-throttling, so call it freely at chokepoints.
87
+ */
88
+ export function nudgeEnterprise(feature) {
89
+ const info = checkLicenseKey(currentKey);
90
+ // `valid` stays true past a trial's expiry (the feature keeps running), so
91
+ // checking it alone would let a lapsed trial through silently forever.
92
+ if (info.valid && !info.expired)
93
+ return;
94
+ const lapsedTrial = info.valid && info.expired === true;
95
+ // A lapsed trial gets the same treatment as an unlicensed app - watermark,
96
+ // console notice and card. The evaluation is over; the app keeps running,
97
+ // but it stops looking licensed.
98
+ emitUnlicensedNudge();
99
+ if (lapsedTrial)
100
+ noticeExpired(info);
101
+ showUpgradePrompt(feature, { expired: lapsedTrial });
102
+ }
103
+ export function assertEnterpriseLicensed(feature) {
104
+ const info = checkLicenseKey(currentKey);
105
+ switch (info.status) {
106
+ case 'unset':
107
+ // Soft-gate: the feature still runs, but the user gets a watermark +
108
+ // a one-time console.log nudge directing them to pricing, plus a
109
+ // contextual moment-of-intent upgrade card naming the feature they
110
+ // just reached for.
111
+ emitUnlicensedNudge();
112
+ showUpgradePrompt(feature);
113
+ return;
114
+ case 'invalid':
115
+ throw new Error(`@svgrid/enterprise: invalid license key format (expected "${VALID_PREFIX}..." prefix).`);
116
+ case 'revoked':
117
+ throw new Error('@svgrid/enterprise: this license key has been revoked. ' +
118
+ 'Contact sales@jqwidgets.com for a replacement.');
119
+ case 'dev':
120
+ case 'eval':
121
+ if (info.expired) {
122
+ // The trial is over. Deliberately NOT a throw: the app keeps working,
123
+ // so the developer sees the nudges without their users hitting a broken
124
+ // build. Watermark + console notice + card, same as an unlicensed app.
125
+ emitUnlicensedNudge();
126
+ noticeExpired(info);
127
+ showUpgradePrompt(feature, { expired: true });
128
+ return;
129
+ }
130
+ if (!noticedDev) {
131
+ // eslint-disable-next-line no-console
132
+ console.info('@svgrid/enterprise: using a development / evaluation license. Not for production use.');
133
+ noticedDev = true;
134
+ }
135
+ return;
136
+ case 'licensed':
137
+ return;
138
+ }
139
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Master-detail logic. The testable core behind `SvGridMasterDetail.svelte`:
3
+ * track which parent rows are expanded and splice a synthetic "detail" row in
4
+ * after each expanded parent, so a single `<SvGrid>` renders both the master
5
+ * rows and a full-width detail region (via the grid's `isDetailRow` /
6
+ * `renderDetailRow`). Pure - no Svelte, no DOM.
7
+ */
8
+ /** A synthetic row inserted after an expanded parent; carries the parent it belongs to. */
9
+ export type DetailRow<TParent> = {
10
+ __svgridDetail: true;
11
+ parent: TParent;
12
+ parentId: string;
13
+ };
14
+ /** True for the synthetic detail rows produced by `buildDisplayRows`. */
15
+ export declare function isDetailRow(row: unknown): row is DetailRow<unknown>;
16
+ /** Toggle a parent id in the expanded set, returning a new set (immutable). */
17
+ export declare function toggleExpanded(expanded: ReadonlySet<string>, id: string): Set<string>;
18
+ /**
19
+ * Weave detail rows into the master rows: each expanded parent is followed by a
20
+ * `DetailRow` marker. Order is otherwise preserved, so the grid renders parents
21
+ * in place with their detail region directly beneath.
22
+ */
23
+ export declare function buildDisplayRows<TParent>(parents: ReadonlyArray<TParent>, expanded: ReadonlySet<string>, getRowId: (parent: TParent) => string): Array<TParent | DetailRow<TParent>>;