@jxsuite/studio 2.0.0 → 2.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 (419) hide show
  1. package/canvas.html +21 -0
  2. package/dist/chunks/Overlay.dev-qfjzkms8.js +23 -0
  3. package/dist/chunks/{Overlay.dev-cszx7yn5.js.map → Overlay.dev-qfjzkms8.js.map} +1 -1
  4. package/dist/chunks/{adapter-z8fkmbmv.js → adapter-qfnesn5v.js} +2 -2
  5. package/dist/chunks/{cf-settings-mmyv436d.js → cf-settings-73sh5z4p.js} +3 -3
  6. package/dist/chunks/{components-0hzentwq.js → components-2bpqp4mq.js} +5 -7
  7. package/dist/chunks/{components-0hzentwq.js.map → components-2bpqp4mq.js.map} +1 -1
  8. package/dist/chunks/content-source-34gnkbnn.js +38 -0
  9. package/dist/chunks/content-source-34gnkbnn.js.map +9 -0
  10. package/dist/chunks/convert-to-repeater-t8kxre5s.js +258 -0
  11. package/dist/chunks/convert-to-repeater-t8kxre5s.js.map +10 -0
  12. package/dist/chunks/extension-sections-6mqydz35.js +301 -0
  13. package/dist/chunks/extension-sections-6mqydz35.js.map +11 -0
  14. package/dist/chunks/files-8kn321h1.js +70 -0
  15. package/dist/chunks/files-8kn321h1.js.map +9 -0
  16. package/dist/chunks/{format-host-2c188n41.js → format-host-mkwsmt8d.js} +3 -3
  17. package/dist/chunks/git-panel-tjbr191d.js +51 -0
  18. package/dist/chunks/git-panel-tjbr191d.js.map +9 -0
  19. package/dist/chunks/{index-baeg2x3y.js → index-7pxchcce.js} +4 -3
  20. package/dist/chunks/{index-baeg2x3y.js.map → index-7pxchcce.js.map} +3 -3
  21. package/dist/chunks/{jx-validate-qx8degj7.js → jx-validate-v6qgknrs.js} +3 -3
  22. package/dist/chunks/layers-panel-87pb25km.js +58 -0
  23. package/dist/chunks/layers-panel-87pb25km.js.map +9 -0
  24. package/dist/chunks/{monaco-setup-zjdp9zdw.js → monaco-setup-e0yh25j4.js} +4 -75
  25. package/dist/chunks/{monaco-setup-zjdp9zdw.js.map → monaco-setup-e0yh25j4.js.map} +3 -4
  26. package/dist/chunks/publish-panel-m0fcgdrt.js +21 -0
  27. package/dist/chunks/publish-panel-m0fcgdrt.js.map +9 -0
  28. package/dist/chunks/quick-search-rhs6cbsb.js +53 -0
  29. package/dist/chunks/quick-search-rhs6cbsb.js.map +9 -0
  30. package/dist/chunks/right-panel-zpdxd98t.js +37 -0
  31. package/dist/chunks/right-panel-zpdxd98t.js.map +9 -0
  32. package/dist/chunks/section-registry-zmckaxf4.js +30 -0
  33. package/dist/chunks/section-registry-zmckaxf4.js.map +9 -0
  34. package/dist/chunks/sp-overlay.dev-9ran0sfq.js +18 -0
  35. package/dist/chunks/sp-overlay.dev-9ran0sfq.js.map +9 -0
  36. package/dist/chunks/sp-popover.dev-rebmdncr.js +9 -0
  37. package/dist/chunks/sp-popover.dev-rebmdncr.js.map +9 -0
  38. package/dist/chunks/sp-progress-circle.dev-5vkppfkt.js +15 -0
  39. package/dist/chunks/sp-progress-circle.dev-5vkppfkt.js.map +9 -0
  40. package/dist/chunks/sp-tooltip.dev-ykqrg8h5.js +15 -0
  41. package/dist/chunks/sp-tooltip.dev-ykqrg8h5.js.map +9 -0
  42. package/dist/chunks/{sp-tray.dev-pb2fsd65.js → sp-tray.dev-ey59vfh7.js} +10 -8
  43. package/dist/chunks/{sp-tray.dev-pb2fsd65.js.map → sp-tray.dev-ey59vfh7.js.map} +2 -2
  44. package/dist/chunks/{studio-9qr6fq7p.js → studio-0rqqhrdy.js} +10 -378
  45. package/dist/chunks/{studio-9qr6fq7p.js.map → studio-0rqqhrdy.js.map} +4 -14
  46. package/dist/chunks/{studio-5x6tqqec.js → studio-2sj1jj3v.js} +10 -8
  47. package/dist/chunks/{studio-5x6tqqec.js.map → studio-2sj1jj3v.js.map} +2 -2
  48. package/dist/chunks/{studio-h3fw0wn8.js → studio-3fk1ac9z.js} +6 -4
  49. package/dist/chunks/{studio-h3fw0wn8.js.map → studio-3fk1ac9z.js.map} +2 -2
  50. package/dist/chunks/studio-41exgzhq.js +6690 -0
  51. package/dist/chunks/studio-41exgzhq.js.map +38 -0
  52. package/dist/chunks/{studio-7v2bpweq.js → studio-4mqb9a0j.js} +6 -4
  53. package/dist/chunks/{studio-7v2bpweq.js.map → studio-4mqb9a0j.js.map} +2 -2
  54. package/dist/chunks/studio-50k77cca.js +1787 -0
  55. package/dist/chunks/studio-50k77cca.js.map +18 -0
  56. package/dist/chunks/{studio-56v3zwk6.js → studio-6a0h7sne.js} +10 -8
  57. package/dist/chunks/{studio-56v3zwk6.js.map → studio-6a0h7sne.js.map} +2 -2
  58. package/dist/chunks/studio-6f0am8f2.js +53 -0
  59. package/dist/chunks/studio-6f0am8f2.js.map +10 -0
  60. package/dist/chunks/studio-6nmjc5qk.js +7002 -0
  61. package/dist/chunks/studio-6nmjc5qk.js.map +32 -0
  62. package/dist/chunks/studio-7afd21nw.js +67 -0
  63. package/dist/chunks/studio-7afd21nw.js.map +10 -0
  64. package/dist/chunks/{studio-xze4zrs1.js → studio-7bmdvzne.js} +2 -2
  65. package/dist/chunks/studio-7bmdvzne.js.map +10 -0
  66. package/dist/chunks/studio-8jpzqk5s.js +128 -0
  67. package/dist/chunks/studio-8jpzqk5s.js.map +10 -0
  68. package/dist/chunks/studio-94m77tgk.js +1482 -0
  69. package/dist/chunks/studio-94m77tgk.js.map +13 -0
  70. package/dist/chunks/studio-9je6w5sq.js +1000 -0
  71. package/dist/chunks/studio-9je6w5sq.js.map +16 -0
  72. package/dist/chunks/{studio-w7c6kvk7.js → studio-a7pzveq1.js} +2 -2
  73. package/dist/chunks/{studio-97qcgvdn.js → studio-adn0z1k3.js} +14 -8
  74. package/dist/chunks/{studio-97qcgvdn.js.map → studio-adn0z1k3.js.map} +3 -3
  75. package/dist/chunks/{studio-kr88ryr7.js → studio-bsxxx3x2.js} +17 -15
  76. package/dist/chunks/{studio-kr88ryr7.js.map → studio-bsxxx3x2.js.map} +7 -6
  77. package/dist/chunks/studio-bw5dz6km.js +608 -0
  78. package/dist/chunks/studio-bw5dz6km.js.map +21 -0
  79. package/dist/chunks/studio-c6s5getc.js +4232 -0
  80. package/dist/chunks/studio-c6s5getc.js.map +39 -0
  81. package/dist/chunks/studio-cjm7fdjf.js +451 -0
  82. package/dist/chunks/studio-cjm7fdjf.js.map +14 -0
  83. package/dist/chunks/{studio-cx91mnh8.js → studio-ckwz4d3x.js} +53 -53
  84. package/dist/chunks/{studio-cx91mnh8.js.map → studio-ckwz4d3x.js.map} +5 -5
  85. package/dist/chunks/studio-dg7zyt5x.js +28 -0
  86. package/dist/chunks/studio-dg7zyt5x.js.map +10 -0
  87. package/dist/chunks/studio-dzcyvvvz.js +166 -0
  88. package/dist/chunks/studio-dzcyvvvz.js.map +10 -0
  89. package/dist/chunks/{studio-7kqe41sa.js → studio-evkr5d3b.js} +15 -7
  90. package/dist/chunks/{studio-7kqe41sa.js.map → studio-evkr5d3b.js.map} +5 -4
  91. package/dist/chunks/studio-f12h6177.js +411 -0
  92. package/dist/chunks/studio-f12h6177.js.map +13 -0
  93. package/dist/chunks/studio-hbp1s8m9.js +1817 -0
  94. package/dist/chunks/studio-hbp1s8m9.js.map +14 -0
  95. package/dist/chunks/studio-k2sxjph5.js +15295 -0
  96. package/dist/chunks/studio-k2sxjph5.js.map +235 -0
  97. package/dist/chunks/studio-myje51t3.js +385 -0
  98. package/dist/chunks/studio-myje51t3.js.map +12 -0
  99. package/dist/chunks/studio-na6rwzhw.js +353 -0
  100. package/dist/chunks/studio-na6rwzhw.js.map +11 -0
  101. package/dist/chunks/{studio-4k0m4fmp.js → studio-p471gg5n.js} +126 -3
  102. package/dist/chunks/studio-p471gg5n.js.map +14 -0
  103. package/dist/chunks/{studio-9bjwf0d4.js → studio-rgwcpast.js} +5 -46
  104. package/dist/chunks/{studio-9bjwf0d4.js.map → studio-rgwcpast.js.map} +4 -5
  105. package/dist/chunks/{studio-hhj92gcr.js → studio-s519zc99.js} +3 -3
  106. package/dist/chunks/studio-sas7mt3k.js +75 -0
  107. package/dist/chunks/studio-sas7mt3k.js.map +10 -0
  108. package/dist/chunks/studio-t5wqwzdh.js +74 -0
  109. package/dist/chunks/studio-t5wqwzdh.js.map +10 -0
  110. package/dist/chunks/{studio-9qpspwfn.js → studio-temv5bw4.js} +5 -5
  111. package/dist/chunks/{studio-9qpspwfn.js.map → studio-temv5bw4.js.map} +1 -1
  112. package/dist/chunks/{studio-qkvt37c0.js → studio-tr20m8g8.js} +669 -18
  113. package/dist/chunks/studio-tr20m8g8.js.map +9 -0
  114. package/dist/chunks/{studio-ygzav7z5.js → studio-v96qfnww.js} +5514 -4291
  115. package/dist/chunks/studio-v96qfnww.js.map +54 -0
  116. package/dist/chunks/studio-vcetc91k.js +659 -0
  117. package/dist/chunks/studio-vcetc91k.js.map +10 -0
  118. package/dist/chunks/{studio-n9zmpxjg.js → studio-vmymjefp.js} +2972 -4937
  119. package/dist/chunks/studio-vmymjefp.js.map +98 -0
  120. package/dist/chunks/{studio-bghqfmea.js → studio-wwseqyw0.js} +2 -2
  121. package/dist/chunks/studio-x9hmy5kr.js +390 -0
  122. package/dist/chunks/studio-x9hmy5kr.js.map +10 -0
  123. package/dist/chunks/studio-xa0ce0n7.js +335 -0
  124. package/dist/chunks/studio-xa0ce0n7.js.map +10 -0
  125. package/dist/chunks/studio-xm3dbxvn.js +378 -0
  126. package/dist/chunks/studio-xm3dbxvn.js.map +19 -0
  127. package/dist/chunks/{studio-nqw433kv.js → studio-xmvbhg31.js} +2 -2
  128. package/dist/chunks/studio-zv37yrfa.js +1054 -0
  129. package/dist/chunks/studio-zv37yrfa.js.map +13 -0
  130. package/dist/chunks/{ws-client-q7hkz3j9.js → ws-client-654ts66j.js} +6 -4
  131. package/dist/chunks/ws-client-654ts66j.js.map +11 -0
  132. package/dist/iframe-entry.js +668 -230
  133. package/dist/studio.js +23711 -35185
  134. package/index.html +35 -4685
  135. package/package.json +17 -15
  136. package/src/about/about-modal.ts +42 -11
  137. package/src/browse/library-commands.ts +240 -0
  138. package/src/browse/library-layouts.ts +369 -0
  139. package/src/browse/library-model.ts +396 -0
  140. package/src/browse/library-pane.ts +1049 -0
  141. package/src/browse/library-preview.ts +252 -0
  142. package/src/browse/library-source.ts +150 -0
  143. package/src/canvas/canvas-helpers.ts +33 -9
  144. package/src/canvas/canvas-live-render.ts +45 -29
  145. package/src/canvas/canvas-patcher.ts +151 -31
  146. package/src/canvas/canvas-perf.ts +46 -7
  147. package/src/canvas/canvas-render.ts +1092 -220
  148. package/src/canvas/canvas-surface.ts +240 -0
  149. package/src/canvas/canvas-utils.ts +1166 -124
  150. package/src/canvas/iframe-drop.ts +2 -1
  151. package/src/canvas/iframe-entry.ts +241 -4
  152. package/src/canvas/iframe-host.ts +1226 -143
  153. package/src/canvas/iframe-inline-edit.ts +31 -0
  154. package/src/canvas/iframe-interaction.ts +76 -16
  155. package/src/canvas/iframe-keys.ts +107 -45
  156. package/src/canvas/iframe-overlay.ts +38 -1
  157. package/src/canvas/iframe-protocol.ts +137 -2
  158. package/src/canvas/iframe-render.ts +70 -2
  159. package/src/canvas/iframe-slash.ts +6 -0
  160. package/src/canvas/path-mapping.ts +56 -6
  161. package/src/canvas/surface-registry.ts +292 -0
  162. package/src/collab/collab-commands.ts +244 -0
  163. package/src/collab/collab-session.ts +198 -32
  164. package/src/collab/collab-state.ts +28 -2
  165. package/src/collab/presence-chips.ts +100 -9
  166. package/src/commands/active-registry.ts +42 -0
  167. package/src/commands/app-commands.ts +176 -0
  168. package/src/commands/budget.ts +158 -0
  169. package/src/commands/command-args.ts +253 -0
  170. package/src/commands/context.ts +387 -0
  171. package/src/commands/defaults.ts +580 -0
  172. package/src/commands/keymap.ts +571 -0
  173. package/src/commands/levels.ts +345 -0
  174. package/src/commands/live-context.ts +193 -0
  175. package/src/commands/reference.ts +227 -0
  176. package/src/commands/registry.ts +293 -0
  177. package/src/component-props.ts +3 -2
  178. package/src/content/draft-state.ts +106 -0
  179. package/src/content/entry-commands.ts +282 -0
  180. package/src/content/entry-editor.ts +327 -0
  181. package/src/content/entry-fields.ts +116 -0
  182. package/src/content/entry-model.ts +175 -0
  183. package/src/editor/canvas-context-menu.ts +17 -11
  184. package/src/editor/canvas-slash-bridge.ts +11 -4
  185. package/src/editor/context-menu.ts +804 -204
  186. package/src/editor/convert-to-component.ts +31 -10
  187. package/src/editor/convert-to-repeater.ts +3 -2
  188. package/src/editor/inline-edit-apply.ts +5 -5
  189. package/src/editor/inline-edit.ts +86 -50
  190. package/src/editor/insert-zone-action.ts +1 -1
  191. package/src/editor/shortcuts.ts +1043 -329
  192. package/src/editor/slash-menu.ts +1 -0
  193. package/src/files/elements.ts +166 -0
  194. package/src/files/file-ops.ts +178 -31
  195. package/src/files/files.ts +898 -268
  196. package/src/files/fs-events.ts +21 -0
  197. package/src/files/media-meta.ts +203 -0
  198. package/src/files/media-paths.ts +141 -0
  199. package/src/files/media-upload.ts +7 -3
  200. package/src/files/media-usage.ts +189 -0
  201. package/src/github/github-auth.ts +235 -33
  202. package/src/github/github-publish.ts +80 -21
  203. package/src/grid/grid-controller.ts +152 -12
  204. package/src/grid/grid-layout.ts +225 -20
  205. package/src/grid/grid-open.ts +120 -0
  206. package/src/grid/grid-panel.ts +554 -39
  207. package/src/grid/grid-source.ts +27 -1
  208. package/src/grid/redirects-grid.ts +599 -0
  209. package/src/grid/redirects.ts +398 -0
  210. package/src/grid/sources/content-source.ts +108 -2
  211. package/src/i18n/i18n-commands.ts +322 -0
  212. package/src/new-project/add-repo-modal.ts +8 -10
  213. package/src/new-project/import-tab.ts +34 -9
  214. package/src/new-project/location-fields.ts +9 -1
  215. package/src/new-project/new-project-modal.ts +270 -262
  216. package/src/packages/jxsuite-update.ts +97 -48
  217. package/src/packages/pull-package-sync.ts +18 -9
  218. package/src/page-params.ts +2 -1
  219. package/src/panels/activity-bar.ts +152 -91
  220. package/src/panels/activity-panel.ts +481 -0
  221. package/src/panels/ai-chat/chat-markdown.ts +8 -3
  222. package/src/panels/ai-chat/chat-view.ts +245 -18
  223. package/src/panels/ai-chat/composer.ts +31 -5
  224. package/src/panels/ai-chat/sessions-view.ts +17 -10
  225. package/src/panels/ai-panel.ts +279 -120
  226. package/src/panels/block-action-bar.ts +1115 -224
  227. package/src/panels/bottom-dock.ts +337 -0
  228. package/src/panels/canvas-dnd-bridge.ts +37 -8
  229. package/src/panels/chat-panel.ts +29 -12
  230. package/src/panels/data-explorer.ts +254 -112
  231. package/src/panels/data-grid.ts +10 -4
  232. package/src/panels/dnd.ts +28 -51
  233. package/src/panels/editors.ts +434 -107
  234. package/src/panels/elements-panel.ts +66 -2
  235. package/src/panels/empty-state.ts +112 -0
  236. package/src/panels/events-panel.ts +596 -82
  237. package/src/panels/formula-workspace.ts +408 -218
  238. package/src/panels/frontmatter-fields.ts +51 -10
  239. package/src/panels/frontmatter-panel.ts +357 -79
  240. package/src/panels/git-panel.ts +375 -164
  241. package/src/panels/head-panel.ts +791 -85
  242. package/src/panels/i18n-panel.ts +592 -0
  243. package/src/panels/imports-panel.ts +95 -85
  244. package/src/panels/jump-bar.ts +584 -0
  245. package/src/panels/layers-panel.ts +1106 -328
  246. package/src/panels/left-panel.ts +109 -204
  247. package/src/panels/navigator-panels.ts +131 -0
  248. package/src/panels/overlays.ts +7 -2
  249. package/src/panels/pane-context.ts +1477 -0
  250. package/src/panels/pane-grid.ts +406 -0
  251. package/src/panels/panel-registry.ts +340 -0
  252. package/src/panels/panel-scheduler.ts +75 -0
  253. package/src/panels/problems-panel.ts +234 -0
  254. package/src/panels/properties-panel.ts +946 -1139
  255. package/src/panels/provenance.ts +258 -0
  256. package/src/panels/quick-search.ts +791 -122
  257. package/src/panels/right-panel.ts +228 -102
  258. package/src/panels/seo-modal.ts +395 -0
  259. package/src/panels/settings-pane.ts +203 -0
  260. package/src/panels/signals-panel.ts +354 -137
  261. package/src/panels/statement-editor.ts +41 -25
  262. package/src/panels/statusbar.ts +342 -106
  263. package/src/panels/style-panel.ts +974 -463
  264. package/src/panels/style-utils.ts +3 -3
  265. package/src/panels/stylebook-doc.ts +4 -2
  266. package/src/panels/stylebook-layers-panel.ts +3 -2
  267. package/src/panels/stylebook-panel.ts +51 -26
  268. package/src/panels/tab-strip.ts +1058 -78
  269. package/src/panels/target-line.ts +274 -0
  270. package/src/panels/toolbar.ts +631 -484
  271. package/src/panels/welcome-screen.ts +301 -198
  272. package/src/platform-errors.ts +26 -3
  273. package/src/platform.ts +96 -2
  274. package/src/platforms/cloud.ts +71 -8
  275. package/src/platforms/devserver.ts +92 -29
  276. package/src/publish/deploy-checklist.ts +383 -0
  277. package/src/publish/pages-service.ts +10 -1
  278. package/src/publish/publish-commands.ts +218 -0
  279. package/src/publish/publish-panel.ts +110 -16
  280. package/src/recent-projects.ts +3 -2
  281. package/src/services/a11y-report.ts +505 -0
  282. package/src/services/ai-models.ts +75 -2
  283. package/src/services/ai-project-tools.ts +29 -10
  284. package/src/services/ai-system-prompt.ts +53 -14
  285. package/src/services/ai-tools.ts +39 -3
  286. package/src/services/ai-writes.ts +154 -0
  287. package/src/services/announce.ts +97 -0
  288. package/src/services/automation.ts +424 -175
  289. package/src/services/cem-export.ts +9 -4
  290. package/src/services/clock.ts +61 -0
  291. package/src/services/document-assistant.ts +36 -8
  292. package/src/services/idle.ts +179 -0
  293. package/src/services/import-client.ts +26 -0
  294. package/src/services/monaco-buffer.ts +627 -0
  295. package/src/services/monaco-lazy.ts +36 -0
  296. package/src/services/notify.ts +271 -0
  297. package/src/services/profile.ts +155 -0
  298. package/src/services/references.ts +0 -0
  299. package/src/services/token-lint.ts +3 -2
  300. package/src/services/tool-executor.ts +53 -7
  301. package/src/services/trusted-types.ts +123 -0
  302. package/src/settings/contexts-section.ts +427 -0
  303. package/src/settings/contributed-section.ts +149 -11
  304. package/src/settings/css-vars-editor.ts +306 -349
  305. package/src/settings/defs-editor.ts +93 -34
  306. package/src/settings/dependencies-editor.ts +7 -7
  307. package/src/settings/extension-sections.ts +37 -5
  308. package/src/settings/general-settings.ts +204 -121
  309. package/src/settings/locales-section.ts +347 -0
  310. package/src/settings/preferences-accounts.ts +140 -0
  311. package/src/settings/preferences-dialog.ts +620 -0
  312. package/src/settings/preferences-keymap.ts +270 -0
  313. package/src/settings/project-sections.ts +260 -0
  314. package/src/settings/section-registry.ts +169 -0
  315. package/src/settings/settings-document.ts +385 -0
  316. package/src/shell.ts +1549 -0
  317. package/src/site-context.ts +45 -20
  318. package/src/state.ts +14 -275
  319. package/src/store.ts +88 -43
  320. package/src/studio.ts +790 -346
  321. package/src/style/live-preview.ts +36 -0
  322. package/src/style/project-styles.ts +349 -0
  323. package/src/style/token-ref.ts +123 -0
  324. package/src/tabs/patch-ops.ts +16 -4
  325. package/src/tabs/project-config.ts +416 -0
  326. package/src/tabs/selection.ts +323 -0
  327. package/src/tabs/tab.ts +182 -47
  328. package/src/tabs/transact.ts +209 -28
  329. package/src/types.ts +68 -13
  330. package/src/ui/ai-credentials-form.ts +39 -35
  331. package/src/ui/ai-managed-connect.ts +113 -0
  332. package/src/ui/dynamic-slot.ts +224 -81
  333. package/src/ui/expression-editor.ts +71 -63
  334. package/src/ui/field-input.ts +4 -6
  335. package/src/ui/field-row.ts +215 -38
  336. package/src/ui/form-controls.ts +194 -7
  337. package/src/ui/layers.ts +492 -69
  338. package/src/ui/media-picker.ts +115 -25
  339. package/src/ui/panel-resize.ts +109 -91
  340. package/src/ui/progress-modal.ts +131 -50
  341. package/src/ui/regions.ts +462 -0
  342. package/src/ui/schema-form.ts +229 -45
  343. package/src/ui/spectrum.ts +24 -8
  344. package/src/ui/timing.ts +49 -0
  345. package/src/ui/value-selector.ts +20 -0
  346. package/src/ui/value-source.ts +348 -0
  347. package/src/ui/virtual-window.ts +400 -0
  348. package/src/utils/edit-display.ts +3 -2
  349. package/src/utils/inherited-style.ts +67 -37
  350. package/src/view.ts +64 -78
  351. package/src/workspace/pane-derive.ts +1258 -0
  352. package/src/workspace/session.ts +317 -0
  353. package/src/workspace/workspace.ts +1345 -23
  354. package/styles/canvas.css +653 -0
  355. package/styles/forced-colors.css +106 -0
  356. package/styles/inspector.css +1454 -0
  357. package/styles/overlays.css +2704 -0
  358. package/styles/panels.css +1701 -0
  359. package/styles/shell.css +1423 -0
  360. package/styles/tokens.css +151 -0
  361. package/dist/chunks/Overlay.dev-cszx7yn5.js +0 -22
  362. package/dist/chunks/extension-sections-qct0gt8f.js +0 -531
  363. package/dist/chunks/extension-sections-qct0gt8f.js.map +0 -12
  364. package/dist/chunks/files-02zn5y24.js +0 -50
  365. package/dist/chunks/files-02zn5y24.js.map +0 -9
  366. package/dist/chunks/git-panel-mbb0y0hz.js +0 -28
  367. package/dist/chunks/git-panel-mbb0y0hz.js.map +0 -9
  368. package/dist/chunks/layers-panel-9qekmqk1.js +0 -26
  369. package/dist/chunks/layers-panel-9qekmqk1.js.map +0 -9
  370. package/dist/chunks/settings-modal-gj0hrah4.js +0 -29
  371. package/dist/chunks/settings-modal-gj0hrah4.js.map +0 -9
  372. package/dist/chunks/sp-overlay.dev-earn5as8.js +0 -17
  373. package/dist/chunks/sp-overlay.dev-earn5as8.js.map +0 -9
  374. package/dist/chunks/sp-popover.dev-frxtfejn.js +0 -8
  375. package/dist/chunks/sp-popover.dev-frxtfejn.js.map +0 -9
  376. package/dist/chunks/sp-progress-circle.dev-7tvw34h8.js +0 -14
  377. package/dist/chunks/sp-progress-circle.dev-7tvw34h8.js.map +0 -9
  378. package/dist/chunks/sp-tooltip.dev-a9fywesm.js +0 -21
  379. package/dist/chunks/sp-tooltip.dev-a9fywesm.js.map +0 -10
  380. package/dist/chunks/studio-4k0m4fmp.js.map +0 -13
  381. package/dist/chunks/studio-568nx4t5.js +0 -469
  382. package/dist/chunks/studio-568nx4t5.js.map +0 -14
  383. package/dist/chunks/studio-9smfzqhc.js +0 -19
  384. package/dist/chunks/studio-9smfzqhc.js.map +0 -10
  385. package/dist/chunks/studio-asvf0j9e.js +0 -429
  386. package/dist/chunks/studio-asvf0j9e.js.map +0 -13
  387. package/dist/chunks/studio-d77qm3pk.js +0 -3427
  388. package/dist/chunks/studio-d77qm3pk.js.map +0 -26
  389. package/dist/chunks/studio-j6gqyjf4.js +0 -1854
  390. package/dist/chunks/studio-j6gqyjf4.js.map +0 -18
  391. package/dist/chunks/studio-n9zmpxjg.js.map +0 -115
  392. package/dist/chunks/studio-qkvt37c0.js.map +0 -9
  393. package/dist/chunks/studio-rq0vxb19.js +0 -3744
  394. package/dist/chunks/studio-rq0vxb19.js.map +0 -22
  395. package/dist/chunks/studio-wd6ewdvd.js +0 -853
  396. package/dist/chunks/studio-wd6ewdvd.js.map +0 -12
  397. package/dist/chunks/studio-xq0t7n5t.js +0 -140
  398. package/dist/chunks/studio-xq0t7n5t.js.map +0 -10
  399. package/dist/chunks/studio-xze4zrs1.js.map +0 -10
  400. package/dist/chunks/studio-ygzav7z5.js.map +0 -46
  401. package/dist/chunks/studio-zmy7241e.js +0 -399
  402. package/dist/chunks/studio-zmy7241e.js.map +0 -12
  403. package/dist/chunks/ws-client-q7hkz3j9.js.map +0 -11
  404. package/src/browse/browse-modal.ts +0 -69
  405. package/src/browse/browse.ts +0 -904
  406. package/src/canvas/canvas-diff.ts +0 -216
  407. package/src/canvas/nested-site-style.ts +0 -58
  408. package/src/new-project/design-fields.ts +0 -264
  409. package/src/new-project/templates.ts +0 -61
  410. package/src/panels/tab-bar.ts +0 -548
  411. package/src/settings/settings-modal.ts +0 -203
  412. /package/dist/chunks/{adapter-z8fkmbmv.js.map → adapter-qfnesn5v.js.map} +0 -0
  413. /package/dist/chunks/{cf-settings-mmyv436d.js.map → cf-settings-73sh5z4p.js.map} +0 -0
  414. /package/dist/chunks/{format-host-2c188n41.js.map → format-host-mkwsmt8d.js.map} +0 -0
  415. /package/dist/chunks/{jx-validate-qx8degj7.js.map → jx-validate-v6qgknrs.js.map} +0 -0
  416. /package/dist/chunks/{studio-w7c6kvk7.js.map → studio-a7pzveq1.js.map} +0 -0
  417. /package/dist/chunks/{studio-hhj92gcr.js.map → studio-s519zc99.js.map} +0 -0
  418. /package/dist/chunks/{studio-bghqfmea.js.map → studio-wwseqyw0.js.map} +0 -0
  419. /package/dist/chunks/{studio-nqw433kv.js.map → studio-xmvbhg31.js.map} +0 -0
@@ -1,115 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../node_modules/devlop/lib/development.js", "../../../node_modules/hastscript/node_modules/property-information/lib/util/schema.js", "../../../node_modules/hastscript/node_modules/property-information/lib/util/merge.js", "../../../node_modules/hastscript/node_modules/property-information/lib/normalize.js", "../../../node_modules/hastscript/node_modules/property-information/lib/util/info.js", "../../../node_modules/hastscript/node_modules/property-information/lib/util/types.js", "../../../node_modules/hastscript/node_modules/property-information/lib/util/defined-info.js", "../../../node_modules/hastscript/node_modules/property-information/lib/util/create.js", "../../../node_modules/hastscript/node_modules/property-information/lib/aria.js", "../../../node_modules/hastscript/node_modules/property-information/lib/util/case-sensitive-transform.js", "../../../node_modules/hastscript/node_modules/property-information/lib/util/case-insensitive-transform.js", "../../../node_modules/hastscript/node_modules/property-information/lib/html.js", "../../../node_modules/hastscript/node_modules/property-information/lib/svg.js", "../../../node_modules/hastscript/node_modules/property-information/lib/xlink.js", "../../../node_modules/hastscript/node_modules/property-information/lib/xmlns.js", "../../../node_modules/hastscript/node_modules/property-information/lib/xml.js", "../../../node_modules/hastscript/node_modules/property-information/lib/find.js", "../../../node_modules/hastscript/node_modules/property-information/index.js", "../../../node_modules/comma-separated-tokens/index.js", "../../../node_modules/hast-util-parse-selector/lib/index.js", "../../../node_modules/space-separated-tokens/index.js", "../../../node_modules/hastscript/lib/create-h.js", "../../../node_modules/hastscript/lib/svg-case-sensitive-tag-names.js", "../../../node_modules/hastscript/lib/index.js", "../../../node_modules/hast-util-from-parse5/node_modules/property-information/lib/util/schema.js", "../../../node_modules/hast-util-from-parse5/node_modules/property-information/lib/util/merge.js", "../../../node_modules/hast-util-from-parse5/node_modules/property-information/lib/normalize.js", "../../../node_modules/hast-util-from-parse5/node_modules/property-information/lib/util/info.js", "../../../node_modules/hast-util-from-parse5/node_modules/property-information/lib/util/types.js", "../../../node_modules/hast-util-from-parse5/node_modules/property-information/lib/util/defined-info.js", "../../../node_modules/hast-util-from-parse5/node_modules/property-information/lib/util/create.js", "../../../node_modules/hast-util-from-parse5/node_modules/property-information/lib/aria.js", "../../../node_modules/hast-util-from-parse5/node_modules/property-information/lib/util/case-sensitive-transform.js", "../../../node_modules/hast-util-from-parse5/node_modules/property-information/lib/util/case-insensitive-transform.js", "../../../node_modules/hast-util-from-parse5/node_modules/property-information/lib/html.js", "../../../node_modules/hast-util-from-parse5/node_modules/property-information/lib/svg.js", "../../../node_modules/hast-util-from-parse5/node_modules/property-information/lib/xlink.js", "../../../node_modules/hast-util-from-parse5/node_modules/property-information/lib/xmlns.js", "../../../node_modules/hast-util-from-parse5/node_modules/property-information/lib/xml.js", "../../../node_modules/hast-util-from-parse5/node_modules/property-information/lib/find.js", "../../../node_modules/hast-util-from-parse5/node_modules/property-information/index.js", "../../../node_modules/vfile-location/lib/index.js", "../../../node_modules/web-namespaces/index.js", "../../../node_modules/hast-util-from-parse5/lib/index.js", "../../../node_modules/parse5/dist/common/unicode.js", "../../../node_modules/parse5/dist/common/error-codes.js", "../../../node_modules/parse5/dist/tokenizer/preprocessor.js", "../../../node_modules/parse5/dist/common/token.js", "../../../node_modules/parse5/node_modules/entities/dist/esm/generated/decode-data-html.js", "../../../node_modules/parse5/node_modules/entities/dist/esm/decode-codepoint.js", "../../../node_modules/parse5/node_modules/entities/dist/esm/decode.js", "../../../node_modules/parse5/dist/common/html.js", "../../../node_modules/parse5/dist/tokenizer/index.js", "../../../node_modules/parse5/dist/parser/open-element-stack.js", "../../../node_modules/parse5/dist/parser/formatting-element-list.js", "../../../node_modules/parse5/dist/tree-adapters/default.js", "../../../node_modules/parse5/dist/common/doctype.js", "../../../node_modules/parse5/dist/common/foreign-content.js", "../../../node_modules/parse5/dist/parser/index.js", "../../../node_modules/parse5/dist/serializer/index.js", "../../../node_modules/parse5/dist/index.js", "../../../node_modules/unist-util-stringify-position/lib/index.js", "../../../node_modules/vfile-message/lib/index.js", "../../../node_modules/vfile/lib/minpath.browser.js", "../../../node_modules/vfile/lib/minproc.browser.js", "../../../node_modules/vfile/lib/minurl.shared.js", "../../../node_modules/vfile/lib/minurl.browser.js", "../../../node_modules/vfile/lib/index.js", "../../../node_modules/hast-util-from-html/lib/errors.js", "../../../node_modules/hast-util-from-html/lib/index.js", "../../../node_modules/hast-util-whitespace/lib/index.js", "../../../node_modules/property-information/lib/util/schema.js", "../../../node_modules/property-information/lib/util/merge.js", "../../../node_modules/property-information/lib/normalize.js", "../../../node_modules/property-information/lib/util/info.js", "../../../node_modules/property-information/lib/util/types.js", "../../../node_modules/property-information/lib/util/defined-info.js", "../../../node_modules/property-information/lib/util/create.js", "../../../node_modules/property-information/lib/aria.js", "../../../node_modules/property-information/lib/util/case-sensitive-transform.js", "../../../node_modules/property-information/lib/util/case-insensitive-transform.js", "../../../node_modules/property-information/lib/html.js", "../../../node_modules/property-information/lib/svg.js", "../../../node_modules/property-information/lib/xlink.js", "../../../node_modules/property-information/lib/xmlns.js", "../../../node_modules/property-information/lib/xml.js", "../../../node_modules/property-information/lib/find.js", "../../../node_modules/property-information/index.js", "../../markup/src/html-to-jx.ts", "../src/editor/convert-to-component.ts", "../../../node_modules/lit-html/development/directives/keyed.js", "../src/ui/field-input.ts", "../src/ui/formula-chips.ts", "../../formulas/src/catalog.ts", "../src/ui/formula-catalog.ts", "../src/ui/formula-palette.ts", "../src/ui/expression-editor.ts", "../src/panels/statement-editor.ts", "../src/utils/preview-format.ts", "../src/services/preview-eval.ts", "../src/services/live-preview.ts", "../src/ui/media-picker.ts", "../src/panels/signals-panel.ts", "../src/editor/convert-to-repeater.ts", "../src/editor/context-menu.ts", "../src/panels/layers-panel.ts"],
4
- "sourcesContent": [
5
- "import {dequal} from 'dequal'\n\n/**\n * @type {Set<string>}\n */\nconst codesWarned = new Set()\n\nclass AssertionError extends Error {\n name = /** @type {const} */ ('Assertion')\n code = /** @type {const} */ ('ERR_ASSERTION')\n\n /**\n * Create an assertion error.\n *\n * @param {string} message\n * Message explaining error.\n * @param {unknown} actual\n * Value.\n * @param {unknown} expected\n * Baseline.\n * @param {string} operator\n * Name of equality operation.\n * @param {boolean} generated\n * Whether `message` is a custom message or not\n * @returns\n * Instance.\n */\n // eslint-disable-next-line max-params\n constructor(message, actual, expected, operator, generated) {\n super(message)\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor)\n }\n\n /**\n * @type {unknown}\n */\n this.actual = actual\n\n /**\n * @type {unknown}\n */\n this.expected = expected\n\n /**\n * @type {boolean}\n */\n this.generated = generated\n\n /**\n * @type {string}\n */\n this.operator = operator\n }\n}\n\nclass DeprecationError extends Error {\n name = /** @type {const} */ ('DeprecationWarning')\n\n /**\n * Create a deprecation message.\n *\n * @param {string} message\n * Message explaining deprecation.\n * @param {string | undefined} code\n * Deprecation identifier; deprecation messages will be generated only once per code.\n * @returns\n * Instance.\n */\n constructor(message, code) {\n super(message)\n\n /**\n * @type {string | undefined}\n */\n this.code = code\n }\n}\n\n/**\n * Wrap a function or class to show a deprecation message when first called.\n *\n * > 👉 **Important**: only shows a message when the `development` condition is\n * > used, does nothing in production.\n *\n * When the resulting wrapped `fn` is called, emits a warning once to\n * `console.error` (`stderr`).\n * If a code is given, one warning message will be emitted in total per code.\n *\n * @template {Function} T\n * Function or class kind.\n * @param {T} fn\n * Function or class.\n * @param {string} message\n * Message explaining deprecation.\n * @param {string | null | undefined} [code]\n * Deprecation identifier (optional); deprecation messages will be generated\n * only once per code.\n * @returns {T}\n * Wrapped `fn`.\n */\nexport function deprecate(fn, message, code) {\n let warned = false\n\n // The wrapper will keep the same prototype as fn to maintain prototype chain\n Object.setPrototypeOf(deprecated, fn)\n\n // @ts-expect-error: it’s perfect, typescript…\n return deprecated\n\n /**\n * @this {unknown}\n * @param {...Array<unknown>} args\n * @returns {unknown}\n */\n function deprecated(...args) {\n if (!warned) {\n warned = true\n\n if (typeof code === 'string' && codesWarned.has(code)) {\n // Empty.\n } else {\n console.error(new DeprecationError(message, code || undefined))\n\n if (typeof code === 'string') codesWarned.add(code)\n }\n }\n\n return new.target\n ? Reflect.construct(fn, args, new.target)\n : Reflect.apply(fn, this, args)\n }\n}\n\n/**\n * Assert deep strict equivalence.\n *\n * > 👉 **Important**: only asserts when the `development` condition is used,\n * > does nothing in production.\n *\n * @template {unknown} T\n * Expected kind.\n * @param {unknown} actual\n * Value.\n * @param {T} expected\n * Baseline.\n * @param {Error | string | null | undefined} [message]\n * Message for assertion error (default: `'Expected values to be deeply equal'`).\n * @returns {asserts actual is T}\n * Nothing; throws when `actual` is not deep strict equal to `expected`.\n * @throws {AssertionError}\n * Throws when `actual` is not deep strict equal to `expected`.\n */\nexport function equal(actual, expected, message) {\n assert(\n dequal(actual, expected),\n actual,\n expected,\n 'equal',\n 'Expected values to be deeply equal',\n message\n )\n}\n\n/**\n * Assert if `value` is truthy.\n *\n * > 👉 **Important**: only asserts when the `development` condition is used,\n * > does nothing in production.\n *\n * @param {unknown} value\n * Value to assert.\n * @param {Error | string | null | undefined} [message]\n * Message for assertion error (default: `'Expected value to be truthy'`).\n * @returns {asserts value}\n * Nothing; throws when `value` is falsey.\n * @throws {AssertionError}\n * Throws when `value` is falsey.\n */\nexport function ok(value, message) {\n assert(\n Boolean(value),\n false,\n true,\n 'ok',\n 'Expected value to be truthy',\n message\n )\n}\n\n/**\n * Assert that a code path never happens.\n *\n * > 👉 **Important**: only asserts when the `development` condition is used,\n * > does nothing in production.\n *\n * @param {Error | string | null | undefined} [message]\n * Message for assertion error (default: `'Unreachable'`).\n * @returns {never}\n * Nothing; always throws.\n * @throws {AssertionError}\n * Throws when `value` is falsey.\n */\nexport function unreachable(message) {\n assert(false, false, true, 'ok', 'Unreachable', message)\n}\n\n/**\n * @param {boolean} bool\n * Whether to skip this operation.\n * @param {unknown} actual\n * Actual value.\n * @param {unknown} expected\n * Expected value.\n * @param {string} operator\n * Operator.\n * @param {string} defaultMessage\n * Default message for operation.\n * @param {Error | string | null | undefined} userMessage\n * User-provided message.\n * @returns {asserts bool}\n * Nothing; throws when falsey.\n */\n// eslint-disable-next-line max-params\nfunction assert(bool, actual, expected, operator, defaultMessage, userMessage) {\n if (!bool) {\n throw userMessage instanceof Error\n ? userMessage\n : new AssertionError(\n userMessage || defaultMessage,\n actual,\n expected,\n operator,\n !userMessage\n )\n }\n}\n",
6
- "/**\n * @import {Schema as SchemaType, Space} from 'property-information'\n */\n\n/** @type {SchemaType} */\nexport class Schema {\n /**\n * @param {SchemaType['property']} property\n * Property.\n * @param {SchemaType['normal']} normal\n * Normal.\n * @param {Space | undefined} [space]\n * Space.\n * @returns\n * Schema.\n */\n constructor(property, normal, space) {\n this.normal = normal\n this.property = property\n\n if (space) {\n this.space = space\n }\n }\n}\n\nSchema.prototype.normal = {}\nSchema.prototype.property = {}\nSchema.prototype.space = undefined\n",
7
- "/**\n * @import {Info, Space} from 'property-information'\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {ReadonlyArray<Schema>} definitions\n * Definitions.\n * @param {Space | undefined} [space]\n * Space.\n * @returns {Schema}\n * Schema.\n */\nexport function merge(definitions, space) {\n /** @type {Record<string, Info>} */\n const property = {}\n /** @type {Record<string, string>} */\n const normal = {}\n\n for (const definition of definitions) {\n Object.assign(property, definition.property)\n Object.assign(normal, definition.normal)\n }\n\n return new Schema(property, normal, space)\n}\n",
8
- "/**\n * Get the cleaned case insensitive form of an attribute or property.\n *\n * @param {string} value\n * An attribute-like or property-like name.\n * @returns {string}\n * Value that can be used to look up the properly cased property on a\n * `Schema`.\n */\nexport function normalize(value) {\n return value.toLowerCase()\n}\n",
9
- "/**\n * @import {Info as InfoType} from 'property-information'\n */\n\n/** @type {InfoType} */\nexport class Info {\n /**\n * @param {string} property\n * Property.\n * @param {string} attribute\n * Attribute.\n * @returns\n * Info.\n */\n constructor(property, attribute) {\n this.attribute = attribute\n this.property = property\n }\n}\n\nInfo.prototype.attribute = ''\nInfo.prototype.booleanish = false\nInfo.prototype.boolean = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.defined = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.number = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.property = ''\nInfo.prototype.spaceSeparated = false\nInfo.prototype.space = undefined\n",
10
- "let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n",
11
- "/**\n * @import {Space} from 'property-information'\n */\n\nimport {Info} from './info.js'\nimport * as types from './types.js'\n\nconst checks = /** @type {ReadonlyArray<keyof typeof types>} */ (\n Object.keys(types)\n)\n\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * Property.\n * @param {string} attribute\n * Attribute.\n * @param {number | null | undefined} [mask]\n * Mask.\n * @param {Space | undefined} [space]\n * Space.\n * @returns\n * Info.\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types[check]) === types[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @template {keyof DefinedInfo} Key\n * Key type.\n * @param {DefinedInfo} values\n * Info.\n * @param {Key} key\n * Key.\n * @param {DefinedInfo[Key]} value\n * Value.\n * @returns {undefined}\n * Nothing.\n */\nfunction mark(values, key, value) {\n if (value) {\n values[key] = value\n }\n}\n",
12
- "/**\n * @import {Info, Space} from 'property-information'\n */\n\n/**\n * @typedef Definition\n * Definition of a schema.\n * @property {Record<string, string> | undefined} [attributes]\n * Normalzed names to special attribute case.\n * @property {ReadonlyArray<string> | undefined} [mustUseProperty]\n * Normalized names that must be set as properties.\n * @property {Record<string, number | null>} properties\n * Property names to their types.\n * @property {Space | undefined} [space]\n * Space.\n * @property {Transform} transform\n * Transform a property name.\n */\n\n/**\n * @callback Transform\n * Transform.\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} property\n * Property.\n * @returns {string}\n * Attribute.\n */\n\nimport {normalize} from '../normalize.js'\nimport {DefinedInfo} from './defined-info.js'\nimport {Schema} from './schema.js'\n\n/**\n * @param {Definition} definition\n * Definition.\n * @returns {Schema}\n * Schema.\n */\nexport function create(definition) {\n /** @type {Record<string, Info>} */\n const properties = {}\n /** @type {Record<string, string>} */\n const normals = {}\n\n for (const [property, value] of Object.entries(definition.properties)) {\n const info = new DefinedInfo(\n property,\n definition.transform(definition.attributes || {}, property),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(property)\n ) {\n info.mustUseProperty = true\n }\n\n properties[property] = info\n\n normals[normalize(property)] = property\n normals[normalize(info.attribute)] = property\n }\n\n return new Schema(properties, normals, definition.space)\n}\n",
13
- "import {create} from './util/create.js'\nimport {booleanish, number, spaceSeparated} from './util/types.js'\n\nexport const aria = create({\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n },\n transform(_, property) {\n return property === 'role'\n ? property\n : 'aria-' + property.slice(4).toLowerCase()\n }\n})\n",
14
- "/**\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} attribute\n * Attribute.\n * @returns {string}\n * Transformed attribute.\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n",
15
- "import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} property\n * Property.\n * @returns {string}\n * Transformed property.\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n",
16
- "import {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n booleanish,\n boolean,\n commaSeparated,\n number,\n overloadedBoolean,\n spaceSeparated\n} from './util/types.js'\n\nexport const html = create({\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n blocking: spaceSeparated,\n capture: null,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n fetchPriority: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: overloadedBoolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inert: boolean,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeToggle: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n popover: null,\n popoverTarget: null,\n popoverTargetAction: null,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shadowRootClonable: boolean,\n shadowRootDelegatesFocus: boolean,\n shadowRootMode: null,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n writingSuggestions: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // `<object>`. List of URIs to archives\n axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n background: null, // `<body>`. Use CSS `background-image` instead\n bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n border: number, // `<table>`. Use CSS `border-width` instead,\n borderColor: null, // `<table>`. Use CSS `border-color` instead,\n bottomMargin: number, // `<body>`\n cellPadding: null, // `<table>`\n cellSpacing: null, // `<table>`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // `<object>`\n clear: null, // `<br>`. Use CSS `clear` instead\n code: null, // `<object>`\n codeBase: null, // `<object>`\n codeType: null, // `<object>`\n color: null, // `<font>` and `<hr>`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // `<object>`\n event: null, // `<script>`\n face: null, // `<font>`. Use CSS instead\n frame: null, // `<table>`\n frameBorder: null, // `<iframe>`. Use CSS `border` instead\n hSpace: number, // `<img>` and `<object>`\n leftMargin: number, // `<body>`\n link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n lowSrc: null, // `<img>`. Use a `<picture>`\n marginHeight: number, // `<body>`\n marginWidth: number, // `<body>`\n noResize: boolean, // `<frame>`\n noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n noWrap: boolean, // `<td>` and `<th>`\n object: null, // `<applet>`\n profile: null, // `<head>`\n prompt: null, // `<isindex>`\n rev: null, // `<link>`\n rightMargin: number, // `<body>`\n rules: null, // `<table>`\n scheme: null, // `<meta>`\n scrolling: booleanish, // `<frame>`. Use overflow in the child context\n standby: null, // `<object>`\n summary: null, // `<table>`\n text: null, // `<body>`. Use CSS `color` instead\n topMargin: number, // `<body>`\n valueType: null, // `<param>`\n version: null, // `<html>`. Use a doctype.\n vAlign: null, // Several. Use CSS `vertical-align` instead\n vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n vSpace: number, // `<img>` and `<object>`\n\n // Non-standard Properties.\n allowTransparency: null,\n autoCorrect: null,\n autoSave: null,\n disablePictureInPicture: boolean,\n disableRemotePlayback: boolean,\n prefix: null,\n property: null,\n results: number,\n security: null,\n unselectable: null\n },\n space: 'html',\n transform: caseInsensitiveTransform\n})\n",
17
- "import {caseSensitiveTransform} from './util/case-sensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n boolean,\n commaOrSpaceSeparated,\n commaSeparated,\n number,\n spaceSeparated\n} from './util/types.js'\n\nexport const svg = create({\n attributes: {\n accentHeight: 'accent-height',\n alignmentBaseline: 'alignment-baseline',\n arabicForm: 'arabic-form',\n baselineShift: 'baseline-shift',\n capHeight: 'cap-height',\n className: 'class',\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n crossOrigin: 'crossorigin',\n dataType: 'datatype',\n dominantBaseline: 'dominant-baseline',\n enableBackground: 'enable-background',\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n hrefLang: 'hreflang',\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n horizOriginY: 'horiz-origin-y',\n imageRendering: 'image-rendering',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n navDown: 'nav-down',\n navDownLeft: 'nav-down-left',\n navDownRight: 'nav-down-right',\n navLeft: 'nav-left',\n navNext: 'nav-next',\n navPrev: 'nav-prev',\n navRight: 'nav-right',\n navUp: 'nav-up',\n navUpLeft: 'nav-up-left',\n navUpRight: 'nav-up-right',\n onAbort: 'onabort',\n onActivate: 'onactivate',\n onAfterPrint: 'onafterprint',\n onBeforePrint: 'onbeforeprint',\n onBegin: 'onbegin',\n onCancel: 'oncancel',\n onCanPlay: 'oncanplay',\n onCanPlayThrough: 'oncanplaythrough',\n onChange: 'onchange',\n onClick: 'onclick',\n onClose: 'onclose',\n onCopy: 'oncopy',\n onCueChange: 'oncuechange',\n onCut: 'oncut',\n onDblClick: 'ondblclick',\n onDrag: 'ondrag',\n onDragEnd: 'ondragend',\n onDragEnter: 'ondragenter',\n onDragExit: 'ondragexit',\n onDragLeave: 'ondragleave',\n onDragOver: 'ondragover',\n onDragStart: 'ondragstart',\n onDrop: 'ondrop',\n onDurationChange: 'ondurationchange',\n onEmptied: 'onemptied',\n onEnd: 'onend',\n onEnded: 'onended',\n onError: 'onerror',\n onFocus: 'onfocus',\n onFocusIn: 'onfocusin',\n onFocusOut: 'onfocusout',\n onHashChange: 'onhashchange',\n onInput: 'oninput',\n onInvalid: 'oninvalid',\n onKeyDown: 'onkeydown',\n onKeyPress: 'onkeypress',\n onKeyUp: 'onkeyup',\n onLoad: 'onload',\n onLoadedData: 'onloadeddata',\n onLoadedMetadata: 'onloadedmetadata',\n onLoadStart: 'onloadstart',\n onMessage: 'onmessage',\n onMouseDown: 'onmousedown',\n onMouseEnter: 'onmouseenter',\n onMouseLeave: 'onmouseleave',\n onMouseMove: 'onmousemove',\n onMouseOut: 'onmouseout',\n onMouseOver: 'onmouseover',\n onMouseUp: 'onmouseup',\n onMouseWheel: 'onmousewheel',\n onOffline: 'onoffline',\n onOnline: 'ononline',\n onPageHide: 'onpagehide',\n onPageShow: 'onpageshow',\n onPaste: 'onpaste',\n onPause: 'onpause',\n onPlay: 'onplay',\n onPlaying: 'onplaying',\n onPopState: 'onpopstate',\n onProgress: 'onprogress',\n onRateChange: 'onratechange',\n onRepeat: 'onrepeat',\n onReset: 'onreset',\n onResize: 'onresize',\n onScroll: 'onscroll',\n onSeeked: 'onseeked',\n onSeeking: 'onseeking',\n onSelect: 'onselect',\n onShow: 'onshow',\n onStalled: 'onstalled',\n onStorage: 'onstorage',\n onSubmit: 'onsubmit',\n onSuspend: 'onsuspend',\n onTimeUpdate: 'ontimeupdate',\n onToggle: 'ontoggle',\n onUnload: 'onunload',\n onVolumeChange: 'onvolumechange',\n onWaiting: 'onwaiting',\n onZoom: 'onzoom',\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pointerEvents: 'pointer-events',\n referrerPolicy: 'referrerpolicy',\n renderingIntent: 'rendering-intent',\n shapeRendering: 'shape-rendering',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n strokeDashArray: 'stroke-dasharray',\n strokeDashOffset: 'stroke-dashoffset',\n strokeLineCap: 'stroke-linecap',\n strokeLineJoin: 'stroke-linejoin',\n strokeMiterLimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n tabIndex: 'tabindex',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n transformOrigin: 'transform-origin',\n typeOf: 'typeof',\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n vectorEffect: 'vector-effect',\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n xHeight: 'x-height',\n // These were camelcased in Tiny. Now lowercased in SVG 2\n playbackOrder: 'playbackorder',\n timelineBegin: 'timelinebegin'\n },\n properties: {\n about: commaOrSpaceSeparated,\n accentHeight: number,\n accumulate: null,\n additive: null,\n alignmentBaseline: null,\n alphabetic: number,\n amplitude: number,\n arabicForm: null,\n ascent: number,\n attributeName: null,\n attributeType: null,\n azimuth: number,\n bandwidth: null,\n baselineShift: null,\n baseFrequency: null,\n baseProfile: null,\n bbox: null,\n begin: null,\n bias: number,\n by: null,\n calcMode: null,\n capHeight: number,\n className: spaceSeparated,\n clip: null,\n clipPath: null,\n clipPathUnits: null,\n clipRule: null,\n color: null,\n colorInterpolation: null,\n colorInterpolationFilters: null,\n colorProfile: null,\n colorRendering: null,\n content: null,\n contentScriptType: null,\n contentStyleType: null,\n crossOrigin: null,\n cursor: null,\n cx: null,\n cy: null,\n d: null,\n dataType: null,\n defaultAction: null,\n descent: number,\n diffuseConstant: number,\n direction: null,\n display: null,\n dur: null,\n divisor: number,\n dominantBaseline: null,\n download: boolean,\n dx: null,\n dy: null,\n edgeMode: null,\n editable: null,\n elevation: number,\n enableBackground: null,\n end: null,\n event: null,\n exponent: number,\n externalResourcesRequired: null,\n fill: null,\n fillOpacity: number,\n fillRule: null,\n filter: null,\n filterRes: null,\n filterUnits: null,\n floodColor: null,\n floodOpacity: null,\n focusable: null,\n focusHighlight: null,\n fontFamily: null,\n fontSize: null,\n fontSizeAdjust: null,\n fontStretch: null,\n fontStyle: null,\n fontVariant: null,\n fontWeight: null,\n format: null,\n fr: null,\n from: null,\n fx: null,\n fy: null,\n g1: commaSeparated,\n g2: commaSeparated,\n glyphName: commaSeparated,\n glyphOrientationHorizontal: null,\n glyphOrientationVertical: null,\n glyphRef: null,\n gradientTransform: null,\n gradientUnits: null,\n handler: null,\n hanging: number,\n hatchContentUnits: null,\n hatchUnits: null,\n height: null,\n href: null,\n hrefLang: null,\n horizAdvX: number,\n horizOriginX: number,\n horizOriginY: number,\n id: null,\n ideographic: number,\n imageRendering: null,\n initialVisibility: null,\n in: null,\n in2: null,\n intercept: number,\n k: number,\n k1: number,\n k2: number,\n k3: number,\n k4: number,\n kernelMatrix: commaOrSpaceSeparated,\n kernelUnitLength: null,\n keyPoints: null, // SEMI_COLON_SEPARATED\n keySplines: null, // SEMI_COLON_SEPARATED\n keyTimes: null, // SEMI_COLON_SEPARATED\n kerning: null,\n lang: null,\n lengthAdjust: null,\n letterSpacing: null,\n lightingColor: null,\n limitingConeAngle: number,\n local: null,\n markerEnd: null,\n markerMid: null,\n markerStart: null,\n markerHeight: null,\n markerUnits: null,\n markerWidth: null,\n mask: null,\n maskContentUnits: null,\n maskUnits: null,\n mathematical: null,\n max: null,\n media: null,\n mediaCharacterEncoding: null,\n mediaContentEncodings: null,\n mediaSize: number,\n mediaTime: null,\n method: null,\n min: null,\n mode: null,\n name: null,\n navDown: null,\n navDownLeft: null,\n navDownRight: null,\n navLeft: null,\n navNext: null,\n navPrev: null,\n navRight: null,\n navUp: null,\n navUpLeft: null,\n navUpRight: null,\n numOctaves: null,\n observer: null,\n offset: null,\n onAbort: null,\n onActivate: null,\n onAfterPrint: null,\n onBeforePrint: null,\n onBegin: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnd: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFocusIn: null,\n onFocusOut: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadStart: null,\n onMessage: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onMouseWheel: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRepeat: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onShow: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onZoom: null,\n opacity: null,\n operator: null,\n order: null,\n orient: null,\n orientation: null,\n origin: null,\n overflow: null,\n overlay: null,\n overlinePosition: number,\n overlineThickness: number,\n paintOrder: null,\n panose1: null,\n path: null,\n pathLength: number,\n patternContentUnits: null,\n patternTransform: null,\n patternUnits: null,\n phase: null,\n ping: spaceSeparated,\n pitch: null,\n playbackOrder: null,\n pointerEvents: null,\n points: null,\n pointsAtX: number,\n pointsAtY: number,\n pointsAtZ: number,\n preserveAlpha: null,\n preserveAspectRatio: null,\n primitiveUnits: null,\n propagate: null,\n property: commaOrSpaceSeparated,\n r: null,\n radius: null,\n referrerPolicy: null,\n refX: null,\n refY: null,\n rel: commaOrSpaceSeparated,\n rev: commaOrSpaceSeparated,\n renderingIntent: null,\n repeatCount: null,\n repeatDur: null,\n requiredExtensions: commaOrSpaceSeparated,\n requiredFeatures: commaOrSpaceSeparated,\n requiredFonts: commaOrSpaceSeparated,\n requiredFormats: commaOrSpaceSeparated,\n resource: null,\n restart: null,\n result: null,\n rotate: null,\n rx: null,\n ry: null,\n scale: null,\n seed: null,\n shapeRendering: null,\n side: null,\n slope: null,\n snapshotTime: null,\n specularConstant: number,\n specularExponent: number,\n spreadMethod: null,\n spacing: null,\n startOffset: null,\n stdDeviation: null,\n stemh: null,\n stemv: null,\n stitchTiles: null,\n stopColor: null,\n stopOpacity: null,\n strikethroughPosition: number,\n strikethroughThickness: number,\n string: null,\n stroke: null,\n strokeDashArray: commaOrSpaceSeparated,\n strokeDashOffset: null,\n strokeLineCap: null,\n strokeLineJoin: null,\n strokeMiterLimit: number,\n strokeOpacity: number,\n strokeWidth: null,\n style: null,\n surfaceScale: number,\n syncBehavior: null,\n syncBehaviorDefault: null,\n syncMaster: null,\n syncTolerance: null,\n syncToleranceDefault: null,\n systemLanguage: commaOrSpaceSeparated,\n tabIndex: number,\n tableValues: null,\n target: null,\n targetX: number,\n targetY: number,\n textAnchor: null,\n textDecoration: null,\n textRendering: null,\n textLength: null,\n timelineBegin: null,\n title: null,\n transformBehavior: null,\n type: null,\n typeOf: commaOrSpaceSeparated,\n to: null,\n transform: null,\n transformOrigin: null,\n u1: null,\n u2: null,\n underlinePosition: number,\n underlineThickness: number,\n unicode: null,\n unicodeBidi: null,\n unicodeRange: null,\n unitsPerEm: number,\n values: null,\n vAlphabetic: number,\n vMathematical: number,\n vectorEffect: null,\n vHanging: number,\n vIdeographic: number,\n version: null,\n vertAdvY: number,\n vertOriginX: number,\n vertOriginY: number,\n viewBox: null,\n viewTarget: null,\n visibility: null,\n width: null,\n widths: null,\n wordSpacing: null,\n writingMode: null,\n x: null,\n x1: null,\n x2: null,\n xChannelSelector: null,\n xHeight: number,\n y: null,\n y1: null,\n y2: null,\n yChannelSelector: null,\n z: null,\n zoomAndPan: null\n },\n space: 'svg',\n transform: caseSensitiveTransform\n})\n",
18
- "import {create} from './util/create.js'\n\nexport const xlink = create({\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n },\n space: 'xlink',\n transform(_, property) {\n return 'xlink:' + property.slice(5).toLowerCase()\n }\n})\n",
19
- "import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n properties: {xmlnsXLink: null, xmlns: null},\n space: 'xmlns',\n transform: caseInsensitiveTransform\n})\n",
20
- "import {create} from './util/create.js'\n\nexport const xml = create({\n properties: {xmlBase: null, xmlLang: null, xmlSpace: null},\n space: 'xml',\n transform(_, property) {\n return 'xml:' + property.slice(3).toLowerCase()\n }\n})\n",
21
- "/**\n * @import {Schema} from 'property-information'\n */\n\nimport {DefinedInfo} from './util/defined-info.js'\nimport {Info} from './util/info.js'\nimport {normalize} from './normalize.js'\n\nconst cap = /[A-Z]/g\nconst dash = /-[a-z]/g\nconst valid = /^data[-\\w.:]+$/i\n\n/**\n * Look up info on a property.\n *\n * In most cases the given `schema` contains info on the property.\n * All standard,\n * most legacy,\n * and some non-standard properties are supported.\n * For these cases,\n * the returned `Info` has hints about the value of the property.\n *\n * `name` can also be a valid data attribute or property,\n * in which case an `Info` object with the correctly cased `attribute` and\n * `property` is returned.\n *\n * `name` can be an unknown attribute,\n * in which case an `Info` object with `attribute` and `property` set to the\n * given name is returned.\n * It is not recommended to provide unsupported legacy or recently specced\n * properties.\n *\n *\n * @param {Schema} schema\n * Schema;\n * either the `html` or `svg` export.\n * @param {string} value\n * An attribute-like or property-like name;\n * it will be passed through `normalize` to hopefully find the correct info.\n * @returns {Info}\n * Info.\n */\nexport function find(schema, value) {\n const normal = normalize(value)\n let property = value\n let Type = Info\n\n if (normal in schema.normal) {\n return schema.property[schema.normal[normal]]\n }\n\n if (normal.length > 4 && normal.slice(0, 4) === 'data' && valid.test(value)) {\n // Attribute or property.\n if (value.charAt(4) === '-') {\n // Turn it into a property.\n const rest = value.slice(5).replace(dash, camelcase)\n property = 'data' + rest.charAt(0).toUpperCase() + rest.slice(1)\n } else {\n // Turn it into an attribute.\n const rest = value.slice(4)\n\n if (!dash.test(rest)) {\n let dashes = rest.replace(cap, kebab)\n\n if (dashes.charAt(0) !== '-') {\n dashes = '-' + dashes\n }\n\n value = 'data' + dashes\n }\n }\n\n Type = DefinedInfo\n }\n\n return new Type(property, value)\n}\n\n/**\n * @param {string} $0\n * Value.\n * @returns {string}\n * Kebab.\n */\nfunction kebab($0) {\n return '-' + $0.toLowerCase()\n}\n\n/**\n * @param {string} $0\n * Value.\n * @returns {string}\n * Camel.\n */\nfunction camelcase($0) {\n return $0.charAt(1).toUpperCase()\n}\n",
22
- "// Note: types exposed from `index.d.ts`.\nimport {merge} from './lib/util/merge.js'\nimport {aria} from './lib/aria.js'\nimport {html as htmlBase} from './lib/html.js'\nimport {svg as svgBase} from './lib/svg.js'\nimport {xlink} from './lib/xlink.js'\nimport {xmlns} from './lib/xmlns.js'\nimport {xml} from './lib/xml.js'\n\nexport {hastToReact} from './lib/hast-to-react.js'\n\nexport const html = merge([aria, htmlBase, xlink, xmlns, xml], 'html')\n\nexport {find} from './lib/find.js'\nexport {normalize} from './lib/normalize.js'\n\nexport const svg = merge([aria, svgBase, xlink, xmlns, xml], 'svg')\n",
23
- "/**\n * @typedef Options\n * Configuration for `stringify`.\n * @property {boolean} [padLeft=true]\n * Whether to pad a space before a token.\n * @property {boolean} [padRight=false]\n * Whether to pad a space after a token.\n */\n\n/**\n * @typedef {Options} StringifyOptions\n * Please use `StringifyOptions` instead.\n */\n\n/**\n * Parse comma-separated tokens to an array.\n *\n * @param {string} value\n * Comma-separated tokens.\n * @returns {Array<string>}\n * List of tokens.\n */\nexport function parse(value) {\n /** @type {Array<string>} */\n const tokens = []\n const input = String(value || '')\n let index = input.indexOf(',')\n let start = 0\n /** @type {boolean} */\n let end = false\n\n while (!end) {\n if (index === -1) {\n index = input.length\n end = true\n }\n\n const token = input.slice(start, index).trim()\n\n if (token || !end) {\n tokens.push(token)\n }\n\n start = index + 1\n index = input.indexOf(',', start)\n }\n\n return tokens\n}\n\n/**\n * Serialize an array of strings or numbers to comma-separated tokens.\n *\n * @param {Array<string|number>} values\n * List of tokens.\n * @param {Options} [options]\n * Configuration for `stringify` (optional).\n * @returns {string}\n * Comma-separated tokens.\n */\nexport function stringify(values, options) {\n const settings = options || {}\n\n // Ensure the last empty entry is seen.\n const input = values[values.length - 1] === '' ? [...values, ''] : values\n\n return input\n .join(\n (settings.padRight ? ' ' : '') +\n ',' +\n (settings.padLeft === false ? '' : ' ')\n )\n .trim()\n}\n",
24
- "/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n */\n\n/**\n * @template {string} SimpleSelector\n * Selector type.\n * @template {string} DefaultTagName\n * Default tag name.\n * @typedef {(\n * SimpleSelector extends ''\n * ? DefaultTagName\n * : SimpleSelector extends `${infer TagName}.${infer Rest}`\n * ? ExtractTagName<TagName, DefaultTagName>\n * : SimpleSelector extends `${infer TagName}#${infer Rest}`\n * ? ExtractTagName<TagName, DefaultTagName>\n * : SimpleSelector extends string\n * ? SimpleSelector\n * : DefaultTagName\n * )} ExtractTagName\n * Extract tag name from a simple selector.\n */\n\nconst search = /[#.]/g\n\n/**\n * Create a hast element from a simple CSS selector.\n *\n * @template {string} Selector\n * Type of selector.\n * @template {string} [DefaultTagName='div']\n * Type of default tag name (default: `'div'`).\n * @param {Selector | null | undefined} [selector]\n * Simple CSS selector (optional).\n *\n * Can contain a tag name (`foo`), classes (`.bar`), and an ID (`#baz`).\n * Multiple classes are allowed.\n * Uses the last ID if multiple IDs are found.\n * @param {DefaultTagName | null | undefined} [defaultTagName='div']\n * Tag name to use if `selector` does not specify one (default: `'div'`).\n * @returns {Element & {tagName: ExtractTagName<Selector, DefaultTagName>}}\n * Built element.\n */\nexport function parseSelector(selector, defaultTagName) {\n const value = selector || ''\n /** @type {Properties} */\n const props = {}\n let start = 0\n /** @type {string | undefined} */\n let previous\n /** @type {string | undefined} */\n let tagName\n\n while (start < value.length) {\n search.lastIndex = start\n const match = search.exec(value)\n const subvalue = value.slice(start, match ? match.index : value.length)\n\n if (subvalue) {\n if (!previous) {\n tagName = subvalue\n } else if (previous === '#') {\n props.id = subvalue\n } else if (Array.isArray(props.className)) {\n props.className.push(subvalue)\n } else {\n props.className = [subvalue]\n }\n\n start += subvalue.length\n }\n\n if (match) {\n previous = match[0]\n start++\n }\n }\n\n return {\n type: 'element',\n // @ts-expect-error: tag name is parsed.\n tagName: tagName || defaultTagName || 'div',\n properties: props,\n children: []\n }\n}\n",
25
- "/**\n * Parse space-separated tokens to an array of strings.\n *\n * @param {string} value\n * Space-separated tokens.\n * @returns {Array<string>}\n * List of tokens.\n */\nexport function parse(value) {\n const input = String(value || '').trim()\n return input ? input.split(/[ \\t\\n\\r\\f]+/g) : []\n}\n\n/**\n * Serialize an array of strings as space separated-tokens.\n *\n * @param {Array<string|number>} values\n * List of tokens.\n * @returns {string}\n * Space-separated tokens.\n */\nexport function stringify(values) {\n return values.join(' ').trim()\n}\n",
26
- "/**\n * @import {Element, Nodes, RootContent, Root} from 'hast'\n * @import {Info, Schema} from 'property-information'\n */\n\n/**\n * @typedef {Array<Nodes | PrimitiveChild>} ArrayChildNested\n * List of children (deep).\n */\n\n/**\n * @typedef {Array<ArrayChildNested | Nodes | PrimitiveChild>} ArrayChild\n * List of children.\n */\n\n/**\n * @typedef {Array<number | string>} ArrayValue\n * List of property values for space- or comma separated values (such as `className`).\n */\n\n/**\n * @typedef {ArrayChild | Nodes | PrimitiveChild} Child\n * Acceptable child value.\n */\n\n/**\n * @typedef {number | string | null | undefined} PrimitiveChild\n * Primitive children, either ignored (nullish), or turned into text nodes.\n */\n\n/**\n * @typedef {boolean | number | string | null | undefined} PrimitiveValue\n * Primitive property value.\n */\n\n/**\n * @typedef {Record<string, PropertyValue | Style>} Properties\n * Acceptable value for element properties.\n */\n\n/**\n * @typedef {ArrayValue | PrimitiveValue} PropertyValue\n * Primitive value or list value.\n */\n\n/**\n * @typedef {Element | Root} Result\n * Result from a `h` (or `s`) call.\n */\n\n/**\n * @typedef {number | string} StyleValue\n * Value for a CSS style field.\n */\n\n/**\n * @typedef {Record<string, StyleValue>} Style\n * Supported value of a `style` prop.\n */\n\nimport {parse as parseCommas} from 'comma-separated-tokens'\nimport {parseSelector} from 'hast-util-parse-selector'\nimport {find, normalize} from 'property-information'\nimport {parse as parseSpaces} from 'space-separated-tokens'\n\n/**\n * @param {Schema} schema\n * Schema to use.\n * @param {string} defaultTagName\n * Default tag name.\n * @param {ReadonlyArray<string> | undefined} [caseSensitive]\n * Case-sensitive tag names (default: `undefined`).\n * @returns\n * `h`.\n */\nexport function createH(schema, defaultTagName, caseSensitive) {\n const adjust = caseSensitive ? createAdjustMap(caseSensitive) : undefined\n\n /**\n * Hyperscript compatible DSL for creating virtual hast trees.\n *\n * @overload\n * @param {null | undefined} [selector]\n * @param {...Child} children\n * @returns {Root}\n *\n * @overload\n * @param {string} selector\n * @param {Properties} properties\n * @param {...Child} children\n * @returns {Element}\n *\n * @overload\n * @param {string} selector\n * @param {...Child} children\n * @returns {Element}\n *\n * @param {string | null | undefined} [selector]\n * Selector.\n * @param {Child | Properties | null | undefined} [properties]\n * Properties (or first child) (default: `undefined`).\n * @param {...Child} children\n * Children.\n * @returns {Result}\n * Result.\n */\n function h(selector, properties, ...children) {\n /** @type {Result} */\n let node\n\n if (selector === null || selector === undefined) {\n node = {type: 'root', children: []}\n // Properties are not supported for roots.\n const child = /** @type {Child} */ (properties)\n children.unshift(child)\n } else {\n node = parseSelector(selector, defaultTagName)\n // Normalize the name.\n const lower = node.tagName.toLowerCase()\n const adjusted = adjust ? adjust.get(lower) : undefined\n node.tagName = adjusted || lower\n\n // Handle properties.\n if (isChild(properties)) {\n children.unshift(properties)\n } else {\n for (const [key, value] of Object.entries(properties)) {\n addProperty(schema, node.properties, key, value)\n }\n }\n }\n\n // Handle children.\n for (const child of children) {\n addChild(node.children, child)\n }\n\n if (node.type === 'element' && node.tagName === 'template') {\n node.content = {type: 'root', children: node.children}\n node.children = []\n }\n\n return node\n }\n\n return h\n}\n\n/**\n * Check if something is properties or a child.\n *\n * @param {Child | Properties} value\n * Value to check.\n * @returns {value is Child}\n * Whether `value` is definitely a child.\n */\nfunction isChild(value) {\n // Never properties if not an object.\n if (value === null || typeof value !== 'object' || Array.isArray(value)) {\n return true\n }\n\n // Never node without `type`; that’s the main discriminator.\n if (typeof value.type !== 'string') return false\n\n // Slower check: never property value if object or array with\n // non-number/strings.\n const record = /** @type {Record<string, unknown>} */ (value)\n const keys = Object.keys(value)\n\n for (const key of keys) {\n const value = record[key]\n\n if (value && typeof value === 'object') {\n if (!Array.isArray(value)) return true\n\n const list = /** @type {ReadonlyArray<unknown>} */ (value)\n\n for (const item of list) {\n if (typeof item !== 'number' && typeof item !== 'string') {\n return true\n }\n }\n }\n }\n\n // Also see empty `children` as a node.\n if ('children' in value && Array.isArray(value.children)) {\n return true\n }\n\n // Default to properties, someone can always pass an empty object,\n // put `data: {}` in a node,\n // or wrap it in an array.\n return false\n}\n\n/**\n * @param {Schema} schema\n * Schema.\n * @param {Properties} properties\n * Properties object.\n * @param {string} key\n * Property name.\n * @param {PropertyValue | Style} value\n * Property value.\n * @returns {undefined}\n * Nothing.\n */\nfunction addProperty(schema, properties, key, value) {\n const info = find(schema, key)\n /** @type {PropertyValue} */\n let result\n\n // Ignore nullish and NaN values.\n if (value === null || value === undefined) return\n\n if (typeof value === 'number') {\n // Ignore NaN.\n if (Number.isNaN(value)) return\n\n result = value\n }\n // Booleans.\n else if (typeof value === 'boolean') {\n result = value\n }\n // Handle list values.\n else if (typeof value === 'string') {\n if (info.spaceSeparated) {\n result = parseSpaces(value)\n } else if (info.commaSeparated) {\n result = parseCommas(value)\n } else if (info.commaOrSpaceSeparated) {\n result = parseSpaces(parseCommas(value).join(' '))\n } else {\n result = parsePrimitive(info, info.property, value)\n }\n } else if (Array.isArray(value)) {\n result = [...value]\n } else {\n result = info.property === 'style' ? style(value) : String(value)\n }\n\n if (Array.isArray(result)) {\n /** @type {Array<number | string>} */\n const finalResult = []\n\n for (const item of result) {\n // Assume no booleans in array.\n finalResult.push(\n /** @type {number | string} */ (\n parsePrimitive(info, info.property, item)\n )\n )\n }\n\n result = finalResult\n }\n\n // Class names (which can be added both on the `selector` and here).\n if (info.property === 'className' && Array.isArray(properties.className)) {\n // Assume no booleans in `className`.\n result = properties.className.concat(\n /** @type {Array<number | string> | number | string} */ (result)\n )\n }\n\n properties[info.property] = result\n}\n\n/**\n * @param {Array<RootContent>} nodes\n * Children.\n * @param {Child} value\n * Child.\n * @returns {undefined}\n * Nothing.\n */\nfunction addChild(nodes, value) {\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'number' || typeof value === 'string') {\n nodes.push({type: 'text', value: String(value)})\n } else if (Array.isArray(value)) {\n for (const child of value) {\n addChild(nodes, child)\n }\n } else if (typeof value === 'object' && 'type' in value) {\n if (value.type === 'root') {\n addChild(nodes, value.children)\n } else {\n nodes.push(value)\n }\n } else {\n throw new Error('Expected node, nodes, or string, got `' + value + '`')\n }\n}\n\n/**\n * Parse a single primitives.\n *\n * @param {Info} info\n * Property information.\n * @param {string} name\n * Property name.\n * @param {PrimitiveValue} value\n * Property value.\n * @returns {PrimitiveValue}\n * Property value.\n */\nfunction parsePrimitive(info, name, value) {\n if (typeof value === 'string') {\n if (info.number && value && !Number.isNaN(Number(value))) {\n return Number(value)\n }\n\n if (\n (info.boolean || info.overloadedBoolean) &&\n (value === '' || normalize(value) === normalize(name))\n ) {\n return true\n }\n }\n\n return value\n}\n\n/**\n * Serialize a `style` object as a string.\n *\n * @param {Style} styles\n * Style object.\n * @returns {string}\n * CSS string.\n */\nfunction style(styles) {\n /** @type {Array<string>} */\n const result = []\n\n for (const [key, value] of Object.entries(styles)) {\n result.push([key, value].join(': '))\n }\n\n return result.join('; ')\n}\n\n/**\n * Create a map to adjust casing.\n *\n * @param {ReadonlyArray<string>} values\n * List of properly cased keys.\n * @returns {Map<string, string>}\n * Map of lowercase keys to uppercase keys.\n */\nfunction createAdjustMap(values) {\n /** @type {Map<string, string>} */\n const result = new Map()\n\n for (const value of values) {\n result.set(value.toLowerCase(), value)\n }\n\n return result\n}\n",
27
- "/**\n * List of case-sensitive SVG tag names.\n *\n * @type {ReadonlyArray<string>}\n */\nexport const svgCaseSensitiveTagNames = [\n 'altGlyph',\n 'altGlyphDef',\n 'altGlyphItem',\n 'animateColor',\n 'animateMotion',\n 'animateTransform',\n 'clipPath',\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feDropShadow',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n 'foreignObject',\n 'glyphRef',\n 'linearGradient',\n 'radialGradient',\n 'solidColor',\n 'textArea',\n 'textPath'\n]\n",
28
- "// Register the JSX namespace on `h`.\n/**\n * @typedef {import('./jsx-classic.js').Element} h.JSX.Element\n * @typedef {import('./jsx-classic.js').ElementChildrenAttribute} h.JSX.ElementChildrenAttribute\n * @typedef {import('./jsx-classic.js').IntrinsicAttributes} h.JSX.IntrinsicAttributes\n * @typedef {import('./jsx-classic.js').IntrinsicElements} h.JSX.IntrinsicElements\n */\n\n// Register the JSX namespace on `s`.\n/**\n * @typedef {import('./jsx-classic.js').Element} s.JSX.Element\n * @typedef {import('./jsx-classic.js').ElementChildrenAttribute} s.JSX.ElementChildrenAttribute\n * @typedef {import('./jsx-classic.js').IntrinsicAttributes} s.JSX.IntrinsicAttributes\n * @typedef {import('./jsx-classic.js').IntrinsicElements} s.JSX.IntrinsicElements\n */\n\nimport {html, svg} from 'property-information'\nimport {createH} from './create-h.js'\nimport {svgCaseSensitiveTagNames} from './svg-case-sensitive-tag-names.js'\n\n// Note: this explicit type is needed, otherwise TS creates broken types.\n/** @type {ReturnType<createH>} */\nexport const h = createH(html, 'div')\n\n// Note: this explicit type is needed, otherwise TS creates broken types.\n/** @type {ReturnType<createH>} */\nexport const s = createH(svg, 'g', svgCaseSensitiveTagNames)\n",
29
- "/**\n * @import {Schema as SchemaType, Space} from 'property-information'\n */\n\n/** @type {SchemaType} */\nexport class Schema {\n /**\n * @param {SchemaType['property']} property\n * Property.\n * @param {SchemaType['normal']} normal\n * Normal.\n * @param {Space | undefined} [space]\n * Space.\n * @returns\n * Schema.\n */\n constructor(property, normal, space) {\n this.normal = normal\n this.property = property\n\n if (space) {\n this.space = space\n }\n }\n}\n\nSchema.prototype.normal = {}\nSchema.prototype.property = {}\nSchema.prototype.space = undefined\n",
30
- "/**\n * @import {Info, Space} from 'property-information'\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {ReadonlyArray<Schema>} definitions\n * Definitions.\n * @param {Space | undefined} [space]\n * Space.\n * @returns {Schema}\n * Schema.\n */\nexport function merge(definitions, space) {\n /** @type {Record<string, Info>} */\n const property = {}\n /** @type {Record<string, string>} */\n const normal = {}\n\n for (const definition of definitions) {\n Object.assign(property, definition.property)\n Object.assign(normal, definition.normal)\n }\n\n return new Schema(property, normal, space)\n}\n",
31
- "/**\n * Get the cleaned case insensitive form of an attribute or property.\n *\n * @param {string} value\n * An attribute-like or property-like name.\n * @returns {string}\n * Value that can be used to look up the properly cased property on a\n * `Schema`.\n */\nexport function normalize(value) {\n return value.toLowerCase()\n}\n",
32
- "/**\n * @import {Info as InfoType} from 'property-information'\n */\n\n/** @type {InfoType} */\nexport class Info {\n /**\n * @param {string} property\n * Property.\n * @param {string} attribute\n * Attribute.\n * @returns\n * Info.\n */\n constructor(property, attribute) {\n this.attribute = attribute\n this.property = property\n }\n}\n\nInfo.prototype.attribute = ''\nInfo.prototype.booleanish = false\nInfo.prototype.boolean = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.defined = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.number = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.property = ''\nInfo.prototype.spaceSeparated = false\nInfo.prototype.space = undefined\n",
33
- "let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n",
34
- "/**\n * @import {Space} from 'property-information'\n */\n\nimport {Info} from './info.js'\nimport * as types from './types.js'\n\nconst checks = /** @type {ReadonlyArray<keyof typeof types>} */ (\n Object.keys(types)\n)\n\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * Property.\n * @param {string} attribute\n * Attribute.\n * @param {number | null | undefined} [mask]\n * Mask.\n * @param {Space | undefined} [space]\n * Space.\n * @returns\n * Info.\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types[check]) === types[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @template {keyof DefinedInfo} Key\n * Key type.\n * @param {DefinedInfo} values\n * Info.\n * @param {Key} key\n * Key.\n * @param {DefinedInfo[Key]} value\n * Value.\n * @returns {undefined}\n * Nothing.\n */\nfunction mark(values, key, value) {\n if (value) {\n values[key] = value\n }\n}\n",
35
- "/**\n * @import {Info, Space} from 'property-information'\n */\n\n/**\n * @typedef Definition\n * Definition of a schema.\n * @property {Record<string, string> | undefined} [attributes]\n * Normalzed names to special attribute case.\n * @property {ReadonlyArray<string> | undefined} [mustUseProperty]\n * Normalized names that must be set as properties.\n * @property {Record<string, number | null>} properties\n * Property names to their types.\n * @property {Space | undefined} [space]\n * Space.\n * @property {Transform} transform\n * Transform a property name.\n */\n\n/**\n * @callback Transform\n * Transform.\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} property\n * Property.\n * @returns {string}\n * Attribute.\n */\n\nimport {normalize} from '../normalize.js'\nimport {DefinedInfo} from './defined-info.js'\nimport {Schema} from './schema.js'\n\n/**\n * @param {Definition} definition\n * Definition.\n * @returns {Schema}\n * Schema.\n */\nexport function create(definition) {\n /** @type {Record<string, Info>} */\n const properties = {}\n /** @type {Record<string, string>} */\n const normals = {}\n\n for (const [property, value] of Object.entries(definition.properties)) {\n const info = new DefinedInfo(\n property,\n definition.transform(definition.attributes || {}, property),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(property)\n ) {\n info.mustUseProperty = true\n }\n\n properties[property] = info\n\n normals[normalize(property)] = property\n normals[normalize(info.attribute)] = property\n }\n\n return new Schema(properties, normals, definition.space)\n}\n",
36
- "import {create} from './util/create.js'\nimport {booleanish, number, spaceSeparated} from './util/types.js'\n\nexport const aria = create({\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n },\n transform(_, property) {\n return property === 'role'\n ? property\n : 'aria-' + property.slice(4).toLowerCase()\n }\n})\n",
37
- "/**\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} attribute\n * Attribute.\n * @returns {string}\n * Transformed attribute.\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n",
38
- "import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} property\n * Property.\n * @returns {string}\n * Transformed property.\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n",
39
- "import {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n booleanish,\n boolean,\n commaSeparated,\n number,\n overloadedBoolean,\n spaceSeparated\n} from './util/types.js'\n\nexport const html = create({\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n blocking: spaceSeparated,\n capture: null,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n fetchPriority: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: overloadedBoolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inert: boolean,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeToggle: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n popover: null,\n popoverTarget: null,\n popoverTargetAction: null,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shadowRootClonable: boolean,\n shadowRootDelegatesFocus: boolean,\n shadowRootMode: null,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n writingSuggestions: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // `<object>`. List of URIs to archives\n axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n background: null, // `<body>`. Use CSS `background-image` instead\n bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n border: number, // `<table>`. Use CSS `border-width` instead,\n borderColor: null, // `<table>`. Use CSS `border-color` instead,\n bottomMargin: number, // `<body>`\n cellPadding: null, // `<table>`\n cellSpacing: null, // `<table>`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // `<object>`\n clear: null, // `<br>`. Use CSS `clear` instead\n code: null, // `<object>`\n codeBase: null, // `<object>`\n codeType: null, // `<object>`\n color: null, // `<font>` and `<hr>`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // `<object>`\n event: null, // `<script>`\n face: null, // `<font>`. Use CSS instead\n frame: null, // `<table>`\n frameBorder: null, // `<iframe>`. Use CSS `border` instead\n hSpace: number, // `<img>` and `<object>`\n leftMargin: number, // `<body>`\n link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n lowSrc: null, // `<img>`. Use a `<picture>`\n marginHeight: number, // `<body>`\n marginWidth: number, // `<body>`\n noResize: boolean, // `<frame>`\n noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n noWrap: boolean, // `<td>` and `<th>`\n object: null, // `<applet>`\n profile: null, // `<head>`\n prompt: null, // `<isindex>`\n rev: null, // `<link>`\n rightMargin: number, // `<body>`\n rules: null, // `<table>`\n scheme: null, // `<meta>`\n scrolling: booleanish, // `<frame>`. Use overflow in the child context\n standby: null, // `<object>`\n summary: null, // `<table>`\n text: null, // `<body>`. Use CSS `color` instead\n topMargin: number, // `<body>`\n valueType: null, // `<param>`\n version: null, // `<html>`. Use a doctype.\n vAlign: null, // Several. Use CSS `vertical-align` instead\n vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n vSpace: number, // `<img>` and `<object>`\n\n // Non-standard Properties.\n allowTransparency: null,\n autoCorrect: null,\n autoSave: null,\n disablePictureInPicture: boolean,\n disableRemotePlayback: boolean,\n prefix: null,\n property: null,\n results: number,\n security: null,\n unselectable: null\n },\n space: 'html',\n transform: caseInsensitiveTransform\n})\n",
40
- "import {caseSensitiveTransform} from './util/case-sensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n boolean,\n commaOrSpaceSeparated,\n commaSeparated,\n number,\n spaceSeparated\n} from './util/types.js'\n\nexport const svg = create({\n attributes: {\n accentHeight: 'accent-height',\n alignmentBaseline: 'alignment-baseline',\n arabicForm: 'arabic-form',\n baselineShift: 'baseline-shift',\n capHeight: 'cap-height',\n className: 'class',\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n crossOrigin: 'crossorigin',\n dataType: 'datatype',\n dominantBaseline: 'dominant-baseline',\n enableBackground: 'enable-background',\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n hrefLang: 'hreflang',\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n horizOriginY: 'horiz-origin-y',\n imageRendering: 'image-rendering',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n navDown: 'nav-down',\n navDownLeft: 'nav-down-left',\n navDownRight: 'nav-down-right',\n navLeft: 'nav-left',\n navNext: 'nav-next',\n navPrev: 'nav-prev',\n navRight: 'nav-right',\n navUp: 'nav-up',\n navUpLeft: 'nav-up-left',\n navUpRight: 'nav-up-right',\n onAbort: 'onabort',\n onActivate: 'onactivate',\n onAfterPrint: 'onafterprint',\n onBeforePrint: 'onbeforeprint',\n onBegin: 'onbegin',\n onCancel: 'oncancel',\n onCanPlay: 'oncanplay',\n onCanPlayThrough: 'oncanplaythrough',\n onChange: 'onchange',\n onClick: 'onclick',\n onClose: 'onclose',\n onCopy: 'oncopy',\n onCueChange: 'oncuechange',\n onCut: 'oncut',\n onDblClick: 'ondblclick',\n onDrag: 'ondrag',\n onDragEnd: 'ondragend',\n onDragEnter: 'ondragenter',\n onDragExit: 'ondragexit',\n onDragLeave: 'ondragleave',\n onDragOver: 'ondragover',\n onDragStart: 'ondragstart',\n onDrop: 'ondrop',\n onDurationChange: 'ondurationchange',\n onEmptied: 'onemptied',\n onEnd: 'onend',\n onEnded: 'onended',\n onError: 'onerror',\n onFocus: 'onfocus',\n onFocusIn: 'onfocusin',\n onFocusOut: 'onfocusout',\n onHashChange: 'onhashchange',\n onInput: 'oninput',\n onInvalid: 'oninvalid',\n onKeyDown: 'onkeydown',\n onKeyPress: 'onkeypress',\n onKeyUp: 'onkeyup',\n onLoad: 'onload',\n onLoadedData: 'onloadeddata',\n onLoadedMetadata: 'onloadedmetadata',\n onLoadStart: 'onloadstart',\n onMessage: 'onmessage',\n onMouseDown: 'onmousedown',\n onMouseEnter: 'onmouseenter',\n onMouseLeave: 'onmouseleave',\n onMouseMove: 'onmousemove',\n onMouseOut: 'onmouseout',\n onMouseOver: 'onmouseover',\n onMouseUp: 'onmouseup',\n onMouseWheel: 'onmousewheel',\n onOffline: 'onoffline',\n onOnline: 'ononline',\n onPageHide: 'onpagehide',\n onPageShow: 'onpageshow',\n onPaste: 'onpaste',\n onPause: 'onpause',\n onPlay: 'onplay',\n onPlaying: 'onplaying',\n onPopState: 'onpopstate',\n onProgress: 'onprogress',\n onRateChange: 'onratechange',\n onRepeat: 'onrepeat',\n onReset: 'onreset',\n onResize: 'onresize',\n onScroll: 'onscroll',\n onSeeked: 'onseeked',\n onSeeking: 'onseeking',\n onSelect: 'onselect',\n onShow: 'onshow',\n onStalled: 'onstalled',\n onStorage: 'onstorage',\n onSubmit: 'onsubmit',\n onSuspend: 'onsuspend',\n onTimeUpdate: 'ontimeupdate',\n onToggle: 'ontoggle',\n onUnload: 'onunload',\n onVolumeChange: 'onvolumechange',\n onWaiting: 'onwaiting',\n onZoom: 'onzoom',\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pointerEvents: 'pointer-events',\n referrerPolicy: 'referrerpolicy',\n renderingIntent: 'rendering-intent',\n shapeRendering: 'shape-rendering',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n strokeDashArray: 'stroke-dasharray',\n strokeDashOffset: 'stroke-dashoffset',\n strokeLineCap: 'stroke-linecap',\n strokeLineJoin: 'stroke-linejoin',\n strokeMiterLimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n tabIndex: 'tabindex',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n transformOrigin: 'transform-origin',\n typeOf: 'typeof',\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n vectorEffect: 'vector-effect',\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n xHeight: 'x-height',\n // These were camelcased in Tiny. Now lowercased in SVG 2\n playbackOrder: 'playbackorder',\n timelineBegin: 'timelinebegin'\n },\n properties: {\n about: commaOrSpaceSeparated,\n accentHeight: number,\n accumulate: null,\n additive: null,\n alignmentBaseline: null,\n alphabetic: number,\n amplitude: number,\n arabicForm: null,\n ascent: number,\n attributeName: null,\n attributeType: null,\n azimuth: number,\n bandwidth: null,\n baselineShift: null,\n baseFrequency: null,\n baseProfile: null,\n bbox: null,\n begin: null,\n bias: number,\n by: null,\n calcMode: null,\n capHeight: number,\n className: spaceSeparated,\n clip: null,\n clipPath: null,\n clipPathUnits: null,\n clipRule: null,\n color: null,\n colorInterpolation: null,\n colorInterpolationFilters: null,\n colorProfile: null,\n colorRendering: null,\n content: null,\n contentScriptType: null,\n contentStyleType: null,\n crossOrigin: null,\n cursor: null,\n cx: null,\n cy: null,\n d: null,\n dataType: null,\n defaultAction: null,\n descent: number,\n diffuseConstant: number,\n direction: null,\n display: null,\n dur: null,\n divisor: number,\n dominantBaseline: null,\n download: boolean,\n dx: null,\n dy: null,\n edgeMode: null,\n editable: null,\n elevation: number,\n enableBackground: null,\n end: null,\n event: null,\n exponent: number,\n externalResourcesRequired: null,\n fill: null,\n fillOpacity: number,\n fillRule: null,\n filter: null,\n filterRes: null,\n filterUnits: null,\n floodColor: null,\n floodOpacity: null,\n focusable: null,\n focusHighlight: null,\n fontFamily: null,\n fontSize: null,\n fontSizeAdjust: null,\n fontStretch: null,\n fontStyle: null,\n fontVariant: null,\n fontWeight: null,\n format: null,\n fr: null,\n from: null,\n fx: null,\n fy: null,\n g1: commaSeparated,\n g2: commaSeparated,\n glyphName: commaSeparated,\n glyphOrientationHorizontal: null,\n glyphOrientationVertical: null,\n glyphRef: null,\n gradientTransform: null,\n gradientUnits: null,\n handler: null,\n hanging: number,\n hatchContentUnits: null,\n hatchUnits: null,\n height: null,\n href: null,\n hrefLang: null,\n horizAdvX: number,\n horizOriginX: number,\n horizOriginY: number,\n id: null,\n ideographic: number,\n imageRendering: null,\n initialVisibility: null,\n in: null,\n in2: null,\n intercept: number,\n k: number,\n k1: number,\n k2: number,\n k3: number,\n k4: number,\n kernelMatrix: commaOrSpaceSeparated,\n kernelUnitLength: null,\n keyPoints: null, // SEMI_COLON_SEPARATED\n keySplines: null, // SEMI_COLON_SEPARATED\n keyTimes: null, // SEMI_COLON_SEPARATED\n kerning: null,\n lang: null,\n lengthAdjust: null,\n letterSpacing: null,\n lightingColor: null,\n limitingConeAngle: number,\n local: null,\n markerEnd: null,\n markerMid: null,\n markerStart: null,\n markerHeight: null,\n markerUnits: null,\n markerWidth: null,\n mask: null,\n maskContentUnits: null,\n maskUnits: null,\n mathematical: null,\n max: null,\n media: null,\n mediaCharacterEncoding: null,\n mediaContentEncodings: null,\n mediaSize: number,\n mediaTime: null,\n method: null,\n min: null,\n mode: null,\n name: null,\n navDown: null,\n navDownLeft: null,\n navDownRight: null,\n navLeft: null,\n navNext: null,\n navPrev: null,\n navRight: null,\n navUp: null,\n navUpLeft: null,\n navUpRight: null,\n numOctaves: null,\n observer: null,\n offset: null,\n onAbort: null,\n onActivate: null,\n onAfterPrint: null,\n onBeforePrint: null,\n onBegin: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnd: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFocusIn: null,\n onFocusOut: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadStart: null,\n onMessage: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onMouseWheel: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRepeat: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onShow: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onZoom: null,\n opacity: null,\n operator: null,\n order: null,\n orient: null,\n orientation: null,\n origin: null,\n overflow: null,\n overlay: null,\n overlinePosition: number,\n overlineThickness: number,\n paintOrder: null,\n panose1: null,\n path: null,\n pathLength: number,\n patternContentUnits: null,\n patternTransform: null,\n patternUnits: null,\n phase: null,\n ping: spaceSeparated,\n pitch: null,\n playbackOrder: null,\n pointerEvents: null,\n points: null,\n pointsAtX: number,\n pointsAtY: number,\n pointsAtZ: number,\n preserveAlpha: null,\n preserveAspectRatio: null,\n primitiveUnits: null,\n propagate: null,\n property: commaOrSpaceSeparated,\n r: null,\n radius: null,\n referrerPolicy: null,\n refX: null,\n refY: null,\n rel: commaOrSpaceSeparated,\n rev: commaOrSpaceSeparated,\n renderingIntent: null,\n repeatCount: null,\n repeatDur: null,\n requiredExtensions: commaOrSpaceSeparated,\n requiredFeatures: commaOrSpaceSeparated,\n requiredFonts: commaOrSpaceSeparated,\n requiredFormats: commaOrSpaceSeparated,\n resource: null,\n restart: null,\n result: null,\n rotate: null,\n rx: null,\n ry: null,\n scale: null,\n seed: null,\n shapeRendering: null,\n side: null,\n slope: null,\n snapshotTime: null,\n specularConstant: number,\n specularExponent: number,\n spreadMethod: null,\n spacing: null,\n startOffset: null,\n stdDeviation: null,\n stemh: null,\n stemv: null,\n stitchTiles: null,\n stopColor: null,\n stopOpacity: null,\n strikethroughPosition: number,\n strikethroughThickness: number,\n string: null,\n stroke: null,\n strokeDashArray: commaOrSpaceSeparated,\n strokeDashOffset: null,\n strokeLineCap: null,\n strokeLineJoin: null,\n strokeMiterLimit: number,\n strokeOpacity: number,\n strokeWidth: null,\n style: null,\n surfaceScale: number,\n syncBehavior: null,\n syncBehaviorDefault: null,\n syncMaster: null,\n syncTolerance: null,\n syncToleranceDefault: null,\n systemLanguage: commaOrSpaceSeparated,\n tabIndex: number,\n tableValues: null,\n target: null,\n targetX: number,\n targetY: number,\n textAnchor: null,\n textDecoration: null,\n textRendering: null,\n textLength: null,\n timelineBegin: null,\n title: null,\n transformBehavior: null,\n type: null,\n typeOf: commaOrSpaceSeparated,\n to: null,\n transform: null,\n transformOrigin: null,\n u1: null,\n u2: null,\n underlinePosition: number,\n underlineThickness: number,\n unicode: null,\n unicodeBidi: null,\n unicodeRange: null,\n unitsPerEm: number,\n values: null,\n vAlphabetic: number,\n vMathematical: number,\n vectorEffect: null,\n vHanging: number,\n vIdeographic: number,\n version: null,\n vertAdvY: number,\n vertOriginX: number,\n vertOriginY: number,\n viewBox: null,\n viewTarget: null,\n visibility: null,\n width: null,\n widths: null,\n wordSpacing: null,\n writingMode: null,\n x: null,\n x1: null,\n x2: null,\n xChannelSelector: null,\n xHeight: number,\n y: null,\n y1: null,\n y2: null,\n yChannelSelector: null,\n z: null,\n zoomAndPan: null\n },\n space: 'svg',\n transform: caseSensitiveTransform\n})\n",
41
- "import {create} from './util/create.js'\n\nexport const xlink = create({\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n },\n space: 'xlink',\n transform(_, property) {\n return 'xlink:' + property.slice(5).toLowerCase()\n }\n})\n",
42
- "import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n properties: {xmlnsXLink: null, xmlns: null},\n space: 'xmlns',\n transform: caseInsensitiveTransform\n})\n",
43
- "import {create} from './util/create.js'\n\nexport const xml = create({\n properties: {xmlBase: null, xmlLang: null, xmlSpace: null},\n space: 'xml',\n transform(_, property) {\n return 'xml:' + property.slice(3).toLowerCase()\n }\n})\n",
44
- "/**\n * @import {Schema} from 'property-information'\n */\n\nimport {DefinedInfo} from './util/defined-info.js'\nimport {Info} from './util/info.js'\nimport {normalize} from './normalize.js'\n\nconst cap = /[A-Z]/g\nconst dash = /-[a-z]/g\nconst valid = /^data[-\\w.:]+$/i\n\n/**\n * Look up info on a property.\n *\n * In most cases the given `schema` contains info on the property.\n * All standard,\n * most legacy,\n * and some non-standard properties are supported.\n * For these cases,\n * the returned `Info` has hints about the value of the property.\n *\n * `name` can also be a valid data attribute or property,\n * in which case an `Info` object with the correctly cased `attribute` and\n * `property` is returned.\n *\n * `name` can be an unknown attribute,\n * in which case an `Info` object with `attribute` and `property` set to the\n * given name is returned.\n * It is not recommended to provide unsupported legacy or recently specced\n * properties.\n *\n *\n * @param {Schema} schema\n * Schema;\n * either the `html` or `svg` export.\n * @param {string} value\n * An attribute-like or property-like name;\n * it will be passed through `normalize` to hopefully find the correct info.\n * @returns {Info}\n * Info.\n */\nexport function find(schema, value) {\n const normal = normalize(value)\n let property = value\n let Type = Info\n\n if (normal in schema.normal) {\n return schema.property[schema.normal[normal]]\n }\n\n if (normal.length > 4 && normal.slice(0, 4) === 'data' && valid.test(value)) {\n // Attribute or property.\n if (value.charAt(4) === '-') {\n // Turn it into a property.\n const rest = value.slice(5).replace(dash, camelcase)\n property = 'data' + rest.charAt(0).toUpperCase() + rest.slice(1)\n } else {\n // Turn it into an attribute.\n const rest = value.slice(4)\n\n if (!dash.test(rest)) {\n let dashes = rest.replace(cap, kebab)\n\n if (dashes.charAt(0) !== '-') {\n dashes = '-' + dashes\n }\n\n value = 'data' + dashes\n }\n }\n\n Type = DefinedInfo\n }\n\n return new Type(property, value)\n}\n\n/**\n * @param {string} $0\n * Value.\n * @returns {string}\n * Kebab.\n */\nfunction kebab($0) {\n return '-' + $0.toLowerCase()\n}\n\n/**\n * @param {string} $0\n * Value.\n * @returns {string}\n * Camel.\n */\nfunction camelcase($0) {\n return $0.charAt(1).toUpperCase()\n}\n",
45
- "// Note: types exposed from `index.d.ts`.\nimport {merge} from './lib/util/merge.js'\nimport {aria} from './lib/aria.js'\nimport {html as htmlBase} from './lib/html.js'\nimport {svg as svgBase} from './lib/svg.js'\nimport {xlink} from './lib/xlink.js'\nimport {xmlns} from './lib/xmlns.js'\nimport {xml} from './lib/xml.js'\n\nexport {hastToReact} from './lib/hast-to-react.js'\n\nexport const html = merge([aria, htmlBase, xlink, xmlns, xml], 'html')\n\nexport {find} from './lib/find.js'\nexport {normalize} from './lib/normalize.js'\n\nexport const svg = merge([aria, svgBase, xlink, xmlns, xml], 'svg')\n",
46
- "/**\n * @import {VFile, Value} from 'vfile'\n * @import {Location} from 'vfile-location'\n */\n\n/**\n * Create an index of the given document to translate between line/column and\n * offset based positional info.\n *\n * Also implemented in Rust in [`wooorm/markdown-rs`][markdown-rs].\n *\n * [markdown-rs]: https://github.com/wooorm/markdown-rs/blob/main/src/util/location.rs\n *\n * @param {VFile | Value} file\n * File to index.\n * @returns {Location}\n * Accessors for index.\n */\nexport function location(file) {\n const value = String(file)\n /**\n * List, where each index is a line number (0-based), and each value is the\n * byte index *after* where the line ends.\n *\n * @type {Array<number>}\n */\n const indices = []\n\n return {toOffset, toPoint}\n\n /** @type {Location['toPoint']} */\n function toPoint(offset) {\n if (typeof offset === 'number' && offset > -1 && offset <= value.length) {\n let index = 0\n\n while (true) {\n let end = indices[index]\n\n if (end === undefined) {\n const eol = next(value, indices[index - 1])\n end = eol === -1 ? value.length + 1 : eol + 1\n indices[index] = end\n }\n\n if (end > offset) {\n return {\n line: index + 1,\n column: offset - (index > 0 ? indices[index - 1] : 0) + 1,\n offset\n }\n }\n\n index++\n }\n }\n }\n\n /** @type {Location['toOffset']} */\n function toOffset(point) {\n if (\n point &&\n typeof point.line === 'number' &&\n typeof point.column === 'number' &&\n !Number.isNaN(point.line) &&\n !Number.isNaN(point.column)\n ) {\n while (indices.length < point.line) {\n const from = indices[indices.length - 1]\n const eol = next(value, from)\n const end = eol === -1 ? value.length + 1 : eol + 1\n if (from === end) break\n indices.push(end)\n }\n\n const offset =\n (point.line > 1 ? indices[point.line - 2] : 0) + point.column - 1\n // The given `column` could not exist on this line.\n if (offset < indices[point.line - 1]) return offset\n }\n }\n}\n\n/**\n * @param {string} value\n * @param {number} from\n */\nfunction next(value, from) {\n const cr = value.indexOf('\\r', from)\n const lf = value.indexOf('\\n', from)\n if (lf === -1) return cr\n if (cr === -1 || cr + 1 === lf) return lf\n return cr < lf ? cr : lf\n}\n",
47
- "/**\n * Map of web namespaces.\n *\n * @type {Record<string, string>}\n */\nexport const webNamespaces = {\n html: 'http://www.w3.org/1999/xhtml',\n mathml: 'http://www.w3.org/1998/Math/MathML',\n svg: 'http://www.w3.org/2000/svg',\n xlink: 'http://www.w3.org/1999/xlink',\n xml: 'http://www.w3.org/XML/1998/namespace',\n xmlns: 'http://www.w3.org/2000/xmlns/'\n}\n",
48
- "/**\n * @import {ElementData, Element, Nodes, RootContent, Root} from 'hast'\n * @import {DefaultTreeAdapterMap, Token} from 'parse5'\n * @import {Schema} from 'property-information'\n * @import {Point, Position} from 'unist'\n * @import {VFile} from 'vfile'\n * @import {Options} from 'hast-util-from-parse5'\n */\n\n/**\n * @typedef State\n * Info passed around about the current state.\n * @property {VFile | undefined} file\n * Corresponding file.\n * @property {boolean} location\n * Whether location info was found.\n * @property {Schema} schema\n * Current schema.\n * @property {boolean | undefined} verbose\n * Add extra positional info.\n */\n\nimport {ok as assert} from 'devlop'\nimport {h, s} from 'hastscript'\nimport {find, html, svg} from 'property-information'\nimport {location} from 'vfile-location'\nimport {webNamespaces} from 'web-namespaces'\n\nconst own = {}.hasOwnProperty\n/** @type {unknown} */\n// type-coverage:ignore-next-line\nconst proto = Object.prototype\n\n/**\n * Transform a `parse5` AST to hast.\n *\n * @param {DefaultTreeAdapterMap['node']} tree\n * `parse5` tree to transform.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {Nodes}\n * hast tree.\n */\nexport function fromParse5(tree, options) {\n const settings = options || {}\n\n return one(\n {\n file: settings.file || undefined,\n location: false,\n schema: settings.space === 'svg' ? svg : html,\n verbose: settings.verbose || false\n },\n tree\n )\n}\n\n/**\n * Transform a node.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {DefaultTreeAdapterMap['node']} node\n * p5 node.\n * @returns {Nodes}\n * hast node.\n */\nfunction one(state, node) {\n /** @type {Nodes} */\n let result\n\n switch (node.nodeName) {\n case '#comment': {\n const reference = /** @type {DefaultTreeAdapterMap['commentNode']} */ (\n node\n )\n result = {type: 'comment', value: reference.data}\n patch(state, reference, result)\n return result\n }\n\n case '#document':\n case '#document-fragment': {\n const reference =\n /** @type {DefaultTreeAdapterMap['document'] | DefaultTreeAdapterMap['documentFragment']} */ (\n node\n )\n const quirksMode =\n 'mode' in reference\n ? reference.mode === 'quirks' || reference.mode === 'limited-quirks'\n : false\n\n result = {\n type: 'root',\n children: all(state, node.childNodes),\n data: {quirksMode}\n }\n\n if (state.file && state.location) {\n const document = String(state.file)\n const loc = location(document)\n const start = loc.toPoint(0)\n const end = loc.toPoint(document.length)\n // Always defined as we give valid input.\n assert(start, 'expected `start`')\n assert(end, 'expected `end`')\n result.position = {start, end}\n }\n\n return result\n }\n\n case '#documentType': {\n const reference = /** @type {DefaultTreeAdapterMap['documentType']} */ (\n node\n )\n result = {type: 'doctype'}\n patch(state, reference, result)\n return result\n }\n\n case '#text': {\n const reference = /** @type {DefaultTreeAdapterMap['textNode']} */ (node)\n result = {type: 'text', value: reference.value}\n patch(state, reference, result)\n return result\n }\n\n // Element.\n default: {\n const reference = /** @type {DefaultTreeAdapterMap['element']} */ (node)\n result = element(state, reference)\n return result\n }\n }\n}\n\n/**\n * Transform children.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {Array<DefaultTreeAdapterMap['node']>} nodes\n * Nodes.\n * @returns {Array<RootContent>}\n * hast nodes.\n */\nfunction all(state, nodes) {\n let index = -1\n /** @type {Array<RootContent>} */\n const results = []\n\n while (++index < nodes.length) {\n // Assume no roots in `nodes`.\n const result = /** @type {RootContent} */ (one(state, nodes[index]))\n results.push(result)\n }\n\n return results\n}\n\n/**\n * Transform an element.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {DefaultTreeAdapterMap['element']} node\n * `parse5` node to transform.\n * @returns {Element}\n * hast node.\n */\nfunction element(state, node) {\n const schema = state.schema\n\n state.schema = node.namespaceURI === webNamespaces.svg ? svg : html\n\n // Props.\n let index = -1\n /** @type {Record<string, string>} */\n const properties = {}\n\n while (++index < node.attrs.length) {\n const attribute = node.attrs[index]\n const name =\n (attribute.prefix ? attribute.prefix + ':' : '') + attribute.name\n if (!own.call(proto, name)) {\n properties[name] = attribute.value\n }\n }\n\n // Build.\n const x = state.schema.space === 'svg' ? s : h\n const result = x(node.tagName, properties, all(state, node.childNodes))\n patch(state, node, result)\n\n // Switch content.\n if (result.tagName === 'template') {\n const reference = /** @type {DefaultTreeAdapterMap['template']} */ (node)\n const pos = reference.sourceCodeLocation\n const startTag = pos && pos.startTag && position(pos.startTag)\n const endTag = pos && pos.endTag && position(pos.endTag)\n\n // Root in, root out.\n const content = /** @type {Root} */ (one(state, reference.content))\n\n if (startTag && endTag && state.file) {\n content.position = {start: startTag.end, end: endTag.start}\n }\n\n result.content = content\n }\n\n state.schema = schema\n\n return result\n}\n\n/**\n * Patch positional info from `from` onto `to`.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {DefaultTreeAdapterMap['node']} from\n * p5 node.\n * @param {Nodes} to\n * hast node.\n * @returns {undefined}\n * Nothing.\n */\nfunction patch(state, from, to) {\n if ('sourceCodeLocation' in from && from.sourceCodeLocation && state.file) {\n const position = createLocation(state, to, from.sourceCodeLocation)\n\n if (position) {\n state.location = true\n to.position = position\n }\n }\n}\n\n/**\n * Create clean positional information.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {Nodes} node\n * hast node.\n * @param {Token.ElementLocation} location\n * p5 location info.\n * @returns {Position | undefined}\n * Position, or nothing.\n */\nfunction createLocation(state, node, location) {\n const result = position(location)\n\n if (node.type === 'element') {\n const tail = node.children[node.children.length - 1]\n\n // Bug for unclosed with children.\n // See: <https://github.com/inikulin/parse5/issues/109>.\n if (\n result &&\n !location.endTag &&\n tail &&\n tail.position &&\n tail.position.end\n ) {\n result.end = Object.assign({}, tail.position.end)\n }\n\n if (state.verbose) {\n /** @type {Record<string, Position | undefined>} */\n const properties = {}\n /** @type {string} */\n let key\n\n if (location.attrs) {\n for (key in location.attrs) {\n if (own.call(location.attrs, key)) {\n properties[find(state.schema, key).property] = position(\n location.attrs[key]\n )\n }\n }\n }\n\n assert(location.startTag, 'a start tag should exist')\n const opening = position(location.startTag)\n const closing = location.endTag ? position(location.endTag) : undefined\n /** @type {ElementData['position']} */\n const data = {opening}\n if (closing) data.closing = closing\n data.properties = properties\n\n node.data = {position: data}\n }\n }\n\n return result\n}\n\n/**\n * Turn a p5 location into a position.\n *\n * @param {Token.Location} loc\n * Location.\n * @returns {Position | undefined}\n * Position or nothing.\n */\nfunction position(loc) {\n const start = point({\n line: loc.startLine,\n column: loc.startCol,\n offset: loc.startOffset\n })\n const end = point({\n line: loc.endLine,\n column: loc.endCol,\n offset: loc.endOffset\n })\n\n // @ts-expect-error: we do use `undefined` for points if one or the other\n // exists.\n return start || end ? {start, end} : undefined\n}\n\n/**\n * Filter out invalid points.\n *\n * @param {Point} point\n * Point with potentially `undefined` values.\n * @returns {Point | undefined}\n * Point or nothing.\n */\nfunction point(point) {\n return point.line && point.column ? point : undefined\n}\n",
49
- "const UNDEFINED_CODE_POINTS = new Set([\n 65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678, 327679, 393214,\n 393215, 458750, 458751, 524286, 524287, 589822, 589823, 655358, 655359, 720894,\n 720895, 786430, 786431, 851966, 851967, 917502, 917503, 983038, 983039, 1048574,\n 1048575, 1114110, 1114111,\n]);\nexport const REPLACEMENT_CHARACTER = '\\uFFFD';\nexport var CODE_POINTS;\n(function (CODE_POINTS) {\n CODE_POINTS[CODE_POINTS[\"EOF\"] = -1] = \"EOF\";\n CODE_POINTS[CODE_POINTS[\"NULL\"] = 0] = \"NULL\";\n CODE_POINTS[CODE_POINTS[\"TABULATION\"] = 9] = \"TABULATION\";\n CODE_POINTS[CODE_POINTS[\"CARRIAGE_RETURN\"] = 13] = \"CARRIAGE_RETURN\";\n CODE_POINTS[CODE_POINTS[\"LINE_FEED\"] = 10] = \"LINE_FEED\";\n CODE_POINTS[CODE_POINTS[\"FORM_FEED\"] = 12] = \"FORM_FEED\";\n CODE_POINTS[CODE_POINTS[\"SPACE\"] = 32] = \"SPACE\";\n CODE_POINTS[CODE_POINTS[\"EXCLAMATION_MARK\"] = 33] = \"EXCLAMATION_MARK\";\n CODE_POINTS[CODE_POINTS[\"QUOTATION_MARK\"] = 34] = \"QUOTATION_MARK\";\n CODE_POINTS[CODE_POINTS[\"AMPERSAND\"] = 38] = \"AMPERSAND\";\n CODE_POINTS[CODE_POINTS[\"APOSTROPHE\"] = 39] = \"APOSTROPHE\";\n CODE_POINTS[CODE_POINTS[\"HYPHEN_MINUS\"] = 45] = \"HYPHEN_MINUS\";\n CODE_POINTS[CODE_POINTS[\"SOLIDUS\"] = 47] = \"SOLIDUS\";\n CODE_POINTS[CODE_POINTS[\"DIGIT_0\"] = 48] = \"DIGIT_0\";\n CODE_POINTS[CODE_POINTS[\"DIGIT_9\"] = 57] = \"DIGIT_9\";\n CODE_POINTS[CODE_POINTS[\"SEMICOLON\"] = 59] = \"SEMICOLON\";\n CODE_POINTS[CODE_POINTS[\"LESS_THAN_SIGN\"] = 60] = \"LESS_THAN_SIGN\";\n CODE_POINTS[CODE_POINTS[\"EQUALS_SIGN\"] = 61] = \"EQUALS_SIGN\";\n CODE_POINTS[CODE_POINTS[\"GREATER_THAN_SIGN\"] = 62] = \"GREATER_THAN_SIGN\";\n CODE_POINTS[CODE_POINTS[\"QUESTION_MARK\"] = 63] = \"QUESTION_MARK\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_A\"] = 65] = \"LATIN_CAPITAL_A\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_Z\"] = 90] = \"LATIN_CAPITAL_Z\";\n CODE_POINTS[CODE_POINTS[\"RIGHT_SQUARE_BRACKET\"] = 93] = \"RIGHT_SQUARE_BRACKET\";\n CODE_POINTS[CODE_POINTS[\"GRAVE_ACCENT\"] = 96] = \"GRAVE_ACCENT\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_A\"] = 97] = \"LATIN_SMALL_A\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_Z\"] = 122] = \"LATIN_SMALL_Z\";\n})(CODE_POINTS || (CODE_POINTS = {}));\nexport const SEQUENCES = {\n DASH_DASH: '--',\n CDATA_START: '[CDATA[',\n DOCTYPE: 'doctype',\n SCRIPT: 'script',\n PUBLIC: 'public',\n SYSTEM: 'system',\n};\n//Surrogates\nexport function isSurrogate(cp) {\n return cp >= 55296 && cp <= 57343;\n}\nexport function isSurrogatePair(cp) {\n return cp >= 56320 && cp <= 57343;\n}\nexport function getSurrogatePairCodePoint(cp1, cp2) {\n return (cp1 - 55296) * 1024 + 9216 + cp2;\n}\n//NOTE: excluding NULL and ASCII whitespace\nexport function isControlCodePoint(cp) {\n return ((cp !== 0x20 && cp !== 0x0a && cp !== 0x0d && cp !== 0x09 && cp !== 0x0c && cp >= 0x01 && cp <= 0x1f) ||\n (cp >= 0x7f && cp <= 0x9f));\n}\nexport function isUndefinedCodePoint(cp) {\n return (cp >= 64976 && cp <= 65007) || UNDEFINED_CODE_POINTS.has(cp);\n}\n",
50
- "export var ERR;\n(function (ERR) {\n ERR[\"controlCharacterInInputStream\"] = \"control-character-in-input-stream\";\n ERR[\"noncharacterInInputStream\"] = \"noncharacter-in-input-stream\";\n ERR[\"surrogateInInputStream\"] = \"surrogate-in-input-stream\";\n ERR[\"nonVoidHtmlElementStartTagWithTrailingSolidus\"] = \"non-void-html-element-start-tag-with-trailing-solidus\";\n ERR[\"endTagWithAttributes\"] = \"end-tag-with-attributes\";\n ERR[\"endTagWithTrailingSolidus\"] = \"end-tag-with-trailing-solidus\";\n ERR[\"unexpectedSolidusInTag\"] = \"unexpected-solidus-in-tag\";\n ERR[\"unexpectedNullCharacter\"] = \"unexpected-null-character\";\n ERR[\"unexpectedQuestionMarkInsteadOfTagName\"] = \"unexpected-question-mark-instead-of-tag-name\";\n ERR[\"invalidFirstCharacterOfTagName\"] = \"invalid-first-character-of-tag-name\";\n ERR[\"unexpectedEqualsSignBeforeAttributeName\"] = \"unexpected-equals-sign-before-attribute-name\";\n ERR[\"missingEndTagName\"] = \"missing-end-tag-name\";\n ERR[\"unexpectedCharacterInAttributeName\"] = \"unexpected-character-in-attribute-name\";\n ERR[\"unknownNamedCharacterReference\"] = \"unknown-named-character-reference\";\n ERR[\"missingSemicolonAfterCharacterReference\"] = \"missing-semicolon-after-character-reference\";\n ERR[\"unexpectedCharacterAfterDoctypeSystemIdentifier\"] = \"unexpected-character-after-doctype-system-identifier\";\n ERR[\"unexpectedCharacterInUnquotedAttributeValue\"] = \"unexpected-character-in-unquoted-attribute-value\";\n ERR[\"eofBeforeTagName\"] = \"eof-before-tag-name\";\n ERR[\"eofInTag\"] = \"eof-in-tag\";\n ERR[\"missingAttributeValue\"] = \"missing-attribute-value\";\n ERR[\"missingWhitespaceBetweenAttributes\"] = \"missing-whitespace-between-attributes\";\n ERR[\"missingWhitespaceAfterDoctypePublicKeyword\"] = \"missing-whitespace-after-doctype-public-keyword\";\n ERR[\"missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers\"] = \"missing-whitespace-between-doctype-public-and-system-identifiers\";\n ERR[\"missingWhitespaceAfterDoctypeSystemKeyword\"] = \"missing-whitespace-after-doctype-system-keyword\";\n ERR[\"missingQuoteBeforeDoctypePublicIdentifier\"] = \"missing-quote-before-doctype-public-identifier\";\n ERR[\"missingQuoteBeforeDoctypeSystemIdentifier\"] = \"missing-quote-before-doctype-system-identifier\";\n ERR[\"missingDoctypePublicIdentifier\"] = \"missing-doctype-public-identifier\";\n ERR[\"missingDoctypeSystemIdentifier\"] = \"missing-doctype-system-identifier\";\n ERR[\"abruptDoctypePublicIdentifier\"] = \"abrupt-doctype-public-identifier\";\n ERR[\"abruptDoctypeSystemIdentifier\"] = \"abrupt-doctype-system-identifier\";\n ERR[\"cdataInHtmlContent\"] = \"cdata-in-html-content\";\n ERR[\"incorrectlyOpenedComment\"] = \"incorrectly-opened-comment\";\n ERR[\"eofInScriptHtmlCommentLikeText\"] = \"eof-in-script-html-comment-like-text\";\n ERR[\"eofInDoctype\"] = \"eof-in-doctype\";\n ERR[\"nestedComment\"] = \"nested-comment\";\n ERR[\"abruptClosingOfEmptyComment\"] = \"abrupt-closing-of-empty-comment\";\n ERR[\"eofInComment\"] = \"eof-in-comment\";\n ERR[\"incorrectlyClosedComment\"] = \"incorrectly-closed-comment\";\n ERR[\"eofInCdata\"] = \"eof-in-cdata\";\n ERR[\"absenceOfDigitsInNumericCharacterReference\"] = \"absence-of-digits-in-numeric-character-reference\";\n ERR[\"nullCharacterReference\"] = \"null-character-reference\";\n ERR[\"surrogateCharacterReference\"] = \"surrogate-character-reference\";\n ERR[\"characterReferenceOutsideUnicodeRange\"] = \"character-reference-outside-unicode-range\";\n ERR[\"controlCharacterReference\"] = \"control-character-reference\";\n ERR[\"noncharacterCharacterReference\"] = \"noncharacter-character-reference\";\n ERR[\"missingWhitespaceBeforeDoctypeName\"] = \"missing-whitespace-before-doctype-name\";\n ERR[\"missingDoctypeName\"] = \"missing-doctype-name\";\n ERR[\"invalidCharacterSequenceAfterDoctypeName\"] = \"invalid-character-sequence-after-doctype-name\";\n ERR[\"duplicateAttribute\"] = \"duplicate-attribute\";\n ERR[\"nonConformingDoctype\"] = \"non-conforming-doctype\";\n ERR[\"missingDoctype\"] = \"missing-doctype\";\n ERR[\"misplacedDoctype\"] = \"misplaced-doctype\";\n ERR[\"endTagWithoutMatchingOpenElement\"] = \"end-tag-without-matching-open-element\";\n ERR[\"closingOfElementWithOpenChildElements\"] = \"closing-of-element-with-open-child-elements\";\n ERR[\"disallowedContentInNoscriptInHead\"] = \"disallowed-content-in-noscript-in-head\";\n ERR[\"openElementsLeftAfterEof\"] = \"open-elements-left-after-eof\";\n ERR[\"abandonedHeadElementChild\"] = \"abandoned-head-element-child\";\n ERR[\"misplacedStartTagForHeadElement\"] = \"misplaced-start-tag-for-head-element\";\n ERR[\"nestedNoscriptInHead\"] = \"nested-noscript-in-head\";\n ERR[\"eofInElementThatCanContainOnlyText\"] = \"eof-in-element-that-can-contain-only-text\";\n})(ERR || (ERR = {}));\n",
51
- "import { CODE_POINTS as $, getSurrogatePairCodePoint, isControlCodePoint, isSurrogate, isSurrogatePair, isUndefinedCodePoint, } from '../common/unicode.js';\nimport { ERR } from '../common/error-codes.js';\n//Const\nconst DEFAULT_BUFFER_WATERLINE = 1 << 16;\n//Preprocessor\n//NOTE: HTML input preprocessing\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#preprocessing-the-input-stream)\nexport class Preprocessor {\n constructor(handler) {\n this.handler = handler;\n this.html = '';\n this.pos = -1;\n // NOTE: Initial `lastGapPos` is -2, to ensure `col` on initialisation is 0\n this.lastGapPos = -2;\n this.gapStack = [];\n this.skipNextNewLine = false;\n this.lastChunkWritten = false;\n this.endOfChunkHit = false;\n this.bufferWaterline = DEFAULT_BUFFER_WATERLINE;\n this.isEol = false;\n this.lineStartPos = 0;\n this.droppedBufferSize = 0;\n this.line = 1;\n //NOTE: avoid reporting errors twice on advance/retreat\n this.lastErrOffset = -1;\n }\n /** The column on the current line. If we just saw a gap (eg. a surrogate pair), return the index before. */\n get col() {\n return this.pos - this.lineStartPos + Number(this.lastGapPos !== this.pos);\n }\n get offset() {\n return this.droppedBufferSize + this.pos;\n }\n getError(code, cpOffset) {\n const { line, col, offset } = this;\n const startCol = col + cpOffset;\n const startOffset = offset + cpOffset;\n return {\n code,\n startLine: line,\n endLine: line,\n startCol,\n endCol: startCol,\n startOffset,\n endOffset: startOffset,\n };\n }\n _err(code) {\n if (this.handler.onParseError && this.lastErrOffset !== this.offset) {\n this.lastErrOffset = this.offset;\n this.handler.onParseError(this.getError(code, 0));\n }\n }\n _addGap() {\n this.gapStack.push(this.lastGapPos);\n this.lastGapPos = this.pos;\n }\n _processSurrogate(cp) {\n //NOTE: try to peek a surrogate pair\n if (this.pos !== this.html.length - 1) {\n const nextCp = this.html.charCodeAt(this.pos + 1);\n if (isSurrogatePair(nextCp)) {\n //NOTE: we have a surrogate pair. Peek pair character and recalculate code point.\n this.pos++;\n //NOTE: add a gap that should be avoided during retreat\n this._addGap();\n return getSurrogatePairCodePoint(cp, nextCp);\n }\n }\n //NOTE: we are at the end of a chunk, therefore we can't infer the surrogate pair yet.\n else if (!this.lastChunkWritten) {\n this.endOfChunkHit = true;\n return $.EOF;\n }\n //NOTE: isolated surrogate\n this._err(ERR.surrogateInInputStream);\n return cp;\n }\n willDropParsedChunk() {\n return this.pos > this.bufferWaterline;\n }\n dropParsedChunk() {\n if (this.willDropParsedChunk()) {\n this.html = this.html.substring(this.pos);\n this.lineStartPos -= this.pos;\n this.droppedBufferSize += this.pos;\n this.pos = 0;\n this.lastGapPos = -2;\n this.gapStack.length = 0;\n }\n }\n write(chunk, isLastChunk) {\n if (this.html.length > 0) {\n this.html += chunk;\n }\n else {\n this.html = chunk;\n }\n this.endOfChunkHit = false;\n this.lastChunkWritten = isLastChunk;\n }\n insertHtmlAtCurrentPos(chunk) {\n this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1);\n this.endOfChunkHit = false;\n }\n startsWith(pattern, caseSensitive) {\n // Check if our buffer has enough characters\n if (this.pos + pattern.length > this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return false;\n }\n if (caseSensitive) {\n return this.html.startsWith(pattern, this.pos);\n }\n for (let i = 0; i < pattern.length; i++) {\n const cp = this.html.charCodeAt(this.pos + i) | 0x20;\n if (cp !== pattern.charCodeAt(i)) {\n return false;\n }\n }\n return true;\n }\n peek(offset) {\n const pos = this.pos + offset;\n if (pos >= this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return $.EOF;\n }\n const code = this.html.charCodeAt(pos);\n return code === $.CARRIAGE_RETURN ? $.LINE_FEED : code;\n }\n advance() {\n this.pos++;\n //NOTE: LF should be in the last column of the line\n if (this.isEol) {\n this.isEol = false;\n this.line++;\n this.lineStartPos = this.pos;\n }\n if (this.pos >= this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return $.EOF;\n }\n let cp = this.html.charCodeAt(this.pos);\n //NOTE: all U+000D CARRIAGE RETURN (CR) characters must be converted to U+000A LINE FEED (LF) characters\n if (cp === $.CARRIAGE_RETURN) {\n this.isEol = true;\n this.skipNextNewLine = true;\n return $.LINE_FEED;\n }\n //NOTE: any U+000A LINE FEED (LF) characters that immediately follow a U+000D CARRIAGE RETURN (CR) character\n //must be ignored.\n if (cp === $.LINE_FEED) {\n this.isEol = true;\n if (this.skipNextNewLine) {\n // `line` will be bumped again in the recursive call.\n this.line--;\n this.skipNextNewLine = false;\n this._addGap();\n return this.advance();\n }\n }\n this.skipNextNewLine = false;\n if (isSurrogate(cp)) {\n cp = this._processSurrogate(cp);\n }\n //OPTIMIZATION: first check if code point is in the common allowed\n //range (ASCII alphanumeric, whitespaces, big chunk of BMP)\n //before going into detailed performance cost validation.\n const isCommonValidRange = this.handler.onParseError === null ||\n (cp > 0x1f && cp < 0x7f) ||\n cp === $.LINE_FEED ||\n cp === $.CARRIAGE_RETURN ||\n (cp > 0x9f && cp < 64976);\n if (!isCommonValidRange) {\n this._checkForProblematicCharacters(cp);\n }\n return cp;\n }\n _checkForProblematicCharacters(cp) {\n if (isControlCodePoint(cp)) {\n this._err(ERR.controlCharacterInInputStream);\n }\n else if (isUndefinedCodePoint(cp)) {\n this._err(ERR.noncharacterInInputStream);\n }\n }\n retreat(count) {\n this.pos -= count;\n while (this.pos < this.lastGapPos) {\n this.lastGapPos = this.gapStack.pop();\n this.pos--;\n }\n this.isEol = false;\n }\n}\n",
52
- "export var TokenType;\n(function (TokenType) {\n TokenType[TokenType[\"CHARACTER\"] = 0] = \"CHARACTER\";\n TokenType[TokenType[\"NULL_CHARACTER\"] = 1] = \"NULL_CHARACTER\";\n TokenType[TokenType[\"WHITESPACE_CHARACTER\"] = 2] = \"WHITESPACE_CHARACTER\";\n TokenType[TokenType[\"START_TAG\"] = 3] = \"START_TAG\";\n TokenType[TokenType[\"END_TAG\"] = 4] = \"END_TAG\";\n TokenType[TokenType[\"COMMENT\"] = 5] = \"COMMENT\";\n TokenType[TokenType[\"DOCTYPE\"] = 6] = \"DOCTYPE\";\n TokenType[TokenType[\"EOF\"] = 7] = \"EOF\";\n TokenType[TokenType[\"HIBERNATION\"] = 8] = \"HIBERNATION\";\n})(TokenType || (TokenType = {}));\nexport function getTokenAttr(token, attrName) {\n for (let i = token.attrs.length - 1; i >= 0; i--) {\n if (token.attrs[i].name === attrName) {\n return token.attrs[i].value;\n }\n }\n return null;\n}\n",
53
- "// Generated using scripts/write-decode-map.ts\nexport const htmlDecodeTree = /* #__PURE__ */ new Uint16Array(\n// prettier-ignore\n/* #__PURE__ */ \"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-html.js.map",
54
- "// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n [0, 65533],\n // C1 Unicode control character reference replacements\n [128, 8364],\n [130, 8218],\n [131, 402],\n [132, 8222],\n [133, 8230],\n [134, 8224],\n [135, 8225],\n [136, 710],\n [137, 8240],\n [138, 352],\n [139, 8249],\n [140, 338],\n [142, 381],\n [145, 8216],\n [146, 8217],\n [147, 8220],\n [148, 8221],\n [149, 8226],\n [150, 8211],\n [151, 8212],\n [152, 732],\n [153, 8482],\n [154, 353],\n [155, 8250],\n [156, 339],\n [158, 382],\n [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n let output = \"\";\n if (codePoint > 65535) {\n codePoint -= 65536;\n output += String.fromCharCode(((codePoint >>> 10) & 1023) | 55296);\n codePoint = 56320 | (codePoint & 1023);\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint) {\n var _a;\n if ((codePoint >= 55296 && codePoint <= 57343) ||\n codePoint > 1114111) {\n return 65533;\n }\n return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport function decodeCodePoint(codePoint) {\n return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode-codepoint.js.map",
55
- "import { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nimport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nimport { replaceCodePoint, fromCodePoint } from \"./decode-codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 32;\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nexport var DecodingMode;\n(function (DecodingMode) {\n /** Entities in text nodes that can end with any character. */\n DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */\n DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */\n DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n constructor(\n /** The tree used to decode entities. */\n decodeTree, \n /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */\n emitCodePoint, \n /** An object that is used to produce errors. */\n errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */\n this.state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */\n this.result = 0;\n /** The current index in the decode tree. */\n this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n this.excess = 1;\n /** The mode in which the decoder is operating. */\n this.decodeMode = DecodingMode.Strict;\n }\n /** Resets the instance to make it reusable. */\n startEntity(decodeMode) {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n }\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n write(input, offset) {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (input.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(input, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(input, offset);\n }\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(input, offset);\n }\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(input, offset);\n }\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(input, offset);\n }\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(input, offset);\n }\n }\n }\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericStart(input, offset) {\n if (offset >= input.length) {\n return -1;\n }\n if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(input, offset + 1);\n }\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(input, offset);\n }\n addToNumericResult(input, start, end, base) {\n if (start !== end) {\n const digitCount = end - start;\n this.result =\n this.result * Math.pow(base, digitCount) +\n Number.parseInt(input.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n }\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericHex(input, offset) {\n const startIndex = offset;\n while (offset < input.length) {\n const char = input.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(input, startIndex, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(input, startIndex, offset, 16);\n return -1;\n }\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericDecimal(input, offset) {\n const startIndex = offset;\n while (offset < input.length) {\n const char = input.charCodeAt(offset);\n if (isNumber(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(input, startIndex, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(input, startIndex, offset, 10);\n return -1;\n }\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n emitNumericEntity(lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n }\n else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n }\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNamedEntity(input, offset) {\n const { decodeTree } = this;\n let current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n for (; offset < input.length; offset++, this.excess++) {\n const char = input.charCodeAt(offset);\n this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) {\n return this.result === 0 ||\n // If we are parsing an attribute\n (this.decodeMode === DecodingMode.Attribute &&\n // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 ||\n // And there should be no invalid characters.\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n }\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n }\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */\n emitNotTerminatedNamedEntity() {\n var _a;\n const { result, decodeTree } = this;\n const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n }\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */\n emitNamedEntityData(result, valueLength, consumed) {\n const { decodeTree } = this;\n this.emitCodePoint(valueLength === 1\n ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n : decodeTree[result + 1], consumed);\n if (valueLength === 3) {\n // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n return consumed;\n }\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */\n end() {\n var _a;\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n case EntityDecoderState.EntityStart: {\n // Return 0 if we have no entity.\n return 0;\n }\n }\n }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n let returnValue = \"\";\n const decoder = new EntityDecoder(decodeTree, (data) => (returnValue += fromCodePoint(data)));\n return function decodeWithTrie(input, decodeMode) {\n let lastIndex = 0;\n let offset = 0;\n while ((offset = input.indexOf(\"&\", offset)) >= 0) {\n returnValue += input.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n const length = decoder.write(input, \n // Skip the \"&\"\n offset + 1);\n if (length < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + length;\n // If `length` is 0, skip the current `&` and continue.\n offset = length === 0 ? lastIndex + 1 : lastIndex;\n }\n const result = returnValue + input.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n returnValue = \"\";\n return result;\n };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIndex, char) {\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;\n }\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n const value = char - jumpOffset;\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIndex + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n let lo = nodeIndex;\n let hi = lo + branchCount - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const midValue = decodeTree[mid];\n if (midValue < char) {\n lo = mid + 1;\n }\n else if (midValue > char) {\n hi = mid - 1;\n }\n else {\n return decodeTree[mid + branchCount];\n }\n }\n return -1;\n}\nconst htmlDecoder = /* #__PURE__ */ getDecoder(htmlDecodeTree);\nconst xmlDecoder = /* #__PURE__ */ getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param htmlString The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(htmlString, mode = DecodingMode.Legacy) {\n return htmlDecoder(htmlString, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param htmlAttribute The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(htmlAttribute) {\n return htmlDecoder(htmlAttribute, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param htmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(htmlString) {\n return htmlDecoder(htmlString, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param xmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(xmlString) {\n return xmlDecoder(xmlString, DecodingMode.Strict);\n}\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nexport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nexport { decodeCodePoint, replaceCodePoint, fromCodePoint, } from \"./decode-codepoint.js\";\n//# sourceMappingURL=decode.js.map",
56
- "/** All valid namespaces in HTML. */\nexport var NS;\n(function (NS) {\n NS[\"HTML\"] = \"http://www.w3.org/1999/xhtml\";\n NS[\"MATHML\"] = \"http://www.w3.org/1998/Math/MathML\";\n NS[\"SVG\"] = \"http://www.w3.org/2000/svg\";\n NS[\"XLINK\"] = \"http://www.w3.org/1999/xlink\";\n NS[\"XML\"] = \"http://www.w3.org/XML/1998/namespace\";\n NS[\"XMLNS\"] = \"http://www.w3.org/2000/xmlns/\";\n})(NS || (NS = {}));\nexport var ATTRS;\n(function (ATTRS) {\n ATTRS[\"TYPE\"] = \"type\";\n ATTRS[\"ACTION\"] = \"action\";\n ATTRS[\"ENCODING\"] = \"encoding\";\n ATTRS[\"PROMPT\"] = \"prompt\";\n ATTRS[\"NAME\"] = \"name\";\n ATTRS[\"COLOR\"] = \"color\";\n ATTRS[\"FACE\"] = \"face\";\n ATTRS[\"SIZE\"] = \"size\";\n})(ATTRS || (ATTRS = {}));\n/**\n * The mode of the document.\n *\n * @see {@link https://dom.spec.whatwg.org/#concept-document-limited-quirks}\n */\nexport var DOCUMENT_MODE;\n(function (DOCUMENT_MODE) {\n DOCUMENT_MODE[\"NO_QUIRKS\"] = \"no-quirks\";\n DOCUMENT_MODE[\"QUIRKS\"] = \"quirks\";\n DOCUMENT_MODE[\"LIMITED_QUIRKS\"] = \"limited-quirks\";\n})(DOCUMENT_MODE || (DOCUMENT_MODE = {}));\nexport var TAG_NAMES;\n(function (TAG_NAMES) {\n TAG_NAMES[\"A\"] = \"a\";\n TAG_NAMES[\"ADDRESS\"] = \"address\";\n TAG_NAMES[\"ANNOTATION_XML\"] = \"annotation-xml\";\n TAG_NAMES[\"APPLET\"] = \"applet\";\n TAG_NAMES[\"AREA\"] = \"area\";\n TAG_NAMES[\"ARTICLE\"] = \"article\";\n TAG_NAMES[\"ASIDE\"] = \"aside\";\n TAG_NAMES[\"B\"] = \"b\";\n TAG_NAMES[\"BASE\"] = \"base\";\n TAG_NAMES[\"BASEFONT\"] = \"basefont\";\n TAG_NAMES[\"BGSOUND\"] = \"bgsound\";\n TAG_NAMES[\"BIG\"] = \"big\";\n TAG_NAMES[\"BLOCKQUOTE\"] = \"blockquote\";\n TAG_NAMES[\"BODY\"] = \"body\";\n TAG_NAMES[\"BR\"] = \"br\";\n TAG_NAMES[\"BUTTON\"] = \"button\";\n TAG_NAMES[\"CAPTION\"] = \"caption\";\n TAG_NAMES[\"CENTER\"] = \"center\";\n TAG_NAMES[\"CODE\"] = \"code\";\n TAG_NAMES[\"COL\"] = \"col\";\n TAG_NAMES[\"COLGROUP\"] = \"colgroup\";\n TAG_NAMES[\"DD\"] = \"dd\";\n TAG_NAMES[\"DESC\"] = \"desc\";\n TAG_NAMES[\"DETAILS\"] = \"details\";\n TAG_NAMES[\"DIALOG\"] = \"dialog\";\n TAG_NAMES[\"DIR\"] = \"dir\";\n TAG_NAMES[\"DIV\"] = \"div\";\n TAG_NAMES[\"DL\"] = \"dl\";\n TAG_NAMES[\"DT\"] = \"dt\";\n TAG_NAMES[\"EM\"] = \"em\";\n TAG_NAMES[\"EMBED\"] = \"embed\";\n TAG_NAMES[\"FIELDSET\"] = \"fieldset\";\n TAG_NAMES[\"FIGCAPTION\"] = \"figcaption\";\n TAG_NAMES[\"FIGURE\"] = \"figure\";\n TAG_NAMES[\"FONT\"] = \"font\";\n TAG_NAMES[\"FOOTER\"] = \"footer\";\n TAG_NAMES[\"FOREIGN_OBJECT\"] = \"foreignObject\";\n TAG_NAMES[\"FORM\"] = \"form\";\n TAG_NAMES[\"FRAME\"] = \"frame\";\n TAG_NAMES[\"FRAMESET\"] = \"frameset\";\n TAG_NAMES[\"H1\"] = \"h1\";\n TAG_NAMES[\"H2\"] = \"h2\";\n TAG_NAMES[\"H3\"] = \"h3\";\n TAG_NAMES[\"H4\"] = \"h4\";\n TAG_NAMES[\"H5\"] = \"h5\";\n TAG_NAMES[\"H6\"] = \"h6\";\n TAG_NAMES[\"HEAD\"] = \"head\";\n TAG_NAMES[\"HEADER\"] = \"header\";\n TAG_NAMES[\"HGROUP\"] = \"hgroup\";\n TAG_NAMES[\"HR\"] = \"hr\";\n TAG_NAMES[\"HTML\"] = \"html\";\n TAG_NAMES[\"I\"] = \"i\";\n TAG_NAMES[\"IMG\"] = \"img\";\n TAG_NAMES[\"IMAGE\"] = \"image\";\n TAG_NAMES[\"INPUT\"] = \"input\";\n TAG_NAMES[\"IFRAME\"] = \"iframe\";\n TAG_NAMES[\"KEYGEN\"] = \"keygen\";\n TAG_NAMES[\"LABEL\"] = \"label\";\n TAG_NAMES[\"LI\"] = \"li\";\n TAG_NAMES[\"LINK\"] = \"link\";\n TAG_NAMES[\"LISTING\"] = \"listing\";\n TAG_NAMES[\"MAIN\"] = \"main\";\n TAG_NAMES[\"MALIGNMARK\"] = \"malignmark\";\n TAG_NAMES[\"MARQUEE\"] = \"marquee\";\n TAG_NAMES[\"MATH\"] = \"math\";\n TAG_NAMES[\"MENU\"] = \"menu\";\n TAG_NAMES[\"META\"] = \"meta\";\n TAG_NAMES[\"MGLYPH\"] = \"mglyph\";\n TAG_NAMES[\"MI\"] = \"mi\";\n TAG_NAMES[\"MO\"] = \"mo\";\n TAG_NAMES[\"MN\"] = \"mn\";\n TAG_NAMES[\"MS\"] = \"ms\";\n TAG_NAMES[\"MTEXT\"] = \"mtext\";\n TAG_NAMES[\"NAV\"] = \"nav\";\n TAG_NAMES[\"NOBR\"] = \"nobr\";\n TAG_NAMES[\"NOFRAMES\"] = \"noframes\";\n TAG_NAMES[\"NOEMBED\"] = \"noembed\";\n TAG_NAMES[\"NOSCRIPT\"] = \"noscript\";\n TAG_NAMES[\"OBJECT\"] = \"object\";\n TAG_NAMES[\"OL\"] = \"ol\";\n TAG_NAMES[\"OPTGROUP\"] = \"optgroup\";\n TAG_NAMES[\"OPTION\"] = \"option\";\n TAG_NAMES[\"P\"] = \"p\";\n TAG_NAMES[\"PARAM\"] = \"param\";\n TAG_NAMES[\"PLAINTEXT\"] = \"plaintext\";\n TAG_NAMES[\"PRE\"] = \"pre\";\n TAG_NAMES[\"RB\"] = \"rb\";\n TAG_NAMES[\"RP\"] = \"rp\";\n TAG_NAMES[\"RT\"] = \"rt\";\n TAG_NAMES[\"RTC\"] = \"rtc\";\n TAG_NAMES[\"RUBY\"] = \"ruby\";\n TAG_NAMES[\"S\"] = \"s\";\n TAG_NAMES[\"SCRIPT\"] = \"script\";\n TAG_NAMES[\"SEARCH\"] = \"search\";\n TAG_NAMES[\"SECTION\"] = \"section\";\n TAG_NAMES[\"SELECT\"] = \"select\";\n TAG_NAMES[\"SOURCE\"] = \"source\";\n TAG_NAMES[\"SMALL\"] = \"small\";\n TAG_NAMES[\"SPAN\"] = \"span\";\n TAG_NAMES[\"STRIKE\"] = \"strike\";\n TAG_NAMES[\"STRONG\"] = \"strong\";\n TAG_NAMES[\"STYLE\"] = \"style\";\n TAG_NAMES[\"SUB\"] = \"sub\";\n TAG_NAMES[\"SUMMARY\"] = \"summary\";\n TAG_NAMES[\"SUP\"] = \"sup\";\n TAG_NAMES[\"TABLE\"] = \"table\";\n TAG_NAMES[\"TBODY\"] = \"tbody\";\n TAG_NAMES[\"TEMPLATE\"] = \"template\";\n TAG_NAMES[\"TEXTAREA\"] = \"textarea\";\n TAG_NAMES[\"TFOOT\"] = \"tfoot\";\n TAG_NAMES[\"TD\"] = \"td\";\n TAG_NAMES[\"TH\"] = \"th\";\n TAG_NAMES[\"THEAD\"] = \"thead\";\n TAG_NAMES[\"TITLE\"] = \"title\";\n TAG_NAMES[\"TR\"] = \"tr\";\n TAG_NAMES[\"TRACK\"] = \"track\";\n TAG_NAMES[\"TT\"] = \"tt\";\n TAG_NAMES[\"U\"] = \"u\";\n TAG_NAMES[\"UL\"] = \"ul\";\n TAG_NAMES[\"SVG\"] = \"svg\";\n TAG_NAMES[\"VAR\"] = \"var\";\n TAG_NAMES[\"WBR\"] = \"wbr\";\n TAG_NAMES[\"XMP\"] = \"xmp\";\n})(TAG_NAMES || (TAG_NAMES = {}));\n/**\n * Tag IDs are numeric IDs for known tag names.\n *\n * We use tag IDs to improve the performance of tag name comparisons.\n */\nexport var TAG_ID;\n(function (TAG_ID) {\n TAG_ID[TAG_ID[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n TAG_ID[TAG_ID[\"A\"] = 1] = \"A\";\n TAG_ID[TAG_ID[\"ADDRESS\"] = 2] = \"ADDRESS\";\n TAG_ID[TAG_ID[\"ANNOTATION_XML\"] = 3] = \"ANNOTATION_XML\";\n TAG_ID[TAG_ID[\"APPLET\"] = 4] = \"APPLET\";\n TAG_ID[TAG_ID[\"AREA\"] = 5] = \"AREA\";\n TAG_ID[TAG_ID[\"ARTICLE\"] = 6] = \"ARTICLE\";\n TAG_ID[TAG_ID[\"ASIDE\"] = 7] = \"ASIDE\";\n TAG_ID[TAG_ID[\"B\"] = 8] = \"B\";\n TAG_ID[TAG_ID[\"BASE\"] = 9] = \"BASE\";\n TAG_ID[TAG_ID[\"BASEFONT\"] = 10] = \"BASEFONT\";\n TAG_ID[TAG_ID[\"BGSOUND\"] = 11] = \"BGSOUND\";\n TAG_ID[TAG_ID[\"BIG\"] = 12] = \"BIG\";\n TAG_ID[TAG_ID[\"BLOCKQUOTE\"] = 13] = \"BLOCKQUOTE\";\n TAG_ID[TAG_ID[\"BODY\"] = 14] = \"BODY\";\n TAG_ID[TAG_ID[\"BR\"] = 15] = \"BR\";\n TAG_ID[TAG_ID[\"BUTTON\"] = 16] = \"BUTTON\";\n TAG_ID[TAG_ID[\"CAPTION\"] = 17] = \"CAPTION\";\n TAG_ID[TAG_ID[\"CENTER\"] = 18] = \"CENTER\";\n TAG_ID[TAG_ID[\"CODE\"] = 19] = \"CODE\";\n TAG_ID[TAG_ID[\"COL\"] = 20] = \"COL\";\n TAG_ID[TAG_ID[\"COLGROUP\"] = 21] = \"COLGROUP\";\n TAG_ID[TAG_ID[\"DD\"] = 22] = \"DD\";\n TAG_ID[TAG_ID[\"DESC\"] = 23] = \"DESC\";\n TAG_ID[TAG_ID[\"DETAILS\"] = 24] = \"DETAILS\";\n TAG_ID[TAG_ID[\"DIALOG\"] = 25] = \"DIALOG\";\n TAG_ID[TAG_ID[\"DIR\"] = 26] = \"DIR\";\n TAG_ID[TAG_ID[\"DIV\"] = 27] = \"DIV\";\n TAG_ID[TAG_ID[\"DL\"] = 28] = \"DL\";\n TAG_ID[TAG_ID[\"DT\"] = 29] = \"DT\";\n TAG_ID[TAG_ID[\"EM\"] = 30] = \"EM\";\n TAG_ID[TAG_ID[\"EMBED\"] = 31] = \"EMBED\";\n TAG_ID[TAG_ID[\"FIELDSET\"] = 32] = \"FIELDSET\";\n TAG_ID[TAG_ID[\"FIGCAPTION\"] = 33] = \"FIGCAPTION\";\n TAG_ID[TAG_ID[\"FIGURE\"] = 34] = \"FIGURE\";\n TAG_ID[TAG_ID[\"FONT\"] = 35] = \"FONT\";\n TAG_ID[TAG_ID[\"FOOTER\"] = 36] = \"FOOTER\";\n TAG_ID[TAG_ID[\"FOREIGN_OBJECT\"] = 37] = \"FOREIGN_OBJECT\";\n TAG_ID[TAG_ID[\"FORM\"] = 38] = \"FORM\";\n TAG_ID[TAG_ID[\"FRAME\"] = 39] = \"FRAME\";\n TAG_ID[TAG_ID[\"FRAMESET\"] = 40] = \"FRAMESET\";\n TAG_ID[TAG_ID[\"H1\"] = 41] = \"H1\";\n TAG_ID[TAG_ID[\"H2\"] = 42] = \"H2\";\n TAG_ID[TAG_ID[\"H3\"] = 43] = \"H3\";\n TAG_ID[TAG_ID[\"H4\"] = 44] = \"H4\";\n TAG_ID[TAG_ID[\"H5\"] = 45] = \"H5\";\n TAG_ID[TAG_ID[\"H6\"] = 46] = \"H6\";\n TAG_ID[TAG_ID[\"HEAD\"] = 47] = \"HEAD\";\n TAG_ID[TAG_ID[\"HEADER\"] = 48] = \"HEADER\";\n TAG_ID[TAG_ID[\"HGROUP\"] = 49] = \"HGROUP\";\n TAG_ID[TAG_ID[\"HR\"] = 50] = \"HR\";\n TAG_ID[TAG_ID[\"HTML\"] = 51] = \"HTML\";\n TAG_ID[TAG_ID[\"I\"] = 52] = \"I\";\n TAG_ID[TAG_ID[\"IMG\"] = 53] = \"IMG\";\n TAG_ID[TAG_ID[\"IMAGE\"] = 54] = \"IMAGE\";\n TAG_ID[TAG_ID[\"INPUT\"] = 55] = \"INPUT\";\n TAG_ID[TAG_ID[\"IFRAME\"] = 56] = \"IFRAME\";\n TAG_ID[TAG_ID[\"KEYGEN\"] = 57] = \"KEYGEN\";\n TAG_ID[TAG_ID[\"LABEL\"] = 58] = \"LABEL\";\n TAG_ID[TAG_ID[\"LI\"] = 59] = \"LI\";\n TAG_ID[TAG_ID[\"LINK\"] = 60] = \"LINK\";\n TAG_ID[TAG_ID[\"LISTING\"] = 61] = \"LISTING\";\n TAG_ID[TAG_ID[\"MAIN\"] = 62] = \"MAIN\";\n TAG_ID[TAG_ID[\"MALIGNMARK\"] = 63] = \"MALIGNMARK\";\n TAG_ID[TAG_ID[\"MARQUEE\"] = 64] = \"MARQUEE\";\n TAG_ID[TAG_ID[\"MATH\"] = 65] = \"MATH\";\n TAG_ID[TAG_ID[\"MENU\"] = 66] = \"MENU\";\n TAG_ID[TAG_ID[\"META\"] = 67] = \"META\";\n TAG_ID[TAG_ID[\"MGLYPH\"] = 68] = \"MGLYPH\";\n TAG_ID[TAG_ID[\"MI\"] = 69] = \"MI\";\n TAG_ID[TAG_ID[\"MO\"] = 70] = \"MO\";\n TAG_ID[TAG_ID[\"MN\"] = 71] = \"MN\";\n TAG_ID[TAG_ID[\"MS\"] = 72] = \"MS\";\n TAG_ID[TAG_ID[\"MTEXT\"] = 73] = \"MTEXT\";\n TAG_ID[TAG_ID[\"NAV\"] = 74] = \"NAV\";\n TAG_ID[TAG_ID[\"NOBR\"] = 75] = \"NOBR\";\n TAG_ID[TAG_ID[\"NOFRAMES\"] = 76] = \"NOFRAMES\";\n TAG_ID[TAG_ID[\"NOEMBED\"] = 77] = \"NOEMBED\";\n TAG_ID[TAG_ID[\"NOSCRIPT\"] = 78] = \"NOSCRIPT\";\n TAG_ID[TAG_ID[\"OBJECT\"] = 79] = \"OBJECT\";\n TAG_ID[TAG_ID[\"OL\"] = 80] = \"OL\";\n TAG_ID[TAG_ID[\"OPTGROUP\"] = 81] = \"OPTGROUP\";\n TAG_ID[TAG_ID[\"OPTION\"] = 82] = \"OPTION\";\n TAG_ID[TAG_ID[\"P\"] = 83] = \"P\";\n TAG_ID[TAG_ID[\"PARAM\"] = 84] = \"PARAM\";\n TAG_ID[TAG_ID[\"PLAINTEXT\"] = 85] = \"PLAINTEXT\";\n TAG_ID[TAG_ID[\"PRE\"] = 86] = \"PRE\";\n TAG_ID[TAG_ID[\"RB\"] = 87] = \"RB\";\n TAG_ID[TAG_ID[\"RP\"] = 88] = \"RP\";\n TAG_ID[TAG_ID[\"RT\"] = 89] = \"RT\";\n TAG_ID[TAG_ID[\"RTC\"] = 90] = \"RTC\";\n TAG_ID[TAG_ID[\"RUBY\"] = 91] = \"RUBY\";\n TAG_ID[TAG_ID[\"S\"] = 92] = \"S\";\n TAG_ID[TAG_ID[\"SCRIPT\"] = 93] = \"SCRIPT\";\n TAG_ID[TAG_ID[\"SEARCH\"] = 94] = \"SEARCH\";\n TAG_ID[TAG_ID[\"SECTION\"] = 95] = \"SECTION\";\n TAG_ID[TAG_ID[\"SELECT\"] = 96] = \"SELECT\";\n TAG_ID[TAG_ID[\"SOURCE\"] = 97] = \"SOURCE\";\n TAG_ID[TAG_ID[\"SMALL\"] = 98] = \"SMALL\";\n TAG_ID[TAG_ID[\"SPAN\"] = 99] = \"SPAN\";\n TAG_ID[TAG_ID[\"STRIKE\"] = 100] = \"STRIKE\";\n TAG_ID[TAG_ID[\"STRONG\"] = 101] = \"STRONG\";\n TAG_ID[TAG_ID[\"STYLE\"] = 102] = \"STYLE\";\n TAG_ID[TAG_ID[\"SUB\"] = 103] = \"SUB\";\n TAG_ID[TAG_ID[\"SUMMARY\"] = 104] = \"SUMMARY\";\n TAG_ID[TAG_ID[\"SUP\"] = 105] = \"SUP\";\n TAG_ID[TAG_ID[\"TABLE\"] = 106] = \"TABLE\";\n TAG_ID[TAG_ID[\"TBODY\"] = 107] = \"TBODY\";\n TAG_ID[TAG_ID[\"TEMPLATE\"] = 108] = \"TEMPLATE\";\n TAG_ID[TAG_ID[\"TEXTAREA\"] = 109] = \"TEXTAREA\";\n TAG_ID[TAG_ID[\"TFOOT\"] = 110] = \"TFOOT\";\n TAG_ID[TAG_ID[\"TD\"] = 111] = \"TD\";\n TAG_ID[TAG_ID[\"TH\"] = 112] = \"TH\";\n TAG_ID[TAG_ID[\"THEAD\"] = 113] = \"THEAD\";\n TAG_ID[TAG_ID[\"TITLE\"] = 114] = \"TITLE\";\n TAG_ID[TAG_ID[\"TR\"] = 115] = \"TR\";\n TAG_ID[TAG_ID[\"TRACK\"] = 116] = \"TRACK\";\n TAG_ID[TAG_ID[\"TT\"] = 117] = \"TT\";\n TAG_ID[TAG_ID[\"U\"] = 118] = \"U\";\n TAG_ID[TAG_ID[\"UL\"] = 119] = \"UL\";\n TAG_ID[TAG_ID[\"SVG\"] = 120] = \"SVG\";\n TAG_ID[TAG_ID[\"VAR\"] = 121] = \"VAR\";\n TAG_ID[TAG_ID[\"WBR\"] = 122] = \"WBR\";\n TAG_ID[TAG_ID[\"XMP\"] = 123] = \"XMP\";\n})(TAG_ID || (TAG_ID = {}));\nconst TAG_NAME_TO_ID = new Map([\n [TAG_NAMES.A, TAG_ID.A],\n [TAG_NAMES.ADDRESS, TAG_ID.ADDRESS],\n [TAG_NAMES.ANNOTATION_XML, TAG_ID.ANNOTATION_XML],\n [TAG_NAMES.APPLET, TAG_ID.APPLET],\n [TAG_NAMES.AREA, TAG_ID.AREA],\n [TAG_NAMES.ARTICLE, TAG_ID.ARTICLE],\n [TAG_NAMES.ASIDE, TAG_ID.ASIDE],\n [TAG_NAMES.B, TAG_ID.B],\n [TAG_NAMES.BASE, TAG_ID.BASE],\n [TAG_NAMES.BASEFONT, TAG_ID.BASEFONT],\n [TAG_NAMES.BGSOUND, TAG_ID.BGSOUND],\n [TAG_NAMES.BIG, TAG_ID.BIG],\n [TAG_NAMES.BLOCKQUOTE, TAG_ID.BLOCKQUOTE],\n [TAG_NAMES.BODY, TAG_ID.BODY],\n [TAG_NAMES.BR, TAG_ID.BR],\n [TAG_NAMES.BUTTON, TAG_ID.BUTTON],\n [TAG_NAMES.CAPTION, TAG_ID.CAPTION],\n [TAG_NAMES.CENTER, TAG_ID.CENTER],\n [TAG_NAMES.CODE, TAG_ID.CODE],\n [TAG_NAMES.COL, TAG_ID.COL],\n [TAG_NAMES.COLGROUP, TAG_ID.COLGROUP],\n [TAG_NAMES.DD, TAG_ID.DD],\n [TAG_NAMES.DESC, TAG_ID.DESC],\n [TAG_NAMES.DETAILS, TAG_ID.DETAILS],\n [TAG_NAMES.DIALOG, TAG_ID.DIALOG],\n [TAG_NAMES.DIR, TAG_ID.DIR],\n [TAG_NAMES.DIV, TAG_ID.DIV],\n [TAG_NAMES.DL, TAG_ID.DL],\n [TAG_NAMES.DT, TAG_ID.DT],\n [TAG_NAMES.EM, TAG_ID.EM],\n [TAG_NAMES.EMBED, TAG_ID.EMBED],\n [TAG_NAMES.FIELDSET, TAG_ID.FIELDSET],\n [TAG_NAMES.FIGCAPTION, TAG_ID.FIGCAPTION],\n [TAG_NAMES.FIGURE, TAG_ID.FIGURE],\n [TAG_NAMES.FONT, TAG_ID.FONT],\n [TAG_NAMES.FOOTER, TAG_ID.FOOTER],\n [TAG_NAMES.FOREIGN_OBJECT, TAG_ID.FOREIGN_OBJECT],\n [TAG_NAMES.FORM, TAG_ID.FORM],\n [TAG_NAMES.FRAME, TAG_ID.FRAME],\n [TAG_NAMES.FRAMESET, TAG_ID.FRAMESET],\n [TAG_NAMES.H1, TAG_ID.H1],\n [TAG_NAMES.H2, TAG_ID.H2],\n [TAG_NAMES.H3, TAG_ID.H3],\n [TAG_NAMES.H4, TAG_ID.H4],\n [TAG_NAMES.H5, TAG_ID.H5],\n [TAG_NAMES.H6, TAG_ID.H6],\n [TAG_NAMES.HEAD, TAG_ID.HEAD],\n [TAG_NAMES.HEADER, TAG_ID.HEADER],\n [TAG_NAMES.HGROUP, TAG_ID.HGROUP],\n [TAG_NAMES.HR, TAG_ID.HR],\n [TAG_NAMES.HTML, TAG_ID.HTML],\n [TAG_NAMES.I, TAG_ID.I],\n [TAG_NAMES.IMG, TAG_ID.IMG],\n [TAG_NAMES.IMAGE, TAG_ID.IMAGE],\n [TAG_NAMES.INPUT, TAG_ID.INPUT],\n [TAG_NAMES.IFRAME, TAG_ID.IFRAME],\n [TAG_NAMES.KEYGEN, TAG_ID.KEYGEN],\n [TAG_NAMES.LABEL, TAG_ID.LABEL],\n [TAG_NAMES.LI, TAG_ID.LI],\n [TAG_NAMES.LINK, TAG_ID.LINK],\n [TAG_NAMES.LISTING, TAG_ID.LISTING],\n [TAG_NAMES.MAIN, TAG_ID.MAIN],\n [TAG_NAMES.MALIGNMARK, TAG_ID.MALIGNMARK],\n [TAG_NAMES.MARQUEE, TAG_ID.MARQUEE],\n [TAG_NAMES.MATH, TAG_ID.MATH],\n [TAG_NAMES.MENU, TAG_ID.MENU],\n [TAG_NAMES.META, TAG_ID.META],\n [TAG_NAMES.MGLYPH, TAG_ID.MGLYPH],\n [TAG_NAMES.MI, TAG_ID.MI],\n [TAG_NAMES.MO, TAG_ID.MO],\n [TAG_NAMES.MN, TAG_ID.MN],\n [TAG_NAMES.MS, TAG_ID.MS],\n [TAG_NAMES.MTEXT, TAG_ID.MTEXT],\n [TAG_NAMES.NAV, TAG_ID.NAV],\n [TAG_NAMES.NOBR, TAG_ID.NOBR],\n [TAG_NAMES.NOFRAMES, TAG_ID.NOFRAMES],\n [TAG_NAMES.NOEMBED, TAG_ID.NOEMBED],\n [TAG_NAMES.NOSCRIPT, TAG_ID.NOSCRIPT],\n [TAG_NAMES.OBJECT, TAG_ID.OBJECT],\n [TAG_NAMES.OL, TAG_ID.OL],\n [TAG_NAMES.OPTGROUP, TAG_ID.OPTGROUP],\n [TAG_NAMES.OPTION, TAG_ID.OPTION],\n [TAG_NAMES.P, TAG_ID.P],\n [TAG_NAMES.PARAM, TAG_ID.PARAM],\n [TAG_NAMES.PLAINTEXT, TAG_ID.PLAINTEXT],\n [TAG_NAMES.PRE, TAG_ID.PRE],\n [TAG_NAMES.RB, TAG_ID.RB],\n [TAG_NAMES.RP, TAG_ID.RP],\n [TAG_NAMES.RT, TAG_ID.RT],\n [TAG_NAMES.RTC, TAG_ID.RTC],\n [TAG_NAMES.RUBY, TAG_ID.RUBY],\n [TAG_NAMES.S, TAG_ID.S],\n [TAG_NAMES.SCRIPT, TAG_ID.SCRIPT],\n [TAG_NAMES.SEARCH, TAG_ID.SEARCH],\n [TAG_NAMES.SECTION, TAG_ID.SECTION],\n [TAG_NAMES.SELECT, TAG_ID.SELECT],\n [TAG_NAMES.SOURCE, TAG_ID.SOURCE],\n [TAG_NAMES.SMALL, TAG_ID.SMALL],\n [TAG_NAMES.SPAN, TAG_ID.SPAN],\n [TAG_NAMES.STRIKE, TAG_ID.STRIKE],\n [TAG_NAMES.STRONG, TAG_ID.STRONG],\n [TAG_NAMES.STYLE, TAG_ID.STYLE],\n [TAG_NAMES.SUB, TAG_ID.SUB],\n [TAG_NAMES.SUMMARY, TAG_ID.SUMMARY],\n [TAG_NAMES.SUP, TAG_ID.SUP],\n [TAG_NAMES.TABLE, TAG_ID.TABLE],\n [TAG_NAMES.TBODY, TAG_ID.TBODY],\n [TAG_NAMES.TEMPLATE, TAG_ID.TEMPLATE],\n [TAG_NAMES.TEXTAREA, TAG_ID.TEXTAREA],\n [TAG_NAMES.TFOOT, TAG_ID.TFOOT],\n [TAG_NAMES.TD, TAG_ID.TD],\n [TAG_NAMES.TH, TAG_ID.TH],\n [TAG_NAMES.THEAD, TAG_ID.THEAD],\n [TAG_NAMES.TITLE, TAG_ID.TITLE],\n [TAG_NAMES.TR, TAG_ID.TR],\n [TAG_NAMES.TRACK, TAG_ID.TRACK],\n [TAG_NAMES.TT, TAG_ID.TT],\n [TAG_NAMES.U, TAG_ID.U],\n [TAG_NAMES.UL, TAG_ID.UL],\n [TAG_NAMES.SVG, TAG_ID.SVG],\n [TAG_NAMES.VAR, TAG_ID.VAR],\n [TAG_NAMES.WBR, TAG_ID.WBR],\n [TAG_NAMES.XMP, TAG_ID.XMP],\n]);\nexport function getTagID(tagName) {\n var _a;\n return (_a = TAG_NAME_TO_ID.get(tagName)) !== null && _a !== void 0 ? _a : TAG_ID.UNKNOWN;\n}\nconst $ = TAG_ID;\nexport const SPECIAL_ELEMENTS = {\n [NS.HTML]: new Set([\n $.ADDRESS,\n $.APPLET,\n $.AREA,\n $.ARTICLE,\n $.ASIDE,\n $.BASE,\n $.BASEFONT,\n $.BGSOUND,\n $.BLOCKQUOTE,\n $.BODY,\n $.BR,\n $.BUTTON,\n $.CAPTION,\n $.CENTER,\n $.COL,\n $.COLGROUP,\n $.DD,\n $.DETAILS,\n $.DIR,\n $.DIV,\n $.DL,\n $.DT,\n $.EMBED,\n $.FIELDSET,\n $.FIGCAPTION,\n $.FIGURE,\n $.FOOTER,\n $.FORM,\n $.FRAME,\n $.FRAMESET,\n $.H1,\n $.H2,\n $.H3,\n $.H4,\n $.H5,\n $.H6,\n $.HEAD,\n $.HEADER,\n $.HGROUP,\n $.HR,\n $.HTML,\n $.IFRAME,\n $.IMG,\n $.INPUT,\n $.LI,\n $.LINK,\n $.LISTING,\n $.MAIN,\n $.MARQUEE,\n $.MENU,\n $.META,\n $.NAV,\n $.NOEMBED,\n $.NOFRAMES,\n $.NOSCRIPT,\n $.OBJECT,\n $.OL,\n $.P,\n $.PARAM,\n $.PLAINTEXT,\n $.PRE,\n $.SCRIPT,\n $.SECTION,\n $.SELECT,\n $.SOURCE,\n $.STYLE,\n $.SUMMARY,\n $.TABLE,\n $.TBODY,\n $.TD,\n $.TEMPLATE,\n $.TEXTAREA,\n $.TFOOT,\n $.TH,\n $.THEAD,\n $.TITLE,\n $.TR,\n $.TRACK,\n $.UL,\n $.WBR,\n $.XMP,\n ]),\n [NS.MATHML]: new Set([$.MI, $.MO, $.MN, $.MS, $.MTEXT, $.ANNOTATION_XML]),\n [NS.SVG]: new Set([$.TITLE, $.FOREIGN_OBJECT, $.DESC]),\n [NS.XLINK]: new Set(),\n [NS.XML]: new Set(),\n [NS.XMLNS]: new Set(),\n};\nexport const NUMBERED_HEADERS = new Set([$.H1, $.H2, $.H3, $.H4, $.H5, $.H6]);\nconst UNESCAPED_TEXT = new Set([\n TAG_NAMES.STYLE,\n TAG_NAMES.SCRIPT,\n TAG_NAMES.XMP,\n TAG_NAMES.IFRAME,\n TAG_NAMES.NOEMBED,\n TAG_NAMES.NOFRAMES,\n TAG_NAMES.PLAINTEXT,\n]);\nexport function hasUnescapedText(tn, scriptingEnabled) {\n return UNESCAPED_TEXT.has(tn) || (scriptingEnabled && tn === TAG_NAMES.NOSCRIPT);\n}\n",
57
- "import { Preprocessor } from './preprocessor.js';\nimport { CODE_POINTS as $, SEQUENCES as $$, REPLACEMENT_CHARACTER, isSurrogate, isUndefinedCodePoint, isControlCodePoint, } from '../common/unicode.js';\nimport { TokenType, getTokenAttr, } from '../common/token.js';\nimport { htmlDecodeTree, EntityDecoder, DecodingMode } from 'entities/decode';\nimport { ERR } from '../common/error-codes.js';\nimport { TAG_ID, getTagID } from '../common/html.js';\n//States\nvar State;\n(function (State) {\n State[State[\"DATA\"] = 0] = \"DATA\";\n State[State[\"RCDATA\"] = 1] = \"RCDATA\";\n State[State[\"RAWTEXT\"] = 2] = \"RAWTEXT\";\n State[State[\"SCRIPT_DATA\"] = 3] = \"SCRIPT_DATA\";\n State[State[\"PLAINTEXT\"] = 4] = \"PLAINTEXT\";\n State[State[\"TAG_OPEN\"] = 5] = \"TAG_OPEN\";\n State[State[\"END_TAG_OPEN\"] = 6] = \"END_TAG_OPEN\";\n State[State[\"TAG_NAME\"] = 7] = \"TAG_NAME\";\n State[State[\"RCDATA_LESS_THAN_SIGN\"] = 8] = \"RCDATA_LESS_THAN_SIGN\";\n State[State[\"RCDATA_END_TAG_OPEN\"] = 9] = \"RCDATA_END_TAG_OPEN\";\n State[State[\"RCDATA_END_TAG_NAME\"] = 10] = \"RCDATA_END_TAG_NAME\";\n State[State[\"RAWTEXT_LESS_THAN_SIGN\"] = 11] = \"RAWTEXT_LESS_THAN_SIGN\";\n State[State[\"RAWTEXT_END_TAG_OPEN\"] = 12] = \"RAWTEXT_END_TAG_OPEN\";\n State[State[\"RAWTEXT_END_TAG_NAME\"] = 13] = \"RAWTEXT_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_LESS_THAN_SIGN\"] = 14] = \"SCRIPT_DATA_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_END_TAG_OPEN\"] = 15] = \"SCRIPT_DATA_END_TAG_OPEN\";\n State[State[\"SCRIPT_DATA_END_TAG_NAME\"] = 16] = \"SCRIPT_DATA_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_ESCAPE_START\"] = 17] = \"SCRIPT_DATA_ESCAPE_START\";\n State[State[\"SCRIPT_DATA_ESCAPE_START_DASH\"] = 18] = \"SCRIPT_DATA_ESCAPE_START_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED\"] = 19] = \"SCRIPT_DATA_ESCAPED\";\n State[State[\"SCRIPT_DATA_ESCAPED_DASH\"] = 20] = \"SCRIPT_DATA_ESCAPED_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED_DASH_DASH\"] = 21] = \"SCRIPT_DATA_ESCAPED_DASH_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\"] = 22] = \"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\"] = 23] = \"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\";\n State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_NAME\"] = 24] = \"SCRIPT_DATA_ESCAPED_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_START\"] = 25] = \"SCRIPT_DATA_DOUBLE_ESCAPE_START\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED\"] = 26] = \"SCRIPT_DATA_DOUBLE_ESCAPED\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\"] = 27] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\"] = 28] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\"] = 29] = \"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_END\"] = 30] = \"SCRIPT_DATA_DOUBLE_ESCAPE_END\";\n State[State[\"BEFORE_ATTRIBUTE_NAME\"] = 31] = \"BEFORE_ATTRIBUTE_NAME\";\n State[State[\"ATTRIBUTE_NAME\"] = 32] = \"ATTRIBUTE_NAME\";\n State[State[\"AFTER_ATTRIBUTE_NAME\"] = 33] = \"AFTER_ATTRIBUTE_NAME\";\n State[State[\"BEFORE_ATTRIBUTE_VALUE\"] = 34] = \"BEFORE_ATTRIBUTE_VALUE\";\n State[State[\"ATTRIBUTE_VALUE_DOUBLE_QUOTED\"] = 35] = \"ATTRIBUTE_VALUE_DOUBLE_QUOTED\";\n State[State[\"ATTRIBUTE_VALUE_SINGLE_QUOTED\"] = 36] = \"ATTRIBUTE_VALUE_SINGLE_QUOTED\";\n State[State[\"ATTRIBUTE_VALUE_UNQUOTED\"] = 37] = \"ATTRIBUTE_VALUE_UNQUOTED\";\n State[State[\"AFTER_ATTRIBUTE_VALUE_QUOTED\"] = 38] = \"AFTER_ATTRIBUTE_VALUE_QUOTED\";\n State[State[\"SELF_CLOSING_START_TAG\"] = 39] = \"SELF_CLOSING_START_TAG\";\n State[State[\"BOGUS_COMMENT\"] = 40] = \"BOGUS_COMMENT\";\n State[State[\"MARKUP_DECLARATION_OPEN\"] = 41] = \"MARKUP_DECLARATION_OPEN\";\n State[State[\"COMMENT_START\"] = 42] = \"COMMENT_START\";\n State[State[\"COMMENT_START_DASH\"] = 43] = \"COMMENT_START_DASH\";\n State[State[\"COMMENT\"] = 44] = \"COMMENT\";\n State[State[\"COMMENT_LESS_THAN_SIGN\"] = 45] = \"COMMENT_LESS_THAN_SIGN\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG\"] = 46] = \"COMMENT_LESS_THAN_SIGN_BANG\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH\"] = 47] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\"] = 48] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\";\n State[State[\"COMMENT_END_DASH\"] = 49] = \"COMMENT_END_DASH\";\n State[State[\"COMMENT_END\"] = 50] = \"COMMENT_END\";\n State[State[\"COMMENT_END_BANG\"] = 51] = \"COMMENT_END_BANG\";\n State[State[\"DOCTYPE\"] = 52] = \"DOCTYPE\";\n State[State[\"BEFORE_DOCTYPE_NAME\"] = 53] = \"BEFORE_DOCTYPE_NAME\";\n State[State[\"DOCTYPE_NAME\"] = 54] = \"DOCTYPE_NAME\";\n State[State[\"AFTER_DOCTYPE_NAME\"] = 55] = \"AFTER_DOCTYPE_NAME\";\n State[State[\"AFTER_DOCTYPE_PUBLIC_KEYWORD\"] = 56] = \"AFTER_DOCTYPE_PUBLIC_KEYWORD\";\n State[State[\"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\"] = 57] = \"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\";\n State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\"] = 58] = \"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\";\n State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\"] = 59] = \"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\";\n State[State[\"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\"] = 60] = \"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\";\n State[State[\"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\"] = 61] = \"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\";\n State[State[\"AFTER_DOCTYPE_SYSTEM_KEYWORD\"] = 62] = \"AFTER_DOCTYPE_SYSTEM_KEYWORD\";\n State[State[\"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\"] = 63] = \"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\";\n State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\"] = 64] = \"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\";\n State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\"] = 65] = \"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\";\n State[State[\"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\"] = 66] = \"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\";\n State[State[\"BOGUS_DOCTYPE\"] = 67] = \"BOGUS_DOCTYPE\";\n State[State[\"CDATA_SECTION\"] = 68] = \"CDATA_SECTION\";\n State[State[\"CDATA_SECTION_BRACKET\"] = 69] = \"CDATA_SECTION_BRACKET\";\n State[State[\"CDATA_SECTION_END\"] = 70] = \"CDATA_SECTION_END\";\n State[State[\"CHARACTER_REFERENCE\"] = 71] = \"CHARACTER_REFERENCE\";\n State[State[\"AMBIGUOUS_AMPERSAND\"] = 72] = \"AMBIGUOUS_AMPERSAND\";\n})(State || (State = {}));\n//Tokenizer initial states for different modes\nexport const TokenizerMode = {\n DATA: State.DATA,\n RCDATA: State.RCDATA,\n RAWTEXT: State.RAWTEXT,\n SCRIPT_DATA: State.SCRIPT_DATA,\n PLAINTEXT: State.PLAINTEXT,\n CDATA_SECTION: State.CDATA_SECTION,\n};\n//Utils\n//OPTIMIZATION: these utility functions should not be moved out of this module. V8 Crankshaft will not inline\n//this functions if they will be situated in another module due to context switch.\n//Always perform inlining check before modifying this functions ('node --trace-inlining').\nfunction isAsciiDigit(cp) {\n return cp >= $.DIGIT_0 && cp <= $.DIGIT_9;\n}\nfunction isAsciiUpper(cp) {\n return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_Z;\n}\nfunction isAsciiLower(cp) {\n return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_Z;\n}\nfunction isAsciiLetter(cp) {\n return isAsciiLower(cp) || isAsciiUpper(cp);\n}\nfunction isAsciiAlphaNumeric(cp) {\n return isAsciiLetter(cp) || isAsciiDigit(cp);\n}\nfunction toAsciiLower(cp) {\n return cp + 32;\n}\nfunction isWhitespace(cp) {\n return cp === $.SPACE || cp === $.LINE_FEED || cp === $.TABULATION || cp === $.FORM_FEED;\n}\nfunction isScriptDataDoubleEscapeSequenceEnd(cp) {\n return isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN;\n}\nfunction getErrorForNumericCharacterReference(code) {\n if (code === $.NULL) {\n return ERR.nullCharacterReference;\n }\n else if (code > 1114111) {\n return ERR.characterReferenceOutsideUnicodeRange;\n }\n else if (isSurrogate(code)) {\n return ERR.surrogateCharacterReference;\n }\n else if (isUndefinedCodePoint(code)) {\n return ERR.noncharacterCharacterReference;\n }\n else if (isControlCodePoint(code) || code === $.CARRIAGE_RETURN) {\n return ERR.controlCharacterReference;\n }\n return null;\n}\n//Tokenizer\nexport class Tokenizer {\n constructor(options, handler) {\n this.options = options;\n this.handler = handler;\n this.paused = false;\n /** Ensures that the parsing loop isn't run multiple times at once. */\n this.inLoop = false;\n /**\n * Indicates that the current adjusted node exists, is not an element in the HTML namespace,\n * and that it is not an integration point for either MathML or HTML.\n *\n * @see {@link https://html.spec.whatwg.org/multipage/parsing.html#tree-construction}\n */\n this.inForeignNode = false;\n this.lastStartTagName = '';\n this.active = false;\n this.state = State.DATA;\n this.returnState = State.DATA;\n this.entityStartPos = 0;\n this.consumedAfterSnapshot = -1;\n this.currentCharacterToken = null;\n this.currentToken = null;\n this.currentAttr = { name: '', value: '' };\n this.preprocessor = new Preprocessor(handler);\n this.currentLocation = this.getCurrentLocation(-1);\n this.entityDecoder = new EntityDecoder(htmlDecodeTree, (cp, consumed) => {\n // Note: Set `pos` _before_ flushing, as flushing might drop\n // the current chunk and invalidate `entityStartPos`.\n this.preprocessor.pos = this.entityStartPos + consumed - 1;\n this._flushCodePointConsumedAsCharacterReference(cp);\n }, handler.onParseError\n ? {\n missingSemicolonAfterCharacterReference: () => {\n this._err(ERR.missingSemicolonAfterCharacterReference, 1);\n },\n absenceOfDigitsInNumericCharacterReference: (consumed) => {\n this._err(ERR.absenceOfDigitsInNumericCharacterReference, this.entityStartPos - this.preprocessor.pos + consumed);\n },\n validateNumericCharacterReference: (code) => {\n const error = getErrorForNumericCharacterReference(code);\n if (error)\n this._err(error, 1);\n },\n }\n : undefined);\n }\n //Errors\n _err(code, cpOffset = 0) {\n var _a, _b;\n (_b = (_a = this.handler).onParseError) === null || _b === void 0 ? void 0 : _b.call(_a, this.preprocessor.getError(code, cpOffset));\n }\n // NOTE: `offset` may never run across line boundaries.\n getCurrentLocation(offset) {\n if (!this.options.sourceCodeLocationInfo) {\n return null;\n }\n return {\n startLine: this.preprocessor.line,\n startCol: this.preprocessor.col - offset,\n startOffset: this.preprocessor.offset - offset,\n endLine: -1,\n endCol: -1,\n endOffset: -1,\n };\n }\n _runParsingLoop() {\n if (this.inLoop)\n return;\n this.inLoop = true;\n while (this.active && !this.paused) {\n this.consumedAfterSnapshot = 0;\n const cp = this._consume();\n if (!this._ensureHibernation()) {\n this._callState(cp);\n }\n }\n this.inLoop = false;\n }\n //API\n pause() {\n this.paused = true;\n }\n resume(writeCallback) {\n if (!this.paused) {\n throw new Error('Parser was already resumed');\n }\n this.paused = false;\n // Necessary for synchronous resume.\n if (this.inLoop)\n return;\n this._runParsingLoop();\n if (!this.paused) {\n writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n }\n }\n write(chunk, isLastChunk, writeCallback) {\n this.active = true;\n this.preprocessor.write(chunk, isLastChunk);\n this._runParsingLoop();\n if (!this.paused) {\n writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n }\n }\n insertHtmlAtCurrentPos(chunk) {\n this.active = true;\n this.preprocessor.insertHtmlAtCurrentPos(chunk);\n this._runParsingLoop();\n }\n //Hibernation\n _ensureHibernation() {\n if (this.preprocessor.endOfChunkHit) {\n this.preprocessor.retreat(this.consumedAfterSnapshot);\n this.consumedAfterSnapshot = 0;\n this.active = false;\n return true;\n }\n return false;\n }\n //Consumption\n _consume() {\n this.consumedAfterSnapshot++;\n return this.preprocessor.advance();\n }\n _advanceBy(count) {\n this.consumedAfterSnapshot += count;\n for (let i = 0; i < count; i++) {\n this.preprocessor.advance();\n }\n }\n _consumeSequenceIfMatch(pattern, caseSensitive) {\n if (this.preprocessor.startsWith(pattern, caseSensitive)) {\n // We will already have consumed one character before calling this method.\n this._advanceBy(pattern.length - 1);\n return true;\n }\n return false;\n }\n //Token creation\n _createStartTagToken() {\n this.currentToken = {\n type: TokenType.START_TAG,\n tagName: '',\n tagID: TAG_ID.UNKNOWN,\n selfClosing: false,\n ackSelfClosing: false,\n attrs: [],\n location: this.getCurrentLocation(1),\n };\n }\n _createEndTagToken() {\n this.currentToken = {\n type: TokenType.END_TAG,\n tagName: '',\n tagID: TAG_ID.UNKNOWN,\n selfClosing: false,\n ackSelfClosing: false,\n attrs: [],\n location: this.getCurrentLocation(2),\n };\n }\n _createCommentToken(offset) {\n this.currentToken = {\n type: TokenType.COMMENT,\n data: '',\n location: this.getCurrentLocation(offset),\n };\n }\n _createDoctypeToken(initialName) {\n this.currentToken = {\n type: TokenType.DOCTYPE,\n name: initialName,\n forceQuirks: false,\n publicId: null,\n systemId: null,\n location: this.currentLocation,\n };\n }\n _createCharacterToken(type, chars) {\n this.currentCharacterToken = {\n type,\n chars,\n location: this.currentLocation,\n };\n }\n //Tag attributes\n _createAttr(attrNameFirstCh) {\n this.currentAttr = {\n name: attrNameFirstCh,\n value: '',\n };\n this.currentLocation = this.getCurrentLocation(0);\n }\n _leaveAttrName() {\n var _a;\n var _b;\n const token = this.currentToken;\n if (getTokenAttr(token, this.currentAttr.name) === null) {\n token.attrs.push(this.currentAttr);\n if (token.location && this.currentLocation) {\n const attrLocations = ((_a = (_b = token.location).attrs) !== null && _a !== void 0 ? _a : (_b.attrs = Object.create(null)));\n attrLocations[this.currentAttr.name] = this.currentLocation;\n // Set end location\n this._leaveAttrValue();\n }\n }\n else {\n this._err(ERR.duplicateAttribute);\n }\n }\n _leaveAttrValue() {\n if (this.currentLocation) {\n this.currentLocation.endLine = this.preprocessor.line;\n this.currentLocation.endCol = this.preprocessor.col;\n this.currentLocation.endOffset = this.preprocessor.offset;\n }\n }\n //Token emission\n prepareToken(ct) {\n this._emitCurrentCharacterToken(ct.location);\n this.currentToken = null;\n if (ct.location) {\n ct.location.endLine = this.preprocessor.line;\n ct.location.endCol = this.preprocessor.col + 1;\n ct.location.endOffset = this.preprocessor.offset + 1;\n }\n this.currentLocation = this.getCurrentLocation(-1);\n }\n emitCurrentTagToken() {\n const ct = this.currentToken;\n this.prepareToken(ct);\n ct.tagID = getTagID(ct.tagName);\n if (ct.type === TokenType.START_TAG) {\n this.lastStartTagName = ct.tagName;\n this.handler.onStartTag(ct);\n }\n else {\n if (ct.attrs.length > 0) {\n this._err(ERR.endTagWithAttributes);\n }\n if (ct.selfClosing) {\n this._err(ERR.endTagWithTrailingSolidus);\n }\n this.handler.onEndTag(ct);\n }\n this.preprocessor.dropParsedChunk();\n }\n emitCurrentComment(ct) {\n this.prepareToken(ct);\n this.handler.onComment(ct);\n this.preprocessor.dropParsedChunk();\n }\n emitCurrentDoctype(ct) {\n this.prepareToken(ct);\n this.handler.onDoctype(ct);\n this.preprocessor.dropParsedChunk();\n }\n _emitCurrentCharacterToken(nextLocation) {\n if (this.currentCharacterToken) {\n //NOTE: if we have a pending character token, make it's end location equal to the\n //current token's start location.\n if (nextLocation && this.currentCharacterToken.location) {\n this.currentCharacterToken.location.endLine = nextLocation.startLine;\n this.currentCharacterToken.location.endCol = nextLocation.startCol;\n this.currentCharacterToken.location.endOffset = nextLocation.startOffset;\n }\n switch (this.currentCharacterToken.type) {\n case TokenType.CHARACTER: {\n this.handler.onCharacter(this.currentCharacterToken);\n break;\n }\n case TokenType.NULL_CHARACTER: {\n this.handler.onNullCharacter(this.currentCharacterToken);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n this.handler.onWhitespaceCharacter(this.currentCharacterToken);\n break;\n }\n }\n this.currentCharacterToken = null;\n }\n }\n _emitEOFToken() {\n const location = this.getCurrentLocation(0);\n if (location) {\n location.endLine = location.startLine;\n location.endCol = location.startCol;\n location.endOffset = location.startOffset;\n }\n this._emitCurrentCharacterToken(location);\n this.handler.onEof({ type: TokenType.EOF, location });\n this.active = false;\n }\n //Characters emission\n //OPTIMIZATION: The specification uses only one type of character token (one token per character).\n //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters.\n //If we have a sequence of characters that belong to the same group, the parser can process it\n //as a single solid character token.\n //So, there are 3 types of character tokens in parse5:\n //1)TokenType.NULL_CHARACTER - \\u0000-character sequences (e.g. '\\u0000\\u0000\\u0000')\n //2)TokenType.WHITESPACE_CHARACTER - any whitespace/new-line character sequences (e.g. '\\n \\r\\t \\f')\n //3)TokenType.CHARACTER - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^')\n _appendCharToCurrentCharacterToken(type, ch) {\n if (this.currentCharacterToken) {\n if (this.currentCharacterToken.type === type) {\n this.currentCharacterToken.chars += ch;\n return;\n }\n else {\n this.currentLocation = this.getCurrentLocation(0);\n this._emitCurrentCharacterToken(this.currentLocation);\n this.preprocessor.dropParsedChunk();\n }\n }\n this._createCharacterToken(type, ch);\n }\n _emitCodePoint(cp) {\n const type = isWhitespace(cp)\n ? TokenType.WHITESPACE_CHARACTER\n : cp === $.NULL\n ? TokenType.NULL_CHARACTER\n : TokenType.CHARACTER;\n this._appendCharToCurrentCharacterToken(type, String.fromCodePoint(cp));\n }\n //NOTE: used when we emit characters explicitly.\n //This is always for non-whitespace and non-null characters, which allows us to avoid additional checks.\n _emitChars(ch) {\n this._appendCharToCurrentCharacterToken(TokenType.CHARACTER, ch);\n }\n // Character reference helpers\n _startCharacterReference() {\n this.returnState = this.state;\n this.state = State.CHARACTER_REFERENCE;\n this.entityStartPos = this.preprocessor.pos;\n this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute() ? DecodingMode.Attribute : DecodingMode.Legacy);\n }\n _isCharacterReferenceInAttribute() {\n return (this.returnState === State.ATTRIBUTE_VALUE_DOUBLE_QUOTED ||\n this.returnState === State.ATTRIBUTE_VALUE_SINGLE_QUOTED ||\n this.returnState === State.ATTRIBUTE_VALUE_UNQUOTED);\n }\n _flushCodePointConsumedAsCharacterReference(cp) {\n if (this._isCharacterReferenceInAttribute()) {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n else {\n this._emitCodePoint(cp);\n }\n }\n // Calling states this way turns out to be much faster than any other approach.\n _callState(cp) {\n switch (this.state) {\n case State.DATA: {\n this._stateData(cp);\n break;\n }\n case State.RCDATA: {\n this._stateRcdata(cp);\n break;\n }\n case State.RAWTEXT: {\n this._stateRawtext(cp);\n break;\n }\n case State.SCRIPT_DATA: {\n this._stateScriptData(cp);\n break;\n }\n case State.PLAINTEXT: {\n this._statePlaintext(cp);\n break;\n }\n case State.TAG_OPEN: {\n this._stateTagOpen(cp);\n break;\n }\n case State.END_TAG_OPEN: {\n this._stateEndTagOpen(cp);\n break;\n }\n case State.TAG_NAME: {\n this._stateTagName(cp);\n break;\n }\n case State.RCDATA_LESS_THAN_SIGN: {\n this._stateRcdataLessThanSign(cp);\n break;\n }\n case State.RCDATA_END_TAG_OPEN: {\n this._stateRcdataEndTagOpen(cp);\n break;\n }\n case State.RCDATA_END_TAG_NAME: {\n this._stateRcdataEndTagName(cp);\n break;\n }\n case State.RAWTEXT_LESS_THAN_SIGN: {\n this._stateRawtextLessThanSign(cp);\n break;\n }\n case State.RAWTEXT_END_TAG_OPEN: {\n this._stateRawtextEndTagOpen(cp);\n break;\n }\n case State.RAWTEXT_END_TAG_NAME: {\n this._stateRawtextEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_LESS_THAN_SIGN: {\n this._stateScriptDataLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_END_TAG_OPEN: {\n this._stateScriptDataEndTagOpen(cp);\n break;\n }\n case State.SCRIPT_DATA_END_TAG_NAME: {\n this._stateScriptDataEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPE_START: {\n this._stateScriptDataEscapeStart(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPE_START_DASH: {\n this._stateScriptDataEscapeStartDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED: {\n this._stateScriptDataEscaped(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_DASH: {\n this._stateScriptDataEscapedDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_DASH_DASH: {\n this._stateScriptDataEscapedDashDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: {\n this._stateScriptDataEscapedLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN: {\n this._stateScriptDataEscapedEndTagOpen(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_END_TAG_NAME: {\n this._stateScriptDataEscapedEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPE_START: {\n this._stateScriptDataDoubleEscapeStart(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED: {\n this._stateScriptDataDoubleEscaped(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH: {\n this._stateScriptDataDoubleEscapedDash(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH: {\n this._stateScriptDataDoubleEscapedDashDash(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: {\n this._stateScriptDataDoubleEscapedLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPE_END: {\n this._stateScriptDataDoubleEscapeEnd(cp);\n break;\n }\n case State.BEFORE_ATTRIBUTE_NAME: {\n this._stateBeforeAttributeName(cp);\n break;\n }\n case State.ATTRIBUTE_NAME: {\n this._stateAttributeName(cp);\n break;\n }\n case State.AFTER_ATTRIBUTE_NAME: {\n this._stateAfterAttributeName(cp);\n break;\n }\n case State.BEFORE_ATTRIBUTE_VALUE: {\n this._stateBeforeAttributeValue(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_DOUBLE_QUOTED: {\n this._stateAttributeValueDoubleQuoted(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_SINGLE_QUOTED: {\n this._stateAttributeValueSingleQuoted(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_UNQUOTED: {\n this._stateAttributeValueUnquoted(cp);\n break;\n }\n case State.AFTER_ATTRIBUTE_VALUE_QUOTED: {\n this._stateAfterAttributeValueQuoted(cp);\n break;\n }\n case State.SELF_CLOSING_START_TAG: {\n this._stateSelfClosingStartTag(cp);\n break;\n }\n case State.BOGUS_COMMENT: {\n this._stateBogusComment(cp);\n break;\n }\n case State.MARKUP_DECLARATION_OPEN: {\n this._stateMarkupDeclarationOpen(cp);\n break;\n }\n case State.COMMENT_START: {\n this._stateCommentStart(cp);\n break;\n }\n case State.COMMENT_START_DASH: {\n this._stateCommentStartDash(cp);\n break;\n }\n case State.COMMENT: {\n this._stateComment(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN: {\n this._stateCommentLessThanSign(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG: {\n this._stateCommentLessThanSignBang(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG_DASH: {\n this._stateCommentLessThanSignBangDash(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH: {\n this._stateCommentLessThanSignBangDashDash(cp);\n break;\n }\n case State.COMMENT_END_DASH: {\n this._stateCommentEndDash(cp);\n break;\n }\n case State.COMMENT_END: {\n this._stateCommentEnd(cp);\n break;\n }\n case State.COMMENT_END_BANG: {\n this._stateCommentEndBang(cp);\n break;\n }\n case State.DOCTYPE: {\n this._stateDoctype(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_NAME: {\n this._stateBeforeDoctypeName(cp);\n break;\n }\n case State.DOCTYPE_NAME: {\n this._stateDoctypeName(cp);\n break;\n }\n case State.AFTER_DOCTYPE_NAME: {\n this._stateAfterDoctypeName(cp);\n break;\n }\n case State.AFTER_DOCTYPE_PUBLIC_KEYWORD: {\n this._stateAfterDoctypePublicKeyword(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: {\n this._stateBeforeDoctypePublicIdentifier(cp);\n break;\n }\n case State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: {\n this._stateDoctypePublicIdentifierDoubleQuoted(cp);\n break;\n }\n case State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: {\n this._stateDoctypePublicIdentifierSingleQuoted(cp);\n break;\n }\n case State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER: {\n this._stateAfterDoctypePublicIdentifier(cp);\n break;\n }\n case State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: {\n this._stateBetweenDoctypePublicAndSystemIdentifiers(cp);\n break;\n }\n case State.AFTER_DOCTYPE_SYSTEM_KEYWORD: {\n this._stateAfterDoctypeSystemKeyword(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: {\n this._stateBeforeDoctypeSystemIdentifier(cp);\n break;\n }\n case State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: {\n this._stateDoctypeSystemIdentifierDoubleQuoted(cp);\n break;\n }\n case State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: {\n this._stateDoctypeSystemIdentifierSingleQuoted(cp);\n break;\n }\n case State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER: {\n this._stateAfterDoctypeSystemIdentifier(cp);\n break;\n }\n case State.BOGUS_DOCTYPE: {\n this._stateBogusDoctype(cp);\n break;\n }\n case State.CDATA_SECTION: {\n this._stateCdataSection(cp);\n break;\n }\n case State.CDATA_SECTION_BRACKET: {\n this._stateCdataSectionBracket(cp);\n break;\n }\n case State.CDATA_SECTION_END: {\n this._stateCdataSectionEnd(cp);\n break;\n }\n case State.CHARACTER_REFERENCE: {\n this._stateCharacterReference();\n break;\n }\n case State.AMBIGUOUS_AMPERSAND: {\n this._stateAmbiguousAmpersand(cp);\n break;\n }\n default: {\n throw new Error('Unknown state');\n }\n }\n }\n // State machine\n // Data state\n //------------------------------------------------------------------\n _stateData(cp) {\n switch (cp) {\n case $.LESS_THAN_SIGN: {\n this.state = State.TAG_OPEN;\n break;\n }\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitCodePoint(cp);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // RCDATA state\n //------------------------------------------------------------------\n _stateRcdata(cp) {\n switch (cp) {\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.RCDATA_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // RAWTEXT state\n //------------------------------------------------------------------\n _stateRawtext(cp) {\n switch (cp) {\n case $.LESS_THAN_SIGN: {\n this.state = State.RAWTEXT_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data state\n //------------------------------------------------------------------\n _stateScriptData(cp) {\n switch (cp) {\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // PLAINTEXT state\n //------------------------------------------------------------------\n _statePlaintext(cp) {\n switch (cp) {\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Tag open state\n //------------------------------------------------------------------\n _stateTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this._createStartTagToken();\n this.state = State.TAG_NAME;\n this._stateTagName(cp);\n }\n else\n switch (cp) {\n case $.EXCLAMATION_MARK: {\n this.state = State.MARKUP_DECLARATION_OPEN;\n break;\n }\n case $.SOLIDUS: {\n this.state = State.END_TAG_OPEN;\n break;\n }\n case $.QUESTION_MARK: {\n this._err(ERR.unexpectedQuestionMarkInsteadOfTagName);\n this._createCommentToken(1);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofBeforeTagName);\n this._emitChars('<');\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.invalidFirstCharacterOfTagName);\n this._emitChars('<');\n this.state = State.DATA;\n this._stateData(cp);\n }\n }\n }\n // End tag open state\n //------------------------------------------------------------------\n _stateEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this.state = State.TAG_NAME;\n this._stateTagName(cp);\n }\n else\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingEndTagName);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofBeforeTagName);\n this._emitChars('</');\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.invalidFirstCharacterOfTagName);\n this._createCommentToken(2);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n }\n }\n }\n // Tag name state\n //------------------------------------------------------------------\n _stateTagName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case $.SOLIDUS: {\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.tagName += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n token.tagName += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // RCDATA less-than sign state\n //------------------------------------------------------------------\n _stateRcdataLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.RCDATA_END_TAG_OPEN;\n }\n else {\n this._emitChars('<');\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n // RCDATA end tag open state\n //------------------------------------------------------------------\n _stateRcdataEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.RCDATA_END_TAG_NAME;\n this._stateRcdataEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n handleSpecialEndTag(_cp) {\n if (!this.preprocessor.startsWith(this.lastStartTagName, false)) {\n return !this._ensureHibernation();\n }\n this._createEndTagToken();\n const token = this.currentToken;\n token.tagName = this.lastStartTagName;\n const cp = this.preprocessor.peek(this.lastStartTagName.length);\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this._advanceBy(this.lastStartTagName.length);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n return false;\n }\n case $.SOLIDUS: {\n this._advanceBy(this.lastStartTagName.length);\n this.state = State.SELF_CLOSING_START_TAG;\n return false;\n }\n case $.GREATER_THAN_SIGN: {\n this._advanceBy(this.lastStartTagName.length);\n this.emitCurrentTagToken();\n this.state = State.DATA;\n return false;\n }\n default: {\n return !this._ensureHibernation();\n }\n }\n }\n // RCDATA end tag name state\n //------------------------------------------------------------------\n _stateRcdataEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n // RAWTEXT less-than sign state\n //------------------------------------------------------------------\n _stateRawtextLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.RAWTEXT_END_TAG_OPEN;\n }\n else {\n this._emitChars('<');\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // RAWTEXT end tag open state\n //------------------------------------------------------------------\n _stateRawtextEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.RAWTEXT_END_TAG_NAME;\n this._stateRawtextEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // RAWTEXT end tag name state\n //------------------------------------------------------------------\n _stateRawtextEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // Script data less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataLessThanSign(cp) {\n switch (cp) {\n case $.SOLIDUS: {\n this.state = State.SCRIPT_DATA_END_TAG_OPEN;\n break;\n }\n case $.EXCLAMATION_MARK: {\n this.state = State.SCRIPT_DATA_ESCAPE_START;\n this._emitChars('<!');\n break;\n }\n default: {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n }\n // Script data end tag open state\n //------------------------------------------------------------------\n _stateScriptDataEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.SCRIPT_DATA_END_TAG_NAME;\n this._stateScriptDataEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data end tag name state\n //------------------------------------------------------------------\n _stateScriptDataEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escape start state\n //------------------------------------------------------------------\n _stateScriptDataEscapeStart(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.SCRIPT_DATA_ESCAPE_START_DASH;\n this._emitChars('-');\n }\n else {\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escape start dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapeStartDash(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n this._emitChars('-');\n }\n else {\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escaped state\n //------------------------------------------------------------------\n _stateScriptDataEscaped(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapedDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped dash dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapedDashDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.SCRIPT_DATA;\n this._emitChars('>');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataEscapedLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN;\n }\n else if (isAsciiLetter(cp)) {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_START;\n this._stateScriptDataDoubleEscapeStart(cp);\n }\n else {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data escaped end tag open state\n //------------------------------------------------------------------\n _stateScriptDataEscapedEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_NAME;\n this._stateScriptDataEscapedEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data escaped end tag name state\n //------------------------------------------------------------------\n _stateScriptDataEscapedEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data double escape start state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapeStart(cp) {\n if (this.preprocessor.startsWith($$.SCRIPT, false) &&\n isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek($$.SCRIPT.length))) {\n this._emitCodePoint(cp);\n for (let i = 0; i < $$.SCRIPT.length; i++) {\n this._emitCodePoint(this._consume());\n }\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n }\n else if (!this._ensureHibernation()) {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data double escaped state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscaped(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars('<');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped dash state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars('<');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped dash dash state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedDashDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars('<');\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.SCRIPT_DATA;\n this._emitChars('>');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_END;\n this._emitChars('/');\n }\n else {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._stateScriptDataDoubleEscaped(cp);\n }\n }\n // Script data double escape end state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapeEnd(cp) {\n if (this.preprocessor.startsWith($$.SCRIPT, false) &&\n isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek($$.SCRIPT.length))) {\n this._emitCodePoint(cp);\n for (let i = 0; i < $$.SCRIPT.length; i++) {\n this._emitCodePoint(this._consume());\n }\n this.state = State.SCRIPT_DATA_ESCAPED;\n }\n else if (!this._ensureHibernation()) {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._stateScriptDataDoubleEscaped(cp);\n }\n }\n // Before attribute name state\n //------------------------------------------------------------------\n _stateBeforeAttributeName(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.SOLIDUS:\n case $.GREATER_THAN_SIGN:\n case $.EOF: {\n this.state = State.AFTER_ATTRIBUTE_NAME;\n this._stateAfterAttributeName(cp);\n break;\n }\n case $.EQUALS_SIGN: {\n this._err(ERR.unexpectedEqualsSignBeforeAttributeName);\n this._createAttr('=');\n this.state = State.ATTRIBUTE_NAME;\n break;\n }\n default: {\n this._createAttr('');\n this.state = State.ATTRIBUTE_NAME;\n this._stateAttributeName(cp);\n }\n }\n }\n // Attribute name state\n //------------------------------------------------------------------\n _stateAttributeName(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED:\n case $.SOLIDUS:\n case $.GREATER_THAN_SIGN:\n case $.EOF: {\n this._leaveAttrName();\n this.state = State.AFTER_ATTRIBUTE_NAME;\n this._stateAfterAttributeName(cp);\n break;\n }\n case $.EQUALS_SIGN: {\n this._leaveAttrName();\n this.state = State.BEFORE_ATTRIBUTE_VALUE;\n break;\n }\n case $.QUOTATION_MARK:\n case $.APOSTROPHE:\n case $.LESS_THAN_SIGN: {\n this._err(ERR.unexpectedCharacterInAttributeName);\n this.currentAttr.name += String.fromCodePoint(cp);\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.name += REPLACEMENT_CHARACTER;\n break;\n }\n default: {\n this.currentAttr.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // After attribute name state\n //------------------------------------------------------------------\n _stateAfterAttributeName(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.SOLIDUS: {\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case $.EQUALS_SIGN: {\n this.state = State.BEFORE_ATTRIBUTE_VALUE;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._createAttr('');\n this.state = State.ATTRIBUTE_NAME;\n this._stateAttributeName(cp);\n }\n }\n }\n // Before attribute value state\n //------------------------------------------------------------------\n _stateBeforeAttributeValue(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.QUOTATION_MARK: {\n this.state = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this.state = State.ATTRIBUTE_VALUE_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingAttributeValue);\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n default: {\n this.state = State.ATTRIBUTE_VALUE_UNQUOTED;\n this._stateAttributeValueUnquoted(cp);\n }\n }\n }\n // Attribute value (double-quoted) state\n //------------------------------------------------------------------\n _stateAttributeValueDoubleQuoted(cp) {\n switch (cp) {\n case $.QUOTATION_MARK: {\n this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n break;\n }\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // Attribute value (single-quoted) state\n //------------------------------------------------------------------\n _stateAttributeValueSingleQuoted(cp) {\n switch (cp) {\n case $.APOSTROPHE: {\n this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n break;\n }\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // Attribute value (unquoted) state\n //------------------------------------------------------------------\n _stateAttributeValueUnquoted(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this._leaveAttrValue();\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._leaveAttrValue();\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += REPLACEMENT_CHARACTER;\n break;\n }\n case $.QUOTATION_MARK:\n case $.APOSTROPHE:\n case $.LESS_THAN_SIGN:\n case $.EQUALS_SIGN:\n case $.GRAVE_ACCENT: {\n this._err(ERR.unexpectedCharacterInUnquotedAttributeValue);\n this.currentAttr.value += String.fromCodePoint(cp);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // After attribute value (quoted) state\n //------------------------------------------------------------------\n _stateAfterAttributeValueQuoted(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this._leaveAttrValue();\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case $.SOLIDUS: {\n this._leaveAttrValue();\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._leaveAttrValue();\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingWhitespaceBetweenAttributes);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n this._stateBeforeAttributeName(cp);\n }\n }\n }\n // Self-closing start tag state\n //------------------------------------------------------------------\n _stateSelfClosingStartTag(cp) {\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n const token = this.currentToken;\n token.selfClosing = true;\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.unexpectedSolidusInTag);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n this._stateBeforeAttributeName(cp);\n }\n }\n }\n // Bogus comment state\n //------------------------------------------------------------------\n _stateBogusComment(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EOF: {\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.data += REPLACEMENT_CHARACTER;\n break;\n }\n default: {\n token.data += String.fromCodePoint(cp);\n }\n }\n }\n // Markup declaration open state\n //------------------------------------------------------------------\n _stateMarkupDeclarationOpen(cp) {\n if (this._consumeSequenceIfMatch($$.DASH_DASH, true)) {\n this._createCommentToken($$.DASH_DASH.length + 1);\n this.state = State.COMMENT_START;\n }\n else if (this._consumeSequenceIfMatch($$.DOCTYPE, false)) {\n // NOTE: Doctypes tokens are created without fixed offsets. We keep track of the moment a doctype *might* start here.\n this.currentLocation = this.getCurrentLocation($$.DOCTYPE.length + 1);\n this.state = State.DOCTYPE;\n }\n else if (this._consumeSequenceIfMatch($$.CDATA_START, true)) {\n if (this.inForeignNode) {\n this.state = State.CDATA_SECTION;\n }\n else {\n this._err(ERR.cdataInHtmlContent);\n this._createCommentToken($$.CDATA_START.length + 1);\n this.currentToken.data = '[CDATA[';\n this.state = State.BOGUS_COMMENT;\n }\n }\n //NOTE: Sequence lookups can be abrupted by hibernation. In that case, lookup\n //results are no longer valid and we will need to start over.\n else if (!this._ensureHibernation()) {\n this._err(ERR.incorrectlyOpenedComment);\n this._createCommentToken(2);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n }\n }\n // Comment start state\n //------------------------------------------------------------------\n _stateCommentStart(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_START_DASH;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = State.DATA;\n const token = this.currentToken;\n this.emitCurrentComment(token);\n break;\n }\n default: {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment start dash state\n //------------------------------------------------------------------\n _stateCommentStartDash(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_END;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '-';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment state\n //------------------------------------------------------------------\n _stateComment(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_END_DASH;\n break;\n }\n case $.LESS_THAN_SIGN: {\n token.data += '<';\n this.state = State.COMMENT_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.data += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += String.fromCodePoint(cp);\n }\n }\n }\n // Comment less-than sign state\n //------------------------------------------------------------------\n _stateCommentLessThanSign(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.EXCLAMATION_MARK: {\n token.data += '!';\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG;\n break;\n }\n case $.LESS_THAN_SIGN: {\n token.data += '<';\n break;\n }\n default: {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment less-than sign bang state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBang(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH;\n }\n else {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n // Comment less-than sign bang dash state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBangDash(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH;\n }\n else {\n this.state = State.COMMENT_END_DASH;\n this._stateCommentEndDash(cp);\n }\n }\n // Comment less-than sign bang dash dash state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBangDashDash(cp) {\n if (cp !== $.GREATER_THAN_SIGN && cp !== $.EOF) {\n this._err(ERR.nestedComment);\n }\n this.state = State.COMMENT_END;\n this._stateCommentEnd(cp);\n }\n // Comment end dash state\n //------------------------------------------------------------------\n _stateCommentEndDash(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_END;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '-';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment end state\n //------------------------------------------------------------------\n _stateCommentEnd(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EXCLAMATION_MARK: {\n this.state = State.COMMENT_END_BANG;\n break;\n }\n case $.HYPHEN_MINUS: {\n token.data += '-';\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '--';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment end bang state\n //------------------------------------------------------------------\n _stateCommentEndBang(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n token.data += '--!';\n this.state = State.COMMENT_END_DASH;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.incorrectlyClosedComment);\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '--!';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // DOCTYPE state\n //------------------------------------------------------------------\n _stateDoctype(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_NAME;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.BEFORE_DOCTYPE_NAME;\n this._stateBeforeDoctypeName(cp);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingWhitespaceBeforeDoctypeName);\n this.state = State.BEFORE_DOCTYPE_NAME;\n this._stateBeforeDoctypeName(cp);\n }\n }\n }\n // Before DOCTYPE name state\n //------------------------------------------------------------------\n _stateBeforeDoctypeName(cp) {\n if (isAsciiUpper(cp)) {\n this._createDoctypeToken(String.fromCharCode(toAsciiLower(cp)));\n this.state = State.DOCTYPE_NAME;\n }\n else\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._createDoctypeToken(REPLACEMENT_CHARACTER);\n this.state = State.DOCTYPE_NAME;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypeName);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._createDoctypeToken(String.fromCodePoint(cp));\n this.state = State.DOCTYPE_NAME;\n }\n }\n }\n // DOCTYPE name state\n //------------------------------------------------------------------\n _stateDoctypeName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.AFTER_DOCTYPE_NAME;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.name += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // After DOCTYPE name state\n //------------------------------------------------------------------\n _stateAfterDoctypeName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n if (this._consumeSequenceIfMatch($$.PUBLIC, false)) {\n this.state = State.AFTER_DOCTYPE_PUBLIC_KEYWORD;\n }\n else if (this._consumeSequenceIfMatch($$.SYSTEM, false)) {\n this.state = State.AFTER_DOCTYPE_SYSTEM_KEYWORD;\n }\n //NOTE: sequence lookup can be abrupted by hibernation. In that case lookup\n //results are no longer valid and we will need to start over.\n else if (!this._ensureHibernation()) {\n this._err(ERR.invalidCharacterSequenceAfterDoctypeName);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n }\n // After DOCTYPE public keyword state\n //------------------------------------------------------------------\n _stateAfterDoctypePublicKeyword(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case $.QUOTATION_MARK: {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Before DOCTYPE public identifier state\n //------------------------------------------------------------------\n _stateBeforeDoctypePublicIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.QUOTATION_MARK: {\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // DOCTYPE public identifier (double-quoted) state\n //------------------------------------------------------------------\n _stateDoctypePublicIdentifierDoubleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.QUOTATION_MARK: {\n this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.publicId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.publicId += String.fromCodePoint(cp);\n }\n }\n }\n // DOCTYPE public identifier (single-quoted) state\n //------------------------------------------------------------------\n _stateDoctypePublicIdentifierSingleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.APOSTROPHE: {\n this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.publicId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.publicId += String.fromCodePoint(cp);\n }\n }\n }\n // After DOCTYPE public identifier state\n //------------------------------------------------------------------\n _stateAfterDoctypePublicIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.QUOTATION_MARK: {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Between DOCTYPE public and system identifiers state\n //------------------------------------------------------------------\n _stateBetweenDoctypePublicAndSystemIdentifiers(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.QUOTATION_MARK: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // After DOCTYPE system keyword state\n //------------------------------------------------------------------\n _stateAfterDoctypeSystemKeyword(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case $.QUOTATION_MARK: {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Before DOCTYPE system identifier state\n //------------------------------------------------------------------\n _stateBeforeDoctypeSystemIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.QUOTATION_MARK: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // DOCTYPE system identifier (double-quoted) state\n //------------------------------------------------------------------\n _stateDoctypeSystemIdentifierDoubleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.QUOTATION_MARK: {\n this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.systemId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.systemId += String.fromCodePoint(cp);\n }\n }\n }\n // DOCTYPE system identifier (single-quoted) state\n //------------------------------------------------------------------\n _stateDoctypeSystemIdentifierSingleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.APOSTROPHE: {\n this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.systemId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.systemId += String.fromCodePoint(cp);\n }\n }\n }\n // After DOCTYPE system identifier state\n //------------------------------------------------------------------\n _stateAfterDoctypeSystemIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.unexpectedCharacterAfterDoctypeSystemIdentifier);\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Bogus DOCTYPE state\n //------------------------------------------------------------------\n _stateBogusDoctype(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n break;\n }\n case $.EOF: {\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default:\n // Do nothing\n }\n }\n // CDATA section state\n //------------------------------------------------------------------\n _stateCdataSection(cp) {\n switch (cp) {\n case $.RIGHT_SQUARE_BRACKET: {\n this.state = State.CDATA_SECTION_BRACKET;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInCdata);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // CDATA section bracket state\n //------------------------------------------------------------------\n _stateCdataSectionBracket(cp) {\n if (cp === $.RIGHT_SQUARE_BRACKET) {\n this.state = State.CDATA_SECTION_END;\n }\n else {\n this._emitChars(']');\n this.state = State.CDATA_SECTION;\n this._stateCdataSection(cp);\n }\n }\n // CDATA section end state\n //------------------------------------------------------------------\n _stateCdataSectionEnd(cp) {\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n break;\n }\n case $.RIGHT_SQUARE_BRACKET: {\n this._emitChars(']');\n break;\n }\n default: {\n this._emitChars(']]');\n this.state = State.CDATA_SECTION;\n this._stateCdataSection(cp);\n }\n }\n }\n // Character reference state\n //------------------------------------------------------------------\n _stateCharacterReference() {\n let length = this.entityDecoder.write(this.preprocessor.html, this.preprocessor.pos);\n if (length < 0) {\n if (this.preprocessor.lastChunkWritten) {\n length = this.entityDecoder.end();\n }\n else {\n // Wait for the rest of the entity.\n this.active = false;\n // Mark the entire buffer as read.\n this.preprocessor.pos = this.preprocessor.html.length - 1;\n this.consumedAfterSnapshot = 0;\n this.preprocessor.endOfChunkHit = true;\n return;\n }\n }\n if (length === 0) {\n // This was not a valid entity. Go back to the beginning, and\n // figure out what to do.\n this.preprocessor.pos = this.entityStartPos;\n this._flushCodePointConsumedAsCharacterReference($.AMPERSAND);\n this.state =\n !this._isCharacterReferenceInAttribute() && isAsciiAlphaNumeric(this.preprocessor.peek(1))\n ? State.AMBIGUOUS_AMPERSAND\n : this.returnState;\n }\n else {\n // We successfully parsed an entity. Switch to the return state.\n this.state = this.returnState;\n }\n }\n // Ambiguos ampersand state\n //------------------------------------------------------------------\n _stateAmbiguousAmpersand(cp) {\n if (isAsciiAlphaNumeric(cp)) {\n this._flushCodePointConsumedAsCharacterReference(cp);\n }\n else {\n if (cp === $.SEMICOLON) {\n this._err(ERR.unknownNamedCharacterReference);\n }\n this.state = this.returnState;\n this._callState(cp);\n }\n }\n}\n",
58
- "import { TAG_ID as $, NS, NUMBERED_HEADERS } from '../common/html.js';\n//Element utils\nconst IMPLICIT_END_TAG_REQUIRED = new Set([$.DD, $.DT, $.LI, $.OPTGROUP, $.OPTION, $.P, $.RB, $.RP, $.RT, $.RTC]);\nconst IMPLICIT_END_TAG_REQUIRED_THOROUGHLY = new Set([\n ...IMPLICIT_END_TAG_REQUIRED,\n $.CAPTION,\n $.COLGROUP,\n $.TBODY,\n $.TD,\n $.TFOOT,\n $.TH,\n $.THEAD,\n $.TR,\n]);\nconst SCOPING_ELEMENTS_HTML = new Set([\n $.APPLET,\n $.CAPTION,\n $.HTML,\n $.MARQUEE,\n $.OBJECT,\n $.TABLE,\n $.TD,\n $.TEMPLATE,\n $.TH,\n]);\nconst SCOPING_ELEMENTS_HTML_LIST = new Set([...SCOPING_ELEMENTS_HTML, $.OL, $.UL]);\nconst SCOPING_ELEMENTS_HTML_BUTTON = new Set([...SCOPING_ELEMENTS_HTML, $.BUTTON]);\nconst SCOPING_ELEMENTS_MATHML = new Set([$.ANNOTATION_XML, $.MI, $.MN, $.MO, $.MS, $.MTEXT]);\nconst SCOPING_ELEMENTS_SVG = new Set([$.DESC, $.FOREIGN_OBJECT, $.TITLE]);\nconst TABLE_ROW_CONTEXT = new Set([$.TR, $.TEMPLATE, $.HTML]);\nconst TABLE_BODY_CONTEXT = new Set([$.TBODY, $.TFOOT, $.THEAD, $.TEMPLATE, $.HTML]);\nconst TABLE_CONTEXT = new Set([$.TABLE, $.TEMPLATE, $.HTML]);\nconst TABLE_CELLS = new Set([$.TD, $.TH]);\n//Stack of open elements\nexport class OpenElementStack {\n get currentTmplContentOrNode() {\n return this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : this.current;\n }\n constructor(document, treeAdapter, handler) {\n this.treeAdapter = treeAdapter;\n this.handler = handler;\n this.items = [];\n this.tagIDs = [];\n this.stackTop = -1;\n this.tmplCount = 0;\n this.currentTagId = $.UNKNOWN;\n this.current = document;\n }\n //Index of element\n _indexOf(element) {\n return this.items.lastIndexOf(element, this.stackTop);\n }\n //Update current element\n _isInTemplate() {\n return this.currentTagId === $.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS.HTML;\n }\n _updateCurrentElement() {\n this.current = this.items[this.stackTop];\n this.currentTagId = this.tagIDs[this.stackTop];\n }\n //Mutations\n push(element, tagID) {\n this.stackTop++;\n this.items[this.stackTop] = element;\n this.current = element;\n this.tagIDs[this.stackTop] = tagID;\n this.currentTagId = tagID;\n if (this._isInTemplate()) {\n this.tmplCount++;\n }\n this.handler.onItemPush(element, tagID, true);\n }\n pop() {\n const popped = this.current;\n if (this.tmplCount > 0 && this._isInTemplate()) {\n this.tmplCount--;\n }\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(popped, true);\n }\n replace(oldElement, newElement) {\n const idx = this._indexOf(oldElement);\n this.items[idx] = newElement;\n if (idx === this.stackTop) {\n this.current = newElement;\n }\n }\n insertAfter(referenceElement, newElement, newElementID) {\n const insertionIdx = this._indexOf(referenceElement) + 1;\n this.items.splice(insertionIdx, 0, newElement);\n this.tagIDs.splice(insertionIdx, 0, newElementID);\n this.stackTop++;\n if (insertionIdx === this.stackTop) {\n this._updateCurrentElement();\n }\n if (this.current && this.currentTagId !== undefined) {\n this.handler.onItemPush(this.current, this.currentTagId, insertionIdx === this.stackTop);\n }\n }\n popUntilTagNamePopped(tagName) {\n let targetIdx = this.stackTop + 1;\n do {\n targetIdx = this.tagIDs.lastIndexOf(tagName, targetIdx - 1);\n } while (targetIdx > 0 && this.treeAdapter.getNamespaceURI(this.items[targetIdx]) !== NS.HTML);\n this.shortenToLength(Math.max(targetIdx, 0));\n }\n shortenToLength(idx) {\n while (this.stackTop >= idx) {\n const popped = this.current;\n if (this.tmplCount > 0 && this._isInTemplate()) {\n this.tmplCount -= 1;\n }\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(popped, this.stackTop < idx);\n }\n }\n popUntilElementPopped(element) {\n const idx = this._indexOf(element);\n this.shortenToLength(Math.max(idx, 0));\n }\n popUntilPopped(tagNames, targetNS) {\n const idx = this._indexOfTagNames(tagNames, targetNS);\n this.shortenToLength(Math.max(idx, 0));\n }\n popUntilNumberedHeaderPopped() {\n this.popUntilPopped(NUMBERED_HEADERS, NS.HTML);\n }\n popUntilTableCellPopped() {\n this.popUntilPopped(TABLE_CELLS, NS.HTML);\n }\n popAllUpToHtmlElement() {\n //NOTE: here we assume that the root <html> element is always first in the open element stack, so\n //we perform this fast stack clean up.\n this.tmplCount = 0;\n this.shortenToLength(1);\n }\n _indexOfTagNames(tagNames, namespace) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (tagNames.has(this.tagIDs[i]) && this.treeAdapter.getNamespaceURI(this.items[i]) === namespace) {\n return i;\n }\n }\n return -1;\n }\n clearBackTo(tagNames, targetNS) {\n const idx = this._indexOfTagNames(tagNames, targetNS);\n this.shortenToLength(idx + 1);\n }\n clearBackToTableContext() {\n this.clearBackTo(TABLE_CONTEXT, NS.HTML);\n }\n clearBackToTableBodyContext() {\n this.clearBackTo(TABLE_BODY_CONTEXT, NS.HTML);\n }\n clearBackToTableRowContext() {\n this.clearBackTo(TABLE_ROW_CONTEXT, NS.HTML);\n }\n remove(element) {\n const idx = this._indexOf(element);\n if (idx >= 0) {\n if (idx === this.stackTop) {\n this.pop();\n }\n else {\n this.items.splice(idx, 1);\n this.tagIDs.splice(idx, 1);\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(element, false);\n }\n }\n }\n //Search\n tryPeekProperlyNestedBodyElement() {\n //Properly nested <body> element (should be second element in stack).\n return this.stackTop >= 1 && this.tagIDs[1] === $.BODY ? this.items[1] : null;\n }\n contains(element) {\n return this._indexOf(element) > -1;\n }\n getCommonAncestor(element) {\n const elementIdx = this._indexOf(element) - 1;\n return elementIdx >= 0 ? this.items[elementIdx] : null;\n }\n isRootHtmlElementCurrent() {\n return this.stackTop === 0 && this.tagIDs[0] === $.HTML;\n }\n //Element in scope\n hasInDynamicScope(tagName, htmlScope) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n switch (this.treeAdapter.getNamespaceURI(this.items[i])) {\n case NS.HTML: {\n if (tn === tagName)\n return true;\n if (htmlScope.has(tn))\n return false;\n break;\n }\n case NS.SVG: {\n if (SCOPING_ELEMENTS_SVG.has(tn))\n return false;\n break;\n }\n case NS.MATHML: {\n if (SCOPING_ELEMENTS_MATHML.has(tn))\n return false;\n break;\n }\n }\n }\n return true;\n }\n hasInScope(tagName) {\n return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML);\n }\n hasInListItemScope(tagName) {\n return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_LIST);\n }\n hasInButtonScope(tagName) {\n return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_BUTTON);\n }\n hasNumberedHeaderInScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n switch (this.treeAdapter.getNamespaceURI(this.items[i])) {\n case NS.HTML: {\n if (NUMBERED_HEADERS.has(tn))\n return true;\n if (SCOPING_ELEMENTS_HTML.has(tn))\n return false;\n break;\n }\n case NS.SVG: {\n if (SCOPING_ELEMENTS_SVG.has(tn))\n return false;\n break;\n }\n case NS.MATHML: {\n if (SCOPING_ELEMENTS_MATHML.has(tn))\n return false;\n break;\n }\n }\n }\n return true;\n }\n hasInTableScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) {\n continue;\n }\n switch (this.tagIDs[i]) {\n case tagName: {\n return true;\n }\n case $.TABLE:\n case $.HTML: {\n return false;\n }\n }\n }\n return true;\n }\n hasTableBodyContextInTableScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) {\n continue;\n }\n switch (this.tagIDs[i]) {\n case $.TBODY:\n case $.THEAD:\n case $.TFOOT: {\n return true;\n }\n case $.TABLE:\n case $.HTML: {\n return false;\n }\n }\n }\n return true;\n }\n hasInSelectScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) {\n continue;\n }\n switch (this.tagIDs[i]) {\n case tagName: {\n return true;\n }\n case $.OPTION:\n case $.OPTGROUP: {\n break;\n }\n default: {\n return false;\n }\n }\n }\n return true;\n }\n //Implied end tags\n generateImpliedEndTags() {\n while (this.currentTagId !== undefined && IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)) {\n this.pop();\n }\n }\n generateImpliedEndTagsThoroughly() {\n while (this.currentTagId !== undefined && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n this.pop();\n }\n }\n generateImpliedEndTagsWithExclusion(exclusionId) {\n while (this.currentTagId !== undefined &&\n this.currentTagId !== exclusionId &&\n IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n this.pop();\n }\n }\n}\n",
59
- "//Const\nconst NOAH_ARK_CAPACITY = 3;\nexport var EntryType;\n(function (EntryType) {\n EntryType[EntryType[\"Marker\"] = 0] = \"Marker\";\n EntryType[EntryType[\"Element\"] = 1] = \"Element\";\n})(EntryType || (EntryType = {}));\nconst MARKER = { type: EntryType.Marker };\n//List of formatting elements\nexport class FormattingElementList {\n constructor(treeAdapter) {\n this.treeAdapter = treeAdapter;\n this.entries = [];\n this.bookmark = null;\n }\n //Noah Ark's condition\n //OPTIMIZATION: at first we try to find possible candidates for exclusion using\n //lightweight heuristics without thorough attributes check.\n _getNoahArkConditionCandidates(newElement, neAttrs) {\n const candidates = [];\n const neAttrsLength = neAttrs.length;\n const neTagName = this.treeAdapter.getTagName(newElement);\n const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement);\n for (let i = 0; i < this.entries.length; i++) {\n const entry = this.entries[i];\n if (entry.type === EntryType.Marker) {\n break;\n }\n const { element } = entry;\n if (this.treeAdapter.getTagName(element) === neTagName &&\n this.treeAdapter.getNamespaceURI(element) === neNamespaceURI) {\n const elementAttrs = this.treeAdapter.getAttrList(element);\n if (elementAttrs.length === neAttrsLength) {\n candidates.push({ idx: i, attrs: elementAttrs });\n }\n }\n }\n return candidates;\n }\n _ensureNoahArkCondition(newElement) {\n if (this.entries.length < NOAH_ARK_CAPACITY)\n return;\n const neAttrs = this.treeAdapter.getAttrList(newElement);\n const candidates = this._getNoahArkConditionCandidates(newElement, neAttrs);\n if (candidates.length < NOAH_ARK_CAPACITY)\n return;\n //NOTE: build attrs map for the new element, so we can perform fast lookups\n const neAttrsMap = new Map(neAttrs.map((neAttr) => [neAttr.name, neAttr.value]));\n let validCandidates = 0;\n //NOTE: remove bottommost candidates, until Noah's Ark condition will not be met\n for (let i = 0; i < candidates.length; i++) {\n const candidate = candidates[i];\n // We know that `candidate.attrs.length === neAttrs.length`\n if (candidate.attrs.every((cAttr) => neAttrsMap.get(cAttr.name) === cAttr.value)) {\n validCandidates += 1;\n if (validCandidates >= NOAH_ARK_CAPACITY) {\n this.entries.splice(candidate.idx, 1);\n }\n }\n }\n }\n //Mutations\n insertMarker() {\n this.entries.unshift(MARKER);\n }\n pushElement(element, token) {\n this._ensureNoahArkCondition(element);\n this.entries.unshift({\n type: EntryType.Element,\n element,\n token,\n });\n }\n insertElementAfterBookmark(element, token) {\n const bookmarkIdx = this.entries.indexOf(this.bookmark);\n this.entries.splice(bookmarkIdx, 0, {\n type: EntryType.Element,\n element,\n token,\n });\n }\n removeEntry(entry) {\n const entryIndex = this.entries.indexOf(entry);\n if (entryIndex !== -1) {\n this.entries.splice(entryIndex, 1);\n }\n }\n /**\n * Clears the list of formatting elements up to the last marker.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#clear-the-list-of-active-formatting-elements-up-to-the-last-marker\n */\n clearToLastMarker() {\n const markerIdx = this.entries.indexOf(MARKER);\n if (markerIdx === -1) {\n this.entries.length = 0;\n }\n else {\n this.entries.splice(0, markerIdx + 1);\n }\n }\n //Search\n getElementEntryInScopeWithTagName(tagName) {\n const entry = this.entries.find((entry) => entry.type === EntryType.Marker || this.treeAdapter.getTagName(entry.element) === tagName);\n return entry && entry.type === EntryType.Element ? entry : null;\n }\n getElementEntry(element) {\n return this.entries.find((entry) => entry.type === EntryType.Element && entry.element === element);\n }\n}\n",
60
- "import { DOCUMENT_MODE } from '../common/html.js';\nexport const defaultTreeAdapter = {\n //Node construction\n createDocument() {\n return {\n nodeName: '#document',\n mode: DOCUMENT_MODE.NO_QUIRKS,\n childNodes: [],\n };\n },\n createDocumentFragment() {\n return {\n nodeName: '#document-fragment',\n childNodes: [],\n };\n },\n createElement(tagName, namespaceURI, attrs) {\n return {\n nodeName: tagName,\n tagName,\n attrs,\n namespaceURI,\n childNodes: [],\n parentNode: null,\n };\n },\n createCommentNode(data) {\n return {\n nodeName: '#comment',\n data,\n parentNode: null,\n };\n },\n createTextNode(value) {\n return {\n nodeName: '#text',\n value,\n parentNode: null,\n };\n },\n //Tree mutation\n appendChild(parentNode, newNode) {\n parentNode.childNodes.push(newNode);\n newNode.parentNode = parentNode;\n },\n insertBefore(parentNode, newNode, referenceNode) {\n const insertionIdx = parentNode.childNodes.indexOf(referenceNode);\n parentNode.childNodes.splice(insertionIdx, 0, newNode);\n newNode.parentNode = parentNode;\n },\n setTemplateContent(templateElement, contentElement) {\n templateElement.content = contentElement;\n },\n getTemplateContent(templateElement) {\n return templateElement.content;\n },\n setDocumentType(document, name, publicId, systemId) {\n const doctypeNode = document.childNodes.find((node) => node.nodeName === '#documentType');\n if (doctypeNode) {\n doctypeNode.name = name;\n doctypeNode.publicId = publicId;\n doctypeNode.systemId = systemId;\n }\n else {\n const node = {\n nodeName: '#documentType',\n name,\n publicId,\n systemId,\n parentNode: null,\n };\n defaultTreeAdapter.appendChild(document, node);\n }\n },\n setDocumentMode(document, mode) {\n document.mode = mode;\n },\n getDocumentMode(document) {\n return document.mode;\n },\n detachNode(node) {\n if (node.parentNode) {\n const idx = node.parentNode.childNodes.indexOf(node);\n node.parentNode.childNodes.splice(idx, 1);\n node.parentNode = null;\n }\n },\n insertText(parentNode, text) {\n if (parentNode.childNodes.length > 0) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1];\n if (defaultTreeAdapter.isTextNode(prevNode)) {\n prevNode.value += text;\n return;\n }\n }\n defaultTreeAdapter.appendChild(parentNode, defaultTreeAdapter.createTextNode(text));\n },\n insertTextBefore(parentNode, text, referenceNode) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1];\n if (prevNode && defaultTreeAdapter.isTextNode(prevNode)) {\n prevNode.value += text;\n }\n else {\n defaultTreeAdapter.insertBefore(parentNode, defaultTreeAdapter.createTextNode(text), referenceNode);\n }\n },\n adoptAttributes(recipient, attrs) {\n const recipientAttrsMap = new Set(recipient.attrs.map((attr) => attr.name));\n for (let j = 0; j < attrs.length; j++) {\n if (!recipientAttrsMap.has(attrs[j].name)) {\n recipient.attrs.push(attrs[j]);\n }\n }\n },\n //Tree traversing\n getFirstChild(node) {\n return node.childNodes[0];\n },\n getChildNodes(node) {\n return node.childNodes;\n },\n getParentNode(node) {\n return node.parentNode;\n },\n getAttrList(element) {\n return element.attrs;\n },\n //Node data\n getTagName(element) {\n return element.tagName;\n },\n getNamespaceURI(element) {\n return element.namespaceURI;\n },\n getTextNodeContent(textNode) {\n return textNode.value;\n },\n getCommentNodeContent(commentNode) {\n return commentNode.data;\n },\n getDocumentTypeNodeName(doctypeNode) {\n return doctypeNode.name;\n },\n getDocumentTypeNodePublicId(doctypeNode) {\n return doctypeNode.publicId;\n },\n getDocumentTypeNodeSystemId(doctypeNode) {\n return doctypeNode.systemId;\n },\n //Node types\n isTextNode(node) {\n return node.nodeName === '#text';\n },\n isCommentNode(node) {\n return node.nodeName === '#comment';\n },\n isDocumentTypeNode(node) {\n return node.nodeName === '#documentType';\n },\n isElementNode(node) {\n return Object.prototype.hasOwnProperty.call(node, 'tagName');\n },\n // Source code location\n setNodeSourceCodeLocation(node, location) {\n node.sourceCodeLocation = location;\n },\n getNodeSourceCodeLocation(node) {\n return node.sourceCodeLocation;\n },\n updateNodeSourceCodeLocation(node, endLocation) {\n node.sourceCodeLocation = { ...node.sourceCodeLocation, ...endLocation };\n },\n};\n",
61
- "import { DOCUMENT_MODE } from './html.js';\n//Const\nconst VALID_DOCTYPE_NAME = 'html';\nconst VALID_SYSTEM_ID = 'about:legacy-compat';\nconst QUIRKS_MODE_SYSTEM_ID = 'http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd';\nconst QUIRKS_MODE_PUBLIC_ID_PREFIXES = [\n '+//silmaril//dtd html pro v0r11 19970101//',\n '-//as//dtd html 3.0 aswedit + extensions//',\n '-//advasoft ltd//dtd html 3.0 aswedit + extensions//',\n '-//ietf//dtd html 2.0 level 1//',\n '-//ietf//dtd html 2.0 level 2//',\n '-//ietf//dtd html 2.0 strict level 1//',\n '-//ietf//dtd html 2.0 strict level 2//',\n '-//ietf//dtd html 2.0 strict//',\n '-//ietf//dtd html 2.0//',\n '-//ietf//dtd html 2.1e//',\n '-//ietf//dtd html 3.0//',\n '-//ietf//dtd html 3.2 final//',\n '-//ietf//dtd html 3.2//',\n '-//ietf//dtd html 3//',\n '-//ietf//dtd html level 0//',\n '-//ietf//dtd html level 1//',\n '-//ietf//dtd html level 2//',\n '-//ietf//dtd html level 3//',\n '-//ietf//dtd html strict level 0//',\n '-//ietf//dtd html strict level 1//',\n '-//ietf//dtd html strict level 2//',\n '-//ietf//dtd html strict level 3//',\n '-//ietf//dtd html strict//',\n '-//ietf//dtd html//',\n '-//metrius//dtd metrius presentational//',\n '-//microsoft//dtd internet explorer 2.0 html strict//',\n '-//microsoft//dtd internet explorer 2.0 html//',\n '-//microsoft//dtd internet explorer 2.0 tables//',\n '-//microsoft//dtd internet explorer 3.0 html strict//',\n '-//microsoft//dtd internet explorer 3.0 html//',\n '-//microsoft//dtd internet explorer 3.0 tables//',\n '-//netscape comm. corp.//dtd html//',\n '-//netscape comm. corp.//dtd strict html//',\n \"-//o'reilly and associates//dtd html 2.0//\",\n \"-//o'reilly and associates//dtd html extended 1.0//\",\n \"-//o'reilly and associates//dtd html extended relaxed 1.0//\",\n '-//sq//dtd html 2.0 hotmetal + extensions//',\n '-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//',\n '-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//',\n '-//spyglass//dtd html 2.0 extended//',\n '-//sun microsystems corp.//dtd hotjava html//',\n '-//sun microsystems corp.//dtd hotjava strict html//',\n '-//w3c//dtd html 3 1995-03-24//',\n '-//w3c//dtd html 3.2 draft//',\n '-//w3c//dtd html 3.2 final//',\n '-//w3c//dtd html 3.2//',\n '-//w3c//dtd html 3.2s draft//',\n '-//w3c//dtd html 4.0 frameset//',\n '-//w3c//dtd html 4.0 transitional//',\n '-//w3c//dtd html experimental 19960712//',\n '-//w3c//dtd html experimental 970421//',\n '-//w3c//dtd w3 html//',\n '-//w3o//dtd w3 html 3.0//',\n '-//webtechs//dtd mozilla html 2.0//',\n '-//webtechs//dtd mozilla html//',\n];\nconst QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n ...QUIRKS_MODE_PUBLIC_ID_PREFIXES,\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//',\n];\nconst QUIRKS_MODE_PUBLIC_IDS = new Set([\n '-//w3o//dtd w3 html strict 3.0//en//',\n '-/w3c/dtd html 4.0 transitional/en',\n 'html',\n]);\nconst LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ['-//w3c//dtd xhtml 1.0 frameset//', '-//w3c//dtd xhtml 1.0 transitional//'];\nconst LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n ...LIMITED_QUIRKS_PUBLIC_ID_PREFIXES,\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//',\n];\n//Utils\nfunction hasPrefix(publicId, prefixes) {\n return prefixes.some((prefix) => publicId.startsWith(prefix));\n}\n//API\nexport function isConforming(token) {\n return (token.name === VALID_DOCTYPE_NAME &&\n token.publicId === null &&\n (token.systemId === null || token.systemId === VALID_SYSTEM_ID));\n}\nexport function getDocumentMode(token) {\n if (token.name !== VALID_DOCTYPE_NAME) {\n return DOCUMENT_MODE.QUIRKS;\n }\n const { systemId } = token;\n if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) {\n return DOCUMENT_MODE.QUIRKS;\n }\n let { publicId } = token;\n if (publicId !== null) {\n publicId = publicId.toLowerCase();\n if (QUIRKS_MODE_PUBLIC_IDS.has(publicId)) {\n return DOCUMENT_MODE.QUIRKS;\n }\n let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES;\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.QUIRKS;\n }\n prefixes =\n systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES;\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.LIMITED_QUIRKS;\n }\n }\n return DOCUMENT_MODE.NO_QUIRKS;\n}\n",
62
- "import { TAG_ID as $, NS, ATTRS, getTagID } from './html.js';\n//MIME types\nconst MIME_TYPES = {\n TEXT_HTML: 'text/html',\n APPLICATION_XML: 'application/xhtml+xml',\n};\n//Attributes\nconst DEFINITION_URL_ATTR = 'definitionurl';\nconst ADJUSTED_DEFINITION_URL_ATTR = 'definitionURL';\nconst SVG_ATTRS_ADJUSTMENT_MAP = new Map([\n 'attributeName',\n 'attributeType',\n 'baseFrequency',\n 'baseProfile',\n 'calcMode',\n 'clipPathUnits',\n 'diffuseConstant',\n 'edgeMode',\n 'filterUnits',\n 'glyphRef',\n 'gradientTransform',\n 'gradientUnits',\n 'kernelMatrix',\n 'kernelUnitLength',\n 'keyPoints',\n 'keySplines',\n 'keyTimes',\n 'lengthAdjust',\n 'limitingConeAngle',\n 'markerHeight',\n 'markerUnits',\n 'markerWidth',\n 'maskContentUnits',\n 'maskUnits',\n 'numOctaves',\n 'pathLength',\n 'patternContentUnits',\n 'patternTransform',\n 'patternUnits',\n 'pointsAtX',\n 'pointsAtY',\n 'pointsAtZ',\n 'preserveAlpha',\n 'preserveAspectRatio',\n 'primitiveUnits',\n 'refX',\n 'refY',\n 'repeatCount',\n 'repeatDur',\n 'requiredExtensions',\n 'requiredFeatures',\n 'specularConstant',\n 'specularExponent',\n 'spreadMethod',\n 'startOffset',\n 'stdDeviation',\n 'stitchTiles',\n 'surfaceScale',\n 'systemLanguage',\n 'tableValues',\n 'targetX',\n 'targetY',\n 'textLength',\n 'viewBox',\n 'viewTarget',\n 'xChannelSelector',\n 'yChannelSelector',\n 'zoomAndPan',\n].map((attr) => [attr.toLowerCase(), attr]));\nconst XML_ATTRS_ADJUSTMENT_MAP = new Map([\n ['xlink:actuate', { prefix: 'xlink', name: 'actuate', namespace: NS.XLINK }],\n ['xlink:arcrole', { prefix: 'xlink', name: 'arcrole', namespace: NS.XLINK }],\n ['xlink:href', { prefix: 'xlink', name: 'href', namespace: NS.XLINK }],\n ['xlink:role', { prefix: 'xlink', name: 'role', namespace: NS.XLINK }],\n ['xlink:show', { prefix: 'xlink', name: 'show', namespace: NS.XLINK }],\n ['xlink:title', { prefix: 'xlink', name: 'title', namespace: NS.XLINK }],\n ['xlink:type', { prefix: 'xlink', name: 'type', namespace: NS.XLINK }],\n ['xml:lang', { prefix: 'xml', name: 'lang', namespace: NS.XML }],\n ['xml:space', { prefix: 'xml', name: 'space', namespace: NS.XML }],\n ['xmlns', { prefix: '', name: 'xmlns', namespace: NS.XMLNS }],\n ['xmlns:xlink', { prefix: 'xmlns', name: 'xlink', namespace: NS.XMLNS }],\n]);\n//SVG tag names adjustment map\nexport const SVG_TAG_NAMES_ADJUSTMENT_MAP = new Map([\n 'altGlyph',\n 'altGlyphDef',\n 'altGlyphItem',\n 'animateColor',\n 'animateMotion',\n 'animateTransform',\n 'clipPath',\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n 'foreignObject',\n 'glyphRef',\n 'linearGradient',\n 'radialGradient',\n 'textPath',\n].map((tn) => [tn.toLowerCase(), tn]));\n//Tags that causes exit from foreign content\nconst EXITS_FOREIGN_CONTENT = new Set([\n $.B,\n $.BIG,\n $.BLOCKQUOTE,\n $.BODY,\n $.BR,\n $.CENTER,\n $.CODE,\n $.DD,\n $.DIV,\n $.DL,\n $.DT,\n $.EM,\n $.EMBED,\n $.H1,\n $.H2,\n $.H3,\n $.H4,\n $.H5,\n $.H6,\n $.HEAD,\n $.HR,\n $.I,\n $.IMG,\n $.LI,\n $.LISTING,\n $.MENU,\n $.META,\n $.NOBR,\n $.OL,\n $.P,\n $.PRE,\n $.RUBY,\n $.S,\n $.SMALL,\n $.SPAN,\n $.STRONG,\n $.STRIKE,\n $.SUB,\n $.SUP,\n $.TABLE,\n $.TT,\n $.U,\n $.UL,\n $.VAR,\n]);\n//Check exit from foreign content\nexport function causesExit(startTagToken) {\n const tn = startTagToken.tagID;\n const isFontWithAttrs = tn === $.FONT &&\n startTagToken.attrs.some(({ name }) => name === ATTRS.COLOR || name === ATTRS.SIZE || name === ATTRS.FACE);\n return isFontWithAttrs || EXITS_FOREIGN_CONTENT.has(tn);\n}\n//Token adjustments\nexport function adjustTokenMathMLAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n if (token.attrs[i].name === DEFINITION_URL_ATTR) {\n token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR;\n break;\n }\n }\n}\nexport function adjustTokenSVGAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n if (adjustedAttrName != null) {\n token.attrs[i].name = adjustedAttrName;\n }\n }\n}\nexport function adjustTokenXMLAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n if (adjustedAttrEntry) {\n token.attrs[i].prefix = adjustedAttrEntry.prefix;\n token.attrs[i].name = adjustedAttrEntry.name;\n token.attrs[i].namespace = adjustedAttrEntry.namespace;\n }\n }\n}\nexport function adjustTokenSVGTagName(token) {\n const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP.get(token.tagName);\n if (adjustedTagName != null) {\n token.tagName = adjustedTagName;\n token.tagID = getTagID(token.tagName);\n }\n}\n//Integration points\nfunction isMathMLTextIntegrationPoint(tn, ns) {\n return ns === NS.MATHML && (tn === $.MI || tn === $.MO || tn === $.MN || tn === $.MS || tn === $.MTEXT);\n}\nfunction isHtmlIntegrationPoint(tn, ns, attrs) {\n if (ns === NS.MATHML && tn === $.ANNOTATION_XML) {\n for (let i = 0; i < attrs.length; i++) {\n if (attrs[i].name === ATTRS.ENCODING) {\n const value = attrs[i].value.toLowerCase();\n return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML;\n }\n }\n }\n return ns === NS.SVG && (tn === $.FOREIGN_OBJECT || tn === $.DESC || tn === $.TITLE);\n}\nexport function isIntegrationPoint(tn, ns, attrs, foreignNS) {\n return (((!foreignNS || foreignNS === NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs)) ||\n ((!foreignNS || foreignNS === NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns)));\n}\n",
63
- "import { Tokenizer, TokenizerMode } from '../tokenizer/index.js';\nimport { OpenElementStack } from './open-element-stack.js';\nimport { FormattingElementList, EntryType } from './formatting-element-list.js';\nimport { defaultTreeAdapter } from '../tree-adapters/default.js';\nimport * as doctype from '../common/doctype.js';\nimport * as foreignContent from '../common/foreign-content.js';\nimport { ERR } from '../common/error-codes.js';\nimport * as unicode from '../common/unicode.js';\nimport { TAG_ID as $, TAG_NAMES as TN, NS, ATTRS, SPECIAL_ELEMENTS, DOCUMENT_MODE, NUMBERED_HEADERS, getTagID, } from '../common/html.js';\nimport { TokenType, getTokenAttr, } from '../common/token.js';\n//Misc constants\nconst HIDDEN_INPUT_TYPE = 'hidden';\n//Adoption agency loops iteration count\nconst AA_OUTER_LOOP_ITER = 8;\nconst AA_INNER_LOOP_ITER = 3;\n//Insertion modes\nvar InsertionMode;\n(function (InsertionMode) {\n InsertionMode[InsertionMode[\"INITIAL\"] = 0] = \"INITIAL\";\n InsertionMode[InsertionMode[\"BEFORE_HTML\"] = 1] = \"BEFORE_HTML\";\n InsertionMode[InsertionMode[\"BEFORE_HEAD\"] = 2] = \"BEFORE_HEAD\";\n InsertionMode[InsertionMode[\"IN_HEAD\"] = 3] = \"IN_HEAD\";\n InsertionMode[InsertionMode[\"IN_HEAD_NO_SCRIPT\"] = 4] = \"IN_HEAD_NO_SCRIPT\";\n InsertionMode[InsertionMode[\"AFTER_HEAD\"] = 5] = \"AFTER_HEAD\";\n InsertionMode[InsertionMode[\"IN_BODY\"] = 6] = \"IN_BODY\";\n InsertionMode[InsertionMode[\"TEXT\"] = 7] = \"TEXT\";\n InsertionMode[InsertionMode[\"IN_TABLE\"] = 8] = \"IN_TABLE\";\n InsertionMode[InsertionMode[\"IN_TABLE_TEXT\"] = 9] = \"IN_TABLE_TEXT\";\n InsertionMode[InsertionMode[\"IN_CAPTION\"] = 10] = \"IN_CAPTION\";\n InsertionMode[InsertionMode[\"IN_COLUMN_GROUP\"] = 11] = \"IN_COLUMN_GROUP\";\n InsertionMode[InsertionMode[\"IN_TABLE_BODY\"] = 12] = \"IN_TABLE_BODY\";\n InsertionMode[InsertionMode[\"IN_ROW\"] = 13] = \"IN_ROW\";\n InsertionMode[InsertionMode[\"IN_CELL\"] = 14] = \"IN_CELL\";\n InsertionMode[InsertionMode[\"IN_SELECT\"] = 15] = \"IN_SELECT\";\n InsertionMode[InsertionMode[\"IN_SELECT_IN_TABLE\"] = 16] = \"IN_SELECT_IN_TABLE\";\n InsertionMode[InsertionMode[\"IN_TEMPLATE\"] = 17] = \"IN_TEMPLATE\";\n InsertionMode[InsertionMode[\"AFTER_BODY\"] = 18] = \"AFTER_BODY\";\n InsertionMode[InsertionMode[\"IN_FRAMESET\"] = 19] = \"IN_FRAMESET\";\n InsertionMode[InsertionMode[\"AFTER_FRAMESET\"] = 20] = \"AFTER_FRAMESET\";\n InsertionMode[InsertionMode[\"AFTER_AFTER_BODY\"] = 21] = \"AFTER_AFTER_BODY\";\n InsertionMode[InsertionMode[\"AFTER_AFTER_FRAMESET\"] = 22] = \"AFTER_AFTER_FRAMESET\";\n})(InsertionMode || (InsertionMode = {}));\nconst BASE_LOC = {\n startLine: -1,\n startCol: -1,\n startOffset: -1,\n endLine: -1,\n endCol: -1,\n endOffset: -1,\n};\nconst TABLE_STRUCTURE_TAGS = new Set([$.TABLE, $.TBODY, $.TFOOT, $.THEAD, $.TR]);\nconst defaultParserOptions = {\n scriptingEnabled: true,\n sourceCodeLocationInfo: false,\n treeAdapter: defaultTreeAdapter,\n onParseError: null,\n};\n//Parser\nexport class Parser {\n constructor(options, document, \n /** @internal */\n fragmentContext = null, \n /** @internal */\n scriptHandler = null) {\n this.fragmentContext = fragmentContext;\n this.scriptHandler = scriptHandler;\n this.currentToken = null;\n this.stopped = false;\n /** @internal */\n this.insertionMode = InsertionMode.INITIAL;\n /** @internal */\n this.originalInsertionMode = InsertionMode.INITIAL;\n /** @internal */\n this.headElement = null;\n /** @internal */\n this.formElement = null;\n /** Indicates that the current node is not an element in the HTML namespace */\n this.currentNotInHTML = false;\n /**\n * The template insertion mode stack is maintained from the left.\n * Ie. the topmost element will always have index 0.\n *\n * @internal\n */\n this.tmplInsertionModeStack = [];\n /** @internal */\n this.pendingCharacterTokens = [];\n /** @internal */\n this.hasNonWhitespacePendingCharacterToken = false;\n /** @internal */\n this.framesetOk = true;\n /** @internal */\n this.skipNextNewLine = false;\n /** @internal */\n this.fosterParentingEnabled = false;\n this.options = {\n ...defaultParserOptions,\n ...options,\n };\n this.treeAdapter = this.options.treeAdapter;\n this.onParseError = this.options.onParseError;\n // Always enable location info if we report parse errors.\n if (this.onParseError) {\n this.options.sourceCodeLocationInfo = true;\n }\n this.document = document !== null && document !== void 0 ? document : this.treeAdapter.createDocument();\n this.tokenizer = new Tokenizer(this.options, this);\n this.activeFormattingElements = new FormattingElementList(this.treeAdapter);\n this.fragmentContextID = fragmentContext ? getTagID(this.treeAdapter.getTagName(fragmentContext)) : $.UNKNOWN;\n this._setContextModes(fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : this.document, this.fragmentContextID);\n this.openElements = new OpenElementStack(this.document, this.treeAdapter, this);\n }\n // API\n static parse(html, options) {\n const parser = new this(options);\n parser.tokenizer.write(html, true);\n return parser.document;\n }\n static getFragmentParser(fragmentContext, options) {\n const opts = {\n ...defaultParserOptions,\n ...options,\n };\n //NOTE: use a <template> element as the fragment context if no context element was provided,\n //so we will parse in a \"forgiving\" manner\n fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : (fragmentContext = opts.treeAdapter.createElement(TN.TEMPLATE, NS.HTML, []));\n //NOTE: create a fake element which will be used as the `document` for fragment parsing.\n //This is important for jsdom, where a new `document` cannot be created. This led to\n //fragment parsing messing with the main `document`.\n const documentMock = opts.treeAdapter.createElement('documentmock', NS.HTML, []);\n const parser = new this(opts, documentMock, fragmentContext);\n if (parser.fragmentContextID === $.TEMPLATE) {\n parser.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n }\n parser._initTokenizerForFragmentParsing();\n parser._insertFakeRootElement();\n parser._resetInsertionMode();\n parser._findFormInFragmentContext();\n return parser;\n }\n getFragment() {\n const rootElement = this.treeAdapter.getFirstChild(this.document);\n const fragment = this.treeAdapter.createDocumentFragment();\n this._adoptNodes(rootElement, fragment);\n return fragment;\n }\n //Errors\n /** @internal */\n _err(token, code, beforeToken) {\n var _a;\n if (!this.onParseError)\n return;\n const loc = (_a = token.location) !== null && _a !== void 0 ? _a : BASE_LOC;\n const err = {\n code,\n startLine: loc.startLine,\n startCol: loc.startCol,\n startOffset: loc.startOffset,\n endLine: beforeToken ? loc.startLine : loc.endLine,\n endCol: beforeToken ? loc.startCol : loc.endCol,\n endOffset: beforeToken ? loc.startOffset : loc.endOffset,\n };\n this.onParseError(err);\n }\n //Stack events\n /** @internal */\n onItemPush(node, tid, isTop) {\n var _a, _b;\n (_b = (_a = this.treeAdapter).onItemPush) === null || _b === void 0 ? void 0 : _b.call(_a, node);\n if (isTop && this.openElements.stackTop > 0)\n this._setContextModes(node, tid);\n }\n /** @internal */\n onItemPop(node, isTop) {\n var _a, _b;\n if (this.options.sourceCodeLocationInfo) {\n this._setEndLocation(node, this.currentToken);\n }\n (_b = (_a = this.treeAdapter).onItemPop) === null || _b === void 0 ? void 0 : _b.call(_a, node, this.openElements.current);\n if (isTop) {\n let current;\n let currentTagId;\n if (this.openElements.stackTop === 0 && this.fragmentContext) {\n current = this.fragmentContext;\n currentTagId = this.fragmentContextID;\n }\n else {\n ({ current, currentTagId } = this.openElements);\n }\n this._setContextModes(current, currentTagId);\n }\n }\n _setContextModes(current, tid) {\n const isHTML = current === this.document || (current && this.treeAdapter.getNamespaceURI(current) === NS.HTML);\n this.currentNotInHTML = !isHTML;\n this.tokenizer.inForeignNode =\n !isHTML && current !== undefined && tid !== undefined && !this._isIntegrationPoint(tid, current);\n }\n /** @protected */\n _switchToTextParsing(currentToken, nextTokenizerState) {\n this._insertElement(currentToken, NS.HTML);\n this.tokenizer.state = nextTokenizerState;\n this.originalInsertionMode = this.insertionMode;\n this.insertionMode = InsertionMode.TEXT;\n }\n switchToPlaintextParsing() {\n this.insertionMode = InsertionMode.TEXT;\n this.originalInsertionMode = InsertionMode.IN_BODY;\n this.tokenizer.state = TokenizerMode.PLAINTEXT;\n }\n //Fragment parsing\n /** @protected */\n _getAdjustedCurrentElement() {\n return this.openElements.stackTop === 0 && this.fragmentContext\n ? this.fragmentContext\n : this.openElements.current;\n }\n /** @protected */\n _findFormInFragmentContext() {\n let node = this.fragmentContext;\n while (node) {\n if (this.treeAdapter.getTagName(node) === TN.FORM) {\n this.formElement = node;\n break;\n }\n node = this.treeAdapter.getParentNode(node);\n }\n }\n _initTokenizerForFragmentParsing() {\n if (!this.fragmentContext || this.treeAdapter.getNamespaceURI(this.fragmentContext) !== NS.HTML) {\n return;\n }\n switch (this.fragmentContextID) {\n case $.TITLE:\n case $.TEXTAREA: {\n this.tokenizer.state = TokenizerMode.RCDATA;\n break;\n }\n case $.STYLE:\n case $.XMP:\n case $.IFRAME:\n case $.NOEMBED:\n case $.NOFRAMES:\n case $.NOSCRIPT: {\n this.tokenizer.state = TokenizerMode.RAWTEXT;\n break;\n }\n case $.SCRIPT: {\n this.tokenizer.state = TokenizerMode.SCRIPT_DATA;\n break;\n }\n case $.PLAINTEXT: {\n this.tokenizer.state = TokenizerMode.PLAINTEXT;\n break;\n }\n default:\n // Do nothing\n }\n }\n //Tree mutation\n /** @protected */\n _setDocumentType(token) {\n const name = token.name || '';\n const publicId = token.publicId || '';\n const systemId = token.systemId || '';\n this.treeAdapter.setDocumentType(this.document, name, publicId, systemId);\n if (token.location) {\n const documentChildren = this.treeAdapter.getChildNodes(this.document);\n const docTypeNode = documentChildren.find((node) => this.treeAdapter.isDocumentTypeNode(node));\n if (docTypeNode) {\n this.treeAdapter.setNodeSourceCodeLocation(docTypeNode, token.location);\n }\n }\n }\n /** @protected */\n _attachElementToTree(element, location) {\n if (this.options.sourceCodeLocationInfo) {\n const loc = location && {\n ...location,\n startTag: location,\n };\n this.treeAdapter.setNodeSourceCodeLocation(element, loc);\n }\n if (this._shouldFosterParentOnInsertion()) {\n this._fosterParentElement(element);\n }\n else {\n const parent = this.openElements.currentTmplContentOrNode;\n this.treeAdapter.appendChild(parent !== null && parent !== void 0 ? parent : this.document, element);\n }\n }\n /**\n * For self-closing tags. Add an element to the tree, but skip adding it\n * to the stack.\n */\n /** @protected */\n _appendElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n this._attachElementToTree(element, token.location);\n }\n /** @protected */\n _insertElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n this._attachElementToTree(element, token.location);\n this.openElements.push(element, token.tagID);\n }\n /** @protected */\n _insertFakeElement(tagName, tagID) {\n const element = this.treeAdapter.createElement(tagName, NS.HTML, []);\n this._attachElementToTree(element, null);\n this.openElements.push(element, tagID);\n }\n /** @protected */\n _insertTemplate(token) {\n const tmpl = this.treeAdapter.createElement(token.tagName, NS.HTML, token.attrs);\n const content = this.treeAdapter.createDocumentFragment();\n this.treeAdapter.setTemplateContent(tmpl, content);\n this._attachElementToTree(tmpl, token.location);\n this.openElements.push(tmpl, token.tagID);\n if (this.options.sourceCodeLocationInfo)\n this.treeAdapter.setNodeSourceCodeLocation(content, null);\n }\n /** @protected */\n _insertFakeRootElement() {\n const element = this.treeAdapter.createElement(TN.HTML, NS.HTML, []);\n if (this.options.sourceCodeLocationInfo)\n this.treeAdapter.setNodeSourceCodeLocation(element, null);\n this.treeAdapter.appendChild(this.openElements.current, element);\n this.openElements.push(element, $.HTML);\n }\n /** @protected */\n _appendCommentNode(token, parent) {\n const commentNode = this.treeAdapter.createCommentNode(token.data);\n this.treeAdapter.appendChild(parent, commentNode);\n if (this.options.sourceCodeLocationInfo) {\n this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location);\n }\n }\n /** @protected */\n _insertCharacters(token) {\n let parent;\n let beforeElement;\n if (this._shouldFosterParentOnInsertion()) {\n ({ parent, beforeElement } = this._findFosterParentingLocation());\n if (beforeElement) {\n this.treeAdapter.insertTextBefore(parent, token.chars, beforeElement);\n }\n else {\n this.treeAdapter.insertText(parent, token.chars);\n }\n }\n else {\n parent = this.openElements.currentTmplContentOrNode;\n this.treeAdapter.insertText(parent, token.chars);\n }\n if (!token.location)\n return;\n const siblings = this.treeAdapter.getChildNodes(parent);\n const textNodeIdx = beforeElement ? siblings.lastIndexOf(beforeElement) : siblings.length;\n const textNode = siblings[textNodeIdx - 1];\n //NOTE: if we have a location assigned by another token, then just update the end position\n const tnLoc = this.treeAdapter.getNodeSourceCodeLocation(textNode);\n if (tnLoc) {\n const { endLine, endCol, endOffset } = token.location;\n this.treeAdapter.updateNodeSourceCodeLocation(textNode, { endLine, endCol, endOffset });\n }\n else if (this.options.sourceCodeLocationInfo) {\n this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location);\n }\n }\n /** @protected */\n _adoptNodes(donor, recipient) {\n for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) {\n this.treeAdapter.detachNode(child);\n this.treeAdapter.appendChild(recipient, child);\n }\n }\n /** @protected */\n _setEndLocation(element, closingToken) {\n if (this.treeAdapter.getNodeSourceCodeLocation(element) && closingToken.location) {\n const ctLoc = closingToken.location;\n const tn = this.treeAdapter.getTagName(element);\n const endLoc = \n // NOTE: For cases like <p> <p> </p> - First 'p' closes without a closing\n // tag and for cases like <td> <p> </td> - 'p' closes without a closing tag.\n closingToken.type === TokenType.END_TAG && tn === closingToken.tagName\n ? {\n endTag: { ...ctLoc },\n endLine: ctLoc.endLine,\n endCol: ctLoc.endCol,\n endOffset: ctLoc.endOffset,\n }\n : {\n endLine: ctLoc.startLine,\n endCol: ctLoc.startCol,\n endOffset: ctLoc.startOffset,\n };\n this.treeAdapter.updateNodeSourceCodeLocation(element, endLoc);\n }\n }\n //Token processing\n shouldProcessStartTagTokenInForeignContent(token) {\n // Check that neither current === document, or ns === NS.HTML\n if (!this.currentNotInHTML)\n return false;\n let current;\n let currentTagId;\n if (this.openElements.stackTop === 0 && this.fragmentContext) {\n current = this.fragmentContext;\n currentTagId = this.fragmentContextID;\n }\n else {\n ({ current, currentTagId } = this.openElements);\n }\n if (token.tagID === $.SVG &&\n this.treeAdapter.getTagName(current) === TN.ANNOTATION_XML &&\n this.treeAdapter.getNamespaceURI(current) === NS.MATHML) {\n return false;\n }\n return (\n // Check that `current` is not an integration point for HTML or MathML elements.\n this.tokenizer.inForeignNode ||\n // If it _is_ an integration point, then we might have to check that it is not an HTML\n // integration point.\n ((token.tagID === $.MGLYPH || token.tagID === $.MALIGNMARK) &&\n currentTagId !== undefined &&\n !this._isIntegrationPoint(currentTagId, current, NS.HTML)));\n }\n /** @protected */\n _processToken(token) {\n switch (token.type) {\n case TokenType.CHARACTER: {\n this.onCharacter(token);\n break;\n }\n case TokenType.NULL_CHARACTER: {\n this.onNullCharacter(token);\n break;\n }\n case TokenType.COMMENT: {\n this.onComment(token);\n break;\n }\n case TokenType.DOCTYPE: {\n this.onDoctype(token);\n break;\n }\n case TokenType.START_TAG: {\n this._processStartTag(token);\n break;\n }\n case TokenType.END_TAG: {\n this.onEndTag(token);\n break;\n }\n case TokenType.EOF: {\n this.onEof(token);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n this.onWhitespaceCharacter(token);\n break;\n }\n }\n }\n //Integration points\n /** @protected */\n _isIntegrationPoint(tid, element, foreignNS) {\n const ns = this.treeAdapter.getNamespaceURI(element);\n const attrs = this.treeAdapter.getAttrList(element);\n return foreignContent.isIntegrationPoint(tid, ns, attrs, foreignNS);\n }\n //Active formatting elements reconstruction\n /** @protected */\n _reconstructActiveFormattingElements() {\n const listLength = this.activeFormattingElements.entries.length;\n if (listLength) {\n const endIndex = this.activeFormattingElements.entries.findIndex((entry) => entry.type === EntryType.Marker || this.openElements.contains(entry.element));\n const unopenIdx = endIndex === -1 ? listLength - 1 : endIndex - 1;\n for (let i = unopenIdx; i >= 0; i--) {\n const entry = this.activeFormattingElements.entries[i];\n this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element));\n entry.element = this.openElements.current;\n }\n }\n }\n //Close elements\n /** @protected */\n _closeTableCell() {\n this.openElements.generateImpliedEndTags();\n this.openElements.popUntilTableCellPopped();\n this.activeFormattingElements.clearToLastMarker();\n this.insertionMode = InsertionMode.IN_ROW;\n }\n /** @protected */\n _closePElement() {\n this.openElements.generateImpliedEndTagsWithExclusion($.P);\n this.openElements.popUntilTagNamePopped($.P);\n }\n //Insertion modes\n /** @protected */\n _resetInsertionMode() {\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n //Insertion mode reset map\n switch (i === 0 && this.fragmentContext ? this.fragmentContextID : this.openElements.tagIDs[i]) {\n case $.TR: {\n this.insertionMode = InsertionMode.IN_ROW;\n return;\n }\n case $.TBODY:\n case $.THEAD:\n case $.TFOOT: {\n this.insertionMode = InsertionMode.IN_TABLE_BODY;\n return;\n }\n case $.CAPTION: {\n this.insertionMode = InsertionMode.IN_CAPTION;\n return;\n }\n case $.COLGROUP: {\n this.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n return;\n }\n case $.TABLE: {\n this.insertionMode = InsertionMode.IN_TABLE;\n return;\n }\n case $.BODY: {\n this.insertionMode = InsertionMode.IN_BODY;\n return;\n }\n case $.FRAMESET: {\n this.insertionMode = InsertionMode.IN_FRAMESET;\n return;\n }\n case $.SELECT: {\n this._resetInsertionModeForSelect(i);\n return;\n }\n case $.TEMPLATE: {\n this.insertionMode = this.tmplInsertionModeStack[0];\n return;\n }\n case $.HTML: {\n this.insertionMode = this.headElement ? InsertionMode.AFTER_HEAD : InsertionMode.BEFORE_HEAD;\n return;\n }\n case $.TD:\n case $.TH: {\n if (i > 0) {\n this.insertionMode = InsertionMode.IN_CELL;\n return;\n }\n break;\n }\n case $.HEAD: {\n if (i > 0) {\n this.insertionMode = InsertionMode.IN_HEAD;\n return;\n }\n break;\n }\n }\n }\n this.insertionMode = InsertionMode.IN_BODY;\n }\n /** @protected */\n _resetInsertionModeForSelect(selectIdx) {\n if (selectIdx > 0) {\n for (let i = selectIdx - 1; i > 0; i--) {\n const tn = this.openElements.tagIDs[i];\n if (tn === $.TEMPLATE) {\n break;\n }\n else if (tn === $.TABLE) {\n this.insertionMode = InsertionMode.IN_SELECT_IN_TABLE;\n return;\n }\n }\n }\n this.insertionMode = InsertionMode.IN_SELECT;\n }\n //Foster parenting\n /** @protected */\n _isElementCausesFosterParenting(tn) {\n return TABLE_STRUCTURE_TAGS.has(tn);\n }\n /** @protected */\n _shouldFosterParentOnInsertion() {\n return (this.fosterParentingEnabled &&\n this.openElements.currentTagId !== undefined &&\n this._isElementCausesFosterParenting(this.openElements.currentTagId));\n }\n /** @protected */\n _findFosterParentingLocation() {\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n const openElement = this.openElements.items[i];\n switch (this.openElements.tagIDs[i]) {\n case $.TEMPLATE: {\n if (this.treeAdapter.getNamespaceURI(openElement) === NS.HTML) {\n return { parent: this.treeAdapter.getTemplateContent(openElement), beforeElement: null };\n }\n break;\n }\n case $.TABLE: {\n const parent = this.treeAdapter.getParentNode(openElement);\n if (parent) {\n return { parent, beforeElement: openElement };\n }\n return { parent: this.openElements.items[i - 1], beforeElement: null };\n }\n default:\n // Do nothing\n }\n }\n return { parent: this.openElements.items[0], beforeElement: null };\n }\n /** @protected */\n _fosterParentElement(element) {\n const location = this._findFosterParentingLocation();\n if (location.beforeElement) {\n this.treeAdapter.insertBefore(location.parent, element, location.beforeElement);\n }\n else {\n this.treeAdapter.appendChild(location.parent, element);\n }\n }\n //Special elements\n /** @protected */\n _isSpecialElement(element, id) {\n const ns = this.treeAdapter.getNamespaceURI(element);\n return SPECIAL_ELEMENTS[ns].has(id);\n }\n /** @internal */\n onCharacter(token) {\n this.skipNextNewLine = false;\n if (this.tokenizer.inForeignNode) {\n characterInForeignContent(this, token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_TEMPLATE: {\n characterInBody(this, token);\n break;\n }\n case InsertionMode.TEXT:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE: {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW: {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n characterInTableText(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n tokenInColumnGroup(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n tokenAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onNullCharacter(token) {\n this.skipNextNewLine = false;\n if (this.tokenizer.inForeignNode) {\n nullCharacterInForeignContent(this, token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.TEXT: {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW: {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n tokenInColumnGroup(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n tokenAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onComment(token) {\n this.skipNextNewLine = false;\n if (this.currentNotInHTML) {\n appendComment(this, token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.INITIAL:\n case InsertionMode.BEFORE_HTML:\n case InsertionMode.BEFORE_HEAD:\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD:\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE:\n case InsertionMode.IN_TEMPLATE:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET: {\n appendComment(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n appendCommentToRootHtmlElement(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n appendCommentToDocument(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onDoctype(token) {\n this.skipNextNewLine = false;\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n doctypeInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD:\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD: {\n this._err(token, ERR.misplacedDoctype);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onStartTag(token) {\n this.skipNextNewLine = false;\n this.currentToken = token;\n this._processStartTag(token);\n if (token.selfClosing && !token.ackSelfClosing) {\n this._err(token, ERR.nonVoidHtmlElementStartTagWithTrailingSolidus);\n }\n }\n /**\n * Processes a given start tag.\n *\n * `onStartTag` checks if a self-closing tag was recognized. When a token\n * is moved inbetween multiple insertion modes, this check for self-closing\n * could lead to false positives. To avoid this, `_processStartTag` is used\n * for nested calls.\n *\n * @param token The token to process.\n * @protected\n */\n _processStartTag(token) {\n if (this.shouldProcessStartTagTokenInForeignContent(token)) {\n startTagInForeignContent(this, token);\n }\n else {\n this._startTagOutsideForeignContent(token);\n }\n }\n /** @protected */\n _startTagOutsideForeignContent(token) {\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n startTagBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n startTagBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n startTagInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n startTagInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n startTagAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY: {\n startTagInBody(this, token);\n break;\n }\n case InsertionMode.IN_TABLE: {\n startTagInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_CAPTION: {\n startTagInCaption(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n startTagInColumnGroup(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_BODY: {\n startTagInTableBody(this, token);\n break;\n }\n case InsertionMode.IN_ROW: {\n startTagInRow(this, token);\n break;\n }\n case InsertionMode.IN_CELL: {\n startTagInCell(this, token);\n break;\n }\n case InsertionMode.IN_SELECT: {\n startTagInSelect(this, token);\n break;\n }\n case InsertionMode.IN_SELECT_IN_TABLE: {\n startTagInSelectInTable(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE: {\n startTagInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n startTagAfterBody(this, token);\n break;\n }\n case InsertionMode.IN_FRAMESET: {\n startTagInFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_FRAMESET: {\n startTagAfterFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n startTagAfterAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n startTagAfterAfterFrameset(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onEndTag(token) {\n this.skipNextNewLine = false;\n this.currentToken = token;\n if (this.currentNotInHTML) {\n endTagInForeignContent(this, token);\n }\n else {\n this._endTagOutsideForeignContent(token);\n }\n }\n /** @protected */\n _endTagOutsideForeignContent(token) {\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n endTagBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n endTagBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n endTagInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n endTagInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n endTagAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY: {\n endTagInBody(this, token);\n break;\n }\n case InsertionMode.TEXT: {\n endTagInText(this, token);\n break;\n }\n case InsertionMode.IN_TABLE: {\n endTagInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_CAPTION: {\n endTagInCaption(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n endTagInColumnGroup(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_BODY: {\n endTagInTableBody(this, token);\n break;\n }\n case InsertionMode.IN_ROW: {\n endTagInRow(this, token);\n break;\n }\n case InsertionMode.IN_CELL: {\n endTagInCell(this, token);\n break;\n }\n case InsertionMode.IN_SELECT: {\n endTagInSelect(this, token);\n break;\n }\n case InsertionMode.IN_SELECT_IN_TABLE: {\n endTagInSelectInTable(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE: {\n endTagInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n endTagAfterBody(this, token);\n break;\n }\n case InsertionMode.IN_FRAMESET: {\n endTagInFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_FRAMESET: {\n endTagAfterFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onEof(token) {\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE: {\n eofInBody(this, token);\n break;\n }\n case InsertionMode.TEXT: {\n eofInText(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE: {\n eofInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET:\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n stopParsing(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onWhitespaceCharacter(token) {\n if (this.skipNextNewLine) {\n this.skipNextNewLine = false;\n if (token.chars.charCodeAt(0) === unicode.CODE_POINTS.LINE_FEED) {\n if (token.chars.length === 1) {\n return;\n }\n token.chars = token.chars.substr(1);\n }\n }\n if (this.tokenizer.inForeignNode) {\n this._insertCharacters(token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD:\n case InsertionMode.TEXT:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET: {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_TEMPLATE:\n case InsertionMode.AFTER_BODY:\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n whitespaceCharacterInBody(this, token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW: {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n whitespaceCharacterInTableText(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n}\n//Adoption agency algorithm\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html#adoptionAgency)\n//------------------------------------------------------------------\n//Steps 5-8 of the algorithm\nfunction aaObtainFormattingElementEntry(p, token) {\n let formattingElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName);\n if (formattingElementEntry) {\n if (!p.openElements.contains(formattingElementEntry.element)) {\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n formattingElementEntry = null;\n }\n else if (!p.openElements.hasInScope(token.tagID)) {\n formattingElementEntry = null;\n }\n }\n else {\n genericEndTagInBody(p, token);\n }\n return formattingElementEntry;\n}\n//Steps 9 and 10 of the algorithm\nfunction aaObtainFurthestBlock(p, formattingElementEntry) {\n let furthestBlock = null;\n let idx = p.openElements.stackTop;\n for (; idx >= 0; idx--) {\n const element = p.openElements.items[idx];\n if (element === formattingElementEntry.element) {\n break;\n }\n if (p._isSpecialElement(element, p.openElements.tagIDs[idx])) {\n furthestBlock = element;\n }\n }\n if (!furthestBlock) {\n p.openElements.shortenToLength(Math.max(idx, 0));\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n }\n return furthestBlock;\n}\n//Step 13 of the algorithm\nfunction aaInnerLoop(p, furthestBlock, formattingElement) {\n let lastElement = furthestBlock;\n let nextElement = p.openElements.getCommonAncestor(furthestBlock);\n for (let i = 0, element = nextElement; element !== formattingElement; i++, element = nextElement) {\n //NOTE: store the next element for the next loop iteration (it may be deleted from the stack by step 9.5)\n nextElement = p.openElements.getCommonAncestor(element);\n const elementEntry = p.activeFormattingElements.getElementEntry(element);\n const counterOverflow = elementEntry && i >= AA_INNER_LOOP_ITER;\n const shouldRemoveFromOpenElements = !elementEntry || counterOverflow;\n if (shouldRemoveFromOpenElements) {\n if (counterOverflow) {\n p.activeFormattingElements.removeEntry(elementEntry);\n }\n p.openElements.remove(element);\n }\n else {\n element = aaRecreateElementFromEntry(p, elementEntry);\n if (lastElement === furthestBlock) {\n p.activeFormattingElements.bookmark = elementEntry;\n }\n p.treeAdapter.detachNode(lastElement);\n p.treeAdapter.appendChild(element, lastElement);\n lastElement = element;\n }\n }\n return lastElement;\n}\n//Step 13.7 of the algorithm\nfunction aaRecreateElementFromEntry(p, elementEntry) {\n const ns = p.treeAdapter.getNamespaceURI(elementEntry.element);\n const newElement = p.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs);\n p.openElements.replace(elementEntry.element, newElement);\n elementEntry.element = newElement;\n return newElement;\n}\n//Step 14 of the algorithm\nfunction aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement) {\n const tn = p.treeAdapter.getTagName(commonAncestor);\n const tid = getTagID(tn);\n if (p._isElementCausesFosterParenting(tid)) {\n p._fosterParentElement(lastElement);\n }\n else {\n const ns = p.treeAdapter.getNamespaceURI(commonAncestor);\n if (tid === $.TEMPLATE && ns === NS.HTML) {\n commonAncestor = p.treeAdapter.getTemplateContent(commonAncestor);\n }\n p.treeAdapter.appendChild(commonAncestor, lastElement);\n }\n}\n//Steps 15-19 of the algorithm\nfunction aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry) {\n const ns = p.treeAdapter.getNamespaceURI(formattingElementEntry.element);\n const { token } = formattingElementEntry;\n const newElement = p.treeAdapter.createElement(token.tagName, ns, token.attrs);\n p._adoptNodes(furthestBlock, newElement);\n p.treeAdapter.appendChild(furthestBlock, newElement);\n p.activeFormattingElements.insertElementAfterBookmark(newElement, token);\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n p.openElements.remove(formattingElementEntry.element);\n p.openElements.insertAfter(furthestBlock, newElement, token.tagID);\n}\n//Algorithm entry point\nfunction callAdoptionAgency(p, token) {\n for (let i = 0; i < AA_OUTER_LOOP_ITER; i++) {\n const formattingElementEntry = aaObtainFormattingElementEntry(p, token);\n if (!formattingElementEntry) {\n break;\n }\n const furthestBlock = aaObtainFurthestBlock(p, formattingElementEntry);\n if (!furthestBlock) {\n break;\n }\n p.activeFormattingElements.bookmark = formattingElementEntry;\n const lastElement = aaInnerLoop(p, furthestBlock, formattingElementEntry.element);\n const commonAncestor = p.openElements.getCommonAncestor(formattingElementEntry.element);\n p.treeAdapter.detachNode(lastElement);\n if (commonAncestor)\n aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement);\n aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry);\n }\n}\n//Generic token handlers\n//------------------------------------------------------------------\nfunction appendComment(p, token) {\n p._appendCommentNode(token, p.openElements.currentTmplContentOrNode);\n}\nfunction appendCommentToRootHtmlElement(p, token) {\n p._appendCommentNode(token, p.openElements.items[0]);\n}\nfunction appendCommentToDocument(p, token) {\n p._appendCommentNode(token, p.document);\n}\nfunction stopParsing(p, token) {\n p.stopped = true;\n // NOTE: Set end locations for elements that remain on the open element stack.\n if (token.location) {\n // NOTE: If we are not in a fragment, `html` and `body` will stay on the stack.\n // This is a problem, as we might overwrite their end position here.\n const target = p.fragmentContext ? 0 : 2;\n for (let i = p.openElements.stackTop; i >= target; i--) {\n p._setEndLocation(p.openElements.items[i], token);\n }\n // Handle `html` and `body`\n if (!p.fragmentContext && p.openElements.stackTop >= 0) {\n const htmlElement = p.openElements.items[0];\n const htmlLocation = p.treeAdapter.getNodeSourceCodeLocation(htmlElement);\n if (htmlLocation && !htmlLocation.endTag) {\n p._setEndLocation(htmlElement, token);\n if (p.openElements.stackTop >= 1) {\n const bodyElement = p.openElements.items[1];\n const bodyLocation = p.treeAdapter.getNodeSourceCodeLocation(bodyElement);\n if (bodyLocation && !bodyLocation.endTag) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n }\n }\n}\n// The \"initial\" insertion mode\n//------------------------------------------------------------------\nfunction doctypeInInitialMode(p, token) {\n p._setDocumentType(token);\n const mode = token.forceQuirks ? DOCUMENT_MODE.QUIRKS : doctype.getDocumentMode(token);\n if (!doctype.isConforming(token)) {\n p._err(token, ERR.nonConformingDoctype);\n }\n p.treeAdapter.setDocumentMode(p.document, mode);\n p.insertionMode = InsertionMode.BEFORE_HTML;\n}\nfunction tokenInInitialMode(p, token) {\n p._err(token, ERR.missingDoctype, true);\n p.treeAdapter.setDocumentMode(p.document, DOCUMENT_MODE.QUIRKS);\n p.insertionMode = InsertionMode.BEFORE_HTML;\n p._processToken(token);\n}\n// The \"before html\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHtml(p, token) {\n if (token.tagID === $.HTML) {\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.BEFORE_HEAD;\n }\n else {\n tokenBeforeHtml(p, token);\n }\n}\nfunction endTagBeforeHtml(p, token) {\n const tn = token.tagID;\n if (tn === $.HTML || tn === $.HEAD || tn === $.BODY || tn === $.BR) {\n tokenBeforeHtml(p, token);\n }\n}\nfunction tokenBeforeHtml(p, token) {\n p._insertFakeRootElement();\n p.insertionMode = InsertionMode.BEFORE_HEAD;\n p._processToken(token);\n}\n// The \"before head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHead(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.HEAD: {\n p._insertElement(token, NS.HTML);\n p.headElement = p.openElements.current;\n p.insertionMode = InsertionMode.IN_HEAD;\n break;\n }\n default: {\n tokenBeforeHead(p, token);\n }\n }\n}\nfunction endTagBeforeHead(p, token) {\n const tn = token.tagID;\n if (tn === $.HEAD || tn === $.BODY || tn === $.HTML || tn === $.BR) {\n tokenBeforeHead(p, token);\n }\n else {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n}\nfunction tokenBeforeHead(p, token) {\n p._insertFakeElement(TN.HEAD, $.HEAD);\n p.headElement = p.openElements.current;\n p.insertionMode = InsertionMode.IN_HEAD;\n p._processToken(token);\n}\n// The \"in head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHead(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.BASE:\n case $.BASEFONT:\n case $.BGSOUND:\n case $.LINK:\n case $.META: {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.TITLE: {\n p._switchToTextParsing(token, TokenizerMode.RCDATA);\n break;\n }\n case $.NOSCRIPT: {\n if (p.options.scriptingEnabled) {\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n }\n else {\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_HEAD_NO_SCRIPT;\n }\n break;\n }\n case $.NOFRAMES:\n case $.STYLE: {\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n break;\n }\n case $.SCRIPT: {\n p._switchToTextParsing(token, TokenizerMode.SCRIPT_DATA);\n break;\n }\n case $.TEMPLATE: {\n p._insertTemplate(token);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_TEMPLATE;\n p.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n break;\n }\n case $.HEAD: {\n p._err(token, ERR.misplacedStartTagForHeadElement);\n break;\n }\n default: {\n tokenInHead(p, token);\n }\n }\n}\nfunction endTagInHead(p, token) {\n switch (token.tagID) {\n case $.HEAD: {\n p.openElements.pop();\n p.insertionMode = InsertionMode.AFTER_HEAD;\n break;\n }\n case $.BODY:\n case $.BR:\n case $.HTML: {\n tokenInHead(p, token);\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default: {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction templateEndTagInHead(p, token) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.generateImpliedEndTagsThoroughly();\n if (p.openElements.currentTagId !== $.TEMPLATE) {\n p._err(token, ERR.closingOfElementWithOpenChildElements);\n }\n p.openElements.popUntilTagNamePopped($.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p.tmplInsertionModeStack.shift();\n p._resetInsertionMode();\n }\n else {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n}\nfunction tokenInHead(p, token) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.AFTER_HEAD;\n p._processToken(token);\n}\n// The \"in head no script\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHeadNoScript(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.BASEFONT:\n case $.BGSOUND:\n case $.HEAD:\n case $.LINK:\n case $.META:\n case $.NOFRAMES:\n case $.STYLE: {\n startTagInHead(p, token);\n break;\n }\n case $.NOSCRIPT: {\n p._err(token, ERR.nestedNoscriptInHead);\n break;\n }\n default: {\n tokenInHeadNoScript(p, token);\n }\n }\n}\nfunction endTagInHeadNoScript(p, token) {\n switch (token.tagID) {\n case $.NOSCRIPT: {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_HEAD;\n break;\n }\n case $.BR: {\n tokenInHeadNoScript(p, token);\n break;\n }\n default: {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction tokenInHeadNoScript(p, token) {\n const errCode = token.type === TokenType.EOF ? ERR.openElementsLeftAfterEof : ERR.disallowedContentInNoscriptInHead;\n p._err(token, errCode);\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_HEAD;\n p._processToken(token);\n}\n// The \"after head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterHead(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.BODY: {\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_BODY;\n break;\n }\n case $.FRAMESET: {\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_FRAMESET;\n break;\n }\n case $.BASE:\n case $.BASEFONT:\n case $.BGSOUND:\n case $.LINK:\n case $.META:\n case $.NOFRAMES:\n case $.SCRIPT:\n case $.STYLE:\n case $.TEMPLATE:\n case $.TITLE: {\n p._err(token, ERR.abandonedHeadElementChild);\n p.openElements.push(p.headElement, $.HEAD);\n startTagInHead(p, token);\n p.openElements.remove(p.headElement);\n break;\n }\n case $.HEAD: {\n p._err(token, ERR.misplacedStartTagForHeadElement);\n break;\n }\n default: {\n tokenAfterHead(p, token);\n }\n }\n}\nfunction endTagAfterHead(p, token) {\n switch (token.tagID) {\n case $.BODY:\n case $.HTML:\n case $.BR: {\n tokenAfterHead(p, token);\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default: {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction tokenAfterHead(p, token) {\n p._insertFakeElement(TN.BODY, $.BODY);\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"in body\" insertion mode\n//------------------------------------------------------------------\nfunction modeInBody(p, token) {\n switch (token.type) {\n case TokenType.CHARACTER: {\n characterInBody(p, token);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n whitespaceCharacterInBody(p, token);\n break;\n }\n case TokenType.COMMENT: {\n appendComment(p, token);\n break;\n }\n case TokenType.START_TAG: {\n startTagInBody(p, token);\n break;\n }\n case TokenType.END_TAG: {\n endTagInBody(p, token);\n break;\n }\n case TokenType.EOF: {\n eofInBody(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction whitespaceCharacterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n}\nfunction characterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n p.framesetOk = false;\n}\nfunction htmlStartTagInBody(p, token) {\n if (p.openElements.tmplCount === 0) {\n p.treeAdapter.adoptAttributes(p.openElements.items[0], token.attrs);\n }\n}\nfunction bodyStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (bodyElement && p.openElements.tmplCount === 0) {\n p.framesetOk = false;\n p.treeAdapter.adoptAttributes(bodyElement, token.attrs);\n }\n}\nfunction framesetStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (p.framesetOk && bodyElement) {\n p.treeAdapter.detachNode(bodyElement);\n p.openElements.popAllUpToHtmlElement();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_FRAMESET;\n }\n}\nfunction addressStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction numberedHeaderStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n if (p.openElements.currentTagId !== undefined && NUMBERED_HEADERS.has(p.openElements.currentTagId)) {\n p.openElements.pop();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction preStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n //on to the next one. (Newlines at the start of pre blocks are ignored as an authoring convenience.)\n p.skipNextNewLine = true;\n p.framesetOk = false;\n}\nfunction formStartTagInBody(p, token) {\n const inTemplate = p.openElements.tmplCount > 0;\n if (!p.formElement || inTemplate) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n if (!inTemplate) {\n p.formElement = p.openElements.current;\n }\n }\n}\nfunction listItemStartTagInBody(p, token) {\n p.framesetOk = false;\n const tn = token.tagID;\n for (let i = p.openElements.stackTop; i >= 0; i--) {\n const elementId = p.openElements.tagIDs[i];\n if ((tn === $.LI && elementId === $.LI) ||\n ((tn === $.DD || tn === $.DT) && (elementId === $.DD || elementId === $.DT))) {\n p.openElements.generateImpliedEndTagsWithExclusion(elementId);\n p.openElements.popUntilTagNamePopped(elementId);\n break;\n }\n if (elementId !== $.ADDRESS &&\n elementId !== $.DIV &&\n elementId !== $.P &&\n p._isSpecialElement(p.openElements.items[i], elementId)) {\n break;\n }\n }\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction plaintextStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n p.tokenizer.state = TokenizerMode.PLAINTEXT;\n}\nfunction buttonStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.BUTTON)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.BUTTON);\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n}\nfunction aStartTagInBody(p, token) {\n const activeElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(TN.A);\n if (activeElementEntry) {\n callAdoptionAgency(p, token);\n p.openElements.remove(activeElementEntry.element);\n p.activeFormattingElements.removeEntry(activeElementEntry);\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction bStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction nobrStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n if (p.openElements.hasInScope($.NOBR)) {\n callAdoptionAgency(p, token);\n p._reconstructActiveFormattingElements();\n }\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction appletStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n}\nfunction tableStartTagInBody(p, token) {\n if (p.treeAdapter.getDocumentMode(p.document) !== DOCUMENT_MODE.QUIRKS && p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_TABLE;\n}\nfunction areaStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\nfunction isHiddenInput(token) {\n const inputType = getTokenAttr(token, ATTRS.TYPE);\n return inputType != null && inputType.toLowerCase() === HIDDEN_INPUT_TYPE;\n}\nfunction inputStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, NS.HTML);\n if (!isHiddenInput(token)) {\n p.framesetOk = false;\n }\n token.ackSelfClosing = true;\n}\nfunction paramStartTagInBody(p, token) {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n}\nfunction hrStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._appendElement(token, NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\nfunction imageStartTagInBody(p, token) {\n token.tagName = TN.IMG;\n token.tagID = $.IMG;\n areaStartTagInBody(p, token);\n}\nfunction textareaStartTagInBody(p, token) {\n p._insertElement(token, NS.HTML);\n //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n //on to the next one. (Newlines at the start of textarea elements are ignored as an authoring convenience.)\n p.skipNextNewLine = true;\n p.tokenizer.state = TokenizerMode.RCDATA;\n p.originalInsertionMode = p.insertionMode;\n p.framesetOk = false;\n p.insertionMode = InsertionMode.TEXT;\n}\nfunction xmpStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._reconstructActiveFormattingElements();\n p.framesetOk = false;\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\nfunction iframeStartTagInBody(p, token) {\n p.framesetOk = false;\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\n//NOTE: here we assume that we always act as a user agent with enabled plugins/frames, so we parse\n//<noembed>/<noframes> as rawtext.\nfunction rawTextStartTagInBody(p, token) {\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\nfunction selectStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode =\n p.insertionMode === InsertionMode.IN_TABLE ||\n p.insertionMode === InsertionMode.IN_CAPTION ||\n p.insertionMode === InsertionMode.IN_TABLE_BODY ||\n p.insertionMode === InsertionMode.IN_ROW ||\n p.insertionMode === InsertionMode.IN_CELL\n ? InsertionMode.IN_SELECT_IN_TABLE\n : InsertionMode.IN_SELECT;\n}\nfunction optgroupStartTagInBody(p, token) {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n}\nfunction rbStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.RUBY)) {\n p.openElements.generateImpliedEndTags();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction rtStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.RUBY)) {\n p.openElements.generateImpliedEndTagsWithExclusion($.RTC);\n }\n p._insertElement(token, NS.HTML);\n}\nfunction mathStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n foreignContent.adjustTokenMathMLAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, NS.MATHML);\n }\n else {\n p._insertElement(token, NS.MATHML);\n }\n token.ackSelfClosing = true;\n}\nfunction svgStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n foreignContent.adjustTokenSVGAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, NS.SVG);\n }\n else {\n p._insertElement(token, NS.SVG);\n }\n token.ackSelfClosing = true;\n}\nfunction genericStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n}\nfunction startTagInBody(p, token) {\n switch (token.tagID) {\n case $.I:\n case $.S:\n case $.B:\n case $.U:\n case $.EM:\n case $.TT:\n case $.BIG:\n case $.CODE:\n case $.FONT:\n case $.SMALL:\n case $.STRIKE:\n case $.STRONG: {\n bStartTagInBody(p, token);\n break;\n }\n case $.A: {\n aStartTagInBody(p, token);\n break;\n }\n case $.H1:\n case $.H2:\n case $.H3:\n case $.H4:\n case $.H5:\n case $.H6: {\n numberedHeaderStartTagInBody(p, token);\n break;\n }\n case $.P:\n case $.DL:\n case $.OL:\n case $.UL:\n case $.DIV:\n case $.DIR:\n case $.NAV:\n case $.MAIN:\n case $.MENU:\n case $.ASIDE:\n case $.CENTER:\n case $.FIGURE:\n case $.FOOTER:\n case $.HEADER:\n case $.HGROUP:\n case $.DIALOG:\n case $.DETAILS:\n case $.ADDRESS:\n case $.ARTICLE:\n case $.SEARCH:\n case $.SECTION:\n case $.SUMMARY:\n case $.FIELDSET:\n case $.BLOCKQUOTE:\n case $.FIGCAPTION: {\n addressStartTagInBody(p, token);\n break;\n }\n case $.LI:\n case $.DD:\n case $.DT: {\n listItemStartTagInBody(p, token);\n break;\n }\n case $.BR:\n case $.IMG:\n case $.WBR:\n case $.AREA:\n case $.EMBED:\n case $.KEYGEN: {\n areaStartTagInBody(p, token);\n break;\n }\n case $.HR: {\n hrStartTagInBody(p, token);\n break;\n }\n case $.RB:\n case $.RTC: {\n rbStartTagInBody(p, token);\n break;\n }\n case $.RT:\n case $.RP: {\n rtStartTagInBody(p, token);\n break;\n }\n case $.PRE:\n case $.LISTING: {\n preStartTagInBody(p, token);\n break;\n }\n case $.XMP: {\n xmpStartTagInBody(p, token);\n break;\n }\n case $.SVG: {\n svgStartTagInBody(p, token);\n break;\n }\n case $.HTML: {\n htmlStartTagInBody(p, token);\n break;\n }\n case $.BASE:\n case $.LINK:\n case $.META:\n case $.STYLE:\n case $.TITLE:\n case $.SCRIPT:\n case $.BGSOUND:\n case $.BASEFONT:\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n case $.BODY: {\n bodyStartTagInBody(p, token);\n break;\n }\n case $.FORM: {\n formStartTagInBody(p, token);\n break;\n }\n case $.NOBR: {\n nobrStartTagInBody(p, token);\n break;\n }\n case $.MATH: {\n mathStartTagInBody(p, token);\n break;\n }\n case $.TABLE: {\n tableStartTagInBody(p, token);\n break;\n }\n case $.INPUT: {\n inputStartTagInBody(p, token);\n break;\n }\n case $.PARAM:\n case $.TRACK:\n case $.SOURCE: {\n paramStartTagInBody(p, token);\n break;\n }\n case $.IMAGE: {\n imageStartTagInBody(p, token);\n break;\n }\n case $.BUTTON: {\n buttonStartTagInBody(p, token);\n break;\n }\n case $.APPLET:\n case $.OBJECT:\n case $.MARQUEE: {\n appletStartTagInBody(p, token);\n break;\n }\n case $.IFRAME: {\n iframeStartTagInBody(p, token);\n break;\n }\n case $.SELECT: {\n selectStartTagInBody(p, token);\n break;\n }\n case $.OPTION:\n case $.OPTGROUP: {\n optgroupStartTagInBody(p, token);\n break;\n }\n case $.NOEMBED:\n case $.NOFRAMES: {\n rawTextStartTagInBody(p, token);\n break;\n }\n case $.FRAMESET: {\n framesetStartTagInBody(p, token);\n break;\n }\n case $.TEXTAREA: {\n textareaStartTagInBody(p, token);\n break;\n }\n case $.NOSCRIPT: {\n if (p.options.scriptingEnabled) {\n rawTextStartTagInBody(p, token);\n }\n else {\n genericStartTagInBody(p, token);\n }\n break;\n }\n case $.PLAINTEXT: {\n plaintextStartTagInBody(p, token);\n break;\n }\n case $.COL:\n case $.TH:\n case $.TD:\n case $.TR:\n case $.HEAD:\n case $.FRAME:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD:\n case $.CAPTION:\n case $.COLGROUP: {\n // Ignore token\n break;\n }\n default: {\n genericStartTagInBody(p, token);\n }\n }\n}\nfunction bodyEndTagInBody(p, token) {\n if (p.openElements.hasInScope($.BODY)) {\n p.insertionMode = InsertionMode.AFTER_BODY;\n //NOTE: <body> is never popped from the stack, so we need to updated\n //the end location explicitly.\n if (p.options.sourceCodeLocationInfo) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (bodyElement) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n}\nfunction htmlEndTagInBody(p, token) {\n if (p.openElements.hasInScope($.BODY)) {\n p.insertionMode = InsertionMode.AFTER_BODY;\n endTagAfterBody(p, token);\n }\n}\nfunction addressEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\nfunction formEndTagInBody(p) {\n const inTemplate = p.openElements.tmplCount > 0;\n const { formElement } = p;\n if (!inTemplate) {\n p.formElement = null;\n }\n if ((formElement || inTemplate) && p.openElements.hasInScope($.FORM)) {\n p.openElements.generateImpliedEndTags();\n if (inTemplate) {\n p.openElements.popUntilTagNamePopped($.FORM);\n }\n else if (formElement) {\n p.openElements.remove(formElement);\n }\n }\n}\nfunction pEndTagInBody(p) {\n if (!p.openElements.hasInButtonScope($.P)) {\n p._insertFakeElement(TN.P, $.P);\n }\n p._closePElement();\n}\nfunction liEndTagInBody(p) {\n if (p.openElements.hasInListItemScope($.LI)) {\n p.openElements.generateImpliedEndTagsWithExclusion($.LI);\n p.openElements.popUntilTagNamePopped($.LI);\n }\n}\nfunction ddEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTagsWithExclusion(tn);\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\nfunction numberedHeaderEndTagInBody(p) {\n if (p.openElements.hasNumberedHeaderInScope()) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilNumberedHeaderPopped();\n }\n}\nfunction appletEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n }\n}\nfunction brEndTagInBody(p) {\n p._reconstructActiveFormattingElements();\n p._insertFakeElement(TN.BR, $.BR);\n p.openElements.pop();\n p.framesetOk = false;\n}\nfunction genericEndTagInBody(p, token) {\n const tn = token.tagName;\n const tid = token.tagID;\n for (let i = p.openElements.stackTop; i > 0; i--) {\n const element = p.openElements.items[i];\n const elementId = p.openElements.tagIDs[i];\n // Compare the tag name here, as the tag might not be a known tag with an ID.\n if (tid === elementId && (tid !== $.UNKNOWN || p.treeAdapter.getTagName(element) === tn)) {\n p.openElements.generateImpliedEndTagsWithExclusion(tid);\n if (p.openElements.stackTop >= i)\n p.openElements.shortenToLength(i);\n break;\n }\n if (p._isSpecialElement(element, elementId)) {\n break;\n }\n }\n}\nfunction endTagInBody(p, token) {\n switch (token.tagID) {\n case $.A:\n case $.B:\n case $.I:\n case $.S:\n case $.U:\n case $.EM:\n case $.TT:\n case $.BIG:\n case $.CODE:\n case $.FONT:\n case $.NOBR:\n case $.SMALL:\n case $.STRIKE:\n case $.STRONG: {\n callAdoptionAgency(p, token);\n break;\n }\n case $.P: {\n pEndTagInBody(p);\n break;\n }\n case $.DL:\n case $.UL:\n case $.OL:\n case $.DIR:\n case $.DIV:\n case $.NAV:\n case $.PRE:\n case $.MAIN:\n case $.MENU:\n case $.ASIDE:\n case $.BUTTON:\n case $.CENTER:\n case $.FIGURE:\n case $.FOOTER:\n case $.HEADER:\n case $.HGROUP:\n case $.DIALOG:\n case $.ADDRESS:\n case $.ARTICLE:\n case $.DETAILS:\n case $.SEARCH:\n case $.SECTION:\n case $.SUMMARY:\n case $.LISTING:\n case $.FIELDSET:\n case $.BLOCKQUOTE:\n case $.FIGCAPTION: {\n addressEndTagInBody(p, token);\n break;\n }\n case $.LI: {\n liEndTagInBody(p);\n break;\n }\n case $.DD:\n case $.DT: {\n ddEndTagInBody(p, token);\n break;\n }\n case $.H1:\n case $.H2:\n case $.H3:\n case $.H4:\n case $.H5:\n case $.H6: {\n numberedHeaderEndTagInBody(p);\n break;\n }\n case $.BR: {\n brEndTagInBody(p);\n break;\n }\n case $.BODY: {\n bodyEndTagInBody(p, token);\n break;\n }\n case $.HTML: {\n htmlEndTagInBody(p, token);\n break;\n }\n case $.FORM: {\n formEndTagInBody(p);\n break;\n }\n case $.APPLET:\n case $.OBJECT:\n case $.MARQUEE: {\n appletEndTagInBody(p, token);\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default: {\n genericEndTagInBody(p, token);\n }\n }\n}\nfunction eofInBody(p, token) {\n if (p.tmplInsertionModeStack.length > 0) {\n eofInTemplate(p, token);\n }\n else {\n stopParsing(p, token);\n }\n}\n// The \"text\" insertion mode\n//------------------------------------------------------------------\nfunction endTagInText(p, token) {\n var _a;\n if (token.tagID === $.SCRIPT) {\n (_a = p.scriptHandler) === null || _a === void 0 ? void 0 : _a.call(p, p.openElements.current);\n }\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n}\nfunction eofInText(p, token) {\n p._err(token, ERR.eofInElementThatCanContainOnlyText);\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n p.onEof(token);\n}\n// The \"in table\" insertion mode\n//------------------------------------------------------------------\nfunction characterInTable(p, token) {\n if (p.openElements.currentTagId !== undefined && TABLE_STRUCTURE_TAGS.has(p.openElements.currentTagId)) {\n p.pendingCharacterTokens.length = 0;\n p.hasNonWhitespacePendingCharacterToken = false;\n p.originalInsertionMode = p.insertionMode;\n p.insertionMode = InsertionMode.IN_TABLE_TEXT;\n switch (token.type) {\n case TokenType.CHARACTER: {\n characterInTableText(p, token);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n whitespaceCharacterInTableText(p, token);\n break;\n }\n // Ignore null\n }\n }\n else {\n tokenInTable(p, token);\n }\n}\nfunction captionStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p.activeFormattingElements.insertMarker();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_CAPTION;\n}\nfunction colgroupStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n}\nfunction colStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement(TN.COLGROUP, $.COLGROUP);\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n startTagInColumnGroup(p, token);\n}\nfunction tbodyStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n}\nfunction tdStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement(TN.TBODY, $.TBODY);\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n}\nfunction tableStartTagInTable(p, token) {\n if (p.openElements.hasInTableScope($.TABLE)) {\n p.openElements.popUntilTagNamePopped($.TABLE);\n p._resetInsertionMode();\n p._processStartTag(token);\n }\n}\nfunction inputStartTagInTable(p, token) {\n if (isHiddenInput(token)) {\n p._appendElement(token, NS.HTML);\n }\n else {\n tokenInTable(p, token);\n }\n token.ackSelfClosing = true;\n}\nfunction formStartTagInTable(p, token) {\n if (!p.formElement && p.openElements.tmplCount === 0) {\n p._insertElement(token, NS.HTML);\n p.formElement = p.openElements.current;\n p.openElements.pop();\n }\n}\nfunction startTagInTable(p, token) {\n switch (token.tagID) {\n case $.TD:\n case $.TH:\n case $.TR: {\n tdStartTagInTable(p, token);\n break;\n }\n case $.STYLE:\n case $.SCRIPT:\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n case $.COL: {\n colStartTagInTable(p, token);\n break;\n }\n case $.FORM: {\n formStartTagInTable(p, token);\n break;\n }\n case $.TABLE: {\n tableStartTagInTable(p, token);\n break;\n }\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n tbodyStartTagInTable(p, token);\n break;\n }\n case $.INPUT: {\n inputStartTagInTable(p, token);\n break;\n }\n case $.CAPTION: {\n captionStartTagInTable(p, token);\n break;\n }\n case $.COLGROUP: {\n colgroupStartTagInTable(p, token);\n break;\n }\n default: {\n tokenInTable(p, token);\n }\n }\n}\nfunction endTagInTable(p, token) {\n switch (token.tagID) {\n case $.TABLE: {\n if (p.openElements.hasInTableScope($.TABLE)) {\n p.openElements.popUntilTagNamePopped($.TABLE);\n p._resetInsertionMode();\n }\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TBODY:\n case $.TD:\n case $.TFOOT:\n case $.TH:\n case $.THEAD:\n case $.TR: {\n // Ignore token\n break;\n }\n default: {\n tokenInTable(p, token);\n }\n }\n}\nfunction tokenInTable(p, token) {\n const savedFosterParentingState = p.fosterParentingEnabled;\n p.fosterParentingEnabled = true;\n // Process token in `In Body` mode\n modeInBody(p, token);\n p.fosterParentingEnabled = savedFosterParentingState;\n}\n// The \"in table text\" insertion mode\n//------------------------------------------------------------------\nfunction whitespaceCharacterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n}\nfunction characterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n p.hasNonWhitespacePendingCharacterToken = true;\n}\nfunction tokenInTableText(p, token) {\n let i = 0;\n if (p.hasNonWhitespacePendingCharacterToken) {\n for (; i < p.pendingCharacterTokens.length; i++) {\n tokenInTable(p, p.pendingCharacterTokens[i]);\n }\n }\n else {\n for (; i < p.pendingCharacterTokens.length; i++) {\n p._insertCharacters(p.pendingCharacterTokens[i]);\n }\n }\n p.insertionMode = p.originalInsertionMode;\n p._processToken(token);\n}\n// The \"in caption\" insertion mode\n//------------------------------------------------------------------\nconst TABLE_VOID_ELEMENTS = new Set([$.CAPTION, $.COL, $.COLGROUP, $.TBODY, $.TD, $.TFOOT, $.TH, $.THEAD, $.TR]);\nfunction startTagInCaption(p, token) {\n const tn = token.tagID;\n if (TABLE_VOID_ELEMENTS.has(tn)) {\n if (p.openElements.hasInTableScope($.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n }\n }\n else {\n startTagInBody(p, token);\n }\n}\nfunction endTagInCaption(p, token) {\n const tn = token.tagID;\n switch (tn) {\n case $.CAPTION:\n case $.TABLE: {\n if (p.openElements.hasInTableScope($.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_TABLE;\n if (tn === $.TABLE) {\n endTagInTable(p, token);\n }\n }\n break;\n }\n case $.BODY:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TBODY:\n case $.TD:\n case $.TFOOT:\n case $.TH:\n case $.THEAD:\n case $.TR: {\n // Ignore token\n break;\n }\n default: {\n endTagInBody(p, token);\n }\n }\n}\n// The \"in column group\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInColumnGroup(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.COL: {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n default: {\n tokenInColumnGroup(p, token);\n }\n }\n}\nfunction endTagInColumnGroup(p, token) {\n switch (token.tagID) {\n case $.COLGROUP: {\n if (p.openElements.currentTagId === $.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n }\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n case $.COL: {\n // Ignore token\n break;\n }\n default: {\n tokenInColumnGroup(p, token);\n }\n }\n}\nfunction tokenInColumnGroup(p, token) {\n if (p.openElements.currentTagId === $.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n p._processToken(token);\n }\n}\n// The \"in table body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTableBody(p, token) {\n switch (token.tagID) {\n case $.TR: {\n p.openElements.clearBackToTableBodyContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_ROW;\n break;\n }\n case $.TH:\n case $.TD: {\n p.openElements.clearBackToTableBodyContext();\n p._insertFakeElement(TN.TR, $.TR);\n p.insertionMode = InsertionMode.IN_ROW;\n startTagInRow(p, token);\n break;\n }\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n }\n break;\n }\n default: {\n startTagInTable(p, token);\n }\n }\n}\nfunction endTagInTableBody(p, token) {\n const tn = token.tagID;\n switch (token.tagID) {\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n }\n break;\n }\n case $.TABLE: {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n endTagInTable(p, token);\n }\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TD:\n case $.TH:\n case $.TR: {\n // Ignore token\n break;\n }\n default: {\n endTagInTable(p, token);\n }\n }\n}\n// The \"in row\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInRow(p, token) {\n switch (token.tagID) {\n case $.TH:\n case $.TD: {\n p.openElements.clearBackToTableRowContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_CELL;\n p.activeFormattingElements.insertMarker();\n break;\n }\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD:\n case $.TR: {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n }\n break;\n }\n default: {\n startTagInTable(p, token);\n }\n }\n}\nfunction endTagInRow(p, token) {\n switch (token.tagID) {\n case $.TR: {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n }\n break;\n }\n case $.TABLE: {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n endTagInTableBody(p, token);\n }\n break;\n }\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n if (p.openElements.hasInTableScope(token.tagID) || p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n endTagInTableBody(p, token);\n }\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TD:\n case $.TH: {\n // Ignore end tag\n break;\n }\n default: {\n endTagInTable(p, token);\n }\n }\n}\n// The \"in cell\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInCell(p, token) {\n const tn = token.tagID;\n if (TABLE_VOID_ELEMENTS.has(tn)) {\n if (p.openElements.hasInTableScope($.TD) || p.openElements.hasInTableScope($.TH)) {\n p._closeTableCell();\n startTagInRow(p, token);\n }\n }\n else {\n startTagInBody(p, token);\n }\n}\nfunction endTagInCell(p, token) {\n const tn = token.tagID;\n switch (tn) {\n case $.TD:\n case $.TH: {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_ROW;\n }\n break;\n }\n case $.TABLE:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD:\n case $.TR: {\n if (p.openElements.hasInTableScope(tn)) {\n p._closeTableCell();\n endTagInRow(p, token);\n }\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML: {\n // Ignore token\n break;\n }\n default: {\n endTagInBody(p, token);\n }\n }\n}\n// The \"in select\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelect(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.OPTION: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n p._insertElement(token, NS.HTML);\n break;\n }\n case $.OPTGROUP: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n if (p.openElements.currentTagId === $.OPTGROUP) {\n p.openElements.pop();\n }\n p._insertElement(token, NS.HTML);\n break;\n }\n case $.HR: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n if (p.openElements.currentTagId === $.OPTGROUP) {\n p.openElements.pop();\n }\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.INPUT:\n case $.KEYGEN:\n case $.TEXTAREA:\n case $.SELECT: {\n if (p.openElements.hasInSelectScope($.SELECT)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n if (token.tagID !== $.SELECT) {\n p._processStartTag(token);\n }\n }\n break;\n }\n case $.SCRIPT:\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction endTagInSelect(p, token) {\n switch (token.tagID) {\n case $.OPTGROUP: {\n if (p.openElements.stackTop > 0 &&\n p.openElements.currentTagId === $.OPTION &&\n p.openElements.tagIDs[p.openElements.stackTop - 1] === $.OPTGROUP) {\n p.openElements.pop();\n }\n if (p.openElements.currentTagId === $.OPTGROUP) {\n p.openElements.pop();\n }\n break;\n }\n case $.OPTION: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n break;\n }\n case $.SELECT: {\n if (p.openElements.hasInSelectScope($.SELECT)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n }\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\n// The \"in select in table\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelectInTable(p, token) {\n const tn = token.tagID;\n if (tn === $.CAPTION ||\n tn === $.TABLE ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR ||\n tn === $.TD ||\n tn === $.TH) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n p._processStartTag(token);\n }\n else {\n startTagInSelect(p, token);\n }\n}\nfunction endTagInSelectInTable(p, token) {\n const tn = token.tagID;\n if (tn === $.CAPTION ||\n tn === $.TABLE ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR ||\n tn === $.TD ||\n tn === $.TH) {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n p.onEndTag(token);\n }\n }\n else {\n endTagInSelect(p, token);\n }\n}\n// The \"in template\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTemplate(p, token) {\n switch (token.tagID) {\n // First, handle tags that can start without a mode change\n case $.BASE:\n case $.BASEFONT:\n case $.BGSOUND:\n case $.LINK:\n case $.META:\n case $.NOFRAMES:\n case $.SCRIPT:\n case $.STYLE:\n case $.TEMPLATE:\n case $.TITLE: {\n startTagInHead(p, token);\n break;\n }\n // Re-process the token in the appropriate mode\n case $.CAPTION:\n case $.COLGROUP:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE;\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n break;\n }\n case $.COL: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_COLUMN_GROUP;\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n startTagInColumnGroup(p, token);\n break;\n }\n case $.TR: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE_BODY;\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n break;\n }\n case $.TD:\n case $.TH: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_ROW;\n p.insertionMode = InsertionMode.IN_ROW;\n startTagInRow(p, token);\n break;\n }\n default: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_BODY;\n p.insertionMode = InsertionMode.IN_BODY;\n startTagInBody(p, token);\n }\n }\n}\nfunction endTagInTemplate(p, token) {\n if (token.tagID === $.TEMPLATE) {\n templateEndTagInHead(p, token);\n }\n}\nfunction eofInTemplate(p, token) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.popUntilTagNamePopped($.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p.tmplInsertionModeStack.shift();\n p._resetInsertionMode();\n p.onEof(token);\n }\n else {\n stopParsing(p, token);\n }\n}\n// The \"after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterBody(p, token) {\n if (token.tagID === $.HTML) {\n startTagInBody(p, token);\n }\n else {\n tokenAfterBody(p, token);\n }\n}\nfunction endTagAfterBody(p, token) {\n var _a;\n if (token.tagID === $.HTML) {\n if (!p.fragmentContext) {\n p.insertionMode = InsertionMode.AFTER_AFTER_BODY;\n }\n //NOTE: <html> is never popped from the stack, so we need to updated\n //the end location explicitly.\n if (p.options.sourceCodeLocationInfo && p.openElements.tagIDs[0] === $.HTML) {\n p._setEndLocation(p.openElements.items[0], token);\n // Update the body element, if it doesn't have an end tag\n const bodyElement = p.openElements.items[1];\n if (bodyElement && !((_a = p.treeAdapter.getNodeSourceCodeLocation(bodyElement)) === null || _a === void 0 ? void 0 : _a.endTag)) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n else {\n tokenAfterBody(p, token);\n }\n}\nfunction tokenAfterBody(p, token) {\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"in frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInFrameset(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.FRAMESET: {\n p._insertElement(token, NS.HTML);\n break;\n }\n case $.FRAME: {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.NOFRAMES: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction endTagInFrameset(p, token) {\n if (token.tagID === $.FRAMESET && !p.openElements.isRootHtmlElementCurrent()) {\n p.openElements.pop();\n if (!p.fragmentContext && p.openElements.currentTagId !== $.FRAMESET) {\n p.insertionMode = InsertionMode.AFTER_FRAMESET;\n }\n }\n}\n// The \"after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterFrameset(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.NOFRAMES: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction endTagAfterFrameset(p, token) {\n if (token.tagID === $.HTML) {\n p.insertionMode = InsertionMode.AFTER_AFTER_FRAMESET;\n }\n}\n// The \"after after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterBody(p, token) {\n if (token.tagID === $.HTML) {\n startTagInBody(p, token);\n }\n else {\n tokenAfterAfterBody(p, token);\n }\n}\nfunction tokenAfterAfterBody(p, token) {\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"after after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterFrameset(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.NOFRAMES: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\n// The rules for parsing tokens in foreign content\n//------------------------------------------------------------------\nfunction nullCharacterInForeignContent(p, token) {\n token.chars = unicode.REPLACEMENT_CHARACTER;\n p._insertCharacters(token);\n}\nfunction characterInForeignContent(p, token) {\n p._insertCharacters(token);\n p.framesetOk = false;\n}\nfunction popUntilHtmlOrIntegrationPoint(p) {\n while (p.treeAdapter.getNamespaceURI(p.openElements.current) !== NS.HTML &&\n p.openElements.currentTagId !== undefined &&\n !p._isIntegrationPoint(p.openElements.currentTagId, p.openElements.current)) {\n p.openElements.pop();\n }\n}\nfunction startTagInForeignContent(p, token) {\n if (foreignContent.causesExit(token)) {\n popUntilHtmlOrIntegrationPoint(p);\n p._startTagOutsideForeignContent(token);\n }\n else {\n const current = p._getAdjustedCurrentElement();\n const currentNs = p.treeAdapter.getNamespaceURI(current);\n if (currentNs === NS.MATHML) {\n foreignContent.adjustTokenMathMLAttrs(token);\n }\n else if (currentNs === NS.SVG) {\n foreignContent.adjustTokenSVGTagName(token);\n foreignContent.adjustTokenSVGAttrs(token);\n }\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, currentNs);\n }\n else {\n p._insertElement(token, currentNs);\n }\n token.ackSelfClosing = true;\n }\n}\nfunction endTagInForeignContent(p, token) {\n if (token.tagID === $.P || token.tagID === $.BR) {\n popUntilHtmlOrIntegrationPoint(p);\n p._endTagOutsideForeignContent(token);\n return;\n }\n for (let i = p.openElements.stackTop; i > 0; i--) {\n const element = p.openElements.items[i];\n if (p.treeAdapter.getNamespaceURI(element) === NS.HTML) {\n p._endTagOutsideForeignContent(token);\n break;\n }\n const tagName = p.treeAdapter.getTagName(element);\n if (tagName.toLowerCase() === token.tagName) {\n //NOTE: update the token tag name for `_setEndLocation`.\n token.tagName = tagName;\n p.openElements.shortenToLength(i);\n break;\n }\n }\n}\n",
64
- "import { TAG_NAMES as $, NS, hasUnescapedText } from '../common/html.js';\nimport { escapeText, escapeAttribute } from 'entities/escape';\nimport { defaultTreeAdapter } from '../tree-adapters/default.js';\n// Sets\nconst VOID_ELEMENTS = new Set([\n $.AREA,\n $.BASE,\n $.BASEFONT,\n $.BGSOUND,\n $.BR,\n $.COL,\n $.EMBED,\n $.FRAME,\n $.HR,\n $.IMG,\n $.INPUT,\n $.KEYGEN,\n $.LINK,\n $.META,\n $.PARAM,\n $.SOURCE,\n $.TRACK,\n $.WBR,\n]);\nfunction isVoidElement(node, options) {\n return (options.treeAdapter.isElementNode(node) &&\n options.treeAdapter.getNamespaceURI(node) === NS.HTML &&\n VOID_ELEMENTS.has(options.treeAdapter.getTagName(node)));\n}\nconst defaultOpts = { treeAdapter: defaultTreeAdapter, scriptingEnabled: true };\n/**\n * Serializes an AST node to an HTML string.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>');\n *\n * // Serializes a document.\n * const html = parse5.serialize(document);\n *\n * // Serializes the <html> element content.\n * const str = parse5.serialize(document.childNodes[1]);\n *\n * console.log(str); //> '<head></head><body>Hi there!</body>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */\nexport function serialize(node, options) {\n const opts = { ...defaultOpts, ...options };\n if (isVoidElement(node, opts)) {\n return '';\n }\n return serializeChildNodes(node, opts);\n}\n/**\n * Serializes an AST element node to an HTML string, including the element node.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parseFragment('<div>Hello, <b>world</b>!</div>');\n *\n * // Serializes the <div> element.\n * const str = parse5.serializeOuter(document.childNodes[0]);\n *\n * console.log(str); //> '<div>Hello, <b>world</b>!</div>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */\nexport function serializeOuter(node, options) {\n const opts = { ...defaultOpts, ...options };\n return serializeNode(node, opts);\n}\nfunction serializeChildNodes(parentNode, options) {\n let html = '';\n // Get container of the child nodes\n const container = options.treeAdapter.isElementNode(parentNode) &&\n options.treeAdapter.getTagName(parentNode) === $.TEMPLATE &&\n options.treeAdapter.getNamespaceURI(parentNode) === NS.HTML\n ? options.treeAdapter.getTemplateContent(parentNode)\n : parentNode;\n const childNodes = options.treeAdapter.getChildNodes(container);\n if (childNodes) {\n for (const currentNode of childNodes) {\n html += serializeNode(currentNode, options);\n }\n }\n return html;\n}\nfunction serializeNode(node, options) {\n if (options.treeAdapter.isElementNode(node)) {\n return serializeElement(node, options);\n }\n if (options.treeAdapter.isTextNode(node)) {\n return serializeTextNode(node, options);\n }\n if (options.treeAdapter.isCommentNode(node)) {\n return serializeCommentNode(node, options);\n }\n if (options.treeAdapter.isDocumentTypeNode(node)) {\n return serializeDocumentTypeNode(node, options);\n }\n // Return an empty string for unknown nodes\n return '';\n}\nfunction serializeElement(node, options) {\n const tn = options.treeAdapter.getTagName(node);\n return `<${tn}${serializeAttributes(node, options)}>${isVoidElement(node, options) ? '' : `${serializeChildNodes(node, options)}</${tn}>`}`;\n}\nfunction serializeAttributes(node, { treeAdapter }) {\n let html = '';\n for (const attr of treeAdapter.getAttrList(node)) {\n html += ' ';\n if (attr.namespace) {\n switch (attr.namespace) {\n case NS.XML: {\n html += `xml:${attr.name}`;\n break;\n }\n case NS.XMLNS: {\n if (attr.name !== 'xmlns') {\n html += 'xmlns:';\n }\n html += attr.name;\n break;\n }\n case NS.XLINK: {\n html += `xlink:${attr.name}`;\n break;\n }\n default: {\n html += `${attr.prefix}:${attr.name}`;\n }\n }\n }\n else {\n html += attr.name;\n }\n html += `=\"${escapeAttribute(attr.value)}\"`;\n }\n return html;\n}\nfunction serializeTextNode(node, options) {\n const { treeAdapter } = options;\n const content = treeAdapter.getTextNodeContent(node);\n const parent = treeAdapter.getParentNode(node);\n const parentTn = parent && treeAdapter.isElementNode(parent) && treeAdapter.getTagName(parent);\n return parentTn &&\n treeAdapter.getNamespaceURI(parent) === NS.HTML &&\n hasUnescapedText(parentTn, options.scriptingEnabled)\n ? content\n : escapeText(content);\n}\nfunction serializeCommentNode(node, { treeAdapter }) {\n return `<!--${treeAdapter.getCommentNodeContent(node)}-->`;\n}\nfunction serializeDocumentTypeNode(node, { treeAdapter }) {\n return `<!DOCTYPE ${treeAdapter.getDocumentTypeNodeName(node)}>`;\n}\n",
65
- "import { Parser } from './parser/index.js';\nexport { defaultTreeAdapter } from './tree-adapters/default.js';\nexport { /** @internal */ Parser } from './parser/index.js';\nexport { serialize, serializeOuter } from './serializer/index.js';\nexport { ERR as ErrorCodes } from './common/error-codes.js';\n/** @internal */\nexport * as foreignContent from './common/foreign-content.js';\nexport * as html from './common/html.js';\nexport * as Token from './common/token.js';\n/** @internal */\nexport { Tokenizer, TokenizerMode } from './tokenizer/index.js';\n// Shorthands\n/**\n * Parses an HTML string.\n *\n * @param html Input HTML string.\n * @param options Parsing options.\n * @returns Document\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>');\n *\n * console.log(document.childNodes[1].tagName); //> 'html'\n *```\n */\nexport function parse(html, options) {\n return Parser.parse(html, options);\n}\nexport function parseFragment(fragmentContext, html, options) {\n if (typeof fragmentContext === 'string') {\n options = html;\n html = fragmentContext;\n fragmentContext = null;\n }\n const parser = Parser.getFragmentParser(fragmentContext, options);\n parser.tokenizer.write(html, true);\n return parser.getFragment();\n}\n",
66
- "/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n */\n\n/**\n * Serialize the positional info of a point, position (start and end points),\n * or node.\n *\n * @param {Node | NodeLike | Point | PointLike | Position | PositionLike | null | undefined} [value]\n * Node, position, or point.\n * @returns {string}\n * Pretty printed positional info of a node (`string`).\n *\n * In the format of a range `ls:cs-le:ce` (when given `node` or `position`)\n * or a point `l:c` (when given `point`), where `l` stands for line, `c` for\n * column, `s` for `start`, and `e` for end.\n * An empty string (`''`) is returned if the given value is neither `node`,\n * `position`, nor `point`.\n */\nexport function stringifyPosition(value) {\n // Nothing.\n if (!value || typeof value !== 'object') {\n return ''\n }\n\n // Node.\n if ('position' in value || 'type' in value) {\n return position(value.position)\n }\n\n // Position.\n if ('start' in value || 'end' in value) {\n return position(value)\n }\n\n // Point.\n if ('line' in value || 'column' in value) {\n return point(value)\n }\n\n // ?\n return ''\n}\n\n/**\n * @param {Point | PointLike | null | undefined} point\n * @returns {string}\n */\nfunction point(point) {\n return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position | PositionLike | null | undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number | null | undefined} value\n * @returns {number}\n */\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1\n}\n",
67
- "/**\n * @import {Node, Point, Position} from 'unist'\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef Options\n * Configuration.\n * @property {Array<Node> | null | undefined} [ancestors]\n * Stack of (inclusive) ancestor nodes surrounding the message (optional).\n * @property {Error | null | undefined} [cause]\n * Original error cause of the message (optional).\n * @property {Point | Position | null | undefined} [place]\n * Place of message (optional).\n * @property {string | null | undefined} [ruleId]\n * Category of message (optional, example: `'my-rule'`).\n * @property {string | null | undefined} [source]\n * Namespace of who sent the message (optional, example: `'my-package'`).\n */\n\nimport {stringifyPosition} from 'unist-util-stringify-position'\n\n/**\n * Message.\n */\nexport class VFileMessage extends Error {\n /**\n * Create a message for `reason`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {Options | null | undefined} [options]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | Options | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns\n * Instance of `VFileMessage`.\n */\n // eslint-disable-next-line complexity\n constructor(causeOrReason, optionsOrParentOrPlace, origin) {\n super()\n\n if (typeof optionsOrParentOrPlace === 'string') {\n origin = optionsOrParentOrPlace\n optionsOrParentOrPlace = undefined\n }\n\n /** @type {string} */\n let reason = ''\n /** @type {Options} */\n let options = {}\n let legacyCause = false\n\n if (optionsOrParentOrPlace) {\n // Point.\n if (\n 'line' in optionsOrParentOrPlace &&\n 'column' in optionsOrParentOrPlace\n ) {\n options = {place: optionsOrParentOrPlace}\n }\n // Position.\n else if (\n 'start' in optionsOrParentOrPlace &&\n 'end' in optionsOrParentOrPlace\n ) {\n options = {place: optionsOrParentOrPlace}\n }\n // Node.\n else if ('type' in optionsOrParentOrPlace) {\n options = {\n ancestors: [optionsOrParentOrPlace],\n place: optionsOrParentOrPlace.position\n }\n }\n // Options.\n else {\n options = {...optionsOrParentOrPlace}\n }\n }\n\n if (typeof causeOrReason === 'string') {\n reason = causeOrReason\n }\n // Error.\n else if (!options.cause && causeOrReason) {\n legacyCause = true\n reason = causeOrReason.message\n options.cause = causeOrReason\n }\n\n if (!options.ruleId && !options.source && typeof origin === 'string') {\n const index = origin.indexOf(':')\n\n if (index === -1) {\n options.ruleId = origin\n } else {\n options.source = origin.slice(0, index)\n options.ruleId = origin.slice(index + 1)\n }\n }\n\n if (!options.place && options.ancestors && options.ancestors) {\n const parent = options.ancestors[options.ancestors.length - 1]\n\n if (parent) {\n options.place = parent.position\n }\n }\n\n const start =\n options.place && 'start' in options.place\n ? options.place.start\n : options.place\n\n /**\n * Stack of ancestor nodes surrounding the message.\n *\n * @type {Array<Node> | undefined}\n */\n this.ancestors = options.ancestors || undefined\n\n /**\n * Original error cause of the message.\n *\n * @type {Error | undefined}\n */\n this.cause = options.cause || undefined\n\n /**\n * Starting column of message.\n *\n * @type {number | undefined}\n */\n this.column = start ? start.column : undefined\n\n /**\n * State of problem.\n *\n * * `true` — error, file not usable\n * * `false` — warning, change may be needed\n * * `undefined` — change likely not needed\n *\n * @type {boolean | null | undefined}\n */\n this.fatal = undefined\n\n /**\n * Path of a file (used throughout the `VFile` ecosystem).\n *\n * @type {string | undefined}\n */\n this.file = ''\n\n // Field from `Error`.\n /**\n * Reason for message.\n *\n * @type {string}\n */\n this.message = reason\n\n /**\n * Starting line of error.\n *\n * @type {number | undefined}\n */\n this.line = start ? start.line : undefined\n\n // Field from `Error`.\n /**\n * Serialized positional info of message.\n *\n * On normal errors, this would be something like `ParseError`, buit in\n * `VFile` messages we use this space to show where an error happened.\n */\n this.name = stringifyPosition(options.place) || '1:1'\n\n /**\n * Place of message.\n *\n * @type {Point | Position | undefined}\n */\n this.place = options.place || undefined\n\n /**\n * Reason for message, should use markdown.\n *\n * @type {string}\n */\n this.reason = this.message\n\n /**\n * Category of message (example: `'my-rule'`).\n *\n * @type {string | undefined}\n */\n this.ruleId = options.ruleId || undefined\n\n /**\n * Namespace of message (example: `'my-package'`).\n *\n * @type {string | undefined}\n */\n this.source = options.source || undefined\n\n // Field from `Error`.\n /**\n * Stack of message.\n *\n * This is used by normal errors to show where something happened in\n * programming code, irrelevant for `VFile` messages,\n *\n * @type {string}\n */\n this.stack =\n legacyCause && options.cause && typeof options.cause.stack === 'string'\n ? options.cause.stack\n : ''\n\n // The following fields are “well known”.\n // Not standard.\n // Feel free to add other non-standard fields to your messages.\n\n /**\n * Specify the source value that’s being reported, which is deemed\n * incorrect.\n *\n * @type {string | undefined}\n */\n this.actual = undefined\n\n /**\n * Suggest acceptable values that can be used instead of `actual`.\n *\n * @type {Array<string> | undefined}\n */\n this.expected = undefined\n\n /**\n * Long form description of the message (you should use markdown).\n *\n * @type {string | undefined}\n */\n this.note = undefined\n\n /**\n * Link to docs for the message.\n *\n * > 👉 **Note**: this must be an absolute URL that can be passed as `x`\n * > to `new URL(x)`.\n *\n * @type {string | undefined}\n */\n this.url = undefined\n }\n}\n\nVFileMessage.prototype.file = ''\nVFileMessage.prototype.name = ''\nVFileMessage.prototype.reason = ''\nVFileMessage.prototype.message = ''\nVFileMessage.prototype.stack = ''\nVFileMessage.prototype.column = undefined\nVFileMessage.prototype.line = undefined\nVFileMessage.prototype.ancestors = undefined\nVFileMessage.prototype.cause = undefined\nVFileMessage.prototype.fatal = undefined\nVFileMessage.prototype.place = undefined\nVFileMessage.prototype.ruleId = undefined\nVFileMessage.prototype.source = undefined\n",
68
- "// A derivative work based on:\n// <https://github.com/browserify/path-browserify>.\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// <https://github.com/nodejs/node/blob/master/lib/path.js>.\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport const minpath = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * Get the basename from a path.\n *\n * @param {string} path\n * File path.\n * @param {string | null | undefined} [extname]\n * Extension to strip.\n * @returns {string}\n * Stem or basename.\n */\nfunction basename(path, extname) {\n if (extname !== undefined && typeof extname !== 'string') {\n throw new TypeError('\"ext\" argument must be a string')\n }\n\n assertPath(path)\n let start = 0\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let seenNonSlash\n\n if (\n extname === undefined ||\n extname.length === 0 ||\n extname.length > path.length\n ) {\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // path component.\n seenNonSlash = true\n end = index + 1\n }\n }\n\n return end < 0 ? '' : path.slice(start, end)\n }\n\n if (extname === path) {\n return ''\n }\n\n let firstNonSlashEnd = -1\n let extnameIndex = extname.length - 1\n\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else {\n if (firstNonSlashEnd < 0) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching.\n seenNonSlash = true\n firstNonSlashEnd = index + 1\n }\n\n if (extnameIndex > -1) {\n // Try to match the explicit extension.\n if (path.codePointAt(index) === extname.codePointAt(extnameIndex--)) {\n if (extnameIndex < 0) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = index\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extnameIndex = -1\n end = firstNonSlashEnd\n }\n }\n }\n }\n\n if (start === end) {\n end = firstNonSlashEnd\n } else if (end < 0) {\n end = path.length\n }\n\n return path.slice(start, end)\n}\n\n/**\n * Get the dirname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\nfunction dirname(path) {\n assertPath(path)\n\n if (path.length === 0) {\n return '.'\n }\n\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n // Prefix `--` is important to not run on `0`.\n while (--index) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n if (unmatchedSlash) {\n end = index\n break\n }\n } else if (!unmatchedSlash) {\n // We saw the first non-path separator\n unmatchedSlash = true\n }\n }\n\n return end < 0\n ? path.codePointAt(0) === 47 /* `/` */\n ? '/'\n : '.'\n : end === 1 && path.codePointAt(0) === 47 /* `/` */\n ? '//'\n : path.slice(0, end)\n}\n\n/**\n * Get an extname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * Extname.\n */\nfunction extname(path) {\n assertPath(path)\n\n let index = path.length\n\n let end = -1\n let startPart = 0\n let startDot = -1\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find.\n let preDotState = 0\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n while (index--) {\n const code = path.codePointAt(index)\n\n if (code === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (unmatchedSlash) {\n startPart = index + 1\n break\n }\n\n continue\n }\n\n if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // extension.\n unmatchedSlash = true\n end = index + 1\n }\n\n if (code === 46 /* `.` */) {\n // If this is our first dot, mark it as the start of our extension.\n if (startDot < 0) {\n startDot = index\n } else if (preDotState !== 1) {\n preDotState = 1\n }\n } else if (startDot > -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension.\n preDotState = -1\n }\n }\n\n if (\n startDot < 0 ||\n end < 0 ||\n // We saw a non-dot character immediately before the dot.\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly `..`.\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return ''\n }\n\n return path.slice(startDot, end)\n}\n\n/**\n * Join segments from a path.\n *\n * @param {Array<string>} segments\n * Path segments.\n * @returns {string}\n * File path.\n */\nfunction join(...segments) {\n let index = -1\n /** @type {string | undefined} */\n let joined\n\n while (++index < segments.length) {\n assertPath(segments[index])\n\n if (segments[index]) {\n joined =\n joined === undefined ? segments[index] : joined + '/' + segments[index]\n }\n }\n\n return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Normalize a basic file path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n assertPath(path)\n\n const absolute = path.codePointAt(0) === 47 /* `/` */\n\n // Normalize the path according to POSIX rules.\n let value = normalizeString(path, !absolute)\n\n if (value.length === 0 && !absolute) {\n value = '.'\n }\n\n if (value.length > 0 && path.codePointAt(path.length - 1) === 47 /* / */) {\n value += '/'\n }\n\n return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n * File path.\n * @param {boolean} allowAboveRoot\n * Whether `..` can move above root.\n * @returns {string}\n * File path.\n */\nfunction normalizeString(path, allowAboveRoot) {\n let result = ''\n let lastSegmentLength = 0\n let lastSlash = -1\n let dots = 0\n let index = -1\n /** @type {number | undefined} */\n let code\n /** @type {number} */\n let lastSlashIndex\n\n while (++index <= path.length) {\n if (index < path.length) {\n code = path.codePointAt(index)\n } else if (code === 47 /* `/` */) {\n break\n } else {\n code = 47 /* `/` */\n }\n\n if (code === 47 /* `/` */) {\n if (lastSlash === index - 1 || dots === 1) {\n // Empty.\n } else if (lastSlash !== index - 1 && dots === 2) {\n if (\n result.length < 2 ||\n lastSegmentLength !== 2 ||\n result.codePointAt(result.length - 1) !== 46 /* `.` */ ||\n result.codePointAt(result.length - 2) !== 46 /* `.` */\n ) {\n if (result.length > 2) {\n lastSlashIndex = result.lastIndexOf('/')\n\n if (lastSlashIndex !== result.length - 1) {\n if (lastSlashIndex < 0) {\n result = ''\n lastSegmentLength = 0\n } else {\n result = result.slice(0, lastSlashIndex)\n lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n }\n\n lastSlash = index\n dots = 0\n continue\n }\n } else if (result.length > 0) {\n result = ''\n lastSegmentLength = 0\n lastSlash = index\n dots = 0\n continue\n }\n }\n\n if (allowAboveRoot) {\n result = result.length > 0 ? result + '/..' : '..'\n lastSegmentLength = 2\n }\n } else {\n if (result.length > 0) {\n result += '/' + path.slice(lastSlash + 1, index)\n } else {\n result = path.slice(lastSlash + 1, index)\n }\n\n lastSegmentLength = index - lastSlash - 1\n }\n\n lastSlash = index\n dots = 0\n } else if (code === 46 /* `.` */ && dots > -1) {\n dots++\n } else {\n dots = -1\n }\n }\n\n return result\n}\n\n/**\n * Make sure `path` is a string.\n *\n * @param {string} path\n * File path.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError(\n 'Path must be a string. Received ' + JSON.stringify(path)\n )\n }\n}\n\n/* eslint-enable max-depth, complexity */\n",
69
- "// Somewhat based on:\n// <https://github.com/defunctzombie/node-process/blob/master/browser.js>.\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexport const minproc = {cwd}\n\nfunction cwd() {\n return '/'\n}\n",
70
- "/**\n * Checks if a value has the shape of a WHATWG URL object.\n *\n * Using a symbol or instanceof would not be able to recognize URL objects\n * coming from other implementations (e.g. in Electron), so instead we are\n * checking some well known properties for a lack of a better test.\n *\n * We use `href` and `protocol` as they are the only properties that are\n * easy to retrieve and calculate due to the lazy nature of the getters.\n *\n * We check for auth attribute to distinguish legacy url instance with\n * WHATWG URL instance.\n *\n * @param {unknown} fileUrlOrPath\n * File path or URL.\n * @returns {fileUrlOrPath is URL}\n * Whether it’s a URL.\n */\n// From: <https://github.com/nodejs/node/blob/6a3403c/lib/internal/url.js#L720>\nexport function isUrl(fileUrlOrPath) {\n return Boolean(\n fileUrlOrPath !== null &&\n typeof fileUrlOrPath === 'object' &&\n 'href' in fileUrlOrPath &&\n fileUrlOrPath.href &&\n 'protocol' in fileUrlOrPath &&\n fileUrlOrPath.protocol &&\n // @ts-expect-error: indexing is fine.\n fileUrlOrPath.auth === undefined\n )\n}\n",
71
- "import {isUrl} from './minurl.shared.js'\n\nexport {isUrl} from './minurl.shared.js'\n\n// See: <https://github.com/nodejs/node/blob/6a3403c/lib/internal/url.js>\n\n/**\n * @param {URL | string} path\n * File URL.\n * @returns {string}\n * File URL.\n */\nexport function urlToPath(path) {\n if (typeof path === 'string') {\n path = new URL(path)\n } else if (!isUrl(path)) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'The \"path\" argument must be of type string or an instance of URL. Received `' +\n path +\n '`'\n )\n error.code = 'ERR_INVALID_ARG_TYPE'\n throw error\n }\n\n if (path.protocol !== 'file:') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError('The URL must be of scheme file')\n error.code = 'ERR_INVALID_URL_SCHEME'\n throw error\n }\n\n return getPathFromURLPosix(path)\n}\n\n/**\n * Get a path from a POSIX URL.\n *\n * @param {URL} url\n * URL.\n * @returns {string}\n * File path.\n */\nfunction getPathFromURLPosix(url) {\n if (url.hostname !== '') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL host must be \"localhost\" or empty on darwin'\n )\n error.code = 'ERR_INVALID_FILE_URL_HOST'\n throw error\n }\n\n const pathname = url.pathname\n let index = -1\n\n while (++index < pathname.length) {\n if (\n pathname.codePointAt(index) === 37 /* `%` */ &&\n pathname.codePointAt(index + 1) === 50 /* `2` */\n ) {\n const third = pathname.codePointAt(index + 2)\n if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL path must not include encoded / characters'\n )\n error.code = 'ERR_INVALID_FILE_URL_PATH'\n throw error\n }\n }\n }\n\n return decodeURIComponent(pathname)\n}\n",
72
- "/**\n * @import {Node, Point, Position} from 'unist'\n * @import {Options as MessageOptions} from 'vfile-message'\n * @import {Compatible, Data, Map, Options, Value} from 'vfile'\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n */\n\nimport {VFileMessage} from 'vfile-message'\nimport {minpath} from '#minpath'\nimport {minproc} from '#minproc'\nimport {urlToPath, isUrl} from '#minurl'\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n */\nconst order = /** @type {const} */ ([\n 'history',\n 'path',\n 'basename',\n 'stem',\n 'extname',\n 'dirname'\n])\n\nexport class VFile {\n /**\n * Create a new virtual file.\n *\n * `options` is treated as:\n *\n * * `string` or `Uint8Array` — `{value: options}`\n * * `URL` — `{path: options}`\n * * `VFile` — shallow copies its data over to the new file\n * * `object` — all fields are shallow copied over to the new file\n *\n * Path related fields are set in the following order (least specific to\n * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n * `dirname`.\n *\n * You cannot set `dirname` or `extname` without setting either `history`,\n * `path`, `basename`, or `stem` too.\n *\n * @param {Compatible | null | undefined} [value]\n * File value.\n * @returns\n * New instance.\n */\n constructor(value) {\n /** @type {Options | VFile} */\n let options\n\n if (!value) {\n options = {}\n } else if (isUrl(value)) {\n options = {path: value}\n } else if (typeof value === 'string' || isUint8Array(value)) {\n options = {value}\n } else {\n options = value\n }\n\n /* eslint-disable no-unused-expressions */\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n *\n * @type {string}\n */\n // Prevent calling `cwd` (which could be expensive) if it’s not needed;\n // the empty string will be overridden in the next block.\n this.cwd = 'cwd' in options ? '' : minproc.cwd()\n\n /**\n * Place to store custom info (default: `{}`).\n *\n * It’s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n *\n * @type {Data}\n */\n this.data = {}\n\n /**\n * List of file paths the file moved between.\n *\n * The first is the original path and the last is the current path.\n *\n * @type {Array<string>}\n */\n this.history = []\n\n /**\n * List of messages associated with the file.\n *\n * @type {Array<VFileMessage>}\n */\n this.messages = []\n\n /**\n * Raw value.\n *\n * @type {Value}\n */\n this.value\n\n // The below are non-standard, they are “well-known”.\n // As in, used in several tools.\n /**\n * Source map.\n *\n * This type is equivalent to the `RawSourceMap` type from the `source-map`\n * module.\n *\n * @type {Map | null | undefined}\n */\n this.map\n\n /**\n * Custom, non-string, compiled, representation.\n *\n * This is used by unified to store non-string results.\n * One example is when turning markdown into React nodes.\n *\n * @type {unknown}\n */\n this.result\n\n /**\n * Whether a file was saved to disk.\n *\n * This is used by vfile reporters.\n *\n * @type {boolean}\n */\n this.stored\n /* eslint-enable no-unused-expressions */\n\n // Set path related properties in the correct order.\n let index = -1\n\n while (++index < order.length) {\n const field = order[index]\n\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (\n field in options &&\n options[field] !== undefined &&\n options[field] !== null\n ) {\n // @ts-expect-error: TS doesn’t understand basic reality.\n this[field] = field === 'history' ? [...options[field]] : options[field]\n }\n }\n\n /** @type {string} */\n let field\n\n // Set non-path related properties.\n for (field in options) {\n // @ts-expect-error: fine to set other things.\n if (!order.includes(field)) {\n // @ts-expect-error: fine to set other things.\n this[field] = options[field]\n }\n }\n }\n\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n *\n * @returns {string | undefined}\n * Basename.\n */\n get basename() {\n return typeof this.path === 'string'\n ? minpath.basename(this.path)\n : undefined\n }\n\n /**\n * Set basename (including extname) (`'index.min.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} basename\n * Basename.\n * @returns {undefined}\n * Nothing.\n */\n set basename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = minpath.join(this.dirname || '', basename)\n }\n\n /**\n * Get the parent path (example: `'~'`).\n *\n * @returns {string | undefined}\n * Dirname.\n */\n get dirname() {\n return typeof this.path === 'string'\n ? minpath.dirname(this.path)\n : undefined\n }\n\n /**\n * Set the parent path (example: `'~'`).\n *\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} dirname\n * Dirname.\n * @returns {undefined}\n * Nothing.\n */\n set dirname(dirname) {\n assertPath(this.basename, 'dirname')\n this.path = minpath.join(dirname || '', this.basename)\n }\n\n /**\n * Get the extname (including dot) (example: `'.js'`).\n *\n * @returns {string | undefined}\n * Extname.\n */\n get extname() {\n return typeof this.path === 'string'\n ? minpath.extname(this.path)\n : undefined\n }\n\n /**\n * Set the extname (including dot) (example: `'.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} extname\n * Extname.\n * @returns {undefined}\n * Nothing.\n */\n set extname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.dirname, 'extname')\n\n if (extname) {\n if (extname.codePointAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.includes('.', 1)) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = minpath.join(this.dirname, this.stem + (extname || ''))\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n *\n * @returns {string}\n * Path.\n */\n get path() {\n return this.history[this.history.length - 1]\n }\n\n /**\n * Set the full path (example: `'~/index.min.js'`).\n *\n * Cannot be nullified.\n * You can set a file URL (a `URL` object with a `file:` protocol) which will\n * be turned into a path with `url.fileURLToPath`.\n *\n * @param {URL | string} path\n * Path.\n * @returns {undefined}\n * Nothing.\n */\n set path(path) {\n if (isUrl(path)) {\n path = urlToPath(path)\n }\n\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n }\n\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n *\n * @returns {string | undefined}\n * Stem.\n */\n get stem() {\n return typeof this.path === 'string'\n ? minpath.basename(this.path, this.extname)\n : undefined\n }\n\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} stem\n * Stem.\n * @returns {undefined}\n * Nothing.\n */\n set stem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = minpath.join(this.dirname || '', stem + (this.extname || ''))\n }\n\n // Normal prototypal methods.\n /**\n * Create a fatal message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `true` (error; file not usable)\n * and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {never}\n * Never.\n * @throws {VFileMessage}\n * Message.\n */\n fail(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = true\n\n throw message\n }\n\n /**\n * Create an info message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `undefined` (info; change\n * likely not needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n info(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = undefined\n\n return message\n }\n\n /**\n * Create a message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `false` (warning; change may be\n * needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n message(causeOrReason, optionsOrParentOrPlace, origin) {\n const message = new VFileMessage(\n // @ts-expect-error: the overloads are fine.\n causeOrReason,\n optionsOrParentOrPlace,\n origin\n )\n\n if (this.path) {\n message.name = this.path + ':' + message.name\n message.file = this.path\n }\n\n message.fatal = false\n\n this.messages.push(message)\n\n return message\n }\n\n /**\n * Serialize the file.\n *\n * > **Note**: which encodings are supported depends on the engine.\n * > For info on Node.js, see:\n * > <https://nodejs.org/api/util.html#whatwg-supported-encodings>.\n *\n * @param {string | null | undefined} [encoding='utf8']\n * Character encoding to understand `value` as when it’s a `Uint8Array`\n * (default: `'utf-8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n if (this.value === undefined) {\n return ''\n }\n\n if (typeof this.value === 'string') {\n return this.value\n }\n\n const decoder = new TextDecoder(encoding || undefined)\n return decoder.decode(this.value)\n }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n * File path part.\n * @param {string} name\n * Part name.\n * @returns {undefined}\n * Nothing.\n */\nfunction assertPart(part, name) {\n if (part && part.includes(minpath.sep)) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + minpath.sep + '`'\n )\n }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n * Thing.\n * @param {string} name\n * Part name.\n * @returns {asserts part is string}\n * Nothing.\n */\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n * Path.\n * @param {string} name\n * Dependency name.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n",
73
- "/**\n * @typedef ErrorInfo\n * Info on a `parse5` error.\n * @property {string} reason\n * Reason of error.\n * @property {string} description\n * More info on error.\n * @property {false} [url]\n * Turn off if this is not documented in the html5 spec (optional).\n */\n\nexport const errors = {\n /** @type {ErrorInfo} */\n abandonedHeadElementChild: {\n reason: 'Unexpected metadata element after head',\n description:\n 'Unexpected element after head. Expected the element before `</head>`',\n url: false\n },\n /** @type {ErrorInfo} */\n abruptClosingOfEmptyComment: {\n reason: 'Unexpected abruptly closed empty comment',\n description: 'Unexpected `>` or `->`. Expected `-->` to close comments'\n },\n /** @type {ErrorInfo} */\n abruptDoctypePublicIdentifier: {\n reason: 'Unexpected abruptly closed public identifier',\n description:\n 'Unexpected `>`. Expected a closing `\"` or `\\'` after the public identifier'\n },\n /** @type {ErrorInfo} */\n abruptDoctypeSystemIdentifier: {\n reason: 'Unexpected abruptly closed system identifier',\n description:\n 'Unexpected `>`. Expected a closing `\"` or `\\'` after the identifier identifier'\n },\n /** @type {ErrorInfo} */\n absenceOfDigitsInNumericCharacterReference: {\n reason: 'Unexpected non-digit at start of numeric character reference',\n description:\n 'Unexpected `%c`. Expected `[0-9]` for decimal references or `[0-9a-fA-F]` for hexadecimal references'\n },\n /** @type {ErrorInfo} */\n cdataInHtmlContent: {\n reason: 'Unexpected CDATA section in HTML',\n description:\n 'Unexpected `<![CDATA[` in HTML. Remove it, use a comment, or encode special characters instead'\n },\n /** @type {ErrorInfo} */\n characterReferenceOutsideUnicodeRange: {\n reason: 'Unexpected too big numeric character reference',\n description:\n 'Unexpectedly high character reference. Expected character references to be at most hexadecimal 10ffff (or decimal 1114111)'\n },\n /** @type {ErrorInfo} */\n closingOfElementWithOpenChildElements: {\n reason: 'Unexpected closing tag with open child elements',\n description:\n 'Unexpectedly closing tag. Expected other tags to be closed first',\n url: false\n },\n /** @type {ErrorInfo} */\n controlCharacterInInputStream: {\n reason: 'Unexpected control character',\n description:\n 'Unexpected control character `%x`. Expected a non-control code point, 0x00, or ASCII whitespace'\n },\n /** @type {ErrorInfo} */\n controlCharacterReference: {\n reason: 'Unexpected control character reference',\n description:\n 'Unexpectedly control character in reference. Expected a non-control code point, 0x00, or ASCII whitespace'\n },\n /** @type {ErrorInfo} */\n disallowedContentInNoscriptInHead: {\n reason: 'Disallowed content inside `<noscript>` in `<head>`',\n description:\n 'Unexpected text character `%c`. Only use text in `<noscript>`s in `<body>`',\n url: false\n },\n /** @type {ErrorInfo} */\n duplicateAttribute: {\n reason: 'Unexpected duplicate attribute',\n description:\n 'Unexpectedly double attribute. Expected attributes to occur only once'\n },\n /** @type {ErrorInfo} */\n endTagWithAttributes: {\n reason: 'Unexpected attribute on closing tag',\n description: 'Unexpected attribute. Expected `>` instead'\n },\n /** @type {ErrorInfo} */\n endTagWithTrailingSolidus: {\n reason: 'Unexpected slash at end of closing tag',\n description: 'Unexpected `%c-1`. Expected `>` instead'\n },\n /** @type {ErrorInfo} */\n endTagWithoutMatchingOpenElement: {\n reason: 'Unexpected unopened end tag',\n description: 'Unexpected end tag. Expected no end tag or another end tag',\n url: false\n },\n /** @type {ErrorInfo} */\n eofBeforeTagName: {\n reason: 'Unexpected end of file',\n description: 'Unexpected end of file. Expected tag name instead'\n },\n /** @type {ErrorInfo} */\n eofInCdata: {\n reason: 'Unexpected end of file in CDATA',\n description: 'Unexpected end of file. Expected `]]>` to close the CDATA'\n },\n /** @type {ErrorInfo} */\n eofInComment: {\n reason: 'Unexpected end of file in comment',\n description: 'Unexpected end of file. Expected `-->` to close the comment'\n },\n /** @type {ErrorInfo} */\n eofInDoctype: {\n reason: 'Unexpected end of file in doctype',\n description:\n 'Unexpected end of file. Expected a valid doctype (such as `<!doctype html>`)'\n },\n /** @type {ErrorInfo} */\n eofInElementThatCanContainOnlyText: {\n reason: 'Unexpected end of file in element that can only contain text',\n description: 'Unexpected end of file. Expected text or a closing tag',\n url: false\n },\n /** @type {ErrorInfo} */\n eofInScriptHtmlCommentLikeText: {\n reason: 'Unexpected end of file in comment inside script',\n description: 'Unexpected end of file. Expected `-->` to close the comment'\n },\n /** @type {ErrorInfo} */\n eofInTag: {\n reason: 'Unexpected end of file in tag',\n description: 'Unexpected end of file. Expected `>` to close the tag'\n },\n /** @type {ErrorInfo} */\n incorrectlyClosedComment: {\n reason: 'Incorrectly closed comment',\n description: 'Unexpected `%c-1`. Expected `-->` to close the comment'\n },\n /** @type {ErrorInfo} */\n incorrectlyOpenedComment: {\n reason: 'Incorrectly opened comment',\n description: 'Unexpected `%c`. Expected `<!--` to open the comment'\n },\n /** @type {ErrorInfo} */\n invalidCharacterSequenceAfterDoctypeName: {\n reason: 'Invalid sequence after doctype name',\n description: 'Unexpected sequence at `%c`. Expected `public` or `system`'\n },\n /** @type {ErrorInfo} */\n invalidFirstCharacterOfTagName: {\n reason: 'Invalid first character in tag name',\n description: 'Unexpected `%c`. Expected an ASCII letter instead'\n },\n /** @type {ErrorInfo} */\n misplacedDoctype: {\n reason: 'Misplaced doctype',\n description: 'Unexpected doctype. Expected doctype before head',\n url: false\n },\n /** @type {ErrorInfo} */\n misplacedStartTagForHeadElement: {\n reason: 'Misplaced `<head>` start tag',\n description:\n 'Unexpected start tag `<head>`. Expected `<head>` directly after doctype',\n url: false\n },\n /** @type {ErrorInfo} */\n missingAttributeValue: {\n reason: 'Missing attribute value',\n description:\n 'Unexpected `%c-1`. Expected an attribute value or no `%c-1` instead'\n },\n /** @type {ErrorInfo} */\n missingDoctype: {\n reason: 'Missing doctype before other content',\n description: 'Expected a `<!doctype html>` before anything else',\n url: false\n },\n /** @type {ErrorInfo} */\n missingDoctypeName: {\n reason: 'Missing doctype name',\n description: 'Unexpected doctype end at `%c`. Expected `html` instead'\n },\n /** @type {ErrorInfo} */\n missingDoctypePublicIdentifier: {\n reason: 'Missing public identifier in doctype',\n description: 'Unexpected `%c`. Expected identifier for `public` instead'\n },\n /** @type {ErrorInfo} */\n missingDoctypeSystemIdentifier: {\n reason: 'Missing system identifier in doctype',\n description:\n 'Unexpected `%c`. Expected identifier for `system` instead (suggested: `\"about:legacy-compat\"`)'\n },\n /** @type {ErrorInfo} */\n missingEndTagName: {\n reason: 'Missing name in end tag',\n description: 'Unexpected `%c`. Expected an ASCII letter instead'\n },\n /** @type {ErrorInfo} */\n missingQuoteBeforeDoctypePublicIdentifier: {\n reason: 'Missing quote before public identifier in doctype',\n description: 'Unexpected `%c`. Expected `\"` or `\\'` instead'\n },\n /** @type {ErrorInfo} */\n missingQuoteBeforeDoctypeSystemIdentifier: {\n reason: 'Missing quote before system identifier in doctype',\n description: 'Unexpected `%c`. Expected `\"` or `\\'` instead'\n },\n /** @type {ErrorInfo} */\n missingSemicolonAfterCharacterReference: {\n reason: 'Missing semicolon after character reference',\n description: 'Unexpected `%c`. Expected `;` instead'\n },\n /** @type {ErrorInfo} */\n missingWhitespaceAfterDoctypePublicKeyword: {\n reason: 'Missing whitespace after public identifier in doctype',\n description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n },\n /** @type {ErrorInfo} */\n missingWhitespaceAfterDoctypeSystemKeyword: {\n reason: 'Missing whitespace after system identifier in doctype',\n description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n },\n /** @type {ErrorInfo} */\n missingWhitespaceBeforeDoctypeName: {\n reason: 'Missing whitespace before doctype name',\n description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n },\n /** @type {ErrorInfo} */\n missingWhitespaceBetweenAttributes: {\n reason: 'Missing whitespace between attributes',\n description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n },\n /** @type {ErrorInfo} */\n missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers: {\n reason:\n 'Missing whitespace between public and system identifiers in doctype',\n description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n },\n /** @type {ErrorInfo} */\n nestedComment: {\n reason: 'Unexpected nested comment',\n description: 'Unexpected `<!--`. Expected `-->`'\n },\n /** @type {ErrorInfo} */\n nestedNoscriptInHead: {\n reason: 'Unexpected nested `<noscript>` in `<head>`',\n description:\n 'Unexpected `<noscript>`. Expected a closing tag or a meta element',\n url: false\n },\n /** @type {ErrorInfo} */\n nonConformingDoctype: {\n reason: 'Unexpected non-conforming doctype declaration',\n description:\n 'Expected `<!doctype html>` or `<!doctype html system \"about:legacy-compat\">`',\n url: false\n },\n /** @type {ErrorInfo} */\n nonVoidHtmlElementStartTagWithTrailingSolidus: {\n reason: 'Unexpected trailing slash on start tag of non-void element',\n description: 'Unexpected `/`. Expected `>` instead'\n },\n /** @type {ErrorInfo} */\n noncharacterCharacterReference: {\n reason:\n 'Unexpected noncharacter code point referenced by character reference',\n description: 'Unexpected code point. Do not use noncharacters in HTML'\n },\n /** @type {ErrorInfo} */\n noncharacterInInputStream: {\n reason: 'Unexpected noncharacter character',\n description: 'Unexpected code point `%x`. Do not use noncharacters in HTML'\n },\n /** @type {ErrorInfo} */\n nullCharacterReference: {\n reason: 'Unexpected NULL character referenced by character reference',\n description: 'Unexpected code point. Do not use NULL characters in HTML'\n },\n /** @type {ErrorInfo} */\n openElementsLeftAfterEof: {\n reason: 'Unexpected end of file',\n description: 'Unexpected end of file. Expected closing tag instead',\n url: false\n },\n /** @type {ErrorInfo} */\n surrogateCharacterReference: {\n reason: 'Unexpected surrogate character referenced by character reference',\n description:\n 'Unexpected code point. Do not use lone surrogate characters in HTML'\n },\n /** @type {ErrorInfo} */\n surrogateInInputStream: {\n reason: 'Unexpected surrogate character',\n description:\n 'Unexpected code point `%x`. Do not use lone surrogate characters in HTML'\n },\n /** @type {ErrorInfo} */\n unexpectedCharacterAfterDoctypeSystemIdentifier: {\n reason: 'Invalid character after system identifier in doctype',\n description: 'Unexpected character at `%c`. Expected `>`'\n },\n /** @type {ErrorInfo} */\n unexpectedCharacterInAttributeName: {\n reason: 'Unexpected character in attribute name',\n description:\n 'Unexpected `%c`. Expected whitespace, `/`, `>`, `=`, or probably an ASCII letter'\n },\n /** @type {ErrorInfo} */\n unexpectedCharacterInUnquotedAttributeValue: {\n reason: 'Unexpected character in unquoted attribute value',\n description: 'Unexpected `%c`. Quote the attribute value to include it'\n },\n /** @type {ErrorInfo} */\n unexpectedEqualsSignBeforeAttributeName: {\n reason: 'Unexpected equals sign before attribute name',\n description: 'Unexpected `%c`. Add an attribute name before it'\n },\n /** @type {ErrorInfo} */\n unexpectedNullCharacter: {\n reason: 'Unexpected NULL character',\n description:\n 'Unexpected code point `%x`. Do not use NULL characters in HTML'\n },\n /** @type {ErrorInfo} */\n unexpectedQuestionMarkInsteadOfTagName: {\n reason: 'Unexpected question mark instead of tag name',\n description: 'Unexpected `%c`. Expected an ASCII letter instead'\n },\n /** @type {ErrorInfo} */\n unexpectedSolidusInTag: {\n reason: 'Unexpected slash in tag',\n description:\n 'Unexpected `%c-1`. Expected it followed by `>` or in a quoted attribute value'\n },\n /** @type {ErrorInfo} */\n unknownNamedCharacterReference: {\n reason: 'Unexpected unknown named character reference',\n description:\n 'Unexpected character reference. Expected known named character references'\n }\n}\n",
74
- "/**\n * @import {Root} from 'hast'\n * @import {ParserError} from 'parse5'\n * @import {Value} from 'vfile'\n * @import {ErrorCode, Options} from './types.js'\n */\n\nimport {ok as assert} from 'devlop'\nimport {fromParse5} from 'hast-util-from-parse5'\nimport {parse, parseFragment} from 'parse5'\nimport {VFile} from 'vfile'\nimport {VFileMessage} from 'vfile-message'\nimport {errors} from './errors.js'\n\nconst base = 'https://html.spec.whatwg.org/multipage/parsing.html#parse-error-'\n\nconst dashToCamelRe = /-[a-z]/g\nconst formatCRe = /%c(?:([-+])(\\d+))?/g\nconst formatXRe = /%x/g\n\nconst fatalities = {2: true, 1: false, 0: null}\n\n/** @type {Readonly<Options>} */\nconst emptyOptions = {}\n\n/**\n * Turn serialized HTML into a hast tree.\n *\n * @param {VFile | Value} value\n * Serialized HTML to parse.\n * @param {Readonly<Options> | null | undefined} [options]\n * Configuration (optional).\n * @returns {Root}\n * Tree.\n */\nexport function fromHtml(value, options) {\n const settings = options || emptyOptions\n const onerror = settings.onerror\n const file = value instanceof VFile ? value : new VFile(value)\n const parseFunction = settings.fragment ? parseFragment : parse\n const document = String(file)\n const p5Document = parseFunction(document, {\n sourceCodeLocationInfo: true,\n // Note `parse5` types currently do not allow `undefined`.\n onParseError: settings.onerror ? internalOnerror : null,\n scriptingEnabled: false\n })\n\n // `parse5` returns document which are always mapped to roots.\n return /** @type {Root} */ (\n fromParse5(p5Document, {\n file,\n space: settings.space,\n verbose: settings.verbose\n })\n )\n\n /**\n * Handle a parse error.\n *\n * @param {ParserError} error\n * Parse5 error.\n * @returns {undefined}\n * Nothing.\n */\n function internalOnerror(error) {\n const code = error.code\n const name = camelcase(code)\n const setting = settings[name]\n const config = setting === null || setting === undefined ? true : setting\n const level = typeof config === 'number' ? config : config ? 1 : 0\n\n if (level) {\n const info = errors[name]\n assert(info, 'expected known error from `parse5`')\n\n const message = new VFileMessage(format(info.reason), {\n place: {\n start: {\n line: error.startLine,\n column: error.startCol,\n offset: error.startOffset\n },\n end: {\n line: error.endLine,\n column: error.endCol,\n offset: error.endOffset\n }\n },\n ruleId: code,\n source: 'hast-util-from-html'\n })\n\n if (file.path) {\n message.file = file.path\n message.name = file.path + ':' + message.name\n }\n\n message.fatal = fatalities[level]\n message.note = format(info.description)\n message.url = info.url === false ? undefined : base + code\n\n assert(onerror, '`internalOnerror` is not passed if `onerror` is not set')\n onerror(message)\n }\n\n /**\n * Format a human readable string about an error.\n *\n * @param {string} value\n * Value to format.\n * @returns {string}\n * Formatted.\n */\n function format(value) {\n return value.replace(formatCRe, formatC).replace(formatXRe, formatX)\n\n /**\n * Format the character.\n *\n * @param {string} _\n * Match.\n * @param {string} $1\n * Sign (`-` or `+`, optional).\n * @param {string} $2\n * Offset.\n * @returns {string}\n * Formatted.\n */\n function formatC(_, $1, $2) {\n const offset =\n ($2 ? Number.parseInt($2, 10) : 0) * ($1 === '-' ? -1 : 1)\n const char = document.charAt(error.startOffset + offset)\n return visualizeCharacter(char)\n }\n\n /**\n * Format the character code.\n *\n * @returns {string}\n * Formatted.\n */\n function formatX() {\n return visualizeCharacterCode(document.charCodeAt(error.startOffset))\n }\n }\n }\n}\n\n/**\n * @param {string} value\n * Error code in dash case.\n * @returns {ErrorCode}\n * Error code in camelcase.\n */\nfunction camelcase(value) {\n // This should match an error code.\n return /** @type {ErrorCode} */ (value.replace(dashToCamelRe, dashToCamel))\n}\n\n/**\n * @param {string} $0\n * Match.\n * @returns {string}\n * Camelcased.\n */\nfunction dashToCamel($0) {\n return $0.charAt(1).toUpperCase()\n}\n\n/**\n * @param {string} char\n * Character.\n * @returns {string}\n * Formatted.\n */\nfunction visualizeCharacter(char) {\n return char === '`' ? '` ` `' : char\n}\n\n/**\n * @param {number} charCode\n * Character code.\n * @returns {string}\n * Formatted.\n */\nfunction visualizeCharacterCode(charCode) {\n return '0x' + charCode.toString(16).toUpperCase()\n}\n",
75
- "/**\n * @typedef {import('hast').Nodes} Nodes\n */\n\n// HTML whitespace expression.\n// See <https://infra.spec.whatwg.org/#ascii-whitespace>.\nconst re = /[ \\t\\n\\f\\r]/g\n\n/**\n * Check if the given value is *inter-element whitespace*.\n *\n * @param {Nodes | string} thing\n * Thing to check (`Node` or `string`).\n * @returns {boolean}\n * Whether the `value` is inter-element whitespace (`boolean`): consisting of\n * zero or more of space, tab (`\\t`), line feed (`\\n`), carriage return\n * (`\\r`), or form feed (`\\f`); if a node is passed it must be a `Text` node,\n * whose `value` field is checked.\n */\nexport function whitespace(thing) {\n return typeof thing === 'object'\n ? thing.type === 'text'\n ? empty(thing.value)\n : false\n : empty(thing)\n}\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction empty(value) {\n return value.replace(re, '') === ''\n}\n",
76
- "/**\n * @import {Schema as SchemaType, Space} from 'property-information'\n */\n\n/** @type {SchemaType} */\nexport class Schema {\n /**\n * @param {SchemaType['property']} property\n * Property.\n * @param {SchemaType['normal']} normal\n * Normal.\n * @param {Space | undefined} [space]\n * Space.\n * @returns\n * Schema.\n */\n constructor(property, normal, space) {\n this.normal = normal\n this.property = property\n\n if (space) {\n this.space = space\n }\n }\n}\n\nSchema.prototype.normal = {}\nSchema.prototype.property = {}\nSchema.prototype.space = undefined\n",
77
- "/**\n * @import {Info, Space} from 'property-information'\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {ReadonlyArray<Schema>} definitions\n * Definitions.\n * @param {Space | undefined} [space]\n * Space.\n * @returns {Schema}\n * Schema.\n */\nexport function merge(definitions, space) {\n /** @type {Record<string, Info>} */\n const property = {}\n /** @type {Record<string, string>} */\n const normal = {}\n\n for (const definition of definitions) {\n Object.assign(property, definition.property)\n Object.assign(normal, definition.normal)\n }\n\n return new Schema(property, normal, space)\n}\n",
78
- "/**\n * Get the cleaned case insensitive form of an attribute or property.\n *\n * @param {string} value\n * An attribute-like or property-like name.\n * @returns {string}\n * Value that can be used to look up the properly cased property on a\n * `Schema`.\n */\nexport function normalize(value) {\n return value.toLowerCase()\n}\n",
79
- "/**\n * @import {Info as InfoType} from 'property-information'\n */\n\n/** @type {InfoType} */\nexport class Info {\n /**\n * @param {string} property\n * Property.\n * @param {string} attribute\n * Attribute.\n * @returns\n * Info.\n */\n constructor(property, attribute) {\n this.attribute = attribute\n this.property = property\n }\n}\n\nInfo.prototype.attribute = ''\nInfo.prototype.booleanish = false\nInfo.prototype.boolean = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.defined = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.number = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.property = ''\nInfo.prototype.spaceSeparated = false\nInfo.prototype.space = undefined\n",
80
- "let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n",
81
- "/**\n * @import {Space} from 'property-information'\n */\n\nimport {Info} from './info.js'\nimport * as types from './types.js'\n\nconst checks = /** @type {ReadonlyArray<keyof typeof types>} */ (\n Object.keys(types)\n)\n\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * Property.\n * @param {string} attribute\n * Attribute.\n * @param {number | null | undefined} [mask]\n * Mask.\n * @param {Space | undefined} [space]\n * Space.\n * @returns\n * Info.\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types[check]) === types[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @template {keyof DefinedInfo} Key\n * Key type.\n * @param {DefinedInfo} values\n * Info.\n * @param {Key} key\n * Key.\n * @param {DefinedInfo[Key]} value\n * Value.\n * @returns {undefined}\n * Nothing.\n */\nfunction mark(values, key, value) {\n if (value) {\n values[key] = value\n }\n}\n",
82
- "/**\n * @import {Info, Space} from 'property-information'\n */\n\n/**\n * @typedef Definition\n * Definition of a schema.\n * @property {Record<string, string> | undefined} [attributes]\n * Normalzed names to special attribute case.\n * @property {ReadonlyArray<string> | undefined} [mustUseProperty]\n * Normalized names that must be set as properties.\n * @property {Record<string, number | null>} properties\n * Property names to their types.\n * @property {Space | undefined} [space]\n * Space.\n * @property {Transform} transform\n * Transform a property name.\n */\n\n/**\n * @callback Transform\n * Transform.\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} property\n * Property.\n * @returns {string}\n * Attribute.\n */\n\nimport {normalize} from '../normalize.js'\nimport {DefinedInfo} from './defined-info.js'\nimport {Schema} from './schema.js'\n\n/**\n * @param {Definition} definition\n * Definition.\n * @returns {Schema}\n * Schema.\n */\nexport function create(definition) {\n /** @type {Record<string, Info>} */\n const properties = {}\n /** @type {Record<string, string>} */\n const normals = {}\n\n for (const [property, value] of Object.entries(definition.properties)) {\n const info = new DefinedInfo(\n property,\n definition.transform(definition.attributes || {}, property),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(property)\n ) {\n info.mustUseProperty = true\n }\n\n properties[property] = info\n\n normals[normalize(property)] = property\n normals[normalize(info.attribute)] = property\n }\n\n return new Schema(properties, normals, definition.space)\n}\n",
83
- "import {create} from './util/create.js'\nimport {booleanish, number, spaceSeparated} from './util/types.js'\n\nexport const aria = create({\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n },\n transform(_, property) {\n return property === 'role'\n ? property\n : 'aria-' + property.slice(4).toLowerCase()\n }\n})\n",
84
- "/**\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} attribute\n * Attribute.\n * @returns {string}\n * Transformed attribute.\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n",
85
- "import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} property\n * Property.\n * @returns {string}\n * Transformed property.\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n",
86
- "import {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n booleanish,\n boolean,\n commaSeparated,\n number,\n overloadedBoolean,\n spaceSeparated\n} from './util/types.js'\n\nexport const html = create({\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alpha: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n blocking: spaceSeparated,\n capture: null,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n closedBy: null,\n colorSpace: null,\n cols: number,\n colSpan: number,\n command: null,\n commandFor: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n fetchPriority: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: overloadedBoolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inert: boolean,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeToggle: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n popover: null,\n popoverTarget: null,\n popoverTargetAction: null,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shadowRootClonable: boolean,\n shadowRootCustomElementRegistry: boolean,\n shadowRootDelegatesFocus: boolean,\n shadowRootMode: null,\n shadowRootSerializable: boolean,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n writingSuggestions: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // `<object>`. List of URIs to archives\n axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n background: null, // `<body>`. Use CSS `background-image` instead\n bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n border: number, // `<table>`. Use CSS `border-width` instead,\n borderColor: null, // `<table>`. Use CSS `border-color` instead,\n bottomMargin: number, // `<body>`\n cellPadding: null, // `<table>`\n cellSpacing: null, // `<table>`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // `<object>`\n clear: null, // `<br>`. Use CSS `clear` instead\n code: null, // `<object>`\n codeBase: null, // `<object>`\n codeType: null, // `<object>`\n color: null, // `<font>` and `<hr>`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // `<object>`\n event: null, // `<script>`\n face: null, // `<font>`. Use CSS instead\n frame: null, // `<table>`\n frameBorder: null, // `<iframe>`. Use CSS `border` instead\n hSpace: number, // `<img>` and `<object>`\n leftMargin: number, // `<body>`\n link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n lowSrc: null, // `<img>`. Use a `<picture>`\n marginHeight: number, // `<body>`\n marginWidth: number, // `<body>`\n noResize: boolean, // `<frame>`\n noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n noWrap: boolean, // `<td>` and `<th>`\n object: null, // `<applet>`\n profile: null, // `<head>`\n prompt: null, // `<isindex>`\n rev: null, // `<link>`\n rightMargin: number, // `<body>`\n rules: null, // `<table>`\n scheme: null, // `<meta>`\n scrolling: booleanish, // `<frame>`. Use overflow in the child context\n standby: null, // `<object>`\n summary: null, // `<table>`\n text: null, // `<body>`. Use CSS `color` instead\n topMargin: number, // `<body>`\n valueType: null, // `<param>`\n version: null, // `<html>`. Use a doctype.\n vAlign: null, // Several. Use CSS `vertical-align` instead\n vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n vSpace: number, // `<img>` and `<object>`\n\n // Non-standard Properties.\n allowTransparency: null,\n autoCorrect: null,\n autoSave: null,\n credentialless: boolean,\n disablePictureInPicture: boolean,\n disableRemotePlayback: boolean,\n exportParts: commaSeparated,\n part: spaceSeparated,\n prefix: null,\n property: null,\n results: number,\n security: null,\n unselectable: null\n },\n space: 'html',\n transform: caseInsensitiveTransform\n})\n",
87
- "import {caseSensitiveTransform} from './util/case-sensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n boolean,\n commaOrSpaceSeparated,\n commaSeparated,\n number,\n spaceSeparated\n} from './util/types.js'\n\nexport const svg = create({\n attributes: {\n accentHeight: 'accent-height',\n alignmentBaseline: 'alignment-baseline',\n arabicForm: 'arabic-form',\n baselineShift: 'baseline-shift',\n capHeight: 'cap-height',\n className: 'class',\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n crossOrigin: 'crossorigin',\n dataType: 'datatype',\n dominantBaseline: 'dominant-baseline',\n enableBackground: 'enable-background',\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n hrefLang: 'hreflang',\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n horizOriginY: 'horiz-origin-y',\n imageRendering: 'image-rendering',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n maskType: 'mask-type',\n navDown: 'nav-down',\n navDownLeft: 'nav-down-left',\n navDownRight: 'nav-down-right',\n navLeft: 'nav-left',\n navNext: 'nav-next',\n navPrev: 'nav-prev',\n navRight: 'nav-right',\n navUp: 'nav-up',\n navUpLeft: 'nav-up-left',\n navUpRight: 'nav-up-right',\n onAbort: 'onabort',\n onActivate: 'onactivate',\n onAfterPrint: 'onafterprint',\n onBeforePrint: 'onbeforeprint',\n onBegin: 'onbegin',\n onCancel: 'oncancel',\n onCanPlay: 'oncanplay',\n onCanPlayThrough: 'oncanplaythrough',\n onChange: 'onchange',\n onClick: 'onclick',\n onClose: 'onclose',\n onCopy: 'oncopy',\n onCueChange: 'oncuechange',\n onCut: 'oncut',\n onDblClick: 'ondblclick',\n onDrag: 'ondrag',\n onDragEnd: 'ondragend',\n onDragEnter: 'ondragenter',\n onDragExit: 'ondragexit',\n onDragLeave: 'ondragleave',\n onDragOver: 'ondragover',\n onDragStart: 'ondragstart',\n onDrop: 'ondrop',\n onDurationChange: 'ondurationchange',\n onEmptied: 'onemptied',\n onEnd: 'onend',\n onEnded: 'onended',\n onError: 'onerror',\n onFocus: 'onfocus',\n onFocusIn: 'onfocusin',\n onFocusOut: 'onfocusout',\n onHashChange: 'onhashchange',\n onInput: 'oninput',\n onInvalid: 'oninvalid',\n onKeyDown: 'onkeydown',\n onKeyPress: 'onkeypress',\n onKeyUp: 'onkeyup',\n onLoad: 'onload',\n onLoadedData: 'onloadeddata',\n onLoadedMetadata: 'onloadedmetadata',\n onLoadStart: 'onloadstart',\n onMessage: 'onmessage',\n onMouseDown: 'onmousedown',\n onMouseEnter: 'onmouseenter',\n onMouseLeave: 'onmouseleave',\n onMouseMove: 'onmousemove',\n onMouseOut: 'onmouseout',\n onMouseOver: 'onmouseover',\n onMouseUp: 'onmouseup',\n onMouseWheel: 'onmousewheel',\n onOffline: 'onoffline',\n onOnline: 'ononline',\n onPageHide: 'onpagehide',\n onPageShow: 'onpageshow',\n onPaste: 'onpaste',\n onPause: 'onpause',\n onPlay: 'onplay',\n onPlaying: 'onplaying',\n onPopState: 'onpopstate',\n onProgress: 'onprogress',\n onRateChange: 'onratechange',\n onRepeat: 'onrepeat',\n onReset: 'onreset',\n onResize: 'onresize',\n onScroll: 'onscroll',\n onSeeked: 'onseeked',\n onSeeking: 'onseeking',\n onSelect: 'onselect',\n onShow: 'onshow',\n onStalled: 'onstalled',\n onStorage: 'onstorage',\n onSubmit: 'onsubmit',\n onSuspend: 'onsuspend',\n onTimeUpdate: 'ontimeupdate',\n onToggle: 'ontoggle',\n onUnload: 'onunload',\n onVolumeChange: 'onvolumechange',\n onWaiting: 'onwaiting',\n onZoom: 'onzoom',\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pointerEvents: 'pointer-events',\n referrerPolicy: 'referrerpolicy',\n renderingIntent: 'rendering-intent',\n shapeRendering: 'shape-rendering',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n strokeDashArray: 'stroke-dasharray',\n strokeDashOffset: 'stroke-dashoffset',\n strokeLineCap: 'stroke-linecap',\n strokeLineJoin: 'stroke-linejoin',\n strokeMiterLimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n tabIndex: 'tabindex',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n transformOrigin: 'transform-origin',\n typeOf: 'typeof',\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n vectorEffect: 'vector-effect',\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n xHeight: 'x-height',\n // These were camelcased in Tiny. Now lowercased in SVG 2\n playbackOrder: 'playbackorder',\n timelineBegin: 'timelinebegin'\n },\n properties: {\n about: commaOrSpaceSeparated,\n accentHeight: number,\n accumulate: null,\n additive: null,\n alignmentBaseline: null,\n alphabetic: number,\n amplitude: number,\n arabicForm: null,\n ascent: number,\n attributeName: null,\n attributeType: null,\n azimuth: number,\n bandwidth: null,\n baselineShift: null,\n baseFrequency: null,\n baseProfile: null,\n bbox: null,\n begin: null,\n bias: number,\n by: null,\n calcMode: null,\n capHeight: number,\n className: spaceSeparated,\n clip: null,\n clipPath: null,\n clipPathUnits: null,\n clipRule: null,\n color: null,\n colorInterpolation: null,\n colorInterpolationFilters: null,\n colorProfile: null,\n colorRendering: null,\n content: null,\n contentScriptType: null,\n contentStyleType: null,\n crossOrigin: null,\n cursor: null,\n cx: null,\n cy: null,\n d: null,\n dataType: null,\n defaultAction: null,\n descent: number,\n diffuseConstant: number,\n direction: null,\n display: null,\n dur: null,\n divisor: number,\n dominantBaseline: null,\n download: boolean,\n dx: null,\n dy: null,\n edgeMode: null,\n editable: null,\n elevation: number,\n enableBackground: null,\n end: null,\n event: null,\n exponent: number,\n externalResourcesRequired: null,\n fill: null,\n fillOpacity: number,\n fillRule: null,\n filter: null,\n filterRes: null,\n filterUnits: null,\n floodColor: null,\n floodOpacity: null,\n focusable: null,\n focusHighlight: null,\n fontFamily: null,\n fontSize: null,\n fontSizeAdjust: null,\n fontStretch: null,\n fontStyle: null,\n fontVariant: null,\n fontWeight: null,\n format: null,\n fr: null,\n from: null,\n fx: null,\n fy: null,\n g1: commaSeparated,\n g2: commaSeparated,\n glyphName: commaSeparated,\n glyphOrientationHorizontal: null,\n glyphOrientationVertical: null,\n glyphRef: null,\n gradientTransform: null,\n gradientUnits: null,\n handler: null,\n hanging: number,\n hatchContentUnits: null,\n hatchUnits: null,\n height: null,\n href: null,\n hrefLang: null,\n horizAdvX: number,\n horizOriginX: number,\n horizOriginY: number,\n id: null,\n ideographic: number,\n imageRendering: null,\n initialVisibility: null,\n in: null,\n in2: null,\n intercept: number,\n k: number,\n k1: number,\n k2: number,\n k3: number,\n k4: number,\n kernelMatrix: commaOrSpaceSeparated,\n kernelUnitLength: null,\n keyPoints: null, // SEMI_COLON_SEPARATED\n keySplines: null, // SEMI_COLON_SEPARATED\n keyTimes: null, // SEMI_COLON_SEPARATED\n kerning: null,\n lang: null,\n lengthAdjust: null,\n letterSpacing: null,\n lightingColor: null,\n limitingConeAngle: number,\n local: null,\n markerEnd: null,\n markerMid: null,\n markerStart: null,\n markerHeight: null,\n markerUnits: null,\n markerWidth: null,\n mask: null,\n maskContentUnits: null,\n maskType: null,\n maskUnits: null,\n mathematical: null,\n max: null,\n media: null,\n mediaCharacterEncoding: null,\n mediaContentEncodings: null,\n mediaSize: number,\n mediaTime: null,\n method: null,\n min: null,\n mode: null,\n name: null,\n navDown: null,\n navDownLeft: null,\n navDownRight: null,\n navLeft: null,\n navNext: null,\n navPrev: null,\n navRight: null,\n navUp: null,\n navUpLeft: null,\n navUpRight: null,\n numOctaves: null,\n observer: null,\n offset: null,\n onAbort: null,\n onActivate: null,\n onAfterPrint: null,\n onBeforePrint: null,\n onBegin: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnd: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFocusIn: null,\n onFocusOut: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadStart: null,\n onMessage: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onMouseWheel: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRepeat: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onShow: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onZoom: null,\n opacity: null,\n operator: null,\n order: null,\n orient: null,\n orientation: null,\n origin: null,\n overflow: null,\n overlay: null,\n overlinePosition: number,\n overlineThickness: number,\n paintOrder: null,\n panose1: null,\n path: null,\n pathLength: number,\n patternContentUnits: null,\n patternTransform: null,\n patternUnits: null,\n phase: null,\n ping: spaceSeparated,\n pitch: null,\n playbackOrder: null,\n pointerEvents: null,\n points: null,\n pointsAtX: number,\n pointsAtY: number,\n pointsAtZ: number,\n preserveAlpha: null,\n preserveAspectRatio: null,\n primitiveUnits: null,\n propagate: null,\n property: commaOrSpaceSeparated,\n r: null,\n radius: null,\n referrerPolicy: null,\n refX: null,\n refY: null,\n rel: commaOrSpaceSeparated,\n rev: commaOrSpaceSeparated,\n renderingIntent: null,\n repeatCount: null,\n repeatDur: null,\n requiredExtensions: commaOrSpaceSeparated,\n requiredFeatures: commaOrSpaceSeparated,\n requiredFonts: commaOrSpaceSeparated,\n requiredFormats: commaOrSpaceSeparated,\n resource: null,\n restart: null,\n result: null,\n rotate: null,\n rx: null,\n ry: null,\n scale: null,\n seed: null,\n shapeRendering: null,\n side: null,\n slope: null,\n snapshotTime: null,\n specularConstant: number,\n specularExponent: number,\n spreadMethod: null,\n spacing: null,\n startOffset: null,\n stdDeviation: null,\n stemh: null,\n stemv: null,\n stitchTiles: null,\n stopColor: null,\n stopOpacity: null,\n strikethroughPosition: number,\n strikethroughThickness: number,\n string: null,\n stroke: null,\n strokeDashArray: commaOrSpaceSeparated,\n strokeDashOffset: null,\n strokeLineCap: null,\n strokeLineJoin: null,\n strokeMiterLimit: number,\n strokeOpacity: number,\n strokeWidth: null,\n style: null,\n surfaceScale: number,\n syncBehavior: null,\n syncBehaviorDefault: null,\n syncMaster: null,\n syncTolerance: null,\n syncToleranceDefault: null,\n systemLanguage: commaOrSpaceSeparated,\n tabIndex: number,\n tableValues: null,\n target: null,\n targetX: number,\n targetY: number,\n textAnchor: null,\n textDecoration: null,\n textRendering: null,\n textLength: null,\n timelineBegin: null,\n title: null,\n transformBehavior: null,\n type: null,\n typeOf: commaOrSpaceSeparated,\n to: null,\n transform: null,\n transformOrigin: null,\n u1: null,\n u2: null,\n underlinePosition: number,\n underlineThickness: number,\n unicode: null,\n unicodeBidi: null,\n unicodeRange: null,\n unitsPerEm: number,\n values: null,\n vAlphabetic: number,\n vMathematical: number,\n vectorEffect: null,\n vHanging: number,\n vIdeographic: number,\n version: null,\n vertAdvY: number,\n vertOriginX: number,\n vertOriginY: number,\n viewBox: null,\n viewTarget: null,\n visibility: null,\n width: null,\n widths: null,\n wordSpacing: null,\n writingMode: null,\n x: null,\n x1: null,\n x2: null,\n xChannelSelector: null,\n xHeight: number,\n y: null,\n y1: null,\n y2: null,\n yChannelSelector: null,\n z: null,\n zoomAndPan: null\n },\n space: 'svg',\n transform: caseSensitiveTransform\n})\n",
88
- "import {create} from './util/create.js'\n\nexport const xlink = create({\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n },\n space: 'xlink',\n transform(_, property) {\n return 'xlink:' + property.slice(5).toLowerCase()\n }\n})\n",
89
- "import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n properties: {xmlnsXLink: null, xmlns: null},\n space: 'xmlns',\n transform: caseInsensitiveTransform\n})\n",
90
- "import {create} from './util/create.js'\n\nexport const xml = create({\n properties: {xmlBase: null, xmlLang: null, xmlSpace: null},\n space: 'xml',\n transform(_, property) {\n return 'xml:' + property.slice(3).toLowerCase()\n }\n})\n",
91
- "/**\n * @import {Schema} from 'property-information'\n */\n\nimport {DefinedInfo} from './util/defined-info.js'\nimport {Info} from './util/info.js'\nimport {normalize} from './normalize.js'\n\nconst cap = /[A-Z]/g\nconst dash = /-[a-z]/g\nconst valid = /^data[-\\w.:]+$/i\n\n/**\n * Look up info on a property.\n *\n * In most cases the given `schema` contains info on the property.\n * All standard,\n * most legacy,\n * and some non-standard properties are supported.\n * For these cases,\n * the returned `Info` has hints about the value of the property.\n *\n * `name` can also be a valid data attribute or property,\n * in which case an `Info` object with the correctly cased `attribute` and\n * `property` is returned.\n *\n * `name` can be an unknown attribute,\n * in which case an `Info` object with `attribute` and `property` set to the\n * given name is returned.\n * It is not recommended to provide unsupported legacy or recently specced\n * properties.\n *\n *\n * @param {Schema} schema\n * Schema;\n * either the `html` or `svg` export.\n * @param {string} value\n * An attribute-like or property-like name;\n * it will be passed through `normalize` to hopefully find the correct info.\n * @returns {Info}\n * Info.\n */\nexport function find(schema, value) {\n const normal = normalize(value)\n let property = value\n let Type = Info\n\n if (normal in schema.normal) {\n return schema.property[schema.normal[normal]]\n }\n\n if (normal.length > 4 && normal.slice(0, 4) === 'data' && valid.test(value)) {\n // Attribute or property.\n if (value.charAt(4) === '-') {\n // Turn it into a property.\n const rest = value.slice(5).replace(dash, camelcase)\n property = 'data' + rest.charAt(0).toUpperCase() + rest.slice(1)\n } else {\n // Turn it into an attribute.\n const rest = value.slice(4)\n\n if (!dash.test(rest)) {\n let dashes = rest.replace(cap, kebab)\n\n if (dashes.charAt(0) !== '-') {\n dashes = '-' + dashes\n }\n\n value = 'data' + dashes\n }\n }\n\n Type = DefinedInfo\n }\n\n return new Type(property, value)\n}\n\n/**\n * @param {string} $0\n * Value.\n * @returns {string}\n * Kebab.\n */\nfunction kebab($0) {\n return '-' + $0.toLowerCase()\n}\n\n/**\n * @param {string} $0\n * Value.\n * @returns {string}\n * Camel.\n */\nfunction camelcase($0) {\n return $0.charAt(1).toUpperCase()\n}\n",
92
- "// Note: types exposed from `index.d.ts`.\nimport {merge} from './lib/util/merge.js'\nimport {aria} from './lib/aria.js'\nimport {html as htmlBase} from './lib/html.js'\nimport {svg as svgBase} from './lib/svg.js'\nimport {xlink} from './lib/xlink.js'\nimport {xmlns} from './lib/xmlns.js'\nimport {xml} from './lib/xml.js'\n\nexport {hastToReact} from './lib/hast-to-react.js'\n\nexport const html = merge([aria, htmlBase, xlink, xmlns, xml], 'html')\n\nexport {find} from './lib/find.js'\nexport {normalize} from './lib/normalize.js'\n\nexport const svg = merge([aria, svgBase, xlink, xmlns, xml], 'svg')\n",
93
- "import { fromHtml } from \"hast-util-from-html\";\nimport { whitespace } from \"hast-util-whitespace\";\nimport { find, html as htmlInfo } from \"property-information\";\n\nimport type { Nodes as HastNode } from \"hast\";\nimport type { JxElement } from \"@jxsuite/schema/types\";\n\n/**\n * Convert an HTML string into an array of Jx tree nodes.\n *\n * @param {string} htmlString\n * @returns {(JxElement | string)[]}\n */\nexport function htmlToJx(htmlString: string) {\n const hast = fromHtml(htmlString, { fragment: true });\n return convertHastChildren(hast.children as HastNode[]);\n}\n\n/**\n * @param {HastNode[]} children\n * @returns {(JxElement | string)[]}\n */\nfunction convertHastChildren(children: HastNode[]) {\n const result: (JxElement | string)[] = [];\n for (const child of children) {\n const converted = convertHastNode(child);\n if (converted != null) {\n result.push(converted);\n }\n }\n return result;\n}\n\n/**\n * @param {HastNode} node\n * @returns {JxElement | string | null}\n */\nfunction convertHastNode(node: HastNode) {\n if (node.type === \"text\") {\n if (whitespace(node as Parameters<typeof whitespace>[0])) {\n return null;\n }\n return node.value ?? null;\n }\n\n if (node.type === \"element\") {\n const el: JxElement = { tagName: node.tagName };\n\n if (node.properties && Object.keys(node.properties).length > 0) {\n const { style, attrs } = hastPropsToJx(node.properties);\n if (Object.keys(attrs).length > 0) {\n el.attributes = attrs;\n }\n if (Object.keys(style).length > 0) {\n el.style = style;\n }\n }\n\n const kids = node.children ? convertHastChildren(node.children) : [];\n\n if (kids.length === 1 && typeof kids[0] === \"string\") {\n [el.textContent] = kids;\n } else if (kids.length > 0) {\n el.children = kids as JxElement[];\n }\n\n return el;\n }\n\n return null;\n}\n\n/**\n * @param {Record<string, unknown>} properties\n * @returns {{ style: Record<string, string>; attrs: Record<string, string> }}\n */\nfunction hastPropsToJx(properties: Record<string, unknown>) {\n const attrs: Record<string, string> = {};\n const style: Record<string, string> = {};\n\n for (const [key, value] of Object.entries(properties)) {\n if (value === false || value === undefined || value === null) {\n continue;\n }\n\n const info = find(htmlInfo, key);\n const name = info.attribute;\n\n if (name === \"style\" && typeof value === \"string\") {\n parseInlineStyle(value, style);\n continue;\n }\n\n if (value === true) {\n attrs[name] = \"\";\n } else if (Array.isArray(value)) {\n attrs[name] = value.join(info.commaSeparated ? \", \" : \" \");\n } else {\n attrs[name] = String(value);\n }\n }\n return { attrs, style };\n}\n\n/**\n * @param {string} styleStr\n * @param {Record<string, string>} out\n */\nfunction parseInlineStyle(styleStr: string, out: Record<string, string>) {\n for (const decl of styleStr.split(\";\")) {\n const colon = decl.indexOf(\":\");\n if (colon === -1) {\n continue;\n }\n const prop = decl.slice(0, colon).trim();\n const val = decl.slice(colon + 1).trim();\n if (prop && val) {\n out[prop] = val;\n }\n }\n}\n",
94
- "/// <reference lib=\"dom\" />\n// ─── Convert to Component ─────────────────────────────────────────────────────\nimport { html, render as litRender } from \"lit-html\";\nimport { errorMessage } from \"@jxsuite/schema/parse\";\nimport { ref } from \"lit-html/directives/ref.js\";\nimport { childIndex, getNodeAtPath, parentElementPath } from \"../store\";\nimport { activeTab } from \"../workspace/workspace\";\nimport { transact } from \"../tabs/transact\";\nimport { componentRegistry, computeRelativePath, loadComponentRegistry } from \"../files/components\";\nimport { getPlatform } from \"../platform\";\nimport { jsonClone } from \"../utils/studio-utils\";\nimport { statusMessage } from \"../panels/statusbar\";\nimport { showDialog } from \"../ui/layers\";\nimport { validateComponentSlots } from \"../services/cem-export\";\n\nimport type { JxMutableNode } from \"@jxsuite/schema/types\";\n\nconst VALID_NAME = /^[a-z][a-z0-9]*(-[a-z0-9]+)+$/;\n\n/** Convert the currently selected element into a reusable component. */\nexport async function convertToComponent() {\n const tab = activeTab.value;\n if (!tab?.session.selection || tab.session.selection.length < 2) {\n return;\n }\n\n const node = getNodeAtPath(tab.doc.document, tab.session.selection);\n if (!node || !node.tagName) {\n return;\n }\n\n const defaultName = deriveDefaultName(node);\n const name = await promptComponentName(defaultName);\n if (!name) {\n return;\n }\n\n // Extract component definition\n const componentDef = extractComponentDef(node);\n componentDef.tagName = name;\n\n // Compute paths\n const componentFile = `components/${name}.json`;\n const refPath = computeRelativePath(tab.documentPath, componentFile);\n\n // Single atomic mutation: replace node + add $elements ref\n const selectionPath = tab.session.selection;\n transact(tab, (doc) => {\n // Navigate to parent's children array and replace the node\n const pp = parentElementPath(selectionPath) ?? [];\n const idx = childIndex(selectionPath) as number;\n let parent = doc;\n // Paths address nodes by construction (same contract as getNodeAtPath).\n for (const seg of pp) {\n parent = parent[seg] as JxMutableNode;\n }\n if (!Array.isArray(parent.children)) {\n parent.children = [];\n }\n parent.children[idx] = { tagName: name };\n\n // Ensure $elements exists and add the $ref\n if (!doc.$elements) {\n doc.$elements = [];\n }\n const alreadyReferenced = doc.$elements.some(\n (/** @type {JxMutableNode | string | { $ref: string }} */ el) =>\n el && typeof el === \"object\" && \"$ref\" in el && el.$ref === refPath,\n );\n if (!alreadyReferenced) {\n doc.$elements.push({ $ref: refPath });\n }\n });\n\n // Write component file and refresh registry\n try {\n const platform = getPlatform();\n await platform.writeFile(componentFile, JSON.stringify(componentDef, null, 2));\n await loadComponentRegistry();\n const warning = validateComponentSlots(componentDef);\n if (warning) {\n statusMessage(`Converted to <${name}> — Warning: ${warning}`, 6000);\n } else {\n statusMessage(`Converted to <${name}>`);\n }\n } catch (error) {\n statusMessage(`Error saving component: ${errorMessage(error)}`);\n }\n}\n\n/**\n * Derive a default tag name from a node.\n *\n * @param {JxMutableNode} node\n * @returns {string}\n */\nfunction deriveDefaultName(node: JxMutableNode) {\n if (node.$id && node.$id.includes(\"-\")) {\n return node.$id.toLowerCase();\n }\n const tag = (node.tagName ?? \"div\").toLowerCase();\n return tag.includes(\"-\") ? tag : `jx-${tag}`;\n}\n\n/**\n * Deep clone a node and strip page-specific keys.\n *\n * @param {JxMutableNode} node\n * @returns {JxMutableNode}\n */\nfunction extractComponentDef(node: JxMutableNode) {\n // JsonClone, not structuredClone: the selected node is a @vue/reactivity proxy,\n // Which structuredClone rejects with DataCloneError.\n const clone = jsonClone(node);\n delete clone.$id;\n delete clone.$layout;\n delete clone.$paths;\n return clone;\n}\n\n/**\n * Validate a component name against naming rules and existing registry.\n *\n * @param {string} val\n * @returns {{ valid: boolean; error: string }}\n */\nfunction validateName(val: string) {\n const name = val.trim().toLowerCase();\n if (!name.includes(\"-\")) {\n return {\n error: \"Name must contain a hyphen (e.g. my-component)\",\n valid: false,\n };\n }\n if (!VALID_NAME.test(name)) {\n return {\n error: \"Lowercase letters, digits, and hyphens only\",\n valid: false,\n };\n }\n const exists = componentRegistry.some((c) => c.tagName === name);\n if (exists) {\n return { error: `Component <${name}> already exists`, valid: false };\n }\n return { error: \"\", valid: true };\n}\n\n/**\n * Show a naming dialog using Lit-rendered sp-dialog-wrapper.\n *\n * @param {string} defaultName\n * @returns {Promise<string | null>}\n */\nfunction promptComponentName(defaultName: string) {\n let value = defaultName;\n let error = \"\";\n\n return showDialog<string | null>((done) => {\n function confirm() {\n const result = validateName(value);\n if (!result.valid) {\n ({ error } = result);\n rerender();\n return;\n }\n done(value.trim().toLowerCase());\n }\n\n function onInput(e: Event) {\n value = (e.target as HTMLInputElement).value || \"\";\n const result = validateName(value);\n error = result.valid ? \"\" : result.error;\n rerender();\n }\n\n function onKeydown(e: KeyboardEvent) {\n if (e.key === \"Enter\") {\n confirm();\n }\n }\n\n function rerender() {\n const layer = document.querySelector(\"#layer-dialog\");\n const slot = layer?.lastElementChild;\n if (slot) {\n litRender(buildTpl(), slot as HTMLElement);\n }\n }\n\n function buildTpl() {\n return html`\n <sp-dialog-wrapper\n open\n underlay\n headline=\"Convert to Component\"\n confirm-label=\"Convert\"\n cancel-label=\"Cancel\"\n size=\"s\"\n @confirm=${confirm}\n @cancel=${() => done(null)}\n @close=${() => done(null)}\n >\n <p>Enter a hyphenated tag name for the new component.</p>\n <sp-textfield\n placeholder=\"my-component\"\n value=${value}\n ?invalid=${Boolean(error)}\n @input=${onInput}\n @keydown=${onKeydown}\n ${ref((el) => {\n if (el) {\n requestAnimationFrame(() => {\n (el as HTMLElement).focus();\n const input = (el as HTMLElement).shadowRoot?.querySelector(\"input\");\n if (input) {\n input.select();\n }\n });\n }\n })}\n >\n <sp-help-text slot=\"negative-help-text\">${error}</sp-help-text>\n </sp-textfield>\n </sp-dialog-wrapper>\n `;\n }\n\n return buildTpl();\n });\n}\n",
95
- "/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { nothing } from '../lit-html.js';\nimport { directive, Directive, } from '../directive.js';\nimport { setCommittedValue } from '../directive-helpers.js';\nclass Keyed extends Directive {\n constructor() {\n super(...arguments);\n this.key = nothing;\n }\n render(k, v) {\n this.key = k;\n return v;\n }\n update(part, [k, v]) {\n if (k !== this.key) {\n // Clear the part before returning a value. The one-arg form of\n // setCommittedValue sets the value to a sentinel which forces a\n // commit the next render.\n setCommittedValue(part);\n this.key = k;\n }\n return v;\n }\n}\n/**\n * Associates a renderable value with a unique key. When the key changes, the\n * previous DOM is removed and disposed before rendering the next value, even\n * if the value - such as a template - is the same.\n *\n * This is useful for forcing re-renders of stateful components, or working\n * with code that expects new data to generate new HTML elements, such as some\n * animation techniques.\n */\nexport const keyed = directive(Keyed);\n//# sourceMappingURL=keyed.js.map",
96
- "/// <reference lib=\"dom\" />\n/**\n * Field-input.ts — Controlled text-input widgets with a draft-state layer.\n *\n * The single input paradigm for every Studio panel. Each field is identified by a stable `key`.\n * While a field is focused/edited, its in-progress text lives in a per-key DRAFT, decoupled from\n * the document. The visible value is always `getFieldValue(key, committed)` bound via lit's `live`\n * directive, so a render that slips through mid-edit never resets the field to a stale value.\n *\n * Commit semantics (consistent across all panels): commit a short debounce after typing pauses (so\n * the canvas/preview updates live) AND immediately on blur or Enter (so the latest value is never\n * lost). The draft is cleared on blur/Enter, after which the field reflects the committed (possibly\n * normalized) document value again.\n *\n * Pair this with the focus-aware panel scheduler (panels/panel-scheduler.ts), which keeps the panel\n * from re-rendering at all while a field is focused.\n */\n\nimport { html } from \"lit-html\";\nimport type { TemplateResult } from \"lit-html\";\nimport { live } from \"lit-html/directives/live.js\";\nimport { keyed } from \"lit-html/directives/keyed.js\";\n\n/** A lit-renderable value (template or directive result). */\ntype Renderable = unknown;\n\n/** Default debounce (ms) before an in-progress edit is committed to the document. */\nexport const DEFAULT_DEBOUNCE_MS = 350;\n\ninterface DraftEntry {\n value: string;\n timer?: ReturnType<typeof setTimeout>;\n}\n\n/** Active per-field drafts, keyed by a stable field key. */\nconst _drafts = new Map<string, DraftEntry>();\n\n/** The committed value to show for a field — the live draft while editing, else `committed`. */\nexport function getFieldValue(key: string, committed: string): string {\n const d = _drafts.get(key);\n return d ? d.value : committed;\n}\n\n/** Whether a draft is currently being edited for `key`. */\nexport function hasDraft(key: string): boolean {\n return _drafts.has(key);\n}\n\n/** Record the in-progress value for a field without committing it. */\nexport function setDraft(key: string, value: string): void {\n const d = _drafts.get(key);\n if (d) {\n d.value = value;\n } else {\n _drafts.set(key, { value });\n }\n}\n\n/** Discard a field's draft (and cancel any pending debounced commit). */\nexport function clearDraft(key: string): void {\n const d = _drafts.get(key);\n if (d?.timer) {\n clearTimeout(d.timer);\n }\n _drafts.delete(key);\n}\n\n/**\n * Schedule a debounced commit of the current draft, KEEPING the draft afterwards so the field stays\n * controlled by the in-progress text until the user blurs. The committed value flows to the\n * document (live preview) while the cursor/text stay untouched. Exported for unit testing.\n */\nexport function scheduleDraftCommit(key: string, ms: number, commit: (v: string) => void): void {\n const d = _drafts.get(key);\n if (!d) {\n return;\n }\n if (d.timer) {\n clearTimeout(d.timer);\n }\n d.timer = setTimeout(() => {\n const cur = _drafts.get(key);\n if (!cur) {\n return;\n }\n delete cur.timer;\n commit(cur.value);\n }, ms);\n}\n\n/**\n * Flush a field's draft immediately (blur/Enter): commit the latest value and clear the draft so\n * the field reflects the committed document value on the next render.\n */\nexport function commitField(key: string, commit: (v: string) => void): void {\n const d = _drafts.get(key);\n if (!d) {\n return;\n }\n if (d.timer) {\n clearTimeout(d.timer);\n }\n const { value } = d;\n _drafts.delete(key);\n commit(value);\n}\n\n/** Shared option bag for the text widgets. */\nexport interface FieldOpts {\n placeholder?: string;\n size?: string;\n debounceMs?: number;\n /**\n * When to commit to the document: - \"live\" (default): debounced while typing AND on blur/Enter\n * (live preview). - \"blur\": only on blur/Enter — for fields where mid-typing commits are\n * disruptive (e.g. renaming a signal, which would rename on every keystroke pause).\n */\n commitMode?: \"live\" | \"blur\";\n /** Extra inline style for the control. */\n style?: string;\n /** Disable the control. */\n disabled?: boolean;\n}\n\ninterface TextAreaOpts extends FieldOpts {\n minHeight?: string;\n mono?: boolean;\n}\n\nfunction makeHandlers(\n key: string,\n ms: number,\n commit: (v: string) => void,\n commitMode: \"live\" | \"blur\" = \"live\",\n) {\n return {\n onCommit: (e: Event) => {\n const v = (e.target as HTMLInputElement).value;\n setDraft(key, v);\n commitField(key, commit);\n },\n onInput: (e: Event) => {\n const v = (e.target as HTMLInputElement).value;\n setDraft(key, v);\n if (commitMode === \"live\") {\n scheduleDraftCommit(key, ms, commit);\n }\n },\n onKeydown: (e: KeyboardEvent, multiline: boolean) => {\n if (e.key === \"Enter\" && !multiline) {\n commitField(key, commit);\n }\n },\n };\n}\n\n/**\n * Single-line Spectrum text field bound to the draft layer.\n *\n * @param key Stable field identity (e.g. \"head:og:title\", \"fm:title\", \"prop:0/1/className\").\n * @param value Committed value from the document.\n * @param commit Writes the value to the document (transactDoc/mutate…).\n */\nexport function spTextField(\n key: string,\n value: string,\n commit: (v: string) => void,\n opts: FieldOpts = {},\n): Renderable {\n const ms = opts.debounceMs ?? DEFAULT_DEBOUNCE_MS;\n const { onInput, onCommit, onKeydown } = makeHandlers(key, ms, commit, opts.commitMode);\n return keyed(\n key,\n html`\n <sp-textfield\n size=${opts.size ?? \"s\"}\n placeholder=${opts.placeholder ?? \"\"}\n ?disabled=${Boolean(opts.disabled)}\n style=${opts.style ?? \"\"}\n .value=${live(getFieldValue(key, value))}\n @input=${onInput}\n @change=${onCommit}\n @keydown=${(e: KeyboardEvent) => onKeydown(e, false)}\n ></sp-textfield>\n `,\n );\n}\n\n/** Multiline Spectrum text field bound to the draft layer (Enter inserts a newline). */\nexport function spTextArea(\n key: string,\n value: string,\n commit: (v: string) => void,\n opts: FieldOpts = {},\n): Renderable {\n const ms = opts.debounceMs ?? DEFAULT_DEBOUNCE_MS;\n const { onInput, onCommit } = makeHandlers(key, ms, commit, opts.commitMode);\n return keyed(\n key,\n html`\n <sp-textfield\n multiline\n size=${opts.size ?? \"s\"}\n placeholder=${opts.placeholder ?? \"\"}\n ?disabled=${Boolean(opts.disabled)}\n style=${opts.style ?? \"\"}\n .value=${live(getFieldValue(key, value))}\n @input=${onInput}\n @change=${onCommit}\n ></sp-textfield>\n `,\n );\n}\n\n/** Native `<textarea class=\"field-input\">` bound to the draft layer (used by code-ish fields). */\nexport function rawTextArea(\n key: string,\n value: string,\n commit: (v: string) => void,\n opts: TextAreaOpts = {},\n): Renderable {\n const ms = opts.debounceMs ?? DEFAULT_DEBOUNCE_MS;\n const { onInput, onCommit } = makeHandlers(key, ms, commit, opts.commitMode);\n const style = [\n `min-height:${opts.minHeight ?? \"40px\"}`,\n opts.mono ? \"font-family:var(--font-mono);font-size:var(--spectrum-font-size-50,11px)\" : \"\",\n opts.style ?? \"\",\n ]\n .filter(Boolean)\n .join(\";\");\n return keyed(\n key,\n html`\n <textarea\n class=\"field-input\"\n style=${style}\n placeholder=${opts.placeholder ?? \"\"}\n ?disabled=${Boolean(opts.disabled)}\n .value=${live(getFieldValue(key, value))}\n @input=${onInput}\n @change=${onCommit}\n ></textarea>\n `,\n );\n}\n\n/**\n * Spectrum number field. Numbers are short and not prone to the typing-truncation bug, so this\n * commits on change (blur/Enter) only — no draft buffering. `commit` receives the parsed number, or\n * undefined when the field is cleared / invalid.\n */\nexport function spNumberField(\n value: number | undefined,\n commit: (v: number | undefined) => void,\n opts: FieldOpts & { hideStepper?: boolean; min?: number; max?: number } = {},\n): TemplateResult {\n return html`\n <sp-number-field\n size=${opts.size ?? \"s\"}\n ?hide-stepper=${opts.hideStepper ?? true}\n ?disabled=${Boolean(opts.disabled)}\n style=${opts.style ?? \"\"}\n .value=${live(value !== undefined ? Number(value) : undefined)}\n @change=${(e: Event) => {\n const raw = (e.target as HTMLInputElement).value;\n const n = Number(raw);\n commit(raw === \"\" || Number.isNaN(n) ? undefined : n);\n }}\n ></sp-number-field>\n `;\n}\n",
97
- "/// <reference lib=\"dom\" />\n/**\n * Formula chips — a horizontal presentation layer summarizing an expression tree as left-to-right\n * chips (spec §19.9). The `target` chain unrolls deepest-first: the head chip is the innermost\n * target operand (ref/literal), followed by each operator up to the root. Nested non-target\n * operands render as parenthesized group chips. Pure presentation — no editing logic; clicking a\n * chip reports the node path to the caller.\n */\n\nimport { html, nothing } from \"lit-html\";\nimport { isJsonObject, isRef } from \"@jxsuite/schema/guards\";\n\nimport type { TemplateResult } from \"lit-html\";\nimport type { EditorPreview } from \"./expression-editor\";\n\ntype NodePath = (string | number)[];\n\ninterface ChainLink {\n node: Record<string, unknown>;\n path: NodePath;\n}\n\ninterface Chain {\n /** The innermost target operand (ref/literal), absent for target-less roots. */\n head: { value: unknown; path: NodePath } | null;\n /** Operator nodes, deepest target first → outermost operator last. */\n links: ChainLink[];\n}\n\nfunction isExprNode(value: unknown): value is Record<string, unknown> {\n return isJsonObject(value) && typeof value.operator === \"string\";\n}\n\n/** Human label for a pointer ref: strips the #/state/ and window#/ prefixes. */\nfunction refLabel(ref: string): string {\n if (ref.startsWith(\"#/state/\")) {\n return ref.slice(\"#/state/\".length);\n }\n if (ref.startsWith(\"window#/\")) {\n return ref.slice(\"window#/\".length).replaceAll(\"/\", \".\");\n }\n return ref || \"?\";\n}\n\n/** Compact label for a non-node operand (ref or literal). */\nfunction operandLabel(value: unknown): string {\n if (isRef(value)) {\n return refLabel(value.$ref);\n }\n if (isExprNode(value)) {\n return `(${chipSummary(value)})`;\n }\n if (typeof value === \"string\") {\n return JSON.stringify(value);\n }\n return String(value);\n}\n\n/** The chain path for `hops` target descents below `basePath`. */\nfunction targetPath(basePath: NodePath, hops: number): NodePath {\n return [...basePath, ...Array.from({ length: hops }, () => \"target\")];\n}\n\n/** Unroll a node's target chain into head operand + operator links (deepest first). */\nfunction unrollChain(node: Record<string, unknown>, basePath: NodePath): Chain {\n // Collect the chain root-first, then materialize each link's path from its descent depth.\n const nodes: Record<string, unknown>[] = [];\n let current: Record<string, unknown> = node;\n for (;;) {\n nodes.push(current);\n const next = current.target;\n if (isExprNode(next)) {\n current = next;\n } else {\n break;\n }\n }\n const deepest = nodes.at(-1)!;\n const head: Chain[\"head\"] =\n \"target\" in deepest || deepest.target !== undefined\n ? { path: targetPath(basePath, nodes.length), value: deepest.target }\n : null;\n const rootFirst = nodes.map((n, i) => ({ node: n, path: targetPath(basePath, i) }));\n return { head, links: rootFirst.toReversed() };\n}\n\n/** Compact one-line text form of a node: head operand followed by the operator chain. */\nexport function chipSummary(node: unknown): string {\n if (!isExprNode(node)) {\n return operandLabel(node);\n }\n const { head, links } = unrollChain(node, []);\n const parts: string[] = [];\n if (head) {\n parts.push(operandLabel(head.value));\n }\n for (const link of links) {\n parts.push(String(link.node.operator));\n }\n return parts.join(\" › \");\n}\n\n// ─── Rendering ──────────────────────────────────────────────────────────────\n\nconst CHIP_STYLE =\n \"display:inline-flex;align-items:center;gap:4px;max-width:180px;padding:1px 7px;\" +\n \"border:1px solid var(--spectrum-gray-300, #3c3c3c);border-radius:10px;cursor:pointer;\" +\n \"background:var(--spectrum-gray-100, #232323);color:var(--spectrum-gray-800, #d0d0d0);\" +\n \"font-size:11px;font-family:var(--spectrum-code-font-family, monospace);line-height:18px\";\n\n/** Live value badge — same styling convention as the expression editor's `.expr-live-badge`. */\nfunction renderChipBadge(preview: EditorPreview | null | undefined, pathKey: string) {\n const text = preview?.values.get(pathKey);\n if (text === undefined) {\n return nothing;\n }\n return html`\n <span\n class=\"expr-live-badge\"\n title=${text}\n style=\"font-family:var(--spectrum-code-font-family, monospace);font-size:10px;line-height:16px;padding:0 5px;border-radius:4px;background:var(--spectrum-gray-200, #323232);color:var(--spectrum-seafoam-900, #35a690);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:120px;flex-shrink:1\"\n >${text}</span\n >\n `;\n}\n\nfunction renderChip(\n label: string,\n path: NodePath,\n onSelect: (path: NodePath) => void,\n preview: EditorPreview | null | undefined,\n group = false,\n) {\n return html`\n <button\n type=\"button\"\n class=${group ? \"formula-chip formula-chip--group\" : \"formula-chip\"}\n data-path=${path.join(\"/\")}\n style=${CHIP_STYLE}\n title=${label}\n @click=${() => onSelect(path)}\n >\n <span style=\"white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:110px\"\n >${label}</span\n >\n ${renderChipBadge(preview, path.join(\"/\"))}\n </button>\n `;\n}\n\n/** Collect group chips for a link's non-target expression operands (value/initial/cases). */\nfunction groupChips(\n link: ChainLink,\n onSelect: (path: NodePath) => void,\n preview: EditorPreview | null | undefined,\n): TemplateResult[] {\n const chips: TemplateResult[] = [];\n const add = (operand: unknown, path: NodePath) => {\n if (isExprNode(operand)) {\n chips.push(renderChip(`(${chipSummary(operand)})`, path, onSelect, preview, true));\n }\n };\n const { value, initial, cases } = link.node;\n if (Array.isArray(value)) {\n for (const [i, item] of value.entries()) {\n add(item, [...link.path, \"value\", i]);\n }\n } else {\n add(value, [...link.path, \"value\"]);\n }\n add(initial, [...link.path, \"initial\"]);\n if (isJsonObject(cases)) {\n for (const [key, operand] of Object.entries(cases)) {\n add(operand, [...link.path, \"cases\", key]);\n }\n }\n add(link.node.default, [...link.path, \"default\"]);\n return chips;\n}\n\n/**\n * Render an expression node as a horizontal chip pipeline. Each chip carries the node's live value\n * badge when a preview is supplied; clicking a chip calls `onSelect` with the node path.\n */\nexport function renderFormulaChips(\n node: unknown,\n onSelect: (path: NodePath) => void,\n opts: { preview?: EditorPreview | null; path?: NodePath } = {},\n): TemplateResult {\n if (!isExprNode(node)) {\n return html`${nothing}`;\n }\n const preview = opts.preview ?? null;\n const basePath = opts.path ?? [];\n const { head, links } = unrollChain(node, basePath);\n\n const chips: TemplateResult[] = [];\n if (head) {\n chips.push(renderChip(operandLabel(head.value), head.path, onSelect, preview));\n }\n for (const link of links) {\n chips.push(\n renderChip(String(link.node.operator), link.path, onSelect, preview),\n ...groupChips(link, onSelect, preview),\n );\n }\n\n return html`\n <div\n class=\"formula-chips\"\n style=\"display:flex;flex-wrap:wrap;gap:4px;align-items:center;padding:2px 0 6px\"\n >\n ${chips}\n </div>\n `;\n}\n",
98
- "/**\n * GENERATED by bin/generate.ts — do not edit. Regenerate with `bun run generate`.\n *\n * Every entry is a named formula (spec §19.4c): a pure $expression body over $args/<name>\n * parameters, verified against the blessed operator and global sets at generation time.\n */\n\nimport type { CemParameter, JxExpressionNode } from \"@jxsuite/schema/types\";\n\nexport interface FormulaCatalogEntry {\n name: string;\n description: string;\n parameters: (string | CemParameter)[];\n expression: JxExpressionNode;\n}\n\nexport const catalog: FormulaCatalogEntry[] = [\n {\n description: \"Arithmetic mean of an array of numbers; 0 for an empty array.\",\n expression: {\n operator: \"?:\",\n target: {\n $ref: \"$args/values/length\",\n },\n value: {\n operator: \"/\",\n target: {\n operator: \"reduce\",\n target: {\n $ref: \"$args/values\",\n },\n initial: 0,\n value: {\n operator: \"+\",\n target: {\n $ref: \"$reduce/acc\",\n },\n value: {\n $ref: \"$map/item\",\n },\n },\n },\n value: {\n $ref: \"$args/values/length\",\n },\n },\n initial: 0,\n },\n name: \"average\",\n parameters: [\n {\n name: \"values\",\n type: {\n text: \"number[]\",\n },\n },\n ],\n },\n {\n description:\n \"Uppercase the first character of a string, leaving the rest unchanged (the CSS text-transform: capitalize shape for a single word).\",\n expression: {\n operator: \"+\",\n target: {\n operator: \"toUpperCase\",\n target: {\n operator: \"charAt\",\n target: {\n $ref: \"$args/text\",\n },\n value: 0,\n },\n },\n value: {\n operator: \"slice\",\n target: {\n $ref: \"$args/text\",\n },\n value: 1,\n },\n },\n name: \"capitalize\",\n parameters: [\n {\n name: \"text\",\n type: {\n text: \"string\",\n },\n },\n ],\n },\n {\n description:\n \"Bound a number to the [min, max] range (the TC39 Math.clamp shape): returns min when below, max when above, the value itself otherwise.\",\n expression: {\n operator: \"call\",\n target: {\n $ref: \"window#/Math/min\",\n },\n value: [\n {\n operator: \"call\",\n target: {\n $ref: \"window#/Math/max\",\n },\n value: [\n {\n $ref: \"$args/value\",\n },\n {\n $ref: \"$args/min\",\n },\n ],\n },\n {\n $ref: \"$args/max\",\n },\n ],\n },\n name: \"clamp\",\n parameters: [\n {\n name: \"value\",\n type: {\n text: \"number\",\n },\n },\n {\n name: \"min\",\n type: {\n text: \"number\",\n },\n },\n {\n name: \"max\",\n type: {\n text: \"number\",\n },\n },\n ],\n },\n {\n description:\n \"A copy of an array with the falsy elements removed (Array.prototype.filter on truthiness).\",\n expression: {\n operator: \"filter\",\n target: {\n $ref: \"$args/values\",\n },\n value: {\n operator: \"!\",\n target: {\n operator: \"!\",\n target: {\n $ref: \"$map/item\",\n },\n },\n },\n },\n name: \"compact\",\n parameters: [\n {\n name: \"values\",\n type: {\n text: \"unknown[]\",\n },\n },\n ],\n },\n {\n description: \"The length of an array or string, or 0 when the value is missing.\",\n expression: {\n operator: \"??\",\n target: {\n $ref: \"$args/values/length\",\n },\n value: 0,\n },\n name: \"count\",\n parameters: [\n {\n name: \"values\",\n type: {\n text: \"unknown[] | string\",\n },\n },\n ],\n },\n {\n description: \"The first element of an array (index 0), or null when empty.\",\n expression: {\n operator: \"??\",\n target: {\n $ref: \"$args/values/0\",\n },\n value: null,\n },\n name: \"first\",\n parameters: [\n {\n name: \"values\",\n type: {\n text: \"unknown[]\",\n },\n },\n ],\n },\n {\n description:\n 'The uppercase first letters of each whitespace-separated word, joined (e.g. \"ada lovelace\" → \"AL\").',\n expression: {\n operator: \"join\",\n target: {\n operator: \"map\",\n target: {\n operator: \"split\",\n target: {\n $ref: \"$args/name\",\n },\n value: \" \",\n },\n value: {\n operator: \"toUpperCase\",\n target: {\n operator: \"charAt\",\n target: {\n $ref: \"$map/item\",\n },\n value: 0,\n },\n },\n },\n value: \"\",\n },\n name: \"initials\",\n parameters: [\n {\n name: \"name\",\n type: {\n text: \"string\",\n },\n },\n ],\n },\n {\n description:\n \"True when an array or string has no elements (length 0 — a missing value counts as empty).\",\n expression: {\n operator: \"===\",\n target: {\n operator: \"??\",\n target: {\n $ref: \"$args/value/length\",\n },\n value: 0,\n },\n value: 0,\n },\n name: \"isEmpty\",\n parameters: [\n {\n name: \"value\",\n type: {\n text: \"unknown[] | string\",\n },\n },\n ],\n },\n {\n description: \"The last element of an array (Array.prototype.at(-1)), or undefined when empty.\",\n expression: {\n operator: \"at\",\n target: {\n $ref: \"$args/values\",\n },\n value: -1,\n },\n name: \"last\",\n parameters: [\n {\n name: \"values\",\n type: {\n text: \"unknown[]\",\n },\n },\n ],\n },\n {\n description:\n \"The largest number in an array (Math.max folded over the values); undefined for an empty array.\",\n expression: {\n operator: \"reduce\",\n target: {\n $ref: \"$args/values\",\n },\n initial: {\n $ref: \"$args/values/0\",\n },\n value: {\n operator: \"call\",\n target: {\n $ref: \"window#/Math/max\",\n },\n value: [\n {\n $ref: \"$reduce/acc\",\n },\n {\n $ref: \"$map/item\",\n },\n ],\n },\n },\n name: \"max\",\n parameters: [\n {\n name: \"values\",\n type: {\n text: \"number[]\",\n },\n },\n ],\n },\n {\n description:\n \"The smallest number in an array (Math.min folded over the values); undefined for an empty array.\",\n expression: {\n operator: \"reduce\",\n target: {\n $ref: \"$args/values\",\n },\n initial: {\n $ref: \"$args/values/0\",\n },\n value: {\n operator: \"call\",\n target: {\n $ref: \"window#/Math/min\",\n },\n value: [\n {\n $ref: \"$reduce/acc\",\n },\n {\n $ref: \"$map/item\",\n },\n ],\n },\n },\n name: \"min\",\n parameters: [\n {\n name: \"values\",\n type: {\n text: \"number[]\",\n },\n },\n ],\n },\n {\n description: \"part / whole as a percentage (0 when the whole is 0 or missing).\",\n expression: {\n operator: \"?:\",\n target: {\n $ref: \"$args/whole\",\n },\n value: {\n operator: \"*\",\n target: {\n operator: \"/\",\n target: {\n $ref: \"$args/part\",\n },\n value: {\n $ref: \"$args/whole\",\n },\n },\n value: 100,\n },\n initial: 0,\n },\n name: \"percent\",\n parameters: [\n {\n name: \"part\",\n type: {\n text: \"number\",\n },\n },\n {\n name: \"whole\",\n type: {\n text: \"number\",\n },\n },\n ],\n },\n {\n description:\n \"Round a number to the given decimal places (Math.round against a Math.pow(10, digits) scale).\",\n expression: {\n operator: \"/\",\n target: {\n operator: \"call\",\n target: {\n $ref: \"window#/Math/round\",\n },\n value: [\n {\n operator: \"*\",\n target: {\n $ref: \"$args/value\",\n },\n value: {\n operator: \"call\",\n target: {\n $ref: \"window#/Math/pow\",\n },\n value: [\n 10,\n {\n $ref: \"$args/digits\",\n },\n ],\n },\n },\n ],\n },\n value: {\n operator: \"call\",\n target: {\n $ref: \"window#/Math/pow\",\n },\n value: [\n 10,\n {\n $ref: \"$args/digits\",\n },\n ],\n },\n },\n name: \"roundTo\",\n parameters: [\n {\n name: \"value\",\n type: {\n text: \"number\",\n },\n },\n {\n name: \"digits\",\n type: {\n text: \"number\",\n },\n default: 0,\n },\n ],\n },\n {\n description: \"Add every number in an array (Array.prototype.reduce with +, seeded at 0).\",\n expression: {\n operator: \"reduce\",\n target: {\n $ref: \"$args/values\",\n },\n initial: 0,\n value: {\n operator: \"+\",\n target: {\n $ref: \"$reduce/acc\",\n },\n value: {\n $ref: \"$map/item\",\n },\n },\n },\n name: \"sum\",\n parameters: [\n {\n name: \"values\",\n type: {\n text: \"number[]\",\n },\n },\n ],\n },\n {\n description:\n \"Shorten a string to at most the given length, appending a horizontal ellipsis when cut.\",\n expression: {\n operator: \"?:\",\n target: {\n operator: \">\",\n target: {\n $ref: \"$args/text/length\",\n },\n value: {\n $ref: \"$args/length\",\n },\n },\n value: {\n operator: \"+\",\n target: {\n operator: \"slice\",\n target: {\n $ref: \"$args/text\",\n },\n value: [\n 0,\n {\n $ref: \"$args/length\",\n },\n ],\n },\n value: \"…\",\n },\n initial: {\n $ref: \"$args/text\",\n },\n },\n name: \"truncate\",\n parameters: [\n {\n name: \"text\",\n type: {\n text: \"string\",\n },\n },\n {\n name: \"length\",\n type: {\n text: \"number\",\n },\n },\n ],\n },\n] as unknown as FormulaCatalogEntry[];\n",
99
- "/**\n * Formula catalog — the metadata registry behind the formula palette, chip labels, and Monaco\n * completions (spec §19). Merges three sources into one uniform entry shape:\n *\n * 1. Blessed operators (hand-authored metadata for every member of `BLESSED_OPERATORS`),\n * 2. Blessed pure globals (derived programmatically from `BLESSED_GLOBALS`),\n * 3. Named formulas (derived from document state via `isNamedFormulaDef`).\n *\n * Pure data + factories — no DOM. Descriptions reference genuine ECMA semantics (naming law: no\n * token is invented).\n */\n\nimport { BLESSED_GLOBALS, BLESSED_OPERATORS, PURE_METHOD_OPS } from \"@jxsuite/runtime/expression\";\nimport { catalog as packagedCatalog } from \"@jxsuite/formulas\";\nimport { isJsonObject, isNamedFormulaDef } from \"@jxsuite/schema/guards\";\n\nimport type {\n CemParameter,\n JxExpressionNode,\n JxExpressionOperand,\n JxStateDefinition,\n} from \"@jxsuite/schema/types\";\nimport type { JsonValue } from \"../types\";\n\nexport interface FormulaParameterInfo {\n name: string;\n /** Display string for the parameter type (CEM `{ text }` or JSON Schema `type`). */\n type?: string;\n description?: string;\n default?: JsonValue;\n}\n\nexport interface FormulaCatalogEntry {\n /** Stable identifier: operator token, global path (\"Math/max\"), or state key. */\n name: string;\n /** Display label: operator token, dotted global (\"Math.max\"), or state key. */\n label: string;\n /** Palette group heading; operator groups mirror the expression editor's. */\n group: string;\n kind: \"operator\" | \"global\" | \"formula\";\n description: string;\n parameters: FormulaParameterInfo[];\n /** Factory for a fresh default expression node inserting this entry. */\n insert: () => JxExpressionNode;\n /**\n * A state entry this pick must copy into the document first (packaged formulas vendor their JSON\n * in — the project owns the copy; no package resolution at build or run time).\n */\n ensure?: { name: string; def: JxStateDefinition };\n}\n\n/**\n * Apply a palette pick: vendor the entry's state def in first when required (and not already\n * present), then hand the fresh node to the caller. The single funnel every pick site uses.\n */\nexport function applyCatalogPick(\n entry: FormulaCatalogEntry,\n onChange: (node: JxExpressionNode) => void,\n opts?: {\n stateEntries?: Record<string, JxStateDefinition> | null | undefined;\n onInsertDef?: ((name: string, def: JxStateDefinition) => void) | undefined;\n },\n): void {\n if (entry.ensure && !opts?.stateEntries?.[entry.ensure.name]) {\n opts?.onInsertDef?.(entry.ensure.name, entry.ensure.def);\n }\n onChange(entry.insert());\n}\n\n// ─── Blessed operators (hand-authored) ──────────────────────────────────────\n\ninterface OperatorMeta {\n group: string;\n description: string;\n parameters: FormulaParameterInfo[];\n insert: () => JxExpressionNode;\n}\n\nconst REF_TARGET = { description: \"Writable pointer the operation applies to\", name: \"target\" };\nconst LEFT = { description: \"Left operand\", name: \"target\" };\nconst RIGHT = { description: \"Right operand\", name: \"value\" };\n\nfunction assignMeta(op: string, verb: string): OperatorMeta {\n return {\n description: `${verb} assignment operator (ECMA \\`${op}\\`): stores the result at the target pointer.`,\n group: \"Assignment\",\n insert: () => ({ operator: op, target: { $ref: \"\" }, value: null }),\n parameters: [REF_TARGET, { description: \"Value assigned to the target\", name: \"value\" }],\n };\n}\n\nfunction binaryMeta(group: string, op: string, description: string): OperatorMeta {\n return {\n description,\n group,\n insert: () => ({ operator: op, target: null, value: null }),\n parameters: [LEFT, RIGHT],\n };\n}\n\nfunction arrayMeta(op: string, description: string, withValue: boolean): OperatorMeta {\n return {\n description,\n group: \"Array methods\",\n insert: () =>\n withValue\n ? { operator: op, target: { $ref: \"\" }, value: null }\n : { operator: op, target: { $ref: \"\" } },\n parameters: withValue\n ? [REF_TARGET, { description: \"Element to add\", name: \"value\" }]\n : [REF_TARGET],\n };\n}\n\nfunction aggregateMeta(op: string, description: string, withInitial: boolean): OperatorMeta {\n const node: JxExpressionNode = {\n operator: op,\n target: { $ref: \"\" },\n value: { operator: \"!\", target: null },\n };\n return {\n description,\n group: \"Aggregate\",\n insert: () => (withInitial ? { ...node, initial: 0 } : { ...node }),\n parameters: [\n { description: \"Array pointer to iterate\", name: \"target\" },\n { description: \"Per-item expression ($map/item, $map/index)\", name: \"value\" },\n ...(withInitial\n ? [{ description: \"Initial accumulator ($reduce/acc)\", name: \"initial\" }]\n : []),\n ],\n };\n}\n\nconst OPERATOR_META: Record<string, OperatorMeta> = {\n \"!\": {\n description: \"Logical NOT operator (ECMA `!`): coerces the operand to boolean and negates it.\",\n group: \"Unary\",\n insert: () => ({ operator: \"!\", target: null }),\n parameters: [{ description: \"Operand to negate\", name: \"target\" }],\n },\n \"!==\": binaryMeta(\n \"Comparison\",\n \"!==\",\n \"Strict inequality operator (ECMA `!==`): true when the operands differ without coercion.\",\n ),\n \"%\": binaryMeta(\n \"Arithmetic\",\n \"%\",\n \"Remainder operator (ECMA `%`): remainder of dividing the left operand by the right.\",\n ),\n \"&&\": binaryMeta(\n \"Logical\",\n \"&&\",\n \"Logical AND operator (ECMA `&&`): yields the right operand when the left is truthy.\",\n ),\n \"*\": binaryMeta(\n \"Arithmetic\",\n \"*\",\n \"Multiplication operator (ECMA `*`): numeric product of the operands.\",\n ),\n \"*=\": assignMeta(\"*=\", \"Multiplication\"),\n \"+\": binaryMeta(\n \"Arithmetic\",\n \"+\",\n \"Addition operator (ECMA `+`): numeric addition, or string concatenation.\",\n ),\n \"+=\": assignMeta(\"+=\", \"Addition\"),\n \"-\": binaryMeta(\n \"Arithmetic\",\n \"-\",\n \"Subtraction operator (ECMA `-`); with no value operand it is unary negation.\",\n ),\n \"-=\": assignMeta(\"-=\", \"Subtraction\"),\n \"/\": binaryMeta(\"Arithmetic\", \"/\", \"Division operator (ECMA `/`): quotient of the operands.\"),\n \"/=\": assignMeta(\"/=\", \"Division\"),\n \"<\": binaryMeta(\n \"Comparison\",\n \"<\",\n \"Less-than operator (ECMA `<`): relational comparison of the operands.\",\n ),\n \"<=\": binaryMeta(\n \"Comparison\",\n \"<=\",\n \"Less-than-or-equal operator (ECMA `<=`): relational comparison of the operands.\",\n ),\n \"=\": assignMeta(\"=\", \"Simple\"),\n \"===\": binaryMeta(\n \"Comparison\",\n \"===\",\n \"Strict equality operator (ECMA `===`): true when the operands are equal without coercion.\",\n ),\n \">\": binaryMeta(\n \"Comparison\",\n \">\",\n \"Greater-than operator (ECMA `>`): relational comparison of the operands.\",\n ),\n \">=\": binaryMeta(\n \"Comparison\",\n \">=\",\n \"Greater-than-or-equal operator (ECMA `>=`): relational comparison of the operands.\",\n ),\n \"??\": binaryMeta(\n \"Logical\",\n \"??\",\n \"Nullish coalescing operator (ECMA `??`): yields the right operand when the left is null or undefined.\",\n ),\n \"?:\": {\n description:\n \"Conditional operator (ECMA `?:`): evaluates the test in target, yielding value when truthy, initial otherwise.\",\n group: \"Conditional\",\n insert: () => ({ initial: null, operator: \"?:\", target: null, value: null }),\n parameters: [\n { description: \"Test condition\", name: \"target\" },\n { description: \"Result when the test is truthy\", name: \"value\" },\n { description: \"Result when the test is falsy\", name: \"initial\" },\n ],\n },\n \"||\": binaryMeta(\n \"Logical\",\n \"||\",\n \"Logical OR operator (ECMA `||`): yields the right operand when the left is falsy.\",\n ),\n call: {\n description:\n \"Function.prototype.call (ECMA): invokes a named formula (#/state/…) or blessed pure global (window#/…) with positional arguments.\",\n group: \"Function\",\n insert: () => ({ operator: \"call\", target: { $ref: \"\" }, value: [] }),\n parameters: [\n { description: \"Callee pointer: #/state/<formula> or window#/<global>\", name: \"target\" },\n { description: \"Positional argument list\", name: \"value\" },\n ],\n },\n filter: aggregateMeta(\n \"filter\",\n \"Array.prototype.filter (ECMA): keeps elements whose per-item expression is truthy.\",\n false,\n ),\n map: aggregateMeta(\n \"map\",\n \"Array.prototype.map (ECMA): transforms each element via the per-item expression.\",\n false,\n ),\n pop: arrayMeta(\n \"pop\",\n \"Array.prototype.pop (ECMA): removes and returns the last element of the target array.\",\n false,\n ),\n push: arrayMeta(\n \"push\",\n \"Array.prototype.push (ECMA): appends the value to the target array.\",\n true,\n ),\n reduce: aggregateMeta(\n \"reduce\",\n \"Array.prototype.reduce (ECMA): folds the array into an accumulator via the per-item expression.\",\n true,\n ),\n shift: arrayMeta(\n \"shift\",\n \"Array.prototype.shift (ECMA): removes and returns the first element of the target array.\",\n false,\n ),\n splice: {\n description:\n \"Array.prototype.splice (ECMA): removes and/or inserts elements at an index of the target array.\",\n group: \"Array methods\",\n insert: () => ({ operator: \"splice\", target: { $ref: \"\" }, value: [null] }),\n parameters: [\n REF_TARGET,\n { description: \"Arguments: start, deleteCount, items…\", name: \"value\" },\n ],\n },\n switch: {\n description:\n \"Switch selection (ECMA `switch` semantics): matches the target's string form against case keys, falling back to default.\",\n group: \"Conditional\",\n insert: () => ({ cases: {}, default: null, operator: \"switch\", target: null }),\n parameters: [\n { description: \"Discriminant value\", name: \"target\" },\n { description: \"Matched value → result operand map\", name: \"cases\" },\n { description: \"Result when no case matches\", name: \"default\" },\n ],\n },\n unshift: arrayMeta(\n \"unshift\",\n \"Array.prototype.unshift (ECMA): prepends the value to the target array.\",\n true,\n ),\n};\n\n/** Catalog entries for every blessed operator, in `BLESSED_OPERATORS` iteration order. */\nexport function operatorEntries(): FormulaCatalogEntry[] {\n const out: FormulaCatalogEntry[] = [];\n for (const op of BLESSED_OPERATORS) {\n // Own-property lookup only: a bare index would resolve inherited Object.prototype members for\n // Ops like \"toLocaleString\", yielding a bogus meta whose undefined group/description breaks\n // The palette's substring filter.\n const meta = Object.hasOwn(OPERATOR_META, op) ? OPERATOR_META[op] : undefined;\n if (meta) {\n out.push({\n description: meta.description,\n group: meta.group,\n insert: meta.insert,\n kind: \"operator\",\n label: op,\n name: op,\n parameters: meta.parameters,\n });\n } else if (PURE_METHOD_OPS.has(op)) {\n out.push(pureMethodEntry(op));\n }\n }\n return out;\n}\n\n// ─── Pure standard-library methods (derived, spec §19.4d) ───────────────────\n\n/** Prototype owner per pure method — drives grouping and the derived description. */\nconst PURE_METHOD_PROTO: Record<string, string> = {\n at: \"Array/String\",\n charAt: \"String\",\n concat: \"Array/String\",\n endsWith: \"String\",\n flat: \"Array\",\n includes: \"Array/String\",\n indexOf: \"Array/String\",\n join: \"Array\",\n lastIndexOf: \"Array/String\",\n normalize: \"String\",\n padEnd: \"String\",\n padStart: \"String\",\n repeat: \"String\",\n replaceAll: \"String\",\n slice: \"Array/String\",\n split: \"String\",\n startsWith: \"String\",\n toFixed: \"Number\",\n toLocaleLowerCase: \"String\",\n toLocaleString: \"Number\",\n toLocaleUpperCase: \"String\",\n toLowerCase: \"String\",\n toPrecision: \"Number\",\n toReversed: \"Array\",\n toSorted: \"Array\",\n toSpliced: \"Array\",\n toUpperCase: \"String\",\n trim: \"String\",\n trimEnd: \"String\",\n trimStart: \"String\",\n with: \"Array\",\n};\n\n/** Methods that take no argument — their insert seed omits `value`. */\nexport const ZERO_ARG_METHODS = new Set([\n \"flat\",\n \"normalize\",\n \"toLocaleLowerCase\",\n \"toLocaleString\",\n \"toLocaleUpperCase\",\n \"toLowerCase\",\n \"toReversed\",\n \"toSorted\",\n \"toUpperCase\",\n \"trim\",\n \"trimEnd\",\n \"trimStart\",\n]);\n\n/** The derived catalog entry for one pure method operator (spec §19.4d). */\nfunction pureMethodEntry(op: string): FormulaCatalogEntry {\n const proto = PURE_METHOD_PROTO[op] ?? \"Standard library\";\n return {\n description: `${proto}.prototype.${op} (ECMA) — pure: never mutates the receiver. Receiver in target; argument (or argument list) in value.`,\n group: `${proto} methods`,\n insert: () =>\n ZERO_ARG_METHODS.has(op)\n ? { operator: op, target: { $ref: \"\" } }\n : { operator: op, target: { $ref: \"\" }, value: null },\n kind: \"operator\",\n label: op,\n name: op,\n parameters: [],\n };\n}\n\n// ─── Blessed globals (derived) ──────────────────────────────────────────────\n\n/**\n * Synthetic blessed helpers wrap constructor-shaped standard-library APIs (spec §19.4c); their\n * catalog descriptions name the wrapped API rather than claiming a literal global exists.\n */\nconst HELPER_DESCRIPTIONS: Record<string, string> = {\n \"Intl/formatDate\":\n \"Intl.formatDate(value, locale?, options?) — blessed helper wrapping new Intl.DateTimeFormat(locale, options).format(new Date(value)).\",\n \"Intl/formatNumber\":\n \"Intl.formatNumber(value, locale?, options?) — blessed helper wrapping new Intl.NumberFormat(locale, options).format(value).\",\n \"Intl/formatRelativeTime\":\n \"Intl.formatRelativeTime(value, unit, locale?, options?) — blessed helper wrapping new Intl.RelativeTimeFormat(locale, options).format(value, unit).\",\n};\n\n/** Catalog entries derived from `BLESSED_GLOBALS`; grouped by namespace (bare → globalThis). */\nexport function globalEntries(): FormulaCatalogEntry[] {\n const out: FormulaCatalogEntry[] = [];\n for (const name of BLESSED_GLOBALS) {\n const slash = name.indexOf(\"/\");\n const group = slash === -1 ? \"globalThis\" : name.slice(0, slash);\n const label = name.replaceAll(\"/\", \".\");\n out.push({\n description:\n HELPER_DESCRIPTIONS[name] ??\n `${label} — blessed pure global from the ECMAScript standard library, invoked via the call operator (window#/${name}).`,\n group,\n insert: () => ({ operator: \"call\", target: { $ref: `window#/${name}` }, value: [] }),\n kind: \"global\",\n label,\n name,\n parameters: [],\n });\n }\n return out;\n}\n\n// ─── Named formulas (derived from document state) ───────────────────────────\n\n/** Normalize a `(string | CemParameter)` parameter declaration to display metadata. */\nfunction toParameterInfo(p: string | CemParameter): FormulaParameterInfo | null {\n if (typeof p === \"string\") {\n return p ? { name: p } : null;\n }\n if (!isJsonObject(p) || typeof p.name !== \"string\" || !p.name) {\n return null;\n }\n const info: FormulaParameterInfo = { name: p.name };\n const { type } = p;\n if (typeof type === \"string\") {\n info.type = type;\n } else if (isJsonObject(type)) {\n if (typeof type.text === \"string\") {\n info.type = type.text;\n } else if (typeof type.type === \"string\") {\n info.type = type.type;\n }\n }\n if (typeof p.description === \"string\") {\n info.description = p.description;\n }\n if (\"default\" in p && p.default !== undefined) {\n info.default = p.default as JsonValue;\n }\n return info;\n}\n\n/** Catalog entries for the document's named formulas (parameterized `$expression` entries). */\nexport function namedFormulaEntries(\n state?: Record<string, JxStateDefinition> | null,\n): FormulaCatalogEntry[] {\n const out: FormulaCatalogEntry[] = [];\n for (const [key, def] of Object.entries(state ?? {})) {\n if (!isNamedFormulaDef(def)) {\n continue;\n }\n const parameters = (def.parameters as (string | CemParameter)[])\n .map((p) => toParameterInfo(p))\n .filter((p): p is FormulaParameterInfo => p !== null);\n const description =\n typeof def.description === \"string\" && def.description\n ? def.description\n : typeof def.$title === \"string\" && def.$title\n ? def.$title\n : `Named formula \"${key}\" from document state.`;\n out.push({\n description,\n group: \"Formulas\",\n insert: () => ({\n operator: \"call\",\n target: { $ref: `#/state/${key}` },\n value: parameters.map((p) => (p.default ?? null) as JxExpressionOperand),\n }),\n kind: \"formula\",\n label: key,\n name: key,\n parameters,\n });\n }\n return out;\n}\n\n// ─── Merged registry ────────────────────────────────────────────────────────\n\n// ─── Packaged formulas (@jxsuite/formulas, copy-in) ─────────────────────────\n\n/**\n * Catalog entries for the packaged composite formulas. Picking one vendors its JSON state entry\n * into the document via `ensure` and inserts a call node — projects stay self-contained; entries\n * already present in state are skipped (the named-formula entry represents them instead).\n */\nexport function packagedFormulaEntries(\n state?: Record<string, JxStateDefinition> | null,\n): FormulaCatalogEntry[] {\n const out: FormulaCatalogEntry[] = [];\n for (const formula of packagedCatalog) {\n if (state?.[formula.name]) {\n continue;\n }\n const parameters = formula.parameters\n .map((p) => toParameterInfo(p))\n .filter((p): p is FormulaParameterInfo => p !== null);\n out.push({\n description: formula.description,\n ensure: {\n def: {\n $description: formula.description,\n $expression: formula.expression,\n parameters: formula.parameters,\n },\n name: formula.name,\n },\n group: \"Formulas library\",\n insert: () => ({\n operator: \"call\",\n target: { $ref: `#/state/${formula.name}` },\n value: parameters.map((p) => (p.default ?? null) as JxExpressionOperand),\n }),\n kind: \"formula\",\n label: formula.name,\n name: formula.name,\n parameters,\n });\n }\n return out;\n}\n\n/** The full catalog: named formulas first (most specific), then packaged, operators, globals. */\nexport function formulaCatalog(\n state?: Record<string, JxStateDefinition> | null,\n): FormulaCatalogEntry[] {\n return [\n ...namedFormulaEntries(state),\n ...packagedFormulaEntries(state),\n ...operatorEntries(),\n ...globalEntries(),\n ];\n}\n\n/** Resolve a `call` callee pointer to its catalog entry, when resolvable. */\nexport function calleeEntry(\n ref: string,\n state?: Record<string, JxStateDefinition> | null,\n): FormulaCatalogEntry | undefined {\n if (ref.startsWith(\"window#/\")) {\n const name = ref.slice(\"window#/\".length);\n return globalEntries().find((e) => e.name === name);\n }\n if (ref.startsWith(\"#/state/\")) {\n const key = ref.slice(\"#/state/\".length);\n return namedFormulaEntries(state).find((e) => e.name === key);\n }\n return undefined;\n}\n",
100
- "/// <reference lib=\"dom\" />\n/**\n * Formula palette — a command-palette overlay for browsing/searching the formula catalog (spec\n * §19.9). Clones the quick-search pattern: a plain overlay div (no nested sp-overlay), a search\n * field, grouped results, and keyboard navigation. Picking an entry calls `onPick` with it; the\n * caller decides what to insert.\n */\n\nimport { html, render as litRender, nothing } from \"lit-html\";\nimport { classMap } from \"lit-html/directives/class-map.js\";\nimport { live } from \"lit-html/directives/live.js\";\nimport { ref } from \"lit-html/directives/ref.js\";\nimport { getLayerSlot } from \"./layers\";\nimport { rectOf } from \"../utils/geometry\";\n\nimport type { FormulaCatalogEntry } from \"./formula-catalog\";\n\nexport interface FormulaPaletteOpts {\n entries: FormulaCatalogEntry[];\n onPick: (entry: FormulaCatalogEntry) => void;\n /** Optional anchor element the panel is positioned under; centered when absent. */\n anchor?: HTMLElement | null;\n}\n\nlet _open = false;\nlet _opts: FormulaPaletteOpts | null = null;\nlet _query = \"\";\nlet _selectedIndex = 0;\n\nfunction getContainer() {\n return getLayerSlot(\"popover\", \"formula-palette\");\n}\n\nexport function openFormulaPalette(opts: FormulaPaletteOpts) {\n _open = true;\n _opts = opts;\n _query = \"\";\n _selectedIndex = 0;\n renderOverlay();\n}\n\nexport function closeFormulaPalette() {\n _open = false;\n _opts = null;\n renderOverlay();\n}\n\n/** Entries matching the current query (label, name, group, or description substring). */\nfunction filteredEntries(): FormulaCatalogEntry[] {\n const entries = _opts?.entries ?? [];\n const needle = _query.trim().toLowerCase();\n if (!needle) {\n return entries;\n }\n return entries.filter(\n (e) =>\n e.label.toLowerCase().includes(needle) ||\n e.name.toLowerCase().includes(needle) ||\n e.group.toLowerCase().includes(needle) ||\n e.description.toLowerCase().includes(needle),\n );\n}\n\n/** Group entries for display, preserving first-seen group order. */\nfunction groupedEntries(entries: FormulaCatalogEntry[]): [string, FormulaCatalogEntry[]][] {\n const groups = new Map<string, FormulaCatalogEntry[]>();\n for (const entry of entries) {\n const bucket = groups.get(entry.group);\n if (bucket) {\n bucket.push(entry);\n } else {\n groups.set(entry.group, [entry]);\n }\n }\n return [...groups.entries()];\n}\n\nfunction pickEntry(entry: FormulaCatalogEntry) {\n const opts = _opts;\n closeFormulaPalette();\n opts?.onPick(entry);\n}\n\nfunction onInput(e: Event) {\n _query = (e.target as HTMLInputElement).value;\n _selectedIndex = 0;\n renderOverlay();\n}\n\nfunction onKeydown(e: KeyboardEvent) {\n const entries = filteredEntries();\n switch (e.key) {\n case \"ArrowDown\": {\n e.preventDefault();\n _selectedIndex = Math.min(_selectedIndex + 1, entries.length - 1);\n renderOverlay();\n break;\n }\n case \"ArrowUp\": {\n e.preventDefault();\n _selectedIndex = Math.max(_selectedIndex - 1, 0);\n renderOverlay();\n break;\n }\n case \"Enter\": {\n e.preventDefault();\n if (entries[_selectedIndex]) {\n pickEntry(entries[_selectedIndex]!);\n }\n break;\n }\n case \"Escape\": {\n e.preventDefault();\n closeFormulaPalette();\n break;\n }\n default: {\n break;\n }\n }\n}\n\n/** Inline position style for the panel when anchored to an element. */\nfunction panelStyle(): string {\n const anchor = _opts?.anchor;\n if (!anchor) {\n return \"\";\n }\n const rect = rectOf(anchor);\n if (!rect || (rect.top === 0 && rect.left === 0 && rect.width === 0)) {\n return \"\";\n }\n const left = Math.max(8, Math.min(rect.left, (globalThis.innerWidth || 1200) - 568));\n return `position:fixed;left:${left}px;top:${rect.bottom + 4}px;margin:0`;\n}\n\nfunction renderOverlay() {\n const container = getContainer();\n if (!_open) {\n litRender(nothing, container);\n return;\n }\n\n const entries = filteredEntries();\n const groups = groupedEntries(entries);\n const hasQuery = _query.trim().length > 0;\n\n const tpl = html`\n <div class=\"quick-search-overlay formula-palette-overlay\" @click=${closeFormulaPalette}>\n <div\n class=\"quick-search-panel formula-palette\"\n style=${panelStyle()}\n @click=${(e: Event) => e.stopPropagation()}\n >\n <input\n class=\"quick-search-input formula-palette-input\"\n type=\"text\"\n placeholder=\"Search formulas, operators, globals…\"\n .value=${live(_query)}\n @input=${onInput}\n @keydown=${onKeydown}\n ${ref((el) => {\n if (el) {\n requestAnimationFrame(() => (el as HTMLInputElement).focus());\n }\n })}\n />\n <div class=\"quick-search-results\">\n ${\n entries.length === 0\n ? html`<div class=\"quick-search-empty\">\n ${hasQuery ? \"No results\" : \"No entries available\"}\n </div>`\n : nothing\n }\n ${groups.map(\n ([group, groupEntries]) => html`\n <div class=\"quick-search-section-label\">${group}</div>\n ${groupEntries.map((entry) => {\n const index = entries.indexOf(entry);\n return html`\n <div\n class=${classMap({\n \"quick-search-item\": true,\n selected: index === _selectedIndex,\n })}\n @click=${() => pickEntry(entry)}\n @mouseenter=${() => {\n _selectedIndex = index;\n renderOverlay();\n }}\n >\n <span\n class=\"quick-search-name\"\n style=\"font-family:var(--spectrum-code-font-family, monospace)\"\n >${entry.label}</span\n >\n <span class=\"quick-search-path\" title=${entry.description}\n >${entry.description}</span\n >\n <span class=\"quick-search-badge\">${entry.kind}</span>\n </div>\n `;\n })}\n `,\n )}\n </div>\n </div>\n </div>\n `;\n\n litRender(tpl, container);\n}\n",
101
- "/// <reference lib=\"dom\" />\nimport { html, nothing } from \"lit-html\";\nimport { live } from \"lit-html/directives/live.js\";\nimport { PURE_METHOD_OPS } from \"@jxsuite/runtime/expression\";\nimport { isJsonObject, isRef } from \"@jxsuite/schema/guards\";\nimport { renderFieldRow } from \"./field-row\";\nimport { renderFormulaChips } from \"./formula-chips\";\nimport { applyCatalogPick, calleeEntry, formulaCatalog } from \"./formula-catalog\";\nimport { openFormulaPalette } from \"./formula-palette\";\n\nimport type {\n JxExpressionNode,\n JxExpressionOperand,\n JxStateDefinition,\n} from \"@jxsuite/schema/types\";\nimport type { TemplateResult } from \"lit-html\";\n\n// ─── Operator Categories ────────────────────────────────────────────────────\n\nconst UNARY_OPS = new Set([\"!\", \"-\"]);\nconst BINARY_OPS = new Set([\n \"+\",\n \"-\",\n \"*\",\n \"/\",\n \"%\",\n \"===\",\n \"!==\",\n \"<\",\n \"<=\",\n \">\",\n \">=\",\n \"&&\",\n \"||\",\n \"??\",\n]);\nconst ASSIGN_OPS = new Set([\"=\", \"+=\", \"-=\", \"*=\", \"/=\"]);\nconst NO_ARG_OPS = new Set([\"pop\", \"shift\"]);\nconst ONE_ARG_OPS = new Set([\"push\", \"unshift\"]);\n\nconst ZERO_ARG_METHOD_OPS = new Set([\n \"flat\",\n \"normalize\",\n \"toLocaleLowerCase\",\n \"toLocaleString\",\n \"toLocaleUpperCase\",\n \"toLowerCase\",\n \"toReversed\",\n \"toSorted\",\n \"toUpperCase\",\n \"trim\",\n \"trimEnd\",\n \"trimStart\",\n]);\n\nconst OPERATOR_GROUPS = [\n { label: \"Assignment\", ops: [\"=\", \"+=\", \"-=\", \"*=\", \"/=\"] },\n { label: \"Unary\", ops: [\"!\", \"-\"] },\n { label: \"Arithmetic\", ops: [\"+\", \"-\", \"*\", \"/\", \"%\"] },\n { label: \"Comparison\", ops: [\"===\", \"!==\", \"<\", \"<=\", \">\", \">=\"] },\n { label: \"Logical\", ops: [\"&&\", \"||\", \"??\"] },\n { label: \"Conditional\", ops: [\"?:\", \"switch\"] },\n {\n label: \"Array methods\",\n ops: [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"],\n },\n {\n label: \"Pure methods (String)\",\n ops: [\n \"toUpperCase\",\n \"toLowerCase\",\n \"trim\",\n \"trimStart\",\n \"trimEnd\",\n \"split\",\n \"startsWith\",\n \"endsWith\",\n \"padStart\",\n \"padEnd\",\n \"replaceAll\",\n \"repeat\",\n \"charAt\",\n \"normalize\",\n ],\n },\n {\n label: \"Pure methods (Array)\",\n ops: [\n \"includes\",\n \"indexOf\",\n \"lastIndexOf\",\n \"join\",\n \"slice\",\n \"concat\",\n \"at\",\n \"flat\",\n \"toSorted\",\n \"toReversed\",\n \"toSpliced\",\n \"with\",\n ],\n },\n { label: \"Pure methods (Number)\", ops: [\"toFixed\", \"toPrecision\", \"toLocaleString\"] },\n { label: \"Aggregate\", ops: [\"reduce\", \"map\", \"filter\"] },\n { label: \"Function\", ops: [\"call\"] },\n];\n\ninterface OperatorInfo {\n needsValue: boolean;\n needsInitial: boolean;\n targetMustBeRef: boolean;\n spliceArray: boolean;\n valueIsNode: boolean;\n switchCases: boolean;\n /** `call`: value is a positional-args array; target is the callee pointer. */\n callArgs: boolean;\n}\n\nconst INFO_DEFAULTS: OperatorInfo = {\n callArgs: false,\n needsInitial: false,\n needsValue: false,\n spliceArray: false,\n switchCases: false,\n targetMustBeRef: false,\n valueIsNode: false,\n};\n\n/**\n * @param {string} op\n * @returns {OperatorInfo}\n */\nfunction operatorInfo(op: string): OperatorInfo {\n if (UNARY_OPS.has(op)) {\n return { ...INFO_DEFAULTS };\n }\n if (op === \"?:\") {\n return { ...INFO_DEFAULTS, needsInitial: true, needsValue: true };\n }\n if (op === \"switch\") {\n return { ...INFO_DEFAULTS, switchCases: true };\n }\n if (op === \"call\") {\n return { ...INFO_DEFAULTS, callArgs: true, targetMustBeRef: true };\n }\n if (PURE_METHOD_OPS.has(op)) {\n // Receiver in target (any operand); zero-arg methods render no value row.\n return { ...INFO_DEFAULTS, needsValue: !ZERO_ARG_METHOD_OPS.has(op) };\n }\n if (BINARY_OPS.has(op)) {\n return { ...INFO_DEFAULTS, needsValue: true };\n }\n if (ASSIGN_OPS.has(op)) {\n return { ...INFO_DEFAULTS, needsValue: true, targetMustBeRef: true };\n }\n if (NO_ARG_OPS.has(op)) {\n return { ...INFO_DEFAULTS, targetMustBeRef: true };\n }\n if (ONE_ARG_OPS.has(op)) {\n return { ...INFO_DEFAULTS, needsValue: true, targetMustBeRef: true };\n }\n if (op === \"splice\") {\n return { ...INFO_DEFAULTS, needsValue: true, spliceArray: true, targetMustBeRef: true };\n }\n if (op === \"reduce\") {\n return {\n ...INFO_DEFAULTS,\n needsInitial: true,\n needsValue: true,\n targetMustBeRef: true,\n valueIsNode: true,\n };\n }\n if (op === \"map\" || op === \"filter\") {\n return { ...INFO_DEFAULTS, needsValue: true, targetMustBeRef: true, valueIsNode: true };\n }\n return { ...INFO_DEFAULTS };\n}\n\n// ─── Operand Mode Detection ─────────────────────────────────────────────────\n\n/**\n * @param {unknown} operand\n * @returns {\"ref\" | \"expression\" | \"literal\"}\n */\nfunction operandMode(operand: unknown) {\n if (operand && typeof operand === \"object\") {\n if (\"$ref\" in operand) {\n return \"ref\";\n }\n if (\"operator\" in operand) {\n return \"expression\";\n }\n }\n return \"literal\";\n}\n\n/** Positional-arg labels for a `call` node, from the callee's catalog entry when resolvable. */\nfunction calleeParamLabels(\n target: unknown,\n state?: Record<string, JxStateDefinition> | null,\n): string[] {\n const ref = isRef(target) ? target.$ref : \"\";\n const entry = ref ? calleeEntry(ref, state) : undefined;\n return entry?.kind === \"formula\" ? entry.parameters.map((p) => p.name) : [];\n}\n\n/**\n * @param {string} mode\n * @returns {JxExpressionOperand}\n */\nfunction defaultForMode(mode: string): JxExpressionOperand {\n if (mode === \"ref\") {\n return { $ref: \"\" };\n }\n if (mode === \"expression\") {\n return { operator: \"!\", target: null };\n }\n return null;\n}\n\n// ─── Literal Type Detection ─────────────────────────────────────────────────\n\n/**\n * @param {unknown} val\n * @returns {\"string\" | \"number\" | \"boolean\" | \"null\"}\n */\nfunction literalType(val: unknown) {\n if (val === null || val === undefined) {\n return \"null\";\n }\n if (typeof val === \"boolean\") {\n return \"boolean\";\n }\n if (typeof val === \"number\") {\n return \"number\";\n }\n return \"string\";\n}\n\n/**\n * @param {string} type\n * @returns {JxExpressionOperand}\n */\nfunction defaultForLiteralType(type: string): JxExpressionOperand {\n if (type === \"number\") {\n return 0;\n }\n if (type === \"boolean\") {\n return false;\n }\n if (type === \"null\") {\n return null;\n }\n return \"\";\n}\n\n// ─── Hint (one-line summary for signal rows) ────────────────────────────────\n\n/**\n * @param {unknown} node\n * @returns {string}\n */\nexport function expressionHint(node: unknown) {\n if (!isJsonObject(node) || typeof node.operator !== \"string\") {\n return \"$expression\";\n }\n const expr = node as unknown as JxExpressionNode;\n const op = expr.operator;\n const { target } = expr;\n const targetLabel = isRef(target)\n ? target.$ref.replace(\"#/state/\", \"\")\n : isJsonObject(target) && typeof target.operator === \"string\"\n ? `(${target.operator}…)`\n : String(target ?? \"?\");\n\n if (ASSIGN_OPS.has(op) || ONE_ARG_OPS.has(op)) {\n return `${op} ${targetLabel}`;\n }\n if (NO_ARG_OPS.has(op)) {\n return `${op}(${targetLabel})`;\n }\n if (op === \"splice\") {\n return `splice(${targetLabel})`;\n }\n if (op === \"call\") {\n return `${targetLabel.replace(\"window#/\", \"\").replaceAll(\"/\", \".\")}(…)`;\n }\n if (op === \"reduce\" || op === \"map\" || op === \"filter\" || PURE_METHOD_OPS.has(op)) {\n return `${op}(${targetLabel})`;\n }\n if (op === \"?:\") {\n return `${targetLabel} ? … : …`;\n }\n if (op === \"switch\") {\n return `switch(${targetLabel})`;\n }\n if (UNARY_OPS.has(op)) {\n return `${op}${targetLabel}`;\n }\n return `${targetLabel} ${op} …`;\n}\n\n// ─── Live Value Badge (spec §19.9) ──────────────────────────────────────────\n\n/** Preview data computed by services/preview-eval.ts — display strings keyed by node path. */\nexport interface EditorPreview {\n values: Map<string, string>;\n error: string | null;\n mutating: boolean;\n}\n\nfunction renderValueBadge(preview: EditorPreview | null | undefined, pathKey: string) {\n const text = preview?.values.get(pathKey);\n if (text === undefined) {\n return nothing;\n }\n return html`\n <span\n class=\"expr-live-badge\"\n title=${text}\n style=\"font-family:var(--spectrum-code-font-family, monospace);font-size:10px;line-height:16px;padding:0 5px;border-radius:4px;background:var(--spectrum-gray-200, #323232);color:var(--spectrum-seafoam-900, #35a690);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:160px;flex-shrink:1\"\n >${text}</span\n >\n `;\n}\n\n// ─── Ref Picker ─────────────────────────────────────────────────────────────\n\n/**\n * @param {string} refVal\n * @param {(newRef: string) => void} onRefChange\n * @param {{ stateDefs: string[]; allowEventRef: boolean }} opts\n * @returns {import(\"lit-html\").TemplateResult}\n */\nfunction renderRefPicker(\n refVal: string,\n onRefChange: (newRef: string) => void,\n opts: { stateDefs: string[]; allowEventRef: boolean },\n) {\n const stateRefs = (opts.stateDefs || []).map((k) => `#/state/${k}`);\n const eventRefs = opts.allowEventRef ? [\"event#/detail\", \"event#/target/value\"] : [];\n const allRefs = [...stateRefs, ...eventRefs];\n const isCustom = refVal && !allRefs.includes(refVal);\n\n return html`\n <sp-picker\n size=\"s\"\n style=\"flex:1\"\n placeholder=\"Select…\"\n .value=${live(isCustom ? \"__custom__\" : refVal || \"\")}\n @change=${(e: Event) => {\n const val = (e.target as HTMLInputElement).value;\n if (val === \"__custom__\") {\n return;\n }\n onRefChange(val);\n }}\n >\n ${\n stateRefs.length > 0\n ? stateRefs.map(\n (r) => html`<sp-menu-item value=${r}>${r.replace(\"#/state/\", \"\")}</sp-menu-item>`,\n )\n : html`<sp-menu-item disabled>No state defined</sp-menu-item>`\n }\n ${\n eventRefs.length > 0\n ? html`\n <sp-menu-divider></sp-menu-divider>\n ${eventRefs.map((r) => html`<sp-menu-item value=${r}>${r}</sp-menu-item>`)}\n `\n : nothing\n }\n </sp-picker>\n `;\n}\n\n// ─── Literal Editor ─────────────────────────────────────────────────────────\n\n/**\n * @param {unknown} operand\n * @param {(newVal: JxExpressionOperand) => void} onChange\n * @returns {import(\"lit-html\").TemplateResult}\n */\nfunction renderLiteralEditor(operand: unknown, onChange: (newVal: JxExpressionOperand) => void) {\n const type = literalType(operand);\n return html`\n <div style=\"display:flex;gap:4px;align-items:center;flex:1\">\n <sp-picker\n size=\"s\"\n style=\"min-width:56px\"\n .value=${live(type)}\n @change=${(e: Event) => {\n const newType = (e.target as HTMLInputElement).value;\n onChange(defaultForLiteralType(newType));\n }}\n >\n <sp-menu-item value=\"string\">str</sp-menu-item>\n <sp-menu-item value=\"number\">num</sp-menu-item>\n <sp-menu-item value=\"boolean\">bool</sp-menu-item>\n <sp-menu-item value=\"null\">null</sp-menu-item>\n </sp-picker>\n ${\n type === \"string\"\n ? html`<sp-textfield\n size=\"s\"\n style=\"flex:1\"\n .value=${live(String(operand ?? \"\"))}\n @input=${(e: Event) => onChange((e.target as HTMLInputElement).value)}\n ></sp-textfield>`\n : type === \"number\"\n ? html`<sp-number-field\n size=\"s\"\n style=\"flex:1\"\n .value=${live(Number(operand ?? 0))}\n @change=${(e: Event) => onChange(Number((e.target as HTMLInputElement).value))}\n ></sp-number-field>`\n : type === \"boolean\"\n ? html`<sp-checkbox\n size=\"s\"\n ?checked=${Boolean(operand)}\n @change=${(e: Event) => onChange((e.target as HTMLInputElement).checked)}\n >true</sp-checkbox\n >`\n : html`<span\n style=\"font-size:var(--spectrum-font-size-75, 12px);color:var(--spectrum-gray-600, #808080)\"\n >null</span\n >`\n }\n </div>\n `;\n}\n\n// ─── Operand Editor ─────────────────────────────────────────────────────────\n\n/**\n * Single-operand editor (mode picker + literal/ref/nested-expression widget). Exported for\n * statement-position operand slots (spec §20: `if` tests, `$switch` discriminants, `dispatchEvent`\n * detail).\n *\n * @param {unknown} operand\n * @param {(newOperand: unknown) => void} onChange\n * @param {{\n * stateDefs: string[];\n * allowEventRef: boolean;\n * depth: number;\n * mustBeRef?: boolean;\n * }} opts\n * @returns {import(\"lit-html\").TemplateResult}\n */\nexport function renderOperandEditor(\n operand: unknown,\n onChange: (newOperand: unknown) => void,\n opts: {\n stateDefs: string[];\n allowEventRef: boolean;\n depth: number;\n mustBeRef?: boolean;\n preview?: EditorPreview | null;\n path?: (string | number)[];\n stateEntries?: Record<string, JxStateDefinition> | null;\n },\n): TemplateResult {\n if (opts.mustBeRef) {\n const refVal = ((operand as Record<string, unknown> | null)?.$ref as string) ?? \"\";\n return html`\n <div style=\"flex:1\">${renderRefPicker(refVal, (r) => onChange({ $ref: r }), opts)}</div>\n `;\n }\n\n const mode = operandMode(operand);\n return html`\n <div style=\"display:flex;gap:4px;align-items:flex-start;flex:1\">\n <sp-picker\n size=\"s\"\n style=\"min-width:60px\"\n .value=${live(mode)}\n @change=${(e: Event) => {\n const newMode = (e.target as HTMLInputElement).value;\n onChange(defaultForMode(newMode));\n }}\n >\n <sp-menu-item value=\"literal\">lit</sp-menu-item>\n <sp-menu-item value=\"ref\">$ref</sp-menu-item>\n <sp-menu-item value=\"expression\">expr</sp-menu-item>\n </sp-picker>\n ${\n mode === \"literal\"\n ? renderLiteralEditor(operand, onChange)\n : mode === \"ref\"\n ? renderRefPicker(\n ((operand as Record<string, unknown> | null)?.$ref as string) ?? \"\",\n (r) => onChange({ $ref: r }),\n opts,\n )\n : renderExpressionEditor(operand, onChange, {\n ...opts,\n depth: opts.depth + 1,\n })\n }\n </div>\n `;\n}\n\n// ─── Positional Args Editor (splice / call) ─────────────────────────────────\n\n/**\n * @param {unknown[]} args\n * @param {(newArgs: unknown[]) => void} onChange\n * @param {{ stateDefs: string[]; allowEventRef: boolean; depth: number }} opts\n * @param {{ labels?: string[]; fallbackLabel?: string }} [naming]\n * @returns {import(\"lit-html\").TemplateResult}\n */\nfunction renderSpliceArgsEditor(\n args: unknown[],\n onChange: (newArgs: unknown[]) => void,\n opts: { stateDefs: string[]; allowEventRef: boolean; depth: number },\n naming: { labels?: string[]; fallbackLabel?: string } = {},\n): TemplateResult {\n const safeArgs = Array.isArray(args) ? args : [];\n const labels = naming.labels ?? [\"start\", \"del\", \"item\"];\n const fallbackLabel = naming.fallbackLabel ?? \"item\";\n\n return html`\n <div class=\"array-object-field\">\n ${safeArgs.map(\n (arg, idx) => html`\n <div\n class=\"array-object-row\"\n style=\"display:flex;gap:4px;align-items:center;margin-bottom:4px\"\n >\n <span style=\"font-size:10px;color:var(--spectrum-gray-600, #808080);min-width:30px\">\n ${labels[idx] ?? fallbackLabel}\n </span>\n ${renderOperandEditor(\n arg,\n (newArg) => {\n const updated = [...safeArgs];\n updated[idx] = newArg;\n onChange(updated);\n },\n { ...opts, mustBeRef: false },\n )}\n <sp-action-button\n quiet\n size=\"xs\"\n @click=${() => {\n const updated = safeArgs.filter((_, i) => i !== idx);\n onChange(updated.length > 0 ? updated : [null]);\n }}\n >\n <sp-icon-delete slot=\"icon\"></sp-icon-delete>\n </sp-action-button>\n </div>\n `,\n )}\n <sp-action-button quiet size=\"s\" @click=${() => onChange([...safeArgs, null])}>\n + Add arg\n </sp-action-button>\n </div>\n `;\n}\n\n// ─── Operator Picker Menu ───────────────────────────────────────────────────\n\nconst _operatorMenuCache = OPERATOR_GROUPS.map(\n (group, i) => html`\n ${i > 0 ? html`<sp-menu-divider></sp-menu-divider>` : nothing}\n <sp-menu-group>\n <span slot=\"header\">${group.label}</span>\n ${group.ops.map((op) => html`<sp-menu-item value=${op}>${op}</sp-menu-item>`)}\n </sp-menu-group>\n `,\n);\n\n// ─── Main Expression Editor ─────────────────────────────────────────────────\n\nexport interface ExpressionEditorOpts {\n stateDefs: string[];\n allowEventRef: boolean;\n depth?: number;\n preview?: EditorPreview | null;\n path?: (string | number)[];\n /** Full state defs map — resolves named-formula catalog entries (call labels, palette). */\n stateEntries?: Record<string, JxStateDefinition> | null;\n /** Chip-strip click hook (depth 0). No-op when absent. */\n onChipSelect?: (path: (string | number)[]) => void;\n /** Vendors a packaged formula's state entry into the document on catalog pick. */\n onInsertDef?: (name: string, def: JxStateDefinition) => void;\n}\n\n/**\n * @param {unknown} node\n * @param {(node: unknown) => void} onChange\n * @param {ExpressionEditorOpts} opts\n * @returns {import(\"lit-html\").TemplateResult}\n */\nexport function renderExpressionEditor(\n node: unknown,\n onChange: (node: unknown) => void,\n opts: ExpressionEditorOpts,\n): TemplateResult {\n const depth = opts.depth ?? 0;\n const safeNode: Record<string, unknown> =\n node && typeof node === \"object\"\n ? (node as Record<string, unknown>)\n : { operator: \"=\", target: null };\n const op = (safeNode.operator as string) || \"=\";\n const info = operatorInfo(op);\n const preview = opts.preview ?? null;\n const path = opts.path ?? [];\n const pathKey = path.join(\"/\");\n const sub = (...segs: (string | number)[]) => [...path, ...segs].join(\"/\");\n /** Wrap an operand widget with its live value badge. */\n const withBadge = (widget: unknown, key: string) =>\n html`<div style=\"display:flex;gap:4px;align-items:center;flex:1;min-width:0\">\n ${widget}${renderValueBadge(preview, key)}\n </div>`;\n\n const nestStyle =\n depth > 0\n ? \"border-left:2px solid var(--spectrum-gray-300, #3c3c3c);margin-left:8px;padding-left:8px;\"\n : \"\";\n\n // The root badge: pure roots show their result; mutating roots' effect shows on target/value.\n const rootBadge =\n depth === 0 && preview && !preview.mutating ? renderValueBadge(preview, pathKey) : nothing;\n\n return html`\n <div class=\"expression-editor\" style=${nestStyle}>\n ${\n depth === 0\n ? renderFormulaChips(safeNode, opts.onChipSelect ?? (() => {}), { path, preview })\n : nothing\n }\n ${\n depth === 0 && preview?.error\n ? html`<div\n style=\"font-size:10px;color:var(--spectrum-negative-content-color-default, #f76a63);padding:2px 0\"\n >\n ${preview.error}\n </div>`\n : nothing\n }\n ${renderFieldRow({\n hasValue: false,\n label: \"Operator\",\n prop: \"operator\",\n widget: html`\n <div style=\"display:flex;gap:4px;align-items:center;flex:1;min-width:0\">\n <sp-picker\n size=\"s\"\n .value=${live(op)}\n @change=${(e: Event) => {\n const newOp = (e.target as HTMLInputElement).value;\n const newInfo = operatorInfo(newOp);\n const updated: Record<string, unknown> = {\n operator: newOp,\n target: safeNode.target,\n };\n if (newInfo.targetMustBeRef && operandMode(safeNode.target) !== \"ref\") {\n updated.target = { $ref: \"\" };\n }\n if (newInfo.needsValue) {\n if (newInfo.valueIsNode) {\n const val = safeNode.value as Record<string, unknown> | null;\n updated.value = val?.operator\n ? safeNode.value\n : { operator: \"!\", target: null };\n } else if (newInfo.spliceArray) {\n updated.value = Array.isArray(safeNode.value) ? safeNode.value : [null];\n } else {\n updated.value = safeNode.value ?? null;\n }\n }\n if (newInfo.needsInitial) {\n updated.initial = safeNode.initial ?? (newOp === \"?:\" ? null : 0);\n }\n if (newInfo.switchCases) {\n updated.cases = isJsonObject(safeNode.cases) ? safeNode.cases : {};\n if (\"default\" in safeNode) {\n updated.default = safeNode.default;\n }\n }\n if (newInfo.callArgs) {\n updated.value = Array.isArray(safeNode.value) ? safeNode.value : [];\n }\n onChange(updated);\n }}\n >\n ${_operatorMenuCache}\n </sp-picker>\n <sp-action-button\n quiet\n size=\"s\"\n class=\"expr-browse-catalog\"\n title=\"Browse catalog\"\n @click=${(e: Event) =>\n openFormulaPalette({\n anchor: e.currentTarget as HTMLElement,\n entries: formulaCatalog(opts.stateEntries),\n onPick: (entry) =>\n applyCatalogPick(entry, onChange, {\n onInsertDef: opts.onInsertDef,\n stateEntries: opts.stateEntries,\n }),\n })}\n >\n <sp-icon-brackets slot=\"icon\"></sp-icon-brackets>\n </sp-action-button>\n ${rootBadge}\n </div>\n `,\n })}\n ${renderFieldRow({\n hasValue: false,\n label: op === \"?:\" ? \"If\" : op === \"switch\" ? \"On\" : op === \"call\" ? \"Callee\" : \"Target\",\n prop: \"target\",\n widget: withBadge(\n renderOperandEditor(safeNode.target, (t) => onChange({ ...safeNode, target: t }), {\n ...opts,\n depth,\n mustBeRef: info.targetMustBeRef,\n path: [...path, \"target\"],\n }),\n sub(\"target\"),\n ),\n })}\n ${\n info.needsValue && !info.valueIsNode && !info.spliceArray\n ? renderFieldRow({\n hasValue: false,\n label: op === \"?:\" ? \"Then\" : \"Value\",\n prop: \"value\",\n widget: withBadge(\n renderOperandEditor(safeNode.value, (v) => onChange({ ...safeNode, value: v }), {\n ...opts,\n depth,\n mustBeRef: false,\n path: [...path, \"value\"],\n }),\n sub(\"value\"),\n ),\n })\n : nothing\n }\n ${\n info.needsValue && info.valueIsNode\n ? html`\n <div style=\"margin-top:4px\">\n ${renderFieldRow({\n hasValue: false,\n label: \"Per-item\",\n prop: \"value\",\n widget: nothing,\n })}\n ${renderExpressionEditor(\n (safeNode.value as Record<string, unknown> | null)?.operator\n ? safeNode.value\n : { operator: \"!\", target: null },\n (v) => onChange({ ...safeNode, value: v }),\n { ...opts, depth: depth + 1, path: [...path, \"value\"] },\n )}\n </div>\n `\n : nothing\n }\n ${\n info.spliceArray\n ? html`\n <div style=\"margin-top:4px\">\n ${renderFieldRow({\n hasValue: false,\n label: \"Args\",\n prop: \"value\",\n widget: nothing,\n })}\n ${renderSpliceArgsEditor(\n safeNode.value as unknown[],\n (v) => onChange({ ...safeNode, value: v }),\n {\n ...opts,\n depth,\n },\n )}\n </div>\n `\n : nothing\n }\n ${\n info.callArgs\n ? html`\n <div style=\"margin-top:4px\">\n ${renderFieldRow({\n hasValue: false,\n label: \"Args\",\n prop: \"value\",\n widget: nothing,\n })}\n ${renderSpliceArgsEditor(\n safeNode.value as unknown[],\n (v) => onChange({ ...safeNode, value: v }),\n { ...opts, depth },\n {\n fallbackLabel: \"arg\",\n labels: calleeParamLabels(safeNode.target, opts.stateEntries),\n },\n )}\n </div>\n `\n : nothing\n }\n ${\n info.switchCases\n ? renderSwitchCasesEditor(safeNode, onChange, { ...opts, depth, path }, withBadge)\n : nothing\n }\n ${\n info.needsInitial\n ? renderFieldRow({\n hasValue: false,\n label: op === \"?:\" ? \"Else\" : \"Initial\",\n prop: \"initial\",\n widget: withBadge(\n renderOperandEditor(\n safeNode.initial,\n (v) => onChange({ ...safeNode, initial: v }),\n {\n ...opts,\n depth,\n mustBeRef: false,\n path: [...path, \"initial\"],\n },\n ),\n sub(\"initial\"),\n ),\n })\n : nothing\n }\n </div>\n `;\n}\n\n// ─── Switch Cases Editor ────────────────────────────────────────────────────\n\n/**\n * Case rows for the `switch` operator: matched value → result operand, plus the default operand.\n * Mirrors the element-level `$switch`/`cases` model (spec §19.4b).\n */\nfunction renderSwitchCasesEditor(\n safeNode: Record<string, unknown>,\n onChange: (node: unknown) => void,\n opts: {\n stateDefs: string[];\n allowEventRef: boolean;\n depth: number;\n preview?: EditorPreview | null;\n path: (string | number)[];\n },\n withBadge: (widget: unknown, key: string) => TemplateResult,\n): TemplateResult {\n const cases = isJsonObject(safeNode.cases)\n ? (safeNode.cases as Record<string, unknown>)\n : ({} as Record<string, unknown>);\n const entries = Object.entries(cases);\n const setCases = (next: Record<string, unknown>) => onChange({ ...safeNode, cases: next });\n\n return html`\n <div class=\"switch-cases\" style=\"margin-top:4px\">\n ${entries.map(\n ([key, operand]) => html`\n <div style=\"display:flex;gap:4px;align-items:flex-start;margin-bottom:4px\">\n <sp-textfield\n size=\"s\"\n style=\"width:80px;flex-shrink:0\"\n placeholder=\"value\"\n .value=${live(key)}\n @change=${(e: Event) => {\n const newKey = (e.target as HTMLInputElement).value;\n if (newKey === key) {\n return;\n }\n const next: Record<string, unknown> = {};\n for (const [k, v] of entries) {\n next[k === key ? newKey : k] = v;\n }\n setCases(next);\n }}\n ></sp-textfield>\n ${withBadge(\n renderOperandEditor(operand, (v) => setCases({ ...cases, [key]: v }), {\n ...opts,\n mustBeRef: false,\n path: [...opts.path, \"cases\", key],\n }),\n [...opts.path, \"cases\", key].join(\"/\"),\n )}\n <sp-action-button\n quiet\n size=\"xs\"\n @click=${() => {\n const next = { ...cases };\n delete next[key];\n setCases(next);\n }}\n >\n <sp-icon-delete slot=\"icon\"></sp-icon-delete>\n </sp-action-button>\n </div>\n `,\n )}\n <div style=\"display:flex;gap:4px;align-items:flex-start;margin-bottom:4px\">\n <span\n style=\"width:80px;flex-shrink:0;font-size:10px;line-height:24px;color:var(--spectrum-gray-600, #808080)\"\n >default</span\n >\n ${withBadge(\n renderOperandEditor(safeNode.default, (v) => onChange({ ...safeNode, default: v }), {\n ...opts,\n mustBeRef: false,\n path: [...opts.path, \"default\"],\n }),\n [...opts.path, \"default\"].join(\"/\"),\n )}\n </div>\n <sp-action-button\n quiet\n size=\"s\"\n @click=${() => {\n let n = entries.length + 1;\n let key = `case ${n}`;\n while (Object.hasOwn(cases, key)) {\n n += 1;\n key = `case ${n}`;\n }\n setCases({ ...cases, [key]: null });\n }}\n >\n + Add case\n </sp-action-button>\n </div>\n `;\n}\n",
102
- "/// <reference lib=\"dom\" />\n// oxlint-disable unicorn/no-thenable -- `then` is the JSON Schema conditional keyword (spec §20), not a promise\n/**\n * Statement editor (spec §20) — vertical statement-card list for structured function bodies.\n *\n * Renders a Function entry's `body: JxStatement[]` as cards on a connector line: bare expression\n * nodes (mutation or `call`), `if`/`then`/`else` branches, `$switch`/`cases` multiway branches, and\n * WHATWG `dispatchEvent` statements. Branch bodies render as indented lanes (the expression\n * editor's `border-left` nesting idiom) with their own add-statement pickers. Cards drag-reorder\n * within their lane via the pragmatic-drag-and-drop tree-item pattern (see panels/dnd.ts). All\n * edits flow through `onChange(next)` immutably — no statement object is mutated in place.\n */\n\nimport { html, nothing } from \"lit-html\";\nimport { live } from \"lit-html/directives/live.js\";\nimport { ref } from \"lit-html/directives/ref.js\";\nimport { combine } from \"@atlaskit/pragmatic-drag-and-drop/combine\";\nimport { disableNativeDragPreview } from \"@atlaskit/pragmatic-drag-and-drop/element/disable-native-drag-preview\";\nimport {\n attachInstruction,\n extractInstruction,\n} from \"@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item\";\nimport { isJsonObject } from \"@jxsuite/schema/guards\";\nimport { renderExpressionEditor, renderOperandEditor } from \"../ui/expression-editor\";\nimport { renderFieldRow } from \"../ui/field-row\";\n\nimport type {\n CemEvent,\n JxDispatchStatement,\n JxIfStatement,\n JxStatement,\n JxStateDefinition,\n JxSwitchStatement,\n} from \"@jxsuite/schema/types\";\nimport type { TemplateResult } from \"lit-html\";\n\n// ─── Options ─────────────────────────────────────────────────────────────────\n\nexport interface StatementEditorOpts {\n stateDefs: string[];\n stateEntries?: Record<string, JxStateDefinition> | null;\n allowEventRef: boolean;\n /** The entry's declared CEM events — offered as dispatchEvent name completions. */\n emits?: CemEvent[];\n}\n\n/**\n * A lane address inside the statement tree: alternating [index, branchKey] steps, where a `cases`\n * step consumes three entries ([index, \"cases\", caseKey]). The empty path is the top-level\n * statement list.\n */\ntype LanePath = (string | number)[];\n\n// ─── Statement Kind Detection ────────────────────────────────────────────────\n\n/** Discriminate a statement's kind, mirroring the runtime's detection order (spec §20.2). */\nexport function statementKind(stmt: unknown): \"expression\" | \"if\" | \"switch\" | \"dispatch\" {\n if (isJsonObject(stmt)) {\n if (\"operator\" in stmt) {\n return \"expression\";\n }\n if (\"if\" in stmt) {\n return \"if\";\n }\n if (\"$switch\" in stmt) {\n return \"switch\";\n }\n if (\"dispatchEvent\" in stmt) {\n return \"dispatch\";\n }\n }\n return \"expression\";\n}\n\nconst ASSIGN_OPS = new Set([\"=\", \"+=\", \"-=\", \"*=\", \"/=\"]);\n\n/** Card header label — ECMA/WHATWG naming (spec §20.2). */\nfunction kindLabel(stmt: unknown): string {\n switch (statementKind(stmt)) {\n case \"if\": {\n return \"If / Else\";\n }\n case \"switch\": {\n return \"Switch\";\n }\n case \"dispatch\": {\n return \"Dispatch event\";\n }\n default: {\n const op = isJsonObject(stmt) ? String(stmt.operator ?? \"\") : \"\";\n if (ASSIGN_OPS.has(op)) {\n return \"Set state\";\n }\n if (op === \"call\") {\n return \"Call\";\n }\n return \"Expression\";\n }\n }\n}\n\n// ─── Add-statement Seeds (spec §20 shapes) ───────────────────────────────────\n\nconst STATEMENT_SEEDS: Record<string, () => JxStatement> = {\n call: () => ({ operator: \"call\", target: { $ref: \"\" }, value: [] }),\n dispatch: () => ({ dispatchEvent: \"\" }),\n if: () => ({\n if: { operator: \"===\", target: { $ref: \"\" }, value: null },\n then: [],\n }),\n set: () => ({ operator: \"=\", target: { $ref: \"\" }, value: null }),\n switch: () => ({ $switch: { $ref: \"\" }, cases: {} }),\n};\n\n// ─── Lane Addressing (immutable read/write through nested statement lists) ───\n\n/** Resolve the statement list a lane path points at; null when the path is stale. */\nexport function laneListAt(list: JxStatement[], path: LanePath): JxStatement[] | null {\n if (path.length === 0) {\n return list;\n }\n const [idx, key] = path;\n const stmt = typeof idx === \"number\" ? (list[idx] as Record<string, unknown> | undefined) : null;\n if (!isJsonObject(stmt) || typeof key !== \"string\") {\n return null;\n }\n if (key === \"cases\") {\n const caseKey = path.at(2);\n const { cases } = stmt;\n if (typeof caseKey !== \"string\" || !isJsonObject(cases) || !Array.isArray(cases[caseKey])) {\n return null;\n }\n return laneListAt(cases[caseKey] as unknown as JxStatement[], path.slice(3));\n }\n if (!Array.isArray(stmt[key])) {\n return null;\n }\n return laneListAt(stmt[key] as unknown as JxStatement[], path.slice(2));\n}\n\n/** Rebuild the statement tree with the lane at `path` replaced by `next` — fully immutable. */\nexport function withLaneList(\n list: JxStatement[],\n path: LanePath,\n next: JxStatement[],\n): JxStatement[] {\n if (path.length === 0) {\n return next;\n }\n const idx = path[0] as number;\n const key = path[1] as string;\n const stmt = list[idx] as unknown as Record<string, unknown>;\n let updated: Record<string, unknown>;\n if (key === \"cases\") {\n const caseKey = path[2] as string;\n const cases = { ...(stmt.cases as Record<string, JxStatement[]>) };\n cases[caseKey] = withLaneList(cases[caseKey] ?? [], path.slice(3), next);\n updated = { ...stmt, cases };\n } else {\n updated = {\n ...stmt,\n [key]: withLaneList((stmt[key] as JxStatement[] | undefined) ?? [], path.slice(2), next),\n };\n }\n return list.map((s, i) => (i === idx ? (updated as unknown as JxStatement) : s));\n}\n\n// ─── Drag-reorder (pragmatic-drag-and-drop, per-lane) ────────────────────────\n\n/** Active DnD registration cleanup per editor root — replaced on every re-render. */\nconst dndRegistrations = new WeakMap<HTMLElement, () => void>();\n\n/**\n * Register drag-reorder on all statement rows under `root` (post-render, like registerLayersDnD).\n * Rows may only reorder within their own lane — the source's lane id must match the target's.\n */\nfunction registerStatementsDnD(\n root: HTMLElement,\n statements: JxStatement[],\n onChange: (next: JxStatement[]) => void,\n) {\n requestAnimationFrame(async () => {\n // Deferred adapter import — keeps this panel's import graph adapter-free at module load.\n const { draggable, dropTargetForElements } =\n await import(\"@atlaskit/pragmatic-drag-and-drop/element/adapter\");\n dndRegistrations.get(root)?.();\n const cleanups: (() => void)[] = [];\n\n for (const row of root.querySelectorAll(\"[data-stmt-row]\") as NodeListOf<HTMLElement>) {\n const laneId = row.dataset.stmtLane ?? \"[]\";\n const index = Math.trunc(Number(row.dataset.stmtIndex)) || 0;\n const handle = row.querySelector(\".statement-drag-handle\");\n\n cleanups.push(\n combine(\n draggable({\n element: row,\n ...(handle ? { dragHandle: handle } : {}),\n getInitialData() {\n return { index, lane: laneId, type: \"statement\" };\n },\n onGenerateDragPreview({\n nativeSetDragImage,\n }: {\n nativeSetDragImage: ((image: Element, x: number, y: number) => void) | null;\n }) {\n disableNativeDragPreview({ nativeSetDragImage });\n },\n onDragStart() {\n row.classList.add(\"dragging\");\n },\n onDrop() {\n row.classList.remove(\"dragging\");\n },\n }),\n dropTargetForElements({\n element: row,\n canDrop({ source }: { source: { data: Record<string, unknown> } }) {\n return source.data.type === \"statement\" && source.data.lane === laneId;\n },\n getData({\n input,\n element,\n }: {\n input: Parameters<typeof attachInstruction>[1][\"input\"];\n element: Element;\n }) {\n return attachInstruction(\n { index },\n {\n block: [\"make-child\"],\n currentLevel: 0,\n element,\n indentPerLevel: 16,\n input,\n mode: \"standard\",\n },\n ) as Record<string | symbol, unknown>;\n },\n onDrag({ self }: { self: { data: Record<string, unknown> } }) {\n const instruction = extractInstruction(self.data);\n row.classList.toggle(\"drop-above\", instruction?.type === \"reorder-above\");\n row.classList.toggle(\"drop-below\", instruction?.type === \"reorder-below\");\n },\n onDragLeave() {\n row.classList.remove(\"drop-above\", \"drop-below\");\n },\n onDrop({\n self,\n source,\n }: {\n self: { data: Record<string, unknown> };\n source: { data: Record<string, unknown> };\n }) {\n row.classList.remove(\"drop-above\", \"drop-below\");\n const instruction = extractInstruction(self.data);\n if (\n !instruction ||\n (instruction.type !== \"reorder-above\" && instruction.type !== \"reorder-below\")\n ) {\n return;\n }\n const from = source.data.index as number;\n const lanePath = JSON.parse(laneId) as LanePath;\n const lane = laneListAt(statements, lanePath);\n if (!lane || from === index) {\n return;\n }\n let insertAt = instruction.type === \"reorder-above\" ? index : index + 1;\n if (from < insertAt) {\n insertAt -= 1;\n }\n if (insertAt === from) {\n return;\n }\n const nextLane = lane.filter((_, i) => i !== from);\n nextLane.splice(insertAt, 0, lane[from]!);\n onChange(withLaneList(statements, lanePath, nextLane));\n },\n }),\n ),\n );\n }\n\n dndRegistrations.set(root, () => {\n for (const cleanup of cleanups) {\n cleanup();\n }\n });\n });\n}\n\n// ─── Small shared widgets ────────────────────────────────────────────────────\n\nconst laneLabelStyle =\n \"font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:0.04em;color:var(--spectrum-gray-600, #808080)\";\n\nfunction operandOpts(opts: StatementEditorOpts) {\n return {\n allowEventRef: opts.allowEventRef,\n depth: 0,\n stateDefs: opts.stateDefs,\n stateEntries: opts.stateEntries ?? null,\n };\n}\n\n/** The \"+ Add statement\" picker appended to every lane. */\nfunction renderAddStatement(\n list: JxStatement[],\n commit: (next: JxStatement[]) => void,\n): TemplateResult {\n return html`\n <sp-picker\n size=\"s\"\n quiet\n class=\"statement-add\"\n label=\"+ Add statement\"\n placeholder=\"+ Add statement\"\n .value=${live(\"\")}\n @change=${(e: Event) => {\n const kind = (e.target as HTMLInputElement).value;\n const seed = STATEMENT_SEEDS[kind];\n if (!seed) {\n return;\n }\n (e.target as HTMLInputElement).value = \"\";\n commit([...list, seed()]);\n }}\n >\n <sp-menu-item value=\"set\">Set state</sp-menu-item>\n <sp-menu-item value=\"call\">Call function</sp-menu-item>\n <sp-menu-item value=\"if\">If / Else</sp-menu-item>\n <sp-menu-item value=\"switch\">Switch</sp-menu-item>\n <sp-menu-item value=\"dispatch\">Dispatch event</sp-menu-item>\n </sp-picker>\n `;\n}\n\n/** An indented branch lane: header label (+ optional remove) above a nested statement list. */\nfunction renderLane(\n label: string | TemplateResult,\n list: JxStatement[],\n commit: (next: JxStatement[]) => void,\n opts: StatementEditorOpts,\n lanePath: LanePath,\n extras: { onRemove?: () => void } = {},\n): TemplateResult {\n return html`\n <div class=\"statement-lane\" style=\"margin:4px 0 4px 6px\">\n <div class=\"statement-lane-header\" style=\"display:flex;align-items:center;gap:4px\">\n <span style=${laneLabelStyle}>${label}</span>\n ${\n extras.onRemove\n ? html`\n <sp-action-button\n quiet\n size=\"xs\"\n class=\"statement-lane-remove\"\n title=\"Remove branch\"\n @click=${extras.onRemove}\n >\n <sp-icon-delete slot=\"icon\"></sp-icon-delete>\n </sp-action-button>\n `\n : nothing\n }\n </div>\n ${renderStatementList(list, commit, opts, lanePath)}\n </div>\n `;\n}\n\n// ─── Kind-specific card bodies ───────────────────────────────────────────────\n\nfunction renderIfBody(\n stmt: JxIfStatement,\n commit: (next: JxStatement) => void,\n opts: StatementEditorOpts,\n lanePath: LanePath,\n index: number,\n): TemplateResult {\n return html`\n ${renderFieldRow({\n hasValue: false,\n label: \"If\",\n prop: \"if\",\n widget: renderOperandEditor(\n stmt.if,\n (v) => commit({ ...stmt, if: v } as JxStatement),\n operandOpts(opts),\n ),\n })}\n ${renderLane(\"Then\", stmt.then ?? [], (next) => commit({ ...stmt, then: next }), opts, [\n ...lanePath,\n index,\n \"then\",\n ])}\n ${\n Array.isArray(stmt.else)\n ? renderLane(\n \"Else\",\n stmt.else,\n (next) => commit({ ...stmt, else: next }),\n opts,\n [...lanePath, index, \"else\"],\n {\n onRemove: () => {\n const { else: _else, ...rest } = stmt;\n commit(rest as JxStatement);\n },\n },\n )\n : html`\n <sp-action-button\n quiet\n size=\"s\"\n class=\"statement-add-else\"\n @click=${() => commit({ ...stmt, else: [] })}\n >\n + Add else\n </sp-action-button>\n `\n }\n `;\n}\n\nfunction renderSwitchBody(\n stmt: JxSwitchStatement,\n commit: (next: JxStatement) => void,\n opts: StatementEditorOpts,\n lanePath: LanePath,\n index: number,\n): TemplateResult {\n const cases = isJsonObject(stmt.cases) ? (stmt.cases as Record<string, JxStatement[]>) : {};\n const entries = Object.entries(cases);\n const setCases = (next: Record<string, JxStatement[]>) =>\n commit({ ...stmt, cases: next } as JxStatement);\n\n return html`\n ${renderFieldRow({\n hasValue: false,\n label: \"Switch on\",\n prop: \"$switch\",\n widget: renderOperandEditor(\n stmt.$switch,\n (v) => commit({ ...stmt, $switch: v } as JxStatement),\n operandOpts(opts),\n ),\n })}\n ${entries.map(([key, list]) =>\n renderLane(\n html`\n <sp-textfield\n size=\"s\"\n class=\"statement-case-key\"\n style=\"width:96px\"\n placeholder=\"value\"\n .value=${live(key)}\n @change=${(e: Event) => {\n const newKey = (e.target as HTMLInputElement).value;\n if (newKey === key) {\n return;\n }\n const next: Record<string, JxStatement[]> = {};\n for (const [k, v] of entries) {\n next[k === key ? newKey : k] = v;\n }\n setCases(next);\n }}\n ></sp-textfield>\n `,\n Array.isArray(list) ? list : [],\n (next) => setCases({ ...cases, [key]: next }),\n opts,\n [...lanePath, index, \"cases\", key],\n {\n onRemove: () => {\n const next = { ...cases };\n delete next[key];\n setCases(next);\n },\n },\n ),\n )}\n ${renderLane(\n \"Default\",\n Array.isArray(stmt.default) ? stmt.default : [],\n (next) => {\n if (next.length === 0) {\n const { default: _default, ...rest } = stmt;\n commit(rest as JxStatement);\n return;\n }\n commit({ ...stmt, default: next } as JxStatement);\n },\n opts,\n [...lanePath, index, \"default\"],\n )}\n <sp-action-button\n quiet\n size=\"s\"\n class=\"statement-add-case\"\n @click=${() => {\n let n = entries.length + 1;\n let key = `case ${n}`;\n while (Object.hasOwn(cases, key)) {\n n += 1;\n key = `case ${n}`;\n }\n setCases({ ...cases, [key]: [] });\n }}\n >\n + Add case\n </sp-action-button>\n `;\n}\n\nfunction renderDispatchBody(\n stmt: JxDispatchStatement,\n commit: (next: JxStatement) => void,\n opts: StatementEditorOpts,\n): TemplateResult {\n const emitNames = (opts.emits ?? [])\n .map((e) => e.name)\n .filter((n): n is string => typeof n === \"string\" && n.length > 0);\n const commitName = (e: Event) =>\n commit({ ...stmt, dispatchEvent: (e.target as HTMLInputElement).value } as JxStatement);\n const toggle = (key: \"bubbles\" | \"composed\") => (e: Event) => {\n const { checked } = e.target as HTMLInputElement;\n const { [key]: _removed, ...rest } = stmt;\n commit((checked ? { ...rest, [key]: true } : rest) as JxStatement);\n };\n\n return html`\n ${renderFieldRow({\n hasValue: false,\n label: \"Event\",\n prop: \"dispatchEvent\",\n widget:\n emitNames.length > 0\n ? html`\n <sp-combobox\n size=\"s\"\n allows-custom-value\n class=\"statement-dispatch-name\"\n style=\"flex:1\"\n .value=${live(stmt.dispatchEvent ?? \"\")}\n @change=${commitName}\n >\n ${emitNames.map((n) => html`<sp-menu-item value=${n}>${n}</sp-menu-item>`)}\n </sp-combobox>\n `\n : html`\n <sp-textfield\n size=\"s\"\n class=\"statement-dispatch-name\"\n style=\"flex:1\"\n placeholder=\"event-name\"\n .value=${live(stmt.dispatchEvent ?? \"\")}\n @input=${commitName}\n ></sp-textfield>\n `,\n })}\n ${renderFieldRow({\n hasValue: false,\n label: \"Detail\",\n prop: \"detail\",\n widget: renderOperandEditor(\n stmt.detail ?? null,\n (v) => commit({ ...stmt, detail: v } as JxStatement),\n operandOpts(opts),\n ),\n })}\n ${renderFieldRow({\n hasValue: false,\n label: \"Options\",\n prop: \"eventInit\",\n widget: html`\n <div style=\"display:flex;gap:12px;align-items:center\">\n <sp-checkbox\n size=\"s\"\n class=\"statement-dispatch-bubbles\"\n ?checked=${Boolean(stmt.bubbles)}\n @change=${toggle(\"bubbles\")}\n >Bubbles</sp-checkbox\n >\n <sp-checkbox\n size=\"s\"\n class=\"statement-dispatch-composed\"\n ?checked=${Boolean(stmt.composed)}\n @change=${toggle(\"composed\")}\n >Composed</sp-checkbox\n >\n </div>\n `,\n })}\n `;\n}\n\n// ─── Statement Card + List ───────────────────────────────────────────────────\n\nfunction renderStatementCard(\n stmt: JxStatement,\n index: number,\n list: JxStatement[],\n commitList: (next: JxStatement[]) => void,\n opts: StatementEditorOpts,\n lanePath: LanePath,\n): TemplateResult {\n const kind = statementKind(stmt);\n const commit = (next: JxStatement) => commitList(list.map((s, i) => (i === index ? next : s)));\n\n let body: TemplateResult;\n switch (kind) {\n case \"if\": {\n body = renderIfBody(stmt as JxIfStatement, commit, opts, lanePath, index);\n break;\n }\n case \"switch\": {\n body = renderSwitchBody(stmt as JxSwitchStatement, commit, opts, lanePath, index);\n break;\n }\n case \"dispatch\": {\n body = renderDispatchBody(stmt as JxDispatchStatement, commit, opts);\n break;\n }\n default: {\n body = renderExpressionEditor(stmt, (n) => commit(n as JxStatement), {\n allowEventRef: opts.allowEventRef,\n stateDefs: opts.stateDefs,\n stateEntries: opts.stateEntries ?? null,\n });\n break;\n }\n }\n\n return html`\n <div\n class=\"statement-card\"\n data-stmt-row\n data-stmt-kind=${kind}\n data-stmt-lane=${JSON.stringify(lanePath)}\n data-stmt-index=${index}\n style=\"border:1px solid var(--spectrum-gray-300, #3c3c3c);border-radius:4px;padding:4px 6px;margin:0 0 6px;background:var(--spectrum-gray-75, #1e1e1e)\"\n >\n <div class=\"statement-card-header\" style=\"display:flex;align-items:center;gap:6px\">\n <span\n class=\"statement-drag-handle\"\n title=\"Drag to reorder\"\n style=\"cursor:grab;color:var(--spectrum-gray-500, #6e6e6e);font-size:11px;line-height:1;user-select:none\"\n >⠿</span\n >\n <span class=\"statement-kind-label\" style=${laneLabelStyle}>${kindLabel(stmt)}</span>\n <span style=\"flex:1\"></span>\n <sp-action-button\n quiet\n size=\"xs\"\n class=\"statement-delete\"\n title=\"Delete statement\"\n @click=${() => commitList(list.filter((_, i) => i !== index))}\n >\n <sp-icon-delete slot=\"icon\"></sp-icon-delete>\n </sp-action-button>\n </div>\n <div class=\"statement-card-body\">${body}</div>\n </div>\n `;\n}\n\n/** One lane's vertical card list on its connector line, ending in the add-statement picker. */\nfunction renderStatementList(\n list: JxStatement[],\n commitList: (next: JxStatement[]) => void,\n opts: StatementEditorOpts,\n lanePath: LanePath,\n): TemplateResult {\n return html`\n <div\n class=\"statement-list\"\n style=\"margin-left:4px;border-left:2px solid var(--spectrum-gray-300, #3c3c3c);padding:2px 0 0 8px\"\n >\n ${list.map((stmt, index) =>\n renderStatementCard(stmt, index, list, commitList, opts, lanePath),\n )}\n ${renderAddStatement(list, commitList)}\n </div>\n `;\n}\n\n// ─── Entry Point ─────────────────────────────────────────────────────────────\n\n/**\n * Render a structured function body (spec §20) as an editable statement-card list. `onChange`\n * receives a fresh statement array on every edit; the input array is never mutated.\n */\nexport function renderStatementEditor(\n statements: JxStatement[],\n onChange: (next: JxStatement[]) => void,\n opts: StatementEditorOpts,\n): TemplateResult {\n const safe = Array.isArray(statements) ? statements : [];\n return html`\n <div\n class=\"statement-editor\"\n ${ref((el) => {\n if (el) {\n registerStatementsDnD(el as HTMLElement, safe, onChange);\n }\n })}\n >\n ${renderStatementList(safe, onChange, opts, [])}\n </div>\n `;\n}\n",
103
- "/**\n * Display formatting for live expression-preview values, shared by the parent-side snapshot\n * evaluator (services/preview-eval.ts) and the in-iframe live evaluator (canvas/iframe-eval.ts) so\n * both realms badge values with identical truncation rules. Dependency-light and DOM-free (the\n * strip-events pattern) so importing it never grows the iframe bundle.\n */\n\nconst MAX_BADGE_LENGTH = 48;\n\n/** Format a runtime value as a short badge string. */\nexport function formatPreviewValue(value?: unknown): string {\n if (value === undefined) {\n return \"undefined\";\n }\n let text: string;\n try {\n text =\n typeof value === \"string\" ? JSON.stringify(value) : (JSON.stringify(value) ?? \"undefined\");\n } catch {\n text = String(value);\n }\n if (text.length > MAX_BADGE_LENGTH) {\n text = `${text.slice(0, MAX_BADGE_LENGTH - 1)}…`;\n }\n return text;\n}\n",
104
- "/// <reference lib=\"dom\" />\n/**\n * Parent-side live expression preview (spec §19.9).\n *\n * Evaluates an expression node against the canvas iframe's last dataScope snapshot\n * (tab.session.canvas.scope) on a structuredClone, so mutating operators are safe — they mutate the\n * clone, never the live canvas. The engine's trace hook reports every sub-node's value keyed by its\n * path within the tree; values are formatted to display strings at report time so later mutations\n * of the clone cannot retroactively change a badge.\n */\n\nimport { evaluateExpression, isMutating } from \"@jxsuite/runtime/expression\";\nimport { toRaw } from \"../reactivity\";\n// Imported for local use AND re-exported below so existing consumers keep their import site.\n// oxlint-disable-next-line unicorn/prefer-export-from\nimport { formatPreviewValue } from \"../utils/preview-format\";\n\nimport type { ExpressionNode } from \"@jxsuite/runtime/expression\";\n\nexport interface ExpressionPreview {\n /** Path-keyed display values: \"\" is the root node, \"value/target\" a nested operand, etc. */\n values: Map<string, string>;\n /** Evaluation error message, if the expression threw. */\n error: string | null;\n /** Whether the root operator mutates its target (badge renders as an effect, not a value). */\n mutating: boolean;\n}\n\n// The formatter is shared with the in-iframe live evaluator: it lives in utils/preview-format.ts\n// (dependency-light, safe for the iframe bundle) and is re-exported here so existing consumers\n// Keep their import site.\nexport { formatPreviewValue };\n\n/**\n * Evaluate `node` against a scope snapshot for display. Returns null when no snapshot is available\n * (canvas not yet rendered) — the editor renders no badges rather than wrong ones.\n */\nexport function previewExpression(\n node: unknown,\n scope?: Record<string, unknown> | null,\n): ExpressionPreview | null {\n if (!scope || !node || typeof node !== \"object\" || !(\"operator\" in node)) {\n return null;\n }\n\n let state: Record<string, unknown>;\n try {\n // Callers hand over tab.session.canvas.scope, which the reactive session tree wraps in a\n // Proxy — structuredClone rejects proxies, so unwrap to the raw snapshot first.\n state = structuredClone(toRaw(scope));\n } catch {\n // Snapshot values are JSON-safe by construction (serialize-scope), but stay defensive.\n return null;\n }\n\n const values = new Map<string, string>();\n const expr = node as ExpressionNode;\n let errorMessage: string | null = null;\n try {\n evaluateExpression(expr, state, null, undefined, {\n report: (path, value) => values.set(path.join(\"/\"), formatPreviewValue(value)),\n });\n } catch (error) {\n errorMessage = error instanceof Error ? error.message : String(error);\n }\n\n return { error: errorMessage, mutating: isMutating(expr.operator), values };\n}\n",
105
- "/// <reference lib=\"dom\" />\n/**\n * Live expression preview (M6) — upgrades the parent-side snapshot evaluation\n * (services/preview-eval.ts) to LIVE-context evaluation inside the canvas iframe, over the\n * `evalExpr`/`evalResult` bridge. The iframe evaluates against the real resolved scope (real\n * repeater items, real `window#/` globals, uncapped values); the snapshot evaluator stays the\n * fallback whenever no iframe host can answer (canvas not mounted, workspace takeover, timeout,\n * stale-gen reply).\n *\n * Call sites stay synchronous: {@link livePreviewExpression} returns the freshest available preview\n * immediately (the retained live result when it matches the expression, else the snapshot\n * evaluation) and kicks a debounced live refresh; when a CHANGED live result lands it is stored on\n * `tab.session.canvas.livePreviews` (mirroring how `canvas.scope` is stored) and the caller's\n * `onUpdate` re-renders the panel through its existing scheduler.\n */\n\nimport { isMutating } from \"@jxsuite/runtime/expression\";\nimport { previewExpression } from \"./preview-eval\";\nimport { requestCanvasEval } from \"../canvas/iframe-host\";\n\nimport type { ExpressionPreview } from \"./preview-eval\";\nimport type { StoredLivePreview, Tab } from \"../tabs/tab\";\n\n/** Debounce (ms) between a call site's render and the posted evalExpr — the presence-measure idiom. */\nexport const LIVE_PREVIEW_DEBOUNCE_MS = 100;\n\n/** Pending debounced refreshes keyed by `tabId\u0000targetId` (latest expression wins). */\nconst timers = new Map<string, ReturnType<typeof setTimeout>>();\n\n/** The staleness key a stored live result is checked against: the expression + its context. */\nfunction exprKeyOf(node: unknown, contextPath: (string | number)[] | null): string {\n return JSON.stringify([node, contextPath]);\n}\n\n/** Whether `node` is an evaluable expression node (same gate as previewExpression). */\nfunction isExprNode(node: unknown): node is { operator: string } {\n return Boolean(node && typeof node === \"object\" && \"operator\" in node);\n}\n\n/** Rebuild an ExpressionPreview from stored/wire values (mutating derives from the node itself). */\nfunction toPreview(\n node: { operator: string },\n values: [string, string][],\n error: string | null,\n): ExpressionPreview {\n return { error, mutating: isMutating(node.operator), values: new Map(values) };\n}\n\n/**\n * Ask the canvas iframe to evaluate `node` live. Resolves null when no host answers (no iframe for\n * this tab, ~300ms timeout, or a stale-gen reply) — the caller falls back to the snapshot.\n */\nasync function fetchLivePreview(\n tab: Tab,\n node: { operator: string },\n contextPath: (string | number)[] | null,\n): Promise<ExpressionPreview | null> {\n const results = await requestCanvasEval(tab.id, [{ id: \"0\", node }], contextPath);\n const result = results?.find((r) => r.id === \"0\");\n return result ? toPreview(node, result.values, result.error ?? null) : null;\n}\n\n/**\n * Evaluate `node` for display, preferring the live canvas scope: live-context evaluation in the\n * iframe when a host answers within the timeout, else the parent-side snapshot evaluation. Returns\n * null when `node` is not an expression node or no evaluation basis exists at all.\n */\nexport async function requestLivePreview(\n tab: Tab,\n node: unknown,\n contextPath: (string | number)[] | null = null,\n): Promise<ExpressionPreview | null> {\n if (!isExprNode(node)) {\n return null;\n }\n const live = await fetchLivePreview(tab, node, contextPath);\n return live ?? previewExpression(node, tab.session.canvas.scope);\n}\n\n/**\n * Synchronous call-site wrapper. Returns the retained live preview when it matches this exact\n * expression+context, else the snapshot evaluation — and (debounced) refreshes the live result in\n * the background, invoking `onUpdate` only when a CHANGED result lands so re-render loops cannot\n * self-sustain (an identical refresh stores silently and the chain stops).\n */\nexport function livePreviewExpression(\n tab: Tab | null | undefined,\n targetId: string,\n node: unknown,\n contextPath: (string | number)[] | null = null,\n onUpdate?: () => void,\n): ExpressionPreview | null {\n if (!tab || !isExprNode(node)) {\n return null;\n }\n const key = exprKeyOf(node, contextPath);\n scheduleLiveRefresh(tab, targetId, node, contextPath, key, onUpdate);\n const stored = tab.session.canvas.livePreviews?.[targetId];\n if (stored && stored.key === key) {\n return toPreview(node, stored.values, stored.error);\n }\n return previewExpression(node, tab.session.canvas.scope);\n}\n\n/** Debounce a live refresh for (tab, target); the latest expression/context/callback wins. */\nfunction scheduleLiveRefresh(\n tab: Tab,\n targetId: string,\n node: { operator: string },\n contextPath: (string | number)[] | null,\n key: string,\n onUpdate?: () => void,\n): void {\n const timerKey = `${tab.id}\u0000${targetId}`;\n const existing = timers.get(timerKey);\n if (existing) {\n clearTimeout(existing);\n }\n timers.set(\n timerKey,\n setTimeout(() => {\n timers.delete(timerKey);\n void (async () => {\n const live = await fetchLivePreview(tab, node, contextPath);\n if (!live) {\n return; // No live answer — the call site keeps rendering the snapshot values.\n }\n const stored: StoredLivePreview = {\n error: live.error,\n key,\n values: [...live.values.entries()],\n };\n const prev = tab.session.canvas.livePreviews?.[targetId];\n const changed =\n !prev ||\n prev.key !== key ||\n prev.error !== stored.error ||\n JSON.stringify(prev.values) !== JSON.stringify(stored.values);\n (tab.session.canvas.livePreviews ??= {})[targetId] = stored;\n if (changed) {\n onUpdate?.();\n }\n })();\n }, LIVE_PREVIEW_DEBOUNCE_MS),\n );\n}\n",
106
- "/// <reference lib=\"dom\" />\n/**\n * Media Picker — combobox-style widget for selecting or uploading project media files.\n *\n * Shows an editable text input for manual URL entry, an Upload button that adds a new file to the\n * project and assigns it, and a Browse dropdown of media already in the project's public/\n * directory, with thumbnail previews for images.\n *\n * @docs studio/projects/media\n */\n\nimport { html, render as litRender, nothing } from \"lit-html\";\nimport { live } from \"lit-html/directives/live.js\";\nimport { ref } from \"lit-html/directives/ref.js\";\nimport { getPlatform } from \"../platform\";\nimport { debouncedStyleCommit, renderOnly } from \"../store\";\nimport { getLayerSlot } from \"./layers\";\nimport { rectOf } from \"../utils/geometry\";\nimport { loopbackAssetSrc } from \"../canvas/canvas-origin\";\nimport { previewAssetSrc } from \"../canvas/content-assets\";\nimport {\n IMAGE_EXTENSIONS,\n MEDIA_EXTENSIONS,\n UPLOAD_ACCEPT,\n extensionOf,\n uploadAssets,\n} from \"../files/media-upload\";\n\n// ─── Media file cache ────────────────────────────────────────────────────────\n\n/** @type {{ path: string; name: string; isImage: boolean }[]} */\nlet mediaCache: { path: string; name: string; isImage: boolean }[] = [];\nlet mediaCacheLoaded = false;\n\n/**\n * Recursively collect media files from a directory.\n *\n * @param {string} dir\n * @param {ReturnType<typeof getPlatform>} platform\n * @returns {Promise<{ path: string; name: string; isImage: boolean }[]>}\n */\nasync function collectMedia(\n dir: string,\n platform: ReturnType<typeof getPlatform>,\n): Promise<{ path: string; name: string; isImage: boolean }[]> {\n /** @type {{ path: string; name: string; isImage: boolean }[]} */\n const results = [];\n try {\n const entries = await platform.listDirectory(dir);\n for (const entry of entries) {\n if (entry.type === \"directory\") {\n const sub = await collectMedia(entry.path, platform);\n results.push(...sub);\n } else {\n const ext = extensionOf(entry.name);\n if (MEDIA_EXTENSIONS.has(ext)) {\n results.push({\n isImage: IMAGE_EXTENSIONS.has(ext),\n name: entry.name,\n path: `/${entry.path}`,\n });\n }\n }\n }\n } catch {\n // Directory may not exist\n }\n return results;\n}\n\nasync function loadMediaCache() {\n if (mediaCacheLoaded) {\n return;\n }\n const platform = getPlatform();\n mediaCache = await collectMedia(\"public\", platform);\n // Strip \"public/\" prefix so paths match production (public/ contents served at root)\n for (const m of mediaCache) {\n m.path = m.path.replace(/^\\/public\\//, \"/\");\n }\n mediaCacheLoaded = true;\n // Re-render the host panels so the browse popover has entries to show once the async listing\n // Resolves. Mirrors loadLayoutEntries()'s renderOnly() in head-panel.\n renderOnly(\"leftPanel\", \"rightPanel\", \"frontmatterPanel\");\n}\n\n/** Force media cache reload (e.g. after upload). */\nexport function invalidateMediaCache() {\n mediaCache = [];\n mediaCacheLoaded = false;\n}\n\n// ─── Popover state ───────────────────────────────────────────────────────────\n\n/** @type {((val: string) => void) | null} */\nlet _popoverOnCommit: ((val: string) => void) | null = null;\n\n/** @type {HTMLElement | null} */\nlet _popoverAnchorEl: HTMLElement | null = null;\n\n/** @type {HTMLInputElement | null} */\nlet _popoverFilterEl: HTMLInputElement | null = null;\n\nlet _popoverFilter = \"\";\n\nfunction dismissMediaPickerPopover() {\n _popoverFilter = \"\";\n _popoverOnCommit = null;\n _popoverAnchorEl = null;\n _popoverFilterEl = null;\n document.removeEventListener(\"keydown\", onPopoverKeydown, true);\n document.removeEventListener(\"mousedown\", onPopoverOutsideClick, true);\n litRender(nothing, getLayerSlot(\"popover\", \"media-picker\"));\n}\n\n/** @param {KeyboardEvent} e */\nfunction onPopoverKeydown(e: KeyboardEvent) {\n if (e.key === \"Escape\") {\n dismissMediaPickerPopover();\n e.preventDefault();\n e.stopPropagation();\n }\n}\n\n/** @param {MouseEvent} e */\nfunction onPopoverOutsideClick(e: MouseEvent) {\n const host = getLayerSlot(\"popover\", \"media-picker\");\n if (!host.contains(e.target as Node)) {\n dismissMediaPickerPopover();\n }\n}\n\nfunction renderMediaPickerPopover() {\n const host = getLayerSlot(\"popover\", \"media-picker\");\n const rect = _popoverAnchorEl ? rectOf(_popoverAnchorEl) : undefined;\n if (!rect) {\n return;\n }\n\n const query = _popoverFilter.toLowerCase();\n const filtered = query\n ? mediaCache.filter(\n (m) => m.path.toLowerCase().includes(query) || m.name.toLowerCase().includes(query),\n )\n : mediaCache;\n const options = filtered.slice(0, 50);\n\n // Compute initial position below the anchor\n let { left } = rect;\n let top = rect.bottom + 4;\n\n // Estimate popover dimensions for viewport clamping before first paint\n const estimatedWidth = 280;\n const estimatedHeight = Math.min(options.length * 36 + 48, 360);\n\n if (left + estimatedWidth > window.innerWidth - 8) {\n left = Math.max(8, window.innerWidth - estimatedWidth - 8);\n }\n if (top + estimatedHeight > window.innerHeight - 8) {\n top = Math.max(8, rect.top - estimatedHeight - 4);\n }\n\n let _popoverEl: HTMLElement | null = null;\n\n litRender(\n html`\n <sp-popover\n open\n ${ref((el) => {\n _popoverEl = (el as HTMLElement | undefined) || null;\n })}\n style=\"position:fixed;left:${left}px;top:${top}px;z-index:30;max-height:360px;overflow-y:auto;min-width:240px\"\n >\n <input\n class=\"media-picker-filter\"\n type=\"text\"\n placeholder=\"Search images…\"\n autocomplete=\"off\"\n style=\"display:block;width:100%;box-sizing:border-box;padding:6px 10px;border:none;border-bottom:1px solid var(--border, #444);outline:none;font-size:13px;background:transparent;color:inherit\"\n ${ref((el) => {\n _popoverFilterEl = (el as HTMLInputElement | null) || null;\n })}\n @input=${(e: Event) => {\n _popoverFilter = (e.target as HTMLInputElement).value;\n renderMediaPickerPopover();\n }}\n @click=${(e: MouseEvent) => e.stopPropagation()}\n />\n <sp-menu\n style=\"min-width:220px\"\n @change=${(e: Event) => {\n _popoverOnCommit?.((e.target as HTMLInputElement).value);\n dismissMediaPickerPopover();\n }}\n >\n ${\n options.length > 0\n ? options.map(\n (m) => html`\n <sp-menu-item value=${m.path}>\n ${\n m.isImage\n ? html`<img\n slot=\"icon\"\n src=${loopbackAssetSrc(m.path)}\n alt=\"\"\n style=\"width:24px;height:24px;object-fit:cover;border-radius:var(--spectrum-corner-radius-75, 2px)\"\n />`\n : nothing\n }\n ${m.name}\n </sp-menu-item>\n `,\n )\n : html`<sp-menu-item disabled>No matches</sp-menu-item>`\n }\n ${\n filtered.length > 50\n ? html`<sp-menu-item disabled>…${filtered.length - 50} more</sp-menu-item>`\n : nothing\n }\n </sp-menu>\n </sp-popover>\n `,\n host,\n );\n\n // Fine-tune position after render using actual measured dimensions\n requestAnimationFrame(() => {\n if (_popoverEl) {\n const popoverRect = rectOf(_popoverEl);\n let adjLeft = popoverRect.left;\n let adjTop = popoverRect.top;\n let needsAdjust = false;\n\n if (popoverRect.right > window.innerWidth - 4) {\n adjLeft = Math.max(4, window.innerWidth - popoverRect.width - 4);\n needsAdjust = true;\n }\n if (popoverRect.bottom > window.innerHeight - 4) {\n adjTop = Math.max(4, window.innerHeight - popoverRect.height - 4);\n needsAdjust = true;\n }\n if (popoverRect.left < 4) {\n adjLeft = 4;\n needsAdjust = true;\n }\n if (popoverRect.top < 4) {\n adjTop = 4;\n needsAdjust = true;\n }\n\n if (needsAdjust) {\n _popoverEl.style.left = `${adjLeft}px`;\n _popoverEl.style.top = `${adjTop}px`;\n }\n }\n\n if (_popoverFilterEl) {\n _popoverFilterEl.focus();\n }\n });\n}\n\n/**\n * @param {HTMLElement} anchorEl\n * @param {(val: string) => void} onCommit\n */\nfunction showMediaPickerPopover(anchorEl: HTMLElement, onCommit: (val: string) => void) {\n dismissMediaPickerPopover();\n _popoverOnCommit = onCommit;\n _popoverAnchorEl = anchorEl;\n _popoverFilter = \"\";\n renderMediaPickerPopover();\n document.addEventListener(\"keydown\", onPopoverKeydown, true);\n requestAnimationFrame(() => {\n document.addEventListener(\"mousedown\", onPopoverOutsideClick, true);\n });\n}\n\n// ─── Render ──────────────────────────────────────────────────────────────────\n\n/**\n * Upload files chosen in a media field's file input and assign the first one to the field. Exported\n * for the unit tests — the hidden input is created on demand, so there is no other way to reach\n * it.\n *\n * @param {FileList | File[]} files\n * @param {(val: string) => void} onCommit\n */\nexport async function uploadAndAssign(\n files: FileList | File[],\n onCommit: (val: string) => void,\n): Promise<void> {\n const uploaded = await uploadAssets([...files]);\n const [first] = uploaded;\n if (first) {\n onCommit(first.ref);\n }\n}\n\n/**\n * Open the OS file picker for a media field. The input is created per click and discarded after — a\n * persistent hidden input in the template would be recreated by lit on every panel re-render.\n *\n * @param {(val: string) => void} onCommit\n */\nfunction pickAndUpload(onCommit: (val: string) => void) {\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.multiple = true;\n input.accept = UPLOAD_ACCEPT;\n input.addEventListener(\"change\", () => {\n if (input.files?.length) {\n void uploadAndAssign(input.files, onCommit);\n }\n });\n input.click();\n}\n\n/**\n * Render the media picker widget for src-type attributes.\n *\n * @param {string} prop — attribute name (e.g. \"src\")\n * @param {string} value — current attribute value\n * @param {(val: string) => void} onCommit — commit callback\n * @returns {import(\"lit-html\").TemplateResult}\n */\nexport function renderMediaPicker(prop: string, value: string, onCommit: (val: string) => void) {\n // Kick off async load (won't block render)\n void loadMediaCache();\n\n const currentValue = value || \"\";\n const isImage = IMAGE_EXTENSIONS.has(extensionOf(currentValue));\n\n return html`\n <div class=\"media-picker\">\n ${\n isImage && currentValue\n ? html`<img\n class=\"media-picker-thumb\"\n src=${loopbackAssetSrc(previewAssetSrc(currentValue))}\n alt=\"\"\n />`\n : nothing\n }\n <sp-textfield\n size=\"s\"\n placeholder=\"/image.jpg\"\n .value=${live(currentValue)}\n @input=${debouncedStyleCommit(`media:${prop}`, 400, (e: Event) =>\n onCommit((e.target as HTMLInputElement).value),\n )}\n @focus=${() => loadMediaCache()}\n ></sp-textfield>\n <sp-action-button\n class=\"media-picker-upload\"\n size=\"xs\"\n quiet\n title=\"Upload media\"\n @click=${() => pickAndUpload(onCommit)}\n >\n <sp-icon-upload slot=\"icon\"></sp-icon-upload>\n </sp-action-button>\n <sp-action-button\n class=\"media-picker-browse\"\n size=\"xs\"\n quiet\n title=\"Browse media\"\n @click=${(e: MouseEvent) => {\n void loadMediaCache();\n showMediaPickerPopover(e.currentTarget as HTMLElement, onCommit);\n }}\n >\n <sp-icon-image slot=\"icon\"></sp-icon-image>\n </sp-action-button>\n </div>\n `;\n}\n",
107
- "/// <reference lib=\"dom\" />\n/**\n * Signals panel — signal/def helpers, signals template, CEM editors, plugin schema forms.\n *\n * Extracted from studio.js to reduce file size.\n */\n\nimport { html, nothing } from \"lit-html\";\nimport { classMap } from \"lit-html/directives/class-map.js\";\nimport { live } from \"lit-html/directives/live.js\";\nimport { isRef } from \"@jxsuite/schema/guards\";\nimport { dynamicRouteParams } from \"../page-params\";\nimport { projectState } from \"../state\";\nimport type { JsonValue } from \"../types\";\nimport { activeTab } from \"../workspace/workspace\";\nimport {\n mutateAddDef,\n mutateRemoveDef,\n mutateRenameDef,\n mutateUpdateDef,\n transactDoc,\n} from \"../tabs/transact\";\nimport { renderFieldRow } from \"../ui/field-row\";\nimport { rawTextArea, spTextField } from \"../ui/field-input\";\nimport { expressionHint, renderExpressionEditor } from \"../ui/expression-editor\";\nimport { renderStatementEditor } from \"./statement-editor\";\nimport { livePreviewExpression } from \"../services/live-preview\";\nimport { renderMediaPicker } from \"../ui/media-picker\";\nimport { renderOnly } from \"../store\";\nimport { registerFormControl, renderForm } from \"../ui/schema-form\";\nimport { resolveContextPointer } from \"../services/context-resolver\";\nimport type { JsonSchema } from \"../ui/schema-form\";\nimport type { TabUi } from \"../tabs/tab\";\nimport type {\n CemEvent,\n CemParameter,\n JxMutableNode,\n JxStatement,\n JxStateDefinition,\n} from \"@jxsuite/schema/types\";\nimport { fetchPluginSchema, pluginSchemaCache } from \"../services/code-services\";\nimport { getExtensions, loadExtensions } from \"../format/format-host\";\nimport type { TemplateResult } from \"lit-html\";\n\ninterface SignalsPanelState {\n document: JxMutableNode;\n ui?: TabUi | Record<string, unknown>;\n mode?: string;\n selection?: (string | number)[] | null;\n canvas?: Record<string, unknown>;\n _collapsedSignalCats?: Set<string>;\n documentPath?: string | null | undefined;\n}\n\ninterface SignalsPanelCtx {\n renderLeftPanel: () => void;\n renderCanvas: () => void;\n updateSession: (patch: Record<string, unknown>) => void;\n}\n\nexport interface SignalDef {\n $prototype?: string;\n $src?: string;\n $export?: string;\n $compute?: string;\n $deps?: string[];\n $expression?: Record<string, unknown>;\n $handler?: string;\n type?: string;\n default?: unknown;\n body?: string | unknown[];\n parameters?: string[];\n timing?: string;\n description?: string;\n fields?: Record<string, unknown>;\n url?: string;\n method?: string;\n key?: string;\n database?: string;\n store?: string;\n version?: number;\n name?: string;\n attribute?: string;\n reflects?: boolean;\n deprecated?: string | boolean;\n format?: string;\n emits?: CemEvent[];\n [key: string]: unknown;\n}\n\n// ─── Module-local state ─────────────────────────────────────────────────────\n\n/** Expanded signal editor state (persists across renders). */\nlet expandedSignal: string | null = null;\n\n/** Track which functions have the advanced param editor open. */\nconst advancedParamOpen = new Set();\n\n/** Schema fields whose binding picker is in free-form Custom mode (cleared on commit). */\nconst bindingCustomOpen = new Set<string>();\n\n/** Reset binding-control ephemeral UI state (test hook). */\nexport function resetBindingUiState() {\n bindingCustomOpen.clear();\n}\n\n/** Default templates for creating new signal definitions. */\nconst DEF_TEMPLATES = {\n computed: { $compute: \"\", $deps: [] },\n cookie: { $prototype: \"Cookie\", default: \"\", name: \"\" },\n expression: { $expression: { operator: \"=\", target: null } },\n external: { $prototype: \"\", $src: \"\" },\n formData: { $prototype: \"FormData\", fields: {} },\n function: { $prototype: \"Function\", body: \"\", parameters: [] },\n indexedDB: { $prototype: \"IndexedDB\", database: \"\", store: \"\", version: 1 },\n localStorage: { $prototype: \"LocalStorage\", default: null, key: \"\" },\n map: { $prototype: \"Map\", default: {} },\n request: { $prototype: \"Request\", method: \"GET\", timing: \"client\", url: \"\" },\n sessionStorage: { $prototype: \"SessionStorage\", default: null, key: \"\" },\n set: { $prototype: \"Set\", default: [] },\n state: { default: \"\", type: \"string\" },\n} as Record<string, SignalDef>;\n\n/** Keys handled by the framework — skip when rendering schema fields. */\nconst STUDIO_RESERVED_KEYS = new Set([\n \"$prototype\",\n \"$src\",\n \"$export\",\n \"timing\",\n \"default\",\n \"description\",\n \"body\",\n \"parameters\",\n \"name\",\n \"attribute\",\n \"reflects\",\n \"deprecated\",\n \"emits\",\n]);\n\n// ─── Signals / defs helpers ──────────────────────────────────────────────────\n\n/**\n * Extension-manifest state classes for the add-state picker: plain `$prototype` targets (no\n * admission blocks) across the enabled extensions, each with its `$studio.stateDefaults` hint\n * (specs/extensions.md §10). Manifest classes need no `$src` — the registry resolves them.\n */\nexport function extensionStateClasses(): {\n name: string;\n stateDefaults?: Record<string, unknown>;\n}[] {\n const out: { name: string; stateDefaults?: Record<string, unknown> }[] = [];\n for (const ext of getExtensions()) {\n for (const cls of ext.classes ?? []) {\n if (cls.state) {\n out.push({\n name: cls.name,\n ...(cls.stateDefaults === undefined ? {} : { stateDefaults: cls.stateDefaults }),\n });\n }\n }\n }\n return out;\n}\n\n/**\n * View a state entry through the panel's flattened editing lens. Naked primitive and array entries\n * surface as an empty view — the renderers guard every field access.\n *\n * @param {import(\"@jxsuite/schema/types\").JxStateDefinition} def\n * @returns {SignalDef}\n */\nfunction asSignalDef(def: JxStateDefinition): SignalDef {\n return (typeof def === \"object\" && def !== null && !Array.isArray(def) ? def : {}) as SignalDef;\n}\n\n/**\n * Classify a state entry into a category string.\n *\n * @param {SignalDef | unknown} def\n */\nexport function defCategory(def: SignalDef | unknown) {\n if (!def) {\n return \"state\";\n }\n const d = def as SignalDef;\n if (d.$expression) {\n return \"expression\";\n }\n if (d.$handler || d.$prototype === \"Function\") {\n return \"function\";\n }\n if (d.$compute) {\n return \"computed\";\n }\n if (d.$prototype) {\n return \"data\";\n }\n return \"state\";\n}\n\n/**\n * Badge label for a def category.\n *\n * @param {SignalDef | unknown} def\n */\nexport function defBadgeLabel(def: SignalDef | unknown) {\n if (!def) {\n return \"S\";\n }\n const d = def as SignalDef;\n if (d.$expression) {\n return \"E\";\n }\n if (d.$handler || d.$prototype === \"Function\") {\n return \"F\";\n }\n if (d.$compute) {\n return \"C\";\n }\n if (d.$prototype) {\n return d.$prototype.charAt(0);\n }\n return \"S\";\n}\n\n/**\n * Hint text for a signal row.\n *\n * @param {string} name\n * @param {SignalDef | null | undefined} def\n */\nexport function defHint(_name: string, def: SignalDef | null | undefined) {\n if (!def) {\n return \"\";\n }\n if (def.$expression) {\n return expressionHint(def.$expression);\n }\n if (def.$prototype === \"Function\") {\n if (Array.isArray(def.body)) {\n return `${def.body.length} statement${def.body.length === 1 ? \"\" : \"s\"}`;\n }\n if (def.body) {\n return def.body.length > 20 ? `${def.body.slice(0, 20)}...` : def.body;\n }\n if (def.$src) {\n return def.$src;\n }\n return \"function\";\n }\n if (def.$handler) {\n return \"handler (legacy)\";\n }\n if (def.$compute) {\n return `=${def.$compute.length > 20 ? `${def.$compute.slice(0, 20)}...` : def.$compute}`;\n }\n if (def.$prototype === \"Request\") {\n return `${def.method || \"GET\"} ${(def.url || \"\").slice(0, 20)}`;\n }\n if (def.$prototype === \"LocalStorage\" || def.$prototype === \"SessionStorage\") {\n return def.key || \"\";\n }\n if (def.$prototype === \"IndexedDB\") {\n return def.database || \"\";\n }\n if (def.$prototype === \"Cookie\") {\n return def.name || \"\";\n }\n if (def.$prototype) {\n return def.$prototype;\n }\n if (def.attribute) {\n return `[${def.attribute}] ${def.type || \"\"}`;\n }\n return def.type || \"\";\n}\n\n/**\n * Whether the current document defines a custom element (hyphenated tagName).\n *\n * @param {SignalsPanelState} S\n */\nexport function isCustomElementDoc(S: SignalsPanelState) {\n return (S.document.tagName || \"\").includes(\"-\");\n}\n\n/**\n * Recursively collect CSS `part` attributes from the document tree.\n *\n * @param {JxMutableNode | null | undefined} node\n * @param {{ name: string; tag: string }[]} [parts]\n */\nexport function collectCssParts(\n node: JxMutableNode | null | undefined,\n parts: { name: string; tag: string }[] = [],\n) {\n const part = node?.attributes?.part;\n if (typeof part === \"string\" && part) {\n parts.push({ name: part, tag: node?.tagName || \"div\" });\n }\n if (Array.isArray(node?.children)) {\n for (const c of node.children) {\n if (typeof c !== \"string\") {\n collectCssParts(c, parts);\n }\n }\n }\n return parts;\n}\n\n/**\n * Resolve a $ref value to a display string using signal defaults. Used by the canvas to show real\n * values instead of raw refs.\n *\n * @param {unknown} value\n * @param {Record<string, SignalDef> | null | undefined} defs\n */\nexport function resolveDefaultForCanvas(\n value: unknown,\n defs: Record<string, JxStateDefinition> | null | undefined,\n) {\n if (!value || typeof value !== \"object\" || !(value as Record<string, unknown>).$ref) {\n return value;\n }\n const ref = (value as Record<string, unknown>).$ref as string;\n /** @type {string | undefined} */\n let defName;\n if (ref.startsWith(\"#/state/\")) {\n defName = ref.slice(8);\n } else if (ref.startsWith(\"$\")) {\n defName = ref;\n } else {\n return `{${ref}}`;\n }\n\n const rawDef = defs?.[defName];\n if (!rawDef) {\n return `{${defName}}`;\n }\n const def = asSignalDef(rawDef);\n\n // State signal → use default\n if (!def.$compute && !def.$prototype) {\n if (def.default !== undefined && def.default !== null) {\n if (typeof def.default === \"object\") {\n return JSON.stringify(def.default);\n }\n return String(def.default);\n }\n return \"\";\n }\n // Computed → expression indicator\n if (def.$compute) {\n return `\\u0192(${defName})`;\n }\n // Request → URL hint\n if (def.$prototype === \"Request\") {\n return `\\u27F3 ${def.url || \"fetch\"}`;\n }\n // Storage → use default or key\n if (def.$prototype === \"LocalStorage\" || def.$prototype === \"SessionStorage\") {\n if (def.default !== undefined && def.default !== null) {\n if (typeof def.default === \"object\") {\n return JSON.stringify(def.default);\n }\n return String(def.default);\n }\n return `[${def.key || \"storage\"}]`;\n }\n if (def.$prototype) {\n return `{${def.$prototype}}`;\n }\n return `{${defName}}`;\n}\n\n// ─── Simple field row ────────────────────────────────────────────────────────\n\n/** Simple field row for signal editors — vertical stacked layout. */\nexport function signalFieldRow(label: string, value: string, onChange: (value: string) => void) {\n return renderFieldRow({\n prop: label,\n label,\n hasValue: false,\n // CommitMode \"blur\": signal fields (rename, src, etc.) commit on blur/Enter only — a debounced\n // Mid-typing commit would, e.g., rename the signal on every keystroke pause.\n widget: spTextField(\n `sig:${label}`,\n value,\n (v: string) => {\n if (v !== value) {\n onChange(v);\n }\n },\n { commitMode: \"blur\" },\n ),\n });\n}\n\n/** Normalize a parameter entry to a CEM object. */\nexport function normParam(p: string | CemParameter): CemParameter {\n return typeof p === \"string\" ? { name: p } : p;\n}\n\n/** Extract the display text from a CEM `{ text }` type value, if present. */\nfunction cemTypeText(type: JsonValue | undefined): string {\n if (typeof type === \"object\" && type !== null && !Array.isArray(type)) {\n const { text } = type;\n if (typeof text === \"string\") {\n return text;\n }\n }\n return \"\";\n}\n\n// ─── Left panel: Signals ─────────────────────────────────────────────────────\n\n/**\n * @param {SignalsPanelState} S\n * @param {SignalsPanelCtx} ctx\n */\nexport function renderSignalsTemplate(S: SignalsPanelState, ctx: SignalsPanelCtx) {\n const defs = S.document.state || {};\n const entries = Object.entries(defs);\n\n // Warm the extensions payload so manifest state classes appear in the add picker (the panel\n // Re-renders constantly; loadExtensions memoizes, so this is a one-time fetch per project).\n void loadExtensions();\n\n // Group by category\n const groups = {\n computed: [],\n data: [],\n expression: [],\n function: [],\n state: [],\n } as Record<string, [string, SignalDef][]>;\n for (const [name, def] of entries) {\n groups[defCategory(def)]!.push([name, asSignalDef(def)]);\n }\n\n const categories = [\n { items: groups.state!, key: \"state\", label: \"State\" },\n { items: groups.computed!, key: \"computed\", label: \"Computed\" },\n { items: groups.data!, key: \"data\", label: \"Data\" },\n { items: groups.expression!, key: \"expression\", label: \"Expressions\" },\n { items: groups.function!, key: \"function\", label: \"Functions\" },\n ];\n\n const collapsedCats = (S._collapsedSignalCats ||= new Set());\n\n const catTemplates = categories\n .filter((c) => c.items.length > 0)\n .map(\n ({ key, label, items }) => html`\n <sp-accordion-item\n label=\"${label} (${items.length})\"\n ?open=${!collapsedCats.has(key)}\n @sp-accordion-item-toggle=${() => {\n if (collapsedCats.has(key)) {\n collapsedCats.delete(key);\n } else {\n collapsedCats.add(key);\n }\n ctx.renderLeftPanel();\n }}\n >\n ${items.map(([name, def]) => {\n const isExpanded: boolean = expandedSignal === name;\n return html`\n <div\n class=${classMap({ expanded: isExpanded, \"signal-row\": true })}\n @click=${() => {\n expandedSignal = isExpanded ? null : name;\n ctx.renderLeftPanel();\n }}\n >\n <span class=\"signal-badge ${defCategory(def)}\">${defBadgeLabel(def)}</span>\n <span class=\"signal-name\">${name}</span>\n <span class=\"signal-hint\">${defHint(name, def)}</span>\n <sp-action-button\n quiet\n size=\"xs\"\n class=\"signal-del\"\n @click=${(e: Event) => {\n e.stopPropagation();\n transactDoc(activeTab.value, (t) => mutateRemoveDef(t, name));\n }}\n >\n <sp-icon-delete slot=\"icon\"></sp-icon-delete>\n </sp-action-button>\n </div>\n ${\n isExpanded\n ? html`<div class=\"signal-editor\">\n ${renderSignalEditorTemplate(S, name, def, ctx)}\n </div>`\n : nothing\n }\n `;\n })}\n </sp-accordion-item>\n `,\n );\n\n return html`\n <div class=\"signals-panel\">\n <sp-accordion allow-multiple size=\"s\"> ${catTemplates} </sp-accordion>\n ${entries.length === 0 ? html`<div class=\"empty-state\">No state defined</div>` : nothing}\n <div class=\"signals-add\">\n <sp-picker\n size=\"s\"\n label=\"+ Add…\"\n placeholder=\"+ Add…\"\n @change=${(e: Event) => {\n const type = (e.target as HTMLInputElement).value;\n if (!type) {\n return;\n }\n\n // Extension-manifest state classes (\"ext:Session\"): no $src needed — the registry\n // Resolves them; the descriptor's stateDefaults seed the def (e.g. timing \"client\").\n if (type.startsWith(\"ext:\")) {\n const protoName = type.slice(4);\n const cls = extensionStateClasses().find((c) => c.name === protoName);\n let n = `$${protoName.charAt(0).toLowerCase()}${protoName.slice(1)}`;\n let i = 1;\n const base = n;\n while (S.document.state && S.document.state[n]) {\n n = base + i;\n i += 1;\n }\n transactDoc(activeTab.value, (t) =>\n mutateAddDef(t, n, {\n $prototype: protoName,\n ...cls?.stateDefaults,\n } as Record<string, JsonValue>),\n );\n expandedSignal = n;\n ctx.renderLeftPanel();\n return;\n }\n\n // Handle import-based prototypes (e.g., \"import:ContentCollection\")\n if (type.startsWith(\"import:\")) {\n const protoName = type.slice(7);\n const src = projectState?.projectConfig?.imports?.[protoName];\n let n = `$${protoName.charAt(0).toLowerCase()}${protoName.slice(1)}`;\n let i = 1;\n const base = n;\n while (S.document.state && S.document.state[n]) {\n n = base + i;\n i += 1;\n }\n transactDoc(activeTab.value, (t) =>\n mutateAddDef(\n t,\n n,\n /** @type {Record<string, JsonValue>} */ {\n $prototype: protoName,\n },\n ),\n );\n expandedSignal = n;\n if (src) {\n void fetchPluginSchema(\n { $prototype: protoName, $src: src },\n {\n ...(S.documentPath != null && {\n documentPath: S.documentPath,\n }),\n },\n ).then(() => ctx.renderLeftPanel());\n } else {\n ctx.renderLeftPanel();\n }\n return;\n }\n\n const template = DEF_TEMPLATES[type];\n if (!template) {\n return;\n }\n const isFunction = type === \"function\";\n const nameBase = isFunction ? \"newFunction\" : \"$newSignal\";\n let n = nameBase;\n let i = 1;\n while (S.document.state && S.document.state[n]) {\n n = nameBase + i;\n i += 1;\n }\n transactDoc(activeTab.value, (t) =>\n mutateAddDef(t, n, structuredClone(template) as Record<string, JsonValue>),\n );\n expandedSignal = n;\n ctx.renderLeftPanel();\n }}\n >\n <sp-menu-item value=\"state\">State Signal</sp-menu-item>\n <sp-menu-item value=\"computed\">Computed</sp-menu-item>\n <sp-menu-divider></sp-menu-divider>\n <sp-menu-item value=\"request\">Fetch (Request)</sp-menu-item>\n <sp-menu-item value=\"localStorage\">LocalStorage</sp-menu-item>\n <sp-menu-item value=\"sessionStorage\">SessionStorage</sp-menu-item>\n <sp-menu-item value=\"indexedDB\">IndexedDB</sp-menu-item>\n <sp-menu-item value=\"cookie\">Cookie</sp-menu-item>\n <sp-menu-item value=\"set\">Set</sp-menu-item>\n <sp-menu-item value=\"map\">Map</sp-menu-item>\n <sp-menu-item value=\"formData\">FormData</sp-menu-item>\n <sp-menu-item value=\"external\">External Module…</sp-menu-item>\n ${\n projectState?.projectConfig?.imports\n ? html`<sp-menu-divider></sp-menu-divider>${Object.keys(\n projectState.projectConfig.imports,\n ).map(\n (k: string) => html`<sp-menu-item value=\"import:${k}\">${k}</sp-menu-item>`,\n )}`\n : nothing\n }\n ${\n extensionStateClasses().length > 0\n ? html`<sp-menu-divider></sp-menu-divider>${extensionStateClasses().map(\n (cls) => html`<sp-menu-item value=\"ext:${cls.name}\">${cls.name}</sp-menu-item>`,\n )}`\n : nothing\n }\n <sp-menu-divider></sp-menu-divider>\n <sp-menu-item value=\"expression\">Expression</sp-menu-item>\n <sp-menu-item value=\"function\">Function</sp-menu-item>\n </sp-picker>\n </div>\n </div>\n `;\n}\n\n/** Render inline editor fields for a specific signal/def type. */\nfunction renderSignalEditorTemplate(\n S: SignalsPanelState,\n name: string,\n defArg: SignalDef,\n ctx: SignalsPanelCtx,\n) {\n const def = typeof defArg === \"object\" && defArg !== null ? defArg : { default: defArg };\n const cat = defCategory(def);\n\n // Helper for picker rows\n const pickerRow = (\n label: string,\n options: string[],\n currentVal: string,\n onChange: (value: string) => void,\n ) =>\n renderFieldRow({\n hasValue: false,\n label,\n prop: label,\n widget: html`\n <sp-picker\n size=\"s\"\n value=${currentVal}\n @change=${(e: Event) => onChange((e.target as HTMLInputElement).value)}\n >\n ${options.map((opt: string) => html`<sp-menu-item value=${opt}>${opt}</sp-menu-item>`)}\n </sp-picker>\n `,\n });\n\n // Helper for textarea rows — uses the shared draft layer (commits on blur/Enter and a 500ms\n // Debounce) so a panel re-render mid-edit can't truncate the in-progress text.\n const textareaRow = (\n label: string,\n value: string,\n onChange: (value: string) => void,\n opts: { minHeight?: string; mono?: boolean } = {},\n ) =>\n renderFieldRow({\n hasValue: false,\n label,\n prop: label,\n widget: rawTextArea(`sig:${label}`, value, onChange, {\n debounceMs: 500,\n ...(opts.minHeight != null && { minHeight: opts.minHeight }),\n ...(opts.mono != null && { mono: opts.mono }),\n }),\n });\n\n // Name field (common to all)\n const nameField = signalFieldRow(\"Name\", name, (v: string) => {\n if (v && v !== name && !(S.document.state && S.document.state[v])) {\n expandedSignal = v;\n transactDoc(activeTab.value, (t) => mutateRenameDef(t, name, v));\n }\n });\n\n let fields: TemplateResult | typeof nothing = nothing;\n\n if (cat === \"state\") {\n const defaultVal =\n def.default !== undefined && def.default !== null\n ? typeof def.default === \"object\"\n ? JSON.stringify(def.default)\n : String(def.default)\n : \"\";\n\n const cemFields = isCustomElementDoc(S)\n ? html`\n ${signalFieldRow(\"Attribute\", def.attribute || \"\", (v: string) =>\n transactDoc(activeTab.value, (t) =>\n mutateUpdateDef(t, name, { attribute: v || undefined }),\n ),\n )}\n ${renderFieldRow({\n hasValue: false,\n label: \"Reflects\",\n prop: \"reflects\",\n widget: html`\n <sp-checkbox\n class=\"field-check\"\n ?checked=${Boolean(def.reflects)}\n @change=${(e: Event) =>\n transactDoc(activeTab.value, (t) =>\n mutateUpdateDef(t, name, {\n reflects: (e.target as HTMLInputElement).checked || undefined,\n }),\n )}\n ></sp-checkbox>\n `,\n })}\n ${signalFieldRow(\n \"Deprecated\",\n typeof def.deprecated === \"string\" ? def.deprecated : \"\",\n (v: string) =>\n transactDoc(activeTab.value, (t) =>\n mutateUpdateDef(t, name, { deprecated: v || undefined }),\n ),\n )}\n `\n : nothing;\n\n fields = html`\n ${pickerRow(\n \"Type\",\n [\"string\", \"integer\", \"number\", \"boolean\", \"array\", \"object\"],\n def.type || \"string\",\n (v: string) => transactDoc(activeTab.value, (t) => mutateUpdateDef(t, name, { type: v })),\n )}\n ${\n def.type === \"string\" || !def.type\n ? pickerRow(\"Format\", [\"\", \"image\", \"date\", \"color\"], def.format || \"\", (v: string) =>\n transactDoc(activeTab.value, (t) =>\n mutateUpdateDef(t, name, { format: v || undefined }),\n ),\n )\n : nothing\n }\n ${\n def.format === \"image\"\n ? renderFieldRow({\n hasValue: false,\n label: \"Default\",\n prop: \"Default\",\n widget: renderMediaPicker(\"default\", defaultVal, (v: string) => {\n transactDoc(activeTab.value, (t) =>\n mutateUpdateDef(t, name, { default: v || undefined }),\n );\n }),\n })\n : signalFieldRow(\"Default\", defaultVal, (v: string) => {\n let parsed: unknown = v;\n if (def.type === \"integer\") {\n parsed = Math.trunc(Number(v)) || 0;\n } else if (def.type === \"number\") {\n parsed = Number(v) || 0;\n } else if (def.type === \"boolean\") {\n parsed = v === \"true\";\n } else if (def.type === \"array\" || def.type === \"object\") {\n try {\n parsed = JSON.parse(v);\n } catch {\n parsed = v;\n }\n }\n transactDoc(activeTab.value, (t) =>\n mutateUpdateDef(t, name, { default: parsed as JsonValue }),\n );\n })\n }\n ${signalFieldRow(\"Description\", def.description || \"\", (v: string) =>\n transactDoc(activeTab.value, (t) =>\n mutateUpdateDef(t, name, { description: v || undefined }),\n ),\n )}\n ${cemFields}\n `;\n } else if (cat === \"computed\") {\n let debounce: ReturnType<typeof setTimeout> | undefined;\n fields = html`\n ${renderFieldRow({\n hasValue: false,\n label: \"Expression\",\n prop: \"expression\",\n widget: html`\n <textarea\n class=\"field-input\"\n style=\"min-height:40px\"\n .value=${def.$compute || \"\"}\n @input=${(e: Event) => {\n clearTimeout(debounce);\n debounce = setTimeout(() => {\n const expr = (e.target as HTMLInputElement).value;\n const depMatches = expr.match(/\\$[a-zA-Z_]\\w*/g) || [];\n const deps = [...new Set(depMatches)].map((d) => `#/state/${d}`);\n transactDoc(activeTab.value, (t) =>\n mutateUpdateDef(t, name, { $compute: expr, $deps: deps }),\n );\n }, 500);\n }}\n ></textarea>\n `,\n })}\n ${\n def.$deps && def.$deps.length > 0\n ? renderFieldRow({\n hasValue: false,\n label: \"Dependencies\",\n prop: \"dependencies\",\n widget: html`\n <span class=\"signal-hint\" style=\"flex:1;max-width:none\"\n >${def.$deps.map((d: string) => d.replace(\"#/state/\", \"\")).join(\", \")}</span\n >\n `,\n })\n : nothing\n }\n `;\n } else if (cat === \"data\") {\n fields = renderDataSourceFields(S, name, def, textareaRow, pickerRow, ctx);\n } else if (cat === \"function\") {\n fields = renderFunctionFields(S, name, def, textareaRow, ctx);\n } else if (cat === \"expression\") {\n const exprNode = def.$expression || { operator: \"=\", target: null };\n fields = html`\n <div style=\"display:flex;align-items:center;gap:4px\">\n <span class=\"field-label\" style=\"flex:1\">Expression</span>\n <sp-action-button\n size=\"xs\"\n quiet\n title=\"Open in formula workspace\"\n @click=${() => {\n ctx.updateSession({\n ui: { editingFormula: { defName: name, type: \"def\" } },\n });\n ctx.renderCanvas();\n }}\n >\n <sp-icon-full-screen slot=\"icon\"></sp-icon-full-screen>\n </sp-action-button>\n </div>\n ${renderExpressionEditor(\n exprNode,\n (newNode: unknown) =>\n transactDoc(activeTab.value, (t) =>\n // Expression editors emit JSON expression nodes.\n mutateUpdateDef(t, name, { $expression: newNode as JsonValue }),\n ),\n {\n allowEventRef: false,\n // Live-context evaluation in the canvas iframe, snapshot fallback (M6). The signals\n // Panel lives in the left panel — re-render it when a fresh live result lands.\n preview: livePreviewExpression(activeTab.value, `def:${name}`, exprNode, null, () =>\n renderOnly(\"leftPanel\"),\n ),\n onInsertDef: (defName, vendored) =>\n transactDoc(activeTab.value, (t) =>\n mutateAddDef(t, defName, vendored as Record<string, JsonValue>),\n ),\n stateDefs: Object.keys(S.document.state || {}),\n stateEntries: S.document.state || {},\n },\n )}\n `;\n }\n\n return html`${nameField}${fields}`;\n}\n\n/** Data source fields for signal editor */\nfunction renderDataSourceFields(\n S: SignalsPanelState,\n name: string,\n def: SignalDef,\n textareaRow: (\n label: string,\n value: string,\n onChange: (value: string) => void,\n opts?: { minHeight?: string; mono?: boolean },\n ) => TemplateResult,\n pickerRow: (\n label: string,\n options: string[],\n currentVal: string,\n onChange: (value: string) => void,\n ) => TemplateResult,\n ctx: SignalsPanelCtx,\n) {\n const proto = def.$prototype;\n\n if (proto === \"Request\") {\n return html`\n ${signalFieldRow(\"URL\", def.url || \"\", (v: string) =>\n transactDoc(activeTab.value, (t) => mutateUpdateDef(t, name, { url: v })),\n )}\n ${pickerRow(\n \"Method\",\n [\"GET\", \"POST\", \"PUT\", \"DELETE\", \"PATCH\"],\n def.method || \"GET\",\n (v: string) => transactDoc(activeTab.value, (t) => mutateUpdateDef(t, name, { method: v })),\n )}\n ${pickerRow(\"Timing\", [\"client\", \"server\"], def.timing || \"client\", (v: string) =>\n transactDoc(activeTab.value, (t) => mutateUpdateDef(t, name, { timing: v })),\n )}\n `;\n }\n if (proto === \"LocalStorage\" || proto === \"SessionStorage\") {\n const defaultStr =\n def.default !== undefined && def.default !== null\n ? typeof def.default === \"object\"\n ? JSON.stringify(def.default, null, 2)\n : String(def.default)\n : \"\";\n return html`\n ${signalFieldRow(\"Key\", def.key || \"\", (v: string) =>\n transactDoc(activeTab.value, (t) => mutateUpdateDef(t, name, { key: v })),\n )}\n ${textareaRow(\"Default\", defaultStr, (v: string) => {\n try {\n transactDoc(activeTab.value, (t) => mutateUpdateDef(t, name, { default: JSON.parse(v) }));\n } catch {\n transactDoc(activeTab.value, (t) => mutateUpdateDef(t, name, { default: v }));\n }\n })}\n `;\n }\n if (proto === \"IndexedDB\") {\n return html`\n ${signalFieldRow(\"Database\", def.database || \"\", (v: string) =>\n transactDoc(activeTab.value, (t) => mutateUpdateDef(t, name, { database: v })),\n )}\n ${signalFieldRow(\"Store\", def.store || \"\", (v: string) =>\n transactDoc(activeTab.value, (t) => mutateUpdateDef(t, name, { store: v })),\n )}\n ${signalFieldRow(\"Version\", String(def.version || 1), (v: string) =>\n transactDoc(activeTab.value, (t) =>\n mutateUpdateDef(t, name, { version: Math.trunc(Number(v)) || 1 }),\n ),\n )}\n `;\n }\n if (proto === \"Cookie\") {\n return html`\n ${signalFieldRow(\"Cookie\", def.name || \"\", (v: string) =>\n transactDoc(activeTab.value, (t) => mutateUpdateDef(t, name, { name: v })),\n )}\n ${signalFieldRow(\"Default\", String(def.default || \"\"), (v: string) =>\n transactDoc(activeTab.value, (t) => mutateUpdateDef(t, name, { default: v })),\n )}\n `;\n }\n if (proto === \"Set\" || proto === \"Map\" || proto === \"FormData\") {\n const fieldName = proto === \"FormData\" ? \"fields\" : \"default\";\n const fieldLabel = proto === \"FormData\" ? \"Fields\" : \"Default\";\n const defaultStr =\n def.default !== undefined && def.default !== null\n ? JSON.stringify(def.default, null, 2)\n : proto === \"FormData\"\n ? JSON.stringify(def.fields || {}, null, 2)\n : \"\";\n return textareaRow(fieldLabel, defaultStr, (v: string) => {\n try {\n transactDoc(activeTab.value, (t) =>\n mutateUpdateDef(t, name, { [fieldName]: JSON.parse(v) as unknown }),\n );\n } catch {}\n });\n }\n // Schema-driven fallback\n return renderExternalPrototypeEditorTemplate(S, name, def, ctx);\n}\n\n/** Function fields for signal editor */\nfunction renderFunctionFields(\n S: SignalsPanelState,\n name: string,\n def: SignalDef,\n _textareaRow: (\n label: string,\n value: string,\n onChange: (value: string) => void,\n opts?: { minHeight?: string; mono?: boolean },\n ) => TemplateResult,\n ctx: SignalsPanelCtx,\n) {\n const descriptionField = signalFieldRow(\"Description\", def.description || \"\", (v: string) =>\n transactDoc(activeTab.value, (t) => mutateUpdateDef(t, name, { description: v || undefined })),\n );\n\n // Structured bodies (spec §20) are a body MODE of the function category, not a new entity:\n // \"Statements\" renders the statement-card editor over `body: JxStatement[]`; \"Code\" is the\n // Textarea/Monaco path over `body: string`. Switching modes replaces the body with the other\n // Representation's empty seed — an explicit mode change, nothing is converted.\n const bodyIsStatements = Array.isArray(def.body);\n const bodyModeToggle = html`\n <sp-action-group size=\"s\" compact class=\"body-mode-toggle\">\n <sp-action-button\n size=\"s\"\n class=\"body-mode-statements\"\n ?selected=${bodyIsStatements}\n @click=${() => {\n if (!bodyIsStatements) {\n transactDoc(activeTab.value, (t) => mutateUpdateDef(t, name, { body: [] }));\n ctx.renderLeftPanel();\n }\n }}\n >\n Statements\n </sp-action-button>\n <sp-action-button\n size=\"s\"\n class=\"body-mode-code\"\n ?selected=${!bodyIsStatements}\n @click=${() => {\n if (bodyIsStatements) {\n transactDoc(activeTab.value, (t) => mutateUpdateDef(t, name, { body: \"\" }));\n ctx.renderLeftPanel();\n }\n }}\n >\n Code\n </sp-action-button>\n </sp-action-group>\n `;\n\n const bodyField = def.$src\n ? html`\n ${signalFieldRow(\"Source\", def.$src || \"\", (v: string) =>\n transactDoc(activeTab.value, (t) => mutateUpdateDef(t, name, { $src: v || undefined })),\n )}\n ${signalFieldRow(\"Export\", def.$export || \"\", (v: string) =>\n transactDoc(activeTab.value, (t) =>\n mutateUpdateDef(t, name, { $export: v || undefined }),\n ),\n )}\n `\n : html`\n <div style=\"display:flex;align-items:center;gap:4px\">\n <span class=\"field-label\" style=\"flex:1\">Body</span>\n ${bodyModeToggle}\n ${\n bodyIsStatements\n ? nothing\n : html`\n <sp-action-button\n size=\"xs\"\n quiet\n title=\"Open in code editor\"\n @click=${() => {\n ctx.updateSession({\n ui: { editingFunction: { defName: name, type: \"def\" } },\n });\n ctx.renderCanvas();\n }}\n >\n <sp-icon-code slot=\"icon\"></sp-icon-code>\n </sp-action-button>\n `\n }\n </div>\n ${\n bodyIsStatements\n ? renderStatementEditor(\n def.body as JxStatement[],\n (next) => {\n transactDoc(activeTab.value, (t) =>\n mutateUpdateDef(t, name, { body: next as unknown as JsonValue }),\n );\n ctx.renderLeftPanel();\n },\n {\n allowEventRef: true,\n emits: def.emits ?? [],\n stateDefs: Object.keys(S.document.state || {}),\n stateEntries: S.document.state || {},\n },\n )\n : html`\n <textarea\n class=\"field-input\"\n style=\"min-height:60px;font-family:var(--font-mono);font-size:var(--spectrum-font-size-50, 11px)\"\n .value=${typeof def.body === \"string\" ? def.body : \"\"}\n @input=${(e: Event) => {\n const v = (e.target as HTMLInputElement).value;\n transactDoc(activeTab.value, (t) => mutateUpdateDef(t, name, { body: v }));\n }}\n ></textarea>\n `\n }\n `;\n\n return html`\n ${descriptionField} ${renderParameterEditorTemplate(S, name, def, ctx)}\n ${isCustomElementDoc(S) ? renderEmitsEditorTemplate(S, name, def) : nothing} ${bodyField}\n `;\n}\n\n// ─── CEM Editors ─────────────────────────────────────────────────────────────\n\n/** Render CEM parameter editor with basic/advanced toggle. */\nfunction renderParameterEditorTemplate(\n _S: SignalsPanelState,\n name: string,\n def: SignalDef,\n ctx: SignalsPanelCtx,\n) {\n const params = (def.parameters || []).map((p) => normParam(p));\n const isAdvanced = advancedParamOpen.has(name);\n\n if (!isAdvanced) {\n // Basic mode: name chips\n return renderFieldRow({\n hasValue: false,\n label: \"Parameters\",\n prop: \"parameters\",\n widget: html`\n <div style=\"display:flex;flex-wrap:wrap;gap:4px;align-items:center\">\n ${params.map(\n (p: CemParameter, i: number) => html`\n <span\n style=\"display:inline-flex;align-items:center;gap:2px;padding:1px 6px;border-radius:var(--radius);background:var(--hover-bg);font-size:var(--spectrum-font-size-50, 11px);font-family:var(--font-mono)\"\n >\n ${p.name || \"?\"}\n <span\n style=\"cursor:pointer;opacity:0.5;margin-left:2px\"\n @click=${() => {\n transactDoc(activeTab.value, (t) =>\n mutateUpdateDef(t, name, {\n parameters: params.some((_: unknown, j: number) => j !== i)\n ? params.filter((_: unknown, j: number) => j !== i)\n : undefined,\n }),\n );\n }}\n >×</span\n >\n </span>\n `,\n )}\n <input\n class=\"field-input\"\n style=\"width:60px;flex:0 0 auto;font-size:var(--spectrum-font-size-50, 11px)\"\n placeholder=\"+\"\n @keydown=${(e: KeyboardEvent) => {\n if (e.key === \"Enter\" && (e.target as HTMLInputElement).value.trim()) {\n transactDoc(activeTab.value, (t) =>\n mutateUpdateDef(t, name, {\n parameters: [...params, { name: (e.target as HTMLInputElement).value.trim() }],\n }),\n );\n }\n }}\n />\n </div>\n <span\n style=\"font-size:10px;color:var(--fg-dim);cursor:pointer;width:100%;margin-top:2px\"\n @click=${() => {\n advancedParamOpen.add(name);\n ctx.renderLeftPanel();\n }}\n >▸ Advanced</span\n >\n `,\n });\n }\n\n // Advanced mode: full rows\n return renderFieldRow({\n hasValue: false,\n label: \"Parameters\",\n prop: \"parameters\",\n widget: html`\n <div style=\"display:flex;flex-direction:column;gap:4px\">\n ${params.map(\n (p: CemParameter, i: number) => html`\n <div style=\"display:flex;gap:4px;align-items:center\">\n <input\n class=\"field-input\"\n .value=${p.name || \"\"}\n placeholder=\"name\"\n style=\"flex:1\"\n @change=${(e: Event) => {\n const next = [...params];\n next[i] = {\n ...next[i],\n name: (e.target as HTMLInputElement).value,\n };\n transactDoc(activeTab.value, (t) =>\n mutateUpdateDef(t, name, { parameters: next }),\n );\n }}\n />\n <input\n class=\"field-input\"\n .value=${cemTypeText(p.type)}\n placeholder=\"type\"\n style=\"flex:1\"\n @change=${(e: Event) => {\n const next = [...params];\n const val = (e.target as HTMLInputElement).value;\n const { type: _t, ...rest } = next[i]!;\n next[i] = val ? { ...rest, type: { text: val } } : rest;\n transactDoc(activeTab.value, (t) =>\n mutateUpdateDef(t, name, { parameters: next }),\n );\n }}\n />\n <input\n class=\"field-input\"\n .value=${p.description || \"\"}\n placeholder=\"desc\"\n style=\"flex:2\"\n @change=${(e: Event) => {\n const next = [...params];\n const val = (e.target as HTMLInputElement).value;\n const { description: _d, ...rest } = next[i]!;\n next[i] = val ? { ...rest, description: val } : rest;\n transactDoc(activeTab.value, (t) =>\n mutateUpdateDef(t, name, { parameters: next }),\n );\n }}\n />\n <input\n type=\"checkbox\"\n title=\"optional\"\n .checked=${Boolean(p.optional)}\n @change=${(e: Event) => {\n const next = [...params];\n const { checked } = e.target as HTMLInputElement;\n const { optional: _o, ...rest } = next[i]!;\n next[i] = checked ? { ...rest, optional: true } : rest;\n transactDoc(activeTab.value, (t) =>\n mutateUpdateDef(t, name, { parameters: next }),\n );\n }}\n />\n <span\n style=\"cursor:pointer;opacity:0.5\"\n @click=${() => {\n const next = params.filter((_: unknown, j: number) => j !== i);\n transactDoc(activeTab.value, (t) =>\n mutateUpdateDef(t, name, {\n parameters: next.length > 0 ? next : undefined,\n }),\n );\n }}\n >×</span\n >\n </div>\n `,\n )}\n <button\n class=\"kv-add\"\n @click=${() =>\n transactDoc(activeTab.value, (t) =>\n mutateUpdateDef(t, name, {\n parameters: [...params, { name: \"\" }],\n }),\n )}\n >\n + Add parameter\n </button>\n </div>\n <span\n style=\"font-size:10px;color:var(--fg-dim);cursor:pointer;width:100%;margin-top:2px\"\n @click=${() => {\n advancedParamOpen.delete(name);\n ctx.renderLeftPanel();\n }}\n >▾ Basic</span\n >\n `,\n });\n}\n\n/** Render CEM emits editor for function state entries. */\nfunction renderEmitsEditorTemplate(S: SignalsPanelState, name: string, def: SignalDef) {\n const emits = def.emits || ([] as CemEvent[]);\n if (emits.length === 0 && !isCustomElementDoc(S)) {\n return nothing;\n }\n\n return html`\n <div\n style=\"font-size:var(--spectrum-font-size-50, 11px);font-weight:600;color:var(--fg-dim);margin:8px 0 4px;text-transform:uppercase;letter-spacing:0.05em\"\n >\n Emits\n </div>\n ${emits.map(\n (ev: CemEvent, i: number) => html`\n <div style=\"display:flex;gap:4px;align-items:center;margin-bottom:4px\">\n <input\n class=\"field-input\"\n .value=${ev.name || \"\"}\n placeholder=\"event name\"\n style=\"flex:1\"\n @change=${(e: Event) => {\n const next = [...emits];\n next[i] = {\n ...next[i],\n name: (e.target as HTMLInputElement).value,\n };\n transactDoc(activeTab.value, (t) => mutateUpdateDef(t, name, { emits: next }));\n }}\n />\n <input\n class=\"field-input\"\n .value=${cemTypeText(ev.type)}\n placeholder=\"type\"\n style=\"flex:1\"\n @change=${(e: Event) => {\n const next = [...emits];\n const val = (e.target as HTMLInputElement).value;\n const { type: _t, ...rest } = next[i]!;\n next[i] = val ? { ...rest, type: { text: val } } : rest;\n transactDoc(activeTab.value, (t) => mutateUpdateDef(t, name, { emits: next }));\n }}\n />\n <input\n class=\"field-input\"\n .value=${ev.description || \"\"}\n placeholder=\"description\"\n style=\"flex:2\"\n @change=${(e: Event) => {\n const next = [...emits];\n const val = (e.target as HTMLInputElement).value;\n const { description: _d, ...rest } = next[i]!;\n next[i] = val ? { ...rest, description: val } : rest;\n transactDoc(activeTab.value, (t) => mutateUpdateDef(t, name, { emits: next }));\n }}\n />\n <span\n style=\"cursor:pointer;opacity:0.5\"\n @click=${() => {\n transactDoc(activeTab.value, (t) =>\n mutateUpdateDef(t, name, {\n emits: emits.some((_: unknown, j: number) => j !== i)\n ? emits.filter((_: unknown, j: number) => j !== i)\n : undefined,\n }),\n );\n }}\n >×</span\n >\n </div>\n `,\n )}\n <button\n class=\"kv-add\"\n @click=${() =>\n transactDoc(activeTab.value, (t) =>\n mutateUpdateDef(t, name, { emits: [...emits, { name: \"\" }] }),\n )}\n >\n + Add event\n </button>\n `;\n}\n\n// ─── Plugin schema-driven form rendering ────────────────────────────────────\n\n/**\n * Resolve a schema context pointer for signal config forms — a thin wrapper over the generic\n * `resolveContextPointer` making the content-type roots always-present (a missing section resolves\n * to `{}` → empty choices rather than a plain textfield): the parser's real descriptors point at\n * the `#/$context/content` root, while the deprecated `\"$contentTypes\"` string sentinel and the\n * legacy `#/$context/contentTypes` root keep resolving bit-for-bit for old class descriptors.\n *\n * @param {string} pointer\n * @param {Record<string, unknown>} [scope] - Parent def for `{@param}` substitution\n * @returns {unknown}\n */\nfunction resolveSignalsContextPointer(pointer: string, scope?: Record<string, unknown>): unknown {\n if (pointer === \"#/$context/content\") {\n return projectState?.projectConfig?.content ?? {};\n }\n if (pointer === \"$contentTypes\" || pointer === \"#/$context/contentTypes\") {\n return projectState?.projectConfig?.contentTypes ?? {};\n }\n return resolveContextPointer(pointer, {\n projectConfig: (projectState?.projectConfig ?? {}) as Record<string, unknown>,\n ...(scope !== undefined && { scope }),\n });\n}\n\n/**\n * Render a binding picker for a `{ $ref }` config value — route params derived from the document\n * path plus a free-form custom ref, with a switch back to a static value.\n */\nfunction renderBindingControl(opts: {\n refVal: string;\n params: string[];\n fieldKey: string;\n commit: (next: { $ref: string } | undefined) => void;\n rerender: (() => void) | undefined;\n}) {\n const paramRefs = opts.params.map((p) => `#/$params/${p}`);\n const isCustom =\n bindingCustomOpen.has(opts.fieldKey) ||\n (opts.refVal !== \"\" && !paramRefs.includes(opts.refVal));\n return html`\n <div style=\"display:flex;flex-direction:column;gap:4px\">\n <sp-picker\n size=\"s\"\n .value=${live(isCustom ? \"__custom__\" : opts.refVal || \"__static__\")}\n @change=${(e: Event) => {\n const v = (e.target as HTMLInputElement).value;\n if (v === \"__custom__\") {\n bindingCustomOpen.add(opts.fieldKey);\n opts.rerender?.();\n return;\n }\n bindingCustomOpen.delete(opts.fieldKey);\n opts.commit(v === \"__static__\" ? undefined : { $ref: v });\n opts.rerender?.();\n }}\n >\n <sp-menu-item value=\"__static__\">Static value</sp-menu-item>\n ${paramRefs.length > 0 ? html`<sp-menu-divider></sp-menu-divider>` : nothing}\n ${paramRefs.map((r) => html`<sp-menu-item value=${r}>${r.slice(2)}</sp-menu-item>`)}\n <sp-menu-divider></sp-menu-divider>\n <sp-menu-item value=\"__custom__\">Custom…</sp-menu-item>\n </sp-picker>\n ${\n isCustom\n ? html`<sp-textfield\n size=\"s\"\n placeholder=\"#/$params/…\"\n .value=${live(opts.refVal)}\n @change=${(e: Event) => {\n const v = (e.target as HTMLInputElement).value.trim();\n if (!v) {\n bindingCustomOpen.delete(opts.fieldKey);\n }\n opts.commit(v ? { $ref: v } : undefined);\n opts.rerender?.();\n }}\n ></sp-textfield>`\n : nothing\n }\n </div>\n `;\n}\n\n// The \"binding\" control registers here rather than in ui/form-controls.ts because it owns\n// Panel-local ephemeral UI state (bindingCustomOpen) and the route-param picker semantics.\nregisterFormControl(\"binding\", ({ key, value, onChange, ctx, rerender }) =>\n renderBindingControl({\n commit: onChange,\n fieldKey: `${ctx.fieldKeyPrefix ?? \"\"}.${key}`,\n params: ctx.params ?? [],\n refVal: isRef(value) ? value.$ref : \"\",\n rerender,\n }),\n);\n\n/**\n * Render config form fields from a JSON Schema `properties` object — a thin wrapper over the shared\n * schema-form engine. Skips studio-reserved keys, resolves enum/context refs against the project\n * config, and commits every patch through transactDoc/mutateUpdateDef.\n */\nexport function renderSchemaFieldsTemplate(\n schema: JsonSchema | null | undefined,\n def: SignalDef,\n name: string,\n S: SignalsPanelState,\n ctx: SignalsPanelCtx | null = null,\n) {\n if (!schema?.properties) {\n return nothing;\n }\n\n const properties = Object.fromEntries(\n Object.entries(schema.properties).filter(([prop]) => !STUDIO_RESERVED_KEYS.has(prop)),\n );\n\n return renderForm({ ...schema, properties }, def as Record<string, unknown>, {\n context: {\n fieldKeyPrefix: name,\n params: dynamicRouteParams(S.documentPath),\n resolvePointer: resolveSignalsContextPointer,\n },\n onChange: (patch) => transactDoc(activeTab.value, (t) => mutateUpdateDef(t, name, patch)),\n ...(ctx && { rerender: () => ctx.renderLeftPanel() }),\n });\n}\n\n/**\n * Render editor fields for an external $prototype + $src plugin. Shows $src/$export inputs plus\n * schema-driven config fields.\n */\nexport function renderExternalPrototypeEditorTemplate(\n S: SignalsPanelState,\n name: string,\n def: SignalDef,\n ctx: SignalsPanelCtx,\n) {\n // Schema-driven config fields (async with cache)\n let schemaContent: TemplateResult | typeof nothing = nothing;\n const importedPath = def.$prototype\n ? projectState?.projectConfig?.imports?.[def.$prototype]\n : null;\n const resolvedSrc = def.$src || importedPath;\n if (resolvedSrc && def.$prototype) {\n const cacheKey = `${resolvedSrc}::${def.$prototype}`;\n if (pluginSchemaCache.has(cacheKey)) {\n const schema = pluginSchemaCache.get(cacheKey);\n if (schema) {\n schemaContent = html`\n ${\n schema.description\n ? html`<div class=\"signal-hint\" style=\"padding:4px 0 8px\">${schema.description}</div>`\n : nothing\n }\n ${renderSchemaFieldsTemplate(schema as JsonSchema, def, name, S, ctx)}\n `;\n }\n } else {\n // Trigger async load — will re-render when cached\n schemaContent = html`<div\n style=\"padding:4px 0;font-size:var(--spectrum-font-size-50, 11px);color:var(--fg-dim);font-style:italic\"\n >\n Loading schema…\n </div>`;\n void fetchPluginSchema(def, {\n ...(S.documentPath != null && { documentPath: S.documentPath }),\n }).then((schema) => {\n if (schema) {\n ctx.renderLeftPanel();\n }\n });\n }\n }\n\n return html`\n ${\n importedPath\n ? html`<div\n class=\"signal-hint\"\n style=\"padding:4px 0 2px;font-size:var(--spectrum-font-size-50, 11px);color:var(--fg-dim)\"\n >\n ${def.$prototype}\n </div>`\n : html`\n ${signalFieldRow(\"Source\", def.$src || \"\", (v: string) => {\n transactDoc(activeTab.value, (t) =>\n mutateUpdateDef(t, name, { $src: v || undefined }),\n );\n pluginSchemaCache.delete(`${v}::${def.$prototype}`);\n })}\n ${signalFieldRow(\"Prototype\", def.$prototype || \"\", (v: string) => {\n transactDoc(activeTab.value, (t) =>\n mutateUpdateDef(t, name, { $prototype: v || undefined }),\n );\n pluginSchemaCache.delete(`${def.$src}::${v}`);\n })}\n `\n }\n ${\n def.$export\n ? signalFieldRow(\"Export\", def.$export || \"\", (v: string) =>\n transactDoc(activeTab.value, (t) =>\n mutateUpdateDef(t, name, { $export: v || undefined }),\n ),\n )\n : nothing\n }\n ${schemaContent}\n `;\n}\n",
108
- "/// <reference lib=\"dom\" />\n// ─── Convert to Repeater ──────────────────────────────────────────────────────\nimport { html, render as litRender, nothing } from \"lit-html\";\nimport { ref } from \"lit-html/directives/ref.js\";\nimport { childIndex, childList, getNodeAtPath, parentElementPath } from \"../store\";\nimport { activeTab } from \"../workspace/workspace\";\nimport { transactDoc } from \"../tabs/transact\";\nimport { showDialog } from \"../ui/layers\";\nimport { defCategory } from \"../panels/signals-panel\";\nimport { fetchPluginSchema } from \"../services/code-services\";\n\nimport type { JxMutableNode } from \"@jxsuite/schema/types\";\n\ninterface RepeaterConfig {\n items: { $ref: string } | unknown[];\n filter?: { $ref: string };\n sort?: { $ref: string };\n newDef?: { name: string };\n}\n\n/** Convert the currently selected element into a repeater template. */\nexport async function convertToRepeater() {\n const tab = activeTab.value;\n if (!tab?.session.selection || tab.session.selection.length < 2) {\n return;\n }\n\n const path = tab.session.selection;\n const node = getNodeAtPath(tab.doc.document, path);\n if (!node) {\n return;\n }\n\n const defs = tab.doc.document.state || {};\n const config = await promptRepeaterConfig(defs);\n if (!config) {\n return;\n }\n\n transactDoc(tab, (t) => {\n const doc = t.doc.document;\n if (config.newDef) {\n if (!doc.state) {\n doc.state = {};\n }\n doc.state[config.newDef.name] = { default: [], type: \"array\" };\n }\n const pp = parentElementPath(path);\n if (!pp) {\n return;\n }\n const idx = childIndex(path) as number;\n const parent = getNodeAtPath(doc, pp);\n if (!parent?.children) {\n return;\n }\n const element = childList(parent)[idx];\n\n const repeater: Record<string, unknown> = {\n $prototype: \"Array\",\n items: config.items,\n map: element,\n };\n if (config.filter) {\n repeater.filter = config.filter;\n }\n if (config.sort) {\n repeater.sort = config.sort;\n }\n\n // Replace the selected element in place with the array pseudo-element — no wrapper div. The\n // Repeated items render directly among the original parent's children.\n (parent.children as (string | JxMutableNode)[])[idx] = repeater as unknown as JxMutableNode;\n });\n}\n\n/**\n * @param {Record<string, unknown>} defs\n * @returns {Promise<RepeaterConfig | null>}\n */\nasync function promptRepeaterConfig(defs: Record<string, unknown>) {\n const arrayDefs = Object.entries(defs).filter(\n ([, d]) =>\n (d as Record<string, unknown> | null)?.type === \"array\" ||\n Array.isArray((d as Record<string, unknown> | null)?.default) ||\n (d as Record<string, unknown> | null)?.$prototype === \"Array\",\n );\n\n const tab = activeTab.value;\n const docPath = tab?.documentPath;\n for (const [name, d] of Object.entries(defs)) {\n const def = d as Record<string, unknown> | null;\n if (!def?.$prototype || def.$prototype === \"Function\" || def.$prototype === \"Array\") {\n continue;\n }\n if (arrayDefs.some(([n]) => n === name)) {\n continue;\n }\n const schema = await fetchPluginSchema(\n {\n ...(def.$src != null && { $src: def.$src as string }),\n $prototype: def.$prototype as string,\n },\n { ...(docPath != null && { documentPath: docPath }) },\n );\n if (schema?.returns?.type === \"array\") {\n arrayDefs.push([name, d]);\n }\n }\n\n const fnDefs = Object.entries(defs).filter(([, d]) => defCategory(d) === \"function\");\n\n let source = arrayDefs.length > 0 ? arrayDefs[0]![0] : \"__new__\";\n let newDefName = \"\";\n let filterDef = \"\";\n let sortDef = \"\";\n let error = \"\";\n\n return showDialog<RepeaterConfig | null>((done) => {\n function confirm() {\n if (source === \"__new__\") {\n const name = newDefName.trim();\n if (!name) {\n error = \"Enter a name for the new state definition.\";\n rerender();\n return;\n }\n if (defs[name]) {\n error = `\"${name}\" already exists.`;\n rerender();\n return;\n }\n if (!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(name)) {\n error = \"Invalid identifier name.\";\n rerender();\n return;\n }\n done({\n items: { $ref: `#/state/${name}` },\n ...(filterDef && { filter: { $ref: `#/state/${filterDef}` } }),\n ...(sortDef && { sort: { $ref: `#/state/${sortDef}` } }),\n newDef: { name },\n });\n } else {\n done({\n items: { $ref: `#/state/${source}` },\n ...(filterDef && { filter: { $ref: `#/state/${filterDef}` } }),\n ...(sortDef && { sort: { $ref: `#/state/${sortDef}` } }),\n });\n }\n }\n\n function rerender() {\n const layer = document.querySelector(\"#layer-dialog\");\n const slot = layer?.lastElementChild;\n if (slot) {\n litRender(buildTpl(), slot as HTMLElement);\n }\n }\n\n function buildTpl() {\n return html`\n <sp-dialog-wrapper\n open\n underlay\n headline=\"Repeat...\"\n confirm-label=\"Create Repeater\"\n cancel-label=\"Cancel\"\n size=\"s\"\n @confirm=${confirm}\n @cancel=${() => done(null)}\n @close=${() => done(null)}\n >\n <div style=\"display:flex;flex-direction:column;gap:12px\">\n <label>\n <sp-field-label size=\"s\">Items source</sp-field-label>\n <sp-picker\n label=\"Items source\"\n size=\"s\"\n .value=${source}\n @change=${(e: Event) => {\n source = (e.target as HTMLInputElement).value;\n error = \"\";\n rerender();\n }}\n >\n ${arrayDefs.map(\n ([name]) => html`<sp-menu-item value=${name}>${name}</sp-menu-item>`,\n )}\n <sp-menu-divider></sp-menu-divider>\n <sp-menu-item value=\"__new__\">Create new...</sp-menu-item>\n </sp-picker>\n </label>\n\n ${\n source === \"__new__\"\n ? html`\n <label>\n <sp-field-label size=\"s\">New definition name</sp-field-label>\n <sp-textfield\n size=\"s\"\n placeholder=\"myItems\"\n .value=${newDefName}\n ?invalid=${Boolean(error)}\n @input=${(e: Event) => {\n newDefName = (e.target as HTMLInputElement).value || \"\";\n error = \"\";\n rerender();\n }}\n @keydown=${(e: KeyboardEvent) => {\n if (e.key === \"Enter\") {\n confirm();\n }\n }}\n ${ref((el) => {\n if (el && source === \"__new__\") {\n requestAnimationFrame(() => (el as HTMLElement).focus());\n }\n })}\n >\n <sp-help-text slot=\"negative-help-text\">${error}</sp-help-text>\n </sp-textfield>\n </label>\n `\n : nothing\n }\n ${\n fnDefs.length > 0\n ? html`\n <label>\n <sp-field-label size=\"s\">Filter (optional)</sp-field-label>\n <sp-picker\n label=\"Filter\"\n size=\"s\"\n .value=${filterDef}\n @change=${(e: Event) => {\n filterDef = (e.target as HTMLInputElement).value;\n rerender();\n }}\n >\n <sp-menu-item value=\"\">None</sp-menu-item>\n ${fnDefs.map(\n ([name]) => html`<sp-menu-item value=${name}>${name}</sp-menu-item>`,\n )}\n </sp-picker>\n </label>\n <label>\n <sp-field-label size=\"s\">Sort (optional)</sp-field-label>\n <sp-picker\n label=\"Sort\"\n size=\"s\"\n .value=${sortDef}\n @change=${(e: Event) => {\n sortDef = (e.target as HTMLInputElement).value;\n rerender();\n }}\n >\n <sp-menu-item value=\"\">None</sp-menu-item>\n ${fnDefs.map(\n ([name]) => html`<sp-menu-item value=${name}>${name}</sp-menu-item>`,\n )}\n </sp-picker>\n </label>\n `\n : nothing\n }\n </div>\n </sp-dialog-wrapper>\n `;\n }\n\n return buildTpl();\n });\n}\n",
109
- "/// <reference lib=\"dom\" />\n// ─── Clipboard & Context Menu ─────────────────────────────────────────────────\nimport { html } from \"lit-html\";\nimport { jsonClone } from \"../utils/studio-utils\";\nimport { ref } from \"lit-html/directives/ref.js\";\nimport { htmlToJx } from \"@jxsuite/markup/html-to-jx\";\nimport { childIndex, getNodeAtPath, parentElementPath } from \"../store\";\nimport { activeTab, workspace } from \"../workspace/workspace\";\nimport {\n mutateDuplicateNode,\n mutateInsertNode,\n mutateRemoveNode,\n mutateReplaceStyle,\n mutateWrapNode,\n transactDoc,\n} from \"../tabs/transact\";\nimport { statusMessage } from \"../panels/statusbar\";\nimport { convertToComponent } from \"./convert-to-component\";\nimport { convertToRepeater } from \"./convert-to-repeater\";\nimport { componentRegistry } from \"../files/components\";\nimport { renderPopover } from \"../ui/layers\";\nimport { rectOf } from \"../utils/geometry\";\n\nimport type { JxPath } from \"../state\";\nimport type { JxMutableNode } from \"@jxsuite/schema/types\";\n\ntype JxNode = JxMutableNode;\n\n// ─── Clipboard helpers ───────────────────────────────────────────────────────\n\nconst JX_MIME = \"web application/jx+json\";\n\n/** @param {JxNode | string} node */\nfunction nodeToHtml(node: JxNode | string): string {\n if (typeof node === \"string\") {\n return node;\n }\n const tag = node.tagName || \"div\";\n let attrs = \"\";\n if (node.attributes) {\n for (const [k, v] of Object.entries(node.attributes)) {\n // Bound ($ref) attribute values have no static HTML representation — skip.\n if (typeof v === \"object\") {\n continue;\n }\n attrs += v === \"\" ? ` ${k}` : ` ${k}=\"${String(v).replaceAll('\"', \"&quot;\")}\"`;\n }\n }\n if (node.style) {\n const css = Object.entries(node.style)\n .map(([k, v]) => `${k}:${v}`)\n .join(\";\");\n if (css) {\n attrs += ` style=\"${css.replaceAll('\"', \"&quot;\")}\"`;\n }\n }\n let inner = \"\";\n if (typeof node.textContent === \"string\") {\n inner = node.textContent;\n } else if (Array.isArray(node.children)) {\n inner = node.children.map((c) => nodeToHtml(c)).join(\"\");\n }\n return `<${tag}${attrs}>${inner}</${tag}>`;\n}\n\n/**\n * Write a Jx node to the system clipboard with both jx+json and text/html types.\n *\n * @param {object} json\n */\nasync function writeToClipboard(json: Record<string, unknown>) {\n workspace.clipboard = json;\n try {\n const jxBlob = new Blob([JSON.stringify(json)], { type: JX_MIME });\n const htmlBlob = new Blob([nodeToHtml(json)], { type: \"text/html\" });\n await navigator.clipboard.write([\n new ClipboardItem({\n [JX_MIME]: jxBlob,\n \"text/html\": htmlBlob,\n }),\n ]);\n } catch {\n // Fallback: write as plain text if custom MIME not supported\n try {\n await navigator.clipboard.writeText(JSON.stringify(json));\n } catch {\n // Clipboard API unavailable — workspace.clipboard is the fallback\n }\n }\n}\n\n/**\n * Read from the system clipboard. Returns Jx node(s) or null.\n *\n * @returns {Promise<JxNode[] | null>}\n */\nasync function readFromClipboard() {\n try {\n const items = await navigator.clipboard.read();\n for (const item of items) {\n if (item.types.includes(JX_MIME)) {\n const blob = await item.getType(JX_MIME);\n const json = JSON.parse(await blob.text()) as JxNode;\n return [json];\n }\n if (item.types.includes(\"text/html\")) {\n const blob = await item.getType(\"text/html\");\n const htmlStr = await blob.text();\n const nodes = htmlToJx(htmlStr);\n const jxNodes = nodes.map((n) =>\n typeof n === \"string\" ? { tagName: \"p\", textContent: n } : n,\n ) as JxNode[];\n if (jxNodes.length > 0) {\n return jxNodes;\n }\n }\n if (item.types.includes(\"text/plain\")) {\n const blob = await item.getType(\"text/plain\");\n const text = await blob.text();\n // Try parsing as Jx JSON\n try {\n const parsed = JSON.parse(text) as JxNode;\n if (parsed && parsed.tagName) {\n return [parsed];\n }\n } catch {\n // Plain text → paragraph node\n }\n if (text.trim()) {\n return [{ tagName: \"p\", textContent: text.trim() }];\n }\n }\n }\n } catch {\n // Clipboard API unavailable — use workspace fallback\n if (workspace.clipboard) {\n return [jsonClone(workspace.clipboard)];\n }\n }\n return null;\n}\n\n// ─── Clipboard actions ───────────────────────────────────────────────────────\n\nexport async function copyNode() {\n const tab = activeTab.value;\n if (!tab?.session.selection) {\n return;\n }\n const node = getNodeAtPath(tab.doc.document, tab.session.selection);\n if (!node) {\n return;\n }\n const json = jsonClone(node);\n await writeToClipboard(json);\n statusMessage(\"Copied\");\n}\n\nexport async function cutNode() {\n const tab = activeTab.value;\n if (!tab?.session.selection || tab.session.selection.length < 2) {\n return;\n }\n const sel = tab.session.selection;\n const node = getNodeAtPath(tab.doc.document, sel);\n if (!node) {\n return;\n }\n const json = jsonClone(node);\n await writeToClipboard(json);\n transactDoc(tab, (t) => mutateRemoveNode(t, sel));\n statusMessage(\"Cut\");\n}\n\nexport async function pasteNode() {\n const tab = activeTab.value;\n if (!tab) {\n return;\n }\n\n const nodes = await readFromClipboard();\n if (!nodes || nodes.length === 0) {\n return;\n }\n\n const pPath = tab.session.selection || [];\n const parent = getNodeAtPath(tab.doc.document, pPath);\n if (!parent) {\n return;\n }\n\n if (tab.session.selection && tab.session.selection.length >= 2) {\n const pp = parentElementPath(tab.session.selection) as JxPath;\n const idx = childIndex(tab.session.selection) as number;\n transactDoc(tab, (t) => {\n for (let i = 0; i < nodes.length; i++) {\n mutateInsertNode(t, pp, idx + 1 + i, nodes[i]!);\n }\n });\n } else {\n const idx = Array.isArray(parent.children) ? parent.children.length : 0;\n transactDoc(tab, (t) => {\n for (let i = 0; i < nodes.length; i++) {\n mutateInsertNode(t, pPath, idx + i, nodes[i]!);\n }\n });\n }\n statusMessage(\"Pasted\");\n}\n\nexport function copyStyles() {\n const tab = activeTab.value;\n if (!tab?.session.selection) {\n return;\n }\n const node = getNodeAtPath(tab.doc.document, tab.session.selection);\n if (!node?.style) {\n return;\n }\n workspace.styleClipboard = jsonClone(node.style);\n statusMessage(\"Styles copied\");\n}\n\nexport function pasteStyles() {\n if (!workspace.styleClipboard) {\n return;\n }\n const tab = activeTab.value;\n if (!tab?.session.selection) {\n return;\n }\n const style = jsonClone(workspace.styleClipboard);\n const sel = tab.session.selection as JxPath;\n transactDoc(tab, (t) => mutateReplaceStyle(t, sel, style));\n statusMessage(\"Styles pasted\");\n}\n\n// ─── Context menu ─────────────────────────────────────────────────────────────\n\nlet _ctxHandle: ReturnType<typeof renderPopover> | null = null;\n\n/** Dismiss the context menu if open. */\nexport function dismissContextMenu() {\n if (_ctxHandle) {\n _ctxHandle.dismiss();\n _ctxHandle = null;\n }\n}\n\n/**\n * @param {MouseEvent} e\n * @param {JxPath} path\n * @param {{ onEditComponent?: (path: string) => void; rerender?: () => void }} [opts]\n */\nexport function showContextMenu(\n e: MouseEvent,\n path: JxPath,\n opts: {\n onEditComponent?: (path: string) => void;\n rerender?: () => void;\n } = {},\n) {\n e.preventDefault();\n dismissContextMenu();\n\n const tab = activeTab.value;\n if (!tab) {\n return;\n }\n const node = getNodeAtPath(tab.doc.document, path);\n if (!node) {\n return;\n }\n\n // Select the node\n tab.session.selection = path;\n\n // Index-based structural actions (cut/duplicate/insert/wrap/delete) require a numeric child\n // Index. Repeater templates (path tail \"map\") and the document root don't have one — they get\n // Copy only — so we never splice with a non-numeric index.\n const idxIsNumber = typeof childIndex(path) === \"number\";\n\n const items: { label: string; action?: () => void | Promise<void>; danger?: boolean }[] = [\n { action: () => copyNode(), label: \"Copy\" },\n ];\n\n if (path.length >= 2 && idxIsNumber) {\n items.push(\n { action: () => cutNode(), label: \"Cut\" },\n {\n action: () => transactDoc(activeTab.value, (t) => mutateDuplicateNode(t, path)),\n label: \"Duplicate\",\n },\n );\n if (node.style) {\n const nodeStyle = node.style;\n items.push({\n action: () => {\n workspace.styleClipboard = jsonClone(nodeStyle);\n statusMessage(\"Styles copied\");\n },\n label: \"Copy styles\",\n });\n }\n if (workspace.styleClipboard) {\n items.push({\n action: () => {\n if (!workspace.styleClipboard) {\n return;\n }\n const style = jsonClone(workspace.styleClipboard);\n transactDoc(activeTab.value, (t) => mutateReplaceStyle(t, path, style));\n statusMessage(\"Styles pasted\");\n },\n label: \"Paste styles\",\n });\n }\n // Separator\n items.push(\n { label: \"—\" },\n {\n action: () => {\n const pp = parentElementPath(path) as JxPath;\n const idx = childIndex(path) as number;\n transactDoc(activeTab.value, (t) =>\n mutateInsertNode(t, pp, idx, { children: [], tagName: \"p\" }),\n );\n },\n label: \"Insert before\",\n },\n {\n action: () => {\n const pp = parentElementPath(path) as JxPath;\n const idx = childIndex(path) as number;\n transactDoc(activeTab.value, (t) =>\n mutateInsertNode(t, pp, idx + 1, { children: [], tagName: \"p\" }),\n );\n },\n label: \"Insert after\",\n },\n {\n action: () => transactDoc(activeTab.value, (t) => mutateWrapNode(t, path)),\n label: \"Wrap in Div\",\n },\n );\n // Don't offer Repeat on a repeater template (path tail \"map\") or on an array node itself.\n if (path.at(-1) !== \"map\" && (node as JxMutableNode).$prototype !== \"Array\") {\n items.push({\n action: () => convertToRepeater(),\n label: \"Repeat...\",\n });\n }\n items.push({\n action: async () => {\n if (opts.rerender) {\n // Lazy import breaks the context-menu ↔ layers-panel module cycle\n const { startLayerTitleEdit } = await import(\"../panels/layers-panel\");\n startLayerTitleEdit(path, opts.rerender);\n }\n },\n label: \"Set Title\",\n });\n if (node.tagName) {\n const isComponent =\n node.tagName.includes(\"-\") &&\n componentRegistry.some(\n (/** @type {{ tagName: string }} */ c) => c.tagName === node.tagName,\n );\n if (isComponent && opts.onEditComponent) {\n const comp = componentRegistry.find(\n (/** @type {{ tagName: string; path: string }} */ c) => c.tagName === node.tagName,\n );\n items.push({\n action: () => opts.onEditComponent?.(comp?.path as string),\n label: \"Edit Component\",\n });\n } else if (!isComponent) {\n items.push({\n action: () => convertToComponent(),\n label: \"Convert to Component\",\n });\n }\n }\n // Separator\n items.push(\n { label: \"—\" },\n {\n action: () => transactDoc(activeTab.value, (t) => mutateRemoveNode(t, path)),\n danger: true,\n label: \"Delete\",\n },\n );\n }\n // Paste targets — never into/after an array node (its content is the single map template).\n if (path.length >= 2 && (node as JxMutableNode).$prototype !== \"Array\") {\n items.push(\n { label: \"—\" },\n {\n action: async () => {\n const nodes = await readFromClipboard();\n if (!nodes || nodes.length === 0) {\n return;\n }\n const idx = Array.isArray(node.children) ? node.children.length : 0;\n transactDoc(activeTab.value, (t) => {\n for (let i = 0; i < nodes.length; i++) {\n mutateInsertNode(t, path, idx + i, nodes[i]!);\n }\n });\n statusMessage(\"Pasted\");\n },\n label: \"Paste inside\",\n },\n );\n if (idxIsNumber) {\n items.push({\n action: async () => {\n const nodes = await readFromClipboard();\n if (!nodes || nodes.length === 0) {\n return;\n }\n const pp = parentElementPath(path) as JxPath;\n const idx = childIndex(path) as number;\n transactDoc(activeTab.value, (t) => {\n for (let i = 0; i < nodes.length; i++) {\n mutateInsertNode(t, pp, idx + 1 + i, nodes[i]!);\n }\n });\n statusMessage(\"Pasted\");\n },\n label: \"Paste after\",\n });\n }\n }\n\n let x = e.clientX,\n y = e.clientY;\n\n _ctxHandle = renderPopover(\n html`<sp-popover\n open\n style=\"position:fixed;z-index:10000;left:${x}px;top:${y}px\"\n ${ref((el) => {\n if (!el) {\n return;\n }\n requestAnimationFrame(() => {\n const popover = el as HTMLElement;\n const menuRect = rectOf(popover);\n if (x + menuRect.width > window.innerWidth) {\n x = window.innerWidth - menuRect.width - 4;\n }\n if (y + menuRect.height > window.innerHeight) {\n y = window.innerHeight - menuRect.height - 4;\n }\n popover.style.left = `${x}px`;\n popover.style.top = `${y}px`;\n });\n })}\n >\n <sp-menu>\n ${items.map((item) =>\n item.label === \"—\"\n ? html`<sp-menu-divider></sp-menu-divider>`\n : html`<sp-menu-item\n style=${item.danger ? \"color: var(--danger)\" : \"\"}\n @click=${() => {\n dismissContextMenu();\n void item.action?.();\n }}\n >${item.label}</sp-menu-item\n >`,\n )}\n </sp-menu>\n </sp-popover>`,\n {\n dismissOnOutsideClick: true,\n onDismiss: () => {\n _ctxHandle = null;\n },\n },\n );\n}\n",
110
- "/// <reference lib=\"dom\" />\n/**\n * Layers panel — document tree view showing element hierarchy with collapse, selection, move\n * actions, and drag-and-drop reordering.\n */\n\nimport { html, nothing } from \"lit-html\";\nimport { classMap } from \"lit-html/directives/class-map.js\";\nimport { ifDefined } from \"lit-html/directives/if-defined.js\";\nimport { repeat } from \"lit-html/directives/repeat.js\";\nimport {\n VOID_ELEMENTS,\n childIndex,\n childList,\n flattenTree,\n getNodeAtPath,\n nodeLabel,\n parentElementPath,\n pathKey,\n pathsEqual,\n} from \"../store\";\nimport { activeTab } from \"../workspace/workspace\";\nimport type { JxPath } from \"../state\";\nimport type { JxMutableNode } from \"@jxsuite/schema/types\";\nimport {\n mutateMoveNode,\n mutateRemoveNode,\n mutateUpdateProperty,\n transactDoc,\n} from \"../tabs/transact\";\nimport { view } from \"../view\";\nimport { isInlineElement } from \"../editor/inline-edit\";\nimport { showContextMenu } from \"../editor/context-menu\";\nimport { panToElement } from \"../canvas/canvas-utils\";\nimport type { TemplateResult } from \"lit-html\";\n\n/**\n * Start inline title editing on a layer row.\n *\n * @param {JxPath} path\n * @param {() => void} rerender\n */\nexport function startLayerTitleEdit(path: JxPath, rerender: () => void) {\n const key = pathKey(path);\n const row = document.querySelector(`.layer-row[data-path=\"${key}\"]`);\n if (!row) {\n return;\n }\n const label = row.querySelector(\".layer-label\") as HTMLElement | null;\n if (!label) {\n return;\n }\n\n const tab = activeTab.value;\n if (!tab) {\n return;\n }\n const node = getNodeAtPath(tab.doc.document, path);\n if (!node) {\n return;\n }\n\n label.style.display = \"none\";\n const input = document.createElement(\"input\");\n input.className = \"layer-title-input\";\n input.value = node.$title || \"\";\n const { $title: _, ...nodeWithoutTitle } = node;\n input.placeholder = nodeLabel(nodeWithoutTitle);\n label.after(input);\n input.focus();\n input.select();\n\n let committed = false;\n const cleanup = () => {\n input.remove();\n label.style.display = \"\";\n };\n const commit = () => {\n if (committed) {\n return;\n }\n committed = true;\n cleanup();\n const val = input.value.trim();\n transactDoc(tab, (t) => mutateUpdateProperty(t, path, \"$title\", val || undefined));\n rerender();\n };\n const cancel = () => {\n if (committed) {\n return;\n }\n committed = true;\n cleanup();\n rerender();\n };\n input.addEventListener(\"blur\", commit);\n input.addEventListener(\"keydown\", (e: KeyboardEvent) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n input.blur();\n }\n if (e.key === \"Escape\") {\n e.preventDefault();\n cancel();\n }\n });\n}\n\n/**\n * @param {{ navigateToComponent: (path: string) => void; rerender: () => void }} ctx\n * @returns {import(\"lit-html\").TemplateResult}\n */\nexport function renderLayersTemplate(ctx: {\n navigateToComponent: (path: string) => void;\n rerender: () => void;\n}) {\n const tab = activeTab.value;\n\n for (const fn of view.dndCleanups) {\n fn();\n }\n view.dndCleanups = [];\n\n const rows = flattenTree(tab!.doc.document);\n const collapsed = (view._layersCollapsed ||= new Set());\n\n const layerRows: { key: string; tpl: TemplateResult }[] = [];\n // Rows arrive in pre-order, so \"is any ancestor collapsed?\" is a running depth comparison rather\n // Than a per-row walk back up the path. The old form did `path.slice(0, d)` + `pathKey(sub)` for\n // Every ancestor of every row — O(depth) array copies and string joins per row, on every render.\n let collapsedAtDepth: number | null = null;\n for (const { node, path, depth, nodeType } of rows) {\n if (collapsedAtDepth !== null && depth > collapsedAtDepth) {\n continue;\n }\n // Back at or above the collapsed ancestor's depth: it no longer covers this row.\n collapsedAtDepth = null;\n const rowKey = pathKey(path);\n if (collapsed.has(rowKey)) {\n collapsedAtDepth = depth;\n }\n\n if (tab?.doc.mode === \"content\" && path.length === 0) {\n continue;\n }\n\n if (nodeType === \"text\") {\n const textPreview = String(node).length > 40 ? `${String(node).slice(0, 40)}…` : String(node);\n layerRows.push({\n key: rowKey,\n tpl: html`\n <div\n class=\"layer-row\"\n style=\"padding-left:${depth * 16 + 8}px; opacity: 0.6; font-style: italic;\"\n >\n <span\n class=\"layer-tag\"\n style=\"background: var(--spectrum-gray-500, #64748b); font-size: 0.65rem;\"\n >text</span\n >\n <span class=\"layer-label\">${textPreview}</span>\n </div>\n `,\n });\n continue;\n }\n\n // After text-node skip, node is guaranteed to be JxMutableNode (not a primitive)\n if (typeof node !== \"object\" || node === null) {\n continue;\n }\n const jxNode: JxMutableNode = node as JxMutableNode;\n\n if (path.length >= 2 && nodeType === \"element\") {\n const pPath = parentElementPath(path);\n const parentNode = pPath ? getNodeAtPath(tab!.doc.document, pPath) : null;\n if (parentNode && isInlineElement(jxNode, parentNode)) {\n continue;\n }\n }\n\n const key = rowKey;\n const isSelected = pathsEqual(path, tab!.session.selection);\n const hasChildren = Array.isArray(jxNode.children) && jxNode.children.length > 0;\n const hasMapChildren =\n jxNode.children &&\n typeof jxNode.children === \"object\" &&\n (jxNode.children as unknown as Record<string, unknown>).$prototype === \"Array\";\n const hasCases =\n jxNode.$switch &&\n jxNode.cases &&\n typeof jxNode.cases === \"object\" &&\n Object.keys(jxNode.cases).length > 0;\n const isExpandable =\n hasChildren || hasMapChildren || hasCases || (nodeType === \"map\" && jxNode.map);\n // Array nodes can't accept dropped children (their content is the single map template), so they\n // Block the make-child drop instruction like void elements do.\n const isVoidEl =\n VOID_ELEMENTS.has((jxNode.tagName || \"div\").toLowerCase()) || nodeType === \"map\";\n\n /** @type {string} */\n let badgeClass;\n /** @type {string | number} */\n let badgeText;\n /** @type {string | undefined} */\n let badgeTitle;\n if (nodeType === \"map\") {\n badgeClass = \"layer-tag map-tag\";\n badgeText = \"↻\";\n badgeTitle = \"Repeater (mapped array)\";\n } else if (nodeType === \"case\" || nodeType === \"case-ref\") {\n badgeClass = \"layer-tag case-tag\";\n badgeText = path.at(-1);\n badgeTitle = `$switch case: ${path.at(-1)}`;\n } else if (jxNode.$switch) {\n badgeClass = \"layer-tag switch-tag\";\n badgeText = \"⇄\";\n badgeTitle = \"$switch\";\n } else if (jxNode.tagName === \"slot\") {\n const slotName = jxNode.attributes?.name;\n badgeClass = \"layer-tag slot-tag\";\n badgeText = \"▣\";\n badgeTitle =\n typeof slotName === \"string\" && slotName.trim()\n ? `Slot \"${slotName.trim()}\"`\n : \"Default slot\";\n } else {\n badgeClass = \"layer-tag\";\n badgeText = jxNode.tagName || \"div\";\n badgeTitle = undefined;\n }\n\n /** @type {string} */\n let labelText;\n /** @type {boolean} */\n let labelItalic;\n if (nodeType === \"case-ref\") {\n labelText = jxNode.$ref || \"external\";\n labelItalic = true;\n } else {\n labelText = nodeLabel(jxNode);\n labelItalic = false;\n }\n\n // Array (repeater) nodes are first-class structural nodes — movable/draggable/deletable like\n // Elements. Both sit at a numeric child index; templates (path tail \"map\") and case nodes do\n // Not, so they stay selectable/editable but not structurally manipulable.\n const isStructural =\n (nodeType === \"element\" || nodeType === \"map\") && typeof childIndex(path) === \"number\";\n const isRoot = tab?.doc.mode === \"content\" ? path.length === 0 : path.length < 2;\n const idx = isStructural ? (childIndex(path) as number) : 0;\n const parentPath = isStructural && !isRoot ? (parentElementPath(path) as JxPath) : null;\n const parentNode = parentPath ? getNodeAtPath(tab!.doc.document, parentPath) : null;\n const siblingCount = childList(parentNode).length;\n const canMoveUp = isStructural && !isRoot && idx > 0;\n const canMoveDown = isStructural && !isRoot && idx < siblingCount - 1;\n const prevSibling = canMoveUp && parentNode ? childList(parentNode)[idx - 1] : null;\n const prevIsContainer = (() => {\n if (!prevSibling || typeof prevSibling !== \"object\") {\n return false;\n }\n if (VOID_ELEMENTS.has((prevSibling.tagName || \"div\").toLowerCase())) {\n return false;\n }\n const ch = prevSibling.children;\n if (!ch) {\n return false;\n }\n if (\n typeof ch === \"object\" &&\n (ch as unknown as Record<string, unknown>).$prototype === \"Array\"\n ) {\n return true;\n }\n if (!Array.isArray(ch)) {\n return false;\n }\n if (ch.length === 0) {\n return true;\n }\n return ch.some(\n (c) => typeof c === \"object\" && c !== null && !isInlineElement(c, prevSibling),\n );\n })();\n const canMoveIn = isStructural && !isRoot && prevIsContainer;\n const grandparentPath =\n isStructural && parentPath && parentPath.length >= 2\n ? (parentElementPath(parentPath) as JxPath)\n : null;\n const canMoveOut = isStructural && !isRoot && Boolean(grandparentPath);\n\n layerRows.push({\n key,\n tpl: html`\n <div\n class=${classMap({ \"layer-row\": true, selected: isSelected })}\n data-path=${key}\n data-dnd-row=${isStructural ? key : nothing}\n data-dnd-depth=${isStructural ? depth : nothing}\n data-dnd-void=${isStructural && isVoidEl ? \"\" : nothing}\n data-dnd-expanded=${isStructural && isExpandable && !collapsed.has(key) ? \"\" : nothing}\n @click=${() => {\n activeTab.value!.session.selection = path;\n panToElement(path);\n }}\n @dblclick=${\n isStructural\n ? (e: MouseEvent) => {\n e.stopPropagation();\n startLayerTitleEdit(path, ctx.rerender);\n }\n : nothing\n }\n @contextmenu=${\n isStructural\n ? (e: MouseEvent) =>\n showContextMenu(e, path, {\n onEditComponent: ctx.navigateToComponent,\n rerender: ctx.rerender,\n })\n : nothing\n }\n >\n <span class=\"layer-indent\" style=\"width:${depth * 16}px\"></span>\n <span class=\"layer-toggle\"\n >${\n isExpandable\n ? html`\n ${\n collapsed.has(key)\n ? html`<sp-icon-chevron-right></sp-icon-chevron-right>`\n : html`<sp-icon-chevron-down></sp-icon-chevron-down>`\n }\n `\n : nothing\n }</span\n >\n <span class=${badgeClass} title=${ifDefined(badgeTitle ?? undefined)}>${badgeText}</span>\n <span class=\"layer-label\" style=${labelItalic ? \"font-style:italic\" : nothing}\n >${labelText}</span\n >\n ${\n isStructural && !isRoot\n ? html`<span class=\"layer-drag-handle\" title=\"Drag to reorder\">⠿</span>`\n : nothing\n }\n ${\n isStructural && !isRoot && isSelected\n ? html`\n <span class=\"layer-actions\">\n ${\n canMoveUp\n ? html`<sp-action-button\n quiet\n size=\"xs\"\n title=\"Move up\"\n @click=${(e: MouseEvent) => {\n e.stopPropagation();\n (e.currentTarget as HTMLElement).blur();\n const pp = parentPath as JxPath;\n transactDoc(activeTab.value!, (t) =>\n mutateMoveNode(t, path, pp, idx - 1),\n );\n }}\n >\n <sp-icon-arrow-up slot=\"icon\"></sp-icon-arrow-up>\n </sp-action-button>`\n : nothing\n }\n ${\n canMoveDown\n ? html`<sp-action-button\n quiet\n size=\"xs\"\n title=\"Move down\"\n @click=${(e: MouseEvent) => {\n e.stopPropagation();\n (e.currentTarget as HTMLElement).blur();\n const pp = parentPath as JxPath;\n transactDoc(activeTab.value!, (t) =>\n mutateMoveNode(t, path, pp, idx + 2),\n );\n }}\n >\n <sp-icon-arrow-down slot=\"icon\"></sp-icon-arrow-down>\n </sp-action-button>`\n : nothing\n }\n ${\n canMoveIn\n ? html`<sp-action-button\n quiet\n size=\"xs\"\n title=\"Move into previous sibling\"\n @click=${(e: MouseEvent) => {\n e.stopPropagation();\n (e.currentTarget as HTMLElement).blur();\n const pp = parentPath as JxPath;\n const prevPath = [...pp, \"children\", idx - 1];\n const prev = getNodeAtPath(activeTab.value!.doc.document, prevPath);\n const len = childList(prev).length;\n transactDoc(activeTab.value!, (t) =>\n mutateMoveNode(t, path, prevPath, len),\n );\n }}\n >\n <sp-icon-arrow-right slot=\"icon\"></sp-icon-arrow-right>\n </sp-action-button>`\n : nothing\n }\n ${\n canMoveOut\n ? html`<sp-action-button\n quiet\n size=\"xs\"\n title=\"Move out of parent\"\n @click=${(e: MouseEvent) => {\n e.stopPropagation();\n (e.currentTarget as HTMLElement).blur();\n const gp = grandparentPath as JxPath;\n const parentIdx = childIndex(parentPath!) as number;\n transactDoc(activeTab.value!, (t) =>\n mutateMoveNode(t, path, gp, parentIdx + 1),\n );\n }}\n >\n <sp-icon-arrow-left slot=\"icon\"></sp-icon-arrow-left>\n </sp-action-button>`\n : nothing\n }\n <sp-action-button\n quiet\n size=\"xs\"\n class=\"layer-delete\"\n title=\"Delete\"\n @click=${(e: MouseEvent) => {\n e.stopPropagation();\n transactDoc(activeTab.value!, (t) => mutateRemoveNode(t, path));\n }}\n >\n <sp-icon-close slot=\"icon\"></sp-icon-close>\n </sp-action-button>\n </span>\n `\n : nothing\n }\n </div>\n `,\n });\n }\n\n return html`\n <div class=\"layers-container\" style=\"position:relative\">\n <div\n class=\"layers-tree\"\n @click=${(e: MouseEvent) => {\n const toggle = (e.target as HTMLElement).closest(\".layer-toggle\");\n if (!toggle) {\n return;\n }\n e.stopPropagation();\n const row = toggle.closest(\".layer-row\");\n if (!row) {\n return;\n }\n const key = (row as HTMLElement).dataset.path;\n if (!key) {\n return;\n }\n if (collapsed.has(key)) {\n collapsed.delete(key);\n } else {\n collapsed.add(key);\n }\n ctx.rerender();\n }}\n >\n ${repeat(\n layerRows,\n (r) => r.key,\n (r) => r.tpl,\n )}\n </div>\n </div>\n `;\n}\n"
111
- ],
112
- "mappings": "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",
113
- "debugId": "2FA821B986766A9864756E2164756E21",
114
- "names": []
115
- }