@svgrid/enterprise 2.5.3 → 2.6.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 (624) 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/{src → dist}/SvExpressionEditor.svelte +4 -1
  8. package/dist/SvExpressionEditor.svelte.d.ts +12 -0
  9. package/dist/SvFileInput.svelte.d.ts +20 -0
  10. package/dist/SvGridAlerts.svelte.d.ts +77 -0
  11. package/dist/SvGridBoard.svelte.d.ts +30 -0
  12. package/{src → dist}/SvGridEditPanel.svelte +173 -28
  13. package/dist/SvGridEditPanel.svelte.d.ts +75 -0
  14. package/dist/SvGridMasterDetail.svelte.d.ts +49 -0
  15. package/dist/SvGridScheduler.svelte.d.ts +30 -0
  16. package/dist/SvImportDialog.svelte.d.ts +88 -0
  17. package/dist/SvLookupInput.svelte.d.ts +21 -0
  18. package/dist/SvPivotDesigner.svelte.d.ts +176 -0
  19. package/dist/SvRecordDetail.svelte.d.ts +58 -0
  20. package/dist/SvSchedule.svelte.d.ts +29 -0
  21. package/dist/SvSchemaChart.svelte.d.ts +61 -0
  22. package/dist/SvSchemaDashboard.svelte.d.ts +46 -0
  23. package/dist/alerts/alert-engine-attach.d.ts +79 -0
  24. package/dist/alerts/alert-engine-attach.js +106 -0
  25. package/dist/alerts/alert-engine.d.ts +42 -0
  26. package/dist/alerts/alert-engine.js +196 -0
  27. package/dist/alerts/alert-formats.d.ts +26 -0
  28. package/dist/alerts/alert-formats.js +58 -0
  29. package/dist/alerts/alert-observer.d.ts +54 -0
  30. package/dist/alerts/alert-observer.js +156 -0
  31. package/dist/alerts/alert-scheduler.d.ts +30 -0
  32. package/dist/alerts/alert-scheduler.js +54 -0
  33. package/dist/alerts/alert-storage.d.ts +31 -0
  34. package/dist/alerts/alert-storage.js +92 -0
  35. package/dist/alerts/alert-store.svelte.d.ts +24 -0
  36. package/dist/alerts/alert-store.svelte.js +69 -0
  37. package/dist/alerts/alert-types.d.ts +86 -0
  38. package/dist/alerts/alert-types.js +1 -0
  39. package/dist/alerts.d.ts +2 -0
  40. package/{src/alerts.ts → dist/alerts.js} +9 -9
  41. package/dist/board.d.ts +7 -0
  42. package/{src/board.ts → dist/board.js} +13 -14
  43. package/dist/cdn/svgrid-enterprise.svelte-external.js +3220 -2607
  44. package/dist/designer/assets/index-BfzoL904.css +1 -0
  45. package/dist/designer/assets/{index-CBYU-KNn.js → index-CKdwDseq.js} +139 -139
  46. package/dist/designer/assets/src-DCKhP5Xy.css +1 -0
  47. package/dist/designer/assets/{src-i309BeJb.js → src-DLsSdh3J.js} +213 -193
  48. package/dist/designer/index.html +4 -4
  49. package/dist/edit-panel.d.ts +105 -0
  50. package/dist/edit-panel.js +350 -0
  51. package/dist/export-conditional.d.ts +31 -0
  52. package/dist/export-conditional.js +65 -0
  53. package/dist/export-ooxml.d.ts +93 -0
  54. package/dist/export-ooxml.js +385 -0
  55. package/dist/export-pdf.d.ts +107 -0
  56. package/dist/export-pdf.js +144 -0
  57. package/dist/export-print.d.ts +55 -0
  58. package/dist/export-print.js +91 -0
  59. package/{src/export-serialize.ts → dist/export-serialize.d.ts} +11 -24
  60. package/dist/export-serialize.js +11 -0
  61. package/dist/export-xls.d.ts +26 -0
  62. package/dist/export-xls.js +157 -0
  63. package/dist/export.d.ts +323 -0
  64. package/dist/export.js +1021 -0
  65. package/dist/expressions/evaluate.d.ts +17 -0
  66. package/dist/expressions/evaluate.js +214 -0
  67. package/dist/expressions/expression-columns.d.ts +61 -0
  68. package/dist/expressions/expression-columns.js +72 -0
  69. package/dist/expressions/expression-types.d.ts +125 -0
  70. package/dist/expressions/expression-types.js +1 -0
  71. package/dist/expressions/parse.d.ts +25 -0
  72. package/dist/expressions/parse.js +537 -0
  73. package/dist/import.d.ts +232 -0
  74. package/dist/import.js +846 -0
  75. package/dist/index.d.ts +66 -0
  76. package/dist/index.js +91 -0
  77. package/dist/install.d.ts +70 -0
  78. package/dist/install.js +61 -0
  79. package/dist/license-core.d.ts +37 -0
  80. package/dist/license-core.js +81 -0
  81. package/dist/license.d.ts +30 -0
  82. package/dist/license.js +139 -0
  83. package/dist/master-detail.d.ts +23 -0
  84. package/dist/master-detail.js +35 -0
  85. package/dist/node/studio.js +683 -13
  86. package/dist/pivot-chart.d.ts +28 -0
  87. package/dist/pivot-chart.js +71 -0
  88. package/dist/pivot-designer.d.ts +69 -0
  89. package/dist/pivot-designer.js +38 -0
  90. package/dist/pivot-enable.d.ts +6 -0
  91. package/{src/pivot-enable.ts → dist/pivot-enable.js} +13 -18
  92. package/dist/pivot.d.ts +111 -0
  93. package/dist/pivot.js +353 -0
  94. package/dist/print.d.ts +33 -0
  95. package/dist/print.js +61 -0
  96. package/dist/revoked.d.ts +1 -0
  97. package/{src/revoked.ts → dist/revoked.js} +5 -6
  98. package/dist/scheduler-assignments.d.ts +64 -0
  99. package/dist/scheduler-assignments.js +92 -0
  100. package/dist/scheduler-axis.d.ts +81 -0
  101. package/dist/scheduler-axis.js +180 -0
  102. package/{src/scheduler-booking.ts → dist/scheduler-booking.d.ts} +10 -43
  103. package/dist/scheduler-booking.js +50 -0
  104. package/dist/scheduler-config.d.ts +177 -0
  105. package/dist/scheduler-config.js +1 -0
  106. package/dist/scheduler-dependencies.d.ts +89 -0
  107. package/dist/scheduler-dependencies.js +179 -0
  108. package/dist/scheduler-freebusy.d.ts +19 -0
  109. package/{src/scheduler-freebusy.ts → dist/scheduler-freebusy.js} +9 -19
  110. package/{src/scheduler-heatmap.ts → dist/scheduler-heatmap.d.ts} +12 -35
  111. package/dist/scheduler-heatmap.js +41 -0
  112. package/dist/scheduler-resource-tree.d.ts +48 -0
  113. package/dist/scheduler-resource-tree.js +78 -0
  114. package/dist/scheduler-slots.d.ts +37 -0
  115. package/dist/scheduler-slots.js +80 -0
  116. package/dist/scheduler-summary.d.ts +41 -0
  117. package/dist/scheduler-summary.js +54 -0
  118. package/dist/scheduler.d.ts +7 -0
  119. package/{src/scheduler.ts → dist/scheduler.js} +13 -14
  120. package/dist/scheduling.d.ts +132 -0
  121. package/dist/scheduling.js +228 -0
  122. package/dist/schema-designer.d.ts +42 -0
  123. package/dist/schema-designer.js +117 -0
  124. package/dist/schema.d.ts +408 -0
  125. package/dist/schema.js +225 -0
  126. package/dist/smart-shim.d.ts +62 -0
  127. package/dist/smart-shim.js +34 -0
  128. package/dist/sources/aggregate.d.ts +43 -0
  129. package/dist/sources/aggregate.js +60 -0
  130. package/dist/sources/auth-supabase.d.ts +69 -0
  131. package/dist/sources/auth-supabase.js +39 -0
  132. package/dist/sources/dashboard.d.ts +65 -0
  133. package/dist/sources/dashboard.js +95 -0
  134. package/dist/sources/field-inference.d.ts +23 -0
  135. package/dist/sources/field-inference.js +52 -0
  136. package/dist/sources/filters.d.ts +35 -0
  137. package/dist/sources/filters.js +52 -0
  138. package/dist/sources/index.d.ts +18 -0
  139. package/dist/sources/index.js +18 -0
  140. package/dist/sources/introspect-supabase.d.ts +30 -0
  141. package/dist/sources/introspect-supabase.js +134 -0
  142. package/dist/sources/realtime-supabase.d.ts +37 -0
  143. package/dist/sources/realtime-supabase.js +52 -0
  144. package/dist/sources/relation-lookup.d.ts +50 -0
  145. package/dist/sources/relation-lookup.js +77 -0
  146. package/dist/sources/rest-adapters.d.ts +48 -0
  147. package/dist/sources/rest-adapters.js +85 -0
  148. package/dist/sources/rest.d.ts +38 -0
  149. package/dist/sources/rest.js +86 -0
  150. package/dist/sources/schema-from-columns.d.ts +37 -0
  151. package/dist/sources/schema-from-columns.js +48 -0
  152. package/dist/sources/supabase.d.ts +33 -0
  153. package/dist/sources/supabase.js +74 -0
  154. package/dist/sources/with-entity-rules.d.ts +25 -0
  155. package/dist/sources/with-entity-rules.js +47 -0
  156. package/dist/sources/with-relation-labels.d.ts +26 -0
  157. package/dist/sources/with-relation-labels.js +38 -0
  158. package/dist/staged-editing.d.ts +85 -0
  159. package/dist/staged-editing.js +0 -0
  160. package/dist/studio/bug-report.d.ts +61 -0
  161. package/dist/studio/bug-report.js +126 -0
  162. package/dist/studio/cli.d.ts +56 -0
  163. package/dist/studio/cli.js +70 -0
  164. package/dist/studio/copilot-core.d.ts +22 -0
  165. package/{src/studio/copilot-core.ts → dist/studio/copilot-core.js} +34 -38
  166. package/dist/studio/csv.d.ts +36 -0
  167. package/dist/studio/csv.js +173 -0
  168. package/dist/studio/db-connect-string.d.ts +45 -0
  169. package/dist/studio/db-connect-string.js +113 -0
  170. package/dist/studio/deploy-cli.d.ts +35 -0
  171. package/dist/studio/deploy-cli.js +81 -0
  172. package/dist/studio/emit-project.d.ts +77 -0
  173. package/dist/studio/emit-project.js +5463 -0
  174. package/dist/studio/emit-schema.d.ts +110 -0
  175. package/dist/studio/emit-schema.js +1128 -0
  176. package/dist/studio/index.d.ts +35 -0
  177. package/dist/studio/index.js +41 -0
  178. package/dist/studio/init-flow.d.ts +58 -0
  179. package/dist/studio/init-flow.js +451 -0
  180. package/dist/studio/introspect-db.d.ts +47 -0
  181. package/dist/studio/introspect-db.js +255 -0
  182. package/dist/studio/introspect-openapi.d.ts +19 -0
  183. package/dist/studio/introspect-openapi.js +244 -0
  184. package/dist/studio/introspect-prisma.d.ts +25 -0
  185. package/dist/studio/introspect-prisma.js +164 -0
  186. package/dist/studio/introspect.d.ts +35 -0
  187. package/dist/studio/introspect.js +306 -0
  188. package/dist/studio/project.d.ts +1448 -0
  189. package/dist/studio/project.js +2187 -0
  190. package/dist/studio/sample-data.d.ts +19 -0
  191. package/dist/studio/sample-data.js +207 -0
  192. package/dist/studio/samples/ats.d.ts +2 -0
  193. package/dist/studio/samples/ats.js +194 -0
  194. package/dist/studio/samples/clinic.d.ts +2 -0
  195. package/dist/studio/samples/clinic.js +171 -0
  196. package/dist/studio/samples/crm.d.ts +2 -0
  197. package/dist/studio/samples/crm.js +280 -0
  198. package/dist/studio/samples/datasets.d.ts +38 -0
  199. package/dist/studio/samples/datasets.js +296 -0
  200. package/dist/studio/samples/ecommerce.d.ts +2 -0
  201. package/dist/studio/samples/ecommerce.js +178 -0
  202. package/dist/studio/samples/events.d.ts +2 -0
  203. package/dist/studio/samples/events.js +192 -0
  204. package/dist/studio/samples/fleet.d.ts +2 -0
  205. package/dist/studio/samples/fleet.js +203 -0
  206. package/dist/studio/samples/gym.d.ts +2 -0
  207. package/dist/studio/samples/gym.js +205 -0
  208. package/dist/studio/samples/hr.d.ts +2 -0
  209. package/dist/studio/samples/hr.js +186 -0
  210. package/dist/studio/samples/index.d.ts +13 -0
  211. package/dist/studio/samples/index.js +44 -0
  212. package/dist/studio/samples/insurance.d.ts +2 -0
  213. package/dist/studio/samples/insurance.js +220 -0
  214. package/dist/studio/samples/inventory.d.ts +2 -0
  215. package/dist/studio/samples/inventory.js +204 -0
  216. package/dist/studio/samples/invoicing.d.ts +2 -0
  217. package/dist/studio/samples/invoicing.js +154 -0
  218. package/dist/studio/samples/library.d.ts +2 -0
  219. package/dist/studio/samples/library.js +171 -0
  220. package/dist/studio/samples/live-data.d.ts +5 -0
  221. package/dist/studio/samples/live-data.js +261 -0
  222. package/dist/studio/samples/projects.d.ts +2 -0
  223. package/dist/studio/samples/projects.js +203 -0
  224. package/dist/studio/samples/realestate.d.ts +2 -0
  225. package/dist/studio/samples/realestate.js +187 -0
  226. package/dist/studio/samples/restaurant.d.ts +2 -0
  227. package/dist/studio/samples/restaurant.js +180 -0
  228. package/dist/studio/samples/school.d.ts +2 -0
  229. package/dist/studio/samples/school.js +188 -0
  230. package/dist/studio/samples/shared.d.ts +142 -0
  231. package/dist/studio/samples/shared.js +164 -0
  232. package/dist/studio/samples/starter.d.ts +4 -0
  233. package/dist/studio/samples/starter.js +237 -0
  234. package/dist/studio/samples/subscriptions.d.ts +2 -0
  235. package/dist/studio/samples/subscriptions.js +175 -0
  236. package/dist/studio/samples/support.d.ts +2 -0
  237. package/dist/studio/samples/support.js +209 -0
  238. package/dist/studio/scaffold-app.d.ts +22 -0
  239. package/{src/studio/scaffold-app.ts → dist/studio/scaffold-app.js} +45 -63
  240. package/dist/studio/scaffold.d.ts +63 -0
  241. package/dist/studio/scaffold.js +346 -0
  242. package/dist/studio/screen-suites.d.ts +193 -0
  243. package/dist/studio/screen-suites.js +297 -0
  244. package/dist/studio/themes.d.ts +34 -0
  245. package/dist/studio/themes.js +41 -0
  246. package/dist/studio/ui-components.d.ts +89 -0
  247. package/dist/studio/ui-components.generated.d.ts +29 -0
  248. package/dist/studio/ui-components.generated.js +7319 -0
  249. package/dist/studio/ui-components.js +673 -0
  250. package/dist/studio/user-error.d.ts +23 -0
  251. package/{src/studio/user-error.ts → dist/studio/user-error.js} +10 -13
  252. package/dist/studio/verify.d.ts +34 -0
  253. package/dist/studio/verify.js +47 -0
  254. package/dist/sveltekit/in-memory.d.ts +14 -0
  255. package/dist/sveltekit/in-memory.js +113 -0
  256. package/dist/sveltekit/index.d.ts +6 -0
  257. package/dist/sveltekit/index.js +5 -0
  258. package/dist/sveltekit/query-plan.d.ts +44 -0
  259. package/dist/sveltekit/query-plan.js +76 -0
  260. package/dist/sveltekit/sql-source.d.ts +47 -0
  261. package/dist/sveltekit/sql-source.js +106 -0
  262. package/dist/sveltekit/sql.d.ts +48 -0
  263. package/dist/sveltekit/sql.js +73 -0
  264. package/dist/sveltekit/transport.d.ts +209 -0
  265. package/dist/sveltekit/transport.js +219 -0
  266. package/{src/sveltekit/types.ts → dist/sveltekit/types.d.ts} +8 -11
  267. package/dist/sveltekit/types.js +1 -0
  268. package/dist/upgrade-prompt.d.ts +16 -0
  269. package/dist/upgrade-prompt.js +141 -0
  270. package/dist/version.d.ts +13 -0
  271. package/{src/version.ts → dist/version.js} +1 -1
  272. package/dist/watermark.d.ts +2 -0
  273. package/dist/watermark.js +146 -0
  274. package/package.json +28 -26
  275. package/dist/designer/assets/index-oYok52zd.css +0 -1
  276. package/dist/designer/assets/src-D-O2F805.css +0 -1
  277. package/src/SvBoard.dom.test.ts +0 -67
  278. package/src/SvGridAlerts.dom.test.ts +0 -113
  279. package/src/SvGridEditPanel.dom.test.ts +0 -320
  280. package/src/SvRecordDetail.dom.test.ts +0 -137
  281. package/src/SvSchedule.dom.test.ts +0 -57
  282. package/src/ai-export-pdf.dom.test.ts +0 -77
  283. package/src/ai-export-xlsx.dom.test.ts +0 -90
  284. package/src/ai-export.dom.test.ts +0 -114
  285. package/src/alerts/alert-engine-attach.ts +0 -165
  286. package/src/alerts/alert-engine.test.ts +0 -135
  287. package/src/alerts/alert-engine.ts +0 -260
  288. package/src/alerts/alert-formats.test.ts +0 -87
  289. package/src/alerts/alert-formats.ts +0 -77
  290. package/src/alerts/alert-observer.test.ts +0 -189
  291. package/src/alerts/alert-observer.ts +0 -208
  292. package/src/alerts/alert-scheduler.ts +0 -96
  293. package/src/alerts/alert-storage.test.ts +0 -54
  294. package/src/alerts/alert-storage.ts +0 -116
  295. package/src/alerts/alert-store.svelte.ts +0 -80
  296. package/src/alerts/alert-types.ts +0 -94
  297. package/src/board.dom.test.ts +0 -941
  298. package/src/edit-panel.test.ts +0 -322
  299. package/src/edit-panel.ts +0 -379
  300. package/src/export-conditional.test.ts +0 -60
  301. package/src/export-conditional.ts +0 -94
  302. package/src/export-ooxml.test.ts +0 -152
  303. package/src/export-ooxml.ts +0 -489
  304. package/src/export-pdf.test.ts +0 -138
  305. package/src/export-pdf.ts +0 -245
  306. package/src/export-print.test.ts +0 -66
  307. package/src/export-print.ts +0 -132
  308. package/src/export-serialize.test.ts +0 -56
  309. package/src/export-xls.ts +0 -199
  310. package/src/export-xlsx-roundtrip.test.ts +0 -120
  311. package/src/export-xlsx.test.ts +0 -150
  312. package/src/export.test.ts +0 -349
  313. package/src/export.ts +0 -1464
  314. package/src/expressions/evaluate.test.ts +0 -111
  315. package/src/expressions/evaluate.ts +0 -237
  316. package/src/expressions/expression-columns.ts +0 -133
  317. package/src/expressions/expression-types.ts +0 -84
  318. package/src/expressions/parse.test.ts +0 -106
  319. package/src/expressions/parse.ts +0 -610
  320. package/src/import-automap.test.ts +0 -131
  321. package/src/import-hardening.test.ts +0 -158
  322. package/src/import.test.ts +0 -415
  323. package/src/import.ts +0 -1044
  324. package/src/index.ts +0 -569
  325. package/src/install.ts +0 -154
  326. package/src/license-core.test.ts +0 -23
  327. package/src/license-core.ts +0 -107
  328. package/src/license-expiry.test.ts +0 -144
  329. package/src/license.ts +0 -157
  330. package/src/master-detail.test.ts +0 -61
  331. package/src/master-detail.ts +0 -42
  332. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/_metadata.json +0 -178
  333. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-ZrPsKxob.js +0 -3875
  334. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-ZrPsKxob.js.map +0 -1
  335. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-ACqvWGE2.js +0 -21
  336. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-ACqvWGE2.js.map +0 -1
  337. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-D3w5jt92.js +0 -1938
  338. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-D3w5jt92.js.map +0 -1
  339. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-CC2V3H0y.js +0 -205
  340. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-CC2V3H0y.js.map +0 -1
  341. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-BXP37tAa.js +0 -18
  342. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-BXP37tAa.js.map +0 -1
  343. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-DwubnU5b.js +0 -264
  344. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-DwubnU5b.js.map +0 -1
  345. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-hD7f6PUz.js +0 -697
  346. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-hD7f6PUz.js.map +0 -1
  347. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js +0 -134
  348. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js.map +0 -1
  349. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js +0 -55
  350. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js.map +0 -1
  351. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_attachments.js +0 -2
  352. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js +0 -46843
  353. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js.map +0 -1
  354. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js +0 -237
  355. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js.map +0 -1
  356. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_events.js +0 -2
  357. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js +0 -4
  358. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js.map +0 -1
  359. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_client.js +0 -7
  360. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js +0 -4
  361. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js.map +0 -1
  362. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js +0 -5
  363. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js.map +0 -1
  364. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js +0 -5
  365. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js.map +0 -1
  366. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js +0 -5
  367. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js.map +0 -1
  368. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_server.js +0 -6
  369. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js +0 -83
  370. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js.map +0 -1
  371. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js +0 -559
  372. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js.map +0 -1
  373. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js +0 -24
  374. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js.map +0 -1
  375. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js +0 -122
  376. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js.map +0 -1
  377. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_server.js +0 -2
  378. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js +0 -89
  379. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js.map +0 -1
  380. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js +0 -241
  381. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js.map +0 -1
  382. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DBx1SCN6.js +0 -4938
  383. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DBx1SCN6.js.map +0 -1
  384. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-gjfpSTFS.js +0 -495
  385. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-gjfpSTFS.js.map +0 -1
  386. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-DKoOKg8S.js +0 -190
  387. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-DKoOKg8S.js.map +0 -1
  388. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-C0MiR7eR.js +0 -8
  389. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-C0MiR7eR.js.map +0 -1
  390. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-B6Y7P0Q-.js +0 -138
  391. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-B6Y7P0Q-.js.map +0 -1
  392. package/src/pivot-chart.test.ts +0 -86
  393. package/src/pivot-chart.ts +0 -112
  394. package/src/pivot-designer.ts +0 -101
  395. package/src/pivot.test.ts +0 -335
  396. package/src/pivot.ts +0 -578
  397. package/src/print.ts +0 -107
  398. package/src/scheduler-assignments.test.ts +0 -97
  399. package/src/scheduler-assignments.ts +0 -134
  400. package/src/scheduler-axis.test.ts +0 -108
  401. package/src/scheduler-axis.ts +0 -238
  402. package/src/scheduler-booking.test.ts +0 -57
  403. package/src/scheduler-config.ts +0 -179
  404. package/src/scheduler-dependencies.test.ts +0 -155
  405. package/src/scheduler-dependencies.ts +0 -223
  406. package/src/scheduler-freebusy.test.ts +0 -41
  407. package/src/scheduler-heatmap.test.ts +0 -39
  408. package/src/scheduler-resource-tree.test.ts +0 -84
  409. package/src/scheduler-resource-tree.ts +0 -107
  410. package/src/scheduler-slots.test.ts +0 -53
  411. package/src/scheduler-slots.ts +0 -94
  412. package/src/scheduler-summary.test.ts +0 -47
  413. package/src/scheduler-summary.ts +0 -81
  414. package/src/scheduling.test.ts +0 -194
  415. package/src/scheduling.ts +0 -293
  416. package/src/schema-designer.test.ts +0 -121
  417. package/src/schema-designer.ts +0 -142
  418. package/src/schema.test.ts +0 -268
  419. package/src/schema.ts +0 -562
  420. package/src/smart-shim.ts +0 -107
  421. package/src/sources/aggregate.test.ts +0 -79
  422. package/src/sources/aggregate.ts +0 -102
  423. package/src/sources/auth-supabase.test.ts +0 -80
  424. package/src/sources/auth-supabase.ts +0 -87
  425. package/src/sources/dashboard.kpi.test.ts +0 -50
  426. package/src/sources/dashboard.test.ts +0 -61
  427. package/src/sources/dashboard.ts +0 -136
  428. package/src/sources/field-inference.test.ts +0 -60
  429. package/src/sources/field-inference.ts +0 -63
  430. package/src/sources/filters.test.ts +0 -58
  431. package/src/sources/filters.ts +0 -70
  432. package/src/sources/index.ts +0 -67
  433. package/src/sources/introspect-supabase.test.ts +0 -112
  434. package/src/sources/introspect-supabase.ts +0 -139
  435. package/src/sources/realtime-supabase.test.ts +0 -93
  436. package/src/sources/realtime-supabase.ts +0 -99
  437. package/src/sources/relation-lookup.test.ts +0 -99
  438. package/src/sources/relation-lookup.ts +0 -128
  439. package/src/sources/rest-adapters.test.ts +0 -95
  440. package/src/sources/rest-adapters.ts +0 -120
  441. package/src/sources/rest.test.ts +0 -104
  442. package/src/sources/rest.ts +0 -129
  443. package/src/sources/schema-from-columns.test.ts +0 -106
  444. package/src/sources/schema-from-columns.ts +0 -88
  445. package/src/sources/supabase.test.ts +0 -110
  446. package/src/sources/supabase.ts +0 -99
  447. package/src/sources/with-entity-rules.test.ts +0 -104
  448. package/src/sources/with-entity-rules.ts +0 -78
  449. package/src/sources/with-relation-labels.test.ts +0 -75
  450. package/src/sources/with-relation-labels.ts +0 -73
  451. package/src/staged-editing.ts +0 -0
  452. package/src/studio/bug-report.test.ts +0 -101
  453. package/src/studio/bug-report.ts +0 -165
  454. package/src/studio/cli.test.ts +0 -187
  455. package/src/studio/cli.ts +0 -117
  456. package/src/studio/copilot-core.test.ts +0 -45
  457. package/src/studio/csv.test.ts +0 -90
  458. package/src/studio/csv.ts +0 -165
  459. package/src/studio/db-connect-string.test.ts +0 -94
  460. package/src/studio/db-connect-string.ts +0 -128
  461. package/src/studio/deploy-cli.test.ts +0 -56
  462. package/src/studio/deploy-cli.ts +0 -100
  463. package/src/studio/emit-project.test.ts +0 -3324
  464. package/src/studio/emit-project.ts +0 -5377
  465. package/src/studio/emit-schema.test.ts +0 -111
  466. package/src/studio/emit-schema.ts +0 -1181
  467. package/src/studio/index.ts +0 -380
  468. package/src/studio/init-flow.test.ts +0 -514
  469. package/src/studio/init-flow.ts +0 -556
  470. package/src/studio/introspect-db.test.ts +0 -186
  471. package/src/studio/introspect-db.ts +0 -312
  472. package/src/studio/introspect-openapi.test.ts +0 -84
  473. package/src/studio/introspect-openapi.ts +0 -252
  474. package/src/studio/introspect-prisma.test.ts +0 -99
  475. package/src/studio/introspect-prisma.ts +0 -175
  476. package/src/studio/introspect.test.ts +0 -172
  477. package/src/studio/introspect.ts +0 -310
  478. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/_svelte_metadata.json +0 -1
  479. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/package.json +0 -3
  480. package/src/studio/pipeline.test.ts +0 -42
  481. package/src/studio/project-robust.test.ts +0 -157
  482. package/src/studio/project.test.ts +0 -929
  483. package/src/studio/project.ts +0 -2394
  484. package/src/studio/sample-data.test.ts +0 -58
  485. package/src/studio/sample-data.ts +0 -203
  486. package/src/studio/samples/ats.ts +0 -202
  487. package/src/studio/samples/clinic.ts +0 -179
  488. package/src/studio/samples/crm.ts +0 -291
  489. package/src/studio/samples/datasets.test.ts +0 -84
  490. package/src/studio/samples/datasets.ts +0 -340
  491. package/src/studio/samples/ecommerce.ts +0 -187
  492. package/src/studio/samples/events.ts +0 -201
  493. package/src/studio/samples/fleet.ts +0 -213
  494. package/src/studio/samples/gym.ts +0 -215
  495. package/src/studio/samples/hr.ts +0 -195
  496. package/src/studio/samples/index.ts +0 -55
  497. package/src/studio/samples/insurance.ts +0 -229
  498. package/src/studio/samples/inventory.ts +0 -213
  499. package/src/studio/samples/invoicing.ts +0 -162
  500. package/src/studio/samples/library.ts +0 -180
  501. package/src/studio/samples/live-data.test.ts +0 -99
  502. package/src/studio/samples/live-data.ts +0 -306
  503. package/src/studio/samples/projects.ts +0 -212
  504. package/src/studio/samples/realestate.ts +0 -196
  505. package/src/studio/samples/restaurant.ts +0 -189
  506. package/src/studio/samples/samples.test.ts +0 -304
  507. package/src/studio/samples/school.ts +0 -197
  508. package/src/studio/samples/seed-floor.test.ts +0 -25
  509. package/src/studio/samples/shared.ts +0 -237
  510. package/src/studio/samples/starter.ts +0 -251
  511. package/src/studio/samples/subscriptions.ts +0 -183
  512. package/src/studio/samples/support.ts +0 -216
  513. package/src/studio/scaffold-app.test.ts +0 -91
  514. package/src/studio/scaffold.test.ts +0 -192
  515. package/src/studio/scaffold.ts +0 -390
  516. package/src/studio/screen-suites.test.ts +0 -269
  517. package/src/studio/screen-suites.ts +0 -448
  518. package/src/studio/themes.ts +0 -62
  519. package/src/studio/ui-components-surface.test.ts +0 -185
  520. package/src/studio/ui-components.generated.ts +0 -7154
  521. package/src/studio/ui-components.ts +0 -742
  522. package/src/studio/verify.test.ts +0 -47
  523. package/src/studio/verify.ts +0 -79
  524. package/src/sveltekit/in-memory.test.ts +0 -104
  525. package/src/sveltekit/in-memory.ts +0 -129
  526. package/src/sveltekit/index.ts +0 -24
  527. package/src/sveltekit/query-plan.test.ts +0 -109
  528. package/src/sveltekit/query-plan.ts +0 -125
  529. package/src/sveltekit/sql-source.test.ts +0 -198
  530. package/src/sveltekit/sql-source.ts +0 -171
  531. package/src/sveltekit/sql.test.ts +0 -80
  532. package/src/sveltekit/sql.ts +0 -131
  533. package/src/sveltekit/transport-scope.test.ts +0 -125
  534. package/src/sveltekit/transport.test.ts +0 -201
  535. package/src/sveltekit/transport.ts +0 -373
  536. package/src/upgrade-prompt.test.ts +0 -71
  537. package/src/upgrade-prompt.ts +0 -162
  538. package/src/version.test.ts +0 -17
  539. package/src/watermark.test.ts +0 -97
  540. package/src/watermark.ts +0 -156
  541. /package/{src → dist}/SvAlertRuleEditor.svelte +0 -0
  542. /package/{src → dist}/SvAlertsManager.svelte +0 -0
  543. /package/{src → dist}/SvAlertsPanel.svelte +0 -0
  544. /package/{src → dist}/SvAuthGate.svelte +0 -0
  545. /package/{src → dist}/SvBoard.svelte +0 -0
  546. /package/{src → dist}/SvExportMenu.svelte +0 -0
  547. /package/{src → dist}/SvFileInput.svelte +0 -0
  548. /package/{src → dist}/SvGridAlerts.svelte +0 -0
  549. /package/{src → dist}/SvGridBoard.svelte +0 -0
  550. /package/{src → dist}/SvGridMasterDetail.svelte +0 -0
  551. /package/{src → dist}/SvGridScheduler.svelte +0 -0
  552. /package/{src → dist}/SvImportDialog.svelte +0 -0
  553. /package/{src → dist}/SvLookupInput.svelte +0 -0
  554. /package/{src → dist}/SvPivotDesigner.svelte +0 -0
  555. /package/{src → dist}/SvRecordDetail.svelte +0 -0
  556. /package/{src → dist}/SvSchedule.svelte +0 -0
  557. /package/{src → dist}/SvSchemaChart.svelte +0 -0
  558. /package/{src → dist}/SvSchemaDashboard.svelte +0 -0
  559. /package/{src → dist}/pdfmake-shims.d.ts +0 -0
  560. /package/{src → dist}/smart.export.d.ts +0 -0
  561. /package/{src → dist}/smart.export.js +0 -0
  562. /package/{src → dist}/studio/HANDLERS-DESIGN.md +0 -0
  563. /package/{src → dist/studio}/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/_svelte_metadata.json +0 -0
  564. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/_metadata.json +0 -0
  565. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-BOv1rBKp.js +0 -0
  566. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-BOv1rBKp.js.map +0 -0
  567. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-B9vgIdCd.js +0 -0
  568. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-B9vgIdCd.js.map +0 -0
  569. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-T1qbW_qD.js +0 -0
  570. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-T1qbW_qD.js.map +0 -0
  571. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-Bo11SfVK.js +0 -0
  572. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-Bo11SfVK.js.map +0 -0
  573. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-X7D4vfrZ.js +0 -0
  574. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-X7D4vfrZ.js.map +0 -0
  575. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-oyUje5i1.js +0 -0
  576. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-oyUje5i1.js.map +0 -0
  577. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-DeSQgSFm.js +0 -0
  578. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-DeSQgSFm.js.map +0 -0
  579. /package/{src → dist/studio}/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/package.json +0 -0
  580. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js +0 -0
  581. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js.map +0 -0
  582. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js +0 -0
  583. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js.map +0 -0
  584. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_attachments.js +0 -0
  585. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js +0 -0
  586. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js.map +0 -0
  587. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js +0 -0
  588. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js.map +0 -0
  589. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_events.js +0 -0
  590. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js +0 -0
  591. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js.map +0 -0
  592. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_client.js +0 -0
  593. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js +0 -0
  594. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js.map +0 -0
  595. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js +0 -0
  596. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js.map +0 -0
  597. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js +0 -0
  598. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js.map +0 -0
  599. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js +0 -0
  600. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js.map +0 -0
  601. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_server.js +0 -0
  602. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js +0 -0
  603. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js.map +0 -0
  604. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js +0 -0
  605. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js.map +0 -0
  606. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js +0 -0
  607. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js.map +0 -0
  608. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js +0 -0
  609. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js.map +0 -0
  610. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_server.js +0 -0
  611. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js +0 -0
  612. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js.map +0 -0
  613. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js +0 -0
  614. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js.map +0 -0
  615. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-BbWyXNk1.js +0 -0
  616. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-BbWyXNk1.js.map +0 -0
  617. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DI_fC7vt.js +0 -0
  618. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DI_fC7vt.js.map +0 -0
  619. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-Dyr3lQv9.js +0 -0
  620. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-Dyr3lQv9.js.map +0 -0
  621. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-_9FHH-LF.js +0 -0
  622. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-_9FHH-LF.js.map +0 -0
  623. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-CUbSPnyP.js +0 -0
  624. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-CUbSPnyP.js.map +0 -0
