@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
package/dist/pivot.js ADDED
@@ -0,0 +1,353 @@
1
+ // -------------------------------------------------------- aggregators
2
+ const numeric = (vs) => vs
3
+ .map((v) => (typeof v === 'number' ? v : Number(v)))
4
+ .filter((n) => !Number.isNaN(n));
5
+ const BUILT_IN_AGGS = {
6
+ sum: (vs) => numeric(vs).reduce((a, b) => a + b, 0),
7
+ avg: (vs) => {
8
+ const ns = numeric(vs);
9
+ return ns.length === 0 ? null : ns.reduce((a, b) => a + b, 0) / ns.length;
10
+ },
11
+ min: (vs) => (numeric(vs).length === 0 ? null : Math.min(...numeric(vs))),
12
+ max: (vs) => (numeric(vs).length === 0 ? null : Math.max(...numeric(vs))),
13
+ count: (vs) => vs.length,
14
+ countDistinct: (vs) => new Set(vs).size,
15
+ first: (vs) => vs[0] ?? null,
16
+ last: (vs) => vs[vs.length - 1] ?? null,
17
+ };
18
+ function resolveAgg(agg) {
19
+ if (typeof agg === 'function')
20
+ return agg;
21
+ const fn = BUILT_IN_AGGS[agg];
22
+ if (!fn)
23
+ throw new Error(`pivot: unknown aggregator '${String(agg)}'`);
24
+ return fn;
25
+ }
26
+ function defaultCompare(a, b) {
27
+ if (a === b)
28
+ return 0;
29
+ if (a == null)
30
+ return -1;
31
+ if (b == null)
32
+ return 1;
33
+ if (typeof a === 'number' && typeof b === 'number')
34
+ return a - b;
35
+ return String(a).localeCompare(String(b), undefined, { numeric: true });
36
+ }
37
+ function buildAxisTree(rows, fields, sortBy) {
38
+ const root = {
39
+ level: 0, value: null, path: [], pathKey: '__root',
40
+ children: new Map(), rows: rows,
41
+ };
42
+ for (const row of rows) {
43
+ let node = root;
44
+ for (let i = 0; i < fields.length; i += 1) {
45
+ const field = fields[i];
46
+ const value = row[field];
47
+ const key = `${i}:${value === null ? '__null' : String(value)}`;
48
+ let child = node.children.get(key);
49
+ if (!child) {
50
+ child = {
51
+ level: i + 1,
52
+ value,
53
+ path: [...node.path, value],
54
+ pathKey: node.pathKey === '__root' ? key : `${node.pathKey}|${key}`,
55
+ children: new Map(),
56
+ rows: [],
57
+ };
58
+ node.children.set(key, child);
59
+ }
60
+ child.rows.push(row);
61
+ node = child;
62
+ }
63
+ }
64
+ // Stable, predictable child order at every level.
65
+ sortNode(root, sortBy);
66
+ return root;
67
+ }
68
+ function sortNode(node, sortBy) {
69
+ const entries = Array.from(node.children.entries());
70
+ entries.sort(([, a], [, b]) => (sortBy ?? defaultCompare)(a.value, b.value, a.level - 1));
71
+ node.children = new Map(entries);
72
+ for (const child of node.children.values())
73
+ sortNode(child, sortBy);
74
+ }
75
+ // --------------------------------------------------- column id helpers
76
+ /**
77
+ * Generate stable leaf column ids by joining the column-axis path and the
78
+ * measure index. The id is what appears as `data-col-id` and as the key
79
+ * inside each pivot row. Kept short and deterministic.
80
+ */
81
+ function leafColumnId(colPath, measureIndex) {
82
+ const path = colPath.length === 0 ? 'all' : colPath.map((v) => safe(v)).join('__');
83
+ return `pv__${path}__m${measureIndex}`;
84
+ }
85
+ function safe(v) {
86
+ if (v === null || v === undefined)
87
+ return 'null';
88
+ return String(v).replace(/[^a-zA-Z0-9_-]/g, '_');
89
+ }
90
+ // --------------------------------------------------- column-tree build
91
+ function buildColumnTree(colRoot, values, config, rowHeaderLabel) {
92
+ // First column: the row-axis tree as a single column. The label per row
93
+ // comes from `__pivotLabel`, with `__pivotDepth` driving the indent.
94
+ const headerCol = {
95
+ id: '__pivotRowHeader',
96
+ header: rowHeaderLabel,
97
+ fieldFn: (row) => row.__pivotLabel,
98
+ width: 240,
99
+ };
100
+ function recurse(node) {
101
+ // If this is a column-axis leaf (no children), emit one value column
102
+ // per measure.
103
+ if (node.children.size === 0) {
104
+ return values.map((value, i) => {
105
+ const id = leafColumnId(node.path, i);
106
+ const label = value.label ?? `${value.field} (${typeof value.agg === 'function' ? 'custom' : value.agg})`;
107
+ return {
108
+ id,
109
+ header: label,
110
+ fieldFn: (row) => row[id],
111
+ format: value.format,
112
+ width: 130,
113
+ };
114
+ });
115
+ }
116
+ // Otherwise emit a header group with this node's value as the label
117
+ // and recurse for its children.
118
+ return Array.from(node.children.values()).map((child) => ({
119
+ id: `pv_group_${child.pathKey}`,
120
+ header: String(child.value ?? '(blank)'),
121
+ columns: recurse(child),
122
+ }));
123
+ }
124
+ const valueCols = colRoot.children.size === 0
125
+ // No col dims at all: emit measures as flat columns under no group.
126
+ ? recurse(colRoot)
127
+ : recurse(colRoot);
128
+ const grandTotalCol = config.grandTotalCol !== false;
129
+ if (!grandTotalCol)
130
+ return [headerCol, ...valueCols];
131
+ // Grand total column: one measure column per value config, with no
132
+ // col-path filter.
133
+ const totalCols = values.map((value, i) => {
134
+ const id = leafColumnId(['__total'], i);
135
+ const label = value.label ?? `${value.field} (${typeof value.agg === 'function' ? 'custom' : value.agg})`;
136
+ return {
137
+ id,
138
+ header: label,
139
+ fieldFn: (row) => row[id],
140
+ format: value.format,
141
+ width: 140,
142
+ };
143
+ });
144
+ const grandTotal = {
145
+ id: 'pv_group__grand_total',
146
+ header: 'Total',
147
+ columns: totalCols,
148
+ };
149
+ return [headerCol, ...valueCols, grandTotal];
150
+ }
151
+ // --------------------------------------------------- row-axis materialise
152
+ function collectColLeafPaths(node, into) {
153
+ if (node.children.size === 0) {
154
+ into.push(node.path);
155
+ return;
156
+ }
157
+ for (const child of node.children.values())
158
+ collectColLeafPaths(child, into);
159
+ }
160
+ /**
161
+ * For one source-row set (a row-axis node) compute the value at each
162
+ * column-axis leaf for each measure. Returns a map keyed by column id.
163
+ */
164
+ function computeRowValues(sourceRows, colLeafPaths, colFields, values, includeGrandTotalCol) {
165
+ const result = {};
166
+ // For each col-axis leaf path, filter the source rows to those matching
167
+ // every dim value, then run each measure aggregator.
168
+ for (const colPath of colLeafPaths) {
169
+ const matched = colPath.length === 0
170
+ ? sourceRows
171
+ : sourceRows.filter((r) => colPath.every((value, i) => r[colFields[i]] === value));
172
+ for (let i = 0; i < values.length; i += 1) {
173
+ const value = values[i];
174
+ const fn = resolveAgg(value.agg);
175
+ const id = leafColumnId(colPath, i);
176
+ result[id] = fn(matched.map((r) => r[value.field]));
177
+ }
178
+ }
179
+ // Grand-total column: run each measure across the entire source set.
180
+ if (includeGrandTotalCol) {
181
+ for (let i = 0; i < values.length; i += 1) {
182
+ const value = values[i];
183
+ const fn = resolveAgg(value.agg);
184
+ const id = leafColumnId(['__total'], i);
185
+ result[id] = fn(sourceRows.map((r) => r[value.field]));
186
+ }
187
+ }
188
+ return result;
189
+ }
190
+ /**
191
+ * Build the same value-column keys as `computeRowValues`, but with every cell
192
+ * `null`. Used for group HEADER rows when `rowSubtotals` is off: the row keeps
193
+ * its place in the hierarchy (label + expand/collapse) yet shows no aggregate
194
+ * numbers. Cells are `null` rather than absent so consumers can distinguish a
195
+ * deliberately-blank subtotal from a missing column.
196
+ */
197
+ function blankRowValues(colLeafPaths, values, includeGrandTotalCol) {
198
+ const result = {};
199
+ for (const colPath of colLeafPaths) {
200
+ for (let i = 0; i < values.length; i += 1)
201
+ result[leafColumnId(colPath, i)] = null;
202
+ }
203
+ if (includeGrandTotalCol) {
204
+ for (let i = 0; i < values.length; i += 1)
205
+ result[leafColumnId(['__total'], i)] = null;
206
+ }
207
+ return result;
208
+ }
209
+ function walkRowTree(node, out, colLeafPaths, colFields, values, config, rowFields,
210
+ /**
211
+ * The id of the row-axis ancestor that should be reported as
212
+ * `__pivotParentId` on every row emitted under this subtree. `null`
213
+ * at the top level.
214
+ */
215
+ parentId) {
216
+ const includeGrandTotalCol = config.grandTotalCol !== false;
217
+ const wantSubtotals = config.rowSubtotals !== false;
218
+ // The "leaf" case: this is a row-axis leaf - no further row dimensions.
219
+ if (node.children.size === 0) {
220
+ out.push({
221
+ __pivotId: `row__${node.pathKey}`,
222
+ __pivotKind: 'leaf',
223
+ __pivotDepth: node.level,
224
+ __pivotLabel: node.value === null ? '(All)' : String(node.value),
225
+ __pivotParentId: parentId,
226
+ __pivotExpandable: false,
227
+ ...computeRowValues(node.rows, colLeafPaths, colFields, values, includeGrandTotalCol),
228
+ });
229
+ return;
230
+ }
231
+ // Group node. Emit the group HEADER row whenever this node is a real group
232
+ // (not the synthetic root, not the deepest level). The header is emitted
233
+ // regardless of `rowSubtotals` so the grouping hierarchy and the
234
+ // expand/collapse parent chain stay intact; the flag only controls whether
235
+ // the header carries its aggregate (subtotal) values or renders as a
236
+ // label-only row. This matches Excel / AG Grid, where hiding subtotals never
237
+ // removes a grouping level from the row axis.
238
+ const isRealGroup = node.level > 0 && node.level < rowFields.length;
239
+ let nextParentId = parentId;
240
+ if (isRealGroup) {
241
+ const id = `group__${node.pathKey}`;
242
+ out.push({
243
+ __pivotId: id,
244
+ __pivotKind: 'group',
245
+ __pivotDepth: node.level,
246
+ __pivotLabel: String(node.value ?? '(All)'),
247
+ __pivotParentId: parentId,
248
+ __pivotExpandable: true,
249
+ ...(wantSubtotals
250
+ ? computeRowValues(node.rows, colLeafPaths, colFields, values, includeGrandTotalCol)
251
+ : blankRowValues(colLeafPaths, values, includeGrandTotalCol)),
252
+ });
253
+ // Children of this group point at this row as their parent so a
254
+ // collapse hides the whole subtree, not just the immediate leaves.
255
+ nextParentId = id;
256
+ }
257
+ for (const child of node.children.values()) {
258
+ walkRowTree(child, out, colLeafPaths, colFields, values, config, rowFields, nextParentId);
259
+ }
260
+ }
261
+ // ------------------------------------------------------------ public API
262
+ export function createPivotModel(data, config) {
263
+ if (config.values.length === 0) {
264
+ throw new Error('pivot: at least one value config is required');
265
+ }
266
+ const rowFields = config.rows;
267
+ const colFields = config.cols;
268
+ const values = config.values;
269
+ // 1. axis trees
270
+ const rowRoot = buildAxisTree(data, rowFields, config.rowSort);
271
+ const colRoot = buildAxisTree(data, colFields, config.colSort);
272
+ // 2. collect col-axis leaf paths (one per value column header chain)
273
+ const colLeafPaths = [];
274
+ collectColLeafPaths(colRoot, colLeafPaths);
275
+ // 3. flatten row-axis to pivot rows
276
+ const rows = [];
277
+ if (rowFields.length === 0) {
278
+ // No row dims: one synthetic "All" row.
279
+ rows.push({
280
+ __pivotId: 'row__all',
281
+ __pivotKind: 'leaf',
282
+ __pivotDepth: 0,
283
+ __pivotLabel: '(All)',
284
+ __pivotParentId: null,
285
+ __pivotExpandable: false,
286
+ ...computeRowValues(data, colLeafPaths, colFields, values, config.grandTotalCol !== false),
287
+ });
288
+ }
289
+ else {
290
+ walkRowTree(rowRoot, rows, colLeafPaths, colFields, values, config, rowFields, null);
291
+ }
292
+ // 4. grand-total row at bottom
293
+ if (config.grandTotalRow !== false) {
294
+ rows.push({
295
+ __pivotId: 'row__grand_total',
296
+ __pivotKind: 'grandTotal',
297
+ __pivotDepth: 0,
298
+ __pivotLabel: 'Grand total',
299
+ __pivotParentId: null,
300
+ __pivotExpandable: false,
301
+ ...computeRowValues(data, colLeafPaths, colFields, values, config.grandTotalCol !== false),
302
+ });
303
+ }
304
+ // 5. column tree
305
+ const columns = buildColumnTree(colRoot, values, config, rowFields.length > 0 ? rowFields.join(' / ') : '');
306
+ return { rows, columns };
307
+ }
308
+ /**
309
+ * Public registry of built-in aggregators. Useful for surfacing the
310
+ * available options in a pivot designer UI.
311
+ */
312
+ export const pivotAggregators = { ...BUILT_IN_AGGS };
313
+ /**
314
+ * Filter a `result.rows` array down to only the rows the user should
315
+ * see given the current expansion state. A row stays in the output if
316
+ * its entire ancestor chain (via `__pivotParentId`) is in `expandedIds`.
317
+ *
318
+ * Pass `true` to bypass filtering (everything visible - the default
319
+ * shape `createPivotModel` already returns). Pass an empty array /
320
+ * empty Set to collapse every group to its subtotal row.
321
+ *
322
+ * The result is a new array; the input is not mutated.
323
+ */
324
+ export function filterCollapsedPivotRows(rows, expandedIds) {
325
+ if (expandedIds === true)
326
+ return rows.slice();
327
+ const expanded = expandedIds instanceof Set ? expandedIds : new Set(expandedIds);
328
+ // Parent-of index so the ancestor walk is O(depth) instead of O(rows × depth).
329
+ const parentOf = new Map();
330
+ for (const r of rows)
331
+ parentOf.set(r.__pivotId, r.__pivotParentId);
332
+ const out = [];
333
+ for (const row of rows) {
334
+ // The grand-total row, top-level groups, and the (All) row are
335
+ // always visible (their parent is null).
336
+ if (row.__pivotParentId === null) {
337
+ out.push(row);
338
+ continue;
339
+ }
340
+ let parentId = row.__pivotParentId;
341
+ let visible = true;
342
+ while (parentId !== null) {
343
+ if (!expanded.has(parentId)) {
344
+ visible = false;
345
+ break;
346
+ }
347
+ parentId = parentOf.get(parentId) ?? null;
348
+ }
349
+ if (visible)
350
+ out.push(row);
351
+ }
352
+ return out;
353
+ }
@@ -0,0 +1,33 @@
1
+ import type { RowData, TableFeatures, SvGridApi } from '@svgrid/grid';
2
+ import { type ExportColumn, type ExportRowSource } from './export';
3
+ import type { ConditionalFormat } from '@svgrid/grid/format';
4
+ export type PrintOptions<TData> = {
5
+ /** Title placed above the printed grid. Defaults to "Grid". */
6
+ title?: string;
7
+ /** Smaller line under the title. */
8
+ subtitle?: string;
9
+ /** Logo data URL, shown above the title. */
10
+ logo?: string;
11
+ /** Columns to print. Defaults to the grid's own visible columns (with their
12
+ * header labels + `format`, so values print formatted). */
13
+ columns?: ReadonlyArray<ExportColumn<TData>>;
14
+ /** Rows to print. Defaults to the current view; accepts the same
15
+ * `'displayed' | 'selected' | 'all'` shorthand as `exportData`. */
16
+ rows?: ExportRowSource<TData>;
17
+ /** Write raw underlying values instead of the formatted display values. */
18
+ rawValues?: boolean;
19
+ /** Print orientation. Browsers honor it via `@page { size }`. Default "portrait". */
20
+ orientation?: 'portrait' | 'landscape';
21
+ /** `@page` size keyword, e.g. 'A4' | 'Letter'. Combined with orientation. */
22
+ pageSize?: string;
23
+ /** Page margin, e.g. '14mm'. Default '14mm'. */
24
+ margin?: string;
25
+ /** Zebra-stripe rows. Default true. */
26
+ zebra?: boolean;
27
+ /** Header row background color. */
28
+ headerColor?: string;
29
+ /** Conditional formatting rules (same array as `<SvGrid conditionalFormats>`);
30
+ * carried into the print view as cell background / color / bold + icons. */
31
+ conditionalFormats?: ReadonlyArray<ConditionalFormat<TData>>;
32
+ };
33
+ export declare function printGrid<TFeatures extends TableFeatures, TData extends RowData>(api: SvGridApi<TFeatures, TData>, opts?: PrintOptions<TData>): Promise<void>;
package/dist/print.js ADDED
@@ -0,0 +1,61 @@
1
+ import { assertEnterpriseLicensed } from './license';
2
+ import { buildLinkResolver, projectRows, resolveColumns, resolveRowSource, } from './export';
3
+ import { buildPrintDocument } from './export-print';
4
+ import { buildConditionalResolver } from './export-conditional';
5
+ export async function printGrid(api, opts) {
6
+ assertEnterpriseLicensed('Print');
7
+ if (typeof window === 'undefined') {
8
+ throw new Error('@svgrid/enterprise: print requires a browser environment');
9
+ }
10
+ const sourceRows = resolveRowSource(api, opts?.rows);
11
+ if (sourceRows.length === 0) {
12
+ throw new Error('@svgrid/enterprise: nothing to print - the grid has no rows');
13
+ }
14
+ const cols = resolveColumns(api, { columns: opts?.columns }, sourceRows);
15
+ const fields = cols.map((c) => c.field);
16
+ // Formatted display values (or raw when asked) so the print matches the grid.
17
+ const projected = await projectRows(sourceRows, cols, { rawValues: opts?.rawValues });
18
+ const dataRows = projected.slice(1).map((r) => fields.map((f) => String(r[f] ?? '')));
19
+ const columns = cols.map((c) => ({ header: c.header ?? c.field, align: c.align }));
20
+ const docOpts = {
21
+ title: opts?.title ?? 'Grid',
22
+ subtitle: opts?.subtitle,
23
+ logo: opts?.logo,
24
+ orientation: opts?.orientation ?? 'portrait',
25
+ pageSize: opts?.pageSize,
26
+ margin: opts?.margin,
27
+ zebra: opts?.zebra,
28
+ headerColor: opts?.headerColor,
29
+ };
30
+ const visual = buildConditionalResolver(cols, sourceRows, opts?.conditionalFormats);
31
+ const link = buildLinkResolver(cols, sourceRows);
32
+ const html = buildPrintDocument({
33
+ columns,
34
+ rows: dataRows,
35
+ cellStyle: (r, c) => visual(r, c),
36
+ cellLink: link,
37
+ opts: docOpts,
38
+ });
39
+ const w = window.open('', '_blank', 'width=900,height=700');
40
+ if (!w) {
41
+ throw new Error('@svgrid/enterprise: print() could not open a window - the browser blocked the popup');
42
+ }
43
+ w.document.open();
44
+ w.document.write(html);
45
+ w.document.close();
46
+ // Give the new window one tick to paint before invoking print.
47
+ w.focus();
48
+ w.addEventListener('load', () => {
49
+ setTimeout(() => w.print(), 50);
50
+ });
51
+ // Some browsers fire 'load' before the listener attaches if the document was
52
+ // already complete. Fall back: try a print after a short delay regardless.
53
+ setTimeout(() => {
54
+ try {
55
+ w.print();
56
+ }
57
+ catch {
58
+ // ignore - the listener path will have fired
59
+ }
60
+ }, 300);
61
+ }
@@ -0,0 +1 @@
1
+ export declare const REVOKED_KEYS: ReadonlySet<string>;
@@ -1,4 +1,4 @@
1
- // Revoked license keys. A key in this set throws on use even if it has the
1
+ // Revoked license keys. A key in this set throws on use even if it has the
2
2
  // valid SVENTERPRISE- prefix. Use this to invalidate keys that have been leaked,
