@svgrid/enterprise 2.3.2 → 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.
Files changed (165) hide show
  1. package/dist/cdn/svgrid-enterprise.svelte-external.js +5917 -5545
  2. package/dist/designer/assets/index-oYok52zd.css +1 -0
  3. package/dist/designer/assets/{index-DVrv9dH6.js → index-qL7ir9C7.js} +89 -89
  4. package/dist/designer/assets/src-96d31O63.js +2873 -0
  5. package/dist/designer/assets/src-D-O2F805.css +1 -0
  6. package/dist/designer/index.html +6 -6
  7. package/dist/node/studio.js +681 -84
  8. package/package.json +3 -3
  9. package/src/SvGridEditPanel.dom.test.ts +174 -0
  10. package/src/SvGridEditPanel.svelte +209 -46
  11. package/src/edit-panel.test.ts +145 -36
  12. package/src/edit-panel.ts +167 -16
  13. package/src/expressions/evaluate.ts +1 -1
  14. package/src/expressions/parse.ts +3 -3
  15. package/src/index.ts +8 -0
  16. package/src/license-core.ts +77 -5
  17. package/src/license-expiry.test.ts +91 -0
  18. package/src/license.ts +31 -2
  19. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/_svelte_metadata.json +1 -0
  20. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/_metadata.json +178 -0
  21. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-ZrPsKxob.js +3875 -0
  22. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-ZrPsKxob.js.map +1 -0
  23. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-ACqvWGE2.js +21 -0
  24. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-ACqvWGE2.js.map +1 -0
  25. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-D3w5jt92.js +1938 -0
  26. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-D3w5jt92.js.map +1 -0
  27. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-CC2V3H0y.js +205 -0
  28. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-CC2V3H0y.js.map +1 -0
  29. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-BXP37tAa.js +18 -0
  30. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-BXP37tAa.js.map +1 -0
  31. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-DwubnU5b.js +264 -0
  32. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-DwubnU5b.js.map +1 -0
  33. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-hD7f6PUz.js +697 -0
  34. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-hD7f6PUz.js.map +1 -0
  35. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/package.json +3 -0
  36. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js +134 -0
  37. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js.map +1 -0
  38. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js +55 -0
  39. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js.map +1 -0
  40. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_attachments.js +2 -0
  41. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js +46843 -0
  42. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js.map +1 -0
  43. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js +237 -0
  44. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js.map +1 -0
  45. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_events.js +2 -0
  46. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js +4 -0
  47. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js.map +1 -0
  48. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_client.js +7 -0
  49. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js +4 -0
  50. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js.map +1 -0
  51. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js +5 -0
  52. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js.map +1 -0
  53. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js +5 -0
  54. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js.map +1 -0
  55. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js +5 -0
  56. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js.map +1 -0
  57. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_server.js +6 -0
  58. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js +83 -0
  59. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js.map +1 -0
  60. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js +559 -0
  61. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js.map +1 -0
  62. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js +24 -0
  63. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js.map +1 -0
  64. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js +122 -0
  65. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js.map +1 -0
  66. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_server.js +2 -0
  67. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js +89 -0
  68. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js.map +1 -0
  69. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js +241 -0
  70. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js.map +1 -0
  71. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DBx1SCN6.js +4938 -0
  72. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DBx1SCN6.js.map +1 -0
  73. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-gjfpSTFS.js +495 -0
  74. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-gjfpSTFS.js.map +1 -0
  75. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-DKoOKg8S.js +190 -0
  76. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-DKoOKg8S.js.map +1 -0
  77. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-C0MiR7eR.js +8 -0
  78. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-C0MiR7eR.js.map +1 -0
  79. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-B6Y7P0Q-.js +138 -0
  80. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-B6Y7P0Q-.js.map +1 -0
  81. package/src/schema.ts +63 -0
  82. package/src/studio/emit-project.test.ts +191 -0
  83. package/src/studio/emit-project.ts +237 -27
  84. package/src/studio/emit-schema.ts +4 -1
  85. package/src/studio/index.ts +2 -0
  86. package/src/studio/init-flow.test.ts +150 -0
  87. package/src/studio/init-flow.ts +169 -22
  88. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/_svelte_metadata.json +1 -0
  89. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/_metadata.json +178 -0
  90. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-BOv1rBKp.js +3875 -0
  91. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-BOv1rBKp.js.map +1 -0
  92. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-B9vgIdCd.js +21 -0
  93. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-B9vgIdCd.js.map +1 -0
  94. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-T1qbW_qD.js +1938 -0
  95. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-T1qbW_qD.js.map +1 -0
  96. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-Bo11SfVK.js +205 -0
  97. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-Bo11SfVK.js.map +1 -0
  98. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-X7D4vfrZ.js +18 -0
  99. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-X7D4vfrZ.js.map +1 -0
  100. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-oyUje5i1.js +264 -0
  101. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-oyUje5i1.js.map +1 -0
  102. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-DeSQgSFm.js +697 -0
  103. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-DeSQgSFm.js.map +1 -0
  104. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/package.json +3 -0
  105. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js +134 -0
  106. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js.map +1 -0
  107. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js +55 -0
  108. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js.map +1 -0
  109. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_attachments.js +2 -0
  110. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js +46843 -0
  111. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js.map +1 -0
  112. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js +237 -0
  113. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js.map +1 -0
  114. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_events.js +2 -0
  115. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js +4 -0
  116. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js.map +1 -0
  117. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_client.js +7 -0
  118. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js +4 -0
  119. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js.map +1 -0
  120. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js +5 -0
  121. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js.map +1 -0
  122. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js +5 -0
  123. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js.map +1 -0
  124. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js +5 -0
  125. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js.map +1 -0
  126. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_server.js +6 -0
  127. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js +83 -0
  128. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js.map +1 -0
  129. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js +559 -0
  130. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js.map +1 -0
  131. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js +24 -0
  132. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js.map +1 -0
  133. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js +122 -0
  134. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js.map +1 -0
  135. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_server.js +2 -0
  136. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js +89 -0
  137. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js.map +1 -0
  138. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js +241 -0
  139. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js.map +1 -0
  140. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-BbWyXNk1.js +4938 -0
  141. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-BbWyXNk1.js.map +1 -0
  142. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DI_fC7vt.js +495 -0
  143. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DI_fC7vt.js.map +1 -0
  144. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-Dyr3lQv9.js +190 -0
  145. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-Dyr3lQv9.js.map +1 -0
  146. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-_9FHH-LF.js +8 -0
  147. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-_9FHH-LF.js.map +1 -0
  148. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-CUbSPnyP.js +138 -0
  149. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-CUbSPnyP.js.map +1 -0
  150. package/src/studio/project.test.ts +30 -0
  151. package/src/studio/project.ts +72 -8
  152. package/src/studio/samples/crm.ts +11 -2
  153. package/src/studio/samples/insurance.ts +10 -4
  154. package/src/studio/samples/samples.test.ts +36 -0
  155. package/src/studio/samples/shared.ts +14 -0
  156. package/src/studio/samples/support.ts +12 -5
  157. package/src/studio/screen-suites.test.ts +43 -0
  158. package/src/studio/screen-suites.ts +5 -2
  159. package/src/studio/user-error.ts +31 -0
  160. package/src/upgrade-prompt.ts +23 -10
  161. package/src/version.test.ts +17 -0
  162. package/src/version.ts +13 -0
  163. package/dist/designer/assets/index-DjPp1mn7.css +0 -1
  164. package/dist/designer/assets/src-BRKu53tV.js +0 -2842
  165. package/dist/designer/assets/src-DseB1VRN.css +0 -1
@@ -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
@@ -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
- formSections?: Array<{ title?: string; fields: string[] }>
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 kind = project.dataSources?.[screen.entity]?.kind ?? project.dataSource
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. (rest/supabase/pglite stay SPA for now.)
917
- if (kind !== 'memory' && kind !== 'sql') return null
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
- if (blocks.length === 1 && blocks[0]!.config.kind === 'grid') {
920
- const g = blocks[0]!.config as GridConfig
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' },