@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,176 @@
|
|
|
1
|
+
type PivotInputRow = Record<string, unknown>;
|
|
2
|
+
/**
|
|
3
|
+
* SvPivotDesigner - Excel-style pivot table designer.
|
|
4
|
+
*
|
|
5
|
+
* Self-contained, controlled component. The consumer holds the data
|
|
6
|
+
* + the field list + the layout state; everything else (drag-and-drop,
|
|
7
|
+
* chip menus, search, presets, the inline pivot grid) is built in.
|
|
8
|
+
*
|
|
9
|
+
* Minimal wire-up (in a .svelte file):
|
|
10
|
+
* const fields = [
|
|
11
|
+
* { field: 'region', label: 'Region', kind: 'dimension' },
|
|
12
|
+
* { field: 'quarter', label: 'Quarter', kind: 'dimension' },
|
|
13
|
+
* { field: 'amount', label: 'Revenue', kind: 'measure', defaultAgg: 'sum' },
|
|
14
|
+
* ]
|
|
15
|
+
* let layout = $state(defaultLayoutFor(fields))
|
|
16
|
+
*
|
|
17
|
+
* SvPivotDesigner {data} {fields} bind:layout
|
|
18
|
+
*/
|
|
19
|
+
import { type ColumnDef } from '@svgrid/grid';
|
|
20
|
+
import { type PivotRow, type PivotAggregatorId } from './pivot';
|
|
21
|
+
import { type PivotField, type PivotLayout, type PivotPreset } from './pivot-designer';
|
|
22
|
+
declare function $$render<T extends PivotInputRow>(): {
|
|
23
|
+
props: {
|
|
24
|
+
/** Flat input rows. */
|
|
25
|
+
data: T[];
|
|
26
|
+
/** All fields the user can pick from the rail. */
|
|
27
|
+
fields: PivotField<T>[];
|
|
28
|
+
/** The current pivot layout. Bindable so the consumer can persist it. */
|
|
29
|
+
layout?: PivotLayout;
|
|
30
|
+
/** Fired when the user changes the layout (drag, drop, chip menu, …). */
|
|
31
|
+
onLayoutChange?: (layout: PivotLayout) => void;
|
|
32
|
+
/** Saved layouts surfaced in the toolbar's Presets menu. */
|
|
33
|
+
presets?: PivotPreset[];
|
|
34
|
+
/** Aggregators offered in the Values chip menu. Default: all. */
|
|
35
|
+
aggregators?: PivotAggregatorId[];
|
|
36
|
+
/** Show the toolbar above the wells. Default true. */
|
|
37
|
+
showToolbar?: boolean;
|
|
38
|
+
/** Show the left-rail field picker. Default true. */
|
|
39
|
+
showFieldList?: boolean;
|
|
40
|
+
/** Show the Filters well. Default true. */
|
|
41
|
+
showFiltersWell?: boolean;
|
|
42
|
+
/** Custom Export handler. When set, an Export button appears. */
|
|
43
|
+
onExport?: (layout: PivotLayout, rows: PivotRow[]) => void;
|
|
44
|
+
/** Height of the inner pivot grid. Default '100%'. */
|
|
45
|
+
gridHeight?: string | number;
|
|
46
|
+
/** Render the embedded grid? Set false to host it separately and
|
|
47
|
+
* read `pivot` from the on:pivot event. Default true. */
|
|
48
|
+
embedGrid?: boolean;
|
|
49
|
+
/** Fires whenever the underlying pivot model rebuilds. */
|
|
50
|
+
onPivot?: (rows: PivotRow[], columns: ColumnDef<{
|
|
51
|
+
rowSortingFeature: {
|
|
52
|
+
key: string;
|
|
53
|
+
};
|
|
54
|
+
columnFilteringFeature: {
|
|
55
|
+
key: string;
|
|
56
|
+
};
|
|
57
|
+
}, PivotRow>[]) => void;
|
|
58
|
+
/** Allow row-level expand / collapse. When true, an expand chevron
|
|
59
|
+
* appears in the label cell on every `group` row and clicking it
|
|
60
|
+
* toggles which descendant rows are visible. The designer manages
|
|
61
|
+
* the collapsed set internally. Default false. */
|
|
62
|
+
expandable?: boolean;
|
|
63
|
+
/** Transform the generated column tree right before the grid renders.
|
|
64
|
+
* The consumer can attach custom `cell:` / `header:` / `cellClass:`
|
|
65
|
+
* properties, change widths, etc. Receives the full tree + the
|
|
66
|
+
* current layout (so it can branch on which measures are present). */
|
|
67
|
+
decorateColumns?: (cols: ColumnDef<{
|
|
68
|
+
rowSortingFeature: {
|
|
69
|
+
key: string;
|
|
70
|
+
};
|
|
71
|
+
columnFilteringFeature: {
|
|
72
|
+
key: string;
|
|
73
|
+
};
|
|
74
|
+
}, PivotRow>[], layout: PivotLayout) => ColumnDef<{
|
|
75
|
+
rowSortingFeature: {
|
|
76
|
+
key: string;
|
|
77
|
+
};
|
|
78
|
+
columnFilteringFeature: {
|
|
79
|
+
key: string;
|
|
80
|
+
};
|
|
81
|
+
}, PivotRow>[];
|
|
82
|
+
/** Click handler forwarded to the embedded SvGrid - typically used
|
|
83
|
+
* to drive a drill-through side panel. */
|
|
84
|
+
onCellClick?: (ctx: {
|
|
85
|
+
columnId: string;
|
|
86
|
+
row: PivotRow;
|
|
87
|
+
value: unknown;
|
|
88
|
+
}) => void;
|
|
89
|
+
/** Offer a Table <-> Chart view toggle (same layout as a live chart). Default true. */
|
|
90
|
+
chartable?: boolean;
|
|
91
|
+
/** Which view to show first when `chartable`. Default 'table'. */
|
|
92
|
+
defaultView?: "table" | "chart";
|
|
93
|
+
/**
|
|
94
|
+
* Where the authoring UI (field picker + wells) lives relative to the
|
|
95
|
+
* grid. `'top'` (default) keeps the classic Excel layout: left rail +
|
|
96
|
+
* a horizontal row of wells above the grid. `'right'` docks everything
|
|
97
|
+
* as a single vertical tool panel on the right of the grid - the
|
|
98
|
+
* "enterprise data grid" / AG-Grid pivot-panel arrangement.
|
|
99
|
+
*/
|
|
100
|
+
panelPosition?: "top" | "right";
|
|
101
|
+
/** Width of the docked panel when `panelPosition='right'`. Default 280. */
|
|
102
|
+
panelWidth?: number | string;
|
|
103
|
+
/**
|
|
104
|
+
* Enables a "Pivot Mode" toggle. When OFF the embedded grid renders the
|
|
105
|
+
* flat source rows with `flatColumns`; when ON it renders the pivot.
|
|
106
|
+
* Requires `flatColumns` to be provided. Bindable.
|
|
107
|
+
*/
|
|
108
|
+
pivotMode?: boolean;
|
|
109
|
+
/** Columns for the flat (pivot-off) grid. Enables the Pivot Mode toggle. */
|
|
110
|
+
flatColumns?: ColumnDef<{
|
|
111
|
+
rowSortingFeature: {
|
|
112
|
+
key: string;
|
|
113
|
+
};
|
|
114
|
+
columnFilteringFeature: {
|
|
115
|
+
key: string;
|
|
116
|
+
};
|
|
117
|
+
}, T>[];
|
|
118
|
+
/** Fired when the Pivot Mode toggle changes. */
|
|
119
|
+
onPivotModeChange?: (on: boolean) => void;
|
|
120
|
+
/** Fit the embedded grid's columns to width. Default true. Set false to
|
|
121
|
+
* let a wide pivot scroll horizontally (recommended with many columns). */
|
|
122
|
+
gridFitColumns?: boolean;
|
|
123
|
+
/** Enable the right-click context menu on field-list rows, well chips, and
|
|
124
|
+
* the pivot grid (add/move/remove fields, change aggregator, expand /
|
|
125
|
+
* collapse). Default true. */
|
|
126
|
+
contextMenu?: boolean;
|
|
127
|
+
/**
|
|
128
|
+
* Column virtualization on the embedded grid. Default true. Set FALSE for
|
|
129
|
+
* wide pivots with grouped column headers: the grouped header band isn't
|
|
130
|
+
* virtualized, so a virtualized body leaves off-window group columns
|
|
131
|
+
* looking empty until scrolled. Disabling it renders every column, so
|
|
132
|
+
* header and body always stay in sync (fine up to a few hundred columns).
|
|
133
|
+
*/
|
|
134
|
+
columnVirtualization?: boolean;
|
|
135
|
+
/**
|
|
136
|
+
* Render the field picker as an AG-Grid-style **Columns** tool panel: a
|
|
137
|
+
* collapsible column-group TREE whose checkboxes toggle column VISIBILITY
|
|
138
|
+
* (with a select-all), instead of the flat "tick to add to a well" list.
|
|
139
|
+
* Fields still drag into the Rows / Columns / Values wells. The embedded
|
|
140
|
+
* flat grid (pivot off) hides deselected columns. Default false.
|
|
141
|
+
*/
|
|
142
|
+
columnTree?: boolean;
|
|
143
|
+
/** Hidden column ids (field names) when `columnTree` is on. Bindable. */
|
|
144
|
+
hiddenFields?: string[];
|
|
145
|
+
/** Fired when column visibility changes (columnTree mode). */
|
|
146
|
+
onHiddenFieldsChange?: (hidden: string[]) => void;
|
|
147
|
+
/**
|
|
148
|
+
* Show a vertical Columns / Filters tab rail on the docked panel
|
|
149
|
+
* (`panelPosition='right'`). The Filters tab is an AG-Grid-style set-filter
|
|
150
|
+
* builder: "Add Filter" -> pick a column -> tick which values pass. Filters
|
|
151
|
+
* narrow the source rows (they drive `layout.filters`). Default false.
|
|
152
|
+
*/
|
|
153
|
+
toolTabs?: boolean;
|
|
154
|
+
};
|
|
155
|
+
exports: {};
|
|
156
|
+
bindings: "pivotMode" | "layout" | "hiddenFields";
|
|
157
|
+
slots: {};
|
|
158
|
+
events: {};
|
|
159
|
+
};
|
|
160
|
+
declare class __sveltets_Render<T extends PivotInputRow> {
|
|
161
|
+
props(): ReturnType<typeof $$render<T>>['props'];
|
|
162
|
+
events(): ReturnType<typeof $$render<T>>['events'];
|
|
163
|
+
slots(): ReturnType<typeof $$render<T>>['slots'];
|
|
164
|
+
bindings(): "pivotMode" | "layout" | "hiddenFields";
|
|
165
|
+
exports(): {};
|
|
166
|
+
}
|
|
167
|
+
interface $$IsomorphicComponent {
|
|
168
|
+
new <T extends PivotInputRow>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
|
|
169
|
+
$$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
|
|
170
|
+
} & ReturnType<__sveltets_Render<T>['exports']>;
|
|
171
|
+
<T extends PivotInputRow>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
|
|
172
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
173
|
+
}
|
|
174
|
+
declare const SvPivotDesigner: $$IsomorphicComponent;
|
|
175
|
+
type SvPivotDesigner<T extends PivotInputRow> = InstanceType<typeof SvPivotDesigner<T>>;
|
|
176
|
+
export default SvPivotDesigner;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SvRecordDetail - a full record "detail page" over an entity's rows: a header
|
|
3
|
+
* (title + subtitle + colored status pill + a few metric tiles + a record
|
|
4
|
+
* switcher), then tabbed sections - an Overview of grouped label/value pairs plus
|
|
5
|
+
* one tab per related child collection (Activity / Related), each a timeline of
|
|
6
|
+
* the child rows that point back at this record. The universal signature view for
|
|
7
|
+
* relation-heavy entities (a customer / deal / patient / trip page), where a board
|
|
8
|
+
* or calendar does not fit.
|
|
9
|
+
*
|
|
10
|
+
* Pure presentation over plain rows + an EntitySchema (same inputs as SvBoard /
|
|
11
|
+
* SvSchemaChart), so the generated app and the designer preview render it
|
|
12
|
+
* identically. When `row` is omitted it self-drives off `rows` (defaults to the
|
|
13
|
+
* first, switchable via the header dropdown).
|
|
14
|
+
*/
|
|
15
|
+
import type { EntitySchema } from './schema';
|
|
16
|
+
type Row = Record<string, unknown>;
|
|
17
|
+
type Section = {
|
|
18
|
+
label: string;
|
|
19
|
+
fields: string[];
|
|
20
|
+
};
|
|
21
|
+
type Related = {
|
|
22
|
+
label: string;
|
|
23
|
+
schema: EntitySchema<any>;
|
|
24
|
+
rows?: ReadonlyArray<Row>;
|
|
25
|
+
/** The child field pointing back at this record. */
|
|
26
|
+
foreignKey: string;
|
|
27
|
+
/** The parent field the child's `foreignKey` matches (default: the id) - lets a
|
|
28
|
+
* denormalized view relate by name / company when it has no FK ids. */
|
|
29
|
+
parentField?: string;
|
|
30
|
+
titleField: string;
|
|
31
|
+
subtitleField?: string;
|
|
32
|
+
dateField?: string;
|
|
33
|
+
statusField?: string;
|
|
34
|
+
};
|
|
35
|
+
type $$ComponentProps = {
|
|
36
|
+
schema: EntitySchema<any>;
|
|
37
|
+
rows?: ReadonlyArray<Row>;
|
|
38
|
+
/** The specific record to show. Omit to self-drive off `rows`. */
|
|
39
|
+
row?: Row;
|
|
40
|
+
/** Initial record to open, by id (e.g. from a URL `?id=` param). Switchable. */
|
|
41
|
+
selectedId?: string;
|
|
42
|
+
/** Show a skeleton during first load. */
|
|
43
|
+
loading?: boolean;
|
|
44
|
+
titleField: string;
|
|
45
|
+
subtitleField?: string;
|
|
46
|
+
/** Enum field rendered as a colored status pill in the header. */
|
|
47
|
+
statusField?: string;
|
|
48
|
+
/** A few (numeric) fields shown as header stat tiles. */
|
|
49
|
+
metricFields?: string[];
|
|
50
|
+
/** Overview field groups. Empty -> one auto "Details" group. */
|
|
51
|
+
sections?: Section[];
|
|
52
|
+
/** Related child collections, one tab each. */
|
|
53
|
+
related?: Related[];
|
|
54
|
+
height?: number;
|
|
55
|
+
};
|
|
56
|
+
declare const SvRecordDetail: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
57
|
+
type SvRecordDetail = ReturnType<typeof SvRecordDetail>;
|
|
58
|
+
export default SvRecordDetail;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SvSchedule - a month event-calendar over an entity's rows. Each row with a
|
|
3
|
+
* `dateField` value is placed as an event chip on its day; `titleField` is the
|
|
4
|
+
* chip label and an optional enum `colorField` tints it. A real scheduling view
|
|
5
|
+
* (appointments / events / bookings / shifts) - the signature calendar that makes
|
|
6
|
+
* a Studio app read like a product, not a report.
|
|
7
|
+
*
|
|
8
|
+
* Pure presentation over plain rows + an EntitySchema (same inputs as SvBoard /
|
|
9
|
+
* SvSchemaChart), so the generated app and the designer preview match.
|
|
10
|
+
*/
|
|
11
|
+
import type { EntitySchema } from './schema';
|
|
12
|
+
type Row = Record<string, unknown>;
|
|
13
|
+
type $$ComponentProps = {
|
|
14
|
+
schema: EntitySchema<any>;
|
|
15
|
+
rows?: ReadonlyArray<Row>;
|
|
16
|
+
/** The date / datetime field that places a row on the calendar. */
|
|
17
|
+
dateField: string;
|
|
18
|
+
/** Field shown as the event chip label. */
|
|
19
|
+
titleField: string;
|
|
20
|
+
/** Optional enum field whose option color tints the chip. */
|
|
21
|
+
colorField?: string;
|
|
22
|
+
onSelect?: (id: string) => void;
|
|
23
|
+
/** Dim the grid + show a loading note during first load. */
|
|
24
|
+
loading?: boolean;
|
|
25
|
+
height?: number;
|
|
26
|
+
};
|
|
27
|
+
declare const SvSchedule: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
28
|
+
type SvSchedule = ReturnType<typeof SvSchedule>;
|
|
29
|
+
export default SvSchedule;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
type ChartRow = Record<string, unknown>;
|
|
2
|
+
/**
|
|
3
|
+
* SvSchemaChart - a reusable chart bound to an `EntitySchema`. It picks
|
|
4
|
+
* chart-able fields from the schema (dimensions to group by, measures to
|
|
5
|
+
* reduce), renders built-in controls, and draws with `SvGridChart`.
|
|
6
|
+
*
|
|
7
|
+
* Aggregation is either client-side (pass `rows`) or server-side (pass
|
|
8
|
+
* `getAggregate`, e.g. a SQL / Supabase source's `GROUP BY`), so it scales
|
|
9
|
+
* past what a page holds. Click a category to drill (`onDrill`).
|
|
10
|
+
*/
|
|
11
|
+
import { type ChartType } from '@svgrid/grid';
|
|
12
|
+
import { type EntitySchema } from './schema';
|
|
13
|
+
import { type AggregateBucket, type AggregateReduce, type AggregateRequest } from './sources/aggregate';
|
|
14
|
+
declare function $$render<TData extends ChartRow>(): {
|
|
15
|
+
props: {
|
|
16
|
+
schema: EntitySchema<TData>;
|
|
17
|
+
/** Client-side data to aggregate. Ignored when `getAggregate` is set. */
|
|
18
|
+
rows?: ReadonlyArray<TData>;
|
|
19
|
+
/** Server-side aggregation (a data source's `getAggregate`). Takes precedence. */
|
|
20
|
+
getAggregate?: (request: AggregateRequest) => Promise<AggregateBucket[]>;
|
|
21
|
+
/** Filter passed to `getAggregate`. */
|
|
22
|
+
filterModel?: import("@svgrid/grid").ServerFilterModel | undefined;
|
|
23
|
+
dimension?: string;
|
|
24
|
+
measure?: string;
|
|
25
|
+
reduce?: AggregateReduce;
|
|
26
|
+
type?: ChartType;
|
|
27
|
+
/** Show the built-in dimension / measure / type controls. Default true. */
|
|
28
|
+
controls?: boolean;
|
|
29
|
+
height?: number;
|
|
30
|
+
width?: number;
|
|
31
|
+
dataLabels?: boolean;
|
|
32
|
+
formatValue?: (v: number) => string;
|
|
33
|
+
onDrill?: (category: string, dimension: string) => void;
|
|
34
|
+
/** Bump to re-fetch server aggregates (e.g. after a mutation). */
|
|
35
|
+
refreshKey?: unknown;
|
|
36
|
+
/** Brand color. Bars / lines use it; pie slices grouped by an enum use the
|
|
37
|
+
* enum's own option colors (matching status badges). */
|
|
38
|
+
accent?: string;
|
|
39
|
+
};
|
|
40
|
+
exports: {};
|
|
41
|
+
bindings: "";
|
|
42
|
+
slots: {};
|
|
43
|
+
events: {};
|
|
44
|
+
};
|
|
45
|
+
declare class __sveltets_Render<TData extends ChartRow> {
|
|
46
|
+
props(): ReturnType<typeof $$render<TData>>['props'];
|
|
47
|
+
events(): ReturnType<typeof $$render<TData>>['events'];
|
|
48
|
+
slots(): ReturnType<typeof $$render<TData>>['slots'];
|
|
49
|
+
bindings(): "";
|
|
50
|
+
exports(): {};
|
|
51
|
+
}
|
|
52
|
+
interface $$IsomorphicComponent {
|
|
53
|
+
new <TData extends ChartRow>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TData>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TData>['props']>, ReturnType<__sveltets_Render<TData>['events']>, ReturnType<__sveltets_Render<TData>['slots']>> & {
|
|
54
|
+
$$bindings?: ReturnType<__sveltets_Render<TData>['bindings']>;
|
|
55
|
+
} & ReturnType<__sveltets_Render<TData>['exports']>;
|
|
56
|
+
<TData extends ChartRow>(internal: unknown, props: ReturnType<__sveltets_Render<TData>['props']> & {}): ReturnType<__sveltets_Render<TData>['exports']>;
|
|
57
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
58
|
+
}
|
|
59
|
+
declare const SvSchemaChart: $$IsomorphicComponent;
|
|
60
|
+
type SvSchemaChart<TData extends ChartRow> = InstanceType<typeof SvSchemaChart<TData>>;
|
|
61
|
+
export default SvSchemaChart;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
type DashRow = Record<string, unknown>;
|
|
2
|
+
import type { EntitySchema } from './schema';
|
|
3
|
+
import { type DashboardSpec } from './sources/dashboard';
|
|
4
|
+
import type { AggregateBucket, AggregateRequest } from './sources/aggregate';
|
|
5
|
+
declare function $$render<TData extends DashRow>(): {
|
|
6
|
+
props: {
|
|
7
|
+
schema: EntitySchema<TData>;
|
|
8
|
+
/** Rows for KPI tiles (and charts when there's no `getAggregate`). */
|
|
9
|
+
rows?: ReadonlyArray<TData>;
|
|
10
|
+
/**
|
|
11
|
+
* Server-side aggregation (a data source's `getAggregate`). When set, KPI
|
|
12
|
+
* tiles AND charts are computed server-side (KPIs via a dimension-less
|
|
13
|
+
* request), so they're correct over the whole table, not just a page.
|
|
14
|
+
*/
|
|
15
|
+
getAggregate?: (request: AggregateRequest) => Promise<AggregateBucket[]>;
|
|
16
|
+
/** Filter applied to every widget (KPIs + charts), same shape the grid emits. */
|
|
17
|
+
filterModel?: AggregateRequest["filterModel"];
|
|
18
|
+
/** Widget layout. Defaults to a sensible set from the schema. */
|
|
19
|
+
spec?: DashboardSpec;
|
|
20
|
+
/** Bump to re-fetch server aggregates after a mutation. */
|
|
21
|
+
refreshKey?: unknown;
|
|
22
|
+
onDrill?: (category: string, dimension: string) => void;
|
|
23
|
+
title?: string;
|
|
24
|
+
};
|
|
25
|
+
exports: {};
|
|
26
|
+
bindings: "";
|
|
27
|
+
slots: {};
|
|
28
|
+
events: {};
|
|
29
|
+
};
|
|
30
|
+
declare class __sveltets_Render<TData extends DashRow> {
|
|
31
|
+
props(): ReturnType<typeof $$render<TData>>['props'];
|
|
32
|
+
events(): ReturnType<typeof $$render<TData>>['events'];
|
|
33
|
+
slots(): ReturnType<typeof $$render<TData>>['slots'];
|
|
34
|
+
bindings(): "";
|
|
35
|
+
exports(): {};
|
|
36
|
+
}
|
|
37
|
+
interface $$IsomorphicComponent {
|
|
38
|
+
new <TData extends DashRow>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TData>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TData>['props']>, ReturnType<__sveltets_Render<TData>['events']>, ReturnType<__sveltets_Render<TData>['slots']>> & {
|
|
39
|
+
$$bindings?: ReturnType<__sveltets_Render<TData>['bindings']>;
|
|
40
|
+
} & ReturnType<__sveltets_Render<TData>['exports']>;
|
|
41
|
+
<TData extends DashRow>(internal: unknown, props: ReturnType<__sveltets_Render<TData>['props']> & {}): ReturnType<__sveltets_Render<TData>['exports']>;
|
|
42
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
43
|
+
}
|
|
44
|
+
declare const SvSchemaDashboard: $$IsomorphicComponent;
|
|
45
|
+
type SvSchemaDashboard<TData extends DashRow> = InstanceType<typeof SvSchemaDashboard<TData>>;
|
|
46
|
+
export default SvSchemaDashboard;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Headless glue between the pure engine and the running grid.
|
|
3
|
+
*
|
|
4
|
+
* The grid's `onCellValueChange` fires only for edits made through the grid, not
|
|
5
|
+
* for streaming feeds / server pushes / a programmatic `data = ...`. Alerts must
|
|
6
|
+
* react to all of those, so we observe changes by diffing snapshots (the same
|
|
7
|
+
* approach the grid's `attachAutoSavedView` uses for state). `applyAlertEvents`
|
|
8
|
+
* routes fired events
|
|
9
|
+
* to their side effects (toast, log) and returns the visual bits (conditional
|
|
10
|
+
* formats + cells to flash) for the caller to paint. The `<SvGridAlerts>`
|
|
11
|
+
* overlay drives this reactively via `$effect`; `attachAlertEngine` offers the
|
|
12
|
+
* same as a plain-JS interval poll for non-Svelte hosts.
|
|
13
|
+
*/
|
|
14
|
+
import type { ConditionalFormat } from '@svgrid/grid/format';
|
|
15
|
+
import { type AlertEngine } from './alert-engine';
|
|
16
|
+
import type { AlertEvent, AlertRule } from './alert-types';
|
|
17
|
+
export type FlashTarget = {
|
|
18
|
+
rowId: string;
|
|
19
|
+
columnId?: string;
|
|
20
|
+
};
|
|
21
|
+
export type ApplyAlertOptions = {
|
|
22
|
+
/**
|
|
23
|
+
* Gate which fired events actually raise a toast. Every event is still logged
|
|
24
|
+
* (the badge/panel stay accurate) - this only suppresses the visible toast, so
|
|
25
|
+
* a busy live feed does not become a toast storm. Return `false` to skip the
|
|
26
|
+
* toast. Defaults to always-toast.
|
|
27
|
+
*/
|
|
28
|
+
shouldToast?: (event: AlertEvent) => boolean;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Perform the side effects of a batch of fired events and return the visual
|
|
32
|
+
* output: every event is recorded in the log (so the badge/panel stay accurate),
|
|
33
|
+
* `toast` actions raise a toast (subject to `shouldToast`), and
|
|
34
|
+
* `badge`/`highlight`/`cellFlash` actions yield formats + flash targets for the
|
|
35
|
+
* caller to apply to the grid.
|
|
36
|
+
*
|
|
37
|
+
* The whole batch lands in the log in ONE reactive write (`pushMany`) so a burst
|
|
38
|
+
* of firings from a single evaluation does not thrash the store.
|
|
39
|
+
*/
|
|
40
|
+
export declare function applyAlertEvents<TData = Record<string, unknown>>(events: ReadonlyArray<AlertEvent>, getRowId: (row: TData) => string, options?: ApplyAlertOptions): {
|
|
41
|
+
formats: ConditionalFormat<TData>[];
|
|
42
|
+
flashes: FlashTarget[];
|
|
43
|
+
};
|
|
44
|
+
export type AttachAlertOptions<TData> = {
|
|
45
|
+
rules: AlertRule[];
|
|
46
|
+
getRowId: (row: TData) => string;
|
|
47
|
+
/** Read the grid's current rows. */
|
|
48
|
+
getData: () => ReadonlyArray<TData>;
|
|
49
|
+
getValue?: (row: TData, columnId: string) => unknown;
|
|
50
|
+
locale?: string | ReadonlyArray<string>;
|
|
51
|
+
/** Merge alert-driven conditional formats into the grid. */
|
|
52
|
+
applyFormats?: (formats: ConditionalFormat<TData>[]) => void;
|
|
53
|
+
/** Flash a cell (e.g. call `api.flashCells`). */
|
|
54
|
+
flashCell?: (target: FlashTarget) => void;
|
|
55
|
+
/** Poll interval in ms (`0` disables polling - drive `tick()` yourself). */
|
|
56
|
+
intervalMs?: number;
|
|
57
|
+
};
|
|
58
|
+
export type AlertAttachment<TData> = {
|
|
59
|
+
engine: AlertEngine<TData>;
|
|
60
|
+
/** Run one evaluation pass against the latest data. */
|
|
61
|
+
tick(): void;
|
|
62
|
+
/** Push new rules into the engine (e.g. after the user edits a rule). */
|
|
63
|
+
setRules(rules: AlertRule[]): void;
|
|
64
|
+
detach(): void;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Wire the engine to a data source. On the first pass it seeds edges silently
|
|
68
|
+
* from the current snapshot (so pre-existing matches do not fire); thereafter
|
|
69
|
+
* each pass fires newly-matching rows.
|
|
70
|
+
*
|
|
71
|
+
* Perf: cloning a previous snapshot is gated on `engine.needsPrev()`. For a rule
|
|
72
|
+
* set that is purely `dataChange`/aggregate (the common case) NO clone is taken -
|
|
73
|
+
* `engine.evaluate` re-checks the current rows and its edge memory (the `active`
|
|
74
|
+
* set) fires each row exactly once when it starts matching. Only `relativeChange`
|
|
75
|
+
* rules, which compare prev -> next, pay for a snapshot. This is the non-Svelte
|
|
76
|
+
* poll host; for the reactive overlay, `createAlertObserver` adds a scheduler and
|
|
77
|
+
* an O(changed) push path. Returns `detach()` to stop.
|
|
78
|
+
*/
|
|
79
|
+
export declare function attachAlertEngine<TData = Record<string, unknown>>(opts: AttachAlertOptions<TData>): AlertAttachment<TData>;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { toast } from '@svgrid/grid';
|
|
2
|
+
import { alertStore } from './alert-store.svelte';
|
|
3
|
+
import { toConditionalFormats } from './alert-formats';
|
|
4
|
+
import { createAlertEngine } from './alert-engine';
|
|
5
|
+
/**
|
|
6
|
+
* Perform the side effects of a batch of fired events and return the visual
|
|
7
|
+
* output: every event is recorded in the log (so the badge/panel stay accurate),
|
|
8
|
+
* `toast` actions raise a toast (subject to `shouldToast`), and
|
|
9
|
+
* `badge`/`highlight`/`cellFlash` actions yield formats + flash targets for the
|
|
10
|
+
* caller to apply to the grid.
|
|
11
|
+
*
|
|
12
|
+
* The whole batch lands in the log in ONE reactive write (`pushMany`) so a burst
|
|
13
|
+
* of firings from a single evaluation does not thrash the store.
|
|
14
|
+
*/
|
|
15
|
+
export function applyAlertEvents(events, getRowId, options = {}) {
|
|
16
|
+
if (events.length === 0)
|
|
17
|
+
return { formats: [], flashes: [] };
|
|
18
|
+
alertStore.pushMany(events);
|
|
19
|
+
const allow = options.shouldToast;
|
|
20
|
+
for (const event of events) {
|
|
21
|
+
if (event.actions.some((a) => a.kind === 'toast') && (!allow || allow(event))) {
|
|
22
|
+
toast[event.severity](event.message);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const flashes = [];
|
|
26
|
+
for (const event of events) {
|
|
27
|
+
if (event.rowId && event.actions.some((a) => a.kind === 'cellFlash')) {
|
|
28
|
+
flashes.push({ rowId: event.rowId, columnId: event.columnId });
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return { formats: toConditionalFormats(events, getRowId), flashes };
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Wire the engine to a data source. On the first pass it seeds edges silently
|
|
35
|
+
* from the current snapshot (so pre-existing matches do not fire); thereafter
|
|
36
|
+
* each pass fires newly-matching rows.
|
|
37
|
+
*
|
|
38
|
+
* Perf: cloning a previous snapshot is gated on `engine.needsPrev()`. For a rule
|
|
39
|
+
* set that is purely `dataChange`/aggregate (the common case) NO clone is taken -
|
|
40
|
+
* `engine.evaluate` re-checks the current rows and its edge memory (the `active`
|
|
41
|
+
* set) fires each row exactly once when it starts matching. Only `relativeChange`
|
|
42
|
+
* rules, which compare prev -> next, pay for a snapshot. This is the non-Svelte
|
|
43
|
+
* poll host; for the reactive overlay, `createAlertObserver` adds a scheduler and
|
|
44
|
+
* an O(changed) push path. Returns `detach()` to stop.
|
|
45
|
+
*/
|
|
46
|
+
export function attachAlertEngine(opts) {
|
|
47
|
+
const engine = createAlertEngine({
|
|
48
|
+
rules: opts.rules,
|
|
49
|
+
getRowId: opts.getRowId,
|
|
50
|
+
getValue: opts.getValue,
|
|
51
|
+
locale: opts.locale,
|
|
52
|
+
});
|
|
53
|
+
let prev = null;
|
|
54
|
+
let seeded = false;
|
|
55
|
+
const snapshot = (rows) => rows.map((r) => (r && typeof r === 'object' ? { ...r } : r));
|
|
56
|
+
const flush = (events) => {
|
|
57
|
+
if (events.length === 0)
|
|
58
|
+
return;
|
|
59
|
+
const { formats, flashes } = applyAlertEvents(events, opts.getRowId);
|
|
60
|
+
if (formats.length && opts.applyFormats)
|
|
61
|
+
opts.applyFormats(formats);
|
|
62
|
+
if (opts.flashCell)
|
|
63
|
+
flashes.forEach((f) => opts.flashCell?.(f));
|
|
64
|
+
};
|
|
65
|
+
const tick = () => {
|
|
66
|
+
const rows = opts.getData();
|
|
67
|
+
const needsPrev = engine.needsPrev();
|
|
68
|
+
let events;
|
|
69
|
+
if (!seeded) {
|
|
70
|
+
// Silent seed: arm edges from the current set, fire nothing.
|
|
71
|
+
engine.evaluate(rows);
|
|
72
|
+
events = [];
|
|
73
|
+
seeded = true;
|
|
74
|
+
}
|
|
75
|
+
else if (needsPrev) {
|
|
76
|
+
events = engine.evaluateTransition(prev ?? [], rows);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
// No rule reads prev - the edge set dedups, so no clone/diff is needed.
|
|
80
|
+
events = engine.evaluate(rows);
|
|
81
|
+
}
|
|
82
|
+
prev = needsPrev ? snapshot(rows) : null;
|
|
83
|
+
flush(events);
|
|
84
|
+
};
|
|
85
|
+
const interval = opts.intervalMs ?? 400;
|
|
86
|
+
let timer = null;
|
|
87
|
+
if (interval > 0) {
|
|
88
|
+
tick();
|
|
89
|
+
timer = setInterval(tick, interval);
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
engine,
|
|
93
|
+
tick,
|
|
94
|
+
setRules(rules) {
|
|
95
|
+
engine.setRules(rules);
|
|
96
|
+
engine.reset();
|
|
97
|
+
prev = null;
|
|
98
|
+
seeded = false;
|
|
99
|
+
},
|
|
100
|
+
detach() {
|
|
101
|
+
if (timer)
|
|
102
|
+
clearInterval(timer);
|
|
103
|
+
timer = null;
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { AlertEvent, AlertRule } from './alert-types';
|
|
2
|
+
export type AlertEngineOptions<TData> = {
|
|
3
|
+
rules: AlertRule[];
|
|
4
|
+
getRowId: (row: TData) => string;
|
|
5
|
+
/** Resolve a column id to a value (defaults to `row[id]`). */
|
|
6
|
+
getValue?: (row: TData, columnId: string) => unknown;
|
|
7
|
+
locale?: string | ReadonlyArray<string>;
|
|
8
|
+
/** Clock for `firedAt` (injectable for deterministic tests). */
|
|
9
|
+
now?: () => number;
|
|
10
|
+
};
|
|
11
|
+
export type ValidateEditResult = {
|
|
12
|
+
vetoed: boolean;
|
|
13
|
+
events: AlertEvent[];
|
|
14
|
+
};
|
|
15
|
+
export type AlertEngine<TData> = {
|
|
16
|
+
setRules(rules: AlertRule[]): void;
|
|
17
|
+
getRules(): AlertRule[];
|
|
18
|
+
/** Full-snapshot pass: fires `dataChange`/`scheduled`/aggregate edges. */
|
|
19
|
+
evaluate(rows: ReadonlyArray<TData>): AlertEvent[];
|
|
20
|
+
/** Prev -> next pass: fires `relativeChange` plus `dataChange` edges. */
|
|
21
|
+
evaluateTransition(prev: ReadonlyArray<TData>, next: ReadonlyArray<TData>): AlertEvent[];
|
|
22
|
+
/** Would editing `(row, columnId) -> nextValue` trip a validation rule? */
|
|
23
|
+
validateEdit(row: TData, columnId: string, nextValue: unknown): ValidateEditResult;
|
|
24
|
+
/**
|
|
25
|
+
* True iff some enabled rule reads a row's PREVIOUS value (a `relativeChange`
|
|
26
|
+
* trigger). When false, the observer can skip cloning prev-snapshots entirely
|
|
27
|
+
* - the hot-path saver for `dataChange`/aggregate-only rule sets over big feeds.
|
|
28
|
+
*/
|
|
29
|
+
needsPrev(): boolean;
|
|
30
|
+
/** True iff some enabled rule is aggregate-scope (needs the full row set). */
|
|
31
|
+
needsFullSet(): boolean;
|
|
32
|
+
/** Forget edge memory so matching rows can fire again. */
|
|
33
|
+
reset(): void;
|
|
34
|
+
};
|
|
35
|
+
/** Fill message-template tokens from the firing context. */
|
|
36
|
+
export declare function renderTemplate(template: string, ctx: {
|
|
37
|
+
rule: AlertRule;
|
|
38
|
+
row?: Record<string, unknown>;
|
|
39
|
+
columnId?: string;
|
|
40
|
+
value?: unknown;
|
|
41
|
+
}): string;
|
|
42
|
+
export declare function createAlertEngine<TData = Record<string, unknown>>(options: AlertEngineOptions<TData>): AlertEngine<TData>;
|