3
3
  // shared outside their seat count, or issued for trials that have expired.
4
4
  //
@@ -42,8 +42,7 @@
42
42
  // For npm publication the right long-term answer is a build step that
43
43
  // inlines the list from an env var or private file. Not wired up yet.
44
44
  // =============================================================================
45
-
46
- export const REVOKED_KEYS: ReadonlySet<string> = new Set<string>([
47
- // 'SVENTERPRISE-EVAL-acme-202506-3F7K9P', // example - expired ACME trial
48
- // 'SVENTERPRISE-LEAKED-globex-202612-X8N4P', // example - key leaked on GitHub
49
- ])
45
+ export const REVOKED_KEYS = new Set([
46
+ // 'SVENTERPRISE-EVAL-acme-202506-3F7K9P', // example - expired ACME trial
47
+ // 'SVENTERPRISE-LEAKED-globex-202612-X8N4P', // example - key leaked on GitHub
48
+ ]);
@@ -0,0 +1,64 @@
1
+ /**
2
+ * scheduler-assignments - the pure core behind Scheduler Pro *multi-assignment*
3
+ * (one event assigned to several resources) and the *resource utilization
4
+ * histogram*. No Svelte, no DOM. Generic over the event shape via accessor
5
+ * callbacks so it needs no dependency on the grid's ResolvedEvent.
6
+ */
7
+ /** A many-to-many event <-> resource link, with an optional allocation (0..1). */
8
+ export type SchedulerAssignment = {
9
+ id: string;
10
+ eventId: string;
11
+ resourceId: string;
12
+ /** Allocation fraction, default 1 (full). Summed for histogram / overallocation. */
13
+ units?: number;
14
+ };
15
+ /** One event placed on one resource (the flattened render unit). */
16
+ export type Allocation<E = unknown> = {
17
+ event: E;
18
+ key: string;
19
+ resourceId: string;
20
+ units: number;
21
+ start: Date;
22
+ end: Date;
23
+ };
24
+ export type ExpandOptions<E> = {
25
+ keyOf: (e: E) => string;
26
+ startOf: (e: E) => Date;
27
+ endOf: (e: E) => Date;
28
+ /** Single-resource fallback when an event has no assignment. */
29
+ resourceOf?: (e: E) => string | undefined;
30
+ };
31
+ /**
32
+ * Flatten events into per-resource allocations. An event with assignments renders
33
+ * once per assigned resource (deduped by eventId+resourceId, keeping the max
34
+ * units); an event with none falls back to its single `resourceOf` (units 1), or
35
+ * is dropped when it has neither. The result drives the resource-column bucketing.
36
+ */
37
+ export declare function expandAssignments<E>(events: ReadonlyArray<E>, assignments: ReadonlyArray<SchedulerAssignment>, opts: ExpandOptions<E>): Allocation<E>[];
38
+ /**
39
+ * Summed allocation units on `resourceId` overlapping the bucket
40
+ * `[bucketStart, bucketEnd)` - the height of one histogram bar.
41
+ */
42
+ export declare function resourceLoad<E>(allocs: ReadonlyArray<Allocation<E>>, resourceId: string, bucketStart: Date, bucketEnd: Date): number;
43
+ /** One over-capacity bucket (summed load exceeds the resource capacity). */
44
+ export type Overallocation = {
45
+ resourceId: string;
46
+ start: Date;
47
+ end: Date;
48
+ load: number;
49
+ capacity: number;
50
+ };
51
+ /**
52
+ * Buckets where a resource's summed load exceeds its capacity. `buckets` are the
53
+ * axis intervals to test; `capacity` is a flat number or a per-resource function
54
+ * (default 1). Used to tint histogram bars / flag conflicts.
55
+ */
56
+ export declare function overallocations<E>(allocs: ReadonlyArray<Allocation<E>>, resourceIds: ReadonlyArray<string>, buckets: ReadonlyArray<{
57
+ start: Date;
58
+ end: Date;
59
+ }>, capacity?: number | ((resourceId: string) => number)): Overallocation[];
60
+ /**
61
+ * Total assigned minutes per resource across `allocs` (a simple utilization
62
+ * roll-up for a legend / header, independent of buckets).
63
+ */
64
+ export declare function assignedMinutes<E>(allocs: ReadonlyArray<Allocation<E>>, resourceId: string): number;
@@ -0,0 +1,92 @@
1
+ /**
2
+ * scheduler-assignments - the pure core behind Scheduler Pro *multi-assignment*
3
+ * (one event assigned to several resources) and the *resource utilization
4
+ * histogram*. No Svelte, no DOM. Generic over the event shape via accessor
5
+ * callbacks so it needs no dependency on the grid's ResolvedEvent.
6
+ */
7
+ const MS_MIN = 60000;
8
+ /**
9
+ * Flatten events into per-resource allocations. An event with assignments renders
10
+ * once per assigned resource (deduped by eventId+resourceId, keeping the max
11
+ * units); an event with none falls back to its single `resourceOf` (units 1), or
12
+ * is dropped when it has neither. The result drives the resource-column bucketing.
13
+ */
14
+ export function expandAssignments(events, assignments, opts) {
15
+ // Group assignments by eventId, collapsing duplicate resources to the max units.
16
+ const byEvent = new Map();
17
+ for (const a of assignments) {
18
+ if (!a || !a.eventId || !a.resourceId)
19
+ continue;
20
+ let m = byEvent.get(a.eventId);
21
+ if (!m)
22
+ byEvent.set(a.eventId, (m = new Map()));
23
+ const units = a.units == null ? 1 : a.units;
24
+ m.set(a.resourceId, Math.max(m.get(a.resourceId) ?? 0, units));
25
+ }
26
+ const out = [];
27
+ for (const e of events) {
28
+ const key = opts.keyOf(e);
29
+ const start = opts.startOf(e);
30
+ const end = opts.endOf(e);
31
+ const m = byEvent.get(key);
32
+ if (m && m.size) {
33
+ for (const [resourceId, units] of m)
34
+ out.push({ event: e, key, resourceId, units, start, end });
35
+ }
36
+ else {
37
+ const resourceId = opts.resourceOf?.(e);
38
+ if (resourceId != null)
39
+ out.push({ event: e, key, resourceId, units: 1, start, end });
40
+ }
41
+ }
42
+ return out;
43
+ }
44
+ /** True when `[aStart,aEnd)` overlaps `[bStart,bEnd)`. */
45
+ function overlaps(aStart, aEnd, bStart, bEnd) {
46
+ return aStart.getTime() < bEnd.getTime() && aEnd.getTime() > bStart.getTime();
47
+ }
48
+ /**
49
+ * Summed allocation units on `resourceId` overlapping the bucket
50
+ * `[bucketStart, bucketEnd)` - the height of one histogram bar.
51
+ */
52
+ export function resourceLoad(allocs, resourceId, bucketStart, bucketEnd) {
53
+ let load = 0;
54
+ for (const a of allocs) {
55
+ if (a.resourceId !== resourceId)
56
+ continue;
57
+ if (overlaps(a.start, a.end, bucketStart, bucketEnd))
58
+ load += a.units;
59
+ }
60
+ return load;
61
+ }
62
+ /**
63
+ * Buckets where a resource's summed load exceeds its capacity. `buckets` are the
64
+ * axis intervals to test; `capacity` is a flat number or a per-resource function
65
+ * (default 1). Used to tint histogram bars / flag conflicts.
66
+ */
67
+ export function overallocations(allocs, resourceIds, buckets, capacity = 1) {
68
+ const capOf = typeof capacity === 'function' ? capacity : () => capacity;
69
+ const out = [];
70
+ for (const resourceId of resourceIds) {
71
+ const cap = capOf(resourceId);
72
+ for (const b of buckets) {
73
+ const load = resourceLoad(allocs, resourceId, b.start, b.end);
74
+ if (load > cap + 1e-9)
75
+ out.push({ resourceId, start: b.start, end: b.end, load, capacity: cap });
76
+ }
77
+ }
78
+ return out;
79
+ }
80
+ /**
81
+ * Total assigned minutes per resource across `allocs` (a simple utilization
82
+ * roll-up for a legend / header, independent of buckets).
83
+ */
84
+ export function assignedMinutes(allocs, resourceId) {
85
+ let mins = 0;
86
+ for (const a of allocs) {
87
+ if (a.resourceId !== resourceId)
88
+ continue;
89
+ mins += ((a.end.getTime() - a.start.getTime()) / MS_MIN) * a.units;
90
+ }
91
+ return mins;
92
+ }