nebula-cms 0.1.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 (241) hide show
  1. package/.claude/settings.local.json +42 -0
  2. package/.github/workflows/ci.yml +31 -0
  3. package/.mcp.json +12 -0
  4. package/.prettierignore +5 -0
  5. package/.prettierrc.cjs +22 -0
  6. package/AGENTS.md +183 -0
  7. package/LICENSE +201 -0
  8. package/README.md +128 -0
  9. package/package.json +74 -0
  10. package/playground/.claude/settings.local.json +5 -0
  11. package/playground/astro.config.mjs +7 -0
  12. package/playground/node_modules/.bin/astro +21 -0
  13. package/playground/node_modules/.bin/rollup +21 -0
  14. package/playground/node_modules/.bin/tsc +21 -0
  15. package/playground/node_modules/.bin/tsserver +21 -0
  16. package/playground/node_modules/.bin/vite +21 -0
  17. package/playground/node_modules/.vite/_svelte_metadata.json +1 -0
  18. package/playground/node_modules/.vite/deps/@astrojs_svelte_client__js.js +80 -0
  19. package/playground/node_modules/.vite/deps/@astrojs_svelte_client__js.js.map +7 -0
  20. package/playground/node_modules/.vite/deps/_metadata.json +184 -0
  21. package/playground/node_modules/.vite/deps/astro___aria-query.js +6776 -0
  22. package/playground/node_modules/.vite/deps/astro___aria-query.js.map +7 -0
  23. package/playground/node_modules/.vite/deps/astro___axobject-query.js +3754 -0
  24. package/playground/node_modules/.vite/deps/astro___axobject-query.js.map +7 -0
  25. package/playground/node_modules/.vite/deps/astro___html-escaper.js +34 -0
  26. package/playground/node_modules/.vite/deps/astro___html-escaper.js.map +7 -0
  27. package/playground/node_modules/.vite/deps/chunk-AJXJMYAF.js +0 -0
  28. package/playground/node_modules/.vite/deps/chunk-AJXJMYAF.js.map +7 -0
  29. package/playground/node_modules/.vite/deps/chunk-ALJIOON6.js +1005 -0
  30. package/playground/node_modules/.vite/deps/chunk-ALJIOON6.js.map +7 -0
  31. package/playground/node_modules/.vite/deps/chunk-BUSYA2B4.js +8 -0
  32. package/playground/node_modules/.vite/deps/chunk-BUSYA2B4.js.map +7 -0
  33. package/playground/node_modules/.vite/deps/chunk-CNYJBM5F.js +21 -0
  34. package/playground/node_modules/.vite/deps/chunk-CNYJBM5F.js.map +7 -0
  35. package/playground/node_modules/.vite/deps/chunk-DBPNBGEI.js +223 -0
  36. package/playground/node_modules/.vite/deps/chunk-DBPNBGEI.js.map +7 -0
  37. package/playground/node_modules/.vite/deps/chunk-G3C2FXJT.js +204 -0
  38. package/playground/node_modules/.vite/deps/chunk-G3C2FXJT.js.map +7 -0
  39. package/playground/node_modules/.vite/deps/chunk-GKDKFWC5.js +27 -0
  40. package/playground/node_modules/.vite/deps/chunk-GKDKFWC5.js.map +7 -0
  41. package/playground/node_modules/.vite/deps/chunk-HNCLEOC5.js +4376 -0
  42. package/playground/node_modules/.vite/deps/chunk-HNCLEOC5.js.map +7 -0
  43. package/playground/node_modules/.vite/deps/chunk-JICYXBFU.js +688 -0
  44. package/playground/node_modules/.vite/deps/chunk-JICYXBFU.js.map +7 -0
  45. package/playground/node_modules/.vite/deps/chunk-KCUTL6DD.js +5099 -0
  46. package/playground/node_modules/.vite/deps/chunk-KCUTL6DD.js.map +7 -0
  47. package/playground/node_modules/.vite/deps/chunk-ZP4UNCSN.js +23 -0
  48. package/playground/node_modules/.vite/deps/chunk-ZP4UNCSN.js.map +7 -0
  49. package/playground/node_modules/.vite/deps/chunk-ZREFNRZZ.js +148 -0
  50. package/playground/node_modules/.vite/deps/chunk-ZREFNRZZ.js.map +7 -0
  51. package/playground/node_modules/.vite/deps/package.json +3 -0
  52. package/playground/node_modules/.vite/deps/smol-toml.js +843 -0
  53. package/playground/node_modules/.vite/deps/smol-toml.js.map +7 -0
  54. package/playground/node_modules/.vite/deps/svelte.js +55 -0
  55. package/playground/node_modules/.vite/deps/svelte.js.map +7 -0
  56. package/playground/node_modules/.vite/deps/svelte___clsx.js +9 -0
  57. package/playground/node_modules/.vite/deps/svelte___clsx.js.map +7 -0
  58. package/playground/node_modules/.vite/deps/svelte_animate.js +57 -0
  59. package/playground/node_modules/.vite/deps/svelte_animate.js.map +7 -0
  60. package/playground/node_modules/.vite/deps/svelte_attachments.js +15 -0
  61. package/playground/node_modules/.vite/deps/svelte_attachments.js.map +7 -0
  62. package/playground/node_modules/.vite/deps/svelte_easing.js +67 -0
  63. package/playground/node_modules/.vite/deps/svelte_easing.js.map +7 -0
  64. package/playground/node_modules/.vite/deps/svelte_events.js +11 -0
  65. package/playground/node_modules/.vite/deps/svelte_events.js.map +7 -0
  66. package/playground/node_modules/.vite/deps/svelte_internal.js +5 -0
  67. package/playground/node_modules/.vite/deps/svelte_internal.js.map +7 -0
  68. package/playground/node_modules/.vite/deps/svelte_internal_client.js +402 -0
  69. package/playground/node_modules/.vite/deps/svelte_internal_client.js.map +7 -0
  70. package/playground/node_modules/.vite/deps/svelte_internal_disclose-version.js +10 -0
  71. package/playground/node_modules/.vite/deps/svelte_internal_disclose-version.js.map +7 -0
  72. package/playground/node_modules/.vite/deps/svelte_internal_flags_async.js +8 -0
  73. package/playground/node_modules/.vite/deps/svelte_internal_flags_async.js.map +7 -0
  74. package/playground/node_modules/.vite/deps/svelte_internal_flags_legacy.js +8 -0
  75. package/playground/node_modules/.vite/deps/svelte_internal_flags_legacy.js.map +7 -0
  76. package/playground/node_modules/.vite/deps/svelte_internal_flags_tracing.js +8 -0
  77. package/playground/node_modules/.vite/deps/svelte_internal_flags_tracing.js.map +7 -0
  78. package/playground/node_modules/.vite/deps/svelte_legacy.js +35 -0
  79. package/playground/node_modules/.vite/deps/svelte_legacy.js.map +7 -0
  80. package/playground/node_modules/.vite/deps/svelte_motion.js +545 -0
  81. package/playground/node_modules/.vite/deps/svelte_motion.js.map +7 -0
  82. package/playground/node_modules/.vite/deps/svelte_reactivity.js +29 -0
  83. package/playground/node_modules/.vite/deps/svelte_reactivity.js.map +7 -0
  84. package/playground/node_modules/.vite/deps/svelte_reactivity_window.js +127 -0
  85. package/playground/node_modules/.vite/deps/svelte_reactivity_window.js.map +7 -0
  86. package/playground/node_modules/.vite/deps/svelte_store.js +103 -0
  87. package/playground/node_modules/.vite/deps/svelte_store.js.map +7 -0
  88. package/playground/node_modules/.vite/deps/svelte_transition.js +208 -0
  89. package/playground/node_modules/.vite/deps/svelte_transition.js.map +7 -0
  90. package/playground/package.json +16 -0
  91. package/playground/pnpm-lock.yaml +3167 -0
  92. package/playground/src/content/authors/jane-doe.json +8 -0
  93. package/playground/src/content/config/build.toml +2 -0
  94. package/playground/src/content/courses/web-fundamentals.json +29 -0
  95. package/playground/src/content/docs/advanced.mdx +6 -0
  96. package/playground/src/content/docs/intro.md +6 -0
  97. package/playground/src/content/guides/getting-started.mdx +6 -0
  98. package/playground/src/content/posts/hello-world.md +7 -0
  99. package/playground/src/content/products/t-shirt.json +16 -0
  100. package/playground/src/content/recipes/pancakes.mdoc +8 -0
  101. package/playground/src/content/settings/site.yml +2 -0
  102. package/playground/src/content.config.ts +198 -0
  103. package/playground/src/env.d.ts +1 -0
  104. package/playground/src/pages/index.astro +11 -0
  105. package/playground/src/pages/nebula.astro +14 -0
  106. package/pnpm-workspace.yaml +2 -0
  107. package/scripts/subset-icons.mjs +178 -0
  108. package/src/astro/index.ts +295 -0
  109. package/src/client/Admin.svelte +283 -0
  110. package/src/client/components/BackendPicker.svelte +291 -0
  111. package/src/client/components/DraftChip.svelte +46 -0
  112. package/src/client/components/MetadataForm.svelte +56 -0
  113. package/src/client/components/ThemeToggle.svelte +18 -0
  114. package/src/client/components/dialogs/DeleteDraftDialog.svelte +51 -0
  115. package/src/client/components/dialogs/FilenameDialog.svelte +129 -0
  116. package/src/client/components/editor/EditorPane.svelte +227 -0
  117. package/src/client/components/editor/EditorTabs.svelte +81 -0
  118. package/src/client/components/editor/EditorToolbar.svelte +131 -0
  119. package/src/client/components/editor/FormatSelector.svelte +66 -0
  120. package/src/client/components/editor/Toolbar.svelte +17 -0
  121. package/src/client/components/fields/ArrayField.svelte +339 -0
  122. package/src/client/components/fields/ArrayItem.svelte +325 -0
  123. package/src/client/components/fields/BooleanField.svelte +114 -0
  124. package/src/client/components/fields/DateField.svelte +82 -0
  125. package/src/client/components/fields/EnumField.svelte +74 -0
  126. package/src/client/components/fields/FieldWrapper.svelte +96 -0
  127. package/src/client/components/fields/NumberField.svelte +99 -0
  128. package/src/client/components/fields/ObjectField.svelte +121 -0
  129. package/src/client/components/fields/SchemaField.svelte +107 -0
  130. package/src/client/components/fields/StringField.svelte +104 -0
  131. package/src/client/components/sidebar/AdminSidebar.svelte +339 -0
  132. package/src/client/components/sidebar/AdminSidebarSort.svelte +123 -0
  133. package/src/client/css/a11y.css +14 -0
  134. package/src/client/css/btn.css +113 -0
  135. package/src/client/css/dialog.css +29 -0
  136. package/src/client/css/field-input.css +39 -0
  137. package/src/client/css/reset.css +59 -0
  138. package/src/client/css/theme.css +77 -0
  139. package/src/client/index.ts +1 -0
  140. package/src/client/js/drafts/merge.svelte.ts +121 -0
  141. package/src/client/js/drafts/ops.svelte.ts +227 -0
  142. package/src/client/js/drafts/storage.ts +108 -0
  143. package/src/client/js/drafts/workers/diff.ts +40 -0
  144. package/src/client/js/editor/editor.svelte.ts +343 -0
  145. package/src/client/js/editor/languages.ts +98 -0
  146. package/src/client/js/editor/link-wrap.ts +45 -0
  147. package/src/client/js/editor/markdown-shortcuts.ts +261 -0
  148. package/src/client/js/handlers/admin.ts +246 -0
  149. package/src/client/js/state/dialogs.svelte.ts +35 -0
  150. package/src/client/js/state/router.svelte.ts +156 -0
  151. package/src/client/js/state/schema.svelte.ts +140 -0
  152. package/src/client/js/state/state.svelte.ts +334 -0
  153. package/src/client/js/state/theme.svelte.ts +173 -0
  154. package/src/client/js/storage/adapter.ts +102 -0
  155. package/src/client/js/storage/client.ts +150 -0
  156. package/src/client/js/storage/db.ts +36 -0
  157. package/src/client/js/storage/fsa.ts +110 -0
  158. package/src/client/js/storage/github.ts +297 -0
  159. package/src/client/js/storage/storage.ts +83 -0
  160. package/src/client/js/storage/workers/frontmatter.ts +320 -0
  161. package/src/client/js/storage/workers/storage.ts +177 -0
  162. package/src/client/js/storage/workers/toml-parser.ts +106 -0
  163. package/src/client/js/storage/workers/yaml-parser.ts +132 -0
  164. package/src/client/js/utils/file-types.ts +192 -0
  165. package/src/client/js/utils/format.ts +16 -0
  166. package/src/client/js/utils/frontmatter.ts +38 -0
  167. package/src/client/js/utils/schema-utils.ts +295 -0
  168. package/src/client/js/utils/slug.ts +18 -0
  169. package/src/client/js/utils/sort.ts +84 -0
  170. package/src/client/js/utils/stable-stringify.ts +27 -0
  171. package/src/client/js/utils/url-utils.ts +38 -0
  172. package/src/types.ts +25 -0
  173. package/src/virtual.d.ts +22 -0
  174. package/svelte.config.js +4 -0
  175. package/tests/astro/build.test.ts +63 -0
  176. package/tests/astro/index.test.ts +689 -0
  177. package/tests/client/components/Admin.test.ts +446 -0
  178. package/tests/client/components/BackendPicker.test.ts +239 -0
  179. package/tests/client/components/DraftChip.test.ts +53 -0
  180. package/tests/client/components/MetadataForm.test.ts +164 -0
  181. package/tests/client/components/dialogs/DeleteDraftDialog.test.ts +91 -0
  182. package/tests/client/components/dialogs/FilenameDialog.test.ts +209 -0
  183. package/tests/client/components/dialogs/dialog-stubs.ts +19 -0
  184. package/tests/client/components/editor/EditorPane.test.ts +100 -0
  185. package/tests/client/components/editor/EditorTabs.test.ts +253 -0
  186. package/tests/client/components/editor/EditorToolbar.test.ts +252 -0
  187. package/tests/client/components/editor/fixtures.ts +31 -0
  188. package/tests/client/components/fields/ArrayField.test.ts +197 -0
  189. package/tests/client/components/fields/BooleanField.test.ts +206 -0
  190. package/tests/client/components/fields/DateField.test.ts +210 -0
  191. package/tests/client/components/fields/EnumField.test.ts +246 -0
  192. package/tests/client/components/fields/NumberField.test.ts +240 -0
  193. package/tests/client/components/fields/ObjectField.test.ts +157 -0
  194. package/tests/client/components/fields/SchemaField.test.ts +190 -0
  195. package/tests/client/components/fields/StringField.test.ts +223 -0
  196. package/tests/client/components/sidebar/AdminSidebar.test.ts +285 -0
  197. package/tests/client/components/sidebar/AdminSidebarSort.test.ts +135 -0
  198. package/tests/client/components/sidebar/sort-mock.ts +23 -0
  199. package/tests/client/js/drafts/fixtures.ts +22 -0
  200. package/tests/client/js/drafts/merge.test.ts +282 -0
  201. package/tests/client/js/drafts/ops.test.ts +658 -0
  202. package/tests/client/js/drafts/storage.test.ts +200 -0
  203. package/tests/client/js/drafts/workers/diff.test.ts +165 -0
  204. package/tests/client/js/editor/editor.test.ts +616 -0
  205. package/tests/client/js/editor/link-wrap.test.ts +225 -0
  206. package/tests/client/js/editor/markdown-shortcuts.test.ts +370 -0
  207. package/tests/client/js/handlers/admin.test.ts +467 -0
  208. package/tests/client/js/state/router.test.ts +619 -0
  209. package/tests/client/js/state/schema.test.ts +266 -0
  210. package/tests/client/js/state/state.test.ts +328 -0
  211. package/tests/client/js/storage/adapter.test.ts +115 -0
  212. package/tests/client/js/storage/client.test.ts +250 -0
  213. package/tests/client/js/storage/db.test.ts +59 -0
  214. package/tests/client/js/storage/fsa.test.ts +284 -0
  215. package/tests/client/js/storage/github.test.ts +349 -0
  216. package/tests/client/js/storage/mock-port.ts +95 -0
  217. package/tests/client/js/storage/storage.test.ts +77 -0
  218. package/tests/client/js/storage/workers/frontmatter.test.ts +479 -0
  219. package/tests/client/js/storage/workers/storage.test.ts +299 -0
  220. package/tests/client/js/storage/workers/toml-parser.test.ts +169 -0
  221. package/tests/client/js/storage/workers/yaml-parser.test.ts +168 -0
  222. package/tests/client/js/utils/file-types.test.ts +268 -0
  223. package/tests/client/js/utils/frontmatter.test.ts +87 -0
  224. package/tests/client/js/utils/schema-utils.test.ts +318 -0
  225. package/tests/client/js/utils/slug.test.ts +58 -0
  226. package/tests/client/js/utils/sort.test.ts +276 -0
  227. package/tests/client/js/utils/stable-stringify.test.ts +68 -0
  228. package/tests/client/js/utils/url-utils.test.ts +70 -0
  229. package/tests/e2e/backend-connection.test.ts +301 -0
  230. package/tests/e2e/draft-lifecycle.test.ts +388 -0
  231. package/tests/e2e/editing.test.ts +355 -0
  232. package/tests/e2e/github-adapter.test.ts +330 -0
  233. package/tests/e2e/helpers/mock-adapter.ts +166 -0
  234. package/tests/e2e/helpers/test-app.ts +155 -0
  235. package/tests/e2e/navigation.test.ts +358 -0
  236. package/tests/e2e/publishing.test.ts +345 -0
  237. package/tests/e2e/unsaved-changes.test.ts +317 -0
  238. package/tests/setup.ts +2 -0
  239. package/tests/stubs/codemirror.ts +197 -0
  240. package/tsconfig.json +19 -0
  241. package/vitest.config.ts +178 -0
