@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,141 @@
1
+ // Product-led-growth (PLG) upgrade nudge, shown at the *moment of intent*: the
2
+ // instant a developer actually calls a Pro feature (export / import / print /
3
+ // AI) without a license key set. Unlike the passive corner watermark
4
+ // (watermark.ts), this is a one-click contextual card that names the feature
5
+ // they just used and links straight to a free trial.
6
+ //
7
+ // Rules of the road:
8
+ // - Soft, never blocking. The feature already ran; this only nudges.
9
+ // - Shows once per session (SPA lifetime). Once shown - whether the user
10
+ // acts on it or closes it - it stays quiet for the rest of the session.
11
+ // Calling setLicenseKey() silences it before it ever appears.
12
+ // - Storage-free: no cookies, no localStorage, no sessionStorage. State is
13
+ // a single in-memory flag, so the library keeps its "zero web storage"
14
+ // promise (see docs/help/security.md). A hard reload may show it once
15
+ // more - by design; that's still a moment-of-intent nudge.
16
+ // - SSR-safe: every DOM access is guarded. On the server it's a no-op.
17
+ // - Zero dependencies, inline styles - no CSS file to import, nothing to
18
+ // bundle, works in any host app regardless of its styling.
19
+ const CARD_ATTR = 'data-svgrid-enterprise-upgrade';
20
+ const PRICING_URL = 'https://svgrid.com/pricing';
21
+ // ?ref=in-app lets us measure how many trials start from this exact prompt
22
+ // vs. the pricing page itself - the whole point of a moment-of-intent CTA.
23
+ const TRIAL_URL = 'https://svgrid.com/pricing?ref=in-app&utm_source=svgrid-enterprise&utm_medium=upgrade-prompt';
24
+ let shownThisSession = false;
25
+ /**
26
+ * Show the contextual upgrade prompt for `feature`. No-ops if one has already
27
+ * been shown this session, a card is already up, or we're on the server. Safe
28
+ * to call on every Pro feature invocation - it self-throttles.
29
+ */
30
+ export function showUpgradePrompt(feature, opts) {
31
+ if (shownThisSession)
32
+ return;
33
+ if (typeof document === 'undefined' || typeof window === 'undefined')
34
+ return;
35
+ if (document.querySelector(`[${CARD_ATTR}]`))
36
+ return;
37
+ shownThisSession = true;
38
+ const card = buildCard(feature, opts?.expired === true);
39
+ document.body.appendChild(card);
40
+ // Animate in on the next frame so the transition actually runs.
41
+ requestAnimationFrame(() => {
42
+ card.style.opacity = '1';
43
+ card.style.transform = 'translateY(0)';
44
+ });
45
+ }
46
+ /**
47
+ * Remove the card if present and re-arm the once-per-session flag so a later
48
+ * `showUpgradePrompt()` can show again. Mainly for hosts that want to control
49
+ * the nudge themselves (and for tests).
50
+ */
51
+ export function dismissUpgradePrompt() {
52
+ shownThisSession = false;
53
+ if (typeof document === 'undefined')
54
+ return;
55
+ document.querySelectorAll(`[${CARD_ATTR}]`).forEach((el) => el.remove());
56
+ }
57
+ // User closed or clicked through the card. Remove it, but leave
58
+ // `shownThisSession` set so it does not reappear for the rest of the session.
59
+ function close(card) {
60
+ card.style.opacity = '0';
61
+ card.style.transform = 'translateY(8px)';
62
+ window.setTimeout(() => card.remove(), 220);
63
+ }
64
+ function buildCard(feature, expired = false) {
65
+ const card = document.createElement('div');
66
+ card.setAttribute(CARD_ATTR, '1');
67
+ card.setAttribute('role', 'dialog');
68
+ card.setAttribute('aria-label', expired ? 'Your trial has ended' : 'Unlock SvGrid Pro');
69
+ Object.assign(card.style, {
70
+ position: 'fixed',
71
+ bottom: '16px',
72
+ right: '16px',
73
+ zIndex: '2147483646', // one below the watermark so they never collide
74
+ width: '320px',
75
+ maxWidth: 'calc(100vw - 32px)',
76
+ boxSizing: 'border-box',
77
+ padding: '16px 16px 14px',
78
+ background: '#0f172a',
79
+ color: '#e2e8f0',
80
+ borderRadius: '12px',
81
+ border: '1px solid rgba(99,102,241,0.4)',
82
+ boxShadow: '0 12px 40px rgba(0,0,0,0.45)',
83
+ fontFamily: '-apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif',
84
+ fontSize: '13px',
85
+ lineHeight: '1.45',
86
+ opacity: '0',
87
+ transform: 'translateY(8px)',
88
+ transition: 'opacity 220ms ease, transform 220ms ease',
89
+ });
90
+ const featureName = feature ? String(feature) : 'This';
91
+ const featurePhrase = feature
92
+ ? `<strong style="color:#fff">${escapeHtml(featureName)}</strong> is a Pro feature.`
93
+ : `You just used a <strong style="color:#fff">Pro</strong> feature.`;
94
+ // An expired trial is a different message from "you never had a licence":
95
+ // they already evaluated, so the ask is to convert, not to start over.
96
+ const badge = expired ? 'TRIAL ENDED' : 'PRO';
97
+ const heading = expired ? 'Your trial has ended' : 'Unlock SvGrid Pro';
98
+ const body = expired
99
+ ? `${featurePhrase} Your evaluation period is over - everything still works,
100
+ but this notice stays until a licence key is set.`
101
+ : `${featurePhrase} It runs in evaluation with a watermark - start a free trial
102
+ to remove it and ship to production.`;
103
+ const cta = expired ? 'Buy a licence' : 'Start free trial';
104
+ card.innerHTML = `
105
+ <button type="button" data-act="x" aria-label="Dismiss"
106
+ style="position:absolute;top:8px;right:8px;width:24px;height:24px;display:flex;
107
+ align-items:center;justify-content:center;background:transparent;border:0;
108
+ color:#94a3b8;font-size:18px;line-height:1;cursor:pointer;border-radius:6px;">&times;</button>
109
+ <div style="display:flex;align-items:center;gap:8px;margin-bottom:8px;">
110
+ <span style="display:inline-block;background:${expired ? '#b45309' : '#4f46e5'};color:#fff;font-size:10px;
111
+ font-weight:700;letter-spacing:0.06em;padding:2px 7px;border-radius:999px;">${badge}</span>
112
+ <span style="font-weight:700;color:#fff;">${heading}</span>
113
+ </div>
114
+ <p style="margin:0 0 12px;color:#cbd5e1;">
115
+ ${body}
116
+ </p>
117
+ <div style="display:flex;gap:8px;align-items:center;">
118
+ <a data-act="trial" href="${TRIAL_URL}" target="_blank" rel="noopener noreferrer"
119
+ style="flex:1;text-align:center;background:#6366f1;color:#fff;font-weight:600;
120
+ text-decoration:none;padding:8px 12px;border-radius:8px;">${cta}</a>
121
+ <a data-act="pricing" href="${PRICING_URL}" target="_blank" rel="noopener noreferrer"
122
+ style="color:#a5b4fc;text-decoration:none;padding:8px 6px;font-weight:600;">Pricing</a>
123
+ </div>
124
+ <p style="margin:10px 0 0;font-size:11px;color:#64748b;">
125
+ Already licensed? Call <code style="color:#94a3b8;">setLicenseKey()</code> at startup to hide this.
126
+ </p>
127
+ `;
128
+ card.querySelector('[data-act="x"]')?.addEventListener('click', () => close(card));
129
+ // Clicking through to a trial / pricing also counts as "handled" - close the
130
+ // card, but let the link open in its new tab first.
131
+ card.querySelector('[data-act="trial"]')?.addEventListener('click', () => close(card));
132
+ card.querySelector('[data-act="pricing"]')?.addEventListener('click', () => close(card));
133
+ return card;
134
+ }
135
+ function escapeHtml(s) {
136
+ return s
137
+ .replace(/&/g, '&amp;')
138
+ .replace(/</g, '&lt;')
139
+ .replace(/>/g, '&gt;')
140
+ .replace(/"/g, '&quot;');
141
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * The version of this package, as a value the pure (browser-safe) generator can
3
+ * read - it cannot open `package.json` at runtime.
4
+ *
5
+ * Generated apps depend on `^SVGRID_VERSION` rather than `latest`, so an app
6
+ * always installs a runtime at least as new as the generator that wrote it.
7
+ * `latest` made that a coin toss: an app scaffolded today and the same app
8
+ * scaffolded tomorrow could resolve different runtimes, and an unrelated publish
9
+ * could break an app nobody had touched.
10
+ *
11
+ * `version.test.ts` asserts this matches `package.json`, so the two cannot drift.
12
+ */
13
+ export declare const SVGRID_VERSION = "2.6.0";
@@ -10,4 +10,4 @@
10
10
  *
11
11
  * `version.test.ts` asserts this matches `package.json`, so the two cannot drift.
12
12
  */
13
- export const SVGRID_VERSION = '2.5.2'
13
+ export const SVGRID_VERSION = '2.6.0';
@@ -0,0 +1,2 @@
1
+ export declare function emitUnlicensedNudge(): void;
2
+ export declare function dismissUnlicensedNudge(): void;
@@ -0,0 +1,146 @@
1
+ // Soft-gate UX for unlicensed @svgrid/enterprise use. Shows a small clickable
2
+ // "www.svgrid.com" watermark in the bottom-right corner of every SvGrid on
3
+ // the page, which fades out after 5 seconds, and emits a one-time console
4
+ // nudge. Hard errors (revoked / bad-prefix keys) still throw via license.ts -
5
+ // this file is only for the "no key set" case where the feature continues to
6
+ // work but the user gets nudged.
7
+ const WATERMARK_ATTR = 'data-svgrid-enterprise-watermark';
8
+ // Marks a grid that has already shown (and faded) its watermark, so the
9
+ // MutationObserver doesn't re-add it once it fades out and is removed.
10
+ const NUDGED_ATTR = 'data-svgrid-enterprise-nudged';
11
+ const HOMEPAGE_URL = 'https://svgrid.com';
12
+ const LICENSE_URL = 'https://svgrid.com/pricing/';
13
+ const WATERMARK_LABEL = 'www.svgrid.com';
14
+ // How long the watermark stays fully visible before it starts fading, and how
15
+ // long the fade itself takes.
16
+ const VISIBLE_MS = 5000;
17
+ const FADE_MS = 700;
18
+ let consoleNudgeShown = false;
19
+ let observer = null;
20
+ export function emitUnlicensedNudge() {
21
+ showConsoleOnce();
22
+ if (typeof document === 'undefined' || typeof window === 'undefined')
23
+ return;
24
+ // Defer one tick: installEnterprise may run inside onApiReady before the grid's
25
+ // root element is in the DOM. The microtask gives Svelte time to flush.
26
+ queueMicrotask(() => attachToAllGrids());
27
+ // Watch for grids that mount later (route changes, dynamic loads).
28
+ if (!observer) {
29
+ observer = new MutationObserver(() => attachToAllGrids());
30
+ observer.observe(document.body, { childList: true, subtree: true });
31
+ }
32
+ }
33
+ export function dismissUnlicensedNudge() {
34
+ if (observer) {
35
+ observer.disconnect();
36
+ observer = null;
37
+ }
38
+ if (typeof document === 'undefined')
39
+ return;
40
+ document.querySelectorAll(`[${WATERMARK_ATTR}]`).forEach((el) => el.remove());
41
+ document
42
+ .querySelectorAll(`[${NUDGED_ATTR}]`)
43
+ .forEach((el) => el.removeAttribute(NUDGED_ATTR));
44
+ consoleNudgeShown = false;
45
+ }
46
+ function showConsoleOnce() {
47
+ if (consoleNudgeShown)
48
+ return;
49
+ consoleNudgeShown = true;
50
+ if (typeof console === 'undefined')
51
+ return;
52
+ // Per spec we use console.log (not warn/error) - this is a nudge, not an
53
+ // error condition. Styled with %c so it stands out in the devtools.
54
+ console.log('%c @svgrid/enterprise %c User is using a Commercial version which requires a license.\n' +
55
+ 'Contact sales@jqwidgets.com for details or visit the license page: ' +
56
+ LICENSE_URL, 'background:#4f46e5;color:#fff;padding:2px 6px;border-radius:3px;font-weight:600', 'color:inherit');
57
+ }
58
+ function attachToAllGrids() {
59
+ if (typeof document === 'undefined')
60
+ return;
61
+ // Primary selector targets SvGrid's root container class. Fall back to
62
+ // ARIA grid role for headless renderers that re-style the wrapper.
63
+ const grids = document.querySelectorAll('.sv-grid-root, [role="grid"]');
64
+ if (grids.length === 0) {
65
+ ensureFixedFallback();
66
+ return;
67
+ }
68
+ // A grid root was found - remove any fixed fallback we may have installed
69
+ // earlier before the grid mounted.
70
+ document
71
+ .querySelectorAll(`[${WATERMARK_ATTR}="fixed"]`)
72
+ .forEach((el) => el.remove());
73
+ grids.forEach(attachWatermarkTo);
74
+ }
75
+ function attachWatermarkTo(grid) {
76
+ // Show the watermark once per grid. The marker survives the fade-out so the
77
+ // MutationObserver doesn't keep re-adding it on every DOM change.
78
+ if (grid.hasAttribute(NUDGED_ATTR))
79
+ return;
80
+ grid.setAttribute(NUDGED_ATTR, '1');
81
+ const cs = getComputedStyle(grid);
82
+ if (cs.position === 'static') {
83
+ // Need a positioning context for absolute positioning. Only override when
84
+ // 'static' (the browser default) - don't clobber an explicit
85
+ // relative/absolute the consumer chose.
86
+ grid.style.position = 'relative';
87
+ }
88
+ const a = buildWatermark('grid');
89
+ applyWatermarkStyles(a, /* fixed */ false);
90
+ grid.appendChild(a);
91
+ scheduleFadeOut(a);
92
+ }
93
+ function ensureFixedFallback() {
94
+ if (typeof document === 'undefined')
95
+ return;
96
+ if (document.querySelector(`[${WATERMARK_ATTR}="fixed"]`))
97
+ return;
98
+ const a = buildWatermark('fixed');
99
+ applyWatermarkStyles(a, /* fixed */ true);
100
+ document.body.appendChild(a);
101
+ scheduleFadeOut(a);
102
+ }
103
+ function buildWatermark(kind) {
104
+ const a = document.createElement('a');
105
+ a.setAttribute(WATERMARK_ATTR, kind);
106
+ a.href = HOMEPAGE_URL;
107
+ a.target = '_blank';
108
+ a.rel = 'noopener noreferrer';
109
+ a.textContent = WATERMARK_LABEL;
110
+ a.title =
111
+ 'Unlicensed @svgrid/enterprise. Contact sales@jqwidgets.com or visit www.svgrid.com.';
112
+ return a;
113
+ }
114
+ /** Keep the watermark visible for VISIBLE_MS, then fade it out and remove it. */
115
+ function scheduleFadeOut(el) {
116
+ if (typeof window === 'undefined') {
117
+ el.remove();
118
+ return;
119
+ }
120
+ window.setTimeout(() => {
121
+ el.style.opacity = '0';
122
+ window.setTimeout(() => el.remove(), FADE_MS);
123
+ }, VISIBLE_MS);
124
+ }
125
+ function applyWatermarkStyles(el, fixed) {
126
+ Object.assign(el.style, {
127
+ position: fixed ? 'fixed' : 'absolute',
128
+ bottom: fixed ? '12px' : '6px',
129
+ right: fixed ? '12px' : '8px',
130
+ zIndex: '2147483647',
131
+ background: 'rgba(15,23,42,0.85)',
132
+ color: '#fff',
133
+ padding: fixed ? '6px 10px' : '4px 8px',
134
+ borderRadius: fixed ? '4px' : '3px',
135
+ fontFamily: '-apple-system, "Segoe UI", Roboto, sans-serif',
136
+ fontSize: fixed ? '11px' : '10px',
137
+ lineHeight: '1.2',
138
+ textDecoration: 'none',
139
+ boxShadow: fixed ? '0 2px 12px rgba(0,0,0,0.35)' : '0 1px 4px rgba(0,0,0,0.3)',
140
+ border: '1px solid rgba(255,255,255,0.18)',
141
+ pointerEvents: 'auto',
142
+ letterSpacing: '0.02em',
143
+ opacity: '1',
144
+ transition: `opacity ${FADE_MS}ms ease`,
145
+ });
146
+ }
package/package.json CHANGED
@@ -4,43 +4,46 @@
4
4
  "type": "commercial",
5
5
  "url": "https://svgrid.com/pricing"
6
6
  },
7
- "version": "2.5.2",
7
+ "version": "2.6.0",
8
8
  "description": "Enterprise feature pack for SvGrid: Excel (xlsx), PDF, CSV, TSV and HTML export, Excel/CSV/JSON import, pivot tables with a drag-and-drop designer, paginated print, Kanban board and scheduler views. Requires a paid license key.",
9
9
  "license": "SEE LICENSE IN LICENSE",
10
10
  "author": "jQWidgets <sales@jqwidgets.com>",
11
11
  "homepage": "https://svgrid.com/pricing",
12
12
  "type": "module",
13
+ "types": "./dist/index.d.ts",
14
+ "module": "./dist/index.js",
15
+ "svelte": "./dist/index.js",
13
16
  "exports": {
14
17
  ".": {
15
- "types": "./src/index.ts",
16
- "svelte": "./src/index.ts",
17
- "import": "./src/index.ts"
18
+ "types": "./dist/index.d.ts",
19
+ "svelte": "./dist/index.js",
20
+ "import": "./dist/index.js"
18
21
  },
19
22
  "./export": {
20
- "types": "./src/export.ts",
21
- "svelte": "./src/export.ts",
22
- "import": "./src/export.ts"
23
+ "types": "./dist/export.d.ts",
24
+ "svelte": "./dist/export.js",
25
+ "import": "./dist/export.js"
23
26
  },
24
27
  "./print": {
25
- "types": "./src/print.ts",
26
- "svelte": "./src/print.ts",
27
- "import": "./src/print.ts"
28
+ "types": "./dist/print.d.ts",
29
+ "svelte": "./dist/print.js",
30
+ "import": "./dist/print.js"
28
31
  },
29
32
  "./import": {
30
- "types": "./src/import.ts",
31
- "svelte": "./src/import.ts",
32
- "import": "./src/import.ts"
33
+ "types": "./dist/import.d.ts",
34
+ "svelte": "./dist/import.js",
35
+ "import": "./dist/import.js"
33
36
  },
34
37
  "./pivot": {
35
- "types": "./src/pivot.ts",
36
- "svelte": "./src/pivot.ts",
37
- "import": "./src/pivot.ts"
38
+ "types": "./dist/pivot.d.ts",
39
+ "svelte": "./dist/pivot.js",
40
+ "import": "./dist/pivot.js"
38
41
  },
39
42
  "./studio": {
40
- "types": "./src/studio/index.ts",
43
+ "types": "./dist/studio/index.d.ts",
41
44
  "node": "./dist/node/studio.js",
42
- "svelte": "./src/studio/index.ts",
43
- "import": "./src/studio/index.ts"
45
+ "svelte": "./dist/studio/index.js",
46
+ "import": "./dist/studio/index.js"
44
47
  },
45
48
  "./cdn/svelte-external": {
46
49
  "import": "./dist/cdn/svgrid-enterprise.svelte-external.js",
@@ -51,10 +54,7 @@
51
54
  "unpkg": "./dist/cdn/svgrid-enterprise.svelte-external.js",
52
55
  "jsdelivr": "./dist/cdn/svgrid-enterprise.svelte-external.js",
53
56
  "files": [
54
- "src",
55
- "dist/node",
56
- "dist/cdn",
57
- "dist/designer",
57
+ "dist",
58
58
  "README.md",
59
59
  "LICENSE"
60
60
  ],
@@ -76,6 +76,7 @@
76
76
  }
77
77
  },
78
78
  "devDependencies": {
79
+ "@sveltejs/package": "^2.5.7",
79
80
  "@sveltejs/vite-plugin-svelte": "^7.0.0",
80
81
  "jszip": "^3.10.1",
81
82
  "pdfmake": "^0.2.10",
@@ -112,7 +113,8 @@
112
113
  "scripts": {
113
114
  "test": "vitest run",
114
115
  "test:types": "tsc -p tsconfig.json --noEmit",
115
- "build": "node ./scripts/build-cdn.mjs && node ./scripts/build-node.mjs && node ./scripts/build-designer.mjs",
116
+ "build": "svelte-package --input ./src --output ./dist && node ../../tools/strip-dist-tests.mjs ./dist && node ./scripts/build-cdn.mjs && node ./scripts/build-node.mjs && node ./scripts/build-designer.mjs",
117
+ "build:lib": "svelte-package --input ./src --output ./dist && node ../../tools/strip-dist-tests.mjs ./dist",
116
118
  "build:cdn": "node ./scripts/build-cdn.mjs",
117
119
  "build:node": "node ./scripts/build-node.mjs",
118
120
  "build:designer": "node ./scripts/build-designer.mjs",
@@ -1,67 +0,0 @@
1
- /**
2
- * DOM test: SvBoard renders an enum field's options as columns and each row as a
3
- * card in its column, with counts and badges. Mounts against the real CRM deals
4
- * schema so the board <-> sample path is covered.
5
- */
6
- import { describe, it, expect, afterEach, vi } from 'vitest'
7
- import { mount, unmount, flushSync } from 'svelte'
8
- import SvBoard from './SvBoard.svelte'
9
- import { getSampleApp } from './studio/samples/index'
10
- import type { EntitySchema } from './schema'
11
-
12
- const dealsSchema: EntitySchema = {
13
- name: 'deals',
14
- idField: 'id',
15
- fields: [
16
- { field: 'id', type: 'text', primaryKey: true, readonly: true },
17
- { field: 'title', type: 'text' },
18
- { field: 'value', type: 'number', label: 'Value ($)' },
19
- { field: 'stage', type: 'enum', options: [
20
- { value: 'lead', label: 'Lead', color: '#94a3b8' },
21
- { value: 'won', label: 'Won', color: '#10b981' },
22
- { value: 'lost', label: 'Lost', color: '#ef4444' },
23
- ] },
24
- ],
25
- }
26
-
27
- let host: HTMLElement | null = null
28
- let comp: ReturnType<typeof mount> | null = null
29
- afterEach(() => { if (comp) { unmount(comp); comp = null } if (host) { host.remove(); host = null } })
30
-
31
- function render(props: Record<string, unknown>): HTMLElement {
32
- host = document.createElement('div')
33
- document.body.appendChild(host)
34
- comp = mount(SvBoard, { target: host, props })
35
- flushSync()
36
- return host
37
- }
38
-
39
- describe('SvBoard (DOM)', () => {
40
- it('renders a column per enum option and a card per row', () => {
41
- const rows = [
42
- { id: 'd1', title: 'Alpha deal', value: 1000, stage: 'lead' },
43
- { id: 'd2', title: 'Beta deal', value: 2000, stage: 'won' },
44
- { id: 'd3', title: 'Gamma deal', value: 500, stage: 'lead' },
45
- ]
46
- const el = render({ schema: dealsSchema, rows, groupBy: 'stage', titleField: 'title', badgeField: 'value' })
47
- const cols = el.querySelectorAll('.sv-board__col')
48
- expect(cols.length).toBe(3) // lead / won / lost
49
- // Column titles + counts.
50
- const titles = [...el.querySelectorAll('.sv-board__coltitle')].map((n) => n.textContent)
51
- expect(titles).toEqual(['Lead', 'Won', 'Lost'])
52
- const counts = [...el.querySelectorAll('.sv-board__count')].map((n) => n.textContent)
53
- expect(counts).toEqual(['2', '1', '0'])
54
- // Cards + a formatted money badge ($ from the "Value ($)" label).
55
- const cards = [...el.querySelectorAll('.sv-board__card-title')].map((n) => n.textContent)
56
- expect(cards).toContain('Alpha deal')
57
- expect(el.textContent).toContain('$1,000')
58
- })
59
-
60
- it('mounts against the real CRM deals sample', () => {
61
- const proj = getSampleApp('crm')!.build()
62
- const rows = (proj.dataSources!.deals as { seed?: Record<string, unknown>[] }).seed!
63
- const el = render({ schema: proj.entities.find((e) => e.name === 'deals'), rows, groupBy: 'stage', titleField: 'title', badgeField: 'value', onMove: vi.fn() })
64
- expect(el.querySelectorAll('.sv-board__col').length).toBe(5) // 5 deal stages
65
- expect(el.querySelectorAll('.sv-board__card').length).toBe(rows.length)
66
- })
67
- })
@@ -1,113 +0,0 @@
1
- /**
2
- * DOM tests for the alerts overlay + editors. Covers (1) the observe -> fire
3
- * loop through `attachAlertEngine` (which needs the browser build for the toast
4
- * store), and (2) that the Svelte surfaces mount and render without error.
5
- */
6
- import { afterEach, describe, expect, it } from 'vitest'
7
- import { mount, unmount, flushSync } from 'svelte'
8
- import SvGridAlerts from './SvGridAlerts.svelte'
9
- import SvExpressionEditor from './SvExpressionEditor.svelte'
10
- import SvAlertsManager from './SvAlertsManager.svelte'
11
- import { attachAlertEngine } from './alerts/alert-engine-attach'
12
- import { alertStore } from './alerts/alert-store.svelte'
13
- import { createAlertRules, memoryAlertRules } from './alerts/alert-storage'
14
- import type { AlertRule } from './alerts/alert-types'
15
- import type { ExprColumn } from './expressions/expression-columns'
16
-
17
- type Row = { id: string; price: number; region: string }
18
-
19
- const columns: ExprColumn[] = [
20
- { id: 'price', name: 'Price', type: 'number' },
21
- { id: 'region', name: 'Region', type: 'text' },
22
- ]
23
-
24
- const highPrice: AlertRule = {
25
- id: 'r1',
26
- name: 'High price',
27
- enabled: true,
28
- severity: 'warning',
29
- scope: 'row',
30
- predicate: { kind: 'cmp', column: 'price', op: 'greaterThan', value: 100 },
31
- trigger: { type: 'dataChange' },
32
- actions: [{ kind: 'toast', message: '{region} at {value}' }, { kind: 'highlight', style: { background: '#fee2e2' } }],
33
- createdAt: 0,
34
- }
35
-
36
- let host: HTMLElement | null = null
37
- let comp: ReturnType<typeof mount> | null = null
38
- afterEach(() => {
39
- if (comp) { unmount(comp); comp = null }
40
- if (host) { host.remove(); host = null }
41
- alertStore.clear()
42
- })
43
-
44
- function render(Component: unknown, props: Record<string, unknown>): HTMLElement {
45
- host = document.createElement('div')
46
- document.body.appendChild(host)
47
- comp = mount(Component as never, { target: host, props })
48
- flushSync()
49
- return host
50
- }
51
-
52
- describe('attachAlertEngine observe -> fire loop', () => {
53
- it('seeds silently, then fires when a row newly matches', () => {
54
- const rows: Row[] = [
55
- { id: 'a', price: 80, region: 'EU' },
56
- { id: 'b', price: 90, region: 'US' },
57
- ]
58
- const attach = attachAlertEngine<Row>({
59
- rules: [highPrice],
60
- getRowId: (r) => r.id,
61
- getData: () => rows,
62
- intervalMs: 0, // drive manually
63
- })
64
-
65
- attach.tick() // initial seed - nothing above 100 yet
66
- expect(alertStore.events).toHaveLength(0)
67
-
68
- rows[0] = { ...rows[0]!, price: 130 } // 'a' crosses the threshold
69
- attach.tick()
70
- expect(alertStore.events.length).toBe(1)
71
- expect(alertStore.events[0]!.message).toBe('EU at 130')
72
-
73
- // Staying above the line must not re-fire.
74
- attach.tick()
75
- expect(alertStore.events.length).toBe(1)
76
- attach.detach()
77
- })
78
- })
79
-
80
- describe('SvGridAlerts (DOM)', () => {
81
- it('renders the alerts controls', () => {
82
- const el = render(SvGridAlerts, {
83
- data: [{ id: 'a', price: 120, region: 'EU' }],
84
- columns,
85
- rules: [highPrice],
86
- })
87
- expect(el.querySelector('.sg-alerts-bell')).toBeTruthy()
88
- expect(el.textContent).toContain('Manage alerts')
89
- })
90
- })
91
-
92
- describe('SvExpressionEditor (DOM)', () => {
93
- it('renders builder + text mode tabs', () => {
94
- const el = render(SvExpressionEditor, {
95
- columns,
96
- value: { kind: 'cmp', column: 'price', op: 'greaterThan', value: 100 },
97
- rows: [{ price: 120 }, { price: 50 }],
98
- })
99
- expect(el.textContent).toContain('Builder')
100
- expect(el.textContent).toContain('Text')
101
- // Live preview counts matches over the sample rows.
102
- expect(el.textContent).toContain('Matches 1 of 2')
103
- })
104
- })
105
-
106
- describe('SvAlertsManager (DOM)', () => {
107
- it('lists persisted rules when open', () => {
108
- const manager = createAlertRules(memoryAlertRules([highPrice]))
109
- render(SvAlertsManager, { open: true, manager, columns })
110
- // The manager renders inside a portalled modal.
111
- expect(document.body.textContent).toContain('High price')
112
- })
113
- })