@svgrid/enterprise 2.4.0 → 2.5.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/cdn/svgrid-enterprise.svelte-external.js +5917 -5545
- package/dist/designer/assets/{index-okIcRP9P.js → index-qL7ir9C7.js} +3 -3
- package/dist/designer/assets/{src-CIla2aVG.js → src-96d31O63.js} +259 -228
- package/dist/designer/assets/{src-BvsJ00AO.css → src-D-O2F805.css} +1 -1
- package/dist/designer/index.html +3 -3
- package/dist/node/studio.js +681 -84
- package/package.json +3 -3
- package/src/SvGridEditPanel.dom.test.ts +174 -0
- package/src/SvGridEditPanel.svelte +209 -46
- package/src/edit-panel.test.ts +145 -36
- package/src/edit-panel.ts +167 -16
- package/src/expressions/evaluate.ts +1 -1
- package/src/expressions/parse.ts +3 -3
- package/src/index.ts +8 -0
- package/src/license-core.ts +77 -5
- package/src/license-expiry.test.ts +91 -0
- package/src/license.ts +31 -2
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/_svelte_metadata.json +1 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/_metadata.json +178 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-ZrPsKxob.js +3875 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-ZrPsKxob.js.map +1 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-ACqvWGE2.js +21 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-ACqvWGE2.js.map +1 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-D3w5jt92.js +1938 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-D3w5jt92.js.map +1 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-CC2V3H0y.js +205 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-CC2V3H0y.js.map +1 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-BXP37tAa.js +18 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-BXP37tAa.js.map +1 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-DwubnU5b.js +264 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-DwubnU5b.js.map +1 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-hD7f6PUz.js +697 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-hD7f6PUz.js.map +1 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/package.json +3 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js +134 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js.map +1 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js +55 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js.map +1 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_attachments.js +2 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js +46843 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js.map +1 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js +237 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js.map +1 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_events.js +2 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js +4 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js.map +1 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_client.js +7 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js +4 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js.map +1 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js +5 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js.map +1 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js +5 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js.map +1 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js +5 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js.map +1 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_server.js +6 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js +83 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js.map +1 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js +559 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js.map +1 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js +24 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js.map +1 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js +122 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js.map +1 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_server.js +2 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js +89 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js.map +1 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js +241 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js.map +1 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DBx1SCN6.js +4938 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DBx1SCN6.js.map +1 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-gjfpSTFS.js +495 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-gjfpSTFS.js.map +1 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-DKoOKg8S.js +190 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-DKoOKg8S.js.map +1 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-C0MiR7eR.js +8 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-C0MiR7eR.js.map +1 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-B6Y7P0Q-.js +138 -0
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-B6Y7P0Q-.js.map +1 -0
- package/src/schema.ts +63 -0
- package/src/studio/emit-project.test.ts +191 -0
- package/src/studio/emit-project.ts +237 -27
- package/src/studio/emit-schema.ts +4 -1
- package/src/studio/index.ts +2 -0
- package/src/studio/init-flow.test.ts +150 -0
- package/src/studio/init-flow.ts +169 -22
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/_svelte_metadata.json +1 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/_metadata.json +178 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-BOv1rBKp.js +3875 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-BOv1rBKp.js.map +1 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-B9vgIdCd.js +21 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-B9vgIdCd.js.map +1 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-T1qbW_qD.js +1938 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-T1qbW_qD.js.map +1 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-Bo11SfVK.js +205 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-Bo11SfVK.js.map +1 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-X7D4vfrZ.js +18 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-X7D4vfrZ.js.map +1 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-oyUje5i1.js +264 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-oyUje5i1.js.map +1 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-DeSQgSFm.js +697 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-DeSQgSFm.js.map +1 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/package.json +3 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js +134 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js.map +1 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js +55 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js.map +1 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_attachments.js +2 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js +46843 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js.map +1 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js +237 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js.map +1 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_events.js +2 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js +4 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js.map +1 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_client.js +7 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js +4 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js.map +1 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js +5 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js.map +1 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js +5 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js.map +1 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js +5 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js.map +1 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_server.js +6 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js +83 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js.map +1 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js +559 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js.map +1 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js +24 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js.map +1 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js +122 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js.map +1 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_server.js +2 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js +89 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js.map +1 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js +241 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js.map +1 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-BbWyXNk1.js +4938 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-BbWyXNk1.js.map +1 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DI_fC7vt.js +495 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DI_fC7vt.js.map +1 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-Dyr3lQv9.js +190 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-Dyr3lQv9.js.map +1 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-_9FHH-LF.js +8 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-_9FHH-LF.js.map +1 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-CUbSPnyP.js +138 -0
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-CUbSPnyP.js.map +1 -0
- package/src/studio/project.test.ts +30 -0
- package/src/studio/project.ts +72 -8
- package/src/studio/samples/crm.ts +11 -2
- package/src/studio/samples/insurance.ts +10 -4
- package/src/studio/samples/samples.test.ts +36 -0
- package/src/studio/samples/shared.ts +14 -0
- package/src/studio/samples/support.ts +12 -5
- package/src/studio/screen-suites.test.ts +43 -0
- package/src/studio/screen-suites.ts +5 -2
- package/src/studio/user-error.ts +31 -0
- package/src/upgrade-prompt.ts +23 -10
- package/src/version.test.ts +17 -0
- package/src/version.ts +13 -0
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { Dr as svelte_element_invalid_this_value, Er as store_invalid_shape, Tr as snippet_without_render_tag, dr as has_own_property, hn as dynamic_void_element_content } from "./utils-BbWyXNk1.js";
|
|
2
|
+
import { _ as is_void, b as escape_html } from "./utils-DI_fC7vt.js";
|
|
3
|
+
//#region ../../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs
|
|
4
|
+
function r(e) {
|
|
5
|
+
var t, f, n = "";
|
|
6
|
+
if ("string" == typeof e || "number" == typeof e) n += e;
|
|
7
|
+
else if ("object" == typeof e) if (Array.isArray(e)) {
|
|
8
|
+
var o = e.length;
|
|
9
|
+
for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f);
|
|
10
|
+
} else for (f in e) e[f] && (n && (n += " "), n += f);
|
|
11
|
+
return n;
|
|
12
|
+
}
|
|
13
|
+
function clsx$1() {
|
|
14
|
+
for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t);
|
|
15
|
+
return n;
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
//#region ../../../../node_modules/.pnpm/svelte@5.55.9_@typescript-eslint+types@8.67.0/node_modules/svelte/src/internal/shared/attributes.js
|
|
19
|
+
/**
|
|
20
|
+
* `<div translate={false}>` should be rendered as `<div translate="no">` and _not_
|
|
21
|
+
* `<div translate="false">`, which is equivalent to `<div translate="yes">`. There
|
|
22
|
+
* may be other odd cases that need to be added to this list in future
|
|
23
|
+
* @type {Record<string, Map<any, string>>}
|
|
24
|
+
*/
|
|
25
|
+
var replacements = { translate: /* @__PURE__ */ new Map([[true, "yes"], [false, "no"]]) };
|
|
26
|
+
/**
|
|
27
|
+
* @template V
|
|
28
|
+
* @param {string} name
|
|
29
|
+
* @param {V} value
|
|
30
|
+
* @param {boolean} [is_boolean]
|
|
31
|
+
* @returns {string}
|
|
32
|
+
*/
|
|
33
|
+
function attr(name, value, is_boolean = false) {
|
|
34
|
+
if (name === "hidden" && value !== "until-found") is_boolean = true;
|
|
35
|
+
if (value == null || !value && is_boolean) return "";
|
|
36
|
+
const normalized = has_own_property.call(replacements, name) && replacements[name].get(value) || value;
|
|
37
|
+
return ` ${name}${is_boolean ? `=""` : `="${escape_html(normalized, true)}"`}`;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Small wrapper around clsx to preserve Svelte's (weird) handling of falsy values.
|
|
41
|
+
* TODO Svelte 6 revisit this, and likely turn all falsy values into the empty string (what clsx also does)
|
|
42
|
+
* @param {any} value
|
|
43
|
+
*/
|
|
44
|
+
function clsx(value) {
|
|
45
|
+
if (typeof value === "object") return clsx$1(value);
|
|
46
|
+
else return value ?? "";
|
|
47
|
+
}
|
|
48
|
+
var whitespace = [..." \n\r\f\xA0\v"];
|
|
49
|
+
/**
|
|
50
|
+
* @param {any} value
|
|
51
|
+
* @param {string | null} [hash]
|
|
52
|
+
* @param {Record<string, boolean>} [directives]
|
|
53
|
+
* @returns {string | null}
|
|
54
|
+
*/
|
|
55
|
+
function to_class(value, hash, directives) {
|
|
56
|
+
var classname = value == null ? "" : "" + value;
|
|
57
|
+
if (hash) classname = classname ? classname + " " + hash : hash;
|
|
58
|
+
if (directives) {
|
|
59
|
+
for (var key of Object.keys(directives)) if (directives[key]) classname = classname ? classname + " " + key : key;
|
|
60
|
+
else if (classname.length) {
|
|
61
|
+
var len = key.length;
|
|
62
|
+
var a = 0;
|
|
63
|
+
while ((a = classname.indexOf(key, a)) >= 0) {
|
|
64
|
+
var b = a + len;
|
|
65
|
+
if ((a === 0 || whitespace.includes(classname[a - 1])) && (b === classname.length || whitespace.includes(classname[b]))) classname = (a === 0 ? "" : classname.substring(0, a)) + classname.substring(b + 1);
|
|
66
|
+
else a = b;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return classname === "" ? null : classname;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
*
|
|
74
|
+
* @param {Record<string,any>} styles
|
|
75
|
+
* @param {boolean} important
|
|
76
|
+
*/
|
|
77
|
+
function append_styles(styles, important = false) {
|
|
78
|
+
var separator = important ? " !important;" : ";";
|
|
79
|
+
var css = "";
|
|
80
|
+
for (var key of Object.keys(styles)) {
|
|
81
|
+
var value = styles[key];
|
|
82
|
+
if (value != null && value !== "") css += " " + key + ": " + value + separator;
|
|
83
|
+
}
|
|
84
|
+
return css;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* @param {string} name
|
|
88
|
+
* @returns {string}
|
|
89
|
+
*/
|
|
90
|
+
function to_css_name(name) {
|
|
91
|
+
if (name[0] !== "-" || name[1] !== "-") return name.toLowerCase();
|
|
92
|
+
return name;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* @param {any} value
|
|
96
|
+
* @param {Record<string, any> | [Record<string, any>, Record<string, any>]} [styles]
|
|
97
|
+
* @returns {string | null}
|
|
98
|
+
*/
|
|
99
|
+
function to_style(value, styles) {
|
|
100
|
+
if (styles) {
|
|
101
|
+
var new_style = "";
|
|
102
|
+
/** @type {Record<string,any> | undefined} */
|
|
103
|
+
var normal_styles;
|
|
104
|
+
/** @type {Record<string,any> | undefined} */
|
|
105
|
+
var important_styles;
|
|
106
|
+
if (Array.isArray(styles)) {
|
|
107
|
+
normal_styles = styles[0];
|
|
108
|
+
important_styles = styles[1];
|
|
109
|
+
} else normal_styles = styles;
|
|
110
|
+
if (value) {
|
|
111
|
+
value = String(value).replaceAll(/\s*\/\*.*?\*\/\s*/g, "").trim();
|
|
112
|
+
/** @type {boolean | '"' | "'"} */
|
|
113
|
+
var in_str = false;
|
|
114
|
+
var in_apo = 0;
|
|
115
|
+
var in_comment = false;
|
|
116
|
+
var reserved_names = [];
|
|
117
|
+
if (normal_styles) reserved_names.push(...Object.keys(normal_styles).map(to_css_name));
|
|
118
|
+
if (important_styles) reserved_names.push(...Object.keys(important_styles).map(to_css_name));
|
|
119
|
+
var start_index = 0;
|
|
120
|
+
var name_index = -1;
|
|
121
|
+
const len = value.length;
|
|
122
|
+
for (var i = 0; i < len; i++) {
|
|
123
|
+
var c = value[i];
|
|
124
|
+
if (in_comment) {
|
|
125
|
+
if (c === "/" && value[i - 1] === "*") in_comment = false;
|
|
126
|
+
} else if (in_str) {
|
|
127
|
+
if (in_str === c) in_str = false;
|
|
128
|
+
} else if (c === "/" && value[i + 1] === "*") in_comment = true;
|
|
129
|
+
else if (c === "\"" || c === "'") in_str = c;
|
|
130
|
+
else if (c === "(") in_apo++;
|
|
131
|
+
else if (c === ")") in_apo--;
|
|
132
|
+
if (!in_comment && in_str === false && in_apo === 0) {
|
|
133
|
+
if (c === ":" && name_index === -1) name_index = i;
|
|
134
|
+
else if (c === ";" || i === len - 1) {
|
|
135
|
+
if (name_index !== -1) {
|
|
136
|
+
var name = to_css_name(value.substring(start_index, name_index).trim());
|
|
137
|
+
if (!reserved_names.includes(name)) {
|
|
138
|
+
if (c !== ";") i++;
|
|
139
|
+
var property = value.substring(start_index, i).trim();
|
|
140
|
+
new_style += " " + property + ";";
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
start_index = i + 1;
|
|
144
|
+
name_index = -1;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
if (normal_styles) new_style += append_styles(normal_styles);
|
|
150
|
+
if (important_styles) new_style += append_styles(important_styles, true);
|
|
151
|
+
new_style = new_style.trim();
|
|
152
|
+
return new_style === "" ? null : new_style;
|
|
153
|
+
}
|
|
154
|
+
return value == null ? null : String(value);
|
|
155
|
+
}
|
|
156
|
+
//#endregion
|
|
157
|
+
//#region ../../../../node_modules/.pnpm/svelte@5.55.9_@typescript-eslint+types@8.67.0/node_modules/svelte/src/internal/shared/validate.js
|
|
158
|
+
/**
|
|
159
|
+
* @param {() => string} tag_fn
|
|
160
|
+
* @returns {void}
|
|
161
|
+
*/
|
|
162
|
+
function validate_void_dynamic_element(tag_fn) {
|
|
163
|
+
const tag = tag_fn();
|
|
164
|
+
if (tag && is_void(tag)) dynamic_void_element_content(tag);
|
|
165
|
+
}
|
|
166
|
+
/** @param {() => unknown} tag_fn */
|
|
167
|
+
function validate_dynamic_element_tag(tag_fn) {
|
|
168
|
+
const tag = tag_fn();
|
|
169
|
+
if (tag && !(typeof tag === "string")) svelte_element_invalid_this_value();
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* @param {any} store
|
|
173
|
+
* @param {string} name
|
|
174
|
+
*/
|
|
175
|
+
function validate_store(store, name) {
|
|
176
|
+
if (store != null && typeof store.subscribe !== "function") store_invalid_shape(name);
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* @template {(...args: any[]) => unknown} T
|
|
180
|
+
* @param {T} fn
|
|
181
|
+
*/
|
|
182
|
+
function prevent_snippet_stringification(fn) {
|
|
183
|
+
fn.toString = () => {
|
|
184
|
+
snippet_without_render_tag();
|
|
185
|
+
return "";
|
|
186
|
+
};
|
|
187
|
+
return fn;
|
|
188
|
+
}
|
|
189
|
+
//#endregion
|
|
190
|
+
export { attr as a, to_style as c, validate_void_dynamic_element as i, validate_dynamic_element_tag as n, clsx as o, validate_store as r, to_class as s, prevent_snippet_stringification as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-Dyr3lQv9.js","names":["clsx","_clsx"],"sources":["../../../../../../../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../../../../../../../../../node_modules/.pnpm/svelte@5.55.9_@typescript-eslint+types@8.67.0/node_modules/svelte/src/internal/shared/attributes.js","../../../../../../../../../node_modules/.pnpm/svelte@5.55.9_@typescript-eslint+types@8.67.0/node_modules/svelte/src/internal/shared/validate.js"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import { escape_html } from '../../escaping.js';\nimport { clsx as _clsx } from 'clsx';\nimport { has_own_property } from './utils.js';\n\n/**\n * `<div translate={false}>` should be rendered as `<div translate=\"no\">` and _not_\n * `<div translate=\"false\">`, which is equivalent to `<div translate=\"yes\">`. There\n * may be other odd cases that need to be added to this list in future\n * @type {Record<string, Map<any, string>>}\n */\nconst replacements = {\n\ttranslate: new Map([\n\t\t[true, 'yes'],\n\t\t[false, 'no']\n\t])\n};\n\n/**\n * @template V\n * @param {string} name\n * @param {V} value\n * @param {boolean} [is_boolean]\n * @returns {string}\n */\nexport function attr(name, value, is_boolean = false) {\n\t// attribute hidden for values other than \"until-found\" behaves like a boolean attribute\n\tif (name === 'hidden' && value !== 'until-found') {\n\t\tis_boolean = true;\n\t}\n\tif (value == null || (!value && is_boolean)) return '';\n\tconst normalized =\n\t\t(has_own_property.call(replacements, name) && replacements[name].get(value)) || value;\n\tconst assignment = is_boolean ? `=\"\"` : `=\"${escape_html(normalized, true)}\"`;\n\treturn ` ${name}${assignment}`;\n}\n\n/**\n * Small wrapper around clsx to preserve Svelte's (weird) handling of falsy values.\n * TODO Svelte 6 revisit this, and likely turn all falsy values into the empty string (what clsx also does)\n * @param {any} value\n */\nexport function clsx(value) {\n\tif (typeof value === 'object') {\n\t\treturn _clsx(value);\n\t} else {\n\t\treturn value ?? '';\n\t}\n}\n\nconst whitespace = [...' \\t\\n\\r\\f\\u00a0\\u000b\\ufeff'];\n\n/**\n * @param {any} value\n * @param {string | null} [hash]\n * @param {Record<string, boolean>} [directives]\n * @returns {string | null}\n */\nexport function to_class(value, hash, directives) {\n\tvar classname = value == null ? '' : '' + value;\n\n\tif (hash) {\n\t\tclassname = classname ? classname + ' ' + hash : hash;\n\t}\n\n\tif (directives) {\n\t\tfor (var key of Object.keys(directives)) {\n\t\t\tif (directives[key]) {\n\t\t\t\tclassname = classname ? classname + ' ' + key : key;\n\t\t\t} else if (classname.length) {\n\t\t\t\tvar len = key.length;\n\t\t\t\tvar a = 0;\n\n\t\t\t\twhile ((a = classname.indexOf(key, a)) >= 0) {\n\t\t\t\t\tvar b = a + len;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t(a === 0 || whitespace.includes(classname[a - 1])) &&\n\t\t\t\t\t\t(b === classname.length || whitespace.includes(classname[b]))\n\t\t\t\t\t) {\n\t\t\t\t\t\tclassname = (a === 0 ? '' : classname.substring(0, a)) + classname.substring(b + 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ta = b;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn classname === '' ? null : classname;\n}\n\n/**\n *\n * @param {Record<string,any>} styles\n * @param {boolean} important\n */\nfunction append_styles(styles, important = false) {\n\tvar separator = important ? ' !important;' : ';';\n\tvar css = '';\n\n\tfor (var key of Object.keys(styles)) {\n\t\tvar value = styles[key];\n\t\tif (value != null && value !== '') {\n\t\t\tcss += ' ' + key + ': ' + value + separator;\n\t\t}\n\t}\n\n\treturn css;\n}\n\n/**\n * @param {string} name\n * @returns {string}\n */\nfunction to_css_name(name) {\n\tif (name[0] !== '-' || name[1] !== '-') {\n\t\treturn name.toLowerCase();\n\t}\n\treturn name;\n}\n\n/**\n * @param {any} value\n * @param {Record<string, any> | [Record<string, any>, Record<string, any>]} [styles]\n * @returns {string | null}\n */\nexport function to_style(value, styles) {\n\tif (styles) {\n\t\tvar new_style = '';\n\n\t\t/** @type {Record<string,any> | undefined} */\n\t\tvar normal_styles;\n\n\t\t/** @type {Record<string,any> | undefined} */\n\t\tvar important_styles;\n\n\t\tif (Array.isArray(styles)) {\n\t\t\tnormal_styles = styles[0];\n\t\t\timportant_styles = styles[1];\n\t\t} else {\n\t\t\tnormal_styles = styles;\n\t\t}\n\n\t\tif (value) {\n\t\t\tvalue = String(value)\n\t\t\t\t.replaceAll(/\\s*\\/\\*.*?\\*\\/\\s*/g, '')\n\t\t\t\t.trim();\n\n\t\t\t/** @type {boolean | '\"' | \"'\"} */\n\t\t\tvar in_str = false;\n\t\t\tvar in_apo = 0;\n\t\t\tvar in_comment = false;\n\n\t\t\tvar reserved_names = [];\n\n\t\t\tif (normal_styles) {\n\t\t\t\treserved_names.push(...Object.keys(normal_styles).map(to_css_name));\n\t\t\t}\n\t\t\tif (important_styles) {\n\t\t\t\treserved_names.push(...Object.keys(important_styles).map(to_css_name));\n\t\t\t}\n\n\t\t\tvar start_index = 0;\n\t\t\tvar name_index = -1;\n\n\t\t\tconst len = value.length;\n\t\t\tfor (var i = 0; i < len; i++) {\n\t\t\t\tvar c = value[i];\n\n\t\t\t\tif (in_comment) {\n\t\t\t\t\tif (c === '/' && value[i - 1] === '*') {\n\t\t\t\t\t\tin_comment = false;\n\t\t\t\t\t}\n\t\t\t\t} else if (in_str) {\n\t\t\t\t\tif (in_str === c) {\n\t\t\t\t\t\tin_str = false;\n\t\t\t\t\t}\n\t\t\t\t} else if (c === '/' && value[i + 1] === '*') {\n\t\t\t\t\tin_comment = true;\n\t\t\t\t} else if (c === '\"' || c === \"'\") {\n\t\t\t\t\tin_str = c;\n\t\t\t\t} else if (c === '(') {\n\t\t\t\t\tin_apo++;\n\t\t\t\t} else if (c === ')') {\n\t\t\t\t\tin_apo--;\n\t\t\t\t}\n\n\t\t\t\tif (!in_comment && in_str === false && in_apo === 0) {\n\t\t\t\t\tif (c === ':' && name_index === -1) {\n\t\t\t\t\t\tname_index = i;\n\t\t\t\t\t} else if (c === ';' || i === len - 1) {\n\t\t\t\t\t\tif (name_index !== -1) {\n\t\t\t\t\t\t\tvar name = to_css_name(value.substring(start_index, name_index).trim());\n\n\t\t\t\t\t\t\tif (!reserved_names.includes(name)) {\n\t\t\t\t\t\t\t\tif (c !== ';') {\n\t\t\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tvar property = value.substring(start_index, i).trim();\n\t\t\t\t\t\t\t\tnew_style += ' ' + property + ';';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart_index = i + 1;\n\t\t\t\t\t\tname_index = -1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (normal_styles) {\n\t\t\tnew_style += append_styles(normal_styles);\n\t\t}\n\n\t\tif (important_styles) {\n\t\t\tnew_style += append_styles(important_styles, true);\n\t\t}\n\n\t\tnew_style = new_style.trim();\n\t\treturn new_style === '' ? null : new_style;\n\t}\n\n\treturn value == null ? null : String(value);\n}\n","import { is_void } from '../../utils.js';\nimport * as w from './warnings.js';\nimport * as e from './errors.js';\n\nexport { invalid_default_snippet } from './errors.js';\n\n/**\n * @param {() => string} tag_fn\n * @returns {void}\n */\nexport function validate_void_dynamic_element(tag_fn) {\n\tconst tag = tag_fn();\n\tif (tag && is_void(tag)) {\n\t\tw.dynamic_void_element_content(tag);\n\t}\n}\n\n/** @param {() => unknown} tag_fn */\nexport function validate_dynamic_element_tag(tag_fn) {\n\tconst tag = tag_fn();\n\tconst is_string = typeof tag === 'string';\n\tif (tag && !is_string) {\n\t\te.svelte_element_invalid_this_value();\n\t}\n}\n\n/**\n * @param {any} store\n * @param {string} name\n */\nexport function validate_store(store, name) {\n\tif (store != null && typeof store.subscribe !== 'function') {\n\t\te.store_invalid_shape(name);\n\t}\n}\n\n/**\n * @template {(...args: any[]) => unknown} T\n * @param {T} fn\n */\nexport function prevent_snippet_stringification(fn) {\n\tfn.toString = () => {\n\t\te.snippet_without_render_tag();\n\t\treturn '';\n\t};\n\treturn fn;\n}\n"],"x_google_ignoreList":[0,1,2],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
//#region ../../../../node_modules/.pnpm/svelte@5.55.9_@typescript-eslint+types@8.67.0/node_modules/svelte/src/version.js
|
|
2
|
+
/**
|
|
3
|
+
* The current version, as set in package.json.
|
|
4
|
+
* @type {string}
|
|
5
|
+
*/
|
|
6
|
+
var VERSION = "5.55.9";
|
|
7
|
+
//#endregion
|
|
8
|
+
export { VERSION as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-_9FHH-LF.js","names":[],"sources":["../../../../../../../../../node_modules/.pnpm/svelte@5.55.9_@typescript-eslint+types@8.67.0/node_modules/svelte/src/version.js"],"sourcesContent":["// generated during release, do not modify\n\n/**\n * The current version, as set in package.json.\n * @type {string}\n */\nexport const VERSION = '5.55.9';\nexport const PUBLIC_VERSION = '5';\n"],"x_google_ignoreList":[0],"mappings":";;;;;AAMA,IAAa,UAAU"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
//#region ../../../../node_modules/.pnpm/svelte@5.55.9_@typescript-eslint+types@8.67.0/node_modules/svelte/src/internal/client/warnings.js
|
|
2
|
+
var bold = "font-weight: bold";
|
|
3
|
+
var normal = "font-weight: normal";
|
|
4
|
+
/**
|
|
5
|
+
* Assignment to `%property%` property (%location%) will evaluate to the right-hand side, not the value of `%property%` following the assignment. This may result in unexpected behaviour.
|
|
6
|
+
* @param {string} property
|
|
7
|
+
* @param {string} location
|
|
8
|
+
*/
|
|
9
|
+
function assignment_value_stale(property, location) {
|
|
10
|
+
console.warn(`%c[svelte] assignment_value_stale\n%cAssignment to \`${property}\` property (${location}) will evaluate to the right-hand side, not the value of \`${property}\` following the assignment. This may result in unexpected behaviour.\nhttps://svelte.dev/e/assignment_value_stale`, bold, normal);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Detected reactivity loss when reading `%name%`. This happens when state is read in an async function after an earlier `await`
|
|
14
|
+
* @param {string} name
|
|
15
|
+
*/
|
|
16
|
+
function await_reactivity_loss(name) {
|
|
17
|
+
console.warn(`%c[svelte] await_reactivity_loss\n%cDetected reactivity loss when reading \`${name}\`. This happens when state is read in an async function after an earlier \`await\`\nhttps://svelte.dev/e/await_reactivity_loss`, bold, normal);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* An async derived, `%name%` (%location%) was not read immediately after it resolved. This often indicates an unnecessary waterfall, which can slow down your app
|
|
21
|
+
* @param {string} name
|
|
22
|
+
* @param {string} location
|
|
23
|
+
*/
|
|
24
|
+
function await_waterfall(name, location) {
|
|
25
|
+
console.warn(`%c[svelte] await_waterfall\n%cAn async derived, \`${name}\` (${location}) was not read immediately after it resolved. This often indicates an unnecessary waterfall, which can slow down your app\nhttps://svelte.dev/e/await_waterfall`, bold, normal);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* `%binding%` (%location%) is binding to a non-reactive property
|
|
29
|
+
* @param {string} binding
|
|
30
|
+
* @param {string | undefined | null} [location]
|
|
31
|
+
*/
|
|
32
|
+
function binding_property_non_reactive(binding, location) {
|
|
33
|
+
console.warn(`%c[svelte] binding_property_non_reactive\n%c${location ? `\`${binding}\` (${location}) is binding to a non-reactive property` : `\`${binding}\` is binding to a non-reactive property`}\nhttps://svelte.dev/e/binding_property_non_reactive`, bold, normal);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Your `console.%method%` contained `$state` proxies. Consider using `$inspect(...)` or `$state.snapshot(...)` instead
|
|
37
|
+
* @param {string} method
|
|
38
|
+
*/
|
|
39
|
+
function console_log_state(method) {
|
|
40
|
+
console.warn(`%c[svelte] console_log_state\n%cYour \`console.${method}\` contained \`$state\` proxies. Consider using \`$inspect(...)\` or \`$state.snapshot(...)\` instead\nhttps://svelte.dev/e/console_log_state`, bold, normal);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Reading a derived belonging to a now-destroyed effect may result in stale values
|
|
44
|
+
*/
|
|
45
|
+
function derived_inert() {
|
|
46
|
+
console.warn(`%c[svelte] derived_inert\n%cReading a derived belonging to a now-destroyed effect may result in stale values\nhttps://svelte.dev/e/derived_inert`, bold, normal);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* %handler% should be a function. Did you mean to %suggestion%?
|
|
50
|
+
* @param {string} handler
|
|
51
|
+
* @param {string} suggestion
|
|
52
|
+
*/
|
|
53
|
+
function event_handler_invalid(handler, suggestion) {
|
|
54
|
+
console.warn(`%c[svelte] event_handler_invalid\n%c${handler} should be a function. Did you mean to ${suggestion}?\nhttps://svelte.dev/e/event_handler_invalid`, bold, normal);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* The `%attribute%` attribute on `%html%` changed its value between server and client renders. The client value, `%value%`, will be ignored in favour of the server value
|
|
58
|
+
* @param {string} attribute
|
|
59
|
+
* @param {string} html
|
|
60
|
+
* @param {string} value
|
|
61
|
+
*/
|
|
62
|
+
function hydration_attribute_changed(attribute, html, value) {
|
|
63
|
+
console.warn(`%c[svelte] hydration_attribute_changed\n%cThe \`${attribute}\` attribute on \`${html}\` changed its value between server and client renders. The client value, \`${value}\`, will be ignored in favour of the server value\nhttps://svelte.dev/e/hydration_attribute_changed`, bold, normal);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* The value of an `{@html ...}` block %location% changed between server and client renders. The client value will be ignored in favour of the server value
|
|
67
|
+
* @param {string | undefined | null} [location]
|
|
68
|
+
*/
|
|
69
|
+
function hydration_html_changed(location) {
|
|
70
|
+
console.warn(`%c[svelte] hydration_html_changed\n%c${location ? `The value of an \`{@html ...}\` block ${location} changed between server and client renders. The client value will be ignored in favour of the server value` : "The value of an `{@html ...}` block changed between server and client renders. The client value will be ignored in favour of the server value"}\nhttps://svelte.dev/e/hydration_html_changed`, bold, normal);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Hydration failed because the initial UI does not match what was rendered on the server. The error occurred near %location%
|
|
74
|
+
* @param {string | undefined | null} [location]
|
|
75
|
+
*/
|
|
76
|
+
function hydration_mismatch(location) {
|
|
77
|
+
console.warn(`%c[svelte] hydration_mismatch\n%c${location ? `Hydration failed because the initial UI does not match what was rendered on the server. The error occurred near ${location}` : "Hydration failed because the initial UI does not match what was rendered on the server"}\nhttps://svelte.dev/e/hydration_mismatch`, bold, normal);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Tried to unmount a component that was not mounted
|
|
81
|
+
*/
|
|
82
|
+
function lifecycle_double_unmount() {
|
|
83
|
+
console.warn(`%c[svelte] lifecycle_double_unmount\n%cTried to unmount a component that was not mounted\nhttps://svelte.dev/e/lifecycle_double_unmount`, bold, normal);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* %parent% passed property `%prop%` to %child% with `bind:`, but its parent component %owner% did not declare `%prop%` as a binding. Consider creating a binding between %owner% and %parent% (e.g. `bind:%prop%={...}` instead of `%prop%={...}`)
|
|
87
|
+
* @param {string} parent
|
|
88
|
+
* @param {string} prop
|
|
89
|
+
* @param {string} child
|
|
90
|
+
* @param {string} owner
|
|
91
|
+
*/
|
|
92
|
+
function ownership_invalid_binding(parent, prop, child, owner) {
|
|
93
|
+
console.warn(`%c[svelte] ownership_invalid_binding\n%c${parent} passed property \`${prop}\` to ${child} with \`bind:\`, but its parent component ${owner} did not declare \`${prop}\` as a binding. Consider creating a binding between ${owner} and ${parent} (e.g. \`bind:${prop}={...}\` instead of \`${prop}={...}\`)\nhttps://svelte.dev/e/ownership_invalid_binding`, bold, normal);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Mutating unbound props (`%name%`, at %location%) is strongly discouraged. Consider using `bind:%prop%={...}` in %parent% (or using a callback) instead
|
|
97
|
+
* @param {string} name
|
|
98
|
+
* @param {string} location
|
|
99
|
+
* @param {string} prop
|
|
100
|
+
* @param {string} parent
|
|
101
|
+
*/
|
|
102
|
+
function ownership_invalid_mutation(name, location, prop, parent) {
|
|
103
|
+
console.warn(`%c[svelte] ownership_invalid_mutation\n%cMutating unbound props (\`${name}\`, at ${location}) is strongly discouraged. Consider using \`bind:${prop}={...}\` in ${parent} (or using a callback) instead\nhttps://svelte.dev/e/ownership_invalid_mutation`, bold, normal);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* The `value` property of a `<select multiple>` element should be an array, but it received a non-array value. The selection will be kept as is.
|
|
107
|
+
*/
|
|
108
|
+
function select_multiple_invalid_value() {
|
|
109
|
+
console.warn(`%c[svelte] select_multiple_invalid_value\n%cThe \`value\` property of a \`<select multiple>\` element should be an array, but it received a non-array value. The selection will be kept as is.\nhttps://svelte.dev/e/select_multiple_invalid_value`, bold, normal);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Reactive `$state(...)` proxies and the values they proxy have different identities. Because of this, comparisons with `%operator%` will produce unexpected results
|
|
113
|
+
* @param {string} operator
|
|
114
|
+
*/
|
|
115
|
+
function state_proxy_equality_mismatch(operator) {
|
|
116
|
+
console.warn(`%c[svelte] state_proxy_equality_mismatch\n%cReactive \`$state(...)\` proxies and the values they proxy have different identities. Because of this, comparisons with \`${operator}\` will produce unexpected results\nhttps://svelte.dev/e/state_proxy_equality_mismatch`, bold, normal);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Tried to unmount a state proxy, rather than a component
|
|
120
|
+
*/
|
|
121
|
+
function state_proxy_unmount() {
|
|
122
|
+
console.warn(`%c[svelte] state_proxy_unmount\n%cTried to unmount a state proxy, rather than a component\nhttps://svelte.dev/e/state_proxy_unmount`, bold, normal);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* A `<svelte:boundary>` `reset` function only resets the boundary the first time it is called
|
|
126
|
+
*/
|
|
127
|
+
function svelte_boundary_reset_noop() {
|
|
128
|
+
console.warn(`%c[svelte] svelte_boundary_reset_noop\n%cA \`<svelte:boundary>\` \`reset\` function only resets the boundary the first time it is called\nhttps://svelte.dev/e/svelte_boundary_reset_noop`, bold, normal);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* The `slide` transition does not work correctly for elements with `display: %value%`
|
|
132
|
+
* @param {string} value
|
|
133
|
+
*/
|
|
134
|
+
function transition_slide_display(value) {
|
|
135
|
+
console.warn(`%c[svelte] transition_slide_display\n%cThe \`slide\` transition does not work correctly for elements with \`display: ${value}\`\nhttps://svelte.dev/e/transition_slide_display`, bold, normal);
|
|
136
|
+
}
|
|
137
|
+
//#endregion
|
|
138
|
+
export { svelte_boundary_reset_noop as _, console_log_state as a, hydration_attribute_changed as c, lifecycle_double_unmount as d, ownership_invalid_binding as f, state_proxy_unmount as g, state_proxy_equality_mismatch as h, binding_property_non_reactive as i, hydration_html_changed as l, select_multiple_invalid_value as m, await_reactivity_loss as n, derived_inert as o, ownership_invalid_mutation as p, await_waterfall as r, event_handler_invalid as s, assignment_value_stale as t, hydration_mismatch as u, transition_slide_display as v };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warnings-CUbSPnyP.js","names":[],"sources":["../../../../../../../../../node_modules/.pnpm/svelte@5.55.9_@typescript-eslint+types@8.67.0/node_modules/svelte/src/internal/client/warnings.js"],"sourcesContent":["/* This file is generated by scripts/process-messages/index.js. Do not edit! */\n\nimport { DEV } from 'esm-env';\n\nvar bold = 'font-weight: bold';\nvar normal = 'font-weight: normal';\n\n/**\n * Assignment to `%property%` property (%location%) will evaluate to the right-hand side, not the value of `%property%` following the assignment. This may result in unexpected behaviour.\n * @param {string} property\n * @param {string} location\n */\nexport function assignment_value_stale(property, location) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] assignment_value_stale\\n%cAssignment to \\`${property}\\` property (${location}) will evaluate to the right-hand side, not the value of \\`${property}\\` following the assignment. This may result in unexpected behaviour.\\nhttps://svelte.dev/e/assignment_value_stale`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/assignment_value_stale`);\n\t}\n}\n\n/**\n * Detected reactivity loss when reading `%name%`. This happens when state is read in an async function after an earlier `await`\n * @param {string} name\n */\nexport function await_reactivity_loss(name) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] await_reactivity_loss\\n%cDetected reactivity loss when reading \\`${name}\\`. This happens when state is read in an async function after an earlier \\`await\\`\\nhttps://svelte.dev/e/await_reactivity_loss`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/await_reactivity_loss`);\n\t}\n}\n\n/**\n * An async derived, `%name%` (%location%) was not read immediately after it resolved. This often indicates an unnecessary waterfall, which can slow down your app\n * @param {string} name\n * @param {string} location\n */\nexport function await_waterfall(name, location) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] await_waterfall\\n%cAn async derived, \\`${name}\\` (${location}) was not read immediately after it resolved. This often indicates an unnecessary waterfall, which can slow down your app\\nhttps://svelte.dev/e/await_waterfall`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/await_waterfall`);\n\t}\n}\n\n/**\n * `%binding%` (%location%) is binding to a non-reactive property\n * @param {string} binding\n * @param {string | undefined | null} [location]\n */\nexport function binding_property_non_reactive(binding, location) {\n\tif (DEV) {\n\t\tconsole.warn(\n\t\t\t`%c[svelte] binding_property_non_reactive\\n%c${location\n\t\t\t\t? `\\`${binding}\\` (${location}) is binding to a non-reactive property`\n\t\t\t\t: `\\`${binding}\\` is binding to a non-reactive property`}\\nhttps://svelte.dev/e/binding_property_non_reactive`,\n\t\t\tbold,\n\t\t\tnormal\n\t\t);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/binding_property_non_reactive`);\n\t}\n}\n\n/**\n * Your `console.%method%` contained `$state` proxies. Consider using `$inspect(...)` or `$state.snapshot(...)` instead\n * @param {string} method\n */\nexport function console_log_state(method) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] console_log_state\\n%cYour \\`console.${method}\\` contained \\`$state\\` proxies. Consider using \\`$inspect(...)\\` or \\`$state.snapshot(...)\\` instead\\nhttps://svelte.dev/e/console_log_state`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/console_log_state`);\n\t}\n}\n\n/**\n * Reading a derived belonging to a now-destroyed effect may result in stale values\n */\nexport function derived_inert() {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] derived_inert\\n%cReading a derived belonging to a now-destroyed effect may result in stale values\\nhttps://svelte.dev/e/derived_inert`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/derived_inert`);\n\t}\n}\n\n/**\n * %handler% should be a function. Did you mean to %suggestion%?\n * @param {string} handler\n * @param {string} suggestion\n */\nexport function event_handler_invalid(handler, suggestion) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] event_handler_invalid\\n%c${handler} should be a function. Did you mean to ${suggestion}?\\nhttps://svelte.dev/e/event_handler_invalid`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/event_handler_invalid`);\n\t}\n}\n\n/**\n * Expected to find a hydratable with key `%key%` during hydration, but did not.\n * @param {string} key\n */\nexport function hydratable_missing_but_expected(key) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] hydratable_missing_but_expected\\n%cExpected to find a hydratable with key \\`${key}\\` during hydration, but did not.\\nhttps://svelte.dev/e/hydratable_missing_but_expected`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/hydratable_missing_but_expected`);\n\t}\n}\n\n/**\n * The `%attribute%` attribute on `%html%` changed its value between server and client renders. The client value, `%value%`, will be ignored in favour of the server value\n * @param {string} attribute\n * @param {string} html\n * @param {string} value\n */\nexport function hydration_attribute_changed(attribute, html, value) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] hydration_attribute_changed\\n%cThe \\`${attribute}\\` attribute on \\`${html}\\` changed its value between server and client renders. The client value, \\`${value}\\`, will be ignored in favour of the server value\\nhttps://svelte.dev/e/hydration_attribute_changed`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/hydration_attribute_changed`);\n\t}\n}\n\n/**\n * The value of an `{@html ...}` block %location% changed between server and client renders. The client value will be ignored in favour of the server value\n * @param {string | undefined | null} [location]\n */\nexport function hydration_html_changed(location) {\n\tif (DEV) {\n\t\tconsole.warn(\n\t\t\t`%c[svelte] hydration_html_changed\\n%c${location\n\t\t\t\t? `The value of an \\`{@html ...}\\` block ${location} changed between server and client renders. The client value will be ignored in favour of the server value`\n\t\t\t\t: 'The value of an `{@html ...}` block changed between server and client renders. The client value will be ignored in favour of the server value'}\\nhttps://svelte.dev/e/hydration_html_changed`,\n\t\t\tbold,\n\t\t\tnormal\n\t\t);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/hydration_html_changed`);\n\t}\n}\n\n/**\n * Hydration failed because the initial UI does not match what was rendered on the server. The error occurred near %location%\n * @param {string | undefined | null} [location]\n */\nexport function hydration_mismatch(location) {\n\tif (DEV) {\n\t\tconsole.warn(\n\t\t\t`%c[svelte] hydration_mismatch\\n%c${location\n\t\t\t\t? `Hydration failed because the initial UI does not match what was rendered on the server. The error occurred near ${location}`\n\t\t\t\t: 'Hydration failed because the initial UI does not match what was rendered on the server'}\\nhttps://svelte.dev/e/hydration_mismatch`,\n\t\t\tbold,\n\t\t\tnormal\n\t\t);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/hydration_mismatch`);\n\t}\n}\n\n/**\n * The `render` function passed to `createRawSnippet` should return HTML for a single element\n */\nexport function invalid_raw_snippet_render() {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] invalid_raw_snippet_render\\n%cThe \\`render\\` function passed to \\`createRawSnippet\\` should return HTML for a single element\\nhttps://svelte.dev/e/invalid_raw_snippet_render`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/invalid_raw_snippet_render`);\n\t}\n}\n\n/**\n * Detected a migrated `$:` reactive block in `%filename%` that both accesses and updates the same reactive value. This may cause recursive updates when converted to an `$effect`.\n * @param {string} filename\n */\nexport function legacy_recursive_reactive_block(filename) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] legacy_recursive_reactive_block\\n%cDetected a migrated \\`$:\\` reactive block in \\`${filename}\\` that both accesses and updates the same reactive value. This may cause recursive updates when converted to an \\`$effect\\`.\\nhttps://svelte.dev/e/legacy_recursive_reactive_block`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/legacy_recursive_reactive_block`);\n\t}\n}\n\n/**\n * Tried to unmount a component that was not mounted\n */\nexport function lifecycle_double_unmount() {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] lifecycle_double_unmount\\n%cTried to unmount a component that was not mounted\\nhttps://svelte.dev/e/lifecycle_double_unmount`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/lifecycle_double_unmount`);\n\t}\n}\n\n/**\n * %parent% passed property `%prop%` to %child% with `bind:`, but its parent component %owner% did not declare `%prop%` as a binding. Consider creating a binding between %owner% and %parent% (e.g. `bind:%prop%={...}` instead of `%prop%={...}`)\n * @param {string} parent\n * @param {string} prop\n * @param {string} child\n * @param {string} owner\n */\nexport function ownership_invalid_binding(parent, prop, child, owner) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] ownership_invalid_binding\\n%c${parent} passed property \\`${prop}\\` to ${child} with \\`bind:\\`, but its parent component ${owner} did not declare \\`${prop}\\` as a binding. Consider creating a binding between ${owner} and ${parent} (e.g. \\`bind:${prop}={...}\\` instead of \\`${prop}={...}\\`)\\nhttps://svelte.dev/e/ownership_invalid_binding`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/ownership_invalid_binding`);\n\t}\n}\n\n/**\n * Mutating unbound props (`%name%`, at %location%) is strongly discouraged. Consider using `bind:%prop%={...}` in %parent% (or using a callback) instead\n * @param {string} name\n * @param {string} location\n * @param {string} prop\n * @param {string} parent\n */\nexport function ownership_invalid_mutation(name, location, prop, parent) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] ownership_invalid_mutation\\n%cMutating unbound props (\\`${name}\\`, at ${location}) is strongly discouraged. Consider using \\`bind:${prop}={...}\\` in ${parent} (or using a callback) instead\\nhttps://svelte.dev/e/ownership_invalid_mutation`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/ownership_invalid_mutation`);\n\t}\n}\n\n/**\n * The `value` property of a `<select multiple>` element should be an array, but it received a non-array value. The selection will be kept as is.\n */\nexport function select_multiple_invalid_value() {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] select_multiple_invalid_value\\n%cThe \\`value\\` property of a \\`<select multiple>\\` element should be an array, but it received a non-array value. The selection will be kept as is.\\nhttps://svelte.dev/e/select_multiple_invalid_value`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/select_multiple_invalid_value`);\n\t}\n}\n\n/**\n * Reactive `$state(...)` proxies and the values they proxy have different identities. Because of this, comparisons with `%operator%` will produce unexpected results\n * @param {string} operator\n */\nexport function state_proxy_equality_mismatch(operator) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] state_proxy_equality_mismatch\\n%cReactive \\`$state(...)\\` proxies and the values they proxy have different identities. Because of this, comparisons with \\`${operator}\\` will produce unexpected results\\nhttps://svelte.dev/e/state_proxy_equality_mismatch`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/state_proxy_equality_mismatch`);\n\t}\n}\n\n/**\n * Tried to unmount a state proxy, rather than a component\n */\nexport function state_proxy_unmount() {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] state_proxy_unmount\\n%cTried to unmount a state proxy, rather than a component\\nhttps://svelte.dev/e/state_proxy_unmount`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/state_proxy_unmount`);\n\t}\n}\n\n/**\n * A `<svelte:boundary>` `reset` function only resets the boundary the first time it is called\n */\nexport function svelte_boundary_reset_noop() {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] svelte_boundary_reset_noop\\n%cA \\`<svelte:boundary>\\` \\`reset\\` function only resets the boundary the first time it is called\\nhttps://svelte.dev/e/svelte_boundary_reset_noop`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`);\n\t}\n}\n\n/**\n * The `slide` transition does not work correctly for elements with `display: %value%`\n * @param {string} value\n */\nexport function transition_slide_display(value) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] transition_slide_display\\n%cThe \\`slide\\` transition does not work correctly for elements with \\`display: ${value}\\`\\nhttps://svelte.dev/e/transition_slide_display`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/transition_slide_display`);\n\t}\n}"],"x_google_ignoreList":[0],"mappings":";AAIA,IAAI,OAAO;AACX,IAAI,SAAS;;;;;;AAOb,SAAgB,uBAAuB,UAAU,UAAU;CAEzD,QAAQ,KAAK,wDAAwD,SAAS,eAAe,SAAS,6DAA6D,SAAS,qHAAqH,MAAM,MAAM;AAI/S;;;;;AAMA,SAAgB,sBAAsB,MAAM;CAE1C,QAAQ,KAAK,+EAA+E,KAAK,kIAAkI,MAAM,MAAM;AAIjP;;;;;;AAOA,SAAgB,gBAAgB,MAAM,UAAU;CAE9C,QAAQ,KAAK,qDAAqD,KAAK,MAAM,SAAS,kKAAkK,MAAM,MAAM;AAItQ;;;;;;AAOA,SAAgB,8BAA8B,SAAS,UAAU;CAE/D,QAAQ,KACP,+CAA+C,WAC5C,KAAK,QAAQ,MAAM,SAAS,2CAC5B,KAAK,QAAQ,0CAA0C,uDAC1D,MACA,MACD;AAIF;;;;;AAMA,SAAgB,kBAAkB,QAAQ;CAExC,QAAQ,KAAK,kDAAkD,OAAO,gJAAgJ,MAAM,MAAM;AAIpO;;;;AAKA,SAAgB,gBAAgB;CAE9B,QAAQ,KAAK,oJAAoJ,MAAM,MAAM;AAI/K;;;;;;AAOA,SAAgB,sBAAsB,SAAS,YAAY;CAEzD,QAAQ,KAAK,uCAAuC,QAAQ,yCAAyC,WAAW,gDAAgD,MAAM,MAAM;AAI9K;;;;;;;AAoBA,SAAgB,4BAA4B,WAAW,MAAM,OAAO;CAElE,QAAQ,KAAK,mDAAmD,UAAU,oBAAoB,KAAK,8EAA8E,MAAM,sGAAsG,MAAM,MAAM;AAI3S;;;;;AAMA,SAAgB,uBAAuB,UAAU;CAE/C,QAAQ,KACP,wCAAwC,WACrC,yCAAyC,SAAS,8GAClD,gJAAgJ,gDACnJ,MACA,MACD;AAIF;;;;;AAMA,SAAgB,mBAAmB,UAAU;CAE3C,QAAQ,KACP,oCAAoC,WACjC,mHAAmH,aACnH,yFAAyF,4CAC5F,MACA,MACD;AAIF;;;;AA4BA,SAAgB,2BAA2B;CAEzC,QAAQ,KAAK,2IAA2I,MAAM,MAAM;AAItK;;;;;;;;AASA,SAAgB,0BAA0B,QAAQ,MAAM,OAAO,OAAO;CAEpE,QAAQ,KAAK,2CAA2C,OAAO,qBAAqB,KAAK,QAAQ,MAAM,4CAA4C,MAAM,qBAAqB,KAAK,uDAAuD,MAAM,OAAO,OAAO,gBAAgB,KAAK,wBAAwB,KAAK,4DAA4D,MAAM,MAAM;AAI1X;;;;;;;;AASA,SAAgB,2BAA2B,MAAM,UAAU,MAAM,QAAQ;CAEvE,QAAQ,KAAK,sEAAsE,KAAK,SAAS,SAAS,mDAAmD,KAAK,cAAc,OAAO,kFAAkF,MAAM,MAAM;AAIvR;;;;AAKA,SAAgB,gCAAgC;CAE9C,QAAQ,KAAK,sPAAsP,MAAM,MAAM;AAIjR;;;;;AAMA,SAAgB,8BAA8B,UAAU;CAEtD,QAAQ,KAAK,yKAAyK,SAAS,yFAAyF,MAAM,MAAM;AAItS;;;;AAKA,SAAgB,sBAAsB;CAEpC,QAAQ,KAAK,uIAAuI,MAAM,MAAM;AAIlK;;;;AAKA,SAAgB,6BAA6B;CAE3C,QAAQ,KAAK,6LAA6L,MAAM,MAAM;AAIxN;;;;;AAMA,SAAgB,yBAAyB,OAAO;CAE9C,QAAQ,KAAK,wHAAwH,MAAM,oDAAoD,MAAM,MAAM;AAI7M"}
|
|
@@ -620,6 +620,36 @@ describe('component blocks', () => {
|
|
|
620
620
|
})
|
|
621
621
|
|
|
622
622
|
describe('validateProject', () => {
|
|
623
|
+
it('catches a form condition that reads a field which does not exist', () => {
|
|
624
|
+
// Silently, such a field would compare against undefined and sit hidden for
|
|
625
|
+
// good, with nothing on screen to explain why.
|
|
626
|
+
const p = createProject([customers])
|
|
627
|
+
const typo = {
|
|
628
|
+
...p,
|
|
629
|
+
entities: [{
|
|
630
|
+
...p.entities[0]!,
|
|
631
|
+
fields: p.entities[0]!.fields.map((f) => (f.field === 'name'
|
|
632
|
+
? { ...f, when: { visible: { kind: 'cmp', column: 'stage', op: 'equals', value: 'lost' } as never } }
|
|
633
|
+
: f)),
|
|
634
|
+
}],
|
|
635
|
+
}
|
|
636
|
+
const issue = validateProject(typo).find((i) => /not a field/.test(i.message))
|
|
637
|
+
expect(issue?.level).toBe('error')
|
|
638
|
+
expect(issue?.message).toContain('stage')
|
|
639
|
+
|
|
640
|
+
// The same condition against a real field is clean.
|
|
641
|
+
const ok = {
|
|
642
|
+
...typo,
|
|
643
|
+
entities: [{
|
|
644
|
+
...typo.entities[0]!,
|
|
645
|
+
fields: typo.entities[0]!.fields.map((f) => (f.field === 'name'
|
|
646
|
+
? { ...f, when: { visible: { kind: 'cmp', column: 'tier', op: 'equals', value: 'pro' } as never } }
|
|
647
|
+
: f)),
|
|
648
|
+
}],
|
|
649
|
+
}
|
|
650
|
+
expect(validateProject(ok).filter((i) => /not a field/.test(i.message))).toEqual([])
|
|
651
|
+
})
|
|
652
|
+
|
|
623
653
|
it('addScreen dedupes the route so two screens for one entity do not collide', () => {
|
|
624
654
|
const p = addScreen(createProject([customers]), 'customers')
|
|
625
655
|
expect(new Set(p.screens.map((s) => s.route)).size).toBe(2) // customers, customers-1
|
package/src/studio/project.ts
CHANGED
|
@@ -10,8 +10,10 @@
|
|
|
10
10
|
* Block-config unions are defined here (not imported from `sources/`) to keep the
|
|
11
11
|
* module resolvable under node16.
|
|
12
12
|
*/
|
|
13
|
-
import type { EntityField, EntityFieldType, EntitySchema } from '../schema.js'
|
|
13
|
+
import type { EntityField, EntityFieldType, EntitySchema, FormSection } from '../schema.js'
|
|
14
14
|
import type { ChartType, DockManagerState, DockNode, DockPane, DockTabs } from '@svgrid/grid'
|
|
15
|
+
import type { PredicateExpr } from '../expressions/expression-types.js'
|
|
16
|
+
import { collectColumnRefs } from '../expressions/parse.js'
|
|
15
17
|
import { uiComponentSpec } from './ui-components.js'
|
|
16
18
|
|
|
17
19
|
export type Reduce = 'sum' | 'avg' | 'count' | 'min' | 'max'
|
|
@@ -125,8 +127,9 @@ export type GridConfig = {
|
|
|
125
127
|
formColumns?: 1 | 2 | 3
|
|
126
128
|
/** Restrict + order the form's fields (field names). */
|
|
127
129
|
formFields?: string[]
|
|
128
|
-
/** Group fields into titled fieldsets.
|
|
129
|
-
|
|
130
|
+
/** Group fields into titled fieldsets. Overrides the entity's own
|
|
131
|
+
* `EntitySchema.form.sections` for this grid's form. */
|
|
132
|
+
formSections?: FormSection[]
|
|
130
133
|
/** Dialog title override + width for the modal/drawer form. */
|
|
131
134
|
formTitle?: string
|
|
132
135
|
formSize?: 'sm' | 'md' | 'lg'
|
|
@@ -911,13 +914,26 @@ const SSR_READ_KINDS = new Set<BlockKind>(['chart', 'pivot', 'dashboard', 'kpi',
|
|
|
911
914
|
* null when it must stay SPA. */
|
|
912
915
|
export function ssrScreenShape(project: StudioProject, screen: Screen): 'grid' | 'read' | null {
|
|
913
916
|
if (!screen.entity || screen.code) return null
|
|
914
|
-
const
|
|
917
|
+
const source = project.dataSources?.[screen.entity]
|
|
918
|
+
const kind = source?.kind ?? project.dataSource
|
|
915
919
|
// memory runs the source in-process; sql reuses the connected /api route via
|
|
916
|
-
// event.fetch
|
|
917
|
-
|
|
920
|
+
// event.fetch; rest calls the remote API straight from the server, which needs
|
|
921
|
+
// an absolute URL to resolve there. (supabase and pglite stay SPA: pglite only
|
|
922
|
+
// exists in the browser, and a Supabase read carries the signed-in user's token,
|
|
923
|
+
// which a server-side call with the anon key would silently drop.)
|
|
924
|
+
if (kind === 'rest') {
|
|
925
|
+
if (!(source?.kind === 'rest' && /^https?:\/\//i.test(source.baseUrl ?? ''))) return null
|
|
926
|
+
} else if (kind !== 'memory' && kind !== 'sql') {
|
|
927
|
+
return null
|
|
928
|
+
}
|
|
918
929
|
const blocks = screen.blocks ?? []
|
|
919
|
-
|
|
920
|
-
|
|
930
|
+
// A grid, optionally preceded by a facet panel. The panel is the reason this
|
|
931
|
+
// allowance exists: every list screen the generator produces is [filter, grid],
|
|
932
|
+
// so without it the shipped app shape could never render on the server. Facets
|
|
933
|
+
// map cleanly onto the URL params `planFromSearchParams` already reads.
|
|
934
|
+
const grids = blocks.filter((b) => b.config.kind === 'grid')
|
|
935
|
+
if (grids.length === 1 && blocks.every((b) => b.config.kind === 'grid' || b.config.kind === 'filter')) {
|
|
936
|
+
const g = grids[0]!.config as GridConfig
|
|
921
937
|
if (g.treeData || g.scheduler) return null
|
|
922
938
|
return 'grid'
|
|
923
939
|
}
|
|
@@ -943,6 +959,33 @@ export function isSsrScreen(project: StudioProject, screen: Screen): boolean {
|
|
|
943
959
|
return screenRenderMode(project, screen) === 'ssr' && ssrEligible(project, screen)
|
|
944
960
|
}
|
|
945
961
|
|
|
962
|
+
/**
|
|
963
|
+
* Turn server rendering on for every screen that can support it, for entities
|
|
964
|
+
* backed by a real database. Applied when a project is first generated, so a new
|
|
965
|
+
* app reads as idiomatic SvelteKit (a `load` and form `actions`) rather than a
|
|
966
|
+
* client SPA. Screens that already state a mode are left alone, so this never
|
|
967
|
+
* overrides a choice somebody made.
|
|
968
|
+
*
|
|
969
|
+
* Deliberately limited to sources that hold one copy of the data. In-memory and
|
|
970
|
+
* PGlite sources are module singletons, so an SSR screen would read and write the
|
|
971
|
+
* *server's* copy of the rows while the app's remaining SPA screens read the
|
|
972
|
+
* browser's - create a row on one and the other never sees it. SQL and REST have
|
|
973
|
+
* no such split: every path goes to the same database or the same remote API.
|
|
974
|
+
*/
|
|
975
|
+
const SSR_DEFAULT_KINDS = new Set<DataSourceKind>(['sql', 'rest'])
|
|
976
|
+
|
|
977
|
+
export function withSsrDefaults(project: StudioProject): StudioProject {
|
|
978
|
+
return {
|
|
979
|
+
...project,
|
|
980
|
+
screens: project.screens.map((screen) => {
|
|
981
|
+
if (screen.renderMode || !screen.entity) return screen
|
|
982
|
+
const kind = project.dataSources?.[screen.entity]?.kind ?? project.dataSource
|
|
983
|
+
if (!SSR_DEFAULT_KINDS.has(kind)) return screen
|
|
984
|
+
return ssrEligible(project, screen) ? { ...screen, renderMode: 'ssr' } : screen
|
|
985
|
+
}),
|
|
986
|
+
}
|
|
987
|
+
}
|
|
988
|
+
|
|
946
989
|
/** The triggers configured for an entity (or an empty object). */
|
|
947
990
|
export function triggersOf(project: StudioProject, entity: string): EntityTriggers {
|
|
948
991
|
return project.triggers?.[entity] ?? {}
|
|
@@ -2236,6 +2279,27 @@ export function validateProject(project: StudioProject): ProjectIssue[] {
|
|
|
2236
2279
|
if (project.entities.length === 0) issues.push({ level: 'error', message: 'Add at least one entity.' })
|
|
2237
2280
|
if (project.screens.length === 0) issues.push({ level: 'warning', message: 'No screens yet.' })
|
|
2238
2281
|
|
|
2282
|
+
// Form conditions read other fields by name. A name that resolves to nothing
|
|
2283
|
+
// compares against undefined, so the field it guards would sit hidden or
|
|
2284
|
+
// locked forever with no clue why - worth catching before it ships.
|
|
2285
|
+
for (const entity of project.entities) {
|
|
2286
|
+
const names = new Set(entity.fields.map((f) => f.field))
|
|
2287
|
+
for (const field of entity.fields) {
|
|
2288
|
+
if (!field.when) continue
|
|
2289
|
+
for (const [flag, expr] of Object.entries(field.when)) {
|
|
2290
|
+
if (!expr) continue
|
|
2291
|
+
for (const ref of collectColumnRefs(expr as PredicateExpr)) {
|
|
2292
|
+
if (!names.has(ref)) {
|
|
2293
|
+
issues.push({
|
|
2294
|
+
level: 'error',
|
|
2295
|
+
message: `"${entity.name}.${field.field}" has a ${flag} condition on "${ref}", which is not a field on ${entity.name}.`,
|
|
2296
|
+
})
|
|
2297
|
+
}
|
|
2298
|
+
}
|
|
2299
|
+
}
|
|
2300
|
+
}
|
|
2301
|
+
}
|
|
2302
|
+
|
|
2239
2303
|
const routes = new Set<string>()
|
|
2240
2304
|
for (const s of project.screens) {
|
|
2241
2305
|
// `entity` is optional (a freestanding screen has none, by design) - only a
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { EntitySchema } from '../../schema.js'
|
|
2
2
|
import type { FormatRule } from '../project.js'
|
|
3
|
-
import { screen, formScreen, boardScreen, schedulerScreen, workspaceScreen, detailScreen, project, dashScreen, statusPills, pad, ids, type SampleApp } from './shared.js'
|
|
3
|
+
import { screen, formScreen, boardScreen, schedulerScreen, workspaceScreen, detailScreen, project, dashScreen, statusPills, pad, ids, whenIs, type SampleApp } from './shared.js'
|
|
4
4
|
|
|
5
5
|
// Salesforce Lightning-style chrome: a gradient blue brand rail, white rounded-pill
|
|
6
6
|
// nav with a solid-white active state, and a Lightning-blue rule under the toolbar.
|
|
@@ -79,6 +79,15 @@ const deals: EntitySchema = {
|
|
|
79
79
|
{ field: 'weighted', type: 'number', label: 'Weighted ($)', readonly: true, formula: 'value * probability / 100' },
|
|
80
80
|
{ field: 'owner', type: 'enum', label: 'Owner', options: OWNERS },
|
|
81
81
|
{ field: 'closeDate', type: 'date', label: 'Close date' },
|
|
82
|
+
// Only asked for once a deal is actually lost, and then it is mandatory - the
|
|
83
|
+
// form never shows a question it does not need an answer to.
|
|
84
|
+
{ field: 'lostReason', type: 'enum', label: 'Lost to', hidden: { grid: true }, options: [
|
|
85
|
+
{ value: 'price', label: 'Price' },
|
|
86
|
+
{ value: 'competitor', label: 'Competitor' },
|
|
87
|
+
{ value: 'timing', label: 'Timing' },
|
|
88
|
+
{ value: 'no-budget', label: 'No budget' },
|
|
89
|
+
{ value: 'other', label: 'Other' },
|
|
90
|
+
], when: { visible: whenIs('stage', 'lost'), required: whenIs('stage', 'lost') } },
|
|
82
91
|
],
|
|
83
92
|
}
|
|
84
93
|
|
|
@@ -143,7 +152,7 @@ const seed = {
|
|
|
143
152
|
{ id: 'dl1', title: 'Globex platform rollout', companyId: 'co1', stage: 'proposal', value: 48000, probability: 60, owner: 'Sam Rivera', closeDate: '2026-08-15' },
|
|
144
153
|
{ id: 'dl2', title: 'Initech data pipeline', companyId: 'co2', stage: 'won', value: 26000, probability: 100, owner: 'Jamie Chen', closeDate: '2026-06-30' },
|
|
145
154
|
{ id: 'dl3', title: 'Umbrella compliance suite', companyId: 'co3', stage: 'qualified', value: 91000, probability: 40, owner: 'Sam Rivera', closeDate: '2026-09-20' },
|
|
146
|
-
{ id: 'dl4', title: 'Hooli migration', companyId: 'co4', stage: 'lost', value: 15000, probability: 0, owner: 'Priya Patel', closeDate: '2026-05-10' },
|
|
155
|
+
{ id: 'dl4', title: 'Hooli migration', companyId: 'co4', stage: 'lost', value: 15000, probability: 0, owner: 'Priya Patel', closeDate: '2026-05-10', lostReason: 'competitor' },
|
|
147
156
|
{ id: 'dl5', title: 'Soylent storefront', companyId: 'co5', stage: 'lead', value: 8000, probability: 20, owner: 'Jamie Chen', closeDate: '2026-10-01' },
|
|
148
157
|
{ id: 'dl6', title: 'Stark analytics', companyId: 'co6', stage: 'proposal', value: 132000, probability: 65, owner: 'Priya Patel', closeDate: '2026-08-28' },
|
|
149
158
|
{ id: 'dl7', title: 'Globex add-on seats', companyId: 'co1', stage: 'won', value: 12000, probability: 100, owner: 'Sam Rivera', closeDate: '2026-07-05' },
|