@@ -0,0 +1,1005 @@
1
+ import {
2
+ all_registered_events,
3
+ handle_event_propagation,
4
+ on,
5
+ root_event_handles
6
+ } from "./chunk-G3C2FXJT.js";
7
+ import {
8
+ COMMENT_NODE,
9
+ DIRTY,
10
+ DOCUMENT_FRAGMENT_NODE,
11
+ FILENAME,
12
+ HYDRATION_END,
13
+ HYDRATION_ERROR,
14
+ HYDRATION_START,
15
+ IS_XHTML,
16
+ LEGACY_PROPS,
17
+ MAYBE_DIRTY,
18
+ NAMESPACE_MATHML,
19
+ NAMESPACE_SVG,
20
+ REACTION_RAN,
21
+ STATE_SYMBOL,
22
+ TEMPLATE_FRAGMENT,
23
+ TEMPLATE_USE_IMPORT_NODE,
24
+ TEMPLATE_USE_MATHML,
25
+ TEMPLATE_USE_SVG,
26
+ TEXT_NODE,
27
+ active_effect,
28
+ array_from,
29
+ boundary,
30
+ clear_text_content,
31
+ component_context,
32
+ component_root,
33
+ create_comment,
34
+ create_element,
35
+ create_fragment,
36
+ create_text,
37
+ define_property,
38
+ dev_current_component_function,
39
+ flushSync,
40
+ get2 as get,
41
+ get_first_child,
42
+ get_next_sibling,
43
+ hydrate_next,
44
+ hydrate_node,
45
+ hydrating,
46
+ hydration_failed,
47
+ init_operations,
48
+ is_array,
49
+ is_firefox,
50
+ lifecycle_outside_component,
51
+ merge_text_nodes,
52
+ mutable_source,
53
+ noop,
54
+ pop,
55
+ push,
56
+ set,
57
+ set_attribute,
58
+ set_hydrate_node,
59
+ set_hydrating,
60
+ set_signal_status,
61
+ user_pre_effect
62
+ } from "./chunk-KCUTL6DD.js";
63
+ import {
64
+ hydration_mismatch,
65
+ legacy_recursive_reactive_block,
66
+ lifecycle_double_unmount,
67
+ state_proxy_unmount,
68
+ true_default
69
+ } from "./chunk-DBPNBGEI.js";
70
+ import {
71
+ async_mode_flag
72
+ } from "./chunk-ZP4UNCSN.js";
73
+
74
+ // ../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/reconciler.js
75
+ var policy = (
76
+ // We gotta write it like this because after downleveling the pure comment may end up in the wrong location
77
+ globalThis?.window?.trustedTypes && globalThis.window.trustedTypes.createPolicy("svelte-trusted-html", {
78
+ /** @param {string} html */
79
+ createHTML: (html) => {
80
+ return html;
81
+ }
82
+ })
83
+ );
84
+ function create_trusted_html(html) {
85
+ return (
86
+ /** @type {string} */
87
+ policy?.createHTML(html) ?? html
88
+ );
89
+ }
90
+ function create_fragment_from_html(html) {
91
+ var elem = create_element("template");
92
+ elem.innerHTML = create_trusted_html(html.replaceAll("<!>", "<!---->"));
93
+ return elem.content;
94
+ }
95
+
96
+ // ../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/template.js
97
+ var TEMPLATE_TAG = IS_XHTML ? "template" : "TEMPLATE";
98
+ var SCRIPT_TAG = IS_XHTML ? "script" : "SCRIPT";
99
+ function assign_nodes(start, end) {
100
+ var effect = (
101
+ /** @type {Effect} */
102
+ active_effect
103
+ );
104
+ if (effect.nodes === null) {
105
+ effect.nodes = { start, end, a: null, t: null };
106
+ }
107
+ }
108
+ function from_html(content, flags) {
109
+ var is_fragment = (flags & TEMPLATE_FRAGMENT) !== 0;
110
+ var use_import_node = (flags & TEMPLATE_USE_IMPORT_NODE) !== 0;
111
+ var node;
112
+ var has_start = !content.startsWith("<!>");
113
+ return () => {
114
+ if (hydrating) {
115
+ assign_nodes(hydrate_node, null);
116
+ return hydrate_node;
117
+ }
118
+ if (node === void 0) {
119
+ node = create_fragment_from_html(has_start ? content : "<!>" + content);
120
+ if (!is_fragment) node = /** @type {TemplateNode} */
121
+ get_first_child(node);
122
+ }
123
+ var clone = (
124
+ /** @type {TemplateNode} */
125
+ use_import_node || is_firefox ? document.importNode(node, true) : node.cloneNode(true)
126
+ );
127
+ if (is_fragment) {
128
+ var start = (
129
+ /** @type {TemplateNode} */
130
+ get_first_child(clone)
131
+ );
132
+ var end = (
133
+ /** @type {TemplateNode} */
134
+ clone.lastChild
135
+ );
136
+ assign_nodes(start, end);
137
+ } else {
138
+ assign_nodes(clone, clone);
139
+ }
140
+ return clone;
141
+ };
142
+ }
143
+ function from_namespace(content, flags, ns = "svg") {
144
+ var has_start = !content.startsWith("<!>");
145
+ var is_fragment = (flags & TEMPLATE_FRAGMENT) !== 0;
146
+ var wrapped = `<${ns}>${has_start ? content : "<!>" + content}</${ns}>`;
147
+ var node;
148
+ return () => {
149
+ if (hydrating) {
150
+ assign_nodes(hydrate_node, null);
151
+ return hydrate_node;
152
+ }
153
+ if (!node) {
154
+ var fragment = (
155
+ /** @type {DocumentFragment} */
156
+ create_fragment_from_html(wrapped)
157
+ );
158
+ var root = (
159
+ /** @type {Element} */
160
+ get_first_child(fragment)
161
+ );
162
+ if (is_fragment) {
163
+ node = document.createDocumentFragment();
164
+ while (get_first_child(root)) {
165
+ node.appendChild(
166
+ /** @type {TemplateNode} */
167
+ get_first_child(root)
168
+ );
169
+ }
170
+ } else {
171
+ node = /** @type {Element} */
172
+ get_first_child(root);
173
+ }
174
+ }
175
+ var clone = (
176
+ /** @type {TemplateNode} */
177
+ node.cloneNode(true)
178
+ );
179
+ if (is_fragment) {
180
+ var start = (
181
+ /** @type {TemplateNode} */
182
+ get_first_child(clone)
183
+ );
184
+ var end = (
185
+ /** @type {TemplateNode} */
186
+ clone.lastChild
187
+ );
188
+ assign_nodes(start, end);
189
+ } else {
190
+ assign_nodes(clone, clone);
191
+ }
192
+ return clone;
193
+ };
194
+ }
195
+ function from_svg(content, flags) {
196
+ return from_namespace(content, flags, "svg");
197
+ }
198
+ function from_mathml(content, flags) {
199
+ return from_namespace(content, flags, "math");
200
+ }
201
+ function fragment_from_tree(structure, ns) {
202
+ var fragment = create_fragment();
203
+ for (var item of structure) {
204
+ if (typeof item === "string") {
205
+ fragment.append(create_text(item));
206
+ continue;
207
+ }
208
+ if (item === void 0 || item[0][0] === "/") {
209
+ fragment.append(create_comment(item ? item[0].slice(3) : ""));
210
+ continue;
211
+ }
212
+ const [name, attributes, ...children] = item;
213
+ const namespace = name === "svg" ? NAMESPACE_SVG : name === "math" ? NAMESPACE_MATHML : ns;
214
+ var element = create_element(name, namespace, attributes?.is);
215
+ for (var key in attributes) {
216
+ set_attribute(element, key, attributes[key]);
217
+ }
218
+ if (children.length > 0) {
219
+ var target = element.nodeName === TEMPLATE_TAG ? (
220
+ /** @type {HTMLTemplateElement} */
221
+ element.content
222
+ ) : element;
223
+ target.append(
224
+ fragment_from_tree(children, element.nodeName === "foreignObject" ? void 0 : namespace)
225
+ );
226
+ }
227
+ fragment.append(element);
228
+ }
229
+ return fragment;
230
+ }
231
+ function from_tree(structure, flags) {
232
+ var is_fragment = (flags & TEMPLATE_FRAGMENT) !== 0;
233
+ var use_import_node = (flags & TEMPLATE_USE_IMPORT_NODE) !== 0;
234
+ var node;
235
+ return () => {
236
+ if (hydrating) {
237
+ assign_nodes(hydrate_node, null);
238
+ return hydrate_node;
239
+ }
240
+ if (node === void 0) {
241
+ const ns = (flags & TEMPLATE_USE_SVG) !== 0 ? NAMESPACE_SVG : (flags & TEMPLATE_USE_MATHML) !== 0 ? NAMESPACE_MATHML : void 0;
242
+ node = fragment_from_tree(structure, ns);
243
+ if (!is_fragment) node = /** @type {TemplateNode} */
244
+ get_first_child(node);
245
+ }
246
+ var clone = (
247
+ /** @type {TemplateNode} */
248
+ use_import_node || is_firefox ? document.importNode(node, true) : node.cloneNode(true)
249
+ );
250
+ if (is_fragment) {
251
+ var start = (
252
+ /** @type {TemplateNode} */
253
+ get_first_child(clone)
254
+ );
255
+ var end = (
256
+ /** @type {TemplateNode} */
257
+ clone.lastChild
258
+ );
259
+ assign_nodes(start, end);
260
+ } else {
261
+ assign_nodes(clone, clone);
262
+ }
263
+ return clone;
264
+ };
265
+ }
266
+ function with_script(fn) {
267
+ return () => run_scripts(fn());
268
+ }
269
+ function run_scripts(node) {
270
+ if (hydrating) return node;
271
+ const is_fragment = node.nodeType === DOCUMENT_FRAGMENT_NODE;
272
+ const scripts = (
273
+ /** @type {HTMLElement} */
274
+ node.nodeName === SCRIPT_TAG ? [
275
+ /** @type {HTMLScriptElement} */
276
+ node
277
+ ] : node.querySelectorAll("script")
278
+ );
279
+ const effect = (
280
+ /** @type {Effect & { nodes: EffectNodes }} */
281
+ active_effect
282
+ );
283
+ for (const script of scripts) {
284
+ const clone = create_element("script");
285
+ for (var attribute of script.attributes) {
286
+ clone.setAttribute(attribute.name, attribute.value);
287
+ }
288
+ clone.textContent = script.textContent;
289
+ if (is_fragment ? node.firstChild === script : node === script) {
290
+ effect.nodes.start = clone;
291
+ }
292
+ if (is_fragment ? node.lastChild === script : node === script) {
293
+ effect.nodes.end = clone;
294
+ }
295
+ script.replaceWith(clone);
296
+ }
297
+ return node;
298
+ }
299
+ function text(value = "") {
300
+ if (!hydrating) {
301
+ var t = create_text(value + "");
302
+ assign_nodes(t, t);
303
+ return t;
304
+ }
305
+ var node = hydrate_node;
306
+ if (node.nodeType !== TEXT_NODE) {
307
+ node.before(node = create_text());
308
+ set_hydrate_node(node);
309
+ } else {
310
+ merge_text_nodes(
311
+ /** @type {Text} */
312
+ node
313
+ );
314
+ }
315
+ assign_nodes(node, node);
316
+ return node;
317
+ }
318
+ function comment() {
319
+ if (hydrating) {
320
+ assign_nodes(hydrate_node, null);
321
+ return hydrate_node;
322
+ }
323
+ var frag = document.createDocumentFragment();
324
+ var start = document.createComment("");
325
+ var anchor = create_text();
326
+ frag.append(start, anchor);
327
+ assign_nodes(start, anchor);
328
+ return frag;
329
+ }
330
+ function append(anchor, dom) {
331
+ if (hydrating) {
332
+ var effect = (
333
+ /** @type {Effect & { nodes: EffectNodes }} */
334
+ active_effect
335
+ );
336
+ if ((effect.f & REACTION_RAN) === 0 || effect.nodes.end === null) {
337
+ effect.nodes.end = hydrate_node;
338
+ }
339
+ hydrate_next();
340
+ return;
341
+ }
342
+ if (anchor === null) {
343
+ return;
344
+ }
345
+ anchor.before(
346
+ /** @type {Node} */
347
+ dom
348
+ );
349
+ }
350
+ function props_id() {
351
+ if (hydrating && hydrate_node && hydrate_node.nodeType === COMMENT_NODE && hydrate_node.textContent?.startsWith(`$`)) {
352
+ const id = hydrate_node.textContent.substring(1);
353
+ hydrate_next();
354
+ return id;
355
+ }
356
+ (window.__svelte ??= {}).uid ??= 1;
357
+ return `c${window.__svelte.uid++}`;
358
+ }
359
+
360
+ // ../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/utils.js
361
+ var regex_return_characters = /\r/g;
362
+ function hash(str) {
363
+ str = str.replace(regex_return_characters, "");
364
+ let hash2 = 5381;
365
+ let i = str.length;
366
+ while (i--) hash2 = (hash2 << 5) - hash2 ^ str.charCodeAt(i);
367
+ return (hash2 >>> 0).toString(36);
368
+ }
369
+ var VOID_ELEMENT_NAMES = [
370
+ "area",
371
+ "base",
372
+ "br",
373
+ "col",
374
+ "command",
375
+ "embed",
376
+ "hr",
377
+ "img",
378
+ "input",
379
+ "keygen",
380
+ "link",
381
+ "meta",
382
+ "param",
383
+ "source",
384
+ "track",
385
+ "wbr"
386
+ ];
387
+ function is_void(name) {
388
+ return VOID_ELEMENT_NAMES.includes(name) || name.toLowerCase() === "!doctype";
389
+ }
390
+ function is_capture_event(name) {
391
+ return name.endsWith("capture") && name !== "gotpointercapture" && name !== "lostpointercapture";
392
+ }
393
+ var DELEGATED_EVENTS = [
394
+ "beforeinput",
395
+ "click",
396
+ "change",
397
+ "dblclick",
398
+ "contextmenu",
399
+ "focusin",
400
+ "focusout",
401
+ "input",
402
+ "keydown",
403
+ "keyup",
404
+ "mousedown",
405
+ "mousemove",
406
+ "mouseout",
407
+ "mouseover",
408
+ "mouseup",
409
+ "pointerdown",
410
+ "pointermove",
411
+ "pointerout",
412
+ "pointerover",
413
+ "pointerup",
414
+ "touchend",
415
+ "touchmove",
416
+ "touchstart"
417
+ ];
418
+ function can_delegate_event(event_name) {
419
+ return DELEGATED_EVENTS.includes(event_name);
420
+ }
421
+ var DOM_BOOLEAN_ATTRIBUTES = [
422
+ "allowfullscreen",
423
+ "async",
424
+ "autofocus",
425
+ "autoplay",
426
+ "checked",
427
+ "controls",
428
+ "default",
429
+ "disabled",
430
+ "formnovalidate",
431
+ "indeterminate",
432
+ "inert",
433
+ "ismap",
434
+ "loop",
435
+ "multiple",
436
+ "muted",
437
+ "nomodule",
438
+ "novalidate",
439
+ "open",
440
+ "playsinline",
441
+ "readonly",
442
+ "required",
443
+ "reversed",
444
+ "seamless",
445
+ "selected",
446
+ "webkitdirectory",
447
+ "defer",
448
+ "disablepictureinpicture",
449
+ "disableremoteplayback"
450
+ ];
451
+ var ATTRIBUTE_ALIASES = {
452
+ // no `class: 'className'` because we handle that separately
453
+ formnovalidate: "formNoValidate",
454
+ ismap: "isMap",
455
+ nomodule: "noModule",
456
+ playsinline: "playsInline",
457
+ readonly: "readOnly",
458
+ defaultvalue: "defaultValue",
459
+ defaultchecked: "defaultChecked",
460
+ srcobject: "srcObject",
461
+ novalidate: "noValidate",
462
+ allowfullscreen: "allowFullscreen",
463
+ disablepictureinpicture: "disablePictureInPicture",
464
+ disableremoteplayback: "disableRemotePlayback"
465
+ };
466
+ function normalize_attribute(name) {
467
+ name = name.toLowerCase();
468
+ return ATTRIBUTE_ALIASES[name] ?? name;
469
+ }
470
+ var DOM_PROPERTIES = [
471
+ ...DOM_BOOLEAN_ATTRIBUTES,
472
+ "formNoValidate",
473
+ "isMap",
474
+ "noModule",
475
+ "playsInline",
476
+ "readOnly",
477
+ "value",
478
+ "volume",
479
+ "defaultValue",
480
+ "defaultChecked",
481
+ "srcObject",
482
+ "noValidate",
483
+ "allowFullscreen",
484
+ "disablePictureInPicture",
485
+ "disableRemotePlayback"
486
+ ];
487
+ var PASSIVE_EVENTS = ["touchstart", "touchmove"];
488
+ function is_passive_event(name) {
489
+ return PASSIVE_EVENTS.includes(name);
490
+ }
491
+ var STATE_CREATION_RUNES = (
492
+ /** @type {const} */
493
+ [
494
+ "$state",
495
+ "$state.raw",
496
+ "$derived",
497
+ "$derived.by"
498
+ ]
499
+ );
500
+ var RUNES = (
501
+ /** @type {const} */
502
+ [
503
+ ...STATE_CREATION_RUNES,
504
+ "$state.eager",
505
+ "$state.snapshot",
506
+ "$props",
507
+ "$props.id",
508
+ "$bindable",
509
+ "$effect",
510
+ "$effect.pre",
511
+ "$effect.tracking",
512
+ "$effect.root",
513
+ "$effect.pending",
514
+ "$inspect",
515
+ "$inspect().with",
516
+ "$inspect.trace",
517
+ "$host"
518
+ ]
519
+ );
520
+ var RAW_TEXT_ELEMENTS = (
521
+ /** @type {const} */
522
+ ["textarea", "script", "style", "title"]
523
+ );
524
+ function is_raw_text_element(name) {
525
+ return RAW_TEXT_ELEMENTS.includes(
526
+ /** @type {typeof RAW_TEXT_ELEMENTS[number]} */
527
+ name
528
+ );
529
+ }
530
+ function sanitize_location(location) {
531
+ return (
532
+ /** @type {T} */
533
+ location?.replace(/\//g, "/​")
534
+ );
535
+ }
536
+
537
+ // ../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/render.js
538
+ var should_intro = true;
539
+ function set_should_intro(value) {
540
+ should_intro = value;
541
+ }
542
+ function set_text(text2, value) {
543
+ var str = value == null ? "" : typeof value === "object" ? `${value}` : value;
544
+ if (str !== (text2.__t ??= text2.nodeValue)) {
545
+ text2.__t = str;
546
+ text2.nodeValue = `${str}`;
547
+ }
548
+ }
549
+ function mount(component, options) {
550
+ return _mount(component, options);
551
+ }
552
+ function hydrate(component, options) {
553
+ init_operations();
554
+ options.intro = options.intro ?? false;
555
+ const target = options.target;
556
+ const was_hydrating = hydrating;
557
+ const previous_hydrate_node = hydrate_node;
558
+ try {
559
+ var anchor = get_first_child(target);
560
+ while (anchor && (anchor.nodeType !== COMMENT_NODE || /** @type {Comment} */
561
+ anchor.data !== HYDRATION_START)) {
562
+ anchor = get_next_sibling(anchor);
563
+ }
564
+ if (!anchor) {
565
+ throw HYDRATION_ERROR;
566
+ }
567
+ set_hydrating(true);
568
+ set_hydrate_node(
569
+ /** @type {Comment} */
570
+ anchor
571
+ );
572
+ const instance = _mount(component, { ...options, anchor });
573
+ set_hydrating(false);
574
+ return (
575
+ /** @type {Exports} */
576
+ instance
577
+ );
578
+ } catch (error) {
579
+ if (error instanceof Error && error.message.split("\n").some((line) => line.startsWith("https://svelte.dev/e/"))) {
580
+ throw error;
581
+ }
582
+ if (error !== HYDRATION_ERROR) {
583
+ console.warn("Failed to hydrate: ", error);
584
+ }
585
+ if (options.recover === false) {
586
+ hydration_failed();
587
+ }
588
+ init_operations();
589
+ clear_text_content(target);
590
+ set_hydrating(false);
591
+ return mount(component, options);
592
+ } finally {
593
+ set_hydrating(was_hydrating);
594
+ set_hydrate_node(previous_hydrate_node);
595
+ }
596
+ }
597
+ var listeners = /* @__PURE__ */ new Map();
598
+ function _mount(Component, { target, anchor, props = {}, events, context, intro = true, transformError }) {
599
+ init_operations();
600
+ var component = void 0;
601
+ var unmount2 = component_root(() => {
602
+ var anchor_node = anchor ?? target.appendChild(create_text());
603
+ boundary(
604
+ /** @type {TemplateNode} */
605
+ anchor_node,
606
+ {
607
+ pending: () => {
608
+ }
609
+ },
610
+ (anchor_node2) => {
611
+ push({});
612
+ var ctx = (
613
+ /** @type {ComponentContext} */
614
+ component_context
615
+ );
616
+ if (context) ctx.c = context;
617
+ if (events) {
618
+ props.$$events = events;
619
+ }
620
+ if (hydrating) {
621
+ assign_nodes(
622
+ /** @type {TemplateNode} */
623
+ anchor_node2,
624
+ null
625
+ );
626
+ }
627
+ should_intro = intro;
628
+ component = Component(anchor_node2, props) || {};
629
+ should_intro = true;
630
+ if (hydrating) {
631
+ active_effect.nodes.end = hydrate_node;
632
+ if (hydrate_node === null || hydrate_node.nodeType !== COMMENT_NODE || /** @type {Comment} */
633
+ hydrate_node.data !== HYDRATION_END) {
634
+ hydration_mismatch();
635
+ throw HYDRATION_ERROR;
636
+ }
637
+ }
638
+ pop();
639
+ },
640
+ transformError
641
+ );
642
+ var registered_events = /* @__PURE__ */ new Set();
643
+ var event_handle = (events2) => {
644
+ for (var i = 0; i < events2.length; i++) {
645
+ var event_name = events2[i];
646
+ if (registered_events.has(event_name)) continue;
647
+ registered_events.add(event_name);
648
+ var passive2 = is_passive_event(event_name);
649
+ for (const node of [target, document]) {
650
+ var counts = listeners.get(node);
651
+ if (counts === void 0) {
652
+ counts = /* @__PURE__ */ new Map();
653
+ listeners.set(node, counts);
654
+ }
655
+ var count = counts.get(event_name);
656
+ if (count === void 0) {
657
+ node.addEventListener(event_name, handle_event_propagation, { passive: passive2 });
658
+ counts.set(event_name, 1);
659
+ } else {
660
+ counts.set(event_name, count + 1);
661
+ }
662
+ }
663
+ }
664
+ };
665
+ event_handle(array_from(all_registered_events));
666
+ root_event_handles.add(event_handle);
667
+ return () => {
668
+ for (var event_name of registered_events) {
669
+ for (const node of [target, document]) {
670
+ var counts = (
671
+ /** @type {Map<string, number>} */
672
+ listeners.get(node)
673
+ );
674
+ var count = (
675
+ /** @type {number} */
676
+ counts.get(event_name)
677
+ );
678
+ if (--count == 0) {
679
+ node.removeEventListener(event_name, handle_event_propagation);
680
+ counts.delete(event_name);
681
+ if (counts.size === 0) {
682
+ listeners.delete(node);
683
+ }
684
+ } else {
685
+ counts.set(event_name, count);
686
+ }
687
+ }
688
+ }
689
+ root_event_handles.delete(event_handle);
690
+ if (anchor_node !== anchor) {
691
+ anchor_node.parentNode?.removeChild(anchor_node);
692
+ }
693
+ };
694
+ });
695
+ mounted_components.set(component, unmount2);
696
+ return component;
697
+ }
698
+ var mounted_components = /* @__PURE__ */ new WeakMap();
699
+ function unmount(component, options) {
700
+ const fn = mounted_components.get(component);
701
+ if (fn) {
702
+ mounted_components.delete(component);
703
+ return fn(options);
704
+ }
705
+ if (true_default) {
706
+ if (STATE_SYMBOL in component) {
707
+ state_proxy_unmount();
708
+ } else {
709
+ lifecycle_double_unmount();
710
+ }
711
+ }
712
+ return Promise.resolve();
713
+ }
714
+
715
+ // ../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/legacy/event-modifiers.js
716
+ function trusted(fn) {
717
+ return function(...args) {
718
+ var event = (
719
+ /** @type {Event} */
720
+ args[0]
721
+ );
722
+ if (event.isTrusted) {
723
+ fn?.apply(this, args);
724
+ }
725
+ };
726
+ }
727
+ function self(fn) {
728
+ return function(...args) {
729
+ var event = (
730
+ /** @type {Event} */
731
+ args[0]
732
+ );
733
+ if (event.target === this) {
734
+ fn?.apply(this, args);
735
+ }
736
+ };
737
+ }
738
+ function stopPropagation(fn) {
739
+ return function(...args) {
740
+ var event = (
741
+ /** @type {Event} */
742
+ args[0]
743
+ );
744
+ event.stopPropagation();
745
+ return fn?.apply(this, args);
746
+ };
747
+ }
748
+ function once(fn) {
749
+ var ran = false;
750
+ return function(...args) {
751
+ if (ran) return;
752
+ ran = true;
753
+ return fn?.apply(this, args);
754
+ };
755
+ }
756
+ function stopImmediatePropagation(fn) {
757
+ return function(...args) {
758
+ var event = (
759
+ /** @type {Event} */
760
+ args[0]
761
+ );
762
+ event.stopImmediatePropagation();
763
+ return fn?.apply(this, args);
764
+ };
765
+ }
766
+ function preventDefault(fn) {
767
+ return function(...args) {
768
+ var event = (
769
+ /** @type {Event} */
770
+ args[0]
771
+ );
772
+ event.preventDefault();
773
+ return fn?.apply(this, args);
774
+ };
775
+ }
776
+ function passive(node, [event, handler]) {
777
+ user_pre_effect(() => {
778
+ return on(node, event, handler() ?? noop, {
779
+ passive: true
780
+ });
781
+ });
782
+ }
783
+ function nonpassive(node, [event, handler]) {
784
+ user_pre_effect(() => {
785
+ return on(node, event, handler() ?? noop, {
786
+ passive: false
787
+ });
788
+ });
789
+ }
790
+
791
+ // ../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/legacy/legacy-client.js
792
+ function createClassComponent(options) {
793
+ return new Svelte4Component(options);
794
+ }
795
+ function asClassComponent(component) {
796
+ return class extends Svelte4Component {
797
+ /** @param {any} options */
798
+ constructor(options) {
799
+ super({
800
+ component,
801
+ ...options
802
+ });
803
+ }
804
+ };
805
+ }
806
+ var Svelte4Component = class {
807
+ /** @type {any} */
808
+ #events;
809
+ /** @type {Record<string, any>} */
810
+ #instance;
811
+ /**
812
+ * @param {ComponentConstructorOptions & {
813
+ * component: any;
814
+ * }} options
815
+ */
816
+ constructor(options) {
817
+ var sources = /* @__PURE__ */ new Map();
818
+ var add_source = (key, value) => {
819
+ var s = mutable_source(value, false, false);
820
+ sources.set(key, s);
821
+ return s;
822
+ };
823
+ const props = new Proxy(
824
+ { ...options.props || {}, $$events: {} },
825
+ {
826
+ get(target, prop) {
827
+ return get(sources.get(prop) ?? add_source(prop, Reflect.get(target, prop)));
828
+ },
829
+ has(target, prop) {
830
+ if (prop === LEGACY_PROPS) return true;
831
+ get(sources.get(prop) ?? add_source(prop, Reflect.get(target, prop)));
832
+ return Reflect.has(target, prop);
833
+ },
834
+ set(target, prop, value) {
835
+ set(sources.get(prop) ?? add_source(prop, value), value);
836
+ return Reflect.set(target, prop, value);
837
+ }
838
+ }
839
+ );
840
+ this.#instance = (options.hydrate ? hydrate : mount)(options.component, {
841
+ target: options.target,
842
+ anchor: options.anchor,
843
+ props,
844
+ context: options.context,
845
+ intro: options.intro ?? false,
846
+ recover: options.recover,
847
+ transformError: options.transformError
848
+ });
849
+ if (!async_mode_flag && (!options?.props?.$$host || options.sync === false)) {
850
+ flushSync();
851
+ }
852
+ this.#events = props.$$events;
853
+ for (const key of Object.keys(this.#instance)) {
854
+ if (key === "$set" || key === "$destroy" || key === "$on") continue;
855
+ define_property(this, key, {
856
+ get() {
857
+ return this.#instance[key];
858
+ },
859
+ /** @param {any} value */
860
+ set(value) {
861
+ this.#instance[key] = value;
862
+ },
863
+ enumerable: true
864
+ });
865
+ }
866
+ this.#instance.$set = /** @param {Record<string, any>} next */
867
+ (next) => {
868
+ Object.assign(props, next);
869
+ };
870
+ this.#instance.$destroy = () => {
871
+ unmount(this.#instance);
872
+ };
873
+ }
874
+ /** @param {Record<string, any>} props */
875
+ $set(props) {
876
+ this.#instance.$set(props);
877
+ }
878
+ /**
879
+ * @param {string} event
880
+ * @param {(...args: any[]) => any} callback
881
+ * @returns {any}
882
+ */
883
+ $on(event, callback) {
884
+ this.#events[event] = this.#events[event] || [];
885
+ const cb = (...args) => callback.call(this, ...args);
886
+ this.#events[event].push(cb);
887
+ return () => {
888
+ this.#events[event] = this.#events[event].filter(
889
+ /** @param {any} fn */
890
+ (fn) => fn !== cb
891
+ );
892
+ };
893
+ }
894
+ $destroy() {
895
+ this.#instance.$destroy();
896
+ }
897
+ };
898
+ function run(fn) {
899
+ user_pre_effect(() => {
900
+ fn();
901
+ var effect = (
902
+ /** @type {import('#client').Effect} */
903
+ active_effect
904
+ );
905
+ if ((effect.f & DIRTY) !== 0) {
906
+ let filename = "a file (we can't know which one)";
907
+ if (true_default) {
908
+ filename = dev_current_component_function?.[FILENAME] ?? filename;
909
+ }
910
+ legacy_recursive_reactive_block(filename);
911
+ set_signal_status(effect, MAYBE_DIRTY);
912
+ }
913
+ });
914
+ }
915
+ function handlers(...handlers2) {
916
+ return function(event) {
917
+ const { stopImmediatePropagation: stopImmediatePropagation2 } = event;
918
+ let stopped = false;
919
+ event.stopImmediatePropagation = () => {
920
+ stopped = true;
921
+ stopImmediatePropagation2.call(event);
922
+ };
923
+ const errors = [];
924
+ for (const handler of handlers2) {
925
+ try {
926
+ handler?.call(this, event);
927
+ } catch (e) {
928
+ errors.push(e);
929
+ }
930
+ if (stopped) {
931
+ break;
932
+ }
933
+ }
934
+ for (let error of errors) {
935
+ queueMicrotask(() => {
936
+ throw error;
937
+ });
938
+ }
939
+ };
940
+ }
941
+ function createBubbler() {
942
+ const active_component_context = component_context;
943
+ if (active_component_context === null) {
944
+ lifecycle_outside_component("createBubbler");
945
+ }
946
+ return (type) => (event) => {
947
+ const events = (
948
+ /** @type {Record<string, Function | Function[]>} */
949
+ active_component_context.s.$$events?.[
950
+ /** @type {any} */
951
+ type
952
+ ]
953
+ );
954
+ if (events) {
955
+ const callbacks = is_array(events) ? events.slice() : [events];
956
+ for (const fn of callbacks) {
957
+ fn.call(active_component_context.x, event);
958
+ }
959
+ return !event.defaultPrevented;
960
+ }
961
+ return true;
962
+ };
963
+ }
964
+
965
+ export {
966
+ create_trusted_html,
967
+ create_fragment_from_html,
968
+ assign_nodes,
969
+ from_html,
970
+ from_svg,
971
+ from_mathml,
972
+ from_tree,
973
+ with_script,
974
+ text,
975
+ comment,
976
+ append,
977
+ props_id,
978
+ hash,
979
+ is_void,
980
+ is_capture_event,
981
+ can_delegate_event,
982
+ normalize_attribute,
983
+ is_raw_text_element,
984
+ sanitize_location,
985
+ should_intro,
986
+ set_should_intro,
987
+ set_text,
988
+ mount,
989
+ hydrate,
990
+ unmount,
991
+ trusted,
992
+ self,
993
+ stopPropagation,
994
+ once,
995
+ stopImmediatePropagation,
996
+ preventDefault,
997
+ passive,
998
+ nonpassive,
999
+ createClassComponent,
1000
+ asClassComponent,
1001
+ run,
1002
+ handlers,
1003
+ createBubbler
1004
+ };
1005
+ //# sourceMappingURL=chunk-ALJIOON6.js.map