@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.
- package/dist/SvAlertRuleEditor.svelte.d.ts +13 -0
- package/dist/SvAlertsManager.svelte.d.ts +14 -0
- package/dist/SvAlertsPanel.svelte.d.ts +9 -0
- package/dist/SvAuthGate.svelte.d.ts +22 -0
- package/dist/SvBoard.svelte.d.ts +35 -0
- package/dist/SvExportMenu.svelte.d.ts +61 -0
- package/dist/SvExpressionEditor.svelte.d.ts +12 -0
- package/dist/SvFileInput.svelte.d.ts +20 -0
- package/dist/SvGridAlerts.svelte.d.ts +77 -0
- package/dist/SvGridBoard.svelte.d.ts +30 -0
- package/dist/SvGridEditPanel.svelte.d.ts +73 -0
- package/dist/SvGridMasterDetail.svelte.d.ts +49 -0
- package/dist/SvGridScheduler.svelte.d.ts +30 -0
- package/dist/SvImportDialog.svelte.d.ts +88 -0
- package/dist/SvLookupInput.svelte.d.ts +21 -0
- package/dist/SvPivotDesigner.svelte.d.ts +176 -0
- package/dist/SvRecordDetail.svelte.d.ts +58 -0
- package/dist/SvSchedule.svelte.d.ts +29 -0
- package/dist/SvSchemaChart.svelte.d.ts +61 -0
- package/dist/SvSchemaDashboard.svelte.d.ts +46 -0
- package/dist/alerts/alert-engine-attach.d.ts +79 -0
- package/dist/alerts/alert-engine-attach.js +106 -0
- package/dist/alerts/alert-engine.d.ts +42 -0
- package/dist/alerts/alert-engine.js +196 -0
- package/dist/alerts/alert-formats.d.ts +26 -0
- package/dist/alerts/alert-formats.js +58 -0
- package/dist/alerts/alert-observer.d.ts +54 -0
- package/dist/alerts/alert-observer.js +156 -0
- package/dist/alerts/alert-scheduler.d.ts +30 -0
- package/dist/alerts/alert-scheduler.js +54 -0
- package/dist/alerts/alert-storage.d.ts +31 -0
- package/dist/alerts/alert-storage.js +92 -0
- package/dist/alerts/alert-store.svelte.d.ts +24 -0
- package/dist/alerts/alert-store.svelte.js +69 -0
- package/dist/alerts/alert-types.d.ts +86 -0
- package/dist/alerts/alert-types.js +1 -0
- package/dist/alerts.d.ts +2 -0
- package/{src/alerts.ts → dist/alerts.js} +9 -9
- package/dist/board.d.ts +7 -0
- package/{src/board.ts → dist/board.js} +13 -14
- package/dist/cdn/svgrid-enterprise.svelte-external.js +2987 -2981
- package/dist/designer/assets/{index-CM5xvaOy.js → index-BF0UH638.js} +3 -3
- package/dist/designer/assets/{src-D-ET9Mmo.js → src-BPJruwB9.js} +184 -184
- package/dist/designer/index.html +2 -2
- package/dist/edit-panel.d.ts +105 -0
- package/dist/edit-panel.js +350 -0
- package/dist/export-conditional.d.ts +31 -0
- package/dist/export-conditional.js +65 -0
- package/dist/export-ooxml.d.ts +93 -0
- package/dist/export-ooxml.js +385 -0
- package/dist/export-pdf.d.ts +107 -0
- package/dist/export-pdf.js +144 -0
- package/dist/export-print.d.ts +55 -0
- package/dist/export-print.js +91 -0
- package/{src/export-serialize.ts → dist/export-serialize.d.ts} +11 -24
- package/dist/export-serialize.js +11 -0
- package/dist/export-xls.d.ts +26 -0
- package/dist/export-xls.js +157 -0
- package/dist/export.d.ts +323 -0
- package/dist/export.js +1021 -0
- package/dist/expressions/evaluate.d.ts +17 -0
- package/dist/expressions/evaluate.js +214 -0
- package/dist/expressions/expression-columns.d.ts +61 -0
- package/dist/expressions/expression-columns.js +72 -0
- package/dist/expressions/expression-types.d.ts +125 -0
- package/dist/expressions/expression-types.js +1 -0
- package/dist/expressions/parse.d.ts +25 -0
- package/dist/expressions/parse.js +537 -0
- package/dist/import.d.ts +232 -0
- package/dist/import.js +846 -0
- package/dist/index.d.ts +66 -0
- package/dist/index.js +91 -0
- package/dist/install.d.ts +70 -0
- package/dist/install.js +61 -0
- package/dist/license-core.d.ts +37 -0
- package/dist/license-core.js +81 -0
- package/dist/license.d.ts +30 -0
- package/dist/license.js +139 -0
- package/dist/master-detail.d.ts +23 -0
- package/dist/master-detail.js +35 -0
- package/dist/node/studio.js +1 -1
- package/dist/pivot-chart.d.ts +28 -0
- package/dist/pivot-chart.js +71 -0
- package/dist/pivot-designer.d.ts +69 -0
- package/dist/pivot-designer.js +38 -0
- package/dist/pivot-enable.d.ts +6 -0
- package/{src/pivot-enable.ts → dist/pivot-enable.js} +13 -18
- package/dist/pivot.d.ts +111 -0
- package/dist/pivot.js +353 -0
- package/dist/print.d.ts +33 -0
- package/dist/print.js +61 -0
- package/dist/revoked.d.ts +1 -0
- package/{src/revoked.ts → dist/revoked.js} +5 -6
- package/dist/scheduler-assignments.d.ts +64 -0
- package/dist/scheduler-assignments.js +92 -0
- package/dist/scheduler-axis.d.ts +81 -0
- package/dist/scheduler-axis.js +180 -0
- package/{src/scheduler-booking.ts → dist/scheduler-booking.d.ts} +10 -43
- package/dist/scheduler-booking.js +50 -0
- package/dist/scheduler-config.d.ts +177 -0
- package/dist/scheduler-config.js +1 -0
- package/dist/scheduler-dependencies.d.ts +89 -0
- package/dist/scheduler-dependencies.js +179 -0
- package/dist/scheduler-freebusy.d.ts +19 -0
- package/{src/scheduler-freebusy.ts → dist/scheduler-freebusy.js} +9 -19
- package/{src/scheduler-heatmap.ts → dist/scheduler-heatmap.d.ts} +12 -35
- package/dist/scheduler-heatmap.js +41 -0
- package/dist/scheduler-resource-tree.d.ts +48 -0
- package/dist/scheduler-resource-tree.js +78 -0
- package/dist/scheduler-slots.d.ts +37 -0
- package/dist/scheduler-slots.js +80 -0
- package/dist/scheduler-summary.d.ts +41 -0
- package/dist/scheduler-summary.js +54 -0
- package/dist/scheduler.d.ts +7 -0
- package/{src/scheduler.ts → dist/scheduler.js} +13 -14
- package/dist/scheduling.d.ts +132 -0
- package/dist/scheduling.js +228 -0
- package/dist/schema-designer.d.ts +42 -0
- package/dist/schema-designer.js +117 -0
- package/dist/schema.d.ts +369 -0
- package/dist/schema.js +216 -0
- package/dist/smart-shim.d.ts +62 -0
- package/dist/smart-shim.js +34 -0
- package/dist/sources/aggregate.d.ts +43 -0
- package/dist/sources/aggregate.js +60 -0
- package/dist/sources/auth-supabase.d.ts +69 -0
- package/dist/sources/auth-supabase.js +39 -0
- package/dist/sources/dashboard.d.ts +65 -0
- package/dist/sources/dashboard.js +95 -0
- package/dist/sources/field-inference.d.ts +23 -0
- package/dist/sources/field-inference.js +52 -0
- package/dist/sources/filters.d.ts +35 -0
- package/dist/sources/filters.js +52 -0
- package/dist/sources/index.d.ts +18 -0
- package/dist/sources/index.js +18 -0
- package/dist/sources/introspect-supabase.d.ts +30 -0
- package/dist/sources/introspect-supabase.js +134 -0
- package/dist/sources/realtime-supabase.d.ts +37 -0
- package/dist/sources/realtime-supabase.js +52 -0
- package/dist/sources/relation-lookup.d.ts +50 -0
- package/dist/sources/relation-lookup.js +77 -0
- package/dist/sources/rest-adapters.d.ts +48 -0
- package/dist/sources/rest-adapters.js +85 -0
- package/dist/sources/rest.d.ts +38 -0
- package/dist/sources/rest.js +86 -0
- package/dist/sources/schema-from-columns.d.ts +37 -0
- package/dist/sources/schema-from-columns.js +48 -0
- package/dist/sources/supabase.d.ts +33 -0
- package/dist/sources/supabase.js +74 -0
- package/dist/sources/with-entity-rules.d.ts +25 -0
- package/dist/sources/with-entity-rules.js +47 -0
- package/dist/sources/with-relation-labels.d.ts +26 -0
- package/dist/sources/with-relation-labels.js +38 -0
- package/dist/staged-editing.d.ts +85 -0
- package/dist/staged-editing.js +0 -0
- package/dist/studio/bug-report.d.ts +61 -0
- package/dist/studio/bug-report.js +126 -0
- package/dist/studio/cli.d.ts +56 -0
- package/dist/studio/cli.js +70 -0
- package/dist/studio/copilot-core.d.ts +22 -0
- package/{src/studio/copilot-core.ts → dist/studio/copilot-core.js} +34 -38
- package/dist/studio/csv.d.ts +36 -0
- package/dist/studio/csv.js +173 -0
- package/dist/studio/db-connect-string.d.ts +45 -0
- package/dist/studio/db-connect-string.js +113 -0
- package/dist/studio/deploy-cli.d.ts +35 -0
- package/dist/studio/deploy-cli.js +81 -0
- package/dist/studio/emit-project.d.ts +77 -0
- package/dist/studio/emit-project.js +5389 -0
- package/dist/studio/emit-schema.d.ts +110 -0
- package/dist/studio/emit-schema.js +1128 -0
- package/dist/studio/index.d.ts +35 -0
- package/dist/studio/index.js +38 -0
- package/dist/studio/init-flow.d.ts +58 -0
- package/dist/studio/init-flow.js +451 -0
- package/dist/studio/introspect-db.d.ts +47 -0
- package/dist/studio/introspect-db.js +255 -0
- package/dist/studio/introspect-openapi.d.ts +19 -0
- package/dist/studio/introspect-openapi.js +244 -0
- package/dist/studio/introspect-prisma.d.ts +25 -0
- package/dist/studio/introspect-prisma.js +164 -0
- package/dist/studio/introspect.d.ts +35 -0
- package/dist/studio/introspect.js +306 -0
- package/dist/studio/project.d.ts +1327 -0
- package/dist/studio/project.js +1798 -0
- package/dist/studio/sample-data.d.ts +19 -0
- package/dist/studio/sample-data.js +207 -0
- package/dist/studio/samples/ats.d.ts +2 -0
- package/dist/studio/samples/ats.js +194 -0
- package/dist/studio/samples/clinic.d.ts +2 -0
- package/dist/studio/samples/clinic.js +171 -0
- package/dist/studio/samples/crm.d.ts +2 -0
- package/dist/studio/samples/crm.js +280 -0
- package/dist/studio/samples/datasets.d.ts +38 -0
- package/dist/studio/samples/datasets.js +296 -0
- package/dist/studio/samples/ecommerce.d.ts +2 -0
- package/dist/studio/samples/ecommerce.js +178 -0
- package/dist/studio/samples/events.d.ts +2 -0
- package/dist/studio/samples/events.js +192 -0
- package/dist/studio/samples/fleet.d.ts +2 -0
- package/dist/studio/samples/fleet.js +203 -0
- package/dist/studio/samples/gym.d.ts +2 -0
- package/dist/studio/samples/gym.js +205 -0
- package/dist/studio/samples/hr.d.ts +2 -0
- package/dist/studio/samples/hr.js +186 -0
- package/dist/studio/samples/index.d.ts +13 -0
- package/dist/studio/samples/index.js +44 -0
- package/dist/studio/samples/insurance.d.ts +2 -0
- package/dist/studio/samples/insurance.js +220 -0
- package/dist/studio/samples/inventory.d.ts +2 -0
- package/dist/studio/samples/inventory.js +204 -0
- package/dist/studio/samples/invoicing.d.ts +2 -0
- package/dist/studio/samples/invoicing.js +154 -0
- package/dist/studio/samples/library.d.ts +2 -0
- package/dist/studio/samples/library.js +171 -0
- package/dist/studio/samples/live-data.d.ts +5 -0
- package/dist/studio/samples/live-data.js +261 -0
- package/dist/studio/samples/projects.d.ts +2 -0
- package/dist/studio/samples/projects.js +203 -0
- package/dist/studio/samples/realestate.d.ts +2 -0
- package/dist/studio/samples/realestate.js +187 -0
- package/dist/studio/samples/restaurant.d.ts +2 -0
- package/dist/studio/samples/restaurant.js +180 -0
- package/dist/studio/samples/school.d.ts +2 -0
- package/dist/studio/samples/school.js +188 -0
- package/dist/studio/samples/shared.d.ts +142 -0
- package/dist/studio/samples/shared.js +164 -0
- package/dist/studio/samples/starter.d.ts +4 -0
- package/dist/studio/samples/starter.js +237 -0
- package/dist/studio/samples/subscriptions.d.ts +2 -0
- package/dist/studio/samples/subscriptions.js +175 -0
- package/dist/studio/samples/support.d.ts +2 -0
- package/dist/studio/samples/support.js +209 -0
- package/dist/studio/scaffold-app.d.ts +22 -0
- package/{src/studio/scaffold-app.ts → dist/studio/scaffold-app.js} +45 -63
- package/dist/studio/scaffold.d.ts +63 -0
- package/dist/studio/scaffold.js +346 -0
- package/dist/studio/screen-suites.d.ts +193 -0
- package/dist/studio/screen-suites.js +297 -0
- package/dist/studio/themes.d.ts +34 -0
- package/dist/studio/themes.js +41 -0
- package/dist/studio/ui-components.d.ts +89 -0
- package/dist/studio/ui-components.generated.d.ts +29 -0
- package/dist/studio/ui-components.generated.js +7139 -0
- package/dist/studio/ui-components.js +673 -0
- package/dist/studio/user-error.d.ts +23 -0
- package/{src/studio/user-error.ts → dist/studio/user-error.js} +10 -13
- package/dist/studio/verify.d.ts +34 -0
- package/dist/studio/verify.js +47 -0
- package/dist/sveltekit/in-memory.d.ts +14 -0
- package/dist/sveltekit/in-memory.js +113 -0
- package/dist/sveltekit/index.d.ts +6 -0
- package/dist/sveltekit/index.js +5 -0
- package/dist/sveltekit/query-plan.d.ts +44 -0
- package/dist/sveltekit/query-plan.js +76 -0
- package/dist/sveltekit/sql-source.d.ts +47 -0
- package/dist/sveltekit/sql-source.js +106 -0
- package/dist/sveltekit/sql.d.ts +48 -0
- package/dist/sveltekit/sql.js +73 -0
- package/dist/sveltekit/transport.d.ts +209 -0
- package/dist/sveltekit/transport.js +219 -0
- package/{src/sveltekit/types.ts → dist/sveltekit/types.d.ts} +8 -11
- package/dist/sveltekit/types.js +1 -0
- package/dist/upgrade-prompt.d.ts +16 -0
- package/dist/upgrade-prompt.js +141 -0
- package/dist/version.d.ts +13 -0
- package/{src/version.ts → dist/version.js} +1 -1
- package/dist/watermark.d.ts +2 -0
- package/dist/watermark.js +146 -0
- package/package.json +26 -24
- package/src/SvBoard.dom.test.ts +0 -67
- package/src/SvGridAlerts.dom.test.ts +0 -113
- package/src/SvGridEditPanel.dom.test.ts +0 -320
- package/src/SvRecordDetail.dom.test.ts +0 -137
- package/src/SvSchedule.dom.test.ts +0 -57
- package/src/ai-export-pdf.dom.test.ts +0 -77
- package/src/ai-export-xlsx.dom.test.ts +0 -90
- package/src/ai-export.dom.test.ts +0 -114
- package/src/alerts/alert-engine-attach.ts +0 -165
- package/src/alerts/alert-engine.test.ts +0 -135
- package/src/alerts/alert-engine.ts +0 -260
- package/src/alerts/alert-formats.test.ts +0 -87
- package/src/alerts/alert-formats.ts +0 -77
- package/src/alerts/alert-observer.test.ts +0 -189
- package/src/alerts/alert-observer.ts +0 -208
- package/src/alerts/alert-scheduler.ts +0 -96
- package/src/alerts/alert-storage.test.ts +0 -54
- package/src/alerts/alert-storage.ts +0 -116
- package/src/alerts/alert-store.svelte.ts +0 -80
- package/src/alerts/alert-types.ts +0 -94
- package/src/board.dom.test.ts +0 -941
- package/src/edit-panel.test.ts +0 -322
- package/src/edit-panel.ts +0 -379
- package/src/export-conditional.test.ts +0 -60
- package/src/export-conditional.ts +0 -94
- package/src/export-ooxml.test.ts +0 -152
- package/src/export-ooxml.ts +0 -489
- package/src/export-pdf.test.ts +0 -138
- package/src/export-pdf.ts +0 -245
- package/src/export-print.test.ts +0 -66
- package/src/export-print.ts +0 -132
- package/src/export-serialize.test.ts +0 -56
- package/src/export-xls.ts +0 -199
- package/src/export-xlsx-roundtrip.test.ts +0 -120
- package/src/export-xlsx.test.ts +0 -150
- package/src/export.test.ts +0 -349
- package/src/export.ts +0 -1464
- package/src/expressions/evaluate.test.ts +0 -111
- package/src/expressions/evaluate.ts +0 -237
- package/src/expressions/expression-columns.ts +0 -133
- package/src/expressions/expression-types.ts +0 -84
- package/src/expressions/parse.test.ts +0 -106
- package/src/expressions/parse.ts +0 -610
- package/src/import-automap.test.ts +0 -131
- package/src/import-hardening.test.ts +0 -158
- package/src/import.test.ts +0 -415
- package/src/import.ts +0 -1044
- package/src/index.ts +0 -569
- package/src/install.ts +0 -154
- package/src/license-core.test.ts +0 -23
- package/src/license-core.ts +0 -107
- package/src/license-expiry.test.ts +0 -127
- package/src/license.ts +0 -137
- package/src/master-detail.test.ts +0 -61
- package/src/master-detail.ts +0 -42
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/_metadata.json +0 -178
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-ZrPsKxob.js +0 -3875
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-ZrPsKxob.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-ACqvWGE2.js +0 -21
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-ACqvWGE2.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-D3w5jt92.js +0 -1938
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-D3w5jt92.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-CC2V3H0y.js +0 -205
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-CC2V3H0y.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-BXP37tAa.js +0 -18
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-BXP37tAa.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-DwubnU5b.js +0 -264
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-DwubnU5b.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-hD7f6PUz.js +0 -697
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-hD7f6PUz.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js +0 -134
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js +0 -55
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_attachments.js +0 -2
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js +0 -46843
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js +0 -237
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_events.js +0 -2
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js +0 -4
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_client.js +0 -7
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js +0 -4
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js +0 -5
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js +0 -5
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js +0 -5
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_server.js +0 -6
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js +0 -83
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js +0 -559
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js +0 -24
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js +0 -122
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_server.js +0 -2
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js +0 -89
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js +0 -241
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DBx1SCN6.js +0 -4938
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DBx1SCN6.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-gjfpSTFS.js +0 -495
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-gjfpSTFS.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-DKoOKg8S.js +0 -190
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-DKoOKg8S.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-C0MiR7eR.js +0 -8
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-C0MiR7eR.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-B6Y7P0Q-.js +0 -138
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-B6Y7P0Q-.js.map +0 -1
- package/src/pivot-chart.test.ts +0 -86
- package/src/pivot-chart.ts +0 -112
- package/src/pivot-designer.ts +0 -101
- package/src/pivot.test.ts +0 -335
- package/src/pivot.ts +0 -578
- package/src/print.ts +0 -107
- package/src/scheduler-assignments.test.ts +0 -97
- package/src/scheduler-assignments.ts +0 -134
- package/src/scheduler-axis.test.ts +0 -108
- package/src/scheduler-axis.ts +0 -238
- package/src/scheduler-booking.test.ts +0 -57
- package/src/scheduler-config.ts +0 -179
- package/src/scheduler-dependencies.test.ts +0 -155
- package/src/scheduler-dependencies.ts +0 -223
- package/src/scheduler-freebusy.test.ts +0 -41
- package/src/scheduler-heatmap.test.ts +0 -39
- package/src/scheduler-resource-tree.test.ts +0 -84
- package/src/scheduler-resource-tree.ts +0 -107
- package/src/scheduler-slots.test.ts +0 -53
- package/src/scheduler-slots.ts +0 -94
- package/src/scheduler-summary.test.ts +0 -47
- package/src/scheduler-summary.ts +0 -81
- package/src/scheduling.test.ts +0 -194
- package/src/scheduling.ts +0 -293
- package/src/schema-designer.test.ts +0 -121
- package/src/schema-designer.ts +0 -142
- package/src/schema.test.ts +0 -268
- package/src/schema.ts +0 -562
- package/src/smart-shim.ts +0 -107
- package/src/sources/aggregate.test.ts +0 -79
- package/src/sources/aggregate.ts +0 -102
- package/src/sources/auth-supabase.test.ts +0 -80
- package/src/sources/auth-supabase.ts +0 -87
- package/src/sources/dashboard.kpi.test.ts +0 -50
- package/src/sources/dashboard.test.ts +0 -61
- package/src/sources/dashboard.ts +0 -136
- package/src/sources/field-inference.test.ts +0 -60
- package/src/sources/field-inference.ts +0 -63
- package/src/sources/filters.test.ts +0 -58
- package/src/sources/filters.ts +0 -70
- package/src/sources/index.ts +0 -67
- package/src/sources/introspect-supabase.test.ts +0 -112
- package/src/sources/introspect-supabase.ts +0 -139
- package/src/sources/realtime-supabase.test.ts +0 -93
- package/src/sources/realtime-supabase.ts +0 -99
- package/src/sources/relation-lookup.test.ts +0 -99
- package/src/sources/relation-lookup.ts +0 -128
- package/src/sources/rest-adapters.test.ts +0 -95
- package/src/sources/rest-adapters.ts +0 -120
- package/src/sources/rest.test.ts +0 -104
- package/src/sources/rest.ts +0 -129
- package/src/sources/schema-from-columns.test.ts +0 -106
- package/src/sources/schema-from-columns.ts +0 -88
- package/src/sources/supabase.test.ts +0 -110
- package/src/sources/supabase.ts +0 -99
- package/src/sources/with-entity-rules.test.ts +0 -104
- package/src/sources/with-entity-rules.ts +0 -78
- package/src/sources/with-relation-labels.test.ts +0 -75
- package/src/sources/with-relation-labels.ts +0 -73
- package/src/staged-editing.ts +0 -0
- package/src/studio/bug-report.test.ts +0 -101
- package/src/studio/bug-report.ts +0 -165
- package/src/studio/cli.test.ts +0 -187
- package/src/studio/cli.ts +0 -117
- package/src/studio/copilot-core.test.ts +0 -45
- package/src/studio/csv.test.ts +0 -90
- package/src/studio/csv.ts +0 -165
- package/src/studio/db-connect-string.test.ts +0 -94
- package/src/studio/db-connect-string.ts +0 -128
- package/src/studio/deploy-cli.test.ts +0 -56
- package/src/studio/deploy-cli.ts +0 -100
- package/src/studio/emit-project.test.ts +0 -3324
- package/src/studio/emit-project.ts +0 -5377
- package/src/studio/emit-schema.test.ts +0 -111
- package/src/studio/emit-schema.ts +0 -1181
- package/src/studio/index.ts +0 -380
- package/src/studio/init-flow.test.ts +0 -514
- package/src/studio/init-flow.ts +0 -556
- package/src/studio/introspect-db.test.ts +0 -186
- package/src/studio/introspect-db.ts +0 -312
- package/src/studio/introspect-openapi.test.ts +0 -84
- package/src/studio/introspect-openapi.ts +0 -252
- package/src/studio/introspect-prisma.test.ts +0 -99
- package/src/studio/introspect-prisma.ts +0 -175
- package/src/studio/introspect.test.ts +0 -172
- package/src/studio/introspect.ts +0 -310
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/_svelte_metadata.json +0 -1
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/package.json +0 -3
- package/src/studio/pipeline.test.ts +0 -42
- package/src/studio/project-robust.test.ts +0 -157
- package/src/studio/project.test.ts +0 -929
- package/src/studio/project.ts +0 -2394
- package/src/studio/sample-data.test.ts +0 -58
- package/src/studio/sample-data.ts +0 -203
- package/src/studio/samples/ats.ts +0 -202
- package/src/studio/samples/clinic.ts +0 -179
- package/src/studio/samples/crm.ts +0 -291
- package/src/studio/samples/datasets.test.ts +0 -84
- package/src/studio/samples/datasets.ts +0 -340
- package/src/studio/samples/ecommerce.ts +0 -187
- package/src/studio/samples/events.ts +0 -201
- package/src/studio/samples/fleet.ts +0 -213
- package/src/studio/samples/gym.ts +0 -215
- package/src/studio/samples/hr.ts +0 -195
- package/src/studio/samples/index.ts +0 -55
- package/src/studio/samples/insurance.ts +0 -229
- package/src/studio/samples/inventory.ts +0 -213
- package/src/studio/samples/invoicing.ts +0 -162
- package/src/studio/samples/library.ts +0 -180
- package/src/studio/samples/live-data.test.ts +0 -99
- package/src/studio/samples/live-data.ts +0 -306
- package/src/studio/samples/projects.ts +0 -212
- package/src/studio/samples/realestate.ts +0 -196
- package/src/studio/samples/restaurant.ts +0 -189
- package/src/studio/samples/samples.test.ts +0 -304
- package/src/studio/samples/school.ts +0 -197
- package/src/studio/samples/seed-floor.test.ts +0 -25
- package/src/studio/samples/shared.ts +0 -237
- package/src/studio/samples/starter.ts +0 -251
- package/src/studio/samples/subscriptions.ts +0 -183
- package/src/studio/samples/support.ts +0 -216
- package/src/studio/scaffold-app.test.ts +0 -91
- package/src/studio/scaffold.test.ts +0 -192
- package/src/studio/scaffold.ts +0 -390
- package/src/studio/screen-suites.test.ts +0 -269
- package/src/studio/screen-suites.ts +0 -448
- package/src/studio/themes.ts +0 -62
- package/src/studio/ui-components-surface.test.ts +0 -185
- package/src/studio/ui-components.generated.ts +0 -7154
- package/src/studio/ui-components.ts +0 -742
- package/src/studio/verify.test.ts +0 -47
- package/src/studio/verify.ts +0 -79
- package/src/sveltekit/in-memory.test.ts +0 -104
- package/src/sveltekit/in-memory.ts +0 -129
- package/src/sveltekit/index.ts +0 -24
- package/src/sveltekit/query-plan.test.ts +0 -109
- package/src/sveltekit/query-plan.ts +0 -125
- package/src/sveltekit/sql-source.test.ts +0 -198
- package/src/sveltekit/sql-source.ts +0 -171
- package/src/sveltekit/sql.test.ts +0 -80
- package/src/sveltekit/sql.ts +0 -131
- package/src/sveltekit/transport-scope.test.ts +0 -125
- package/src/sveltekit/transport.test.ts +0 -201
- package/src/sveltekit/transport.ts +0 -373
- package/src/upgrade-prompt.test.ts +0 -71
- package/src/upgrade-prompt.ts +0 -162
- package/src/version.test.ts +0 -17
- package/src/watermark.test.ts +0 -97
- package/src/watermark.ts +0 -156
- /package/{src → dist}/SvAlertRuleEditor.svelte +0 -0
- /package/{src → dist}/SvAlertsManager.svelte +0 -0
- /package/{src → dist}/SvAlertsPanel.svelte +0 -0
- /package/{src → dist}/SvAuthGate.svelte +0 -0
- /package/{src → dist}/SvBoard.svelte +0 -0
- /package/{src → dist}/SvExportMenu.svelte +0 -0
- /package/{src → dist}/SvExpressionEditor.svelte +0 -0
- /package/{src → dist}/SvFileInput.svelte +0 -0
- /package/{src → dist}/SvGridAlerts.svelte +0 -0
- /package/{src → dist}/SvGridBoard.svelte +0 -0
- /package/{src → dist}/SvGridEditPanel.svelte +0 -0
- /package/{src → dist}/SvGridMasterDetail.svelte +0 -0
- /package/{src → dist}/SvGridScheduler.svelte +0 -0
- /package/{src → dist}/SvImportDialog.svelte +0 -0
- /package/{src → dist}/SvLookupInput.svelte +0 -0
- /package/{src → dist}/SvPivotDesigner.svelte +0 -0
- /package/{src → dist}/SvRecordDetail.svelte +0 -0
- /package/{src → dist}/SvSchedule.svelte +0 -0
- /package/{src → dist}/SvSchemaChart.svelte +0 -0
- /package/{src → dist}/SvSchemaDashboard.svelte +0 -0
- /package/{src → dist}/pdfmake-shims.d.ts +0 -0
- /package/{src → dist}/smart.export.d.ts +0 -0
- /package/{src → dist}/smart.export.js +0 -0
- /package/{src → dist}/studio/HANDLERS-DESIGN.md +0 -0
- /package/{src → dist/studio}/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/_svelte_metadata.json +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/_metadata.json +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-BOv1rBKp.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-BOv1rBKp.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-B9vgIdCd.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-B9vgIdCd.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-T1qbW_qD.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-T1qbW_qD.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-Bo11SfVK.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-Bo11SfVK.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-X7D4vfrZ.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-X7D4vfrZ.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-oyUje5i1.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-oyUje5i1.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-DeSQgSFm.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-DeSQgSFm.js.map +0 -0
- /package/{src → dist/studio}/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/package.json +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_attachments.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_events.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_client.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_server.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_server.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-BbWyXNk1.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-BbWyXNk1.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DI_fC7vt.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DI_fC7vt.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-Dyr3lQv9.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-Dyr3lQv9.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-_9FHH-LF.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-_9FHH-LF.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-CUbSPnyP.js +0 -0
- /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;">×</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, '&')
|
|
138
|
+
.replace(/</g, '<')
|
|
139
|
+
.replace(/>/g, '>')
|
|
140
|
+
.replace(/"/g, '"');
|
|
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";
|
|
@@ -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.
|
|
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": "./
|
|
16
|
-
"svelte": "./
|
|
17
|
-
"import": "./
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"svelte": "./dist/index.js",
|
|
20
|
+
"import": "./dist/index.js"
|
|
18
21
|
},
|
|
19
22
|
"./export": {
|
|
20
|
-
"types": "./
|
|
21
|
-
"svelte": "./
|
|
22
|
-
"import": "./
|
|
23
|
+
"types": "./dist/export.d.ts",
|
|
24
|
+
"svelte": "./dist/export.js",
|
|
25
|
+
"import": "./dist/export.js"
|
|
23
26
|
},
|
|
24
27
|
"./print": {
|
|
25
|
-
"types": "./
|
|
26
|
-
"svelte": "./
|
|
27
|
-
"import": "./
|
|
28
|
+
"types": "./dist/print.d.ts",
|
|
29
|
+
"svelte": "./dist/print.js",
|
|
30
|
+
"import": "./dist/print.js"
|
|
28
31
|
},
|
|
29
32
|
"./import": {
|
|
30
|
-
"types": "./
|
|
31
|
-
"svelte": "./
|
|
32
|
-
"import": "./
|
|
33
|
+
"types": "./dist/import.d.ts",
|
|
34
|
+
"svelte": "./dist/import.js",
|
|
35
|
+
"import": "./dist/import.js"
|
|
33
36
|
},
|
|
34
37
|
"./pivot": {
|
|
35
|
-
"types": "./
|
|
36
|
-
"svelte": "./
|
|
37
|
-
"import": "./
|
|
38
|
+
"types": "./dist/pivot.d.ts",
|
|
39
|
+
"svelte": "./dist/pivot.js",
|
|
40
|
+
"import": "./dist/pivot.js"
|
|
38
41
|
},
|
|
39
42
|
"./studio": {
|
|
40
|
-
"types": "./
|
|
43
|
+
"types": "./dist/studio/index.d.ts",
|
|
41
44
|
"node": "./dist/node/studio.js",
|
|
42
|
-
"svelte": "./
|
|
43
|
-
"import": "./
|
|
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
|
-
"
|
|
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",
|
package/src/SvBoard.dom.test.ts
DELETED
|
@@ -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
|
-
})
|