@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,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>;