@@ -0,0 +1,176 @@
1
+ type PivotInputRow = Record<string, unknown>;
2
+ /**
3
+ * SvPivotDesigner - Excel-style pivot table designer.
4
+ *
5
+ * Self-contained, controlled component. The consumer holds the data
6
+ * + the field list + the layout state; everything else (drag-and-drop,
7
+ * chip menus, search, presets, the inline pivot grid) is built in.
8
+ *
9
+ * Minimal wire-up (in a .svelte file):
10
+ * const fields = [
11
+ * { field: 'region', label: 'Region', kind: 'dimension' },
12
+ * { field: 'quarter', label: 'Quarter', kind: 'dimension' },
13
+ * { field: 'amount', label: 'Revenue', kind: 'measure', defaultAgg: 'sum' },
14
+ * ]
15
+ * let layout = $state(defaultLayoutFor(fields))
16
+ *
17
+ * SvPivotDesigner {data} {fields} bind:layout
18
+ */
19
+ import { type ColumnDef } from '@svgrid/grid';
20
+ import { type PivotRow, type PivotAggregatorId } from './pivot';
21
+ import { type PivotField, type PivotLayout, type PivotPreset } from './pivot-designer';
22
+ declare function $$render<T extends PivotInputRow>(): {
23
+ props: {
24
+ /** Flat input rows. */
25
+ data: T[];
26
+ /** All fields the user can pick from the rail. */
27
+ fields: PivotField<T>[];
28
+ /** The current pivot layout. Bindable so the consumer can persist it. */
29
+ layout?: PivotLayout;
30
+ /** Fired when the user changes the layout (drag, drop, chip menu, …). */
31
+ onLayoutChange?: (layout: PivotLayout) => void;
32
+ /** Saved layouts surfaced in the toolbar's Presets menu. */
33
+ presets?: PivotPreset[];
34
+ /** Aggregators offered in the Values chip menu. Default: all. */
35
+ aggregators?: PivotAggregatorId[];
36
+ /** Show the toolbar above the wells. Default true. */
37
+ showToolbar?: boolean;
38
+ /** Show the left-rail field picker. Default true. */
39
+ showFieldList?: boolean;
40
+ /** Show the Filters well. Default true. */
41
+ showFiltersWell?: boolean;
42
+ /** Custom Export handler. When set, an Export button appears. */
43
+ onExport?: (layout: PivotLayout, rows: PivotRow[]) => void;
44
+ /** Height of the inner pivot grid. Default '100%'. */
45
+ gridHeight?: string | number;
46
+ /** Render the embedded grid? Set false to host it separately and
47
+ * read `pivot` from the on:pivot event. Default true. */
48
+ embedGrid?: boolean;
49
+ /** Fires whenever the underlying pivot model rebuilds. */
50
+ onPivot?: (rows: PivotRow[], columns: ColumnDef<{
51
+ rowSortingFeature: {
52
+ key: string;
53
+ };
54
+ columnFilteringFeature: {
55
+ key: string;
56
+ };
57
+ }, PivotRow>[]) => void;
58
+ /** Allow row-level expand / collapse. When true, an expand chevron
59
+ * appears in the label cell on every `group` row and clicking it
60
+ * toggles which descendant rows are visible. The designer manages
61
+ * the collapsed set internally. Default false. */
62
+ expandable?: boolean;
63
+ /** Transform the generated column tree right before the grid renders.
64
+ * The consumer can attach custom `cell:` / `header:` / `cellClass:`
65
+ * properties, change widths, etc. Receives the full tree + the
66
+ * current layout (so it can branch on which measures are present). */
67
+ decorateColumns?: (cols: ColumnDef<{
68
+ rowSortingFeature: {
69
+ key: string;
70
+ };
71
+ columnFilteringFeature: {
72
+ key: string;
73
+ };
74
+ }, PivotRow>[], layout: PivotLayout) => ColumnDef<{
75
+ rowSortingFeature: {
76
+ key: string;
77
+ };
78
+ columnFilteringFeature: {
79
+ key: string;
80
+ };
81
+ }, PivotRow>[];
82
+ /** Click handler forwarded to the embedded SvGrid - typically used
83
+ * to drive a drill-through side panel. */
84
+ onCellClick?: (ctx: {
85
+ columnId: string;
86
+ row: PivotRow;
87
+ value: unknown;
88
+ }) => void;
89
+ /** Offer a Table <-> Chart view toggle (same layout as a live chart). Default true. */
90
+ chartable?: boolean;
91
+ /** Which view to show first when `chartable`. Default 'table'. */
92
+ defaultView?: "table" | "chart";
93
+ /**
94
+ * Where the authoring UI (field picker + wells) lives relative to the
95
+ * grid. `'top'` (default) keeps the classic Excel layout: left rail +
96
+ * a horizontal row of wells above the grid. `'right'` docks everything
97
+ * as a single vertical tool panel on the right of the grid - the
98
+ * "enterprise data grid" / AG-Grid pivot-panel arrangement.
99
+ */
100
+ panelPosition?: "top" | "right";
101
+ /** Width of the docked panel when `panelPosition='right'`. Default 280. */
102
+ panelWidth?: number | string;
103
+ /**
104
+ * Enables a "Pivot Mode" toggle. When OFF the embedded grid renders the
105
+ * flat source rows with `flatColumns`; when ON it renders the pivot.
106
+ * Requires `flatColumns` to be provided. Bindable.
107
+ */
108
+ pivotMode?: boolean;
109
+ /** Columns for the flat (pivot-off) grid. Enables the Pivot Mode toggle. */
110
+ flatColumns?: ColumnDef<{
111
+ rowSortingFeature: {
112
+ key: string;
113
+ };
114
+ columnFilteringFeature: {
115
+ key: string;
116
+ };
117
+ }, T>[];
118
+ /** Fired when the Pivot Mode toggle changes. */
119
+ onPivotModeChange?: (on: boolean) => void;
120
+ /** Fit the embedded grid's columns to width. Default true. Set false to
121
+ * let a wide pivot scroll horizontally (recommended with many columns). */
122
+ gridFitColumns?: boolean;
123
+ /** Enable the right-click context menu on field-list rows, well chips, and
124
+ * the pivot grid (add/move/remove fields, change aggregator, expand /
125
+ * collapse). Default true. */
126
+ contextMenu?: boolean;
127
+ /**
128
+ * Column virtualization on the embedded grid. Default true. Set FALSE for
129
+ * wide pivots with grouped column headers: the grouped header band isn't
130
+ * virtualized, so a virtualized body leaves off-window group columns
131
+ * looking empty until scrolled. Disabling it renders every column, so
132
+ * header and body always stay in sync (fine up to a few hundred columns).
133
+ */
134
+ columnVirtualization?: boolean;
135
+ /**
136
+ * Render the field picker as an AG-Grid-style **Columns** tool panel: a
137
+ * collapsible column-group TREE whose checkboxes toggle column VISIBILITY
138
+ * (with a select-all), instead of the flat "tick to add to a well" list.
139
+ * Fields still drag into the Rows / Columns / Values wells. The embedded
140
+ * flat grid (pivot off) hides deselected columns. Default false.
141
+ */
142
+ columnTree?: boolean;
143
+ /** Hidden column ids (field names) when `columnTree` is on. Bindable. */
144
+ hiddenFields?: string[];
145
+ /** Fired when column visibility changes (columnTree mode). */
146
+ onHiddenFieldsChange?: (hidden: string[]) => void;
147
+ /**
148
+ * Show a vertical Columns / Filters tab rail on the docked panel
149
+ * (`panelPosition='right'`). The Filters tab is an AG-Grid-style set-filter
150
+ * builder: "Add Filter" -> pick a column -> tick which values pass. Filters
151
+ * narrow the source rows (they drive `layout.filters`). Default false.
152
+ */
153
+ toolTabs?: boolean;
154
+ };
155
+ exports: {};
156
+ bindings: "pivotMode" | "layout" | "hiddenFields";
157
+ slots: {};
158
+ events: {};
159
+ };
160
+ declare class __sveltets_Render<T extends PivotInputRow> {
161
+ props(): ReturnType<typeof $$render<T>>['props'];
162
+ events(): ReturnType<typeof $$render<T>>['events'];
163
+ slots(): ReturnType<typeof $$render<T>>['slots'];
164
+ bindings(): "pivotMode" | "layout" | "hiddenFields";
165
+ exports(): {};
166
+ }
167
+ interface $$IsomorphicComponent {
168
+ new <T extends PivotInputRow>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
169
+ $$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
170
+ } & ReturnType<__sveltets_Render<T>['exports']>;
171
+ <T extends PivotInputRow>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
172
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
173
+ }
174
+ declare const SvPivotDesigner: $$IsomorphicComponent;
175
+ type SvPivotDesigner<T extends PivotInputRow> = InstanceType<typeof SvPivotDesigner<T>>;
176
+ export default SvPivotDesigner;
@@ -0,0 +1,58 @@
1
+ /**
2
+ * SvRecordDetail - a full record "detail page" over an entity's rows: a header
3
+ * (title + subtitle + colored status pill + a few metric tiles + a record
4
+ * switcher), then tabbed sections - an Overview of grouped label/value pairs plus
5
+ * one tab per related child collection (Activity / Related), each a timeline of
6
+ * the child rows that point back at this record. The universal signature view for
7
+ * relation-heavy entities (a customer / deal / patient / trip page), where a board
8
+ * or calendar does not fit.
9
+ *
10
+ * Pure presentation over plain rows + an EntitySchema (same inputs as SvBoard /
11
+ * SvSchemaChart), so the generated app and the designer preview render it
12
+ * identically. When `row` is omitted it self-drives off `rows` (defaults to the
13
+ * first, switchable via the header dropdown).
14
+ */
15
+ import type { EntitySchema } from './schema';
16
+ type Row = Record<string, unknown>;
17
+ type Section = {
18
+ label: string;
19
+ fields: string[];
20
+ };
21
+ type Related = {
22
+ label: string;
23
+ schema: EntitySchema<any>;
24
+ rows?: ReadonlyArray<Row>;
25
+ /** The child field pointing back at this record. */
26
+ foreignKey: string;
27
+ /** The parent field the child's `foreignKey` matches (default: the id) - lets a
28
+ * denormalized view relate by name / company when it has no FK ids. */
29
+ parentField?: string;
30
+ titleField: string;
31
+ subtitleField?: string;
32
+ dateField?: string;
33
+ statusField?: string;
34
+ };
35
+ type $$ComponentProps = {
36
+ schema: EntitySchema<any>;
37
+ rows?: ReadonlyArray<Row>;
38
+ /** The specific record to show. Omit to self-drive off `rows`. */
39
+ row?: Row;
40
+ /** Initial record to open, by id (e.g. from a URL `?id=` param). Switchable. */
41
+ selectedId?: string;
42
+ /** Show a skeleton during first load. */
43
+ loading?: boolean;
44
+ titleField: string;
45
+ subtitleField?: string;
46
+ /** Enum field rendered as a colored status pill in the header. */
47
+ statusField?: string;
48
+ /** A few (numeric) fields shown as header stat tiles. */
49
+ metricFields?: string[];
50
+ /** Overview field groups. Empty -> one auto "Details" group. */
51
+ sections?: Section[];
52
+ /** Related child collections, one tab each. */
53
+ related?: Related[];
54
+ height?: number;
55
+ };
56
+ declare const SvRecordDetail: import("svelte").Component<$$ComponentProps, {}, "">;
57
+ type SvRecordDetail = ReturnType<typeof SvRecordDetail>;
58
+ export default SvRecordDetail;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * SvSchedule - a month event-calendar over an entity's rows. Each row with a
3
+ * `dateField` value is placed as an event chip on its day; `titleField` is the
4
+ * chip label and an optional enum `colorField` tints it. A real scheduling view
5
+ * (appointments / events / bookings / shifts) - the signature calendar that makes
6
+ * a Studio app read like a product, not a report.
7
+ *
8
+ * Pure presentation over plain rows + an EntitySchema (same inputs as SvBoard /
9
+ * SvSchemaChart), so the generated app and the designer preview match.
10
+ */
11
+ import type { EntitySchema } from './schema';
12
+ type Row = Record<string, unknown>;
13
+ type $$ComponentProps = {
14
+ schema: EntitySchema<any>;
15
+ rows?: ReadonlyArray<Row>;
16
+ /** The date / datetime field that places a row on the calendar. */
17
+ dateField: string;
18
+ /** Field shown as the event chip label. */
19
+ titleField: string;
20
+ /** Optional enum field whose option color tints the chip. */
21
+ colorField?: string;
22
+ onSelect?: (id: string) => void;
23
+ /** Dim the grid + show a loading note during first load. */
24
+ loading?: boolean;
25
+ height?: number;
26
+ };
27
+ declare const SvSchedule: import("svelte").Component<$$ComponentProps, {}, "">;
28
+ type SvSchedule = ReturnType<typeof SvSchedule>;
29
+ export default SvSchedule;
@@ -0,0 +1,61 @@
1
+ type ChartRow = Record<string, unknown>;
2
+ /**
3
+ * SvSchemaChart - a reusable chart bound to an `EntitySchema`. It picks
4
+ * chart-able fields from the schema (dimensions to group by, measures to
5
+ * reduce), renders built-in controls, and draws with `SvGridChart`.
6
+ *
7
+ * Aggregation is either client-side (pass `rows`) or server-side (pass
8
+ * `getAggregate`, e.g. a SQL / Supabase source's `GROUP BY`), so it scales
9
+ * past what a page holds. Click a category to drill (`onDrill`).
10
+ */
11
+ import { type ChartType } from '@svgrid/grid';
12
+ import { type EntitySchema } from './schema';
13
+ import { type AggregateBucket, type AggregateReduce, type AggregateRequest } from './sources/aggregate';
14
+ declare function $$render<TData extends ChartRow>(): {
15
+ props: {
16
+ schema: EntitySchema<TData>;
17
+ /** Client-side data to aggregate. Ignored when `getAggregate` is set. */
18
+ rows?: ReadonlyArray<TData>;
19
+ /** Server-side aggregation (a data source's `getAggregate`). Takes precedence. */
20
+ getAggregate?: (request: AggregateRequest) => Promise<AggregateBucket[]>;
21
+ /** Filter passed to `getAggregate`. */
22
+ filterModel?: import("@svgrid/grid").ServerFilterModel | undefined;
23
+ dimension?: string;
24
+ measure?: string;
25
+ reduce?: AggregateReduce;
26
+ type?: ChartType;
27
+ /** Show the built-in dimension / measure / type controls. Default true. */
28
+ controls?: boolean;
29
+ height?: number;
30
+ width?: number;
31
+ dataLabels?: boolean;
32
+ formatValue?: (v: number) => string;
33
+ onDrill?: (category: string, dimension: string) => void;
34
+ /** Bump to re-fetch server aggregates (e.g. after a mutation). */
35
+ refreshKey?: unknown;
36
+ /** Brand color. Bars / lines use it; pie slices grouped by an enum use the
37
+ * enum's own option colors (matching status badges). */
38
+ accent?: string;
39
+ };
40
+ exports: {};
41
+ bindings: "";
42
+ slots: {};
43
+ events: {};
44
+ };
45
+ declare class __sveltets_Render<TData extends ChartRow> {
46
+ props(): ReturnType<typeof $$render<TData>>['props'];
47
+ events(): ReturnType<typeof $$render<TData>>['events'];
48
+ slots(): ReturnType<typeof $$render<TData>>['slots'];
49
+ bindings(): "";
50
+ exports(): {};
51
+ }
52
+ interface $$IsomorphicComponent {
53
+ new <TData extends ChartRow>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TData>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TData>['props']>, ReturnType<__sveltets_Render<TData>['events']>, ReturnType<__sveltets_Render<TData>['slots']>> & {
54
+ $$bindings?: ReturnType<__sveltets_Render<TData>['bindings']>;
55
+ } & ReturnType<__sveltets_Render<TData>['exports']>;
56
+ <TData extends ChartRow>(internal: unknown, props: ReturnType<__sveltets_Render<TData>['props']> & {}): ReturnType<__sveltets_Render<TData>['exports']>;
57
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
58
+ }
59
+ declare const SvSchemaChart: $$IsomorphicComponent;
60
+ type SvSchemaChart<TData extends ChartRow> = InstanceType<typeof SvSchemaChart<TData>>;
61
+ export default SvSchemaChart;
@@ -0,0 +1,46 @@
1
+ type DashRow = Record<string, unknown>;
2
+ import type { EntitySchema } from './schema';
3
+ import { type DashboardSpec } from './sources/dashboard';
4
+ import type { AggregateBucket, AggregateRequest } from './sources/aggregate';
5
+ declare function $$render<TData extends DashRow>(): {
6
+ props: {
7
+ schema: EntitySchema<TData>;
8
+ /** Rows for KPI tiles (and charts when there's no `getAggregate`). */
9
+ rows?: ReadonlyArray<TData>;
10
+ /**
11
+ * Server-side aggregation (a data source's `getAggregate`). When set, KPI
12
+ * tiles AND charts are computed server-side (KPIs via a dimension-less
13
+ * request), so they're correct over the whole table, not just a page.
14
+ */
15
+ getAggregate?: (request: AggregateRequest) => Promise<AggregateBucket[]>;
16
+ /** Filter applied to every widget (KPIs + charts), same shape the grid emits. */
17
+ filterModel?: AggregateRequest["filterModel"];
18
+ /** Widget layout. Defaults to a sensible set from the schema. */
19
+ spec?: DashboardSpec;
20
+ /** Bump to re-fetch server aggregates after a mutation. */
21
+ refreshKey?: unknown;
22
+ onDrill?: (category: string, dimension: string) => void;
23
+ title?: string;
24
+ };
25
+ exports: {};
26
+ bindings: "";
27
+ slots: {};
28
+ events: {};
29
+ };
30
+ declare class __sveltets_Render<TData extends DashRow> {
31
+ props(): ReturnType<typeof $$render<TData>>['props'];
32
+ events(): ReturnType<typeof $$render<TData>>['events'];
33
+ slots(): ReturnType<typeof $$render<TData>>['slots'];
34
+ bindings(): "";
35
+ exports(): {};
36
+ }
37
+ interface $$IsomorphicComponent {
38
+ new <TData extends DashRow>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TData>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TData>['props']>, ReturnType<__sveltets_Render<TData>['events']>, ReturnType<__sveltets_Render<TData>['slots']>> & {
39
+ $$bindings?: ReturnType<__sveltets_Render<TData>['bindings']>;
40
+ } & ReturnType<__sveltets_Render<TData>['exports']>;
41
+ <TData extends DashRow>(internal: unknown, props: ReturnType<__sveltets_Render<TData>['props']> & {}): ReturnType<__sveltets_Render<TData>['exports']>;
42
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
43
+ }
44
+ declare const SvSchemaDashboard: $$IsomorphicComponent;
45
+ type SvSchemaDashboard<TData extends DashRow> = InstanceType<typeof SvSchemaDashboard<TData>>;
46
+ export default SvSchemaDashboard;
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Headless glue between the pure engine and the running grid.
3
+ *
4
+ * The grid's `onCellValueChange` fires only for edits made through the grid, not
5
+ * for streaming feeds / server pushes / a programmatic `data = ...`. Alerts must
6
+ * react to all of those, so we observe changes by diffing snapshots (the same
7
+ * approach the grid's `attachAutoSavedView` uses for state). `applyAlertEvents`
8
+ * routes fired events
9
+ * to their side effects (toast, log) and returns the visual bits (conditional
10
+ * formats + cells to flash) for the caller to paint. The `<SvGridAlerts>`
11
+ * overlay drives this reactively via `$effect`; `attachAlertEngine` offers the
12
+ * same as a plain-JS interval poll for non-Svelte hosts.
13
+ */
14
+ import type { ConditionalFormat } from '@svgrid/grid/format';
15
+ import { type AlertEngine } from './alert-engine';
16
+ import type { AlertEvent, AlertRule } from './alert-types';
17
+ export type FlashTarget = {
18
+ rowId: string;
19
+ columnId?: string;
20
+ };
21
+ export type ApplyAlertOptions = {
22
+ /**
23
+ * Gate which fired events actually raise a toast. Every event is still logged
24
+ * (the badge/panel stay accurate) - this only suppresses the visible toast, so
25
+ * a busy live feed does not become a toast storm. Return `false` to skip the
26
+ * toast. Defaults to always-toast.
27
+ */
28
+ shouldToast?: (event: AlertEvent) => boolean;
29
+ };
30
+ /**
31
+ * Perform the side effects of a batch of fired events and return the visual
32
+ * output: every event is recorded in the log (so the badge/panel stay accurate),
33
+ * `toast` actions raise a toast (subject to `shouldToast`), and
34
+ * `badge`/`highlight`/`cellFlash` actions yield formats + flash targets for the
35
+ * caller to apply to the grid.
36
+ *
37
+ * The whole batch lands in the log in ONE reactive write (`pushMany`) so a burst
38
+ * of firings from a single evaluation does not thrash the store.
39
+ */
40
+ export declare function applyAlertEvents<TData = Record<string, unknown>>(events: ReadonlyArray<AlertEvent>, getRowId: (row: TData) => string, options?: ApplyAlertOptions): {
41
+ formats: ConditionalFormat<TData>[];
42
+ flashes: FlashTarget[];
43
+ };
44
+ export type AttachAlertOptions<TData> = {
45
+ rules: AlertRule[];
46
+ getRowId: (row: TData) => string;
47
+ /** Read the grid's current rows. */
48
+ getData: () => ReadonlyArray<TData>;
49
+ getValue?: (row: TData, columnId: string) => unknown;
50
+ locale?: string | ReadonlyArray<string>;
51
+ /** Merge alert-driven conditional formats into the grid. */
52
+ applyFormats?: (formats: ConditionalFormat<TData>[]) => void;
53
+ /** Flash a cell (e.g. call `api.flashCells`). */
54
+ flashCell?: (target: FlashTarget) => void;
55
+ /** Poll interval in ms (`0` disables polling - drive `tick()` yourself). */
56
+ intervalMs?: number;
57
+ };
58
+ export type AlertAttachment<TData> = {
59
+ engine: AlertEngine<TData>;
60
+ /** Run one evaluation pass against the latest data. */
61
+ tick(): void;
62
+ /** Push new rules into the engine (e.g. after the user edits a rule). */
63
+ setRules(rules: AlertRule[]): void;
64
+ detach(): void;
65
+ };
66
+ /**
67
+ * Wire the engine to a data source. On the first pass it seeds edges silently
68
+ * from the current snapshot (so pre-existing matches do not fire); thereafter
69
+ * each pass fires newly-matching rows.
70
+ *
71
+ * Perf: cloning a previous snapshot is gated on `engine.needsPrev()`. For a rule
72
+ * set that is purely `dataChange`/aggregate (the common case) NO clone is taken -
73
+ * `engine.evaluate` re-checks the current rows and its edge memory (the `active`
74
+ * set) fires each row exactly once when it starts matching. Only `relativeChange`
75
+ * rules, which compare prev -> next, pay for a snapshot. This is the non-Svelte
76
+ * poll host; for the reactive overlay, `createAlertObserver` adds a scheduler and
77
+ * an O(changed) push path. Returns `detach()` to stop.
78
+ */
79
+ export declare function attachAlertEngine<TData = Record<string, unknown>>(opts: AttachAlertOptions<TData>): AlertAttachment<TData>;
@@ -0,0 +1,106 @@
1
+ import { toast } from '@svgrid/grid';
2
+ import { alertStore } from './alert-store.svelte';
3
+ import { toConditionalFormats } from './alert-formats';
4
+ import { createAlertEngine } from './alert-engine';
5
+ /**
6
+ * Perform the side effects of a batch of fired events and return the visual
7
+ * output: every event is recorded in the log (so the badge/panel stay accurate),
8
+ * `toast` actions raise a toast (subject to `shouldToast`), and
9
+ * `badge`/`highlight`/`cellFlash` actions yield formats + flash targets for the
10
+ * caller to apply to the grid.
11
+ *
12
+ * The whole batch lands in the log in ONE reactive write (`pushMany`) so a burst
13
+ * of firings from a single evaluation does not thrash the store.
14
+ */
15
+ export function applyAlertEvents(events, getRowId, options = {}) {
16
+ if (events.length === 0)
17
+ return { formats: [], flashes: [] };
18
+ alertStore.pushMany(events);
19
+ const allow = options.shouldToast;
20
+ for (const event of events) {
21
+ if (event.actions.some((a) => a.kind === 'toast') && (!allow || allow(event))) {
22
+ toast[event.severity](event.message);
23
+ }
24
+ }
25
+ const flashes = [];
26
+ for (const event of events) {
27
+ if (event.rowId && event.actions.some((a) => a.kind === 'cellFlash')) {
28
+ flashes.push({ rowId: event.rowId, columnId: event.columnId });
29
+ }
30
+ }
31
+ return { formats: toConditionalFormats(events, getRowId), flashes };
32
+ }
33
+ /**
34
+ * Wire the engine to a data source. On the first pass it seeds edges silently
35
+ * from the current snapshot (so pre-existing matches do not fire); thereafter
36
+ * each pass fires newly-matching rows.
37
+ *
38
+ * Perf: cloning a previous snapshot is gated on `engine.needsPrev()`. For a rule
39
+ * set that is purely `dataChange`/aggregate (the common case) NO clone is taken -
40
+ * `engine.evaluate` re-checks the current rows and its edge memory (the `active`
41
+ * set) fires each row exactly once when it starts matching. Only `relativeChange`
42
+ * rules, which compare prev -> next, pay for a snapshot. This is the non-Svelte
43
+ * poll host; for the reactive overlay, `createAlertObserver` adds a scheduler and
44
+ * an O(changed) push path. Returns `detach()` to stop.
45
+ */
46
+ export function attachAlertEngine(opts) {
47
+ const engine = createAlertEngine({
48
+ rules: opts.rules,
49
+ getRowId: opts.getRowId,
50
+ getValue: opts.getValue,
51
+ locale: opts.locale,
52
+ });
53
+ let prev = null;
54
+ let seeded = false;
55
+ const snapshot = (rows) => rows.map((r) => (r && typeof r === 'object' ? { ...r } : r));
56
+ const flush = (events) => {
57
+ if (events.length === 0)
58
+ return;
59
+ const { formats, flashes } = applyAlertEvents(events, opts.getRowId);
60
+ if (formats.length && opts.applyFormats)
61
+ opts.applyFormats(formats);
62
+ if (opts.flashCell)
63
+ flashes.forEach((f) => opts.flashCell?.(f));
64
+ };
65
+ const tick = () => {
66
+ const rows = opts.getData();
67
+ const needsPrev = engine.needsPrev();
68
+ let events;
69
+ if (!seeded) {
70
+ // Silent seed: arm edges from the current set, fire nothing.
71
+ engine.evaluate(rows);
72
+ events = [];
73
+ seeded = true;
74
+ }
75
+ else if (needsPrev) {
76
+ events = engine.evaluateTransition(prev ?? [], rows);
77
+ }
78
+ else {
79
+ // No rule reads prev - the edge set dedups, so no clone/diff is needed.
80
+ events = engine.evaluate(rows);
81
+ }
82
+ prev = needsPrev ? snapshot(rows) : null;
83
+ flush(events);
84
+ };
85
+ const interval = opts.intervalMs ?? 400;
86
+ let timer = null;
87
+ if (interval > 0) {
88
+ tick();
89
+ timer = setInterval(tick, interval);
90
+ }
91
+ return {
92
+ engine,
93
+ tick,
94
+ setRules(rules) {
95
+ engine.setRules(rules);
96
+ engine.reset();
97
+ prev = null;
98
+ seeded = false;
99
+ },
100
+ detach() {
101
+ if (timer)
102
+ clearInterval(timer);
103
+ timer = null;
104
+ },
105
+ };
106
+ }
@@ -0,0 +1,42 @@
1
+ import type { AlertEvent, AlertRule } from './alert-types';
2
+ export type AlertEngineOptions<TData> = {
3
+ rules: AlertRule[];
4
+ getRowId: (row: TData) => string;
5
+ /** Resolve a column id to a value (defaults to `row[id]`). */
6
+ getValue?: (row: TData, columnId: string) => unknown;
7
+ locale?: string | ReadonlyArray<string>;
8
+ /** Clock for `firedAt` (injectable for deterministic tests). */
9
+ now?: () => number;
10
+ };
11
+ export type ValidateEditResult = {
12
+ vetoed: boolean;
13
+ events: AlertEvent[];
14
+ };
15
+ export type AlertEngine<TData> = {
16
+ setRules(rules: AlertRule[]): void;
17
+ getRules(): AlertRule[];
18
+ /** Full-snapshot pass: fires `dataChange`/`scheduled`/aggregate edges. */
19
+ evaluate(rows: ReadonlyArray<TData>): AlertEvent[];
20
+ /** Prev -> next pass: fires `relativeChange` plus `dataChange` edges. */
21
+ evaluateTransition(prev: ReadonlyArray<TData>, next: ReadonlyArray<TData>): AlertEvent[];
22
+ /** Would editing `(row, columnId) -> nextValue` trip a validation rule? */
23
+ validateEdit(row: TData, columnId: string, nextValue: unknown): ValidateEditResult;
24
+ /**
25
+ * True iff some enabled rule reads a row's PREVIOUS value (a `relativeChange`
26
+ * trigger). When false, the observer can skip cloning prev-snapshots entirely
27
+ * - the hot-path saver for `dataChange`/aggregate-only rule sets over big feeds.
28
+ */
29
+ needsPrev(): boolean;
30
+ /** True iff some enabled rule is aggregate-scope (needs the full row set). */
31
+ needsFullSet(): boolean;
32
+ /** Forget edge memory so matching rows can fire again. */
33
+ reset(): void;
34
+ };
35
+ /** Fill message-template tokens from the firing context. */
36
+ export declare function renderTemplate(template: string, ctx: {
37
+ rule: AlertRule;
38
+ row?: Record<string, unknown>;
39
+ columnId?: string;
40
+ value?: unknown;
41
+ }): string;
42
+ export declare function createAlertEngine<TData = Record<string, unknown>>(options: AlertEngineOptions<TData>): AlertEngine<TData>;