@mrintel/villain-ui 0.1.0 → 0.2.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 (644) hide show
  1. package/README.md +171 -6
  2. package/dist/index.css +1 -1
  3. package/dist/index.d.ts +175 -18
  4. package/dist/index.js +2801 -10586
  5. package/package.json +2 -11
  6. package/dist/abap-Y8Dl9g_6.js +0 -7
  7. package/dist/abap-Y8Dl9g_6.js.map +0 -1
  8. package/dist/actionscript-3-DZzbMeqX.js +0 -7
  9. package/dist/actionscript-3-DZzbMeqX.js.map +0 -1
  10. package/dist/ada-vP6ak0IW.js +0 -7
  11. package/dist/ada-vP6ak0IW.js.map +0 -1
  12. package/dist/andromeeda-BIpZ7gaU.js +0 -5
  13. package/dist/andromeeda-BIpZ7gaU.js.map +0 -1
  14. package/dist/angular-html-DPB4Rf0C.js +0 -33
  15. package/dist/angular-html-DPB4Rf0C.js.map +0 -1
  16. package/dist/angular-ts-CTOR2ofC.js +0 -22
  17. package/dist/angular-ts-CTOR2ofC.js.map +0 -1
  18. package/dist/apache-BUjz-sD2.js +0 -7
  19. package/dist/apache-BUjz-sD2.js.map +0 -1
  20. package/dist/apex-oLhhs58q.js +0 -7
  21. package/dist/apex-oLhhs58q.js.map +0 -1
  22. package/dist/apl-CjNiDgad.js +0 -17
  23. package/dist/apl-CjNiDgad.js.map +0 -1
  24. package/dist/applescript-BPx7YFFu.js +0 -7
  25. package/dist/applescript-BPx7YFFu.js.map +0 -1
  26. package/dist/ara-Z2fSOxSw.js +0 -7
  27. package/dist/ara-Z2fSOxSw.js.map +0 -1
  28. package/dist/asciidoc-B-pCoB3G.js +0 -7
  29. package/dist/asciidoc-B-pCoB3G.js.map +0 -1
  30. package/dist/asm-BTWLY5ym.js +0 -7
  31. package/dist/asm-BTWLY5ym.js.map +0 -1
  32. package/dist/astro-CFFExE8Q.js +0 -19
  33. package/dist/astro-CFFExE8Q.js.map +0 -1
  34. package/dist/aurora-x-BwoVEUWZ.js +0 -5
  35. package/dist/aurora-x-BwoVEUWZ.js.map +0 -1
  36. package/dist/awk-Fb0P9dkn.js +0 -7
  37. package/dist/awk-Fb0P9dkn.js.map +0 -1
  38. package/dist/ayu-dark-CxPZkpb2.js +0 -5
  39. package/dist/ayu-dark-CxPZkpb2.js.map +0 -1
  40. package/dist/ballerina-oZK-YekG.js +0 -7
  41. package/dist/ballerina-oZK-YekG.js.map +0 -1
  42. package/dist/bat-0FvbqU9S.js +0 -7
  43. package/dist/bat-0FvbqU9S.js.map +0 -1
  44. package/dist/beancount-DqJEb89h.js +0 -7
  45. package/dist/beancount-DqJEb89h.js.map +0 -1
  46. package/dist/berry-DODBq_Ff.js +0 -7
  47. package/dist/berry-DODBq_Ff.js.map +0 -1
  48. package/dist/bibtex-EULQRLY5.js +0 -7
  49. package/dist/bibtex-EULQRLY5.js.map +0 -1
  50. package/dist/bicep-BorU73w0.js +0 -7
  51. package/dist/bicep-BorU73w0.js.map +0 -1
  52. package/dist/blade-CRa6j5zS.js +0 -21
  53. package/dist/blade-CRa6j5zS.js.map +0 -1
  54. package/dist/bsl-NkNNwerW.js +0 -9
  55. package/dist/bsl-NkNNwerW.js.map +0 -1
  56. package/dist/c-eeMepfLm.js +0 -7
  57. package/dist/c-eeMepfLm.js.map +0 -1
  58. package/dist/cadence-02UX7mW8.js +0 -7
  59. package/dist/cadence-02UX7mW8.js.map +0 -1
  60. package/dist/cairo-DM6WF2e3.js +0 -9
  61. package/dist/cairo-DM6WF2e3.js.map +0 -1
  62. package/dist/catppuccin-frappe-D3cH2rXe.js +0 -5
  63. package/dist/catppuccin-frappe-D3cH2rXe.js.map +0 -1
  64. package/dist/catppuccin-latte-C0LRGUW4.js +0 -5
  65. package/dist/catppuccin-latte-C0LRGUW4.js.map +0 -1
  66. package/dist/catppuccin-macchiato-c5wQ11TT.js +0 -5
  67. package/dist/catppuccin-macchiato-c5wQ11TT.js.map +0 -1
  68. package/dist/catppuccin-mocha-WMD6Qvya.js +0 -5
  69. package/dist/catppuccin-mocha-WMD6Qvya.js.map +0 -1
  70. package/dist/clarity-PKm5CwqM.js +0 -7
  71. package/dist/clarity-PKm5CwqM.js.map +0 -1
  72. package/dist/clojure-CXJfHrL3.js +0 -7
  73. package/dist/clojure-CXJfHrL3.js.map +0 -1
  74. package/dist/cmake-BJz8BOTU.js +0 -7
  75. package/dist/cmake-BJz8BOTU.js.map +0 -1
  76. package/dist/cobol-HihOMwht.js +0 -11
  77. package/dist/cobol-HihOMwht.js.map +0 -1
  78. package/dist/codeowners-Bt9yU6NX.js +0 -7
  79. package/dist/codeowners-Bt9yU6NX.js.map +0 -1
  80. package/dist/codeql-DHkodjjI.js +0 -7
  81. package/dist/codeql-DHkodjjI.js.map +0 -1
  82. package/dist/coffee-DGBR_nr_.js +0 -9
  83. package/dist/coffee-DGBR_nr_.js.map +0 -1
  84. package/dist/common-lisp-EVqT9Zhp.js +0 -7
  85. package/dist/common-lisp-EVqT9Zhp.js.map +0 -1
  86. package/dist/components/buttons/Button.svelte.d.ts +0 -1
  87. package/dist/components/buttons/ButtonGroup.svelte.d.ts +0 -1
  88. package/dist/components/buttons/FloatingActionButton.svelte.d.ts +0 -1
  89. package/dist/components/buttons/IconButton.svelte.d.ts +0 -1
  90. package/dist/components/buttons/LinkButton.svelte.d.ts +0 -1
  91. package/dist/components/buttons/buttonClasses.d.ts +0 -10
  92. package/dist/components/buttons/index.d.ts +0 -5
  93. package/dist/components/cards/Card.svelte.d.ts +0 -1
  94. package/dist/components/cards/Container.svelte.d.ts +0 -1
  95. package/dist/components/cards/Divider.svelte.d.ts +0 -1
  96. package/dist/components/cards/Grid.svelte.d.ts +0 -1
  97. package/dist/components/cards/Panel.svelte.d.ts +0 -1
  98. package/dist/components/cards/SectionHeader.svelte.d.ts +0 -1
  99. package/dist/components/cards/index.d.ts +0 -6
  100. package/dist/components/data/Avatar.svelte.d.ts +0 -1
  101. package/dist/components/data/Badge.svelte.d.ts +0 -1
  102. package/dist/components/data/CodeBlock.svelte.d.ts +0 -1
  103. package/dist/components/data/List.svelte.d.ts +0 -1
  104. package/dist/components/data/Pagination.svelte.d.ts +0 -1
  105. package/dist/components/data/Stat.svelte.d.ts +0 -1
  106. package/dist/components/data/Table.svelte.d.ts +0 -1
  107. package/dist/components/data/Tag.svelte.d.ts +0 -1
  108. package/dist/components/data/index.d.ts +0 -8
  109. package/dist/components/forms/Checkbox.svelte.d.ts +0 -1
  110. package/dist/components/forms/FileUpload.svelte.d.ts +0 -1
  111. package/dist/components/forms/Input.svelte.d.ts +0 -1
  112. package/dist/components/forms/InputGroup.svelte.d.ts +0 -1
  113. package/dist/components/forms/RadioGroup.svelte.d.ts +0 -1
  114. package/dist/components/forms/RangeSlider.svelte.d.ts +0 -1
  115. package/dist/components/forms/Select.svelte.d.ts +0 -1
  116. package/dist/components/forms/Switch.svelte.d.ts +0 -1
  117. package/dist/components/forms/Textarea.svelte.d.ts +0 -1
  118. package/dist/components/forms/index.d.ts +0 -9
  119. package/dist/components/navigation/Breadcrumbs.svelte.d.ts +0 -1
  120. package/dist/components/navigation/ContextMenu.svelte.d.ts +0 -1
  121. package/dist/components/navigation/DropdownMenu.svelte.d.ts +0 -1
  122. package/dist/components/navigation/Menu.svelte.d.ts +0 -1
  123. package/dist/components/navigation/Navbar.svelte.d.ts +0 -1
  124. package/dist/components/navigation/Sidebar.svelte.d.ts +0 -1
  125. package/dist/components/navigation/Tabs.svelte.d.ts +0 -1
  126. package/dist/components/navigation/index.d.ts +0 -7
  127. package/dist/components/overlays/Alert.svelte.d.ts +0 -1
  128. package/dist/components/overlays/CommandPalette.svelte.d.ts +0 -1
  129. package/dist/components/overlays/Drawer.svelte.d.ts +0 -1
  130. package/dist/components/overlays/Dropdown.svelte.d.ts +0 -1
  131. package/dist/components/overlays/Modal.svelte.d.ts +0 -1
  132. package/dist/components/overlays/Popover.svelte.d.ts +0 -1
  133. package/dist/components/overlays/ProgressBar.svelte.d.ts +0 -1
  134. package/dist/components/overlays/SkeletonLoader.svelte.d.ts +0 -1
  135. package/dist/components/overlays/Spinner.svelte.d.ts +0 -1
  136. package/dist/components/overlays/Toast.svelte.d.ts +0 -1
  137. package/dist/components/overlays/Tooltip.svelte.d.ts +0 -1
  138. package/dist/components/overlays/index.d.ts +0 -11
  139. package/dist/components/typography/Code.svelte.d.ts +0 -1
  140. package/dist/components/typography/Heading.svelte.d.ts +0 -1
  141. package/dist/components/typography/Text.svelte.d.ts +0 -1
  142. package/dist/components/typography/index.d.ts +0 -3
  143. package/dist/components/utilities/Accordion.svelte.d.ts +0 -1
  144. package/dist/components/utilities/Carousel.svelte.d.ts +0 -1
  145. package/dist/components/utilities/Collapse.svelte.d.ts +0 -1
  146. package/dist/components/utilities/Portal.svelte.d.ts +0 -1
  147. package/dist/components/utilities/ScrollArea.svelte.d.ts +0 -1
  148. package/dist/components/utilities/index.d.ts +0 -5
  149. package/dist/coq-B0L9upzn.js +0 -7
  150. package/dist/coq-B0L9upzn.js.map +0 -1
  151. package/dist/cpp-Cj177cuW.js +0 -19
  152. package/dist/cpp-Cj177cuW.js.map +0 -1
  153. package/dist/crystal-CRJyc4G-.js +0 -19
  154. package/dist/crystal-CRJyc4G-.js.map +0 -1
  155. package/dist/csharp-C7yUs7-w.js +0 -7
  156. package/dist/csharp-C7yUs7-w.js.map +0 -1
  157. package/dist/css-CECN5uSL.js +0 -7
  158. package/dist/css-CECN5uSL.js.map +0 -1
  159. package/dist/csv-CmYOceLb.js +0 -7
  160. package/dist/csv-CmYOceLb.js.map +0 -1
  161. package/dist/cue-ZzumE7IT.js +0 -7
  162. package/dist/cue-ZzumE7IT.js.map +0 -1
  163. package/dist/cypher-jpdmjtA6.js +0 -7
  164. package/dist/cypher-jpdmjtA6.js.map +0 -1
  165. package/dist/d-CBagWSwH.js +0 -7
  166. package/dist/d-CBagWSwH.js.map +0 -1
  167. package/dist/dark-plus-pUHDTVV0.js +0 -5
  168. package/dist/dark-plus-pUHDTVV0.js.map +0 -1
  169. package/dist/dart-6ObCrKr9.js +0 -7
  170. package/dist/dart-6ObCrKr9.js.map +0 -1
  171. package/dist/dax-CcDT-8dH.js +0 -7
  172. package/dist/dax-CcDT-8dH.js.map +0 -1
  173. package/dist/desktop-B93p9R9O.js +0 -7
  174. package/dist/desktop-B93p9R9O.js.map +0 -1
  175. package/dist/diff-BxzP2J8R.js +0 -7
  176. package/dist/diff-BxzP2J8R.js.map +0 -1
  177. package/dist/docker-CsHqm9tx.js +0 -7
  178. package/dist/docker-CsHqm9tx.js.map +0 -1
  179. package/dist/dotenv-BMjVjUL1.js +0 -7
  180. package/dist/dotenv-BMjVjUL1.js.map +0 -1
  181. package/dist/dracula-BtZx2Kac.js +0 -5
  182. package/dist/dracula-BtZx2Kac.js.map +0 -1
  183. package/dist/dracula-soft-BKa-aqBv.js +0 -5
  184. package/dist/dracula-soft-BKa-aqBv.js.map +0 -1
  185. package/dist/dream-maker-PAx17jaB.js +0 -7
  186. package/dist/dream-maker-PAx17jaB.js.map +0 -1
  187. package/dist/edge-BYQkOzbF.js +0 -13
  188. package/dist/edge-BYQkOzbF.js.map +0 -1
  189. package/dist/elixir-Dh036GMp.js +0 -9
  190. package/dist/elixir-Dh036GMp.js.map +0 -1
  191. package/dist/elm-BtNbw_Cd.js +0 -9
  192. package/dist/elm-BtNbw_Cd.js.map +0 -1
  193. package/dist/emacs-lisp-Cfxdx5D-.js +0 -7
  194. package/dist/emacs-lisp-Cfxdx5D-.js.map +0 -1
  195. package/dist/erb-CS4zioBv.js +0 -11
  196. package/dist/erb-CS4zioBv.js.map +0 -1
  197. package/dist/erlang-DNcDT8Hi.js +0 -9
  198. package/dist/erlang-DNcDT8Hi.js.map +0 -1
  199. package/dist/everforest-dark-DMCBqXCK.js +0 -5
  200. package/dist/everforest-dark-DMCBqXCK.js.map +0 -1
  201. package/dist/everforest-light-BbXl82Em.js +0 -5
  202. package/dist/everforest-light-BbXl82Em.js.map +0 -1
  203. package/dist/fennel-N4WcXuKx.js +0 -7
  204. package/dist/fennel-N4WcXuKx.js.map +0 -1
  205. package/dist/fish-BTDEUgqH.js +0 -7
  206. package/dist/fish-BTDEUgqH.js.map +0 -1
  207. package/dist/fluent-BMXUxfv1.js +0 -7
  208. package/dist/fluent-BMXUxfv1.js.map +0 -1
  209. package/dist/fortran-fixed-form-DUsA-VGo.js +0 -9
  210. package/dist/fortran-fixed-form-DUsA-VGo.js.map +0 -1
  211. package/dist/fortran-free-form-DPIT_jbP.js +0 -7
  212. package/dist/fortran-free-form-DPIT_jbP.js.map +0 -1
  213. package/dist/fsharp-CYOiIVNx.js +0 -9
  214. package/dist/fsharp-CYOiIVNx.js.map +0 -1
  215. package/dist/gdresource-BwtMIoBm.js +0 -11
  216. package/dist/gdresource-BwtMIoBm.js.map +0 -1
  217. package/dist/gdscript-BifyeYhI.js +0 -7
  218. package/dist/gdscript-BifyeYhI.js.map +0 -1
  219. package/dist/gdshader-Bk8fF6yr.js +0 -7
  220. package/dist/gdshader-Bk8fF6yr.js.map +0 -1
  221. package/dist/genie-DzUvd7U9.js +0 -7
  222. package/dist/genie-DzUvd7U9.js.map +0 -1
  223. package/dist/gherkin-DHRaV0YP.js +0 -7
  224. package/dist/gherkin-DHRaV0YP.js.map +0 -1
  225. package/dist/git-commit-Bd32YZ0K.js +0 -9
  226. package/dist/git-commit-Bd32YZ0K.js.map +0 -1
  227. package/dist/git-rebase-ZWUFO_T4.js +0 -9
  228. package/dist/git-rebase-ZWUFO_T4.js.map +0 -1
  229. package/dist/github-dark-DenFmJkN.js +0 -5
  230. package/dist/github-dark-DenFmJkN.js.map +0 -1
  231. package/dist/github-dark-default-BJPUVz4H.js +0 -5
  232. package/dist/github-dark-default-BJPUVz4H.js.map +0 -1
  233. package/dist/github-dark-dimmed-DUshB20C.js +0 -5
  234. package/dist/github-dark-dimmed-DUshB20C.js.map +0 -1
  235. package/dist/github-dark-high-contrast-D3aGCnF8.js +0 -5
  236. package/dist/github-dark-high-contrast-D3aGCnF8.js.map +0 -1
  237. package/dist/github-light-JYsPkUQd.js +0 -5
  238. package/dist/github-light-JYsPkUQd.js.map +0 -1
  239. package/dist/github-light-default-D99KPAby.js +0 -5
  240. package/dist/github-light-default-D99KPAby.js.map +0 -1
  241. package/dist/github-light-high-contrast-BbmZE-Mp.js +0 -5
  242. package/dist/github-light-high-contrast-BbmZE-Mp.js.map +0 -1
  243. package/dist/gleam-Bv284lvN.js +0 -7
  244. package/dist/gleam-Bv284lvN.js.map +0 -1
  245. package/dist/glimmer-js-DkxNrfPT.js +0 -15
  246. package/dist/glimmer-js-DkxNrfPT.js.map +0 -1
  247. package/dist/glimmer-ts-D6YZEmK_.js +0 -15
  248. package/dist/glimmer-ts-D6YZEmK_.js.map +0 -1
  249. package/dist/glsl-CkUcVZNK.js +0 -9
  250. package/dist/glsl-CkUcVZNK.js.map +0 -1
  251. package/dist/gnuplot-yPG9-sE_.js +0 -7
  252. package/dist/gnuplot-yPG9-sE_.js.map +0 -1
  253. package/dist/go-ChxJuLYK.js +0 -7
  254. package/dist/go-ChxJuLYK.js.map +0 -1
  255. package/dist/graphql-CBu2ehBn.js +0 -15
  256. package/dist/graphql-CBu2ehBn.js.map +0 -1
  257. package/dist/groovy-CJQTphOW.js +0 -7
  258. package/dist/groovy-CJQTphOW.js.map +0 -1
  259. package/dist/gruvbox-dark-hard-C5HOtKIh.js +0 -5
  260. package/dist/gruvbox-dark-hard-C5HOtKIh.js.map +0 -1
  261. package/dist/gruvbox-dark-medium-FVgwJHuz.js +0 -5
  262. package/dist/gruvbox-dark-medium-FVgwJHuz.js.map +0 -1
  263. package/dist/gruvbox-dark-soft-B46F314v.js +0 -5
  264. package/dist/gruvbox-dark-soft-B46F314v.js.map +0 -1
  265. package/dist/gruvbox-light-hard-CJD38wDZ.js +0 -5
  266. package/dist/gruvbox-light-hard-CJD38wDZ.js.map +0 -1
  267. package/dist/gruvbox-light-medium-BlIhMYTA.js +0 -5
  268. package/dist/gruvbox-light-medium-BlIhMYTA.js.map +0 -1
  269. package/dist/gruvbox-light-soft-DoPHyLVZ.js +0 -5
  270. package/dist/gruvbox-light-soft-DoPHyLVZ.js.map +0 -1
  271. package/dist/hack-ItRNKiEb.js +0 -11
  272. package/dist/hack-ItRNKiEb.js.map +0 -1
  273. package/dist/haml-NZLVzu_R.js +0 -11
  274. package/dist/haml-NZLVzu_R.js.map +0 -1
  275. package/dist/handlebars-mxStpSE7.js +0 -15
  276. package/dist/handlebars-mxStpSE7.js.map +0 -1
  277. package/dist/haskell-WeIwNIP6.js +0 -7
  278. package/dist/haskell-WeIwNIP6.js.map +0 -1
  279. package/dist/haxe-TztHsm5T.js +0 -7
  280. package/dist/haxe-TztHsm5T.js.map +0 -1
  281. package/dist/hcl-D438OF-I.js +0 -7
  282. package/dist/hcl-D438OF-I.js.map +0 -1
  283. package/dist/hjson-DYBUbqOl.js +0 -7
  284. package/dist/hjson-DYBUbqOl.js.map +0 -1
  285. package/dist/hlsl-Bk8TCZNL.js +0 -7
  286. package/dist/hlsl-Bk8TCZNL.js.map +0 -1
  287. package/dist/houston-BDYrDoDW.js +0 -5
  288. package/dist/houston-BDYrDoDW.js.map +0 -1
  289. package/dist/html-B50bmoVb.js +0 -11
  290. package/dist/html-B50bmoVb.js.map +0 -1
  291. package/dist/html-derivative-C6bxFbFW.js +0 -9
  292. package/dist/html-derivative-C6bxFbFW.js.map +0 -1
  293. package/dist/http-DLvAkeD-.js +0 -15
  294. package/dist/http-DLvAkeD-.js.map +0 -1
  295. package/dist/hurl-CgkFN90t.js +0 -13
  296. package/dist/hurl-CgkFN90t.js.map +0 -1
  297. package/dist/hxml-GbqSQCLa.js +0 -9
  298. package/dist/hxml-GbqSQCLa.js.map +0 -1
  299. package/dist/hy-Brt5EZ7-.js +0 -7
  300. package/dist/hy-Brt5EZ7-.js.map +0 -1
  301. package/dist/imba-CimUv-Uh.js +0 -7
  302. package/dist/imba-CimUv-Uh.js.map +0 -1
  303. package/dist/index.js.map +0 -1
  304. package/dist/ini-BZIuRIvJ.js +0 -7
  305. package/dist/ini-BZIuRIvJ.js.map +0 -1
  306. package/dist/java-DY6VlHhP.js +0 -7
  307. package/dist/java-DY6VlHhP.js.map +0 -1
  308. package/dist/javascript-C25yR2R2.js +0 -7
  309. package/dist/javascript-C25yR2R2.js.map +0 -1
  310. package/dist/jinja-CFW5uAwY.js +0 -12
  311. package/dist/jinja-CFW5uAwY.js.map +0 -1
  312. package/dist/jison-DdreslRX.js +0 -9
  313. package/dist/jison-DdreslRX.js.map +0 -1
  314. package/dist/json-DxJze_jm.js +0 -7
  315. package/dist/json-DxJze_jm.js.map +0 -1
  316. package/dist/json5-BT4Fjg39.js +0 -7
  317. package/dist/json5-BT4Fjg39.js.map +0 -1
  318. package/dist/jsonc-CHjZD8gR.js +0 -7
  319. package/dist/jsonc-CHjZD8gR.js.map +0 -1
  320. package/dist/jsonl-BGuvDmy9.js +0 -7
  321. package/dist/jsonl-BGuvDmy9.js.map +0 -1
  322. package/dist/jsonnet-Bx2cfsXg.js +0 -7
  323. package/dist/jsonnet-Bx2cfsXg.js.map +0 -1
  324. package/dist/jssm-BcADi6EI.js +0 -7
  325. package/dist/jssm-BcADi6EI.js.map +0 -1
  326. package/dist/jsx-BtKADgXT.js +0 -7
  327. package/dist/jsx-BtKADgXT.js.map +0 -1
  328. package/dist/julia--2-efCjg.js +0 -17
  329. package/dist/julia--2-efCjg.js.map +0 -1
  330. package/dist/kanagawa-dragon-CiKur4Hl.js +0 -5
  331. package/dist/kanagawa-dragon-CiKur4Hl.js.map +0 -1
  332. package/dist/kanagawa-lotus-BKu-smKu.js +0 -5
  333. package/dist/kanagawa-lotus-BKu-smKu.js.map +0 -1
  334. package/dist/kanagawa-wave-CQwozSzG.js +0 -5
  335. package/dist/kanagawa-wave-CQwozSzG.js.map +0 -1
  336. package/dist/kdl-BNOv9TC3.js +0 -7
  337. package/dist/kdl-BNOv9TC3.js.map +0 -1
  338. package/dist/kotlin-ByBMgTeR.js +0 -7
  339. package/dist/kotlin-ByBMgTeR.js.map +0 -1
  340. package/dist/kusto-VWFLl2T0.js +0 -7
  341. package/dist/kusto-VWFLl2T0.js.map +0 -1
  342. package/dist/laserwave-6a00oqik.js +0 -5
  343. package/dist/laserwave-6a00oqik.js.map +0 -1
  344. package/dist/latex-Cs75fyNk.js +0 -9
  345. package/dist/latex-Cs75fyNk.js.map +0 -1
  346. package/dist/lean-D5yRrexI.js +0 -7
  347. package/dist/lean-D5yRrexI.js.map +0 -1
  348. package/dist/less-B1GLI2Di.js +0 -7
  349. package/dist/less-B1GLI2Di.js.map +0 -1
  350. package/dist/lib/internal/id.d.ts +0 -12
  351. package/dist/light-plus-CZuVqSLX.js +0 -5
  352. package/dist/light-plus-CZuVqSLX.js.map +0 -1
  353. package/dist/liquid-CHzkx3jT.js +0 -15
  354. package/dist/liquid-CHzkx3jT.js.map +0 -1
  355. package/dist/llvm-co1rIKs3.js +0 -7
  356. package/dist/llvm-co1rIKs3.js.map +0 -1
  357. package/dist/log-Al8wyEFV.js +0 -7
  358. package/dist/log-Al8wyEFV.js.map +0 -1
  359. package/dist/logo-DBa4JDzV.js +0 -7
  360. package/dist/logo-DBa4JDzV.js.map +0 -1
  361. package/dist/lua-kX5WP_P5.js +0 -9
  362. package/dist/lua-kX5WP_P5.js.map +0 -1
  363. package/dist/luau-DtBSxLyz.js +0 -7
  364. package/dist/luau-DtBSxLyz.js.map +0 -1
  365. package/dist/make-CsMclxtr.js +0 -7
  366. package/dist/make-CsMclxtr.js.map +0 -1
  367. package/dist/markdown-CrScaQ96.js +0 -7
  368. package/dist/markdown-CrScaQ96.js.map +0 -1
  369. package/dist/marko-ls0Jg2j8.js +0 -15
  370. package/dist/marko-ls0Jg2j8.js.map +0 -1
  371. package/dist/material-theme-D6KBX41T.js +0 -5
  372. package/dist/material-theme-D6KBX41T.js.map +0 -1
  373. package/dist/material-theme-darker-CkRroheE.js +0 -5
  374. package/dist/material-theme-darker-CkRroheE.js.map +0 -1
  375. package/dist/material-theme-lighter-BUBw43Yz.js +0 -5
  376. package/dist/material-theme-lighter-BUBw43Yz.js.map +0 -1
  377. package/dist/material-theme-ocean-ClGX14Ja.js +0 -5
  378. package/dist/material-theme-ocean-ClGX14Ja.js.map +0 -1
  379. package/dist/material-theme-palenight-C1RVm8K1.js +0 -5
  380. package/dist/material-theme-palenight-C1RVm8K1.js.map +0 -1
  381. package/dist/matlab-BOAaUVP0.js +0 -7
  382. package/dist/matlab-BOAaUVP0.js.map +0 -1
  383. package/dist/mdc-uaivvctV.js +0 -13
  384. package/dist/mdc-uaivvctV.js.map +0 -1
  385. package/dist/mdx-BOhZZUJ8.js +0 -7
  386. package/dist/mdx-BOhZZUJ8.js.map +0 -1
  387. package/dist/mermaid-B0ixDHKN.js +0 -7
  388. package/dist/mermaid-B0ixDHKN.js.map +0 -1
  389. package/dist/min-dark-C7ak0t6c.js +0 -5
  390. package/dist/min-dark-C7ak0t6c.js.map +0 -1
  391. package/dist/min-light-CKFxVcPp.js +0 -5
  392. package/dist/min-light-CKFxVcPp.js.map +0 -1
  393. package/dist/mipsasm-CTx18fBl.js +0 -7
  394. package/dist/mipsasm-CTx18fBl.js.map +0 -1
  395. package/dist/mojo-BD611d7o.js +0 -7
  396. package/dist/mojo-BD611d7o.js.map +0 -1
  397. package/dist/monokai-C1KBYcO0.js +0 -5
  398. package/dist/monokai-C1KBYcO0.js.map +0 -1
  399. package/dist/move-F-dICmj2.js +0 -7
  400. package/dist/move-F-dICmj2.js.map +0 -1
  401. package/dist/narrat-DmhDCBs-.js +0 -7
  402. package/dist/narrat-DmhDCBs-.js.map +0 -1
  403. package/dist/nextflow-DmSVRGjG.js +0 -7
  404. package/dist/nextflow-DmSVRGjG.js.map +0 -1
  405. package/dist/nginx-5vhPAEw3.js +0 -9
  406. package/dist/nginx-5vhPAEw3.js.map +0 -1
  407. package/dist/night-owl-Bm2rzalh.js +0 -5
  408. package/dist/night-owl-Bm2rzalh.js.map +0 -1
  409. package/dist/nim-QAjRdh9w.js +0 -21
  410. package/dist/nim-QAjRdh9w.js.map +0 -1
  411. package/dist/nix-BZK5F767.js +0 -10
  412. package/dist/nix-BZK5F767.js.map +0 -1
  413. package/dist/nord-CC5OiUXg.js +0 -5
  414. package/dist/nord-CC5OiUXg.js.map +0 -1
  415. package/dist/nushell-D8j3dhT-.js +0 -7
  416. package/dist/nushell-D8j3dhT-.js.map +0 -1
  417. package/dist/objective-c-Itk8tzmv.js +0 -7
  418. package/dist/objective-c-Itk8tzmv.js.map +0 -1
  419. package/dist/objective-cpp-DGt5UKRO.js +0 -7
  420. package/dist/objective-cpp-DGt5UKRO.js.map +0 -1
  421. package/dist/ocaml-eSVK32Eg.js +0 -7
  422. package/dist/ocaml-eSVK32Eg.js.map +0 -1
  423. package/dist/one-dark-pro-DTA3VF0_.js +0 -5
  424. package/dist/one-dark-pro-DTA3VF0_.js.map +0 -1
  425. package/dist/one-light-D9sNaUtq.js +0 -5
  426. package/dist/one-light-D9sNaUtq.js.map +0 -1
  427. package/dist/openscad-Sp5uZ6f2.js +0 -7
  428. package/dist/openscad-Sp5uZ6f2.js.map +0 -1
  429. package/dist/pascal-xy8pJNns.js +0 -7
  430. package/dist/pascal-xy8pJNns.js.map +0 -1
  431. package/dist/perl-DkVrgJBg.js +0 -17
  432. package/dist/perl-DkVrgJBg.js.map +0 -1
  433. package/dist/php-j2zCzTEz.js +0 -19
  434. package/dist/php-j2zCzTEz.js.map +0 -1
  435. package/dist/pkl-C-zSNmaA.js +0 -7
  436. package/dist/pkl-C-zSNmaA.js.map +0 -1
  437. package/dist/plastic-CSTz3KZp.js +0 -5
  438. package/dist/plastic-CSTz3KZp.js.map +0 -1
  439. package/dist/plsql-pVbGZfOv.js +0 -7
  440. package/dist/plsql-pVbGZfOv.js.map +0 -1
  441. package/dist/po-BNfHvqmm.js +0 -7
  442. package/dist/po-BNfHvqmm.js.map +0 -1
  443. package/dist/poimandres-C-VADXHD.js +0 -5
  444. package/dist/poimandres-C-VADXHD.js.map +0 -1
  445. package/dist/polar-CAZahv3u.js +0 -7
  446. package/dist/polar-CAZahv3u.js.map +0 -1
  447. package/dist/postcss-05aHdL-n.js +0 -7
  448. package/dist/postcss-05aHdL-n.js.map +0 -1
  449. package/dist/powerquery-DI9HkTvs.js +0 -7
  450. package/dist/powerquery-DI9HkTvs.js.map +0 -1
  451. package/dist/powershell-Clc4ydu-.js +0 -7
  452. package/dist/powershell-Clc4ydu-.js.map +0 -1
  453. package/dist/prisma-FZjmVtSl.js +0 -7
  454. package/dist/prisma-FZjmVtSl.js.map +0 -1
  455. package/dist/prolog-C5-yg4TO.js +0 -7
  456. package/dist/prolog-C5-yg4TO.js.map +0 -1
  457. package/dist/proto-MmCPeFAD.js +0 -7
  458. package/dist/proto-MmCPeFAD.js.map +0 -1
  459. package/dist/pug-XOw9Q1Ho.js +0 -13
  460. package/dist/pug-XOw9Q1Ho.js.map +0 -1
  461. package/dist/puppet-CUJHmnxV.js +0 -7
  462. package/dist/puppet-CUJHmnxV.js.map +0 -1
  463. package/dist/purescript-rUfGld-4.js +0 -7
  464. package/dist/purescript-rUfGld-4.js.map +0 -1
  465. package/dist/python-BFNSHbwJ.js +0 -7
  466. package/dist/python-BFNSHbwJ.js.map +0 -1
  467. package/dist/qml-rTNXsquU.js +0 -9
  468. package/dist/qml-rTNXsquU.js.map +0 -1
  469. package/dist/qmldir-BInDYbpo.js +0 -7
  470. package/dist/qmldir-BInDYbpo.js.map +0 -1
  471. package/dist/qss-AeJTysr_.js +0 -7
  472. package/dist/qss-AeJTysr_.js.map +0 -1
  473. package/dist/r-Bm0uF0U2.js +0 -7
  474. package/dist/r-Bm0uF0U2.js.map +0 -1
  475. package/dist/racket-B83wSAja.js +0 -7
  476. package/dist/racket-B83wSAja.js.map +0 -1
  477. package/dist/raku-nEQ4ZJJ7.js +0 -7
  478. package/dist/raku-nEQ4ZJJ7.js.map +0 -1
  479. package/dist/razor-B1z-bksM.js +0 -11
  480. package/dist/razor-B1z-bksM.js.map +0 -1
  481. package/dist/red-7y8PH7HH.js +0 -5
  482. package/dist/red-7y8PH7HH.js.map +0 -1
  483. package/dist/reg-m_s_Kiip.js +0 -7
  484. package/dist/reg-m_s_Kiip.js.map +0 -1
  485. package/dist/regexp-BazyLpPg.js +0 -7
  486. package/dist/regexp-BazyLpPg.js.map +0 -1
  487. package/dist/rel-BcRfyd6Q.js +0 -7
  488. package/dist/rel-BcRfyd6Q.js.map +0 -1
  489. package/dist/riscv-Ce8MAQLP.js +0 -7
  490. package/dist/riscv-Ce8MAQLP.js.map +0 -1
  491. package/dist/rose-pine-BKc3yVeu.js +0 -5
  492. package/dist/rose-pine-BKc3yVeu.js.map +0 -1
  493. package/dist/rose-pine-dawn-BulJcPZT.js +0 -5
  494. package/dist/rose-pine-dawn-BulJcPZT.js.map +0 -1
  495. package/dist/rose-pine-moon-j6jiXKV8.js +0 -5
  496. package/dist/rose-pine-moon-j6jiXKV8.js.map +0 -1
  497. package/dist/rosmsg-Cz0w1km8.js +0 -7
  498. package/dist/rosmsg-Cz0w1km8.js.map +0 -1
  499. package/dist/rst-CcbeA9zE.js +0 -23
  500. package/dist/rst-CcbeA9zE.js.map +0 -1
  501. package/dist/ruby-DMPw6uKF.js +0 -31
  502. package/dist/ruby-DMPw6uKF.js.map +0 -1
  503. package/dist/rust-CLzF9zIN.js +0 -7
  504. package/dist/rust-CLzF9zIN.js.map +0 -1
  505. package/dist/sas-fpEvgATw.js +0 -9
  506. package/dist/sas-fpEvgATw.js.map +0 -1
  507. package/dist/sass-DxHp5rTx.js +0 -7
  508. package/dist/sass-DxHp5rTx.js.map +0 -1
  509. package/dist/scala-D4grkFkl.js +0 -7
  510. package/dist/scala-D4grkFkl.js.map +0 -1
  511. package/dist/scheme-BCRWuEm4.js +0 -7
  512. package/dist/scheme-BCRWuEm4.js.map +0 -1
  513. package/dist/scss-B1FaCqwR.js +0 -9
  514. package/dist/scss-B1FaCqwR.js.map +0 -1
  515. package/dist/sdbl-B7T8abf4.js +0 -7
  516. package/dist/sdbl-B7T8abf4.js.map +0 -1
  517. package/dist/shaderlab-Cr62-Wb4.js +0 -9
  518. package/dist/shaderlab-Cr62-Wb4.js.map +0 -1
  519. package/dist/shellscript-InADTalH.js +0 -7
  520. package/dist/shellscript-InADTalH.js.map +0 -1
  521. package/dist/shellsession-DiDJNQdy.js +0 -9
  522. package/dist/shellsession-DiDJNQdy.js.map +0 -1
  523. package/dist/slack-dark-i7wN4OET.js +0 -5
  524. package/dist/slack-dark-i7wN4OET.js.map +0 -1
  525. package/dist/slack-ochin-ndHf0LoP.js +0 -5
  526. package/dist/slack-ochin-ndHf0LoP.js.map +0 -1
  527. package/dist/smalltalk-BlI1_OkM.js +0 -7
  528. package/dist/smalltalk-BlI1_OkM.js.map +0 -1
  529. package/dist/snazzy-light-BlSJXAu4.js +0 -5
  530. package/dist/snazzy-light-BlSJXAu4.js.map +0 -1
  531. package/dist/solarized-dark-UTmkh7lw.js +0 -5
  532. package/dist/solarized-dark-UTmkh7lw.js.map +0 -1
  533. package/dist/solarized-light-BheCkDPT.js +0 -5
  534. package/dist/solarized-light-BheCkDPT.js.map +0 -1
  535. package/dist/solidity-DUWnFhS6.js +0 -7
  536. package/dist/solidity-DUWnFhS6.js.map +0 -1
  537. package/dist/soy-C1-6njHa.js +0 -9
  538. package/dist/soy-C1-6njHa.js.map +0 -1
  539. package/dist/sparql-B0KWFEri.js +0 -9
  540. package/dist/sparql-B0KWFEri.js.map +0 -1
  541. package/dist/splunk-CRXR8A9s.js +0 -7
  542. package/dist/splunk-CRXR8A9s.js.map +0 -1
  543. package/dist/sql-Cn_v3PB0.js +0 -7
  544. package/dist/sql-Cn_v3PB0.js.map +0 -1
  545. package/dist/ssh-config-DP-hNVbF.js +0 -7
  546. package/dist/ssh-config-DP-hNVbF.js.map +0 -1
  547. package/dist/stata-B8c5fTjX.js +0 -9
  548. package/dist/stata-B8c5fTjX.js.map +0 -1
  549. package/dist/stylus-CyKEU1Ej.js +0 -7
  550. package/dist/stylus-CyKEU1Ej.js.map +0 -1
  551. package/dist/svelte-5UasyOg7.js +0 -15
  552. package/dist/svelte-5UasyOg7.js.map +0 -1
  553. package/dist/swift-9UzSvamq.js +0 -7
  554. package/dist/swift-9UzSvamq.js.map +0 -1
  555. package/dist/synthwave-84-NU3C_KFZ.js +0 -5
  556. package/dist/synthwave-84-NU3C_KFZ.js.map +0 -1
  557. package/dist/system-verilog-BCm7smPJ.js +0 -7
  558. package/dist/system-verilog-BCm7smPJ.js.map +0 -1
  559. package/dist/systemd-C-4qm6XH.js +0 -7
  560. package/dist/systemd-C-4qm6XH.js.map +0 -1
  561. package/dist/talonscript-CFF3LF_O.js +0 -7
  562. package/dist/talonscript-CFF3LF_O.js.map +0 -1
  563. package/dist/tasl-Cg_WBUAe.js +0 -7
  564. package/dist/tasl-Cg_WBUAe.js.map +0 -1
  565. package/dist/tcl-DN7buRTF.js +0 -7
  566. package/dist/tcl-DN7buRTF.js.map +0 -1
  567. package/dist/templ-peLZIM2D.js +0 -13
  568. package/dist/templ-peLZIM2D.js.map +0 -1
  569. package/dist/terraform-DGvcn9zM.js +0 -7
  570. package/dist/terraform-DGvcn9zM.js.map +0 -1
  571. package/dist/tex-DpOayVob.js +0 -9
  572. package/dist/tex-DpOayVob.js.map +0 -1
  573. package/dist/tokyo-night-DP4TmcQl.js +0 -5
  574. package/dist/tokyo-night-DP4TmcQl.js.map +0 -1
  575. package/dist/toml-DY62mUL_.js +0 -7
  576. package/dist/toml-DY62mUL_.js.map +0 -1
  577. package/dist/ts-tags-ioVe2PKw.js +0 -42
  578. package/dist/ts-tags-ioVe2PKw.js.map +0 -1
  579. package/dist/tsv-BtvSkaG0.js +0 -7
  580. package/dist/tsv-BtvSkaG0.js.map +0 -1
  581. package/dist/tsx-B8rCNbgL.js +0 -7
  582. package/dist/tsx-B8rCNbgL.js.map +0 -1
  583. package/dist/turtle-_H59FV7D.js +0 -7
  584. package/dist/turtle-_H59FV7D.js.map +0 -1
  585. package/dist/twig-CcRLVyUg.js +0 -19
  586. package/dist/twig-CcRLVyUg.js.map +0 -1
  587. package/dist/typescript-RycA9KXf.js +0 -7
  588. package/dist/typescript-RycA9KXf.js.map +0 -1
  589. package/dist/typespec-DWqp-kUU.js +0 -7
  590. package/dist/typespec-DWqp-kUU.js.map +0 -1
  591. package/dist/typst-D_1QKWns.js +0 -7
  592. package/dist/typst-D_1QKWns.js.map +0 -1
  593. package/dist/v-BPCNiyYe.js +0 -7
  594. package/dist/v-BPCNiyYe.js.map +0 -1
  595. package/dist/vala-uxaPR7d1.js +0 -7
  596. package/dist/vala-uxaPR7d1.js.map +0 -1
  597. package/dist/vb-D8_c5-KN.js +0 -7
  598. package/dist/vb-D8_c5-KN.js.map +0 -1
  599. package/dist/verilog-B-bybjPF.js +0 -7
  600. package/dist/verilog-B-bybjPF.js.map +0 -1
  601. package/dist/vesper-BckBta1U.js +0 -5
  602. package/dist/vesper-BckBta1U.js.map +0 -1
  603. package/dist/vhdl-CUlNa8ac.js +0 -7
  604. package/dist/vhdl-CUlNa8ac.js.map +0 -1
  605. package/dist/viml-DsfA-sWm.js +0 -7
  606. package/dist/viml-DsfA-sWm.js.map +0 -1
  607. package/dist/vitesse-black-BoGvW84i.js +0 -5
  608. package/dist/vitesse-black-BoGvW84i.js.map +0 -1
  609. package/dist/vitesse-dark-Cym-eLtO.js +0 -5
  610. package/dist/vitesse-dark-Cym-eLtO.js.map +0 -1
  611. package/dist/vitesse-light-CcmG315c.js +0 -5
  612. package/dist/vitesse-light-CcmG315c.js.map +0 -1
  613. package/dist/vue-DOVAQqiz.js +0 -32
  614. package/dist/vue-DOVAQqiz.js.map +0 -1
  615. package/dist/vue-html-C7WI2elu.js +0 -11
  616. package/dist/vue-html-C7WI2elu.js.map +0 -1
  617. package/dist/vue-vine-D386fra9.js +0 -21
  618. package/dist/vue-vine-D386fra9.js.map +0 -1
  619. package/dist/vyper-CPQuu50u.js +0 -7
  620. package/dist/vyper-CPQuu50u.js.map +0 -1
  621. package/dist/wasm-BBXxrAl7.js +0 -7
  622. package/dist/wasm-BBXxrAl7.js.map +0 -1
  623. package/dist/wasm-DQxwEHae.js +0 -8
  624. package/dist/wasm-DQxwEHae.js.map +0 -1
  625. package/dist/wenyan-pbVjoM9_.js +0 -7
  626. package/dist/wenyan-pbVjoM9_.js.map +0 -1
  627. package/dist/wgsl-DY4iK1q1.js +0 -7
  628. package/dist/wgsl-DY4iK1q1.js.map +0 -1
  629. package/dist/wikitext-Z-MoUasO.js +0 -7
  630. package/dist/wikitext-Z-MoUasO.js.map +0 -1
  631. package/dist/wit-CQMQOlTg.js +0 -7
  632. package/dist/wit-CQMQOlTg.js.map +0 -1
  633. package/dist/wolfram-Dz4KXISs.js +0 -7
  634. package/dist/wolfram-Dz4KXISs.js.map +0 -1
  635. package/dist/xml-C2J0sS9M.js +0 -9
  636. package/dist/xml-C2J0sS9M.js.map +0 -1
  637. package/dist/xsl-BmSZphgC.js +0 -9
  638. package/dist/xsl-BmSZphgC.js.map +0 -1
  639. package/dist/yaml-DaO7k5B1.js +0 -7
  640. package/dist/yaml-DaO7k5B1.js.map +0 -1
  641. package/dist/zenscript-CxBjpf9c.js +0 -7
  642. package/dist/zenscript-CxBjpf9c.js.map +0 -1
  643. package/dist/zig-Vm0PO9wB.js +0 -7
  644. package/dist/zig-Vm0PO9wB.js.map +0 -1
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../node_modules/svelte/src/version.js","../node_modules/svelte/src/internal/disclose-version.js","../node_modules/svelte/src/constants.js","../node_modules/esm-env/false.js","../node_modules/svelte/src/internal/shared/utils.js","../node_modules/svelte/src/internal/client/constants.js","../node_modules/svelte/src/internal/client/errors.js","../node_modules/svelte/src/internal/client/warnings.js","../node_modules/svelte/src/internal/client/reactivity/equality.js","../node_modules/svelte/src/internal/flags/index.js","../node_modules/svelte/src/internal/client/context.js","../node_modules/svelte/src/internal/client/dom/task.js","../node_modules/svelte/src/internal/client/error-handling.js","../node_modules/svelte/src/internal/client/reactivity/batch.js","../node_modules/svelte/src/internal/client/dom/blocks/each.js","../node_modules/svelte/src/internal/client/reactivity/async.js","../node_modules/svelte/src/internal/client/reactivity/deriveds.js","../node_modules/svelte/src/internal/client/reactivity/sources.js","../node_modules/svelte/src/internal/client/proxy.js","../node_modules/svelte/src/internal/client/dom/operations.js","../node_modules/svelte/src/internal/client/dom/elements/misc.js","../node_modules/svelte/src/internal/client/dom/elements/bindings/shared.js","../node_modules/svelte/src/internal/client/reactivity/effects.js","../node_modules/svelte/src/internal/client/runtime.js","../node_modules/svelte/src/internal/client/dom/elements/events.js","../node_modules/svelte/src/internal/client/dom/reconciler.js","../node_modules/svelte/src/internal/client/dom/template.js","../node_modules/svelte/src/utils.js","../node_modules/svelte/src/internal/client/render.js","../node_modules/svelte/src/internal/client/dom/blocks/branches.js","../node_modules/svelte/src/internal/client/dom/blocks/snippet.js","../node_modules/svelte/src/internal/client/dom/blocks/if.js","../node_modules/svelte/src/internal/client/dom/blocks/html.js","../node_modules/svelte/src/internal/client/dom/blocks/slot.js","../node_modules/svelte/src/internal/client/dom/blocks/svelte-element.js","../node_modules/svelte/src/internal/client/dom/elements/actions.js","../node_modules/svelte/src/internal/client/dom/elements/attachments.js","../node_modules/clsx/dist/clsx.mjs","../node_modules/svelte/src/internal/shared/attributes.js","../node_modules/svelte/src/internal/client/dom/elements/class.js","../node_modules/svelte/src/internal/client/dom/elements/style.js","../node_modules/svelte/src/internal/client/dom/elements/bindings/select.js","../node_modules/svelte/src/internal/client/dom/elements/attributes.js","../node_modules/svelte/src/internal/client/dom/elements/bindings/input.js","../node_modules/svelte/src/internal/client/dom/elements/bindings/this.js","../node_modules/svelte/src/internal/client/reactivity/store.js","../node_modules/svelte/src/internal/client/reactivity/props.js","../src/components/buttons/buttonClasses.ts","../src/components/buttons/Button.svelte","../src/components/buttons/IconButton.svelte","../src/components/buttons/ButtonGroup.svelte","../src/components/buttons/LinkButton.svelte","../src/components/buttons/FloatingActionButton.svelte","../node_modules/nanoid/url-alphabet/index.js","../node_modules/nanoid/index.browser.js","../src/lib/internal/id.ts","../src/components/forms/Input.svelte","../src/components/forms/Textarea.svelte","../src/components/forms/Select.svelte","../src/components/forms/Checkbox.svelte","../src/components/forms/Switch.svelte","../src/components/forms/RadioGroup.svelte","../src/components/forms/RangeSlider.svelte","../src/components/forms/FileUpload.svelte","../node_modules/svelte/src/internal/flags/legacy.js","../src/components/forms/InputGroup.svelte","../src/components/cards/Card.svelte","../src/components/cards/Panel.svelte","../src/components/cards/Grid.svelte","../src/components/cards/Container.svelte","../src/components/cards/SectionHeader.svelte","../src/components/cards/Divider.svelte","../src/components/navigation/Navbar.svelte","../src/components/navigation/Sidebar.svelte","../src/components/navigation/Tabs.svelte","../src/components/navigation/Breadcrumbs.svelte","../src/components/navigation/Menu.svelte","../src/components/navigation/DropdownMenu.svelte","../src/components/navigation/ContextMenu.svelte","../src/components/overlays/Modal.svelte","../src/components/overlays/Alert.svelte","../src/components/overlays/Spinner.svelte","../src/components/overlays/Tooltip.svelte","../src/components/overlays/ProgressBar.svelte","../src/components/overlays/SkeletonLoader.svelte","../src/components/overlays/Toast.svelte","../src/components/utilities/ScrollArea.svelte","../src/components/overlays/Drawer.svelte","../src/components/overlays/Popover.svelte","../src/components/overlays/Dropdown.svelte","../src/components/overlays/CommandPalette.svelte","../src/components/typography/Heading.svelte","../src/components/typography/Text.svelte","../src/components/typography/Code.svelte","../src/components/data/Table.svelte","../src/components/data/Pagination.svelte","../src/components/data/Badge.svelte","../src/components/data/Tag.svelte","../src/components/data/List.svelte","../src/components/data/Avatar.svelte","../node_modules/@shikijs/types/dist/index.mjs","../node_modules/@shikijs/vscode-textmate/dist/index.js","../node_modules/html-void-elements/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","../node_modules/zwitch/index.js","../node_modules/stringify-entities/lib/core.js","../node_modules/stringify-entities/lib/util/to-hexadecimal.js","../node_modules/stringify-entities/lib/util/to-decimal.js","../node_modules/character-entities-legacy/index.js","../node_modules/character-entities-html4/index.js","../node_modules/stringify-entities/lib/constant/dangerous.js","../node_modules/stringify-entities/lib/util/to-named.js","../node_modules/stringify-entities/lib/util/format-smart.js","../node_modules/stringify-entities/lib/index.js","../node_modules/hast-util-to-html/lib/handle/comment.js","../node_modules/hast-util-to-html/lib/handle/doctype.js","../node_modules/ccount/index.js","../node_modules/comma-separated-tokens/index.js","../node_modules/space-separated-tokens/index.js","../node_modules/hast-util-whitespace/lib/index.js","../node_modules/hast-util-to-html/lib/omission/util/siblings.js","../node_modules/hast-util-to-html/lib/omission/omission.js","../node_modules/hast-util-to-html/lib/omission/closing.js","../node_modules/hast-util-to-html/lib/omission/opening.js","../node_modules/hast-util-to-html/lib/handle/element.js","../node_modules/hast-util-to-html/lib/handle/text.js","../node_modules/hast-util-to-html/lib/handle/raw.js","../node_modules/hast-util-to-html/lib/handle/root.js","../node_modules/hast-util-to-html/lib/handle/index.js","../node_modules/hast-util-to-html/lib/index.js","../node_modules/@shikijs/core/dist/index.mjs","../node_modules/shiki/dist/langs.mjs","../node_modules/shiki/dist/themes.mjs","../node_modules/@shikijs/engine-oniguruma/dist/index.mjs","../node_modules/shiki/dist/bundle-full.mjs","../src/components/data/CodeBlock.svelte","../src/components/data/Stat.svelte","../src/components/utilities/Portal.svelte","../src/components/utilities/Collapse.svelte","../src/components/utilities/Accordion.svelte","../src/components/utilities/Carousel.svelte","../src/index.ts"],"sourcesContent":["// generated during release, do not modify\n\n/**\n * The current version, as set in package.json.\n * @type {string}\n */\nexport const VERSION = '5.45.2';\nexport const PUBLIC_VERSION = '5';\n","import { PUBLIC_VERSION } from '../version.js';\n\nif (typeof window !== 'undefined') {\n\t// @ts-expect-error\n\t((window.__svelte ??= {}).v ??= new Set()).add(PUBLIC_VERSION);\n}\n","export const EACH_ITEM_REACTIVE = 1;\nexport const EACH_INDEX_REACTIVE = 1 << 1;\n/** See EachBlock interface metadata.is_controlled for an explanation what this is */\nexport const EACH_IS_CONTROLLED = 1 << 2;\nexport const EACH_IS_ANIMATED = 1 << 3;\nexport const EACH_ITEM_IMMUTABLE = 1 << 4;\n\nexport const PROPS_IS_IMMUTABLE = 1;\nexport const PROPS_IS_RUNES = 1 << 1;\nexport const PROPS_IS_UPDATED = 1 << 2;\nexport const PROPS_IS_BINDABLE = 1 << 3;\nexport const PROPS_IS_LAZY_INITIAL = 1 << 4;\n\nexport const TRANSITION_IN = 1;\nexport const TRANSITION_OUT = 1 << 1;\nexport const TRANSITION_GLOBAL = 1 << 2;\n\nexport const TEMPLATE_FRAGMENT = 1;\nexport const TEMPLATE_USE_IMPORT_NODE = 1 << 1;\nexport const TEMPLATE_USE_SVG = 1 << 2;\nexport const TEMPLATE_USE_MATHML = 1 << 3;\n\nexport const HYDRATION_START = '[';\n/** used to indicate that an `{:else}...` block was rendered */\nexport const HYDRATION_START_ELSE = '[!';\nexport const HYDRATION_END = ']';\nexport const HYDRATION_ERROR = {};\n\nexport const ELEMENT_IS_NAMESPACED = 1;\nexport const ELEMENT_PRESERVE_ATTRIBUTE_CASE = 1 << 1;\nexport const ELEMENT_IS_INPUT = 1 << 2;\n\nexport const UNINITIALIZED = Symbol();\n\n// Dev-time component properties\nexport const FILENAME = Symbol('filename');\nexport const HMR = Symbol('hmr');\n\nexport const NAMESPACE_HTML = 'http://www.w3.org/1999/xhtml';\nexport const NAMESPACE_SVG = 'http://www.w3.org/2000/svg';\nexport const NAMESPACE_MATHML = 'http://www.w3.org/1998/Math/MathML';\n\n// we use a list of ignorable runtime warnings because not every runtime warning\n// can be ignored and we want to keep the validation for svelte-ignore in place\nexport const IGNORABLE_RUNTIME_WARNINGS = /** @type {const} */ ([\n\t'await_waterfall',\n\t'await_reactivity_loss',\n\t'state_snapshot_uncloneable',\n\t'binding_property_non_reactive',\n\t'hydration_attribute_changed',\n\t'hydration_html_changed',\n\t'ownership_invalid_binding',\n\t'ownership_invalid_mutation'\n]);\n\n/**\n * Whitespace inside one of these elements will not result in\n * a whitespace node being created in any circumstances. (This\n * list is almost certainly very incomplete)\n * TODO this is currently unused\n */\nexport const ELEMENTS_WITHOUT_TEXT = ['audio', 'datalist', 'dl', 'optgroup', 'select', 'video'];\n\nexport const ATTACHMENT_KEY = '@attach';\n","export default false;\n","// Store the references to globals in case someone tries to monkey patch these, causing the below\n// to de-opt (this occurs often when using popular extensions).\nexport var is_array = Array.isArray;\nexport var index_of = Array.prototype.indexOf;\nexport var array_from = Array.from;\nexport var object_keys = Object.keys;\nexport var define_property = Object.defineProperty;\nexport var get_descriptor = Object.getOwnPropertyDescriptor;\nexport var get_descriptors = Object.getOwnPropertyDescriptors;\nexport var object_prototype = Object.prototype;\nexport var array_prototype = Array.prototype;\nexport var get_prototype_of = Object.getPrototypeOf;\nexport var is_extensible = Object.isExtensible;\n\n/**\n * @param {any} thing\n * @returns {thing is Function}\n */\nexport function is_function(thing) {\n\treturn typeof thing === 'function';\n}\n\nexport const noop = () => {};\n\n// Adapted from https://github.com/then/is-promise/blob/master/index.js\n// Distributed under MIT License https://github.com/then/is-promise/blob/master/LICENSE\n\n/**\n * @template [T=any]\n * @param {any} value\n * @returns {value is PromiseLike<T>}\n */\nexport function is_promise(value) {\n\treturn typeof value?.then === 'function';\n}\n\n/** @param {Function} fn */\nexport function run(fn) {\n\treturn fn();\n}\n\n/** @param {Array<() => void>} arr */\nexport function run_all(arr) {\n\tfor (var i = 0; i < arr.length; i++) {\n\t\tarr[i]();\n\t}\n}\n\n/**\n * TODO replace with Promise.withResolvers once supported widely enough\n * @template [T=void]\n */\nexport function deferred() {\n\t/** @type {(value: T) => void} */\n\tvar resolve;\n\n\t/** @type {(reason: any) => void} */\n\tvar reject;\n\n\t/** @type {Promise<T>} */\n\tvar promise = new Promise((res, rej) => {\n\t\tresolve = res;\n\t\treject = rej;\n\t});\n\n\t// @ts-expect-error\n\treturn { promise, resolve, reject };\n}\n\n/**\n * @template V\n * @param {V} value\n * @param {V | (() => V)} fallback\n * @param {boolean} [lazy]\n * @returns {V}\n */\nexport function fallback(value, fallback, lazy = false) {\n\treturn value === undefined\n\t\t? lazy\n\t\t\t? /** @type {() => V} */ (fallback)()\n\t\t\t: /** @type {V} */ (fallback)\n\t\t: value;\n}\n\n/**\n * When encountering a situation like `let [a, b, c] = $derived(blah())`,\n * we need to stash an intermediate value that `a`, `b`, and `c` derive\n * from, in case it's an iterable\n * @template T\n * @param {ArrayLike<T> | Iterable<T>} value\n * @param {number} [n]\n * @returns {Array<T>}\n */\nexport function to_array(value, n) {\n\t// return arrays unchanged\n\tif (Array.isArray(value)) {\n\t\treturn value;\n\t}\n\n\t// if value is not iterable, or `n` is unspecified (indicates a rest\n\t// element, which means we're not concerned about unbounded iterables)\n\t// convert to an array with `Array.from`\n\tif (n === undefined || !(Symbol.iterator in value)) {\n\t\treturn Array.from(value);\n\t}\n\n\t// otherwise, populate an array with `n` values\n\n\t/** @type {T[]} */\n\tconst array = [];\n\n\tfor (const element of value) {\n\t\tarray.push(element);\n\t\tif (array.length === n) break;\n\t}\n\n\treturn array;\n}\n","// General flags\nexport const DERIVED = 1 << 1;\nexport const EFFECT = 1 << 2;\nexport const RENDER_EFFECT = 1 << 3;\n/**\n * An effect that does not destroy its child effects when it reruns.\n * Runs as part of render effects, i.e. not eagerly as part of tree traversal or effect flushing.\n */\nexport const MANAGED_EFFECT = 1 << 24;\n/**\n * An effect that does not destroy its child effects when it reruns (like MANAGED_EFFECT).\n * Runs eagerly as part of tree traversal or effect flushing.\n */\nexport const BLOCK_EFFECT = 1 << 4;\nexport const BRANCH_EFFECT = 1 << 5;\nexport const ROOT_EFFECT = 1 << 6;\nexport const BOUNDARY_EFFECT = 1 << 7;\n/**\n * Indicates that a reaction is connected to an effect root — either it is an effect,\n * or it is a derived that is depended on by at least one effect. If a derived has\n * no dependents, we can disconnect it from the graph, allowing it to either be\n * GC'd or reconnected later if an effect comes to depend on it again\n */\nexport const CONNECTED = 1 << 9;\nexport const CLEAN = 1 << 10;\nexport const DIRTY = 1 << 11;\nexport const MAYBE_DIRTY = 1 << 12;\nexport const INERT = 1 << 13;\nexport const DESTROYED = 1 << 14;\n\n// Flags exclusive to effects\n/** Set once an effect that should run synchronously has run */\nexport const EFFECT_RAN = 1 << 15;\n/**\n * 'Transparent' effects do not create a transition boundary.\n * This is on a block effect 99% of the time but may also be on a branch effect if its parent block effect was pruned\n */\nexport const EFFECT_TRANSPARENT = 1 << 16;\nexport const EAGER_EFFECT = 1 << 17;\nexport const HEAD_EFFECT = 1 << 18;\nexport const EFFECT_PRESERVED = 1 << 19;\nexport const USER_EFFECT = 1 << 20;\n\n// Flags exclusive to deriveds\n/**\n * Tells that we marked this derived and its reactions as visited during the \"mark as (maybe) dirty\"-phase.\n * Will be lifted during execution of the derived and during checking its dirty state (both are necessary\n * because a derived might be checked but not executed).\n */\nexport const WAS_MARKED = 1 << 15;\n\n// Flags used for async\nexport const REACTION_IS_UPDATING = 1 << 21;\nexport const ASYNC = 1 << 22;\n\nexport const ERROR_VALUE = 1 << 23;\n\nexport const STATE_SYMBOL = Symbol('$state');\nexport const LEGACY_PROPS = Symbol('legacy props');\nexport const LOADING_ATTR_SYMBOL = Symbol('');\nexport const PROXY_PATH_SYMBOL = Symbol('proxy path');\n\n/** allow users to ignore aborted signal errors if `reason.name === 'StaleReactionError` */\nexport const STALE_REACTION = new (class StaleReactionError extends Error {\n\tname = 'StaleReactionError';\n\tmessage = 'The reaction that called `getAbortSignal()` was re-run or destroyed';\n})();\n\nexport const ELEMENT_NODE = 1;\nexport const TEXT_NODE = 3;\nexport const COMMENT_NODE = 8;\nexport const DOCUMENT_FRAGMENT_NODE = 11;\n","/* This file is generated by scripts/process-messages/index.js. Do not edit! */\n\nimport { DEV } from 'esm-env';\n\nexport * from '../shared/errors.js';\n\n/**\n * Cannot create a `$derived(...)` with an `await` expression outside of an effect tree\n * @returns {never}\n */\nexport function async_derived_orphan() {\n\tif (DEV) {\n\t\tconst error = new Error(`async_derived_orphan\\nCannot create a \\`$derived(...)\\` with an \\`await\\` expression outside of an effect tree\\nhttps://svelte.dev/e/async_derived_orphan`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/async_derived_orphan`);\n\t}\n}\n\n/**\n * Using `bind:value` together with a checkbox input is not allowed. Use `bind:checked` instead\n * @returns {never}\n */\nexport function bind_invalid_checkbox_value() {\n\tif (DEV) {\n\t\tconst error = new Error(`bind_invalid_checkbox_value\\nUsing \\`bind:value\\` together with a checkbox input is not allowed. Use \\`bind:checked\\` instead\\nhttps://svelte.dev/e/bind_invalid_checkbox_value`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/bind_invalid_checkbox_value`);\n\t}\n}\n\n/**\n * Component %component% has an export named `%key%` that a consumer component is trying to access using `bind:%key%`, which is disallowed. Instead, use `bind:this` (e.g. `<%name% bind:this={component} />`) and then access the property on the bound component instance (e.g. `component.%key%`)\n * @param {string} component\n * @param {string} key\n * @param {string} name\n * @returns {never}\n */\nexport function bind_invalid_export(component, key, name) {\n\tif (DEV) {\n\t\tconst error = new Error(`bind_invalid_export\\nComponent ${component} has an export named \\`${key}\\` that a consumer component is trying to access using \\`bind:${key}\\`, which is disallowed. Instead, use \\`bind:this\\` (e.g. \\`<${name} bind:this={component} />\\`) and then access the property on the bound component instance (e.g. \\`component.${key}\\`)\\nhttps://svelte.dev/e/bind_invalid_export`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/bind_invalid_export`);\n\t}\n}\n\n/**\n * A component is attempting to bind to a non-bindable property `%key%` belonging to %component% (i.e. `<%name% bind:%key%={...}>`). To mark a property as bindable: `let { %key% = $bindable() } = $props()`\n * @param {string} key\n * @param {string} component\n * @param {string} name\n * @returns {never}\n */\nexport function bind_not_bindable(key, component, name) {\n\tif (DEV) {\n\t\tconst error = new Error(`bind_not_bindable\\nA component is attempting to bind to a non-bindable property \\`${key}\\` belonging to ${component} (i.e. \\`<${name} bind:${key}={...}>\\`). To mark a property as bindable: \\`let { ${key} = $bindable() } = $props()\\`\\nhttps://svelte.dev/e/bind_not_bindable`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/bind_not_bindable`);\n\t}\n}\n\n/**\n * Calling `%method%` on a component instance (of %component%) is no longer valid in Svelte 5\n * @param {string} method\n * @param {string} component\n * @returns {never}\n */\nexport function component_api_changed(method, component) {\n\tif (DEV) {\n\t\tconst error = new Error(`component_api_changed\\nCalling \\`${method}\\` on a component instance (of ${component}) is no longer valid in Svelte 5\\nhttps://svelte.dev/e/component_api_changed`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/component_api_changed`);\n\t}\n}\n\n/**\n * Attempted to instantiate %component% with `new %name%`, which is no longer valid in Svelte 5. If this component is not under your control, set the `compatibility.componentApi` compiler option to `4` to keep it working.\n * @param {string} component\n * @param {string} name\n * @returns {never}\n */\nexport function component_api_invalid_new(component, name) {\n\tif (DEV) {\n\t\tconst error = new Error(`component_api_invalid_new\\nAttempted to instantiate ${component} with \\`new ${name}\\`, which is no longer valid in Svelte 5. If this component is not under your control, set the \\`compatibility.componentApi\\` compiler option to \\`4\\` to keep it working.\\nhttps://svelte.dev/e/component_api_invalid_new`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/component_api_invalid_new`);\n\t}\n}\n\n/**\n * A derived value cannot reference itself recursively\n * @returns {never}\n */\nexport function derived_references_self() {\n\tif (DEV) {\n\t\tconst error = new Error(`derived_references_self\\nA derived value cannot reference itself recursively\\nhttps://svelte.dev/e/derived_references_self`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/derived_references_self`);\n\t}\n}\n\n/**\n * Keyed each block has duplicate key `%value%` at indexes %a% and %b%\n * @param {string} a\n * @param {string} b\n * @param {string | undefined | null} [value]\n * @returns {never}\n */\nexport function each_key_duplicate(a, b, value) {\n\tif (DEV) {\n\t\tconst error = new Error(`each_key_duplicate\\n${value\n\t\t\t? `Keyed each block has duplicate key \\`${value}\\` at indexes ${a} and ${b}`\n\t\t\t: `Keyed each block has duplicate key at indexes ${a} and ${b}`}\\nhttps://svelte.dev/e/each_key_duplicate`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/each_key_duplicate`);\n\t}\n}\n\n/**\n * `%rune%` cannot be used inside an effect cleanup function\n * @param {string} rune\n * @returns {never}\n */\nexport function effect_in_teardown(rune) {\n\tif (DEV) {\n\t\tconst error = new Error(`effect_in_teardown\\n\\`${rune}\\` cannot be used inside an effect cleanup function\\nhttps://svelte.dev/e/effect_in_teardown`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/effect_in_teardown`);\n\t}\n}\n\n/**\n * Effect cannot be created inside a `$derived` value that was not itself created inside an effect\n * @returns {never}\n */\nexport function effect_in_unowned_derived() {\n\tif (DEV) {\n\t\tconst error = new Error(`effect_in_unowned_derived\\nEffect cannot be created inside a \\`$derived\\` value that was not itself created inside an effect\\nhttps://svelte.dev/e/effect_in_unowned_derived`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/effect_in_unowned_derived`);\n\t}\n}\n\n/**\n * `%rune%` can only be used inside an effect (e.g. during component initialisation)\n * @param {string} rune\n * @returns {never}\n */\nexport function effect_orphan(rune) {\n\tif (DEV) {\n\t\tconst error = new Error(`effect_orphan\\n\\`${rune}\\` can only be used inside an effect (e.g. during component initialisation)\\nhttps://svelte.dev/e/effect_orphan`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/effect_orphan`);\n\t}\n}\n\n/**\n * `$effect.pending()` can only be called inside an effect or derived\n * @returns {never}\n */\nexport function effect_pending_outside_reaction() {\n\tif (DEV) {\n\t\tconst error = new Error(`effect_pending_outside_reaction\\n\\`$effect.pending()\\` can only be called inside an effect or derived\\nhttps://svelte.dev/e/effect_pending_outside_reaction`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/effect_pending_outside_reaction`);\n\t}\n}\n\n/**\n * Maximum update depth exceeded. This typically indicates that an effect reads and writes the same piece of state\n * @returns {never}\n */\nexport function effect_update_depth_exceeded() {\n\tif (DEV) {\n\t\tconst error = new Error(`effect_update_depth_exceeded\\nMaximum update depth exceeded. This typically indicates that an effect reads and writes the same piece of state\\nhttps://svelte.dev/e/effect_update_depth_exceeded`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/effect_update_depth_exceeded`);\n\t}\n}\n\n/**\n * Cannot use `flushSync` inside an effect\n * @returns {never}\n */\nexport function flush_sync_in_effect() {\n\tif (DEV) {\n\t\tconst error = new Error(`flush_sync_in_effect\\nCannot use \\`flushSync\\` inside an effect\\nhttps://svelte.dev/e/flush_sync_in_effect`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/flush_sync_in_effect`);\n\t}\n}\n\n/**\n * Cannot commit a fork that was already discarded\n * @returns {never}\n */\nexport function fork_discarded() {\n\tif (DEV) {\n\t\tconst error = new Error(`fork_discarded\\nCannot commit a fork that was already discarded\\nhttps://svelte.dev/e/fork_discarded`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/fork_discarded`);\n\t}\n}\n\n/**\n * Cannot create a fork inside an effect or when state changes are pending\n * @returns {never}\n */\nexport function fork_timing() {\n\tif (DEV) {\n\t\tconst error = new Error(`fork_timing\\nCannot create a fork inside an effect or when state changes are pending\\nhttps://svelte.dev/e/fork_timing`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/fork_timing`);\n\t}\n}\n\n/**\n * `getAbortSignal()` can only be called inside an effect or derived\n * @returns {never}\n */\nexport function get_abort_signal_outside_reaction() {\n\tif (DEV) {\n\t\tconst error = new Error(`get_abort_signal_outside_reaction\\n\\`getAbortSignal()\\` can only be called inside an effect or derived\\nhttps://svelte.dev/e/get_abort_signal_outside_reaction`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/get_abort_signal_outside_reaction`);\n\t}\n}\n\n/**\n * Expected to find a hydratable with key `%key%` during hydration, but did not.\n * @param {string} key\n * @returns {never}\n */\nexport function hydratable_missing_but_required(key) {\n\tif (DEV) {\n\t\tconst error = new Error(`hydratable_missing_but_required\\nExpected to find a hydratable with key \\`${key}\\` during hydration, but did not.\\nhttps://svelte.dev/e/hydratable_missing_but_required`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/hydratable_missing_but_required`);\n\t}\n}\n\n/**\n * Failed to hydrate the application\n * @returns {never}\n */\nexport function hydration_failed() {\n\tif (DEV) {\n\t\tconst error = new Error(`hydration_failed\\nFailed to hydrate the application\\nhttps://svelte.dev/e/hydration_failed`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/hydration_failed`);\n\t}\n}\n\n/**\n * Could not `{@render}` snippet due to the expression being `null` or `undefined`. Consider using optional chaining `{@render snippet?.()}`\n * @returns {never}\n */\nexport function invalid_snippet() {\n\tif (DEV) {\n\t\tconst error = new Error(`invalid_snippet\\nCould not \\`{@render}\\` snippet due to the expression being \\`null\\` or \\`undefined\\`. Consider using optional chaining \\`{@render snippet?.()}\\`\\nhttps://svelte.dev/e/invalid_snippet`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/invalid_snippet`);\n\t}\n}\n\n/**\n * `%name%(...)` cannot be used in runes mode\n * @param {string} name\n * @returns {never}\n */\nexport function lifecycle_legacy_only(name) {\n\tif (DEV) {\n\t\tconst error = new Error(`lifecycle_legacy_only\\n\\`${name}(...)\\` cannot be used in runes mode\\nhttps://svelte.dev/e/lifecycle_legacy_only`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/lifecycle_legacy_only`);\n\t}\n}\n\n/**\n * Cannot do `bind:%key%={undefined}` when `%key%` has a fallback value\n * @param {string} key\n * @returns {never}\n */\nexport function props_invalid_value(key) {\n\tif (DEV) {\n\t\tconst error = new Error(`props_invalid_value\\nCannot do \\`bind:${key}={undefined}\\` when \\`${key}\\` has a fallback value\\nhttps://svelte.dev/e/props_invalid_value`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/props_invalid_value`);\n\t}\n}\n\n/**\n * Rest element properties of `$props()` such as `%property%` are readonly\n * @param {string} property\n * @returns {never}\n */\nexport function props_rest_readonly(property) {\n\tif (DEV) {\n\t\tconst error = new Error(`props_rest_readonly\\nRest element properties of \\`$props()\\` such as \\`${property}\\` are readonly\\nhttps://svelte.dev/e/props_rest_readonly`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/props_rest_readonly`);\n\t}\n}\n\n/**\n * The `%rune%` rune is only available inside `.svelte` and `.svelte.js/ts` files\n * @param {string} rune\n * @returns {never}\n */\nexport function rune_outside_svelte(rune) {\n\tif (DEV) {\n\t\tconst error = new Error(`rune_outside_svelte\\nThe \\`${rune}\\` rune is only available inside \\`.svelte\\` and \\`.svelte.js/ts\\` files\\nhttps://svelte.dev/e/rune_outside_svelte`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/rune_outside_svelte`);\n\t}\n}\n\n/**\n * `setContext` must be called when a component first initializes, not in a subsequent effect or after an `await` expression\n * @returns {never}\n */\nexport function set_context_after_init() {\n\tif (DEV) {\n\t\tconst error = new Error(`set_context_after_init\\n\\`setContext\\` must be called when a component first initializes, not in a subsequent effect or after an \\`await\\` expression\\nhttps://svelte.dev/e/set_context_after_init`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/set_context_after_init`);\n\t}\n}\n\n/**\n * Property descriptors defined on `$state` objects must contain `value` and always be `enumerable`, `configurable` and `writable`.\n * @returns {never}\n */\nexport function state_descriptors_fixed() {\n\tif (DEV) {\n\t\tconst error = new Error(`state_descriptors_fixed\\nProperty descriptors defined on \\`$state\\` objects must contain \\`value\\` and always be \\`enumerable\\`, \\`configurable\\` and \\`writable\\`.\\nhttps://svelte.dev/e/state_descriptors_fixed`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/state_descriptors_fixed`);\n\t}\n}\n\n/**\n * Cannot set prototype of `$state` object\n * @returns {never}\n */\nexport function state_prototype_fixed() {\n\tif (DEV) {\n\t\tconst error = new Error(`state_prototype_fixed\\nCannot set prototype of \\`$state\\` object\\nhttps://svelte.dev/e/state_prototype_fixed`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/state_prototype_fixed`);\n\t}\n}\n\n/**\n * Updating state inside `$derived(...)`, `$inspect(...)` or a template expression is forbidden. If the value should not be reactive, declare it without `$state`\n * @returns {never}\n */\nexport function state_unsafe_mutation() {\n\tif (DEV) {\n\t\tconst error = new Error(`state_unsafe_mutation\\nUpdating state inside \\`$derived(...)\\`, \\`$inspect(...)\\` or a template expression is forbidden. If the value should not be reactive, declare it without \\`$state\\`\\nhttps://svelte.dev/e/state_unsafe_mutation`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/state_unsafe_mutation`);\n\t}\n}\n\n/**\n * A `<svelte:boundary>` `reset` function cannot be called while an error is still being handled\n * @returns {never}\n */\nexport function svelte_boundary_reset_onerror() {\n\tif (DEV) {\n\t\tconst error = new Error(`svelte_boundary_reset_onerror\\nA \\`<svelte:boundary>\\` \\`reset\\` function cannot be called while an error is still being handled\\nhttps://svelte.dev/e/svelte_boundary_reset_onerror`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`);\n\t}\n}","/* This file is generated by scripts/process-messages/index.js. Do not edit! */\n\nimport { DEV } from 'esm-env';\n\nvar bold = 'font-weight: bold';\nvar normal = 'font-weight: normal';\n\n/**\n * Assignment to `%property%` property (%location%) will evaluate to the right-hand side, not the value of `%property%` following the assignment. This may result in unexpected behaviour.\n * @param {string} property\n * @param {string} location\n */\nexport function assignment_value_stale(property, location) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] assignment_value_stale\\n%cAssignment to \\`${property}\\` property (${location}) will evaluate to the right-hand side, not the value of \\`${property}\\` following the assignment. This may result in unexpected behaviour.\\nhttps://svelte.dev/e/assignment_value_stale`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/assignment_value_stale`);\n\t}\n}\n\n/**\n * Detected reactivity loss when reading `%name%`. This happens when state is read in an async function after an earlier `await`\n * @param {string} name\n */\nexport function await_reactivity_loss(name) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] await_reactivity_loss\\n%cDetected reactivity loss when reading \\`${name}\\`. This happens when state is read in an async function after an earlier \\`await\\`\\nhttps://svelte.dev/e/await_reactivity_loss`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/await_reactivity_loss`);\n\t}\n}\n\n/**\n * An async derived, `%name%` (%location%) was not read immediately after it resolved. This often indicates an unnecessary waterfall, which can slow down your app\n * @param {string} name\n * @param {string} location\n */\nexport function await_waterfall(name, location) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] await_waterfall\\n%cAn async derived, \\`${name}\\` (${location}) was not read immediately after it resolved. This often indicates an unnecessary waterfall, which can slow down your app\\nhttps://svelte.dev/e/await_waterfall`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/await_waterfall`);\n\t}\n}\n\n/**\n * `%binding%` (%location%) is binding to a non-reactive property\n * @param {string} binding\n * @param {string | undefined | null} [location]\n */\nexport function binding_property_non_reactive(binding, location) {\n\tif (DEV) {\n\t\tconsole.warn(\n\t\t\t`%c[svelte] binding_property_non_reactive\\n%c${location\n\t\t\t\t? `\\`${binding}\\` (${location}) is binding to a non-reactive property`\n\t\t\t\t: `\\`${binding}\\` is binding to a non-reactive property`}\\nhttps://svelte.dev/e/binding_property_non_reactive`,\n\t\t\tbold,\n\t\t\tnormal\n\t\t);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/binding_property_non_reactive`);\n\t}\n}\n\n/**\n * Your `console.%method%` contained `$state` proxies. Consider using `$inspect(...)` or `$state.snapshot(...)` instead\n * @param {string} method\n */\nexport function console_log_state(method) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] console_log_state\\n%cYour \\`console.${method}\\` contained \\`$state\\` proxies. Consider using \\`$inspect(...)\\` or \\`$state.snapshot(...)\\` instead\\nhttps://svelte.dev/e/console_log_state`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/console_log_state`);\n\t}\n}\n\n/**\n * %handler% should be a function. Did you mean to %suggestion%?\n * @param {string} handler\n * @param {string} suggestion\n */\nexport function event_handler_invalid(handler, suggestion) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] event_handler_invalid\\n%c${handler} should be a function. Did you mean to ${suggestion}?\\nhttps://svelte.dev/e/event_handler_invalid`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/event_handler_invalid`);\n\t}\n}\n\n/**\n * Expected to find a hydratable with key `%key%` during hydration, but did not.\n * @param {string} key\n */\nexport function hydratable_missing_but_expected(key) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] hydratable_missing_but_expected\\n%cExpected to find a hydratable with key \\`${key}\\` during hydration, but did not.\\nhttps://svelte.dev/e/hydratable_missing_but_expected`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/hydratable_missing_but_expected`);\n\t}\n}\n\n/**\n * The `%attribute%` attribute on `%html%` changed its value between server and client renders. The client value, `%value%`, will be ignored in favour of the server value\n * @param {string} attribute\n * @param {string} html\n * @param {string} value\n */\nexport function hydration_attribute_changed(attribute, html, value) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] hydration_attribute_changed\\n%cThe \\`${attribute}\\` attribute on \\`${html}\\` changed its value between server and client renders. The client value, \\`${value}\\`, will be ignored in favour of the server value\\nhttps://svelte.dev/e/hydration_attribute_changed`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/hydration_attribute_changed`);\n\t}\n}\n\n/**\n * The value of an `{@html ...}` block %location% changed between server and client renders. The client value will be ignored in favour of the server value\n * @param {string | undefined | null} [location]\n */\nexport function hydration_html_changed(location) {\n\tif (DEV) {\n\t\tconsole.warn(\n\t\t\t`%c[svelte] hydration_html_changed\\n%c${location\n\t\t\t\t? `The value of an \\`{@html ...}\\` block ${location} changed between server and client renders. The client value will be ignored in favour of the server value`\n\t\t\t\t: 'The value of an `{@html ...}` block changed between server and client renders. The client value will be ignored in favour of the server value'}\\nhttps://svelte.dev/e/hydration_html_changed`,\n\t\t\tbold,\n\t\t\tnormal\n\t\t);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/hydration_html_changed`);\n\t}\n}\n\n/**\n * Hydration failed because the initial UI does not match what was rendered on the server. The error occurred near %location%\n * @param {string | undefined | null} [location]\n */\nexport function hydration_mismatch(location) {\n\tif (DEV) {\n\t\tconsole.warn(\n\t\t\t`%c[svelte] hydration_mismatch\\n%c${location\n\t\t\t\t? `Hydration failed because the initial UI does not match what was rendered on the server. The error occurred near ${location}`\n\t\t\t\t: 'Hydration failed because the initial UI does not match what was rendered on the server'}\\nhttps://svelte.dev/e/hydration_mismatch`,\n\t\t\tbold,\n\t\t\tnormal\n\t\t);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/hydration_mismatch`);\n\t}\n}\n\n/**\n * The `render` function passed to `createRawSnippet` should return HTML for a single element\n */\nexport function invalid_raw_snippet_render() {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] invalid_raw_snippet_render\\n%cThe \\`render\\` function passed to \\`createRawSnippet\\` should return HTML for a single element\\nhttps://svelte.dev/e/invalid_raw_snippet_render`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/invalid_raw_snippet_render`);\n\t}\n}\n\n/**\n * Detected a migrated `$:` reactive block in `%filename%` that both accesses and updates the same reactive value. This may cause recursive updates when converted to an `$effect`.\n * @param {string} filename\n */\nexport function legacy_recursive_reactive_block(filename) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] legacy_recursive_reactive_block\\n%cDetected a migrated \\`$:\\` reactive block in \\`${filename}\\` that both accesses and updates the same reactive value. This may cause recursive updates when converted to an \\`$effect\\`.\\nhttps://svelte.dev/e/legacy_recursive_reactive_block`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/legacy_recursive_reactive_block`);\n\t}\n}\n\n/**\n * Tried to unmount a component that was not mounted\n */\nexport function lifecycle_double_unmount() {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] lifecycle_double_unmount\\n%cTried to unmount a component that was not mounted\\nhttps://svelte.dev/e/lifecycle_double_unmount`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/lifecycle_double_unmount`);\n\t}\n}\n\n/**\n * %parent% passed property `%prop%` to %child% with `bind:`, but its parent component %owner% did not declare `%prop%` as a binding. Consider creating a binding between %owner% and %parent% (e.g. `bind:%prop%={...}` instead of `%prop%={...}`)\n * @param {string} parent\n * @param {string} prop\n * @param {string} child\n * @param {string} owner\n */\nexport function ownership_invalid_binding(parent, prop, child, owner) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] ownership_invalid_binding\\n%c${parent} passed property \\`${prop}\\` to ${child} with \\`bind:\\`, but its parent component ${owner} did not declare \\`${prop}\\` as a binding. Consider creating a binding between ${owner} and ${parent} (e.g. \\`bind:${prop}={...}\\` instead of \\`${prop}={...}\\`)\\nhttps://svelte.dev/e/ownership_invalid_binding`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/ownership_invalid_binding`);\n\t}\n}\n\n/**\n * Mutating unbound props (`%name%`, at %location%) is strongly discouraged. Consider using `bind:%prop%={...}` in %parent% (or using a callback) instead\n * @param {string} name\n * @param {string} location\n * @param {string} prop\n * @param {string} parent\n */\nexport function ownership_invalid_mutation(name, location, prop, parent) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] ownership_invalid_mutation\\n%cMutating unbound props (\\`${name}\\`, at ${location}) is strongly discouraged. Consider using \\`bind:${prop}={...}\\` in ${parent} (or using a callback) instead\\nhttps://svelte.dev/e/ownership_invalid_mutation`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/ownership_invalid_mutation`);\n\t}\n}\n\n/**\n * The `value` property of a `<select multiple>` element should be an array, but it received a non-array value. The selection will be kept as is.\n */\nexport function select_multiple_invalid_value() {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] select_multiple_invalid_value\\n%cThe \\`value\\` property of a \\`<select multiple>\\` element should be an array, but it received a non-array value. The selection will be kept as is.\\nhttps://svelte.dev/e/select_multiple_invalid_value`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/select_multiple_invalid_value`);\n\t}\n}\n\n/**\n * Reactive `$state(...)` proxies and the values they proxy have different identities. Because of this, comparisons with `%operator%` will produce unexpected results\n * @param {string} operator\n */\nexport function state_proxy_equality_mismatch(operator) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] state_proxy_equality_mismatch\\n%cReactive \\`$state(...)\\` proxies and the values they proxy have different identities. Because of this, comparisons with \\`${operator}\\` will produce unexpected results\\nhttps://svelte.dev/e/state_proxy_equality_mismatch`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/state_proxy_equality_mismatch`);\n\t}\n}\n\n/**\n * Tried to unmount a state proxy, rather than a component\n */\nexport function state_proxy_unmount() {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] state_proxy_unmount\\n%cTried to unmount a state proxy, rather than a component\\nhttps://svelte.dev/e/state_proxy_unmount`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/state_proxy_unmount`);\n\t}\n}\n\n/**\n * A `<svelte:boundary>` `reset` function only resets the boundary the first time it is called\n */\nexport function svelte_boundary_reset_noop() {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] svelte_boundary_reset_noop\\n%cA \\`<svelte:boundary>\\` \\`reset\\` function only resets the boundary the first time it is called\\nhttps://svelte.dev/e/svelte_boundary_reset_noop`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`);\n\t}\n}\n\n/**\n * The `slide` transition does not work correctly for elements with `display: %value%`\n * @param {string} value\n */\nexport function transition_slide_display(value) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] transition_slide_display\\n%cThe \\`slide\\` transition does not work correctly for elements with \\`display: ${value}\\`\\nhttps://svelte.dev/e/transition_slide_display`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/transition_slide_display`);\n\t}\n}","/** @import { Equals } from '#client' */\n\n/** @type {Equals} */\nexport function equals(value) {\n\treturn value === this.v;\n}\n\n/**\n * @param {unknown} a\n * @param {unknown} b\n * @returns {boolean}\n */\nexport function safe_not_equal(a, b) {\n\treturn a != a\n\t\t? b == b\n\t\t: a !== b || (a !== null && typeof a === 'object') || typeof a === 'function';\n}\n\n/**\n * @param {unknown} a\n * @param {unknown} b\n * @returns {boolean}\n */\nexport function not_equal(a, b) {\n\treturn a !== b;\n}\n\n/** @type {Equals} */\nexport function safe_equals(value) {\n\treturn !safe_not_equal(value, this.v);\n}\n","/** True if experimental.async=true */\nexport let async_mode_flag = false;\n/** True if we're not certain that we only have Svelte 5 code in the compilation */\nexport let legacy_mode_flag = false;\n/** True if $inspect.trace is used */\nexport let tracing_mode_flag = false;\n\nexport function enable_async_mode_flag() {\n\tasync_mode_flag = true;\n}\n\n/** ONLY USE THIS DURING TESTING */\nexport function disable_async_mode_flag() {\n\tasync_mode_flag = false;\n}\n\nexport function enable_legacy_mode_flag() {\n\tlegacy_mode_flag = true;\n}\n\nexport function enable_tracing_mode_flag() {\n\ttracing_mode_flag = true;\n}\n","/** @import { ComponentContext, DevStackEntry, Effect } from '#client' */\nimport { DEV } from 'esm-env';\nimport * as e from './errors.js';\nimport { active_effect, active_reaction } from './runtime.js';\nimport { create_user_effect } from './reactivity/effects.js';\nimport { async_mode_flag, legacy_mode_flag } from '../flags/index.js';\nimport { FILENAME } from '../../constants.js';\nimport { BRANCH_EFFECT, EFFECT_RAN } from './constants.js';\n\n/** @type {ComponentContext | null} */\nexport let component_context = null;\n\n/** @param {ComponentContext | null} context */\nexport function set_component_context(context) {\n\tcomponent_context = context;\n}\n\n/** @type {DevStackEntry | null} */\nexport let dev_stack = null;\n\n/** @param {DevStackEntry | null} stack */\nexport function set_dev_stack(stack) {\n\tdev_stack = stack;\n}\n\n/**\n * Execute a callback with a new dev stack entry\n * @param {() => any} callback - Function to execute\n * @param {DevStackEntry['type']} type - Type of block/component\n * @param {any} component - Component function\n * @param {number} line - Line number\n * @param {number} column - Column number\n * @param {Record<string, any>} [additional] - Any additional properties to add to the dev stack entry\n * @returns {any}\n */\nexport function add_svelte_meta(callback, type, component, line, column, additional) {\n\tconst parent = dev_stack;\n\n\tdev_stack = {\n\t\ttype,\n\t\tfile: component[FILENAME],\n\t\tline,\n\t\tcolumn,\n\t\tparent,\n\t\t...additional\n\t};\n\n\ttry {\n\t\treturn callback();\n\t} finally {\n\t\tdev_stack = parent;\n\t}\n}\n\n/**\n * The current component function. Different from current component context:\n * ```html\n * <!-- App.svelte -->\n * <Foo>\n * <Bar /> <!-- context == Foo.svelte, function == App.svelte -->\n * </Foo>\n * ```\n * @type {ComponentContext['function']}\n */\nexport let dev_current_component_function = null;\n\n/** @param {ComponentContext['function']} fn */\nexport function set_dev_current_component_function(fn) {\n\tdev_current_component_function = fn;\n}\n\n/**\n * Returns a `[get, set]` pair of functions for working with context in a type-safe way.\n *\n * `get` will throw an error if no parent component called `set`.\n *\n * @template T\n * @returns {[() => T, (context: T) => T]}\n * @since 5.40.0\n */\nexport function createContext() {\n\tconst key = {};\n\n\treturn [\n\t\t() => {\n\t\t\tif (!hasContext(key)) {\n\t\t\t\te.missing_context();\n\t\t\t}\n\n\t\t\treturn getContext(key);\n\t\t},\n\t\t(context) => setContext(key, context)\n\t];\n}\n\n/**\n * Retrieves the context that belongs to the closest parent component with the specified `key`.\n * Must be called during component initialisation.\n *\n * [`createContext`](https://svelte.dev/docs/svelte/svelte#createContext) is a type-safe alternative.\n *\n * @template T\n * @param {any} key\n * @returns {T}\n */\nexport function getContext(key) {\n\tconst context_map = get_or_init_context_map('getContext');\n\tconst result = /** @type {T} */ (context_map.get(key));\n\treturn result;\n}\n\n/**\n * Associates an arbitrary `context` object with the current component and the specified `key`\n * and returns that object. The context is then available to children of the component\n * (including slotted content) with `getContext`.\n *\n * Like lifecycle functions, this must be called during component initialisation.\n *\n * [`createContext`](https://svelte.dev/docs/svelte/svelte#createContext) is a type-safe alternative.\n *\n * @template T\n * @param {any} key\n * @param {T} context\n * @returns {T}\n */\nexport function setContext(key, context) {\n\tconst context_map = get_or_init_context_map('setContext');\n\n\tif (async_mode_flag) {\n\t\tvar flags = /** @type {Effect} */ (active_effect).f;\n\t\tvar valid =\n\t\t\t!active_reaction &&\n\t\t\t(flags & BRANCH_EFFECT) !== 0 &&\n\t\t\t// pop() runs synchronously, so this indicates we're setting context after an await\n\t\t\t!(/** @type {ComponentContext} */ (component_context).i);\n\n\t\tif (!valid) {\n\t\t\te.set_context_after_init();\n\t\t}\n\t}\n\n\tcontext_map.set(key, context);\n\treturn context;\n}\n\n/**\n * Checks whether a given `key` has been set in the context of a parent component.\n * Must be called during component initialisation.\n *\n * @param {any} key\n * @returns {boolean}\n */\nexport function hasContext(key) {\n\tconst context_map = get_or_init_context_map('hasContext');\n\treturn context_map.has(key);\n}\n\n/**\n * Retrieves the whole context map that belongs to the closest parent component.\n * Must be called during component initialisation. Useful, for example, if you\n * programmatically create a component and want to pass the existing context to it.\n *\n * @template {Map<any, any>} [T=Map<any, any>]\n * @returns {T}\n */\nexport function getAllContexts() {\n\tconst context_map = get_or_init_context_map('getAllContexts');\n\treturn /** @type {T} */ (context_map);\n}\n\n/**\n * @param {Record<string, unknown>} props\n * @param {any} runes\n * @param {Function} [fn]\n * @returns {void}\n */\nexport function push(props, runes = false, fn) {\n\tcomponent_context = {\n\t\tp: component_context,\n\t\ti: false,\n\t\tc: null,\n\t\te: null,\n\t\ts: props,\n\t\tx: null,\n\t\tl: legacy_mode_flag && !runes ? { s: null, u: null, $: [] } : null\n\t};\n\n\tif (DEV) {\n\t\t// component function\n\t\tcomponent_context.function = fn;\n\t\tdev_current_component_function = fn;\n\t}\n}\n\n/**\n * @template {Record<string, any>} T\n * @param {T} [component]\n * @returns {T}\n */\nexport function pop(component) {\n\tvar context = /** @type {ComponentContext} */ (component_context);\n\tvar effects = context.e;\n\n\tif (effects !== null) {\n\t\tcontext.e = null;\n\n\t\tfor (var fn of effects) {\n\t\t\tcreate_user_effect(fn);\n\t\t}\n\t}\n\n\tif (component !== undefined) {\n\t\tcontext.x = component;\n\t}\n\n\tcontext.i = true;\n\n\tcomponent_context = context.p;\n\n\tif (DEV) {\n\t\tdev_current_component_function = component_context?.function ?? null;\n\t}\n\n\treturn component ?? /** @type {T} */ ({});\n}\n\n/** @returns {boolean} */\nexport function is_runes() {\n\treturn !legacy_mode_flag || (component_context !== null && component_context.l === null);\n}\n\n/**\n * @param {string} name\n * @returns {Map<unknown, unknown>}\n */\nfunction get_or_init_context_map(name) {\n\tif (component_context === null) {\n\t\te.lifecycle_outside_component(name);\n\t}\n\n\treturn (component_context.c ??= new Map(get_parent_context(component_context) || undefined));\n}\n\n/**\n * @param {ComponentContext} component_context\n * @returns {Map<unknown, unknown> | null}\n */\nfunction get_parent_context(component_context) {\n\tlet parent = component_context.p;\n\twhile (parent !== null) {\n\t\tconst context_map = parent.c;\n\t\tif (context_map !== null) {\n\t\t\treturn context_map;\n\t\t}\n\t\tparent = parent.p;\n\t}\n\treturn null;\n}\n","import { run_all } from '../../shared/utils.js';\nimport { is_flushing_sync } from '../reactivity/batch.js';\n\n/** @type {Array<() => void>} */\nlet micro_tasks = [];\n\nfunction run_micro_tasks() {\n\tvar tasks = micro_tasks;\n\tmicro_tasks = [];\n\trun_all(tasks);\n}\n\n/**\n * @param {() => void} fn\n */\nexport function queue_micro_task(fn) {\n\tif (micro_tasks.length === 0 && !is_flushing_sync) {\n\t\tvar tasks = micro_tasks;\n\t\tqueueMicrotask(() => {\n\t\t\t// If this is false, a flushSync happened in the meantime. Do _not_ run new scheduled microtasks in that case\n\t\t\t// as the ordering of microtasks would be broken at that point - consider this case:\n\t\t\t// - queue_micro_task schedules microtask A to flush task X\n\t\t\t// - synchronously after, flushSync runs, processing task X\n\t\t\t// - synchronously after, some other microtask B is scheduled, but not through queue_micro_task but for example a Promise.resolve() in user code\n\t\t\t// - synchronously after, queue_micro_task schedules microtask C to flush task Y\n\t\t\t// - one tick later, microtask A now resolves, flushing task Y before microtask B, which is incorrect\n\t\t\t// This if check prevents that race condition (that realistically will only happen in tests)\n\t\t\tif (tasks === micro_tasks) run_micro_tasks();\n\t\t});\n\t}\n\n\tmicro_tasks.push(fn);\n}\n\n/**\n * Synchronously run any queued tasks.\n */\nexport function flush_tasks() {\n\twhile (micro_tasks.length > 0) {\n\t\trun_micro_tasks();\n\t}\n}\n","/** @import { Derived, Effect } from '#client' */\n/** @import { Boundary } from './dom/blocks/boundary.js' */\nimport { DEV } from 'esm-env';\nimport { FILENAME } from '../../constants.js';\nimport { is_firefox } from './dom/operations.js';\nimport { ERROR_VALUE, BOUNDARY_EFFECT, EFFECT_RAN } from './constants.js';\nimport { define_property, get_descriptor } from '../shared/utils.js';\nimport { active_effect, active_reaction } from './runtime.js';\n\nconst adjustments = new WeakMap();\n\n/**\n * @param {unknown} error\n */\nexport function handle_error(error) {\n\tvar effect = active_effect;\n\n\t// for unowned deriveds, don't throw until we read the value\n\tif (effect === null) {\n\t\t/** @type {Derived} */ (active_reaction).f |= ERROR_VALUE;\n\t\treturn error;\n\t}\n\n\tif (DEV && error instanceof Error && !adjustments.has(error)) {\n\t\tadjustments.set(error, get_adjustments(error, effect));\n\t}\n\n\tif ((effect.f & EFFECT_RAN) === 0) {\n\t\t// if the error occurred while creating this subtree, we let it\n\t\t// bubble up until it hits a boundary that can handle it\n\t\tif ((effect.f & BOUNDARY_EFFECT) === 0) {\n\t\t\tif (DEV && !effect.parent && error instanceof Error) {\n\t\t\t\tapply_adjustments(error);\n\t\t\t}\n\n\t\t\tthrow error;\n\t\t}\n\n\t\t/** @type {Boundary} */ (effect.b).error(error);\n\t} else {\n\t\t// otherwise we bubble up the effect tree ourselves\n\t\tinvoke_error_boundary(error, effect);\n\t}\n}\n\n/**\n * @param {unknown} error\n * @param {Effect | null} effect\n */\nexport function invoke_error_boundary(error, effect) {\n\twhile (effect !== null) {\n\t\tif ((effect.f & BOUNDARY_EFFECT) !== 0) {\n\t\t\ttry {\n\t\t\t\t/** @type {Boundary} */ (effect.b).error(error);\n\t\t\t\treturn;\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\n\t\teffect = effect.parent;\n\t}\n\n\tif (DEV && error instanceof Error) {\n\t\tapply_adjustments(error);\n\t}\n\n\tthrow error;\n}\n\n/**\n * Add useful information to the error message/stack in development\n * @param {Error} error\n * @param {Effect} effect\n */\nfunction get_adjustments(error, effect) {\n\tconst message_descriptor = get_descriptor(error, 'message');\n\n\t// if the message was already changed and it's not configurable we can't change it\n\t// or it will throw a different error swallowing the original error\n\tif (message_descriptor && !message_descriptor.configurable) return;\n\n\tvar indent = is_firefox ? ' ' : '\\t';\n\tvar component_stack = `\\n${indent}in ${effect.fn?.name || '<unknown>'}`;\n\tvar context = effect.ctx;\n\n\twhile (context !== null) {\n\t\tcomponent_stack += `\\n${indent}in ${context.function?.[FILENAME].split('/').pop()}`;\n\t\tcontext = context.p;\n\t}\n\n\treturn {\n\t\tmessage: error.message + `\\n${component_stack}\\n`,\n\t\tstack: error.stack\n\t\t\t?.split('\\n')\n\t\t\t.filter((line) => !line.includes('svelte/src/internal'))\n\t\t\t.join('\\n')\n\t};\n}\n\n/**\n * @param {Error} error\n */\nfunction apply_adjustments(error) {\n\tconst adjusted = adjustments.get(error);\n\n\tif (adjusted) {\n\t\tdefine_property(error, 'message', {\n\t\t\tvalue: adjusted.message\n\t\t});\n\n\t\tdefine_property(error, 'stack', {\n\t\t\tvalue: adjusted.stack\n\t\t});\n\t}\n}\n","/** @import { Fork } from 'svelte' */\n/** @import { Derived, Effect, Reaction, Source, Value } from '#client' */\nimport {\n\tBLOCK_EFFECT,\n\tBRANCH_EFFECT,\n\tCLEAN,\n\tDESTROYED,\n\tDIRTY,\n\tEFFECT,\n\tASYNC,\n\tINERT,\n\tRENDER_EFFECT,\n\tROOT_EFFECT,\n\tMAYBE_DIRTY,\n\tDERIVED,\n\tBOUNDARY_EFFECT,\n\tEAGER_EFFECT,\n\tHEAD_EFFECT,\n\tERROR_VALUE,\n\tWAS_MARKED,\n\tMANAGED_EFFECT\n} from '#client/constants';\nimport { async_mode_flag } from '../../flags/index.js';\nimport { deferred, define_property } from '../../shared/utils.js';\nimport {\n\tactive_effect,\n\tget,\n\tis_dirty,\n\tis_updating_effect,\n\tset_is_updating_effect,\n\tset_signal_status,\n\tupdate_effect\n} from '../runtime.js';\nimport * as e from '../errors.js';\nimport { flush_tasks, queue_micro_task } from '../dom/task.js';\nimport { DEV } from 'esm-env';\nimport { invoke_error_boundary } from '../error-handling.js';\nimport { flush_eager_effects, old_values, set_eager_effects, source, update } from './sources.js';\nimport { eager_effect, unlink_effect } from './effects.js';\n\n/**\n * @typedef {{\n * parent: EffectTarget | null;\n * effect: Effect | null;\n * effects: Effect[];\n * render_effects: Effect[];\n * block_effects: Effect[];\n * }} EffectTarget\n */\n\n/** @type {Set<Batch>} */\nconst batches = new Set();\n\n/** @type {Batch | null} */\nexport let current_batch = null;\n\n/**\n * This is needed to avoid overwriting inputs in non-async mode\n * TODO 6.0 remove this, as non-async mode will go away\n * @type {Batch | null}\n */\nexport let previous_batch = null;\n\n/**\n * When time travelling (i.e. working in one batch, while other batches\n * still have ongoing work), we ignore the real values of affected\n * signals in favour of their values within the batch\n * @type {Map<Value, any> | null}\n */\nexport let batch_values = null;\n\n// TODO this should really be a property of `batch`\n/** @type {Effect[]} */\nlet queued_root_effects = [];\n\n/** @type {Effect | null} */\nlet last_scheduled_effect = null;\n\nlet is_flushing = false;\nexport let is_flushing_sync = false;\n\nexport class Batch {\n\tcommitted = false;\n\n\t/**\n\t * The current values of any sources that are updated in this batch\n\t * They keys of this map are identical to `this.#previous`\n\t * @type {Map<Source, any>}\n\t */\n\tcurrent = new Map();\n\n\t/**\n\t * The values of any sources that are updated in this batch _before_ those updates took place.\n\t * They keys of this map are identical to `this.#current`\n\t * @type {Map<Source, any>}\n\t */\n\tprevious = new Map();\n\n\t/**\n\t * When the batch is committed (and the DOM is updated), we need to remove old branches\n\t * and append new ones by calling the functions added inside (if/each/key/etc) blocks\n\t * @type {Set<() => void>}\n\t */\n\t#commit_callbacks = new Set();\n\n\t/**\n\t * If a fork is discarded, we need to destroy any effects that are no longer needed\n\t * @type {Set<(batch: Batch) => void>}\n\t */\n\t#discard_callbacks = new Set();\n\n\t/**\n\t * The number of async effects that are currently in flight\n\t */\n\t#pending = 0;\n\n\t/**\n\t * The number of async effects that are currently in flight, _not_ inside a pending boundary\n\t */\n\t#blocking_pending = 0;\n\n\t/**\n\t * A deferred that resolves when the batch is committed, used with `settled()`\n\t * TODO replace with Promise.withResolvers once supported widely enough\n\t * @type {{ promise: Promise<void>, resolve: (value?: any) => void, reject: (reason: unknown) => void } | null}\n\t */\n\t#deferred = null;\n\n\t/**\n\t * Deferred effects (which run after async work has completed) that are DIRTY\n\t * @type {Effect[]}\n\t */\n\t#dirty_effects = [];\n\n\t/**\n\t * Deferred effects that are MAYBE_DIRTY\n\t * @type {Effect[]}\n\t */\n\t#maybe_dirty_effects = [];\n\n\t/**\n\t * A set of branches that still exist, but will be destroyed when this batch\n\t * is committed — we skip over these during `process`\n\t * @type {Set<Effect>}\n\t */\n\tskipped_effects = new Set();\n\n\tis_fork = false;\n\n\tis_deferred() {\n\t\treturn this.is_fork || this.#blocking_pending > 0;\n\t}\n\n\t/**\n\t *\n\t * @param {Effect[]} root_effects\n\t */\n\tprocess(root_effects) {\n\t\tqueued_root_effects = [];\n\n\t\tprevious_batch = null;\n\n\t\tthis.apply();\n\n\t\t/** @type {EffectTarget} */\n\t\tvar target = {\n\t\t\tparent: null,\n\t\t\teffect: null,\n\t\t\teffects: [],\n\t\t\trender_effects: [],\n\t\t\tblock_effects: []\n\t\t};\n\n\t\tfor (const root of root_effects) {\n\t\t\tthis.#traverse_effect_tree(root, target);\n\t\t\t// Note: #traverse_effect_tree runs block effects eagerly, which can schedule effects,\n\t\t\t// which means queued_root_effects now may be filled again.\n\t\t}\n\n\t\tif (!this.is_fork) {\n\t\t\tthis.#resolve();\n\t\t}\n\n\t\tif (this.is_deferred()) {\n\t\t\tthis.#defer_effects(target.effects);\n\t\t\tthis.#defer_effects(target.render_effects);\n\t\t\tthis.#defer_effects(target.block_effects);\n\t\t} else {\n\t\t\t// If sources are written to, then work needs to happen in a separate batch, else prior sources would be mixed with\n\t\t\t// newly updated sources, which could lead to infinite loops when effects run over and over again.\n\t\t\tprevious_batch = this;\n\t\t\tcurrent_batch = null;\n\n\t\t\tflush_queued_effects(target.render_effects);\n\t\t\tflush_queued_effects(target.effects);\n\n\t\t\tprevious_batch = null;\n\n\t\t\tthis.#deferred?.resolve();\n\t\t}\n\n\t\tbatch_values = null;\n\t}\n\n\t/**\n\t * Traverse the effect tree, executing effects or stashing\n\t * them for later execution as appropriate\n\t * @param {Effect} root\n\t * @param {EffectTarget} target\n\t */\n\t#traverse_effect_tree(root, target) {\n\t\troot.f ^= CLEAN;\n\n\t\tvar effect = root.first;\n\n\t\twhile (effect !== null) {\n\t\t\tvar flags = effect.f;\n\t\t\tvar is_branch = (flags & (BRANCH_EFFECT | ROOT_EFFECT)) !== 0;\n\t\t\tvar is_skippable_branch = is_branch && (flags & CLEAN) !== 0;\n\n\t\t\tvar skip = is_skippable_branch || (flags & INERT) !== 0 || this.skipped_effects.has(effect);\n\n\t\t\tif ((effect.f & BOUNDARY_EFFECT) !== 0 && effect.b?.is_pending()) {\n\t\t\t\ttarget = {\n\t\t\t\t\tparent: target,\n\t\t\t\t\teffect,\n\t\t\t\t\teffects: [],\n\t\t\t\t\trender_effects: [],\n\t\t\t\t\tblock_effects: []\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (!skip && effect.fn !== null) {\n\t\t\t\tif (is_branch) {\n\t\t\t\t\teffect.f ^= CLEAN;\n\t\t\t\t} else if ((flags & EFFECT) !== 0) {\n\t\t\t\t\ttarget.effects.push(effect);\n\t\t\t\t} else if (async_mode_flag && (flags & (RENDER_EFFECT | MANAGED_EFFECT)) !== 0) {\n\t\t\t\t\ttarget.render_effects.push(effect);\n\t\t\t\t} else if (is_dirty(effect)) {\n\t\t\t\t\tif ((effect.f & BLOCK_EFFECT) !== 0) target.block_effects.push(effect);\n\t\t\t\t\tupdate_effect(effect);\n\t\t\t\t}\n\n\t\t\t\tvar child = effect.first;\n\n\t\t\t\tif (child !== null) {\n\t\t\t\t\teffect = child;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar parent = effect.parent;\n\t\t\teffect = effect.next;\n\n\t\t\twhile (effect === null && parent !== null) {\n\t\t\t\tif (parent === target.effect) {\n\t\t\t\t\t// TODO rather than traversing into pending boundaries and deferring the effects,\n\t\t\t\t\t// could we just attach the effects _to_ the pending boundary and schedule them\n\t\t\t\t\t// once the boundary is ready?\n\t\t\t\t\tthis.#defer_effects(target.effects);\n\t\t\t\t\tthis.#defer_effects(target.render_effects);\n\t\t\t\t\tthis.#defer_effects(target.block_effects);\n\n\t\t\t\t\ttarget = /** @type {EffectTarget} */ (target.parent);\n\t\t\t\t}\n\n\t\t\t\teffect = parent.next;\n\t\t\t\tparent = parent.parent;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @param {Effect[]} effects\n\t */\n\t#defer_effects(effects) {\n\t\tfor (const e of effects) {\n\t\t\tconst target = (e.f & DIRTY) !== 0 ? this.#dirty_effects : this.#maybe_dirty_effects;\n\t\t\ttarget.push(e);\n\n\t\t\t// Since we're not executing these effects now, we need to clear any WAS_MARKED flags\n\t\t\t// so that other batches can correctly reach these effects during their own traversal\n\t\t\tthis.#clear_marked(e.deps);\n\n\t\t\t// mark as clean so they get scheduled if they depend on pending async state\n\t\t\tset_signal_status(e, CLEAN);\n\t\t}\n\t}\n\n\t/**\n\t * @param {Value[] | null} deps\n\t */\n\t#clear_marked(deps) {\n\t\tif (deps === null) return;\n\n\t\tfor (const dep of deps) {\n\t\t\tif ((dep.f & DERIVED) === 0 || (dep.f & WAS_MARKED) === 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tdep.f ^= WAS_MARKED;\n\n\t\t\tthis.#clear_marked(/** @type {Derived} */ (dep).deps);\n\t\t}\n\t}\n\n\t/**\n\t * Associate a change to a given source with the current\n\t * batch, noting its previous and current values\n\t * @param {Source} source\n\t * @param {any} value\n\t */\n\tcapture(source, value) {\n\t\tif (!this.previous.has(source)) {\n\t\t\tthis.previous.set(source, value);\n\t\t}\n\n\t\t// Don't save errors in `batch_values`, or they won't be thrown in `runtime.js#get`\n\t\tif ((source.f & ERROR_VALUE) === 0) {\n\t\t\tthis.current.set(source, source.v);\n\t\t\tbatch_values?.set(source, source.v);\n\t\t}\n\t}\n\n\tactivate() {\n\t\tcurrent_batch = this;\n\t\tthis.apply();\n\t}\n\n\tdeactivate() {\n\t\t// If we're not the current batch, don't deactivate,\n\t\t// else we could create zombie batches that are never flushed\n\t\tif (current_batch !== this) return;\n\n\t\tcurrent_batch = null;\n\t\tbatch_values = null;\n\t}\n\n\tflush() {\n\t\tthis.activate();\n\n\t\tif (queued_root_effects.length > 0) {\n\t\t\tflush_effects();\n\n\t\t\tif (current_batch !== null && current_batch !== this) {\n\t\t\t\t// this can happen if a new batch was created during `flush_effects()`\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (this.#pending === 0) {\n\t\t\tthis.process([]); // TODO this feels awkward\n\t\t}\n\n\t\tthis.deactivate();\n\t}\n\n\tdiscard() {\n\t\tfor (const fn of this.#discard_callbacks) fn(this);\n\t\tthis.#discard_callbacks.clear();\n\t}\n\n\t#resolve() {\n\t\tif (this.#blocking_pending === 0) {\n\t\t\t// append/remove branches\n\t\t\tfor (const fn of this.#commit_callbacks) fn();\n\t\t\tthis.#commit_callbacks.clear();\n\t\t}\n\n\t\tif (this.#pending === 0) {\n\t\t\tthis.#commit();\n\t\t}\n\t}\n\n\t#commit() {\n\t\t// If there are other pending batches, they now need to be 'rebased' —\n\t\t// in other words, we re-run block/async effects with the newly\n\t\t// committed state, unless the batch in question has a more\n\t\t// recent value for a given source\n\t\tif (batches.size > 1) {\n\t\t\tthis.previous.clear();\n\n\t\t\tvar previous_batch_values = batch_values;\n\t\t\tvar is_earlier = true;\n\n\t\t\t/** @type {EffectTarget} */\n\t\t\tvar dummy_target = {\n\t\t\t\tparent: null,\n\t\t\t\teffect: null,\n\t\t\t\teffects: [],\n\t\t\t\trender_effects: [],\n\t\t\t\tblock_effects: []\n\t\t\t};\n\n\t\t\tfor (const batch of batches) {\n\t\t\t\tif (batch === this) {\n\t\t\t\t\tis_earlier = false;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t/** @type {Source[]} */\n\t\t\t\tconst sources = [];\n\n\t\t\t\tfor (const [source, value] of this.current) {\n\t\t\t\t\tif (batch.current.has(source)) {\n\t\t\t\t\t\tif (is_earlier && value !== batch.current.get(source)) {\n\t\t\t\t\t\t\t// bring the value up to date\n\t\t\t\t\t\t\tbatch.current.set(source, value);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// same value or later batch has more recent value,\n\t\t\t\t\t\t\t// no need to re-run these effects\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tsources.push(source);\n\t\t\t\t}\n\n\t\t\t\tif (sources.length === 0) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Re-run async/block effects that depend on distinct values changed in both batches\n\t\t\t\tconst others = [...batch.current.keys()].filter((s) => !this.current.has(s));\n\t\t\t\tif (others.length > 0) {\n\t\t\t\t\t// Avoid running queued root effects on the wrong branch\n\t\t\t\t\tvar prev_queued_root_effects = queued_root_effects;\n\t\t\t\t\tqueued_root_effects = [];\n\n\t\t\t\t\t/** @type {Set<Value>} */\n\t\t\t\t\tconst marked = new Set();\n\t\t\t\t\t/** @type {Map<Reaction, boolean>} */\n\t\t\t\t\tconst checked = new Map();\n\t\t\t\t\tfor (const source of sources) {\n\t\t\t\t\t\tmark_effects(source, others, marked, checked);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (queued_root_effects.length > 0) {\n\t\t\t\t\t\tcurrent_batch = batch;\n\t\t\t\t\t\tbatch.apply();\n\n\t\t\t\t\t\tfor (const root of queued_root_effects) {\n\t\t\t\t\t\t\tbatch.#traverse_effect_tree(root, dummy_target);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// TODO do we need to do anything with `target`? defer block effects?\n\n\t\t\t\t\t\tbatch.deactivate();\n\t\t\t\t\t}\n\n\t\t\t\t\tqueued_root_effects = prev_queued_root_effects;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcurrent_batch = null;\n\t\t\tbatch_values = previous_batch_values;\n\t\t}\n\n\t\tthis.committed = true;\n\t\tbatches.delete(this);\n\t}\n\n\t/**\n\t *\n\t * @param {boolean} blocking\n\t */\n\tincrement(blocking) {\n\t\tthis.#pending += 1;\n\t\tif (blocking) this.#blocking_pending += 1;\n\t}\n\n\t/**\n\t *\n\t * @param {boolean} blocking\n\t */\n\tdecrement(blocking) {\n\t\tthis.#pending -= 1;\n\t\tif (blocking) this.#blocking_pending -= 1;\n\n\t\tthis.revive();\n\t}\n\n\trevive() {\n\t\tfor (const e of this.#dirty_effects) {\n\t\t\tset_signal_status(e, DIRTY);\n\t\t\tschedule_effect(e);\n\t\t}\n\n\t\tfor (const e of this.#maybe_dirty_effects) {\n\t\t\tset_signal_status(e, MAYBE_DIRTY);\n\t\t\tschedule_effect(e);\n\t\t}\n\n\t\tthis.#dirty_effects = [];\n\t\tthis.#maybe_dirty_effects = [];\n\n\t\tthis.flush();\n\t}\n\n\t/** @param {() => void} fn */\n\toncommit(fn) {\n\t\tthis.#commit_callbacks.add(fn);\n\t}\n\n\t/** @param {(batch: Batch) => void} fn */\n\tondiscard(fn) {\n\t\tthis.#discard_callbacks.add(fn);\n\t}\n\n\tsettled() {\n\t\treturn (this.#deferred ??= deferred()).promise;\n\t}\n\n\tstatic ensure() {\n\t\tif (current_batch === null) {\n\t\t\tconst batch = (current_batch = new Batch());\n\t\t\tbatches.add(current_batch);\n\n\t\t\tif (!is_flushing_sync) {\n\t\t\t\tBatch.enqueue(() => {\n\t\t\t\t\tif (current_batch !== batch) {\n\t\t\t\t\t\t// a flushSync happened in the meantime\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tbatch.flush();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn current_batch;\n\t}\n\n\t/** @param {() => void} task */\n\tstatic enqueue(task) {\n\t\tqueue_micro_task(task);\n\t}\n\n\tapply() {\n\t\tif (!async_mode_flag || (!this.is_fork && batches.size === 1)) return;\n\n\t\t// if there are multiple batches, we are 'time travelling' —\n\t\t// we need to override values with the ones in this batch...\n\t\tbatch_values = new Map(this.current);\n\n\t\t// ...and undo changes belonging to other batches\n\t\tfor (const batch of batches) {\n\t\t\tif (batch === this) continue;\n\n\t\t\tfor (const [source, previous] of batch.previous) {\n\t\t\t\tif (!batch_values.has(source)) {\n\t\t\t\t\tbatch_values.set(source, previous);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Synchronously flush any pending updates.\n * Returns void if no callback is provided, otherwise returns the result of calling the callback.\n * @template [T=void]\n * @param {(() => T) | undefined} [fn]\n * @returns {T}\n */\nexport function flushSync(fn) {\n\tvar was_flushing_sync = is_flushing_sync;\n\tis_flushing_sync = true;\n\n\ttry {\n\t\tvar result;\n\n\t\tif (fn) {\n\t\t\tif (current_batch !== null) {\n\t\t\t\tflush_effects();\n\t\t\t}\n\n\t\t\tresult = fn();\n\t\t}\n\n\t\twhile (true) {\n\t\t\tflush_tasks();\n\n\t\t\tif (queued_root_effects.length === 0) {\n\t\t\t\tcurrent_batch?.flush();\n\n\t\t\t\t// we need to check again, in case we just updated an `$effect.pending()`\n\t\t\t\tif (queued_root_effects.length === 0) {\n\t\t\t\t\t// this would be reset in `flush_effects()` but since we are early returning here,\n\t\t\t\t\t// we need to reset it here as well in case the first time there's 0 queued root effects\n\t\t\t\t\tlast_scheduled_effect = null;\n\n\t\t\t\t\treturn /** @type {T} */ (result);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tflush_effects();\n\t\t}\n\t} finally {\n\t\tis_flushing_sync = was_flushing_sync;\n\t}\n}\n\nfunction flush_effects() {\n\tvar was_updating_effect = is_updating_effect;\n\tis_flushing = true;\n\n\tvar source_stacks = DEV ? new Set() : null;\n\n\ttry {\n\t\tvar flush_count = 0;\n\t\tset_is_updating_effect(true);\n\n\t\twhile (queued_root_effects.length > 0) {\n\t\t\tvar batch = Batch.ensure();\n\n\t\t\tif (flush_count++ > 1000) {\n\t\t\t\tif (DEV) {\n\t\t\t\t\tvar updates = new Map();\n\n\t\t\t\t\tfor (const source of batch.current.keys()) {\n\t\t\t\t\t\tfor (const [stack, update] of source.updated ?? []) {\n\t\t\t\t\t\t\tvar entry = updates.get(stack);\n\n\t\t\t\t\t\t\tif (!entry) {\n\t\t\t\t\t\t\t\tentry = { error: update.error, count: 0 };\n\t\t\t\t\t\t\t\tupdates.set(stack, entry);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tentry.count += update.count;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (const update of updates.values()) {\n\t\t\t\t\t\tif (update.error) {\n\t\t\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\t\t\tconsole.error(update.error);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tinfinite_loop_guard();\n\t\t\t}\n\n\t\t\tbatch.process(queued_root_effects);\n\t\t\told_values.clear();\n\n\t\t\tif (DEV) {\n\t\t\t\tfor (const source of batch.current.keys()) {\n\t\t\t\t\t/** @type {Set<Source>} */ (source_stacks).add(source);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} finally {\n\t\tis_flushing = false;\n\t\tset_is_updating_effect(was_updating_effect);\n\n\t\tlast_scheduled_effect = null;\n\n\t\tif (DEV) {\n\t\t\tfor (const source of /** @type {Set<Source>} */ (source_stacks)) {\n\t\t\t\tsource.updated = null;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction infinite_loop_guard() {\n\ttry {\n\t\te.effect_update_depth_exceeded();\n\t} catch (error) {\n\t\tif (DEV) {\n\t\t\t// stack contains no useful information, replace it\n\t\t\tdefine_property(error, 'stack', { value: '' });\n\t\t}\n\n\t\t// Best effort: invoke the boundary nearest the most recent\n\t\t// effect and hope that it's relevant to the infinite loop\n\t\tinvoke_error_boundary(error, last_scheduled_effect);\n\t}\n}\n\n/** @type {Set<Effect> | null} */\nexport let eager_block_effects = null;\n\n/**\n * @param {Array<Effect>} effects\n * @returns {void}\n */\nfunction flush_queued_effects(effects) {\n\tvar length = effects.length;\n\tif (length === 0) return;\n\n\tvar i = 0;\n\n\twhile (i < length) {\n\t\tvar effect = effects[i++];\n\n\t\tif ((effect.f & (DESTROYED | INERT)) === 0 && is_dirty(effect)) {\n\t\t\teager_block_effects = new Set();\n\n\t\t\tupdate_effect(effect);\n\n\t\t\t// Effects with no dependencies or teardown do not get added to the effect tree.\n\t\t\t// Deferred effects (e.g. `$effect(...)`) _are_ added to the tree because we\n\t\t\t// don't know if we need to keep them until they are executed. Doing the check\n\t\t\t// here (rather than in `update_effect`) allows us to skip the work for\n\t\t\t// immediate effects.\n\t\t\tif (effect.deps === null && effect.first === null && effect.nodes_start === null) {\n\t\t\t\t// if there's no teardown or abort controller we completely unlink\n\t\t\t\t// the effect from the graph\n\t\t\t\tif (effect.teardown === null && effect.ac === null) {\n\t\t\t\t\t// remove this effect from the graph\n\t\t\t\t\tunlink_effect(effect);\n\t\t\t\t} else {\n\t\t\t\t\t// keep the effect in the graph, but free up some memory\n\t\t\t\t\teffect.fn = null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If update_effect() has a flushSync() in it, we may have flushed another flush_queued_effects(),\n\t\t\t// which already handled this logic and did set eager_block_effects to null.\n\t\t\tif (eager_block_effects?.size > 0) {\n\t\t\t\told_values.clear();\n\n\t\t\t\tfor (const e of eager_block_effects) {\n\t\t\t\t\t// Skip eager effects that have already been unmounted\n\t\t\t\t\tif ((e.f & (DESTROYED | INERT)) !== 0) continue;\n\n\t\t\t\t\t// Run effects in order from ancestor to descendant, else we could run into nullpointers\n\t\t\t\t\t/** @type {Effect[]} */\n\t\t\t\t\tconst ordered_effects = [e];\n\t\t\t\t\tlet ancestor = e.parent;\n\t\t\t\t\twhile (ancestor !== null) {\n\t\t\t\t\t\tif (eager_block_effects.has(ancestor)) {\n\t\t\t\t\t\t\teager_block_effects.delete(ancestor);\n\t\t\t\t\t\t\tordered_effects.push(ancestor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tancestor = ancestor.parent;\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (let j = ordered_effects.length - 1; j >= 0; j--) {\n\t\t\t\t\t\tconst e = ordered_effects[j];\n\t\t\t\t\t\t// Skip eager effects that have already been unmounted\n\t\t\t\t\t\tif ((e.f & (DESTROYED | INERT)) !== 0) continue;\n\t\t\t\t\t\tupdate_effect(e);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\teager_block_effects.clear();\n\t\t\t}\n\t\t}\n\t}\n\n\teager_block_effects = null;\n}\n\n/**\n * This is similar to `mark_reactions`, but it only marks async/block effects\n * depending on `value` and at least one of the other `sources`, so that\n * these effects can re-run after another batch has been committed\n * @param {Value} value\n * @param {Source[]} sources\n * @param {Set<Value>} marked\n * @param {Map<Reaction, boolean>} checked\n */\nfunction mark_effects(value, sources, marked, checked) {\n\tif (marked.has(value)) return;\n\tmarked.add(value);\n\n\tif (value.reactions !== null) {\n\t\tfor (const reaction of value.reactions) {\n\t\t\tconst flags = reaction.f;\n\n\t\t\tif ((flags & DERIVED) !== 0) {\n\t\t\t\tmark_effects(/** @type {Derived} */ (reaction), sources, marked, checked);\n\t\t\t} else if (\n\t\t\t\t(flags & (ASYNC | BLOCK_EFFECT)) !== 0 &&\n\t\t\t\t(flags & DIRTY) === 0 &&\n\t\t\t\tdepends_on(reaction, sources, checked)\n\t\t\t) {\n\t\t\t\tset_signal_status(reaction, DIRTY);\n\t\t\t\tschedule_effect(/** @type {Effect} */ (reaction));\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * When committing a fork, we need to trigger eager effects so that\n * any `$state.eager(...)` expressions update immediately. This\n * function allows us to discover them\n * @param {Value} value\n * @param {Set<Effect>} effects\n */\nfunction mark_eager_effects(value, effects) {\n\tif (value.reactions === null) return;\n\n\tfor (const reaction of value.reactions) {\n\t\tconst flags = reaction.f;\n\n\t\tif ((flags & DERIVED) !== 0) {\n\t\t\tmark_eager_effects(/** @type {Derived} */ (reaction), effects);\n\t\t} else if ((flags & EAGER_EFFECT) !== 0) {\n\t\t\tset_signal_status(reaction, DIRTY);\n\t\t\teffects.add(/** @type {Effect} */ (reaction));\n\t\t}\n\t}\n}\n\n/**\n * @param {Reaction} reaction\n * @param {Source[]} sources\n * @param {Map<Reaction, boolean>} checked\n */\nfunction depends_on(reaction, sources, checked) {\n\tconst depends = checked.get(reaction);\n\tif (depends !== undefined) return depends;\n\n\tif (reaction.deps !== null) {\n\t\tfor (const dep of reaction.deps) {\n\t\t\tif (sources.includes(dep)) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif ((dep.f & DERIVED) !== 0 && depends_on(/** @type {Derived} */ (dep), sources, checked)) {\n\t\t\t\tchecked.set(/** @type {Derived} */ (dep), true);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\n\tchecked.set(reaction, false);\n\n\treturn false;\n}\n\n/**\n * @param {Effect} signal\n * @returns {void}\n */\nexport function schedule_effect(signal) {\n\tvar effect = (last_scheduled_effect = signal);\n\n\twhile (effect.parent !== null) {\n\t\teffect = effect.parent;\n\t\tvar flags = effect.f;\n\n\t\t// if the effect is being scheduled because a parent (each/await/etc) block\n\t\t// updated an internal source, bail out or we'll cause a second flush\n\t\tif (\n\t\t\tis_flushing &&\n\t\t\teffect === active_effect &&\n\t\t\t(flags & BLOCK_EFFECT) !== 0 &&\n\t\t\t(flags & HEAD_EFFECT) === 0\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ((flags & (ROOT_EFFECT | BRANCH_EFFECT)) !== 0) {\n\t\t\tif ((flags & CLEAN) === 0) return;\n\t\t\teffect.f ^= CLEAN;\n\t\t}\n\t}\n\n\tqueued_root_effects.push(effect);\n}\n\n/** @type {Source<number>[]} */\nlet eager_versions = [];\n\nfunction eager_flush() {\n\ttry {\n\t\tflushSync(() => {\n\t\t\tfor (const version of eager_versions) {\n\t\t\t\tupdate(version);\n\t\t\t}\n\t\t});\n\t} finally {\n\t\teager_versions = [];\n\t}\n}\n\n/**\n * Implementation of `$state.eager(fn())`\n * @template T\n * @param {() => T} fn\n * @returns {T}\n */\nexport function eager(fn) {\n\tvar version = source(0);\n\tvar initial = true;\n\tvar value = /** @type {T} */ (undefined);\n\n\tget(version);\n\n\teager_effect(() => {\n\t\tif (initial) {\n\t\t\t// the first time this runs, we create an eager effect\n\t\t\t// that will run eagerly whenever the expression changes\n\t\t\tvar previous_batch_values = batch_values;\n\n\t\t\ttry {\n\t\t\t\tbatch_values = null;\n\t\t\t\tvalue = fn();\n\t\t\t} finally {\n\t\t\t\tbatch_values = previous_batch_values;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// the second time this effect runs, it's to schedule a\n\t\t// `version` update. since this will recreate the effect,\n\t\t// we don't need to evaluate the expression here\n\t\tif (eager_versions.length === 0) {\n\t\t\tqueue_micro_task(eager_flush);\n\t\t}\n\n\t\teager_versions.push(version);\n\t});\n\n\tinitial = false;\n\n\treturn value;\n}\n\n/**\n * Creates a 'fork', in which state changes are evaluated but not applied to the DOM.\n * This is useful for speculatively loading data (for example) when you suspect that\n * the user is about to take some action.\n *\n * Frameworks like SvelteKit can use this to preload data when the user touches or\n * hovers over a link, making any subsequent navigation feel instantaneous.\n *\n * The `fn` parameter is a synchronous function that modifies some state. The\n * state changes will be reverted after the fork is initialised, then reapplied\n * if and when the fork is eventually committed.\n *\n * When it becomes clear that a fork will _not_ be committed (e.g. because the\n * user navigated elsewhere), it must be discarded to avoid leaking memory.\n *\n * @param {() => void} fn\n * @returns {Fork}\n * @since 5.42\n */\nexport function fork(fn) {\n\tif (!async_mode_flag) {\n\t\te.experimental_async_required('fork');\n\t}\n\n\tif (current_batch !== null) {\n\t\te.fork_timing();\n\t}\n\n\tvar batch = Batch.ensure();\n\tbatch.is_fork = true;\n\tbatch_values = new Map();\n\n\tvar committed = false;\n\tvar settled = batch.settled();\n\n\tflushSync(fn);\n\n\tbatch_values = null;\n\n\t// revert state changes\n\tfor (var [source, value] of batch.previous) {\n\t\tsource.v = value;\n\t}\n\n\treturn {\n\t\tcommit: async () => {\n\t\t\tif (committed) {\n\t\t\t\tawait settled;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!batches.has(batch)) {\n\t\t\t\te.fork_discarded();\n\t\t\t}\n\n\t\t\tcommitted = true;\n\n\t\t\tbatch.is_fork = false;\n\n\t\t\t// apply changes\n\t\t\tfor (var [source, value] of batch.current) {\n\t\t\t\tsource.v = value;\n\t\t\t}\n\n\t\t\t// trigger any `$state.eager(...)` expressions with the new state.\n\t\t\t// eager effects don't get scheduled like other effects, so we\n\t\t\t// can't just encounter them during traversal, we need to\n\t\t\t// proactively flush them\n\t\t\t// TODO maybe there's a better implementation?\n\t\t\tflushSync(() => {\n\t\t\t\t/** @type {Set<Effect>} */\n\t\t\t\tvar eager_effects = new Set();\n\n\t\t\t\tfor (var source of batch.current.keys()) {\n\t\t\t\t\tmark_eager_effects(source, eager_effects);\n\t\t\t\t}\n\n\t\t\t\tset_eager_effects(eager_effects);\n\t\t\t\tflush_eager_effects();\n\t\t\t});\n\n\t\t\tbatch.revive();\n\t\t\tawait settled;\n\t\t},\n\t\tdiscard: () => {\n\t\t\tif (!committed && batches.has(batch)) {\n\t\t\t\tbatches.delete(batch);\n\t\t\t\tbatch.discard();\n\t\t\t}\n\t\t}\n\t};\n}\n\n/**\n * Forcibly remove all current batches, to prevent cross-talk between tests\n */\nexport function clear() {\n\tbatches.clear();\n}\n","/** @import { EachItem, EachState, Effect, MaybeSource, Source, TemplateNode, TransitionManager, Value } from '#client' */\n/** @import { Batch } from '../../reactivity/batch.js'; */\nimport {\n\tEACH_INDEX_REACTIVE,\n\tEACH_IS_ANIMATED,\n\tEACH_IS_CONTROLLED,\n\tEACH_ITEM_IMMUTABLE,\n\tEACH_ITEM_REACTIVE,\n\tHYDRATION_END,\n\tHYDRATION_START_ELSE\n} from '../../../../constants.js';\nimport {\n\thydrate_next,\n\thydrate_node,\n\thydrating,\n\tread_hydration_instruction,\n\tskip_nodes,\n\tset_hydrate_node,\n\tset_hydrating\n} from '../hydration.js';\nimport {\n\tclear_text_content,\n\tcreate_text,\n\tget_first_child,\n\tget_next_sibling,\n\tshould_defer_append\n} from '../operations.js';\nimport {\n\tblock,\n\tbranch,\n\tdestroy_effect,\n\trun_out_transitions,\n\tpause_children,\n\tpause_effect,\n\tresume_effect\n} from '../../reactivity/effects.js';\nimport { source, mutable_source, internal_set } from '../../reactivity/sources.js';\nimport { array_from, is_array } from '../../../shared/utils.js';\nimport { COMMENT_NODE, INERT } from '#client/constants';\nimport { queue_micro_task } from '../task.js';\nimport { get } from '../../runtime.js';\nimport { DEV } from 'esm-env';\nimport { derived_safe_equal } from '../../reactivity/deriveds.js';\nimport { current_batch } from '../../reactivity/batch.js';\n\n/**\n * The row of a keyed each block that is currently updating. We track this\n * so that `animate:` directives have something to attach themselves to\n * @type {EachItem | null}\n */\nexport let current_each_item = null;\n\n/** @param {EachItem | null} item */\nexport function set_current_each_item(item) {\n\tcurrent_each_item = item;\n}\n\n/**\n * @param {any} _\n * @param {number} i\n */\nexport function index(_, i) {\n\treturn i;\n}\n\n/**\n * Pause multiple effects simultaneously, and coordinate their\n * subsequent destruction. Used in each blocks\n * @param {EachState} state\n * @param {EachItem[]} to_destroy\n * @param {null | Node} controlled_anchor\n */\nfunction pause_effects(state, to_destroy, controlled_anchor) {\n\t/** @type {TransitionManager[]} */\n\tvar transitions = [];\n\tvar length = to_destroy.length;\n\n\tfor (var i = 0; i < length; i++) {\n\t\tpause_children(to_destroy[i].e, transitions, true);\n\t}\n\n\trun_out_transitions(transitions, () => {\n\t\t// If we're in a controlled each block (i.e. the block is the only child of an\n\t\t// element), and we are removing all items, _and_ there are no out transitions,\n\t\t// we can use the fast path — emptying the element and replacing the anchor\n\t\tvar fast_path = transitions.length === 0 && controlled_anchor !== null;\n\n\t\t// TODO only destroy effects if no pending batch needs them. otherwise,\n\t\t// just set `item.o` back to `false`\n\n\t\tif (fast_path) {\n\t\t\tvar anchor = /** @type {Element} */ (controlled_anchor);\n\t\t\tvar parent_node = /** @type {Element} */ (anchor.parentNode);\n\n\t\t\tclear_text_content(parent_node);\n\t\t\tparent_node.append(anchor);\n\n\t\t\tstate.items.clear();\n\t\t\tlink(state, to_destroy[0].prev, to_destroy[length - 1].next);\n\t\t}\n\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tvar item = to_destroy[i];\n\n\t\t\tif (!fast_path) {\n\t\t\t\tstate.items.delete(item.k);\n\t\t\t\tlink(state, item.prev, item.next);\n\t\t\t}\n\n\t\t\tdestroy_effect(item.e, !fast_path);\n\t\t}\n\n\t\tif (state.first === to_destroy[0]) {\n\t\t\tstate.first = to_destroy[0].prev;\n\t\t}\n\t});\n}\n\n/**\n * @template V\n * @param {Element | Comment} node The next sibling node, or the parent node if this is a 'controlled' block\n * @param {number} flags\n * @param {() => V[]} get_collection\n * @param {(value: V, index: number) => any} get_key\n * @param {(anchor: Node, item: MaybeSource<V>, index: MaybeSource<number>) => void} render_fn\n * @param {null | ((anchor: Node) => void)} fallback_fn\n * @returns {void}\n */\nexport function each(node, flags, get_collection, get_key, render_fn, fallback_fn = null) {\n\tvar anchor = node;\n\n\t/** @type {Map<any, EachItem>} */\n\tvar items = new Map();\n\n\t/** @type {EachItem | null} */\n\tvar first = null;\n\n\tvar is_controlled = (flags & EACH_IS_CONTROLLED) !== 0;\n\tvar is_reactive_value = (flags & EACH_ITEM_REACTIVE) !== 0;\n\tvar is_reactive_index = (flags & EACH_INDEX_REACTIVE) !== 0;\n\n\tif (is_controlled) {\n\t\tvar parent_node = /** @type {Element} */ (node);\n\n\t\tanchor = hydrating\n\t\t\t? set_hydrate_node(/** @type {Comment | Text} */ (get_first_child(parent_node)))\n\t\t\t: parent_node.appendChild(create_text());\n\t}\n\n\tif (hydrating) {\n\t\thydrate_next();\n\t}\n\n\t/** @type {{ fragment: DocumentFragment | null, effect: Effect } | null} */\n\tvar fallback = null;\n\n\t// TODO: ideally we could use derived for runes mode but because of the ability\n\t// to use a store which can be mutated, we can't do that here as mutating a store\n\t// will still result in the collection array being the same from the store\n\tvar each_array = derived_safe_equal(() => {\n\t\tvar collection = get_collection();\n\n\t\treturn is_array(collection) ? collection : collection == null ? [] : array_from(collection);\n\t});\n\n\t/** @type {V[]} */\n\tvar array;\n\n\tvar first_run = true;\n\n\tfunction commit() {\n\t\treconcile(state, array, anchor, flags, get_key);\n\n\t\tif (fallback !== null) {\n\t\t\tif (array.length === 0) {\n\t\t\t\tif (fallback.fragment) {\n\t\t\t\t\tanchor.before(fallback.fragment);\n\t\t\t\t\tfallback.fragment = null;\n\t\t\t\t} else {\n\t\t\t\t\tresume_effect(fallback.effect);\n\t\t\t\t}\n\n\t\t\t\teffect.first = fallback.effect;\n\t\t\t} else {\n\t\t\t\tpause_effect(fallback.effect, () => {\n\t\t\t\t\t// TODO only null out if no pending batch needs it,\n\t\t\t\t\t// otherwise re-add `fallback.fragment` and move the\n\t\t\t\t\t// effect into it\n\t\t\t\t\tfallback = null;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tvar effect = block(() => {\n\t\tarray = /** @type {V[]} */ (get(each_array));\n\t\tvar length = array.length;\n\n\t\t/** `true` if there was a hydration mismatch. Needs to be a `let` or else it isn't treeshaken out */\n\t\tlet mismatch = false;\n\n\t\tif (hydrating) {\n\t\t\tvar is_else = read_hydration_instruction(anchor) === HYDRATION_START_ELSE;\n\n\t\t\tif (is_else !== (length === 0)) {\n\t\t\t\t// hydration mismatch — remove the server-rendered DOM and start over\n\t\t\t\tanchor = skip_nodes();\n\n\t\t\t\tset_hydrate_node(anchor);\n\t\t\t\tset_hydrating(false);\n\t\t\t\tmismatch = true;\n\t\t\t}\n\t\t}\n\n\t\tvar keys = new Set();\n\t\tvar batch = /** @type {Batch} */ (current_batch);\n\t\tvar prev = null;\n\t\tvar defer = should_defer_append();\n\n\t\tfor (var i = 0; i < length; i += 1) {\n\t\t\tif (\n\t\t\t\thydrating &&\n\t\t\t\thydrate_node.nodeType === COMMENT_NODE &&\n\t\t\t\t/** @type {Comment} */ (hydrate_node).data === HYDRATION_END\n\t\t\t) {\n\t\t\t\t// The server rendered fewer items than expected,\n\t\t\t\t// so break out and continue appending non-hydrated items\n\t\t\t\tanchor = /** @type {Comment} */ (hydrate_node);\n\t\t\t\tmismatch = true;\n\t\t\t\tset_hydrating(false);\n\t\t\t}\n\n\t\t\tvar value = array[i];\n\t\t\tvar key = get_key(value, i);\n\n\t\t\tvar item = first_run ? null : items.get(key);\n\n\t\t\tif (item) {\n\t\t\t\t// update before reconciliation, to trigger any async updates\n\t\t\t\tif (is_reactive_value) {\n\t\t\t\t\tinternal_set(item.v, value);\n\t\t\t\t}\n\n\t\t\t\tif (is_reactive_index) {\n\t\t\t\t\tinternal_set(/** @type {Value<number>} */ (item.i), i);\n\t\t\t\t} else {\n\t\t\t\t\titem.i = i;\n\t\t\t\t}\n\n\t\t\t\tif (defer) {\n\t\t\t\t\tbatch.skipped_effects.delete(item.e);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\titem = create_item(\n\t\t\t\t\tfirst_run ? anchor : null,\n\t\t\t\t\tprev,\n\t\t\t\t\tvalue,\n\t\t\t\t\tkey,\n\t\t\t\t\ti,\n\t\t\t\t\trender_fn,\n\t\t\t\t\tflags,\n\t\t\t\t\tget_collection\n\t\t\t\t);\n\n\t\t\t\tif (first_run) {\n\t\t\t\t\titem.o = true;\n\n\t\t\t\t\tif (prev === null) {\n\t\t\t\t\t\tfirst = item;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tprev.next = item;\n\t\t\t\t\t}\n\n\t\t\t\t\tprev = item;\n\t\t\t\t}\n\n\t\t\t\titems.set(key, item);\n\t\t\t}\n\n\t\t\tkeys.add(key);\n\t\t}\n\n\t\tif (length === 0 && fallback_fn && !fallback) {\n\t\t\tif (first_run) {\n\t\t\t\tfallback = {\n\t\t\t\t\tfragment: null,\n\t\t\t\t\teffect: branch(() => fallback_fn(anchor))\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tvar fragment = document.createDocumentFragment();\n\t\t\t\tvar target = create_text();\n\t\t\t\tfragment.append(target);\n\n\t\t\t\tfallback = {\n\t\t\t\t\tfragment,\n\t\t\t\t\teffect: branch(() => fallback_fn(target))\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// remove excess nodes\n\t\tif (hydrating && length > 0) {\n\t\t\tset_hydrate_node(skip_nodes());\n\t\t}\n\n\t\tif (!first_run) {\n\t\t\tif (defer) {\n\t\t\t\tfor (const [key, item] of items) {\n\t\t\t\t\tif (!keys.has(key)) {\n\t\t\t\t\t\tbatch.skipped_effects.add(item.e);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbatch.oncommit(commit);\n\t\t\t\tbatch.ondiscard(() => {\n\t\t\t\t\t// TODO presumably we need to do something here?\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tcommit();\n\t\t\t}\n\t\t}\n\n\t\tif (mismatch) {\n\t\t\t// continue in hydration mode\n\t\t\tset_hydrating(true);\n\t\t}\n\n\t\t// When we mount the each block for the first time, the collection won't be\n\t\t// connected to this effect as the effect hasn't finished running yet and its deps\n\t\t// won't be assigned. However, it's possible that when reconciling the each block\n\t\t// that a mutation occurred and it's made the collection MAYBE_DIRTY, so reading the\n\t\t// collection again can provide consistency to the reactive graph again as the deriveds\n\t\t// will now be `CLEAN`.\n\t\tget(each_array);\n\t});\n\n\t/** @type {EachState} */\n\tvar state = { effect, flags, items, first };\n\n\tfirst_run = false;\n\n\tif (hydrating) {\n\t\tanchor = hydrate_node;\n\t}\n}\n\n/**\n * Add, remove, or reorder items output by an each block as its input changes\n * @template V\n * @param {EachState} state\n * @param {Array<V>} array\n * @param {Element | Comment | Text} anchor\n * @param {number} flags\n * @param {(value: V, index: number) => any} get_key\n * @returns {void}\n */\nfunction reconcile(state, array, anchor, flags, get_key) {\n\tvar is_animated = (flags & EACH_IS_ANIMATED) !== 0;\n\n\tvar length = array.length;\n\tvar items = state.items;\n\tvar current = state.first;\n\n\t/** @type {undefined | Set<EachItem>} */\n\tvar seen;\n\n\t/** @type {EachItem | null} */\n\tvar prev = null;\n\n\t/** @type {undefined | Set<EachItem>} */\n\tvar to_animate;\n\n\t/** @type {EachItem[]} */\n\tvar matched = [];\n\n\t/** @type {EachItem[]} */\n\tvar stashed = [];\n\n\t/** @type {V} */\n\tvar value;\n\n\t/** @type {any} */\n\tvar key;\n\n\t/** @type {EachItem | undefined} */\n\tvar item;\n\n\t/** @type {number} */\n\tvar i;\n\n\tif (is_animated) {\n\t\tfor (i = 0; i < length; i += 1) {\n\t\t\tvalue = array[i];\n\t\t\tkey = get_key(value, i);\n\t\t\titem = /** @type {EachItem} */ (items.get(key));\n\n\t\t\t// offscreen == coming in now, no animation in that case,\n\t\t\t// else this would happen https://github.com/sveltejs/svelte/issues/17181\n\t\t\tif (item.o) {\n\t\t\t\titem.a?.measure();\n\t\t\t\t(to_animate ??= new Set()).add(item);\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (i = 0; i < length; i += 1) {\n\t\tvalue = array[i];\n\t\tkey = get_key(value, i);\n\n\t\titem = /** @type {EachItem} */ (items.get(key));\n\n\t\tstate.first ??= item;\n\n\t\tif (!item.o) {\n\t\t\titem.o = true;\n\n\t\t\tvar next = prev ? prev.next : current;\n\n\t\t\tlink(state, prev, item);\n\t\t\tlink(state, item, next);\n\n\t\t\tmove(item, next, anchor);\n\t\t\tprev = item;\n\n\t\t\tmatched = [];\n\t\t\tstashed = [];\n\n\t\t\tcurrent = prev.next;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ((item.e.f & INERT) !== 0) {\n\t\t\tresume_effect(item.e);\n\t\t\tif (is_animated) {\n\t\t\t\titem.a?.unfix();\n\t\t\t\t(to_animate ??= new Set()).delete(item);\n\t\t\t}\n\t\t}\n\n\t\tif (item !== current) {\n\t\t\tif (seen !== undefined && seen.has(item)) {\n\t\t\t\tif (matched.length < stashed.length) {\n\t\t\t\t\t// more efficient to move later items to the front\n\t\t\t\t\tvar start = stashed[0];\n\t\t\t\t\tvar j;\n\n\t\t\t\t\tprev = start.prev;\n\n\t\t\t\t\tvar a = matched[0];\n\t\t\t\t\tvar b = matched[matched.length - 1];\n\n\t\t\t\t\tfor (j = 0; j < matched.length; j += 1) {\n\t\t\t\t\t\tmove(matched[j], start, anchor);\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (j = 0; j < stashed.length; j += 1) {\n\t\t\t\t\t\tseen.delete(stashed[j]);\n\t\t\t\t\t}\n\n\t\t\t\t\tlink(state, a.prev, b.next);\n\t\t\t\t\tlink(state, prev, a);\n\t\t\t\t\tlink(state, b, start);\n\n\t\t\t\t\tcurrent = start;\n\t\t\t\t\tprev = b;\n\t\t\t\t\ti -= 1;\n\n\t\t\t\t\tmatched = [];\n\t\t\t\t\tstashed = [];\n\t\t\t\t} else {\n\t\t\t\t\t// more efficient to move earlier items to the back\n\t\t\t\t\tseen.delete(item);\n\t\t\t\t\tmove(item, current, anchor);\n\n\t\t\t\t\tlink(state, item.prev, item.next);\n\t\t\t\t\tlink(state, item, prev === null ? state.first : prev.next);\n\t\t\t\t\tlink(state, prev, item);\n\n\t\t\t\t\tprev = item;\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tmatched = [];\n\t\t\tstashed = [];\n\n\t\t\twhile (current !== null && current.k !== key) {\n\t\t\t\t// If the each block isn't inert and an item has an effect that is already inert,\n\t\t\t\t// skip over adding it to our seen Set as the item is already being handled\n\t\t\t\tif ((current.e.f & INERT) === 0) {\n\t\t\t\t\t(seen ??= new Set()).add(current);\n\t\t\t\t}\n\t\t\t\tstashed.push(current);\n\t\t\t\tcurrent = current.next;\n\t\t\t}\n\n\t\t\tif (current === null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\titem = current;\n\t\t}\n\n\t\tmatched.push(item);\n\t\tprev = item;\n\t\tcurrent = item.next;\n\t}\n\n\tlet has_offscreen_items = items.size > length;\n\n\tif (current !== null || seen !== undefined) {\n\t\tvar to_destroy = seen === undefined ? [] : array_from(seen);\n\n\t\twhile (current !== null) {\n\t\t\t// If the each block isn't inert, then inert effects are currently outroing and will be removed once the transition is finished\n\t\t\tif ((current.e.f & INERT) === 0) {\n\t\t\t\tto_destroy.push(current);\n\t\t\t}\n\t\t\tcurrent = current.next;\n\t\t}\n\n\t\tvar destroy_length = to_destroy.length;\n\n\t\thas_offscreen_items = items.size - destroy_length > length;\n\n\t\tif (destroy_length > 0) {\n\t\t\tvar controlled_anchor = (flags & EACH_IS_CONTROLLED) !== 0 && length === 0 ? anchor : null;\n\n\t\t\tif (is_animated) {\n\t\t\t\tfor (i = 0; i < destroy_length; i += 1) {\n\t\t\t\t\tto_destroy[i].a?.measure();\n\t\t\t\t}\n\n\t\t\t\tfor (i = 0; i < destroy_length; i += 1) {\n\t\t\t\t\tto_destroy[i].a?.fix();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tpause_effects(state, to_destroy, controlled_anchor);\n\t\t}\n\t}\n\n\t// Append offscreen items at the end\n\tif (has_offscreen_items) {\n\t\tfor (const item of items.values()) {\n\t\t\tif (!item.o) {\n\t\t\t\tlink(state, prev, item);\n\t\t\t\tprev = item;\n\t\t\t}\n\t\t}\n\t}\n\n\tstate.effect.last = prev && prev.e;\n\n\tif (is_animated) {\n\t\tqueue_micro_task(() => {\n\t\t\tif (to_animate === undefined) return;\n\t\t\tfor (item of to_animate) {\n\t\t\t\titem.a?.apply();\n\t\t\t}\n\t\t});\n\t}\n}\n\n/**\n * @template V\n * @param {Node | null} anchor\n * @param {EachItem | null} prev\n * @param {V} value\n * @param {unknown} key\n * @param {number} index\n * @param {(anchor: Node, item: V | Source<V>, index: number | Value<number>, collection: () => V[]) => void} render_fn\n * @param {number} flags\n * @param {() => V[]} get_collection\n * @returns {EachItem}\n */\nfunction create_item(anchor, prev, value, key, index, render_fn, flags, get_collection) {\n\tvar previous_each_item = current_each_item;\n\tvar reactive = (flags & EACH_ITEM_REACTIVE) !== 0;\n\tvar mutable = (flags & EACH_ITEM_IMMUTABLE) === 0;\n\n\tvar v = reactive ? (mutable ? mutable_source(value, false, false) : source(value)) : value;\n\tvar i = (flags & EACH_INDEX_REACTIVE) === 0 ? index : source(index);\n\n\tif (DEV && reactive) {\n\t\t// For tracing purposes, we need to link the source signal we create with the\n\t\t// collection + index so that tracing works as intended\n\t\t/** @type {Value} */ (v).trace = () => {\n\t\t\tvar collection_index = typeof i === 'number' ? index : i.v;\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unused-expressions\n\t\t\tget_collection()[collection_index];\n\t\t};\n\t}\n\n\t/** @type {EachItem} */\n\tvar item = {\n\t\ti,\n\t\tv,\n\t\tk: key,\n\t\ta: null,\n\t\t// @ts-expect-error\n\t\te: null,\n\t\to: false,\n\t\tprev,\n\t\tnext: null\n\t};\n\n\tcurrent_each_item = item;\n\n\ttry {\n\t\tif (anchor === null) {\n\t\t\tvar fragment = document.createDocumentFragment();\n\t\t\tfragment.append((anchor = create_text()));\n\t\t}\n\n\t\titem.e = branch(() => render_fn(/** @type {Node} */ (anchor), v, i, get_collection));\n\n\t\tif (prev !== null) {\n\t\t\t// we only need to set `prev.next = item`, because\n\t\t\t// `item.prev = prev` was set on initialization.\n\t\t\t// the effects themselves are already linked\n\t\t\tprev.next = item;\n\t\t}\n\n\t\treturn item;\n\t} finally {\n\t\tcurrent_each_item = previous_each_item;\n\t}\n}\n\n/**\n * @param {EachItem} item\n * @param {EachItem | null} next\n * @param {Text | Element | Comment} anchor\n */\nfunction move(item, next, anchor) {\n\tvar end = item.next ? /** @type {TemplateNode} */ (item.next.e.nodes_start) : anchor;\n\n\tvar dest = next ? /** @type {TemplateNode} */ (next.e.nodes_start) : anchor;\n\tvar node = /** @type {TemplateNode} */ (item.e.nodes_start);\n\n\twhile (node !== null && node !== end) {\n\t\tvar next_node = /** @type {TemplateNode} */ (get_next_sibling(node));\n\t\tdest.before(node);\n\t\tnode = next_node;\n\t}\n}\n\n/**\n * @param {EachState} state\n * @param {EachItem | null} prev\n * @param {EachItem | null} next\n */\nfunction link(state, prev, next) {\n\tif (prev === null) {\n\t\tstate.first = next;\n\t\tstate.effect.first = next && next.e;\n\t} else {\n\t\tif (prev.e.next) {\n\t\t\tprev.e.next.prev = null;\n\t\t}\n\n\t\tprev.next = next;\n\t\tprev.e.next = next && next.e;\n\t}\n\n\tif (next !== null) {\n\t\tif (next.e.prev) {\n\t\t\tnext.e.prev.next = null;\n\t\t}\n\n\t\tnext.prev = prev;\n\t\tnext.e.prev = prev && prev.e;\n\t}\n}\n","/** @import { Effect, TemplateNode, Value } from '#client' */\nimport { DESTROYED, STALE_REACTION } from '#client/constants';\nimport { DEV } from 'esm-env';\nimport {\n\tcomponent_context,\n\tdev_stack,\n\tis_runes,\n\tset_component_context,\n\tset_dev_stack\n} from '../context.js';\nimport { get_boundary } from '../dom/blocks/boundary.js';\nimport { invoke_error_boundary } from '../error-handling.js';\nimport {\n\tactive_effect,\n\tactive_reaction,\n\tset_active_effect,\n\tset_active_reaction\n} from '../runtime.js';\nimport { Batch, current_batch } from './batch.js';\nimport {\n\tasync_derived,\n\tcurrent_async_effect,\n\tderived,\n\tderived_safe_equal,\n\tset_from_async_derived\n} from './deriveds.js';\nimport { aborted } from './effects.js';\nimport { hydrate_next, hydrating, set_hydrate_node, skip_nodes } from '../dom/hydration.js';\nimport { current_each_item, set_current_each_item } from '../dom/blocks/each.js';\n\n/**\n * @param {Array<Promise<void>>} blockers\n * @param {Array<() => any>} sync\n * @param {Array<() => Promise<any>>} async\n * @param {(values: Value[]) => any} fn\n */\nexport function flatten(blockers, sync, async, fn) {\n\tconst d = is_runes() ? derived : derived_safe_equal;\n\n\tif (async.length === 0 && blockers.length === 0) {\n\t\tfn(sync.map(d));\n\t\treturn;\n\t}\n\n\tvar batch = current_batch;\n\tvar parent = /** @type {Effect} */ (active_effect);\n\n\tvar restore = capture();\n\n\tfunction run() {\n\t\tPromise.all(async.map((expression) => async_derived(expression)))\n\t\t\t.then((result) => {\n\t\t\t\trestore();\n\n\t\t\t\ttry {\n\t\t\t\t\tfn([...sync.map(d), ...result]);\n\t\t\t\t} catch (error) {\n\t\t\t\t\t// ignore errors in blocks that have already been destroyed\n\t\t\t\t\tif ((parent.f & DESTROYED) === 0) {\n\t\t\t\t\t\tinvoke_error_boundary(error, parent);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbatch?.deactivate();\n\t\t\t\tunset_context();\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tinvoke_error_boundary(error, parent);\n\t\t\t});\n\t}\n\n\tif (blockers.length > 0) {\n\t\tPromise.all(blockers).then(() => {\n\t\t\trestore();\n\n\t\t\ttry {\n\t\t\t\treturn run();\n\t\t\t} finally {\n\t\t\t\tbatch?.deactivate();\n\t\t\t\tunset_context();\n\t\t\t}\n\t\t});\n\t} else {\n\t\trun();\n\t}\n}\n\n/**\n * @param {Array<Promise<void>>} blockers\n * @param {(values: Value[]) => any} fn\n */\nexport function run_after_blockers(blockers, fn) {\n\tvar each_item = current_each_item; // TODO should this be part of capture?\n\tflatten(blockers, [], [], (v) => {\n\t\tset_current_each_item(each_item);\n\t\tfn(v);\n\t});\n}\n\n/**\n * Captures the current effect context so that we can restore it after\n * some asynchronous work has happened (so that e.g. `await a + b`\n * causes `b` to be registered as a dependency).\n */\nexport function capture() {\n\tvar previous_effect = active_effect;\n\tvar previous_reaction = active_reaction;\n\tvar previous_component_context = component_context;\n\tvar previous_batch = current_batch;\n\n\tif (DEV) {\n\t\tvar previous_dev_stack = dev_stack;\n\t}\n\n\treturn function restore(activate_batch = true) {\n\t\tset_active_effect(previous_effect);\n\t\tset_active_reaction(previous_reaction);\n\t\tset_component_context(previous_component_context);\n\t\tif (activate_batch) previous_batch?.activate();\n\n\t\tif (DEV) {\n\t\t\tset_from_async_derived(null);\n\t\t\tset_dev_stack(previous_dev_stack);\n\t\t}\n\t};\n}\n\n/**\n * Wraps an `await` expression in such a way that the effect context that was\n * active before the expression evaluated can be reapplied afterwards —\n * `await a + b` becomes `(await $.save(a))() + b`\n * @template T\n * @param {Promise<T>} promise\n * @returns {Promise<() => T>}\n */\nexport async function save(promise) {\n\tvar restore = capture();\n\tvar value = await promise;\n\n\treturn () => {\n\t\trestore();\n\t\treturn value;\n\t};\n}\n\n/**\n * Reset `current_async_effect` after the `promise` resolves, so\n * that we can emit `await_reactivity_loss` warnings\n * @template T\n * @param {Promise<T>} promise\n * @returns {Promise<() => T>}\n */\nexport async function track_reactivity_loss(promise) {\n\tvar previous_async_effect = current_async_effect;\n\tvar value = await promise;\n\n\treturn () => {\n\t\tset_from_async_derived(previous_async_effect);\n\t\treturn value;\n\t};\n}\n\n/**\n * Used in `for await` loops in DEV, so\n * that we can emit `await_reactivity_loss` warnings\n * after each `async_iterator` result resolves and\n * after the `async_iterator` return resolves (if it runs)\n * @template T\n * @template TReturn\n * @param {Iterable<T> | AsyncIterable<T>} iterable\n * @returns {AsyncGenerator<T, TReturn | undefined>}\n */\nexport async function* for_await_track_reactivity_loss(iterable) {\n\t// This is based on the algorithms described in ECMA-262:\n\t// ForIn/OfBodyEvaluation\n\t// https://tc39.es/ecma262/multipage/ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset\n\t// AsyncIteratorClose\n\t// https://tc39.es/ecma262/multipage/abstract-operations.html#sec-asynciteratorclose\n\n\t/** @type {AsyncIterator<T, TReturn>} */\n\t// @ts-ignore\n\tconst iterator = iterable[Symbol.asyncIterator]?.() ?? iterable[Symbol.iterator]?.();\n\n\tif (iterator === undefined) {\n\t\tthrow new TypeError('value is not async iterable');\n\t}\n\n\t/** Whether the completion of the iterator was \"normal\", meaning it wasn't ended via `break` or a similar method */\n\tlet normal_completion = false;\n\ttry {\n\t\twhile (true) {\n\t\t\tconst { done, value } = (await track_reactivity_loss(iterator.next()))();\n\t\t\tif (done) {\n\t\t\t\tnormal_completion = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tyield value;\n\t\t}\n\t} finally {\n\t\t// If the iterator had a normal completion and `return` is defined on the iterator, call it and return the value\n\t\tif (normal_completion && iterator.return !== undefined) {\n\t\t\t// eslint-disable-next-line no-unsafe-finally\n\t\t\treturn /** @type {TReturn} */ ((await track_reactivity_loss(iterator.return()))().value);\n\t\t}\n\t}\n}\n\nexport function unset_context() {\n\tset_active_effect(null);\n\tset_active_reaction(null);\n\tset_component_context(null);\n\n\tif (DEV) {\n\t\tset_from_async_derived(null);\n\t\tset_dev_stack(null);\n\t}\n}\n\n/**\n * @param {TemplateNode} anchor\n * @param {(target: TemplateNode) => Promise<void>} fn\n */\nexport async function async_body(anchor, fn) {\n\tvar boundary = get_boundary();\n\tvar batch = /** @type {Batch} */ (current_batch);\n\tvar blocking = !boundary.is_pending();\n\n\tboundary.update_pending_count(1);\n\tbatch.increment(blocking);\n\n\tvar active = /** @type {Effect} */ (active_effect);\n\n\tvar was_hydrating = hydrating;\n\tvar next_hydrate_node = undefined;\n\n\tif (was_hydrating) {\n\t\thydrate_next();\n\t\tnext_hydrate_node = skip_nodes(false);\n\t}\n\n\ttry {\n\t\tvar promise = fn(anchor);\n\t} finally {\n\t\tif (next_hydrate_node) {\n\t\t\tset_hydrate_node(next_hydrate_node);\n\t\t\thydrate_next();\n\t\t}\n\t}\n\n\ttry {\n\t\tawait promise;\n\t} catch (error) {\n\t\tif (!aborted(active)) {\n\t\t\tinvoke_error_boundary(error, active);\n\t\t}\n\t} finally {\n\t\tboundary.update_pending_count(-1);\n\t\tbatch.decrement(blocking);\n\n\t\tunset_context();\n\t}\n}\n\n/**\n * @param {Array<() => void | Promise<void>>} thunks\n */\nexport function run(thunks) {\n\tconst restore = capture();\n\n\tvar boundary = get_boundary();\n\tvar batch = /** @type {Batch} */ (current_batch);\n\tvar blocking = !boundary.is_pending();\n\n\tboundary.update_pending_count(1);\n\tbatch.increment(blocking);\n\n\tvar active = /** @type {Effect} */ (active_effect);\n\n\t/** @type {null | { error: any }} */\n\tvar errored = null;\n\n\t/** @param {any} error */\n\tconst handle_error = (error) => {\n\t\terrored = { error }; // wrap in object in case a promise rejects with a falsy value\n\n\t\tif (!aborted(active)) {\n\t\t\tinvoke_error_boundary(error, active);\n\t\t}\n\t};\n\n\tvar promise = Promise.resolve(thunks[0]()).catch(handle_error);\n\n\tvar promises = [promise];\n\n\tfor (const fn of thunks.slice(1)) {\n\t\tpromise = promise\n\t\t\t.then(() => {\n\t\t\t\tif (errored) {\n\t\t\t\t\tthrow errored.error;\n\t\t\t\t}\n\n\t\t\t\tif (aborted(active)) {\n\t\t\t\t\tthrow STALE_REACTION;\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\trestore();\n\t\t\t\t\treturn fn();\n\t\t\t\t} finally {\n\t\t\t\t\t// TODO do we need it here as well as below?\n\t\t\t\t\tunset_context();\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(handle_error)\n\t\t\t.finally(() => {\n\t\t\t\tunset_context();\n\t\t\t});\n\n\t\tpromises.push(promise);\n\t}\n\n\tpromise\n\t\t// wait one more tick, so that template effects are\n\t\t// guaranteed to run before `$effect(...)`\n\t\t.then(() => Promise.resolve())\n\t\t.finally(() => {\n\t\t\tboundary.update_pending_count(-1);\n\t\t\tbatch.decrement(blocking);\n\t\t});\n\n\treturn promises;\n}\n","/** @import { Derived, Effect, Source } from '#client' */\n/** @import { Batch } from './batch.js'; */\nimport { DEV } from 'esm-env';\nimport {\n\tERROR_VALUE,\n\tCLEAN,\n\tDERIVED,\n\tDIRTY,\n\tEFFECT_PRESERVED,\n\tMAYBE_DIRTY,\n\tSTALE_REACTION,\n\tASYNC,\n\tWAS_MARKED,\n\tCONNECTED,\n\tDESTROYED\n} from '#client/constants';\nimport {\n\tactive_reaction,\n\tactive_effect,\n\tset_signal_status,\n\tupdate_reaction,\n\tincrement_write_version,\n\tset_active_effect,\n\tpush_reaction_value,\n\tis_destroying_effect\n} from '../runtime.js';\nimport { equals, safe_equals } from './equality.js';\nimport * as e from '../errors.js';\nimport * as w from '../warnings.js';\nimport { async_effect, destroy_effect, effect_tracking, teardown } from './effects.js';\nimport { eager_effects, internal_set, set_eager_effects, source } from './sources.js';\nimport { get_error } from '../../shared/dev.js';\nimport { async_mode_flag, tracing_mode_flag } from '../../flags/index.js';\nimport { Boundary } from '../dom/blocks/boundary.js';\nimport { component_context } from '../context.js';\nimport { UNINITIALIZED } from '../../../constants.js';\nimport { batch_values, current_batch } from './batch.js';\nimport { unset_context } from './async.js';\nimport { deferred } from '../../shared/utils.js';\n\n/** @type {Effect | null} */\nexport let current_async_effect = null;\n\n/** @param {Effect | null} v */\nexport function set_from_async_derived(v) {\n\tcurrent_async_effect = v;\n}\n\nexport const recent_async_deriveds = new Set();\n\n/**\n * @template V\n * @param {() => V} fn\n * @returns {Derived<V>}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function derived(fn) {\n\tvar flags = DERIVED | DIRTY;\n\tvar parent_derived =\n\t\tactive_reaction !== null && (active_reaction.f & DERIVED) !== 0\n\t\t\t? /** @type {Derived} */ (active_reaction)\n\t\t\t: null;\n\n\tif (active_effect !== null) {\n\t\t// Since deriveds are evaluated lazily, any effects created inside them are\n\t\t// created too late to ensure that the parent effect is added to the tree\n\t\tactive_effect.f |= EFFECT_PRESERVED;\n\t}\n\n\t/** @type {Derived<V>} */\n\tconst signal = {\n\t\tctx: component_context,\n\t\tdeps: null,\n\t\teffects: null,\n\t\tequals,\n\t\tf: flags,\n\t\tfn,\n\t\treactions: null,\n\t\trv: 0,\n\t\tv: /** @type {V} */ (UNINITIALIZED),\n\t\twv: 0,\n\t\tparent: parent_derived ?? active_effect,\n\t\tac: null\n\t};\n\n\tif (DEV && tracing_mode_flag) {\n\t\tsignal.created = get_error('created at');\n\t}\n\n\treturn signal;\n}\n\n/**\n * @template V\n * @param {() => V | Promise<V>} fn\n * @param {string} [location] If provided, print a warning if the value is not read immediately after update\n * @returns {Promise<Source<V>>}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function async_derived(fn, location) {\n\tlet parent = /** @type {Effect | null} */ (active_effect);\n\n\tif (parent === null) {\n\t\te.async_derived_orphan();\n\t}\n\n\tvar boundary = /** @type {Boundary} */ (parent.b);\n\n\tvar promise = /** @type {Promise<V>} */ (/** @type {unknown} */ (undefined));\n\tvar signal = source(/** @type {V} */ (UNINITIALIZED));\n\n\t// only suspend in async deriveds created on initialisation\n\tvar should_suspend = !active_reaction;\n\n\t/** @type {Map<Batch, ReturnType<typeof deferred<V>>>} */\n\tvar deferreds = new Map();\n\n\tasync_effect(() => {\n\t\tif (DEV) current_async_effect = active_effect;\n\n\t\t/** @type {ReturnType<typeof deferred<V>>} */\n\t\tvar d = deferred();\n\t\tpromise = d.promise;\n\n\t\ttry {\n\t\t\t// If this code is changed at some point, make sure to still access the then property\n\t\t\t// of fn() to read any signals it might access, so that we track them as dependencies.\n\t\t\t// We call `unset_context` to undo any `save` calls that happen inside `fn()`\n\t\t\tPromise.resolve(fn())\n\t\t\t\t.then(d.resolve, d.reject)\n\t\t\t\t.then(() => {\n\t\t\t\t\tif (batch === current_batch && batch.committed) {\n\t\t\t\t\t\t// if the batch was rejected as stale, we need to cleanup\n\t\t\t\t\t\t// after any `$.save(...)` calls inside `fn()`\n\t\t\t\t\t\tbatch.deactivate();\n\t\t\t\t\t}\n\n\t\t\t\t\tunset_context();\n\t\t\t\t});\n\t\t} catch (error) {\n\t\t\td.reject(error);\n\t\t\tunset_context();\n\t\t}\n\n\t\tif (DEV) current_async_effect = null;\n\n\t\tvar batch = /** @type {Batch} */ (current_batch);\n\n\t\tif (should_suspend) {\n\t\t\tvar blocking = !boundary.is_pending();\n\n\t\t\tboundary.update_pending_count(1);\n\t\t\tbatch.increment(blocking);\n\n\t\t\tdeferreds.get(batch)?.reject(STALE_REACTION);\n\t\t\tdeferreds.delete(batch); // delete to ensure correct order in Map iteration below\n\t\t\tdeferreds.set(batch, d);\n\t\t}\n\n\t\t/**\n\t\t * @param {any} value\n\t\t * @param {unknown} error\n\t\t */\n\t\tconst handler = (value, error = undefined) => {\n\t\t\tcurrent_async_effect = null;\n\n\t\t\tbatch.activate();\n\n\t\t\tif (error) {\n\t\t\t\tif (error !== STALE_REACTION) {\n\t\t\t\t\tsignal.f |= ERROR_VALUE;\n\n\t\t\t\t\t// @ts-expect-error the error is the wrong type, but we don't care\n\t\t\t\t\tinternal_set(signal, error);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ((signal.f & ERROR_VALUE) !== 0) {\n\t\t\t\t\tsignal.f ^= ERROR_VALUE;\n\t\t\t\t}\n\n\t\t\t\tinternal_set(signal, value);\n\n\t\t\t\t// All prior async derived runs are now stale\n\t\t\t\tfor (const [b, d] of deferreds) {\n\t\t\t\t\tdeferreds.delete(b);\n\t\t\t\t\tif (b === batch) break;\n\t\t\t\t\td.reject(STALE_REACTION);\n\t\t\t\t}\n\n\t\t\t\tif (DEV && location !== undefined) {\n\t\t\t\t\trecent_async_deriveds.add(signal);\n\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tif (recent_async_deriveds.has(signal)) {\n\t\t\t\t\t\t\tw.await_waterfall(/** @type {string} */ (signal.label), location);\n\t\t\t\t\t\t\trecent_async_deriveds.delete(signal);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (should_suspend) {\n\t\t\t\tboundary.update_pending_count(-1);\n\t\t\t\tbatch.decrement(blocking);\n\t\t\t}\n\t\t};\n\n\t\td.promise.then(handler, (e) => handler(null, e || 'unknown'));\n\t});\n\n\tteardown(() => {\n\t\tfor (const d of deferreds.values()) {\n\t\t\td.reject(STALE_REACTION);\n\t\t}\n\t});\n\n\tif (DEV) {\n\t\t// add a flag that lets this be printed as a derived\n\t\t// when using `$inspect.trace()`\n\t\tsignal.f |= ASYNC;\n\t}\n\n\treturn new Promise((fulfil) => {\n\t\t/** @param {Promise<V>} p */\n\t\tfunction next(p) {\n\t\t\tfunction go() {\n\t\t\t\tif (p === promise) {\n\t\t\t\t\tfulfil(signal);\n\t\t\t\t} else {\n\t\t\t\t\t// if the effect re-runs before the initial promise\n\t\t\t\t\t// resolves, delay resolution until we have a value\n\t\t\t\t\tnext(promise);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tp.then(go, go);\n\t\t}\n\n\t\tnext(promise);\n\t});\n}\n\n/**\n * @template V\n * @param {() => V} fn\n * @returns {Derived<V>}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function user_derived(fn) {\n\tconst d = derived(fn);\n\n\tif (!async_mode_flag) push_reaction_value(d);\n\n\treturn d;\n}\n\n/**\n * @template V\n * @param {() => V} fn\n * @returns {Derived<V>}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function derived_safe_equal(fn) {\n\tconst signal = derived(fn);\n\tsignal.equals = safe_equals;\n\treturn signal;\n}\n\n/**\n * @param {Derived} derived\n * @returns {void}\n */\nexport function destroy_derived_effects(derived) {\n\tvar effects = derived.effects;\n\n\tif (effects !== null) {\n\t\tderived.effects = null;\n\n\t\tfor (var i = 0; i < effects.length; i += 1) {\n\t\t\tdestroy_effect(/** @type {Effect} */ (effects[i]));\n\t\t}\n\t}\n}\n\n/**\n * The currently updating deriveds, used to detect infinite recursion\n * in dev mode and provide a nicer error than 'too much recursion'\n * @type {Derived[]}\n */\nlet stack = [];\n\n/**\n * @param {Derived} derived\n * @returns {Effect | null}\n */\nfunction get_derived_parent_effect(derived) {\n\tvar parent = derived.parent;\n\twhile (parent !== null) {\n\t\tif ((parent.f & DERIVED) === 0) {\n\t\t\t// The original parent effect might've been destroyed but the derived\n\t\t\t// is used elsewhere now - do not return the destroyed effect in that case\n\t\t\treturn (parent.f & DESTROYED) === 0 ? /** @type {Effect} */ (parent) : null;\n\t\t}\n\t\tparent = parent.parent;\n\t}\n\treturn null;\n}\n\n/**\n * @template T\n * @param {Derived} derived\n * @returns {T}\n */\nexport function execute_derived(derived) {\n\tvar value;\n\tvar prev_active_effect = active_effect;\n\n\tset_active_effect(get_derived_parent_effect(derived));\n\n\tif (DEV) {\n\t\tlet prev_eager_effects = eager_effects;\n\t\tset_eager_effects(new Set());\n\t\ttry {\n\t\t\tif (stack.includes(derived)) {\n\t\t\t\te.derived_references_self();\n\t\t\t}\n\n\t\t\tstack.push(derived);\n\n\t\t\tderived.f &= ~WAS_MARKED;\n\t\t\tdestroy_derived_effects(derived);\n\t\t\tvalue = update_reaction(derived);\n\t\t} finally {\n\t\t\tset_active_effect(prev_active_effect);\n\t\t\tset_eager_effects(prev_eager_effects);\n\t\t\tstack.pop();\n\t\t}\n\t} else {\n\t\ttry {\n\t\t\tderived.f &= ~WAS_MARKED;\n\t\t\tdestroy_derived_effects(derived);\n\t\t\tvalue = update_reaction(derived);\n\t\t} finally {\n\t\t\tset_active_effect(prev_active_effect);\n\t\t}\n\t}\n\n\treturn value;\n}\n\n/**\n * @param {Derived} derived\n * @returns {void}\n */\nexport function update_derived(derived) {\n\tvar value = execute_derived(derived);\n\n\tif (!derived.equals(value)) {\n\t\t// in a fork, we don't update the underlying value, just `batch_values`.\n\t\t// the underlying value will be updated when the fork is committed.\n\t\t// otherwise, the next time we get here after a 'real world' state\n\t\t// change, `derived.equals` may incorrectly return `true`\n\t\tif (!current_batch?.is_fork) {\n\t\t\tderived.v = value;\n\t\t}\n\n\t\tderived.wv = increment_write_version();\n\t}\n\n\t// don't mark derived clean if we're reading it inside a\n\t// cleanup function, or it will cache a stale value\n\tif (is_destroying_effect) {\n\t\treturn;\n\t}\n\n\t// During time traveling we don't want to reset the status so that\n\t// traversal of the graph in the other batches still happens\n\tif (batch_values !== null) {\n\t\t// only cache the value if we're in a tracking context, otherwise we won't\n\t\t// clear the cache in `mark_reactions` when dependencies are updated\n\t\tif (effect_tracking() || current_batch?.is_fork) {\n\t\t\tbatch_values.set(derived, value);\n\t\t}\n\t} else {\n\t\tvar status = (derived.f & CONNECTED) === 0 ? MAYBE_DIRTY : CLEAN;\n\t\tset_signal_status(derived, status);\n\t}\n}\n","/** @import { Derived, Effect, Source, Value } from '#client' */\nimport { DEV } from 'esm-env';\nimport {\n\tactive_reaction,\n\tactive_effect,\n\tuntracked_writes,\n\tget,\n\tset_untracked_writes,\n\tset_signal_status,\n\tuntrack,\n\tincrement_write_version,\n\tupdate_effect,\n\tcurrent_sources,\n\tis_dirty,\n\tuntracking,\n\tis_destroying_effect,\n\tpush_reaction_value,\n\tset_is_updating_effect,\n\tis_updating_effect\n} from '../runtime.js';\nimport { equals, safe_equals } from './equality.js';\nimport {\n\tCLEAN,\n\tDERIVED,\n\tDIRTY,\n\tBRANCH_EFFECT,\n\tEAGER_EFFECT,\n\tMAYBE_DIRTY,\n\tBLOCK_EFFECT,\n\tROOT_EFFECT,\n\tASYNC,\n\tWAS_MARKED,\n\tCONNECTED\n} from '#client/constants';\nimport * as e from '../errors.js';\nimport { legacy_mode_flag, tracing_mode_flag } from '../../flags/index.js';\nimport { tag_proxy } from '../dev/tracing.js';\nimport { get_error } from '../../shared/dev.js';\nimport { component_context, is_runes } from '../context.js';\nimport { Batch, batch_values, eager_block_effects, schedule_effect } from './batch.js';\nimport { proxy } from '../proxy.js';\nimport { execute_derived } from './deriveds.js';\n\n/** @type {Set<any>} */\nexport let eager_effects = new Set();\n\n/** @type {Map<Source, any>} */\nexport const old_values = new Map();\n\n/**\n * @param {Set<any>} v\n */\nexport function set_eager_effects(v) {\n\teager_effects = v;\n}\n\nlet eager_effects_deferred = false;\n\nexport function set_eager_effects_deferred() {\n\teager_effects_deferred = true;\n}\n\n/**\n * @template V\n * @param {V} v\n * @param {Error | null} [stack]\n * @returns {Source<V>}\n */\n// TODO rename this to `state` throughout the codebase\nexport function source(v, stack) {\n\t/** @type {Value} */\n\tvar signal = {\n\t\tf: 0, // TODO ideally we could skip this altogether, but it causes type errors\n\t\tv,\n\t\treactions: null,\n\t\tequals,\n\t\trv: 0,\n\t\twv: 0\n\t};\n\n\tif (DEV && tracing_mode_flag) {\n\t\tsignal.created = stack ?? get_error('created at');\n\t\tsignal.updated = null;\n\t\tsignal.set_during_effect = false;\n\t\tsignal.trace = null;\n\t}\n\n\treturn signal;\n}\n\n/**\n * @template V\n * @param {V} v\n * @param {Error | null} [stack]\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function state(v, stack) {\n\tconst s = source(v, stack);\n\n\tpush_reaction_value(s);\n\n\treturn s;\n}\n\n/**\n * @template V\n * @param {V} initial_value\n * @param {boolean} [immutable]\n * @returns {Source<V>}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function mutable_source(initial_value, immutable = false, trackable = true) {\n\tconst s = source(initial_value);\n\tif (!immutable) {\n\t\ts.equals = safe_equals;\n\t}\n\n\t// bind the signal to the component context, in case we need to\n\t// track updates to trigger beforeUpdate/afterUpdate callbacks\n\tif (legacy_mode_flag && trackable && component_context !== null && component_context.l !== null) {\n\t\t(component_context.l.s ??= []).push(s);\n\t}\n\n\treturn s;\n}\n\n/**\n * @template V\n * @param {Value<V>} source\n * @param {V} value\n */\nexport function mutate(source, value) {\n\tset(\n\t\tsource,\n\t\tuntrack(() => get(source))\n\t);\n\treturn value;\n}\n\n/**\n * @template V\n * @param {Source<V>} source\n * @param {V} value\n * @param {boolean} [should_proxy]\n * @returns {V}\n */\nexport function set(source, value, should_proxy = false) {\n\tif (\n\t\tactive_reaction !== null &&\n\t\t// since we are untracking the function inside `$inspect.with` we need to add this check\n\t\t// to ensure we error if state is set inside an inspect effect\n\t\t(!untracking || (active_reaction.f & EAGER_EFFECT) !== 0) &&\n\t\tis_runes() &&\n\t\t(active_reaction.f & (DERIVED | BLOCK_EFFECT | ASYNC | EAGER_EFFECT)) !== 0 &&\n\t\t!current_sources?.includes(source)\n\t) {\n\t\te.state_unsafe_mutation();\n\t}\n\n\tlet new_value = should_proxy ? proxy(value) : value;\n\n\tif (DEV) {\n\t\ttag_proxy(new_value, /** @type {string} */ (source.label));\n\t}\n\n\treturn internal_set(source, new_value);\n}\n\n/**\n * @template V\n * @param {Source<V>} source\n * @param {V} value\n * @returns {V}\n */\nexport function internal_set(source, value) {\n\tif (!source.equals(value)) {\n\t\tvar old_value = source.v;\n\n\t\tif (is_destroying_effect) {\n\t\t\told_values.set(source, value);\n\t\t} else {\n\t\t\told_values.set(source, old_value);\n\t\t}\n\n\t\tsource.v = value;\n\n\t\tvar batch = Batch.ensure();\n\t\tbatch.capture(source, old_value);\n\n\t\tif (DEV) {\n\t\t\tif (tracing_mode_flag || active_effect !== null) {\n\t\t\t\tsource.updated ??= new Map();\n\n\t\t\t\t// For performance reasons, when not using $inspect.trace, we only start collecting stack traces\n\t\t\t\t// after the same source has been updated more than 5 times in the same flush cycle.\n\t\t\t\tconst count = (source.updated.get('')?.count ?? 0) + 1;\n\t\t\t\tsource.updated.set('', { error: /** @type {any} */ (null), count });\n\n\t\t\t\tif (tracing_mode_flag || count > 5) {\n\t\t\t\t\tconst error = get_error('updated at');\n\n\t\t\t\t\tif (error !== null) {\n\t\t\t\t\t\tlet entry = source.updated.get(error.stack);\n\n\t\t\t\t\t\tif (!entry) {\n\t\t\t\t\t\t\tentry = { error, count: 0 };\n\t\t\t\t\t\t\tsource.updated.set(error.stack, entry);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tentry.count++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (active_effect !== null) {\n\t\t\t\tsource.set_during_effect = true;\n\t\t\t}\n\t\t}\n\n\t\tif ((source.f & DERIVED) !== 0) {\n\t\t\t// if we are assigning to a dirty derived we set it to clean/maybe dirty but we also eagerly execute it to track the dependencies\n\t\t\tif ((source.f & DIRTY) !== 0) {\n\t\t\t\texecute_derived(/** @type {Derived} */ (source));\n\t\t\t}\n\n\t\t\tset_signal_status(source, (source.f & CONNECTED) !== 0 ? CLEAN : MAYBE_DIRTY);\n\t\t}\n\n\t\tsource.wv = increment_write_version();\n\n\t\tmark_reactions(source, DIRTY);\n\n\t\t// It's possible that the current reaction might not have up-to-date dependencies\n\t\t// whilst it's actively running. So in the case of ensuring it registers the reaction\n\t\t// properly for itself, we need to ensure the current effect actually gets\n\t\t// scheduled. i.e: `$effect(() => x++)`\n\t\tif (\n\t\t\tis_runes() &&\n\t\t\tactive_effect !== null &&\n\t\t\t(active_effect.f & CLEAN) !== 0 &&\n\t\t\t(active_effect.f & (BRANCH_EFFECT | ROOT_EFFECT)) === 0\n\t\t) {\n\t\t\tif (untracked_writes === null) {\n\t\t\t\tset_untracked_writes([source]);\n\t\t\t} else {\n\t\t\t\tuntracked_writes.push(source);\n\t\t\t}\n\t\t}\n\n\t\tif (!batch.is_fork && eager_effects.size > 0 && !eager_effects_deferred) {\n\t\t\tflush_eager_effects();\n\t\t}\n\t}\n\n\treturn value;\n}\n\nexport function flush_eager_effects() {\n\teager_effects_deferred = false;\n\tvar prev_is_updating_effect = is_updating_effect;\n\tset_is_updating_effect(true);\n\n\tconst inspects = Array.from(eager_effects);\n\n\ttry {\n\t\tfor (const effect of inspects) {\n\t\t\t// Mark clean inspect-effects as maybe dirty and then check their dirtiness\n\t\t\t// instead of just updating the effects - this way we avoid overfiring.\n\t\t\tif ((effect.f & CLEAN) !== 0) {\n\t\t\t\tset_signal_status(effect, MAYBE_DIRTY);\n\t\t\t}\n\n\t\t\tif (is_dirty(effect)) {\n\t\t\t\tupdate_effect(effect);\n\t\t\t}\n\t\t}\n\t} finally {\n\t\tset_is_updating_effect(prev_is_updating_effect);\n\t}\n\n\teager_effects.clear();\n}\n\n/**\n * @template {number | bigint} T\n * @param {Source<T>} source\n * @param {1 | -1} [d]\n * @returns {T}\n */\nexport function update(source, d = 1) {\n\tvar value = get(source);\n\tvar result = d === 1 ? value++ : value--;\n\n\tset(source, value);\n\n\t// @ts-expect-error\n\treturn result;\n}\n\n/**\n * @template {number | bigint} T\n * @param {Source<T>} source\n * @param {1 | -1} [d]\n * @returns {T}\n */\nexport function update_pre(source, d = 1) {\n\tvar value = get(source);\n\n\t// @ts-expect-error\n\treturn set(source, d === 1 ? ++value : --value);\n}\n\n/**\n * Silently (without using `get`) increment a source\n * @param {Source<number>} source\n */\nexport function increment(source) {\n\tset(source, source.v + 1);\n}\n\n/**\n * @param {Value} signal\n * @param {number} status should be DIRTY or MAYBE_DIRTY\n * @returns {void}\n */\nfunction mark_reactions(signal, status) {\n\tvar reactions = signal.reactions;\n\tif (reactions === null) return;\n\n\tvar runes = is_runes();\n\tvar length = reactions.length;\n\n\tfor (var i = 0; i < length; i++) {\n\t\tvar reaction = reactions[i];\n\t\tvar flags = reaction.f;\n\n\t\t// In legacy mode, skip the current effect to prevent infinite loops\n\t\tif (!runes && reaction === active_effect) continue;\n\n\t\t// Inspect effects need to run immediately, so that the stack trace makes sense\n\t\tif (DEV && (flags & EAGER_EFFECT) !== 0) {\n\t\t\teager_effects.add(reaction);\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar not_dirty = (flags & DIRTY) === 0;\n\n\t\t// don't set a DIRTY reaction to MAYBE_DIRTY\n\t\tif (not_dirty) {\n\t\t\tset_signal_status(reaction, status);\n\t\t}\n\n\t\tif ((flags & DERIVED) !== 0) {\n\t\t\tvar derived = /** @type {Derived} */ (reaction);\n\n\t\t\tbatch_values?.delete(derived);\n\n\t\t\tif ((flags & WAS_MARKED) === 0) {\n\t\t\t\t// Only connected deriveds can be reliably unmarked right away\n\t\t\t\tif (flags & CONNECTED) {\n\t\t\t\t\treaction.f |= WAS_MARKED;\n\t\t\t\t}\n\n\t\t\t\tmark_reactions(derived, MAYBE_DIRTY);\n\t\t\t}\n\t\t} else if (not_dirty) {\n\t\t\tif ((flags & BLOCK_EFFECT) !== 0 && eager_block_effects !== null) {\n\t\t\t\teager_block_effects.add(/** @type {Effect} */ (reaction));\n\t\t\t}\n\n\t\t\tschedule_effect(/** @type {Effect} */ (reaction));\n\t\t}\n\t}\n}\n","/** @import { Source } from '#client' */\nimport { DEV } from 'esm-env';\nimport {\n\tget,\n\tactive_effect,\n\tupdate_version,\n\tactive_reaction,\n\tset_update_version,\n\tset_active_reaction\n} from './runtime.js';\nimport {\n\tarray_prototype,\n\tget_descriptor,\n\tget_prototype_of,\n\tis_array,\n\tobject_prototype\n} from '../shared/utils.js';\nimport {\n\tstate as source,\n\tset,\n\tincrement,\n\tflush_eager_effects,\n\tset_eager_effects_deferred\n} from './reactivity/sources.js';\nimport { PROXY_PATH_SYMBOL, STATE_SYMBOL } from '#client/constants';\nimport { UNINITIALIZED } from '../../constants.js';\nimport * as e from './errors.js';\nimport { tag } from './dev/tracing.js';\nimport { get_error } from '../shared/dev.js';\nimport { tracing_mode_flag } from '../flags/index.js';\n\n// TODO move all regexes into shared module?\nconst regex_is_valid_identifier = /^[a-zA-Z_$][a-zA-Z_$0-9]*$/;\n\n/**\n * @template T\n * @param {T} value\n * @returns {T}\n */\nexport function proxy(value) {\n\t// if non-proxyable, or is already a proxy, return `value`\n\tif (typeof value !== 'object' || value === null || STATE_SYMBOL in value) {\n\t\treturn value;\n\t}\n\n\tconst prototype = get_prototype_of(value);\n\n\tif (prototype !== object_prototype && prototype !== array_prototype) {\n\t\treturn value;\n\t}\n\n\t/** @type {Map<any, Source<any>>} */\n\tvar sources = new Map();\n\tvar is_proxied_array = is_array(value);\n\tvar version = source(0);\n\n\tvar stack = DEV && tracing_mode_flag ? get_error('created at') : null;\n\tvar parent_version = update_version;\n\n\t/**\n\t * Executes the proxy in the context of the reaction it was originally created in, if any\n\t * @template T\n\t * @param {() => T} fn\n\t */\n\tvar with_parent = (fn) => {\n\t\tif (update_version === parent_version) {\n\t\t\treturn fn();\n\t\t}\n\n\t\t// child source is being created after the initial proxy —\n\t\t// prevent it from being associated with the current reaction\n\t\tvar reaction = active_reaction;\n\t\tvar version = update_version;\n\n\t\tset_active_reaction(null);\n\t\tset_update_version(parent_version);\n\n\t\tvar result = fn();\n\n\t\tset_active_reaction(reaction);\n\t\tset_update_version(version);\n\n\t\treturn result;\n\t};\n\n\tif (is_proxied_array) {\n\t\t// We need to create the length source eagerly to ensure that\n\t\t// mutations to the array are properly synced with our proxy\n\t\tsources.set('length', source(/** @type {any[]} */ (value).length, stack));\n\t\tif (DEV) {\n\t\t\tvalue = /** @type {any} */ (inspectable_array(/** @type {any[]} */ (value)));\n\t\t}\n\t}\n\n\t/** Used in dev for $inspect.trace() */\n\tvar path = '';\n\tlet updating = false;\n\t/** @param {string} new_path */\n\tfunction update_path(new_path) {\n\t\tif (updating) return;\n\t\tupdating = true;\n\t\tpath = new_path;\n\n\t\ttag(version, `${path} version`);\n\n\t\t// rename all child sources and child proxies\n\t\tfor (const [prop, source] of sources) {\n\t\t\ttag(source, get_label(path, prop));\n\t\t}\n\t\tupdating = false;\n\t}\n\n\treturn new Proxy(/** @type {any} */ (value), {\n\t\tdefineProperty(_, prop, descriptor) {\n\t\t\tif (\n\t\t\t\t!('value' in descriptor) ||\n\t\t\t\tdescriptor.configurable === false ||\n\t\t\t\tdescriptor.enumerable === false ||\n\t\t\t\tdescriptor.writable === false\n\t\t\t) {\n\t\t\t\t// we disallow non-basic descriptors, because unless they are applied to the\n\t\t\t\t// target object — which we avoid, so that state can be forked — we will run\n\t\t\t\t// afoul of the various invariants\n\t\t\t\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/getOwnPropertyDescriptor#invariants\n\t\t\t\te.state_descriptors_fixed();\n\t\t\t}\n\t\t\tvar s = sources.get(prop);\n\t\t\tif (s === undefined) {\n\t\t\t\ts = with_parent(() => {\n\t\t\t\t\tvar s = source(descriptor.value, stack);\n\t\t\t\t\tsources.set(prop, s);\n\t\t\t\t\tif (DEV && typeof prop === 'string') {\n\t\t\t\t\t\ttag(s, get_label(path, prop));\n\t\t\t\t\t}\n\t\t\t\t\treturn s;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tset(s, descriptor.value, true);\n\t\t\t}\n\n\t\t\treturn true;\n\t\t},\n\n\t\tdeleteProperty(target, prop) {\n\t\t\tvar s = sources.get(prop);\n\n\t\t\tif (s === undefined) {\n\t\t\t\tif (prop in target) {\n\t\t\t\t\tconst s = with_parent(() => source(UNINITIALIZED, stack));\n\t\t\t\t\tsources.set(prop, s);\n\t\t\t\t\tincrement(version);\n\n\t\t\t\t\tif (DEV) {\n\t\t\t\t\t\ttag(s, get_label(path, prop));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tset(s, UNINITIALIZED);\n\t\t\t\tincrement(version);\n\t\t\t}\n\n\t\t\treturn true;\n\t\t},\n\n\t\tget(target, prop, receiver) {\n\t\t\tif (prop === STATE_SYMBOL) {\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\tif (DEV && prop === PROXY_PATH_SYMBOL) {\n\t\t\t\treturn update_path;\n\t\t\t}\n\n\t\t\tvar s = sources.get(prop);\n\t\t\tvar exists = prop in target;\n\n\t\t\t// create a source, but only if it's an own property and not a prototype property\n\t\t\tif (s === undefined && (!exists || get_descriptor(target, prop)?.writable)) {\n\t\t\t\ts = with_parent(() => {\n\t\t\t\t\tvar p = proxy(exists ? target[prop] : UNINITIALIZED);\n\t\t\t\t\tvar s = source(p, stack);\n\n\t\t\t\t\tif (DEV) {\n\t\t\t\t\t\ttag(s, get_label(path, prop));\n\t\t\t\t\t}\n\n\t\t\t\t\treturn s;\n\t\t\t\t});\n\n\t\t\t\tsources.set(prop, s);\n\t\t\t}\n\n\t\t\tif (s !== undefined) {\n\t\t\t\tvar v = get(s);\n\t\t\t\treturn v === UNINITIALIZED ? undefined : v;\n\t\t\t}\n\n\t\t\treturn Reflect.get(target, prop, receiver);\n\t\t},\n\n\t\tgetOwnPropertyDescriptor(target, prop) {\n\t\t\tvar descriptor = Reflect.getOwnPropertyDescriptor(target, prop);\n\n\t\t\tif (descriptor && 'value' in descriptor) {\n\t\t\t\tvar s = sources.get(prop);\n\t\t\t\tif (s) descriptor.value = get(s);\n\t\t\t} else if (descriptor === undefined) {\n\t\t\t\tvar source = sources.get(prop);\n\t\t\t\tvar value = source?.v;\n\n\t\t\t\tif (source !== undefined && value !== UNINITIALIZED) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\tconfigurable: true,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\twritable: true\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn descriptor;\n\t\t},\n\n\t\thas(target, prop) {\n\t\t\tif (prop === STATE_SYMBOL) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tvar s = sources.get(prop);\n\t\t\tvar has = (s !== undefined && s.v !== UNINITIALIZED) || Reflect.has(target, prop);\n\n\t\t\tif (\n\t\t\t\ts !== undefined ||\n\t\t\t\t(active_effect !== null && (!has || get_descriptor(target, prop)?.writable))\n\t\t\t) {\n\t\t\t\tif (s === undefined) {\n\t\t\t\t\ts = with_parent(() => {\n\t\t\t\t\t\tvar p = has ? proxy(target[prop]) : UNINITIALIZED;\n\t\t\t\t\t\tvar s = source(p, stack);\n\n\t\t\t\t\t\tif (DEV) {\n\t\t\t\t\t\t\ttag(s, get_label(path, prop));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn s;\n\t\t\t\t\t});\n\n\t\t\t\t\tsources.set(prop, s);\n\t\t\t\t}\n\n\t\t\t\tvar value = get(s);\n\t\t\t\tif (value === UNINITIALIZED) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn has;\n\t\t},\n\n\t\tset(target, prop, value, receiver) {\n\t\t\tvar s = sources.get(prop);\n\t\t\tvar has = prop in target;\n\n\t\t\t// variable.length = value -> clear all signals with index >= value\n\t\t\tif (is_proxied_array && prop === 'length') {\n\t\t\t\tfor (var i = value; i < /** @type {Source<number>} */ (s).v; i += 1) {\n\t\t\t\t\tvar other_s = sources.get(i + '');\n\t\t\t\t\tif (other_s !== undefined) {\n\t\t\t\t\t\tset(other_s, UNINITIALIZED);\n\t\t\t\t\t} else if (i in target) {\n\t\t\t\t\t\t// If the item exists in the original, we need to create an uninitialized source,\n\t\t\t\t\t\t// else a later read of the property would result in a source being created with\n\t\t\t\t\t\t// the value of the original item at that index.\n\t\t\t\t\t\tother_s = with_parent(() => source(UNINITIALIZED, stack));\n\t\t\t\t\t\tsources.set(i + '', other_s);\n\n\t\t\t\t\t\tif (DEV) {\n\t\t\t\t\t\t\ttag(other_s, get_label(path, i));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If we haven't yet created a source for this property, we need to ensure\n\t\t\t// we do so otherwise if we read it later, then the write won't be tracked and\n\t\t\t// the heuristics of effects will be different vs if we had read the proxied\n\t\t\t// object property before writing to that property.\n\t\t\tif (s === undefined) {\n\t\t\t\tif (!has || get_descriptor(target, prop)?.writable) {\n\t\t\t\t\ts = with_parent(() => source(undefined, stack));\n\n\t\t\t\t\tif (DEV) {\n\t\t\t\t\t\ttag(s, get_label(path, prop));\n\t\t\t\t\t}\n\t\t\t\t\tset(s, proxy(value));\n\n\t\t\t\t\tsources.set(prop, s);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\thas = s.v !== UNINITIALIZED;\n\n\t\t\t\tvar p = with_parent(() => proxy(value));\n\t\t\t\tset(s, p);\n\t\t\t}\n\n\t\t\tvar descriptor = Reflect.getOwnPropertyDescriptor(target, prop);\n\n\t\t\t// Set the new value before updating any signals so that any listeners get the new value\n\t\t\tif (descriptor?.set) {\n\t\t\t\tdescriptor.set.call(receiver, value);\n\t\t\t}\n\n\t\t\tif (!has) {\n\t\t\t\t// If we have mutated an array directly, we might need to\n\t\t\t\t// signal that length has also changed. Do it before updating metadata\n\t\t\t\t// to ensure that iterating over the array as a result of a metadata update\n\t\t\t\t// will not cause the length to be out of sync.\n\t\t\t\tif (is_proxied_array && typeof prop === 'string') {\n\t\t\t\t\tvar ls = /** @type {Source<number>} */ (sources.get('length'));\n\t\t\t\t\tvar n = Number(prop);\n\n\t\t\t\t\tif (Number.isInteger(n) && n >= ls.v) {\n\t\t\t\t\t\tset(ls, n + 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tincrement(version);\n\t\t\t}\n\n\t\t\treturn true;\n\t\t},\n\n\t\townKeys(target) {\n\t\t\tget(version);\n\n\t\t\tvar own_keys = Reflect.ownKeys(target).filter((key) => {\n\t\t\t\tvar source = sources.get(key);\n\t\t\t\treturn source === undefined || source.v !== UNINITIALIZED;\n\t\t\t});\n\n\t\t\tfor (var [key, source] of sources) {\n\t\t\t\tif (source.v !== UNINITIALIZED && !(key in target)) {\n\t\t\t\t\town_keys.push(key);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn own_keys;\n\t\t},\n\n\t\tsetPrototypeOf() {\n\t\t\te.state_prototype_fixed();\n\t\t}\n\t});\n}\n\n/**\n * @param {string} path\n * @param {string | symbol} prop\n */\nfunction get_label(path, prop) {\n\tif (typeof prop === 'symbol') return `${path}[Symbol(${prop.description ?? ''})]`;\n\tif (regex_is_valid_identifier.test(prop)) return `${path}.${prop}`;\n\treturn /^\\d+$/.test(prop) ? `${path}[${prop}]` : `${path}['${prop}']`;\n}\n\n/**\n * @param {any} value\n */\nexport function get_proxied_value(value) {\n\ttry {\n\t\tif (value !== null && typeof value === 'object' && STATE_SYMBOL in value) {\n\t\t\treturn value[STATE_SYMBOL];\n\t\t}\n\t} catch {\n\t\t// the above if check can throw an error if the value in question\n\t\t// is the contentWindow of an iframe on another domain, in which\n\t\t// case we want to just return the value (because it's definitely\n\t\t// not a proxied value) so we don't break any JavaScript interacting\n\t\t// with that iframe (such as various payment companies client side\n\t\t// JavaScript libraries interacting with their iframes on the same\n\t\t// domain)\n\t}\n\n\treturn value;\n}\n\n/**\n * @param {any} a\n * @param {any} b\n */\nexport function is(a, b) {\n\treturn Object.is(get_proxied_value(a), get_proxied_value(b));\n}\n\nconst ARRAY_MUTATING_METHODS = new Set([\n\t'copyWithin',\n\t'fill',\n\t'pop',\n\t'push',\n\t'reverse',\n\t'shift',\n\t'sort',\n\t'splice',\n\t'unshift'\n]);\n\n/**\n * Wrap array mutating methods so $inspect is triggered only once and\n * to prevent logging an array in intermediate state (e.g. with an empty slot)\n * @param {any[]} array\n */\nfunction inspectable_array(array) {\n\treturn new Proxy(array, {\n\t\tget(target, prop, receiver) {\n\t\t\tvar value = Reflect.get(target, prop, receiver);\n\t\t\tif (!ARRAY_MUTATING_METHODS.has(/** @type {string} */ (prop))) {\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * @this {any[]}\n\t\t\t * @param {any[]} args\n\t\t\t */\n\t\t\treturn function (...args) {\n\t\t\t\tset_eager_effects_deferred();\n\t\t\t\tvar result = value.apply(this, args);\n\t\t\t\tflush_eager_effects();\n\t\t\t\treturn result;\n\t\t\t};\n\t\t}\n\t});\n}\n","/** @import { Effect, TemplateNode } from '#client' */\nimport { hydrate_node, hydrating, set_hydrate_node } from './hydration.js';\nimport { DEV } from 'esm-env';\nimport { init_array_prototype_warnings } from '../dev/equality.js';\nimport { get_descriptor, is_extensible } from '../../shared/utils.js';\nimport { active_effect } from '../runtime.js';\nimport { async_mode_flag } from '../../flags/index.js';\nimport { TEXT_NODE, EFFECT_RAN } from '#client/constants';\nimport { eager_block_effects } from '../reactivity/batch.js';\n\n// export these for reference in the compiled code, making global name deduplication unnecessary\n/** @type {Window} */\nexport var $window;\n\n/** @type {Document} */\nexport var $document;\n\n/** @type {boolean} */\nexport var is_firefox;\n\n/** @type {() => Node | null} */\nvar first_child_getter;\n/** @type {() => Node | null} */\nvar next_sibling_getter;\n\n/**\n * Initialize these lazily to avoid issues when using the runtime in a server context\n * where these globals are not available while avoiding a separate server entry point\n */\nexport function init_operations() {\n\tif ($window !== undefined) {\n\t\treturn;\n\t}\n\n\t$window = window;\n\t$document = document;\n\tis_firefox = /Firefox/.test(navigator.userAgent);\n\n\tvar element_prototype = Element.prototype;\n\tvar node_prototype = Node.prototype;\n\tvar text_prototype = Text.prototype;\n\n\t// @ts-ignore\n\tfirst_child_getter = get_descriptor(node_prototype, 'firstChild').get;\n\t// @ts-ignore\n\tnext_sibling_getter = get_descriptor(node_prototype, 'nextSibling').get;\n\n\tif (is_extensible(element_prototype)) {\n\t\t// the following assignments improve perf of lookups on DOM nodes\n\t\t// @ts-expect-error\n\t\telement_prototype.__click = undefined;\n\t\t// @ts-expect-error\n\t\telement_prototype.__className = undefined;\n\t\t// @ts-expect-error\n\t\telement_prototype.__attributes = null;\n\t\t// @ts-expect-error\n\t\telement_prototype.__style = undefined;\n\t\t// @ts-expect-error\n\t\telement_prototype.__e = undefined;\n\t}\n\n\tif (is_extensible(text_prototype)) {\n\t\t// @ts-expect-error\n\t\ttext_prototype.__t = undefined;\n\t}\n\n\tif (DEV) {\n\t\t// @ts-expect-error\n\t\telement_prototype.__svelte_meta = null;\n\n\t\tinit_array_prototype_warnings();\n\t}\n}\n\n/**\n * @param {string} value\n * @returns {Text}\n */\nexport function create_text(value = '') {\n\treturn document.createTextNode(value);\n}\n\n/**\n * @template {Node} N\n * @param {N} node\n * @returns {Node | null}\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function get_first_child(node) {\n\treturn first_child_getter.call(node);\n}\n\n/**\n * @template {Node} N\n * @param {N} node\n * @returns {Node | null}\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function get_next_sibling(node) {\n\treturn next_sibling_getter.call(node);\n}\n\n/**\n * Don't mark this as side-effect-free, hydration needs to walk all nodes\n * @template {Node} N\n * @param {N} node\n * @param {boolean} is_text\n * @returns {Node | null}\n */\nexport function child(node, is_text) {\n\tif (!hydrating) {\n\t\treturn get_first_child(node);\n\t}\n\n\tvar child = /** @type {TemplateNode} */ (get_first_child(hydrate_node));\n\n\t// Child can be null if we have an element with a single child, like `<p>{text}</p>`, where `text` is empty\n\tif (child === null) {\n\t\tchild = hydrate_node.appendChild(create_text());\n\t} else if (is_text && child.nodeType !== TEXT_NODE) {\n\t\tvar text = create_text();\n\t\tchild?.before(text);\n\t\tset_hydrate_node(text);\n\t\treturn text;\n\t}\n\n\tset_hydrate_node(child);\n\treturn child;\n}\n\n/**\n * Don't mark this as side-effect-free, hydration needs to walk all nodes\n * @param {DocumentFragment | TemplateNode | TemplateNode[]} fragment\n * @param {boolean} [is_text]\n * @returns {Node | null}\n */\nexport function first_child(fragment, is_text = false) {\n\tif (!hydrating) {\n\t\t// when not hydrating, `fragment` is a `DocumentFragment` (the result of calling `open_frag`)\n\t\tvar first = /** @type {DocumentFragment} */ (get_first_child(/** @type {Node} */ (fragment)));\n\n\t\t// TODO prevent user comments with the empty string when preserveComments is true\n\t\tif (first instanceof Comment && first.data === '') return get_next_sibling(first);\n\n\t\treturn first;\n\t}\n\n\t// if an {expression} is empty during SSR, there might be no\n\t// text node to hydrate — we must therefore create one\n\tif (is_text && hydrate_node?.nodeType !== TEXT_NODE) {\n\t\tvar text = create_text();\n\n\t\thydrate_node?.before(text);\n\t\tset_hydrate_node(text);\n\t\treturn text;\n\t}\n\n\treturn hydrate_node;\n}\n\n/**\n * Don't mark this as side-effect-free, hydration needs to walk all nodes\n * @param {TemplateNode} node\n * @param {number} count\n * @param {boolean} is_text\n * @returns {Node | null}\n */\nexport function sibling(node, count = 1, is_text = false) {\n\tlet next_sibling = hydrating ? hydrate_node : node;\n\tvar last_sibling;\n\n\twhile (count--) {\n\t\tlast_sibling = next_sibling;\n\t\tnext_sibling = /** @type {TemplateNode} */ (get_next_sibling(next_sibling));\n\t}\n\n\tif (!hydrating) {\n\t\treturn next_sibling;\n\t}\n\n\t// if a sibling {expression} is empty during SSR, there might be no\n\t// text node to hydrate — we must therefore create one\n\tif (is_text && next_sibling?.nodeType !== TEXT_NODE) {\n\t\tvar text = create_text();\n\t\t// If the next sibling is `null` and we're handling text then it's because\n\t\t// the SSR content was empty for the text, so we need to generate a new text\n\t\t// node and insert it after the last sibling\n\t\tif (next_sibling === null) {\n\t\t\tlast_sibling?.after(text);\n\t\t} else {\n\t\t\tnext_sibling.before(text);\n\t\t}\n\t\tset_hydrate_node(text);\n\t\treturn text;\n\t}\n\n\tset_hydrate_node(next_sibling);\n\treturn /** @type {TemplateNode} */ (next_sibling);\n}\n\n/**\n * @template {Node} N\n * @param {N} node\n * @returns {void}\n */\nexport function clear_text_content(node) {\n\tnode.textContent = '';\n}\n\n/**\n * Returns `true` if we're updating the current block, for example `condition` in\n * an `{#if condition}` block just changed. In this case, the branch should be\n * appended (or removed) at the same time as other updates within the\n * current `<svelte:boundary>`\n */\nexport function should_defer_append() {\n\tif (!async_mode_flag) return false;\n\tif (eager_block_effects !== null) return false;\n\n\tvar flags = /** @type {Effect} */ (active_effect).f;\n\treturn (flags & EFFECT_RAN) !== 0;\n}\n\n/**\n *\n * @param {string} tag\n * @param {string} [namespace]\n * @param {string} [is]\n * @returns\n */\nexport function create_element(tag, namespace, is) {\n\tlet options = is ? { is } : undefined;\n\tif (namespace) {\n\t\treturn document.createElementNS(namespace, tag, options);\n\t}\n\treturn document.createElement(tag, options);\n}\n\nexport function create_fragment() {\n\treturn document.createDocumentFragment();\n}\n\n/**\n * @param {string} data\n * @returns\n */\nexport function create_comment(data = '') {\n\treturn document.createComment(data);\n}\n\n/**\n * @param {Element} element\n * @param {string} key\n * @param {string} value\n * @returns\n */\nexport function set_attribute(element, key, value = '') {\n\tif (key.startsWith('xlink:')) {\n\t\telement.setAttributeNS('http://www.w3.org/1999/xlink', key, value);\n\t\treturn;\n\t}\n\treturn element.setAttribute(key, value);\n}\n","import { hydrating } from '../hydration.js';\nimport { clear_text_content, get_first_child } from '../operations.js';\nimport { queue_micro_task } from '../task.js';\n\n/**\n * @param {HTMLElement} dom\n * @param {boolean} value\n * @returns {void}\n */\nexport function autofocus(dom, value) {\n\tif (value) {\n\t\tconst body = document.body;\n\t\tdom.autofocus = true;\n\n\t\tqueue_micro_task(() => {\n\t\t\tif (document.activeElement === body) {\n\t\t\t\tdom.focus();\n\t\t\t}\n\t\t});\n\t}\n}\n\n/**\n * The child of a textarea actually corresponds to the defaultValue property, so we need\n * to remove it upon hydration to avoid a bug when someone resets the form value.\n * @param {HTMLTextAreaElement} dom\n * @returns {void}\n */\nexport function remove_textarea_child(dom) {\n\tif (hydrating && get_first_child(dom) !== null) {\n\t\tclear_text_content(dom);\n\t}\n}\n\nlet listening_to_form_reset = false;\n\nexport function add_form_reset_listener() {\n\tif (!listening_to_form_reset) {\n\t\tlistening_to_form_reset = true;\n\t\tdocument.addEventListener(\n\t\t\t'reset',\n\t\t\t(evt) => {\n\t\t\t\t// Needs to happen one tick later or else the dom properties of the form\n\t\t\t\t// elements have not updated to their reset values yet\n\t\t\t\tPromise.resolve().then(() => {\n\t\t\t\t\tif (!evt.defaultPrevented) {\n\t\t\t\t\t\tfor (const e of /**@type {HTMLFormElement} */ (evt.target).elements) {\n\t\t\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t\t\te.__on_r?.();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\t// In the capture phase to guarantee we get noticed of it (no possibility of stopPropagation)\n\t\t\t{ capture: true }\n\t\t);\n\t}\n}\n","import { teardown } from '../../../reactivity/effects.js';\nimport {\n\tactive_effect,\n\tactive_reaction,\n\tset_active_effect,\n\tset_active_reaction\n} from '../../../runtime.js';\nimport { add_form_reset_listener } from '../misc.js';\n\n/**\n * Fires the handler once immediately (unless corresponding arg is set to `false`),\n * then listens to the given events until the render effect context is destroyed\n * @param {EventTarget} target\n * @param {Array<string>} events\n * @param {(event?: Event) => void} handler\n * @param {any} call_handler_immediately\n */\nexport function listen(target, events, handler, call_handler_immediately = true) {\n\tif (call_handler_immediately) {\n\t\thandler();\n\t}\n\n\tfor (var name of events) {\n\t\ttarget.addEventListener(name, handler);\n\t}\n\n\tteardown(() => {\n\t\tfor (var name of events) {\n\t\t\ttarget.removeEventListener(name, handler);\n\t\t}\n\t});\n}\n\n/**\n * @template T\n * @param {() => T} fn\n */\nexport function without_reactive_context(fn) {\n\tvar previous_reaction = active_reaction;\n\tvar previous_effect = active_effect;\n\tset_active_reaction(null);\n\tset_active_effect(null);\n\ttry {\n\t\treturn fn();\n\t} finally {\n\t\tset_active_reaction(previous_reaction);\n\t\tset_active_effect(previous_effect);\n\t}\n}\n\n/**\n * Listen to the given event, and then instantiate a global form reset listener if not already done,\n * to notify all bindings when the form is reset\n * @param {HTMLElement} element\n * @param {string} event\n * @param {(is_reset?: true) => void} handler\n * @param {(is_reset?: true) => void} [on_reset]\n */\nexport function listen_to_event_and_reset_event(element, event, handler, on_reset = handler) {\n\telement.addEventListener(event, () => without_reactive_context(handler));\n\t// @ts-expect-error\n\tconst prev = element.__on_r;\n\tif (prev) {\n\t\t// special case for checkbox that can have multiple binds (group & checked)\n\t\t// @ts-expect-error\n\t\telement.__on_r = () => {\n\t\t\tprev();\n\t\t\ton_reset(true);\n\t\t};\n\t} else {\n\t\t// @ts-expect-error\n\t\telement.__on_r = () => on_reset(true);\n\t}\n\n\tadd_form_reset_listener();\n}\n","/** @import { ComponentContext, ComponentContextLegacy, Derived, Effect, TemplateNode, TransitionManager } from '#client' */\nimport {\n\tis_dirty,\n\tactive_effect,\n\tactive_reaction,\n\tupdate_effect,\n\tget,\n\tis_destroying_effect,\n\tremove_reactions,\n\tset_active_reaction,\n\tset_is_destroying_effect,\n\tset_signal_status,\n\tuntrack,\n\tuntracking\n} from '../runtime.js';\nimport {\n\tDIRTY,\n\tBRANCH_EFFECT,\n\tRENDER_EFFECT,\n\tEFFECT,\n\tDESTROYED,\n\tINERT,\n\tEFFECT_RAN,\n\tBLOCK_EFFECT,\n\tROOT_EFFECT,\n\tEFFECT_TRANSPARENT,\n\tDERIVED,\n\tCLEAN,\n\tEAGER_EFFECT,\n\tHEAD_EFFECT,\n\tMAYBE_DIRTY,\n\tEFFECT_PRESERVED,\n\tSTALE_REACTION,\n\tUSER_EFFECT,\n\tASYNC,\n\tCONNECTED,\n\tMANAGED_EFFECT\n} from '#client/constants';\nimport * as e from '../errors.js';\nimport { DEV } from 'esm-env';\nimport { define_property } from '../../shared/utils.js';\nimport { get_next_sibling } from '../dom/operations.js';\nimport { component_context, dev_current_component_function, dev_stack } from '../context.js';\nimport { Batch, current_batch, schedule_effect } from './batch.js';\nimport { flatten } from './async.js';\nimport { without_reactive_context } from '../dom/elements/bindings/shared.js';\n\n/**\n * @param {'$effect' | '$effect.pre' | '$inspect'} rune\n */\nexport function validate_effect(rune) {\n\tif (active_effect === null) {\n\t\tif (active_reaction === null) {\n\t\t\te.effect_orphan(rune);\n\t\t}\n\n\t\te.effect_in_unowned_derived();\n\t}\n\n\tif (is_destroying_effect) {\n\t\te.effect_in_teardown(rune);\n\t}\n}\n\n/**\n * @param {Effect} effect\n * @param {Effect} parent_effect\n */\nfunction push_effect(effect, parent_effect) {\n\tvar parent_last = parent_effect.last;\n\tif (parent_last === null) {\n\t\tparent_effect.last = parent_effect.first = effect;\n\t} else {\n\t\tparent_last.next = effect;\n\t\teffect.prev = parent_last;\n\t\tparent_effect.last = effect;\n\t}\n}\n\n/**\n * @param {number} type\n * @param {null | (() => void | (() => void))} fn\n * @param {boolean} sync\n * @returns {Effect}\n */\nfunction create_effect(type, fn, sync) {\n\tvar parent = active_effect;\n\n\tif (DEV) {\n\t\t// Ensure the parent is never an inspect effect\n\t\twhile (parent !== null && (parent.f & EAGER_EFFECT) !== 0) {\n\t\t\tparent = parent.parent;\n\t\t}\n\t}\n\n\tif (parent !== null && (parent.f & INERT) !== 0) {\n\t\ttype |= INERT;\n\t}\n\n\t/** @type {Effect} */\n\tvar effect = {\n\t\tctx: component_context,\n\t\tdeps: null,\n\t\tnodes_start: null,\n\t\tnodes_end: null,\n\t\tf: type | DIRTY | CONNECTED,\n\t\tfirst: null,\n\t\tfn,\n\t\tlast: null,\n\t\tnext: null,\n\t\tparent,\n\t\tb: parent && parent.b,\n\t\tprev: null,\n\t\tteardown: null,\n\t\ttransitions: null,\n\t\twv: 0,\n\t\tac: null\n\t};\n\n\tif (DEV) {\n\t\teffect.component_function = dev_current_component_function;\n\t}\n\n\tif (sync) {\n\t\ttry {\n\t\t\tupdate_effect(effect);\n\t\t\teffect.f |= EFFECT_RAN;\n\t\t} catch (e) {\n\t\t\tdestroy_effect(effect);\n\t\t\tthrow e;\n\t\t}\n\t} else if (fn !== null) {\n\t\tschedule_effect(effect);\n\t}\n\n\t/** @type {Effect | null} */\n\tvar e = effect;\n\n\t// if an effect has already ran and doesn't need to be kept in the tree\n\t// (because it won't re-run, has no DOM, and has no teardown etc)\n\t// then we skip it and go to its child (if any)\n\tif (\n\t\tsync &&\n\t\te.deps === null &&\n\t\te.teardown === null &&\n\t\te.nodes_start === null &&\n\t\te.first === e.last && // either `null`, or a singular child\n\t\t(e.f & EFFECT_PRESERVED) === 0\n\t) {\n\t\te = e.first;\n\t\tif ((type & BLOCK_EFFECT) !== 0 && (type & EFFECT_TRANSPARENT) !== 0 && e !== null) {\n\t\t\te.f |= EFFECT_TRANSPARENT;\n\t\t}\n\t}\n\n\tif (e !== null) {\n\t\te.parent = parent;\n\n\t\tif (parent !== null) {\n\t\t\tpush_effect(e, parent);\n\t\t}\n\n\t\t// if we're in a derived, add the effect there too\n\t\tif (\n\t\t\tactive_reaction !== null &&\n\t\t\t(active_reaction.f & DERIVED) !== 0 &&\n\t\t\t(type & ROOT_EFFECT) === 0\n\t\t) {\n\t\t\tvar derived = /** @type {Derived} */ (active_reaction);\n\t\t\t(derived.effects ??= []).push(e);\n\t\t}\n\t}\n\n\treturn effect;\n}\n\n/**\n * Internal representation of `$effect.tracking()`\n * @returns {boolean}\n */\nexport function effect_tracking() {\n\treturn active_reaction !== null && !untracking;\n}\n\n/**\n * @param {() => void} fn\n */\nexport function teardown(fn) {\n\tconst effect = create_effect(RENDER_EFFECT, null, false);\n\tset_signal_status(effect, CLEAN);\n\teffect.teardown = fn;\n\treturn effect;\n}\n\n/**\n * Internal representation of `$effect(...)`\n * @param {() => void | (() => void)} fn\n */\nexport function user_effect(fn) {\n\tvalidate_effect('$effect');\n\n\tif (DEV) {\n\t\tdefine_property(fn, 'name', {\n\t\t\tvalue: '$effect'\n\t\t});\n\t}\n\n\t// Non-nested `$effect(...)` in a component should be deferred\n\t// until the component is mounted\n\tvar flags = /** @type {Effect} */ (active_effect).f;\n\tvar defer = !active_reaction && (flags & BRANCH_EFFECT) !== 0 && (flags & EFFECT_RAN) === 0;\n\n\tif (defer) {\n\t\t// Top-level `$effect(...)` in an unmounted component — defer until mount\n\t\tvar context = /** @type {ComponentContext} */ (component_context);\n\t\t(context.e ??= []).push(fn);\n\t} else {\n\t\t// Everything else — create immediately\n\t\treturn create_user_effect(fn);\n\t}\n}\n\n/**\n * @param {() => void | (() => void)} fn\n */\nexport function create_user_effect(fn) {\n\treturn create_effect(EFFECT | USER_EFFECT, fn, false);\n}\n\n/**\n * Internal representation of `$effect.pre(...)`\n * @param {() => void | (() => void)} fn\n * @returns {Effect}\n */\nexport function user_pre_effect(fn) {\n\tvalidate_effect('$effect.pre');\n\tif (DEV) {\n\t\tdefine_property(fn, 'name', {\n\t\t\tvalue: '$effect.pre'\n\t\t});\n\t}\n\treturn create_effect(RENDER_EFFECT | USER_EFFECT, fn, true);\n}\n\n/** @param {() => void | (() => void)} fn */\nexport function eager_effect(fn) {\n\treturn create_effect(EAGER_EFFECT, fn, true);\n}\n\n/**\n * Internal representation of `$effect.root(...)`\n * @param {() => void | (() => void)} fn\n * @returns {() => void}\n */\nexport function effect_root(fn) {\n\tBatch.ensure();\n\tconst effect = create_effect(ROOT_EFFECT | EFFECT_PRESERVED, fn, true);\n\n\treturn () => {\n\t\tdestroy_effect(effect);\n\t};\n}\n\n/**\n * An effect root whose children can transition out\n * @param {() => void} fn\n * @returns {(options?: { outro?: boolean }) => Promise<void>}\n */\nexport function component_root(fn) {\n\tBatch.ensure();\n\tconst effect = create_effect(ROOT_EFFECT | EFFECT_PRESERVED, fn, true);\n\n\treturn (options = {}) => {\n\t\treturn new Promise((fulfil) => {\n\t\t\tif (options.outro) {\n\t\t\t\tpause_effect(effect, () => {\n\t\t\t\t\tdestroy_effect(effect);\n\t\t\t\t\tfulfil(undefined);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tdestroy_effect(effect);\n\t\t\t\tfulfil(undefined);\n\t\t\t}\n\t\t});\n\t};\n}\n\n/**\n * @param {() => void | (() => void)} fn\n * @returns {Effect}\n */\nexport function effect(fn) {\n\treturn create_effect(EFFECT, fn, false);\n}\n\n/**\n * Internal representation of `$: ..`\n * @param {() => any} deps\n * @param {() => void | (() => void)} fn\n */\nexport function legacy_pre_effect(deps, fn) {\n\tvar context = /** @type {ComponentContextLegacy} */ (component_context);\n\n\t/** @type {{ effect: null | Effect, ran: boolean, deps: () => any }} */\n\tvar token = { effect: null, ran: false, deps };\n\n\tcontext.l.$.push(token);\n\n\ttoken.effect = render_effect(() => {\n\t\tdeps();\n\n\t\t// If this legacy pre effect has already run before the end of the reset, then\n\t\t// bail out to emulate the same behavior.\n\t\tif (token.ran) return;\n\n\t\ttoken.ran = true;\n\t\tuntrack(fn);\n\t});\n}\n\nexport function legacy_pre_effect_reset() {\n\tvar context = /** @type {ComponentContextLegacy} */ (component_context);\n\n\trender_effect(() => {\n\t\t// Run dirty `$:` statements\n\t\tfor (var token of context.l.$) {\n\t\t\ttoken.deps();\n\n\t\t\tvar effect = token.effect;\n\n\t\t\t// If the effect is CLEAN, then make it MAYBE_DIRTY. This ensures we traverse through\n\t\t\t// the effects dependencies and correctly ensure each dependency is up-to-date.\n\t\t\tif ((effect.f & CLEAN) !== 0) {\n\t\t\t\tset_signal_status(effect, MAYBE_DIRTY);\n\t\t\t}\n\n\t\t\tif (is_dirty(effect)) {\n\t\t\t\tupdate_effect(effect);\n\t\t\t}\n\n\t\t\ttoken.ran = false;\n\t\t}\n\t});\n}\n\n/**\n * @param {() => void | (() => void)} fn\n * @returns {Effect}\n */\nexport function async_effect(fn) {\n\treturn create_effect(ASYNC | EFFECT_PRESERVED, fn, true);\n}\n\n/**\n * @param {() => void | (() => void)} fn\n * @returns {Effect}\n */\nexport function render_effect(fn, flags = 0) {\n\treturn create_effect(RENDER_EFFECT | flags, fn, true);\n}\n\n/**\n * @param {(...expressions: any) => void | (() => void)} fn\n * @param {Array<() => any>} sync\n * @param {Array<() => Promise<any>>} async\n * @param {Array<Promise<void>>} blockers\n */\nexport function template_effect(fn, sync = [], async = [], blockers = []) {\n\tflatten(blockers, sync, async, (values) => {\n\t\tcreate_effect(RENDER_EFFECT, () => fn(...values.map(get)), true);\n\t});\n}\n\n/**\n * Like `template_effect`, but with an effect which is deferred until the batch commits\n * @param {(...expressions: any) => void | (() => void)} fn\n * @param {Array<() => any>} sync\n * @param {Array<() => Promise<any>>} async\n * @param {Array<Promise<void>>} blockers\n */\nexport function deferred_template_effect(fn, sync = [], async = [], blockers = []) {\n\tvar batch = /** @type {Batch} */ (current_batch);\n\tvar is_async = async.length > 0 || blockers.length > 0;\n\n\tif (is_async) batch.increment(true);\n\n\tflatten(blockers, sync, async, (values) => {\n\t\tcreate_effect(EFFECT, () => fn(...values.map(get)), false);\n\t\tif (is_async) batch.decrement(true);\n\t});\n}\n\n/**\n * @param {(() => void)} fn\n * @param {number} flags\n */\nexport function block(fn, flags = 0) {\n\tvar effect = create_effect(BLOCK_EFFECT | flags, fn, true);\n\tif (DEV) {\n\t\teffect.dev_stack = dev_stack;\n\t}\n\treturn effect;\n}\n\n/**\n * @param {(() => void)} fn\n * @param {number} flags\n */\nexport function managed(fn, flags = 0) {\n\tvar effect = create_effect(MANAGED_EFFECT | flags, fn, true);\n\tif (DEV) {\n\t\teffect.dev_stack = dev_stack;\n\t}\n\treturn effect;\n}\n\n/**\n * @param {(() => void)} fn\n */\nexport function branch(fn) {\n\treturn create_effect(BRANCH_EFFECT | EFFECT_PRESERVED, fn, true);\n}\n\n/**\n * @param {Effect} effect\n */\nexport function execute_effect_teardown(effect) {\n\tvar teardown = effect.teardown;\n\tif (teardown !== null) {\n\t\tconst previously_destroying_effect = is_destroying_effect;\n\t\tconst previous_reaction = active_reaction;\n\t\tset_is_destroying_effect(true);\n\t\tset_active_reaction(null);\n\t\ttry {\n\t\t\tteardown.call(null);\n\t\t} finally {\n\t\t\tset_is_destroying_effect(previously_destroying_effect);\n\t\t\tset_active_reaction(previous_reaction);\n\t\t}\n\t}\n}\n\n/**\n * @param {Effect} signal\n * @param {boolean} remove_dom\n * @returns {void}\n */\nexport function destroy_effect_children(signal, remove_dom = false) {\n\tvar effect = signal.first;\n\tsignal.first = signal.last = null;\n\n\twhile (effect !== null) {\n\t\tconst controller = effect.ac;\n\n\t\tif (controller !== null) {\n\t\t\twithout_reactive_context(() => {\n\t\t\t\tcontroller.abort(STALE_REACTION);\n\t\t\t});\n\t\t}\n\n\t\tvar next = effect.next;\n\n\t\tif ((effect.f & ROOT_EFFECT) !== 0) {\n\t\t\t// this is now an independent root\n\t\t\teffect.parent = null;\n\t\t} else {\n\t\t\tdestroy_effect(effect, remove_dom);\n\t\t}\n\n\t\teffect = next;\n\t}\n}\n\n/**\n * @param {Effect} signal\n * @returns {void}\n */\nexport function destroy_block_effect_children(signal) {\n\tvar effect = signal.first;\n\n\twhile (effect !== null) {\n\t\tvar next = effect.next;\n\t\tif ((effect.f & BRANCH_EFFECT) === 0) {\n\t\t\tdestroy_effect(effect);\n\t\t}\n\t\teffect = next;\n\t}\n}\n\n/**\n * @param {Effect} effect\n * @param {boolean} [remove_dom]\n * @returns {void}\n */\nexport function destroy_effect(effect, remove_dom = true) {\n\tvar removed = false;\n\n\tif (\n\t\t(remove_dom || (effect.f & HEAD_EFFECT) !== 0) &&\n\t\teffect.nodes_start !== null &&\n\t\teffect.nodes_end !== null\n\t) {\n\t\tremove_effect_dom(effect.nodes_start, /** @type {TemplateNode} */ (effect.nodes_end));\n\t\tremoved = true;\n\t}\n\n\tdestroy_effect_children(effect, remove_dom && !removed);\n\tremove_reactions(effect, 0);\n\tset_signal_status(effect, DESTROYED);\n\n\tvar transitions = effect.transitions;\n\n\tif (transitions !== null) {\n\t\tfor (const transition of transitions) {\n\t\t\ttransition.stop();\n\t\t}\n\t}\n\n\texecute_effect_teardown(effect);\n\n\tvar parent = effect.parent;\n\n\t// If the parent doesn't have any children, then skip this work altogether\n\tif (parent !== null && parent.first !== null) {\n\t\tunlink_effect(effect);\n\t}\n\n\tif (DEV) {\n\t\teffect.component_function = null;\n\t}\n\n\t// `first` and `child` are nulled out in destroy_effect_children\n\t// we don't null out `parent` so that error propagation can work correctly\n\teffect.next =\n\t\teffect.prev =\n\t\teffect.teardown =\n\t\teffect.ctx =\n\t\teffect.deps =\n\t\teffect.fn =\n\t\teffect.nodes_start =\n\t\teffect.nodes_end =\n\t\teffect.ac =\n\t\t\tnull;\n}\n\n/**\n *\n * @param {TemplateNode | null} node\n * @param {TemplateNode} end\n */\nexport function remove_effect_dom(node, end) {\n\twhile (node !== null) {\n\t\t/** @type {TemplateNode | null} */\n\t\tvar next = node === end ? null : /** @type {TemplateNode} */ (get_next_sibling(node));\n\n\t\tnode.remove();\n\t\tnode = next;\n\t}\n}\n\n/**\n * Detach an effect from the effect tree, freeing up memory and\n * reducing the amount of work that happens on subsequent traversals\n * @param {Effect} effect\n */\nexport function unlink_effect(effect) {\n\tvar parent = effect.parent;\n\tvar prev = effect.prev;\n\tvar next = effect.next;\n\n\tif (prev !== null) prev.next = next;\n\tif (next !== null) next.prev = prev;\n\n\tif (parent !== null) {\n\t\tif (parent.first === effect) parent.first = next;\n\t\tif (parent.last === effect) parent.last = prev;\n\t}\n}\n\n/**\n * When a block effect is removed, we don't immediately destroy it or yank it\n * out of the DOM, because it might have transitions. Instead, we 'pause' it.\n * It stays around (in memory, and in the DOM) until outro transitions have\n * completed, and if the state change is reversed then we _resume_ it.\n * A paused effect does not update, and the DOM subtree becomes inert.\n * @param {Effect} effect\n * @param {() => void} [callback]\n * @param {boolean} [destroy]\n */\nexport function pause_effect(effect, callback, destroy = true) {\n\t/** @type {TransitionManager[]} */\n\tvar transitions = [];\n\n\tpause_children(effect, transitions, true);\n\n\trun_out_transitions(transitions, () => {\n\t\tif (destroy) destroy_effect(effect);\n\t\tif (callback) callback();\n\t});\n}\n\n/**\n * @param {TransitionManager[]} transitions\n * @param {() => void} fn\n */\nexport function run_out_transitions(transitions, fn) {\n\tvar remaining = transitions.length;\n\tif (remaining > 0) {\n\t\tvar check = () => --remaining || fn();\n\t\tfor (var transition of transitions) {\n\t\t\ttransition.out(check);\n\t\t}\n\t} else {\n\t\tfn();\n\t}\n}\n\n/**\n * @param {Effect} effect\n * @param {TransitionManager[]} transitions\n * @param {boolean} local\n */\nexport function pause_children(effect, transitions, local) {\n\tif ((effect.f & INERT) !== 0) return;\n\teffect.f ^= INERT;\n\n\tif (effect.transitions !== null) {\n\t\tfor (const transition of effect.transitions) {\n\t\t\tif (transition.is_global || local) {\n\t\t\t\ttransitions.push(transition);\n\t\t\t}\n\t\t}\n\t}\n\n\tvar child = effect.first;\n\n\twhile (child !== null) {\n\t\tvar sibling = child.next;\n\t\tvar transparent =\n\t\t\t(child.f & EFFECT_TRANSPARENT) !== 0 ||\n\t\t\t// If this is a branch effect without a block effect parent,\n\t\t\t// it means the parent block effect was pruned. In that case,\n\t\t\t// transparency information was transferred to the branch effect.\n\t\t\t((child.f & BRANCH_EFFECT) !== 0 && (effect.f & BLOCK_EFFECT) !== 0);\n\t\t// TODO we don't need to call pause_children recursively with a linked list in place\n\t\t// it's slightly more involved though as we have to account for `transparent` changing\n\t\t// through the tree.\n\t\tpause_children(child, transitions, transparent ? local : false);\n\t\tchild = sibling;\n\t}\n}\n\n/**\n * The opposite of `pause_effect`. We call this if (for example)\n * `x` becomes falsy then truthy: `{#if x}...{/if}`\n * @param {Effect} effect\n */\nexport function resume_effect(effect) {\n\tresume_children(effect, true);\n}\n\n/**\n * @param {Effect} effect\n * @param {boolean} local\n */\nfunction resume_children(effect, local) {\n\tif ((effect.f & INERT) === 0) return;\n\teffect.f ^= INERT;\n\n\t// If a dependency of this effect changed while it was paused,\n\t// schedule the effect to update. we don't use `is_dirty`\n\t// here because we don't want to eagerly recompute a derived like\n\t// `{#if foo}{foo.bar()}{/if}` if `foo` is now `undefined\n\tif ((effect.f & CLEAN) === 0) {\n\t\tset_signal_status(effect, DIRTY);\n\t\tschedule_effect(effect);\n\t}\n\n\tvar child = effect.first;\n\n\twhile (child !== null) {\n\t\tvar sibling = child.next;\n\t\tvar transparent = (child.f & EFFECT_TRANSPARENT) !== 0 || (child.f & BRANCH_EFFECT) !== 0;\n\t\t// TODO we don't need to call resume_children recursively with a linked list in place\n\t\t// it's slightly more involved though as we have to account for `transparent` changing\n\t\t// through the tree.\n\t\tresume_children(child, transparent ? local : false);\n\t\tchild = sibling;\n\t}\n\n\tif (effect.transitions !== null) {\n\t\tfor (const transition of effect.transitions) {\n\t\t\tif (transition.is_global || local) {\n\t\t\t\ttransition.in();\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport function aborted(effect = /** @type {Effect} */ (active_effect)) {\n\treturn (effect.f & DESTROYED) !== 0;\n}\n\n/**\n * @param {Effect} effect\n * @param {DocumentFragment} fragment\n */\nexport function move_effect(effect, fragment) {\n\tvar node = effect.nodes_start;\n\tvar end = effect.nodes_end;\n\n\twhile (node !== null) {\n\t\t/** @type {TemplateNode | null} */\n\t\tvar next = node === end ? null : /** @type {TemplateNode} */ (get_next_sibling(node));\n\n\t\tfragment.append(node);\n\t\tnode = next;\n\t}\n}\n","/** @import { Derived, Effect, Reaction, Signal, Source, Value } from '#client' */\nimport { DEV } from 'esm-env';\nimport { get_descriptors, get_prototype_of, index_of } from '../shared/utils.js';\nimport {\n\tdestroy_block_effect_children,\n\tdestroy_effect_children,\n\teffect_tracking,\n\texecute_effect_teardown\n} from './reactivity/effects.js';\nimport {\n\tDIRTY,\n\tMAYBE_DIRTY,\n\tCLEAN,\n\tDERIVED,\n\tDESTROYED,\n\tBRANCH_EFFECT,\n\tSTATE_SYMBOL,\n\tBLOCK_EFFECT,\n\tROOT_EFFECT,\n\tCONNECTED,\n\tREACTION_IS_UPDATING,\n\tSTALE_REACTION,\n\tERROR_VALUE,\n\tWAS_MARKED,\n\tMANAGED_EFFECT\n} from './constants.js';\nimport { old_values } from './reactivity/sources.js';\nimport {\n\tdestroy_derived_effects,\n\texecute_derived,\n\tcurrent_async_effect,\n\trecent_async_deriveds,\n\tupdate_derived\n} from './reactivity/deriveds.js';\nimport { async_mode_flag, tracing_mode_flag } from '../flags/index.js';\nimport { tracing_expressions } from './dev/tracing.js';\nimport { get_error } from '../shared/dev.js';\nimport {\n\tcomponent_context,\n\tdev_current_component_function,\n\tdev_stack,\n\tis_runes,\n\tset_component_context,\n\tset_dev_current_component_function,\n\tset_dev_stack\n} from './context.js';\nimport * as w from './warnings.js';\nimport {\n\tBatch,\n\tbatch_values,\n\tcurrent_batch,\n\tflushSync,\n\tschedule_effect\n} from './reactivity/batch.js';\nimport { handle_error } from './error-handling.js';\nimport { UNINITIALIZED } from '../../constants.js';\nimport { captured_signals } from './legacy.js';\nimport { without_reactive_context } from './dom/elements/bindings/shared.js';\n\nexport let is_updating_effect = false;\n\n/** @param {boolean} value */\nexport function set_is_updating_effect(value) {\n\tis_updating_effect = value;\n}\n\nexport let is_destroying_effect = false;\n\n/** @param {boolean} value */\nexport function set_is_destroying_effect(value) {\n\tis_destroying_effect = value;\n}\n\n/** @type {null | Reaction} */\nexport let active_reaction = null;\n\nexport let untracking = false;\n\n/** @param {null | Reaction} reaction */\nexport function set_active_reaction(reaction) {\n\tactive_reaction = reaction;\n}\n\n/** @type {null | Effect} */\nexport let active_effect = null;\n\n/** @param {null | Effect} effect */\nexport function set_active_effect(effect) {\n\tactive_effect = effect;\n}\n\n/**\n * When sources are created within a reaction, reading and writing\n * them within that reaction should not cause a re-run\n * @type {null | Source[]}\n */\nexport let current_sources = null;\n\n/** @param {Value} value */\nexport function push_reaction_value(value) {\n\tif (active_reaction !== null && (!async_mode_flag || (active_reaction.f & DERIVED) !== 0)) {\n\t\tif (current_sources === null) {\n\t\t\tcurrent_sources = [value];\n\t\t} else {\n\t\t\tcurrent_sources.push(value);\n\t\t}\n\t}\n}\n\n/**\n * The dependencies of the reaction that is currently being executed. In many cases,\n * the dependencies are unchanged between runs, and so this will be `null` unless\n * and until a new dependency is accessed — we track this via `skipped_deps`\n * @type {null | Value[]}\n */\nlet new_deps = null;\n\nlet skipped_deps = 0;\n\n/**\n * Tracks writes that the effect it's executed in doesn't listen to yet,\n * so that the dependency can be added to the effect later on if it then reads it\n * @type {null | Source[]}\n */\nexport let untracked_writes = null;\n\n/** @param {null | Source[]} value */\nexport function set_untracked_writes(value) {\n\tuntracked_writes = value;\n}\n\n/**\n * @type {number} Used by sources and deriveds for handling updates.\n * Version starts from 1 so that unowned deriveds differentiate between a created effect and a run one for tracing\n **/\nexport let write_version = 1;\n\n/** @type {number} Used to version each read of a source of derived to avoid duplicating depedencies inside a reaction */\nlet read_version = 0;\n\nexport let update_version = read_version;\n\n/** @param {number} value */\nexport function set_update_version(value) {\n\tupdate_version = value;\n}\n\nexport function increment_write_version() {\n\treturn ++write_version;\n}\n\n/**\n * Determines whether a derived or effect is dirty.\n * If it is MAYBE_DIRTY, will set the status to CLEAN\n * @param {Reaction} reaction\n * @returns {boolean}\n */\nexport function is_dirty(reaction) {\n\tvar flags = reaction.f;\n\n\tif ((flags & DIRTY) !== 0) {\n\t\treturn true;\n\t}\n\n\tif (flags & DERIVED) {\n\t\treaction.f &= ~WAS_MARKED;\n\t}\n\n\tif ((flags & MAYBE_DIRTY) !== 0) {\n\t\tvar dependencies = reaction.deps;\n\n\t\tif (dependencies !== null) {\n\t\t\tvar length = dependencies.length;\n\n\t\t\tfor (var i = 0; i < length; i++) {\n\t\t\t\tvar dependency = dependencies[i];\n\n\t\t\t\tif (is_dirty(/** @type {Derived} */ (dependency))) {\n\t\t\t\t\tupdate_derived(/** @type {Derived} */ (dependency));\n\t\t\t\t}\n\n\t\t\t\tif (dependency.wv > reaction.wv) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\t(flags & CONNECTED) !== 0 &&\n\t\t\t// During time traveling we don't want to reset the status so that\n\t\t\t// traversal of the graph in the other batches still happens\n\t\t\tbatch_values === null\n\t\t) {\n\t\t\tset_signal_status(reaction, CLEAN);\n\t\t}\n\t}\n\n\treturn false;\n}\n\n/**\n * @param {Value} signal\n * @param {Effect} effect\n * @param {boolean} [root]\n */\nfunction schedule_possible_effect_self_invalidation(signal, effect, root = true) {\n\tvar reactions = signal.reactions;\n\tif (reactions === null) return;\n\n\tif (!async_mode_flag && current_sources?.includes(signal)) {\n\t\treturn;\n\t}\n\n\tfor (var i = 0; i < reactions.length; i++) {\n\t\tvar reaction = reactions[i];\n\n\t\tif ((reaction.f & DERIVED) !== 0) {\n\t\t\tschedule_possible_effect_self_invalidation(/** @type {Derived} */ (reaction), effect, false);\n\t\t} else if (effect === reaction) {\n\t\t\tif (root) {\n\t\t\t\tset_signal_status(reaction, DIRTY);\n\t\t\t} else if ((reaction.f & CLEAN) !== 0) {\n\t\t\t\tset_signal_status(reaction, MAYBE_DIRTY);\n\t\t\t}\n\t\t\tschedule_effect(/** @type {Effect} */ (reaction));\n\t\t}\n\t}\n}\n\n/** @param {Reaction} reaction */\nexport function update_reaction(reaction) {\n\tvar previous_deps = new_deps;\n\tvar previous_skipped_deps = skipped_deps;\n\tvar previous_untracked_writes = untracked_writes;\n\tvar previous_reaction = active_reaction;\n\tvar previous_sources = current_sources;\n\tvar previous_component_context = component_context;\n\tvar previous_untracking = untracking;\n\tvar previous_update_version = update_version;\n\n\tvar flags = reaction.f;\n\n\tnew_deps = /** @type {null | Value[]} */ (null);\n\tskipped_deps = 0;\n\tuntracked_writes = null;\n\tactive_reaction = (flags & (BRANCH_EFFECT | ROOT_EFFECT)) === 0 ? reaction : null;\n\n\tcurrent_sources = null;\n\tset_component_context(reaction.ctx);\n\tuntracking = false;\n\tupdate_version = ++read_version;\n\n\tif (reaction.ac !== null) {\n\t\twithout_reactive_context(() => {\n\t\t\t/** @type {AbortController} */ (reaction.ac).abort(STALE_REACTION);\n\t\t});\n\n\t\treaction.ac = null;\n\t}\n\n\ttry {\n\t\treaction.f |= REACTION_IS_UPDATING;\n\t\tvar fn = /** @type {Function} */ (reaction.fn);\n\t\tvar result = fn();\n\t\tvar deps = reaction.deps;\n\n\t\tif (new_deps !== null) {\n\t\t\tvar i;\n\n\t\t\tremove_reactions(reaction, skipped_deps);\n\n\t\t\tif (deps !== null && skipped_deps > 0) {\n\t\t\t\tdeps.length = skipped_deps + new_deps.length;\n\t\t\t\tfor (i = 0; i < new_deps.length; i++) {\n\t\t\t\t\tdeps[skipped_deps + i] = new_deps[i];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treaction.deps = deps = new_deps;\n\t\t\t}\n\n\t\t\tif (is_updating_effect && effect_tracking() && (reaction.f & CONNECTED) !== 0) {\n\t\t\t\tfor (i = skipped_deps; i < deps.length; i++) {\n\t\t\t\t\t(deps[i].reactions ??= []).push(reaction);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (deps !== null && skipped_deps < deps.length) {\n\t\t\tremove_reactions(reaction, skipped_deps);\n\t\t\tdeps.length = skipped_deps;\n\t\t}\n\n\t\t// If we're inside an effect and we have untracked writes, then we need to\n\t\t// ensure that if any of those untracked writes result in re-invalidation\n\t\t// of the current effect, then that happens accordingly\n\t\tif (\n\t\t\tis_runes() &&\n\t\t\tuntracked_writes !== null &&\n\t\t\t!untracking &&\n\t\t\tdeps !== null &&\n\t\t\t(reaction.f & (DERIVED | MAYBE_DIRTY | DIRTY)) === 0\n\t\t) {\n\t\t\tfor (i = 0; i < /** @type {Source[]} */ (untracked_writes).length; i++) {\n\t\t\t\tschedule_possible_effect_self_invalidation(\n\t\t\t\t\tuntracked_writes[i],\n\t\t\t\t\t/** @type {Effect} */ (reaction)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// If we are returning to an previous reaction then\n\t\t// we need to increment the read version to ensure that\n\t\t// any dependencies in this reaction aren't marked with\n\t\t// the same version\n\t\tif (previous_reaction !== null && previous_reaction !== reaction) {\n\t\t\tread_version++;\n\n\t\t\tif (untracked_writes !== null) {\n\t\t\t\tif (previous_untracked_writes === null) {\n\t\t\t\t\tprevious_untracked_writes = untracked_writes;\n\t\t\t\t} else {\n\t\t\t\t\tprevious_untracked_writes.push(.../** @type {Source[]} */ (untracked_writes));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ((reaction.f & ERROR_VALUE) !== 0) {\n\t\t\treaction.f ^= ERROR_VALUE;\n\t\t}\n\n\t\treturn result;\n\t} catch (error) {\n\t\treturn handle_error(error);\n\t} finally {\n\t\treaction.f ^= REACTION_IS_UPDATING;\n\t\tnew_deps = previous_deps;\n\t\tskipped_deps = previous_skipped_deps;\n\t\tuntracked_writes = previous_untracked_writes;\n\t\tactive_reaction = previous_reaction;\n\t\tcurrent_sources = previous_sources;\n\t\tset_component_context(previous_component_context);\n\t\tuntracking = previous_untracking;\n\t\tupdate_version = previous_update_version;\n\t}\n}\n\n/**\n * @template V\n * @param {Reaction} signal\n * @param {Value<V>} dependency\n * @returns {void}\n */\nfunction remove_reaction(signal, dependency) {\n\tlet reactions = dependency.reactions;\n\tif (reactions !== null) {\n\t\tvar index = index_of.call(reactions, signal);\n\t\tif (index !== -1) {\n\t\t\tvar new_length = reactions.length - 1;\n\t\t\tif (new_length === 0) {\n\t\t\t\treactions = dependency.reactions = null;\n\t\t\t} else {\n\t\t\t\t// Swap with last element and then remove.\n\t\t\t\treactions[index] = reactions[new_length];\n\t\t\t\treactions.pop();\n\t\t\t}\n\t\t}\n\t}\n\n\t// If the derived has no reactions, then we can disconnect it from the graph,\n\t// allowing it to either reconnect in the future, or be GC'd by the VM.\n\tif (\n\t\treactions === null &&\n\t\t(dependency.f & DERIVED) !== 0 &&\n\t\t// Destroying a child effect while updating a parent effect can cause a dependency to appear\n\t\t// to be unused, when in fact it is used by the currently-updating parent. Checking `new_deps`\n\t\t// allows us to skip the expensive work of disconnecting and immediately reconnecting it\n\t\t(new_deps === null || !new_deps.includes(dependency))\n\t) {\n\t\tset_signal_status(dependency, MAYBE_DIRTY);\n\t\t// If we are working with a derived that is owned by an effect, then mark it as being\n\t\t// disconnected and remove the mark flag, as it cannot be reliably removed otherwise\n\t\tif ((dependency.f & CONNECTED) !== 0) {\n\t\t\tdependency.f ^= CONNECTED;\n\t\t\tdependency.f &= ~WAS_MARKED;\n\t\t}\n\t\t// Disconnect any reactions owned by this reaction\n\t\tdestroy_derived_effects(/** @type {Derived} **/ (dependency));\n\t\tremove_reactions(/** @type {Derived} **/ (dependency), 0);\n\t}\n}\n\n/**\n * @param {Reaction} signal\n * @param {number} start_index\n * @returns {void}\n */\nexport function remove_reactions(signal, start_index) {\n\tvar dependencies = signal.deps;\n\tif (dependencies === null) return;\n\n\tfor (var i = start_index; i < dependencies.length; i++) {\n\t\tremove_reaction(signal, dependencies[i]);\n\t}\n}\n\n/**\n * @param {Effect} effect\n * @returns {void}\n */\nexport function update_effect(effect) {\n\tvar flags = effect.f;\n\n\tif ((flags & DESTROYED) !== 0) {\n\t\treturn;\n\t}\n\n\tset_signal_status(effect, CLEAN);\n\n\tvar previous_effect = active_effect;\n\tvar was_updating_effect = is_updating_effect;\n\n\tactive_effect = effect;\n\tis_updating_effect = true;\n\n\tif (DEV) {\n\t\tvar previous_component_fn = dev_current_component_function;\n\t\tset_dev_current_component_function(effect.component_function);\n\t\tvar previous_stack = /** @type {any} */ (dev_stack);\n\t\t// only block effects have a dev stack, keep the current one otherwise\n\t\tset_dev_stack(effect.dev_stack ?? dev_stack);\n\t}\n\n\ttry {\n\t\tif ((flags & (BLOCK_EFFECT | MANAGED_EFFECT)) !== 0) {\n\t\t\tdestroy_block_effect_children(effect);\n\t\t} else {\n\t\t\tdestroy_effect_children(effect);\n\t\t}\n\n\t\texecute_effect_teardown(effect);\n\t\tvar teardown = update_reaction(effect);\n\t\teffect.teardown = typeof teardown === 'function' ? teardown : null;\n\t\teffect.wv = write_version;\n\n\t\t// In DEV, increment versions of any sources that were written to during the effect,\n\t\t// so that they are correctly marked as dirty when the effect re-runs\n\t\tif (DEV && tracing_mode_flag && (effect.f & DIRTY) !== 0 && effect.deps !== null) {\n\t\t\tfor (var dep of effect.deps) {\n\t\t\t\tif (dep.set_during_effect) {\n\t\t\t\t\tdep.wv = increment_write_version();\n\t\t\t\t\tdep.set_during_effect = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} finally {\n\t\tis_updating_effect = was_updating_effect;\n\t\tactive_effect = previous_effect;\n\n\t\tif (DEV) {\n\t\t\tset_dev_current_component_function(previous_component_fn);\n\t\t\tset_dev_stack(previous_stack);\n\t\t}\n\t}\n}\n\n/**\n * Returns a promise that resolves once any pending state changes have been applied.\n * @returns {Promise<void>}\n */\nexport async function tick() {\n\tif (async_mode_flag) {\n\t\treturn new Promise((f) => {\n\t\t\t// Race them against each other - in almost all cases requestAnimationFrame will fire first,\n\t\t\t// but e.g. in case the window is not focused or a view transition happens, requestAnimationFrame\n\t\t\t// will be delayed and setTimeout helps us resolve fast enough in that case\n\t\t\trequestAnimationFrame(() => f());\n\t\t\tsetTimeout(() => f());\n\t\t});\n\t}\n\n\tawait Promise.resolve();\n\n\t// By calling flushSync we guarantee that any pending state changes are applied after one tick.\n\t// TODO look into whether we can make flushing subsequent updates synchronously in the future.\n\tflushSync();\n}\n\n/**\n * Returns a promise that resolves once any state changes, and asynchronous work resulting from them,\n * have resolved and the DOM has been updated\n * @returns {Promise<void>}\n * @since 5.36\n */\nexport function settled() {\n\treturn Batch.ensure().settled();\n}\n\n/**\n * @template V\n * @param {Value<V>} signal\n * @returns {V}\n */\nexport function get(signal) {\n\tvar flags = signal.f;\n\tvar is_derived = (flags & DERIVED) !== 0;\n\n\tcaptured_signals?.add(signal);\n\n\t// Register the dependency on the current reaction signal.\n\tif (active_reaction !== null && !untracking) {\n\t\t// if we're in a derived that is being read inside an _async_ derived,\n\t\t// it's possible that the effect was already destroyed. In this case,\n\t\t// we don't add the dependency, because that would create a memory leak\n\t\tvar destroyed = active_effect !== null && (active_effect.f & DESTROYED) !== 0;\n\n\t\tif (!destroyed && !current_sources?.includes(signal)) {\n\t\t\tvar deps = active_reaction.deps;\n\n\t\t\tif ((active_reaction.f & REACTION_IS_UPDATING) !== 0) {\n\t\t\t\t// we're in the effect init/update cycle\n\t\t\t\tif (signal.rv < read_version) {\n\t\t\t\t\tsignal.rv = read_version;\n\n\t\t\t\t\t// If the signal is accessing the same dependencies in the same\n\t\t\t\t\t// order as it did last time, increment `skipped_deps`\n\t\t\t\t\t// rather than updating `new_deps`, which creates GC cost\n\t\t\t\t\tif (new_deps === null && deps !== null && deps[skipped_deps] === signal) {\n\t\t\t\t\t\tskipped_deps++;\n\t\t\t\t\t} else if (new_deps === null) {\n\t\t\t\t\t\tnew_deps = [signal];\n\t\t\t\t\t} else if (!new_deps.includes(signal)) {\n\t\t\t\t\t\tnew_deps.push(signal);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// we're adding a dependency outside the init/update cycle\n\t\t\t\t// (i.e. after an `await`)\n\t\t\t\t(active_reaction.deps ??= []).push(signal);\n\n\t\t\t\tvar reactions = signal.reactions;\n\n\t\t\t\tif (reactions === null) {\n\t\t\t\t\tsignal.reactions = [active_reaction];\n\t\t\t\t} else if (!reactions.includes(active_reaction)) {\n\t\t\t\t\treactions.push(active_reaction);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif (DEV) {\n\t\t// TODO reinstate this, but make it actually work\n\t\t// if (current_async_effect) {\n\t\t// \tvar tracking = (current_async_effect.f & REACTION_IS_UPDATING) !== 0;\n\t\t// \tvar was_read = current_async_effect.deps?.includes(signal);\n\n\t\t// \tif (!tracking && !untracking && !was_read) {\n\t\t// \t\tw.await_reactivity_loss(/** @type {string} */ (signal.label));\n\n\t\t// \t\tvar trace = get_error('traced at');\n\t\t// \t\t// eslint-disable-next-line no-console\n\t\t// \t\tif (trace) console.warn(trace);\n\t\t// \t}\n\t\t// }\n\n\t\trecent_async_deriveds.delete(signal);\n\n\t\tif (\n\t\t\ttracing_mode_flag &&\n\t\t\t!untracking &&\n\t\t\ttracing_expressions !== null &&\n\t\t\tactive_reaction !== null &&\n\t\t\ttracing_expressions.reaction === active_reaction\n\t\t) {\n\t\t\t// Used when mapping state between special blocks like `each`\n\t\t\tif (signal.trace) {\n\t\t\t\tsignal.trace();\n\t\t\t} else {\n\t\t\t\tvar trace = get_error('traced at');\n\n\t\t\t\tif (trace) {\n\t\t\t\t\tvar entry = tracing_expressions.entries.get(signal);\n\n\t\t\t\t\tif (entry === undefined) {\n\t\t\t\t\t\tentry = { traces: [] };\n\t\t\t\t\t\ttracing_expressions.entries.set(signal, entry);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar last = entry.traces[entry.traces.length - 1];\n\n\t\t\t\t\t// traces can be duplicated, e.g. by `snapshot` invoking both\n\t\t\t\t\t// both `getOwnPropertyDescriptor` and `get` traps at once\n\t\t\t\t\tif (trace.stack !== last?.stack) {\n\t\t\t\t\t\tentry.traces.push(trace);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif (is_destroying_effect) {\n\t\tif (old_values.has(signal)) {\n\t\t\treturn old_values.get(signal);\n\t\t}\n\n\t\tif (is_derived) {\n\t\t\tvar derived = /** @type {Derived} */ (signal);\n\n\t\t\tvar value = derived.v;\n\n\t\t\t// if the derived is dirty and has reactions, or depends on the values that just changed, re-execute\n\t\t\t// (a derived can be maybe_dirty due to the effect destroy removing its last reaction)\n\t\t\tif (\n\t\t\t\t((derived.f & CLEAN) === 0 && derived.reactions !== null) ||\n\t\t\t\tdepends_on_old_values(derived)\n\t\t\t) {\n\t\t\t\tvalue = execute_derived(derived);\n\t\t\t}\n\n\t\t\told_values.set(derived, value);\n\n\t\t\treturn value;\n\t\t}\n\t} else if (\n\t\tis_derived &&\n\t\t(!batch_values?.has(signal) || (current_batch?.is_fork && !effect_tracking()))\n\t) {\n\t\tderived = /** @type {Derived} */ (signal);\n\n\t\tif (is_dirty(derived)) {\n\t\t\tupdate_derived(derived);\n\t\t}\n\n\t\tif (is_updating_effect && effect_tracking() && (derived.f & CONNECTED) === 0) {\n\t\t\treconnect(derived);\n\t\t}\n\t}\n\n\tif (batch_values?.has(signal)) {\n\t\treturn batch_values.get(signal);\n\t}\n\n\tif ((signal.f & ERROR_VALUE) !== 0) {\n\t\tthrow signal.v;\n\t}\n\n\treturn signal.v;\n}\n\n/**\n * (Re)connect a disconnected derived, so that it is notified\n * of changes in `mark_reactions`\n * @param {Derived} derived\n */\nfunction reconnect(derived) {\n\tif (derived.deps === null) return;\n\n\tderived.f ^= CONNECTED;\n\n\tfor (const dep of derived.deps) {\n\t\t(dep.reactions ??= []).push(derived);\n\n\t\tif ((dep.f & DERIVED) !== 0 && (dep.f & CONNECTED) === 0) {\n\t\t\treconnect(/** @type {Derived} */ (dep));\n\t\t}\n\t}\n}\n\n/** @param {Derived} derived */\nfunction depends_on_old_values(derived) {\n\tif (derived.v === UNINITIALIZED) return true; // we don't know, so assume the worst\n\tif (derived.deps === null) return false;\n\n\tfor (const dep of derived.deps) {\n\t\tif (old_values.has(dep)) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ((dep.f & DERIVED) !== 0 && depends_on_old_values(/** @type {Derived} */ (dep))) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\n/**\n * Like `get`, but checks for `undefined`. Used for `var` declarations because they can be accessed before being declared\n * @template V\n * @param {Value<V> | undefined} signal\n * @returns {V | undefined}\n */\nexport function safe_get(signal) {\n\treturn signal && get(signal);\n}\n\n/**\n * When used inside a [`$derived`](https://svelte.dev/docs/svelte/$derived) or [`$effect`](https://svelte.dev/docs/svelte/$effect),\n * any state read inside `fn` will not be treated as a dependency.\n *\n * ```ts\n * $effect(() => {\n * // this will run when `data` changes, but not when `time` changes\n * save(data, {\n * timestamp: untrack(() => time)\n * });\n * });\n * ```\n * @template T\n * @param {() => T} fn\n * @returns {T}\n */\nexport function untrack(fn) {\n\tvar previous_untracking = untracking;\n\ttry {\n\t\tuntracking = true;\n\t\treturn fn();\n\t} finally {\n\t\tuntracking = previous_untracking;\n\t}\n}\n\nconst STATUS_MASK = ~(DIRTY | MAYBE_DIRTY | CLEAN);\n\n/**\n * @param {Signal} signal\n * @param {number} status\n * @returns {void}\n */\nexport function set_signal_status(signal, status) {\n\tsignal.f = (signal.f & STATUS_MASK) | status;\n}\n\n/**\n * @param {Record<string | symbol, unknown>} obj\n * @param {Array<string | symbol>} keys\n * @returns {Record<string | symbol, unknown>}\n */\nexport function exclude_from_object(obj, keys) {\n\t/** @type {Record<string | symbol, unknown>} */\n\tvar result = {};\n\n\tfor (var key in obj) {\n\t\tif (!keys.includes(key)) {\n\t\t\tresult[key] = obj[key];\n\t\t}\n\t}\n\n\tfor (var symbol of Object.getOwnPropertySymbols(obj)) {\n\t\tif (Object.propertyIsEnumerable.call(obj, symbol) && !keys.includes(symbol)) {\n\t\t\tresult[symbol] = obj[symbol];\n\t\t}\n\t}\n\n\treturn result;\n}\n\n/**\n * Possibly traverse an object and read all its properties so that they're all reactive in case this is `$state`.\n * Does only check first level of an object for performance reasons (heuristic should be good for 99% of all cases).\n * @param {any} value\n * @returns {void}\n */\nexport function deep_read_state(value) {\n\tif (typeof value !== 'object' || !value || value instanceof EventTarget) {\n\t\treturn;\n\t}\n\n\tif (STATE_SYMBOL in value) {\n\t\tdeep_read(value);\n\t} else if (!Array.isArray(value)) {\n\t\tfor (let key in value) {\n\t\t\tconst prop = value[key];\n\t\t\tif (typeof prop === 'object' && prop && STATE_SYMBOL in prop) {\n\t\t\t\tdeep_read(prop);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Deeply traverse an object and read all its properties\n * so that they're all reactive in case this is `$state`\n * @param {any} value\n * @param {Set<any>} visited\n * @returns {void}\n */\nexport function deep_read(value, visited = new Set()) {\n\tif (\n\t\ttypeof value === 'object' &&\n\t\tvalue !== null &&\n\t\t// We don't want to traverse DOM elements\n\t\t!(value instanceof EventTarget) &&\n\t\t!visited.has(value)\n\t) {\n\t\tvisited.add(value);\n\t\t// When working with a possible SvelteDate, this\n\t\t// will ensure we capture changes to it.\n\t\tif (value instanceof Date) {\n\t\t\tvalue.getTime();\n\t\t}\n\t\tfor (let key in value) {\n\t\t\ttry {\n\t\t\t\tdeep_read(value[key], visited);\n\t\t\t} catch (e) {\n\t\t\t\t// continue\n\t\t\t}\n\t\t}\n\t\tconst proto = get_prototype_of(value);\n\t\tif (\n\t\t\tproto !== Object.prototype &&\n\t\t\tproto !== Array.prototype &&\n\t\t\tproto !== Map.prototype &&\n\t\t\tproto !== Set.prototype &&\n\t\t\tproto !== Date.prototype\n\t\t) {\n\t\t\tconst descriptors = get_descriptors(proto);\n\t\t\tfor (let key in descriptors) {\n\t\t\t\tconst get = descriptors[key].get;\n\t\t\t\tif (get) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tget.call(value);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t// continue\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","import { teardown } from '../../reactivity/effects.js';\nimport { define_property } from '../../../shared/utils.js';\nimport { hydrating } from '../hydration.js';\nimport { queue_micro_task } from '../task.js';\nimport { FILENAME } from '../../../../constants.js';\nimport * as w from '../../warnings.js';\nimport {\n\tactive_effect,\n\tactive_reaction,\n\tset_active_effect,\n\tset_active_reaction\n} from '../../runtime.js';\nimport { without_reactive_context } from './bindings/shared.js';\n\n/** @type {Set<string>} */\nexport const all_registered_events = new Set();\n\n/** @type {Set<(events: Array<string>) => void>} */\nexport const root_event_handles = new Set();\n\n/**\n * SSR adds onload and onerror attributes to catch those events before the hydration.\n * This function detects those cases, removes the attributes and replays the events.\n * @param {HTMLElement} dom\n */\nexport function replay_events(dom) {\n\tif (!hydrating) return;\n\n\tdom.removeAttribute('onload');\n\tdom.removeAttribute('onerror');\n\t// @ts-expect-error\n\tconst event = dom.__e;\n\tif (event !== undefined) {\n\t\t// @ts-expect-error\n\t\tdom.__e = undefined;\n\t\tqueueMicrotask(() => {\n\t\t\tif (dom.isConnected) {\n\t\t\t\tdom.dispatchEvent(event);\n\t\t\t}\n\t\t});\n\t}\n}\n\n/**\n * @param {string} event_name\n * @param {EventTarget} dom\n * @param {EventListener} [handler]\n * @param {AddEventListenerOptions} [options]\n */\nexport function create_event(event_name, dom, handler, options = {}) {\n\t/**\n\t * @this {EventTarget}\n\t */\n\tfunction target_handler(/** @type {Event} */ event) {\n\t\tif (!options.capture) {\n\t\t\t// Only call in the bubble phase, else delegated events would be called before the capturing events\n\t\t\thandle_event_propagation.call(dom, event);\n\t\t}\n\t\tif (!event.cancelBubble) {\n\t\t\treturn without_reactive_context(() => {\n\t\t\t\treturn handler?.call(this, event);\n\t\t\t});\n\t\t}\n\t}\n\n\t// Chrome has a bug where pointer events don't work when attached to a DOM element that has been cloned\n\t// with cloneNode() and the DOM element is disconnected from the document. To ensure the event works, we\n\t// defer the attachment till after it's been appended to the document. TODO: remove this once Chrome fixes\n\t// this bug. The same applies to wheel events and touch events.\n\tif (\n\t\tevent_name.startsWith('pointer') ||\n\t\tevent_name.startsWith('touch') ||\n\t\tevent_name === 'wheel'\n\t) {\n\t\tqueue_micro_task(() => {\n\t\t\tdom.addEventListener(event_name, target_handler, options);\n\t\t});\n\t} else {\n\t\tdom.addEventListener(event_name, target_handler, options);\n\t}\n\n\treturn target_handler;\n}\n\n/**\n * Attaches an event handler to an element and returns a function that removes the handler. Using this\n * rather than `addEventListener` will preserve the correct order relative to handlers added declaratively\n * (with attributes like `onclick`), which use event delegation for performance reasons\n *\n * @param {EventTarget} element\n * @param {string} type\n * @param {EventListener} handler\n * @param {AddEventListenerOptions} [options]\n */\nexport function on(element, type, handler, options = {}) {\n\tvar target_handler = create_event(type, element, handler, options);\n\n\treturn () => {\n\t\telement.removeEventListener(type, target_handler, options);\n\t};\n}\n\n/**\n * @param {string} event_name\n * @param {Element} dom\n * @param {EventListener} [handler]\n * @param {boolean} [capture]\n * @param {boolean} [passive]\n * @returns {void}\n */\nexport function event(event_name, dom, handler, capture, passive) {\n\tvar options = { capture, passive };\n\tvar target_handler = create_event(event_name, dom, handler, options);\n\n\tif (\n\t\tdom === document.body ||\n\t\t// @ts-ignore\n\t\tdom === window ||\n\t\t// @ts-ignore\n\t\tdom === document ||\n\t\t// Firefox has quirky behavior, it can happen that we still get \"canplay\" events when the element is already removed\n\t\tdom instanceof HTMLMediaElement\n\t) {\n\t\tteardown(() => {\n\t\t\tdom.removeEventListener(event_name, target_handler, options);\n\t\t});\n\t}\n}\n\n/**\n * @param {Array<string>} events\n * @returns {void}\n */\nexport function delegate(events) {\n\tfor (var i = 0; i < events.length; i++) {\n\t\tall_registered_events.add(events[i]);\n\t}\n\n\tfor (var fn of root_event_handles) {\n\t\tfn(events);\n\t}\n}\n\n// used to store the reference to the currently propagated event\n// to prevent garbage collection between microtasks in Firefox\n// If the event object is GCed too early, the expando __root property\n// set on the event object is lost, causing the event delegation\n// to process the event twice\nlet last_propagated_event = null;\n\n/**\n * @this {EventTarget}\n * @param {Event} event\n * @returns {void}\n */\nexport function handle_event_propagation(event) {\n\tvar handler_element = this;\n\tvar owner_document = /** @type {Node} */ (handler_element).ownerDocument;\n\tvar event_name = event.type;\n\tvar path = event.composedPath?.() || [];\n\tvar current_target = /** @type {null | Element} */ (path[0] || event.target);\n\n\tlast_propagated_event = event;\n\n\t// composedPath contains list of nodes the event has propagated through.\n\t// We check __root to skip all nodes below it in case this is a\n\t// parent of the __root node, which indicates that there's nested\n\t// mounted apps. In this case we don't want to trigger events multiple times.\n\tvar path_idx = 0;\n\n\t// the `last_propagated_event === event` check is redundant, but\n\t// without it the variable will be DCE'd and things will\n\t// fail mysteriously in Firefox\n\t// @ts-expect-error is added below\n\tvar handled_at = last_propagated_event === event && event.__root;\n\n\tif (handled_at) {\n\t\tvar at_idx = path.indexOf(handled_at);\n\t\tif (\n\t\t\tat_idx !== -1 &&\n\t\t\t(handler_element === document || handler_element === /** @type {any} */ (window))\n\t\t) {\n\t\t\t// This is the fallback document listener or a window listener, but the event was already handled\n\t\t\t// -> ignore, but set handle_at to document/window so that we're resetting the event\n\t\t\t// chain in case someone manually dispatches the same event object again.\n\t\t\t// @ts-expect-error\n\t\t\tevent.__root = handler_element;\n\t\t\treturn;\n\t\t}\n\n\t\t// We're deliberately not skipping if the index is higher, because\n\t\t// someone could create an event programmatically and emit it multiple times,\n\t\t// in which case we want to handle the whole propagation chain properly each time.\n\t\t// (this will only be a false negative if the event is dispatched multiple times and\n\t\t// the fallback document listener isn't reached in between, but that's super rare)\n\t\tvar handler_idx = path.indexOf(handler_element);\n\t\tif (handler_idx === -1) {\n\t\t\t// handle_idx can theoretically be -1 (happened in some JSDOM testing scenarios with an event listener on the window object)\n\t\t\t// so guard against that, too, and assume that everything was handled at this point.\n\t\t\treturn;\n\t\t}\n\n\t\tif (at_idx <= handler_idx) {\n\t\t\tpath_idx = at_idx;\n\t\t}\n\t}\n\n\tcurrent_target = /** @type {Element} */ (path[path_idx] || event.target);\n\t// there can only be one delegated event per element, and we either already handled the current target,\n\t// or this is the very first target in the chain which has a non-delegated listener, in which case it's safe\n\t// to handle a possible delegated event on it later (through the root delegation listener for example).\n\tif (current_target === handler_element) return;\n\n\t// Proxy currentTarget to correct target\n\tdefine_property(event, 'currentTarget', {\n\t\tconfigurable: true,\n\t\tget() {\n\t\t\treturn current_target || owner_document;\n\t\t}\n\t});\n\n\t// This started because of Chromium issue https://chromestatus.com/feature/5128696823545856,\n\t// where removal or moving of of the DOM can cause sync `blur` events to fire, which can cause logic\n\t// to run inside the current `active_reaction`, which isn't what we want at all. However, on reflection,\n\t// it's probably best that all event handled by Svelte have this behaviour, as we don't really want\n\t// an event handler to run in the context of another reaction or effect.\n\tvar previous_reaction = active_reaction;\n\tvar previous_effect = active_effect;\n\tset_active_reaction(null);\n\tset_active_effect(null);\n\n\ttry {\n\t\t/**\n\t\t * @type {unknown}\n\t\t */\n\t\tvar throw_error;\n\t\t/**\n\t\t * @type {unknown[]}\n\t\t */\n\t\tvar other_errors = [];\n\n\t\twhile (current_target !== null) {\n\t\t\t/** @type {null | Element} */\n\t\t\tvar parent_element =\n\t\t\t\tcurrent_target.assignedSlot ||\n\t\t\t\tcurrent_target.parentNode ||\n\t\t\t\t/** @type {any} */ (current_target).host ||\n\t\t\t\tnull;\n\n\t\t\ttry {\n\t\t\t\t// @ts-expect-error\n\t\t\t\tvar delegated = current_target['__' + event_name];\n\n\t\t\t\tif (\n\t\t\t\t\tdelegated != null &&\n\t\t\t\t\t(!(/** @type {any} */ (current_target).disabled) ||\n\t\t\t\t\t\t// DOM could've been updated already by the time this is reached, so we check this as well\n\t\t\t\t\t\t// -> the target could not have been disabled because it emits the event in the first place\n\t\t\t\t\t\tevent.target === current_target)\n\t\t\t\t) {\n\t\t\t\t\tdelegated.call(current_target, event);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tif (throw_error) {\n\t\t\t\t\tother_errors.push(error);\n\t\t\t\t} else {\n\t\t\t\t\tthrow_error = error;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (event.cancelBubble || parent_element === handler_element || parent_element === null) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcurrent_target = parent_element;\n\t\t}\n\n\t\tif (throw_error) {\n\t\t\tfor (let error of other_errors) {\n\t\t\t\t// Throw the rest of the errors, one-by-one on a microtask\n\t\t\t\tqueueMicrotask(() => {\n\t\t\t\t\tthrow error;\n\t\t\t\t});\n\t\t\t}\n\t\t\tthrow throw_error;\n\t\t}\n\t} finally {\n\t\t// @ts-expect-error is used above\n\t\tevent.__root = handler_element;\n\t\t// @ts-ignore remove proxy on currentTarget\n\t\tdelete event.currentTarget;\n\t\tset_active_reaction(previous_reaction);\n\t\tset_active_effect(previous_effect);\n\t}\n}\n\n/**\n * In dev, warn if an event handler is not a function, as it means the\n * user probably called the handler or forgot to add a `() =>`\n * @param {() => (event: Event, ...args: any) => void} thunk\n * @param {EventTarget} element\n * @param {[Event, ...any]} args\n * @param {any} component\n * @param {[number, number]} [loc]\n * @param {boolean} [remove_parens]\n */\nexport function apply(\n\tthunk,\n\telement,\n\targs,\n\tcomponent,\n\tloc,\n\thas_side_effects = false,\n\tremove_parens = false\n) {\n\tlet handler;\n\tlet error;\n\n\ttry {\n\t\thandler = thunk();\n\t} catch (e) {\n\t\terror = e;\n\t}\n\n\tif (typeof handler !== 'function' && (has_side_effects || handler != null || error)) {\n\t\tconst filename = component?.[FILENAME];\n\t\tconst location = loc ? ` at ${filename}:${loc[0]}:${loc[1]}` : ` in ${filename}`;\n\t\tconst phase = args[0]?.eventPhase < Event.BUBBLING_PHASE ? 'capture' : '';\n\t\tconst event_name = args[0]?.type + phase;\n\t\tconst description = `\\`${event_name}\\` handler${location}`;\n\t\tconst suggestion = remove_parens ? 'remove the trailing `()`' : 'add a leading `() =>`';\n\n\t\tw.event_handler_invalid(description, suggestion);\n\n\t\tif (error) {\n\t\t\tthrow error;\n\t\t}\n\t}\n\thandler?.apply(element, args);\n}\n","/** @param {string} html */\nexport function create_fragment_from_html(html) {\n\tvar elem = document.createElement('template');\n\telem.innerHTML = html.replaceAll('<!>', '<!---->'); // XHTML compliance\n\treturn elem.content;\n}\n","/** @import { Effect, TemplateNode } from '#client' */\n/** @import { TemplateStructure } from './types' */\nimport { hydrate_next, hydrate_node, hydrating, set_hydrate_node } from './hydration.js';\nimport {\n\tcreate_text,\n\tget_first_child,\n\tis_firefox,\n\tcreate_element,\n\tcreate_fragment,\n\tcreate_comment,\n\tset_attribute\n} from './operations.js';\nimport { create_fragment_from_html } from './reconciler.js';\nimport { active_effect } from '../runtime.js';\nimport {\n\tNAMESPACE_MATHML,\n\tNAMESPACE_SVG,\n\tTEMPLATE_FRAGMENT,\n\tTEMPLATE_USE_IMPORT_NODE,\n\tTEMPLATE_USE_MATHML,\n\tTEMPLATE_USE_SVG\n} from '../../../constants.js';\nimport { COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, EFFECT_RAN, TEXT_NODE } from '#client/constants';\n\n/**\n * @param {TemplateNode} start\n * @param {TemplateNode | null} end\n */\nexport function assign_nodes(start, end) {\n\tvar effect = /** @type {Effect} */ (active_effect);\n\tif (effect.nodes_start === null) {\n\t\teffect.nodes_start = start;\n\t\teffect.nodes_end = end;\n\t}\n}\n\n/**\n * @param {string} content\n * @param {number} flags\n * @returns {() => Node | Node[]}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function from_html(content, flags) {\n\tvar is_fragment = (flags & TEMPLATE_FRAGMENT) !== 0;\n\tvar use_import_node = (flags & TEMPLATE_USE_IMPORT_NODE) !== 0;\n\n\t/** @type {Node} */\n\tvar node;\n\n\t/**\n\t * Whether or not the first item is a text/element node. If not, we need to\n\t * create an additional comment node to act as `effect.nodes.start`\n\t */\n\tvar has_start = !content.startsWith('<!>');\n\n\treturn () => {\n\t\tif (hydrating) {\n\t\t\tassign_nodes(hydrate_node, null);\n\t\t\treturn hydrate_node;\n\t\t}\n\n\t\tif (node === undefined) {\n\t\t\tnode = create_fragment_from_html(has_start ? content : '<!>' + content);\n\t\t\tif (!is_fragment) node = /** @type {Node} */ (get_first_child(node));\n\t\t}\n\n\t\tvar clone = /** @type {TemplateNode} */ (\n\t\t\tuse_import_node || is_firefox ? document.importNode(node, true) : node.cloneNode(true)\n\t\t);\n\n\t\tif (is_fragment) {\n\t\t\tvar start = /** @type {TemplateNode} */ (get_first_child(clone));\n\t\t\tvar end = /** @type {TemplateNode} */ (clone.lastChild);\n\n\t\t\tassign_nodes(start, end);\n\t\t} else {\n\t\t\tassign_nodes(clone, clone);\n\t\t}\n\n\t\treturn clone;\n\t};\n}\n\n/**\n * @param {string} content\n * @param {number} flags\n * @param {'svg' | 'math'} ns\n * @returns {() => Node | Node[]}\n */\n/*#__NO_SIDE_EFFECTS__*/\nfunction from_namespace(content, flags, ns = 'svg') {\n\t/**\n\t * Whether or not the first item is a text/element node. If not, we need to\n\t * create an additional comment node to act as `effect.nodes.start`\n\t */\n\tvar has_start = !content.startsWith('<!>');\n\n\tvar is_fragment = (flags & TEMPLATE_FRAGMENT) !== 0;\n\tvar wrapped = `<${ns}>${has_start ? content : '<!>' + content}</${ns}>`;\n\n\t/** @type {Element | DocumentFragment} */\n\tvar node;\n\n\treturn () => {\n\t\tif (hydrating) {\n\t\t\tassign_nodes(hydrate_node, null);\n\t\t\treturn hydrate_node;\n\t\t}\n\n\t\tif (!node) {\n\t\t\tvar fragment = /** @type {DocumentFragment} */ (create_fragment_from_html(wrapped));\n\t\t\tvar root = /** @type {Element} */ (get_first_child(fragment));\n\n\t\t\tif (is_fragment) {\n\t\t\t\tnode = document.createDocumentFragment();\n\t\t\t\twhile (get_first_child(root)) {\n\t\t\t\t\tnode.appendChild(/** @type {Node} */ (get_first_child(root)));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnode = /** @type {Element} */ (get_first_child(root));\n\t\t\t}\n\t\t}\n\n\t\tvar clone = /** @type {TemplateNode} */ (node.cloneNode(true));\n\n\t\tif (is_fragment) {\n\t\t\tvar start = /** @type {TemplateNode} */ (get_first_child(clone));\n\t\t\tvar end = /** @type {TemplateNode} */ (clone.lastChild);\n\n\t\t\tassign_nodes(start, end);\n\t\t} else {\n\t\t\tassign_nodes(clone, clone);\n\t\t}\n\n\t\treturn clone;\n\t};\n}\n\n/**\n * @param {string} content\n * @param {number} flags\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function from_svg(content, flags) {\n\treturn from_namespace(content, flags, 'svg');\n}\n\n/**\n * @param {string} content\n * @param {number} flags\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function from_mathml(content, flags) {\n\treturn from_namespace(content, flags, 'math');\n}\n\n/**\n * @param {TemplateStructure[]} structure\n * @param {typeof NAMESPACE_SVG | typeof NAMESPACE_MATHML | undefined} [ns]\n */\nfunction fragment_from_tree(structure, ns) {\n\tvar fragment = create_fragment();\n\n\tfor (var item of structure) {\n\t\tif (typeof item === 'string') {\n\t\t\tfragment.append(create_text(item));\n\t\t\tcontinue;\n\t\t}\n\n\t\t// if `preserveComments === true`, comments are represented as `['// <data>']`\n\t\tif (item === undefined || item[0][0] === '/') {\n\t\t\tfragment.append(create_comment(item ? item[0].slice(3) : ''));\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst [name, attributes, ...children] = item;\n\n\t\tconst namespace = name === 'svg' ? NAMESPACE_SVG : name === 'math' ? NAMESPACE_MATHML : ns;\n\n\t\tvar element = create_element(name, namespace, attributes?.is);\n\n\t\tfor (var key in attributes) {\n\t\t\tset_attribute(element, key, attributes[key]);\n\t\t}\n\n\t\tif (children.length > 0) {\n\t\t\tvar target =\n\t\t\t\telement.tagName === 'TEMPLATE'\n\t\t\t\t\t? /** @type {HTMLTemplateElement} */ (element).content\n\t\t\t\t\t: element;\n\n\t\t\ttarget.append(\n\t\t\t\tfragment_from_tree(children, element.tagName === 'foreignObject' ? undefined : namespace)\n\t\t\t);\n\t\t}\n\n\t\tfragment.append(element);\n\t}\n\n\treturn fragment;\n}\n\n/**\n * @param {TemplateStructure[]} structure\n * @param {number} flags\n * @returns {() => Node | Node[]}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function from_tree(structure, flags) {\n\tvar is_fragment = (flags & TEMPLATE_FRAGMENT) !== 0;\n\tvar use_import_node = (flags & TEMPLATE_USE_IMPORT_NODE) !== 0;\n\n\t/** @type {Node} */\n\tvar node;\n\n\treturn () => {\n\t\tif (hydrating) {\n\t\t\tassign_nodes(hydrate_node, null);\n\t\t\treturn hydrate_node;\n\t\t}\n\n\t\tif (node === undefined) {\n\t\t\tconst ns =\n\t\t\t\t(flags & TEMPLATE_USE_SVG) !== 0\n\t\t\t\t\t? NAMESPACE_SVG\n\t\t\t\t\t: (flags & TEMPLATE_USE_MATHML) !== 0\n\t\t\t\t\t\t? NAMESPACE_MATHML\n\t\t\t\t\t\t: undefined;\n\n\t\t\tnode = fragment_from_tree(structure, ns);\n\t\t\tif (!is_fragment) node = /** @type {Node} */ (get_first_child(node));\n\t\t}\n\n\t\tvar clone = /** @type {TemplateNode} */ (\n\t\t\tuse_import_node || is_firefox ? document.importNode(node, true) : node.cloneNode(true)\n\t\t);\n\n\t\tif (is_fragment) {\n\t\t\tvar start = /** @type {TemplateNode} */ (get_first_child(clone));\n\t\t\tvar end = /** @type {TemplateNode} */ (clone.lastChild);\n\n\t\t\tassign_nodes(start, end);\n\t\t} else {\n\t\t\tassign_nodes(clone, clone);\n\t\t}\n\n\t\treturn clone;\n\t};\n}\n\n/**\n * @param {() => Element | DocumentFragment} fn\n */\nexport function with_script(fn) {\n\treturn () => run_scripts(fn());\n}\n\n/**\n * Creating a document fragment from HTML that contains script tags will not execute\n * the scripts. We need to replace the script tags with new ones so that they are executed.\n * @param {Element | DocumentFragment} node\n * @returns {Node | Node[]}\n */\nfunction run_scripts(node) {\n\t// scripts were SSR'd, in which case they will run\n\tif (hydrating) return node;\n\n\tconst is_fragment = node.nodeType === DOCUMENT_FRAGMENT_NODE;\n\tconst scripts =\n\t\t/** @type {HTMLElement} */ (node).tagName === 'SCRIPT'\n\t\t\t? [/** @type {HTMLScriptElement} */ (node)]\n\t\t\t: node.querySelectorAll('script');\n\tconst effect = /** @type {Effect} */ (active_effect);\n\n\tfor (const script of scripts) {\n\t\tconst clone = document.createElement('script');\n\t\tfor (var attribute of script.attributes) {\n\t\t\tclone.setAttribute(attribute.name, attribute.value);\n\t\t}\n\n\t\tclone.textContent = script.textContent;\n\n\t\t// The script has changed - if it's at the edges, the effect now points at dead nodes\n\t\tif (is_fragment ? node.firstChild === script : node === script) {\n\t\t\teffect.nodes_start = clone;\n\t\t}\n\t\tif (is_fragment ? node.lastChild === script : node === script) {\n\t\t\teffect.nodes_end = clone;\n\t\t}\n\n\t\tscript.replaceWith(clone);\n\t}\n\treturn node;\n}\n\n/**\n * Don't mark this as side-effect-free, hydration needs to walk all nodes\n * @param {any} value\n */\nexport function text(value = '') {\n\tif (!hydrating) {\n\t\tvar t = create_text(value + '');\n\t\tassign_nodes(t, t);\n\t\treturn t;\n\t}\n\n\tvar node = hydrate_node;\n\n\tif (node.nodeType !== TEXT_NODE) {\n\t\t// if an {expression} is empty during SSR, we need to insert an empty text node\n\t\tnode.before((node = create_text()));\n\t\tset_hydrate_node(node);\n\t}\n\n\tassign_nodes(node, node);\n\treturn node;\n}\n\n/**\n * @returns {TemplateNode | DocumentFragment}\n */\nexport function comment() {\n\t// we're not delegating to `template` here for performance reasons\n\tif (hydrating) {\n\t\tassign_nodes(hydrate_node, null);\n\t\treturn hydrate_node;\n\t}\n\n\tvar frag = document.createDocumentFragment();\n\tvar start = document.createComment('');\n\tvar anchor = create_text();\n\tfrag.append(start, anchor);\n\n\tassign_nodes(start, anchor);\n\n\treturn frag;\n}\n\n/**\n * Assign the created (or in hydration mode, traversed) dom elements to the current block\n * and insert the elements into the dom (in client mode).\n * @param {Text | Comment | Element} anchor\n * @param {DocumentFragment | Element} dom\n */\nexport function append(anchor, dom) {\n\tif (hydrating) {\n\t\tvar effect = /** @type {Effect} */ (active_effect);\n\t\t// When hydrating and outer component and an inner component is async, i.e. blocked on a promise,\n\t\t// then by the time the inner resolves we have already advanced to the end of the hydrated nodes\n\t\t// of the parent component. Check for defined for that reason to avoid rewinding the parent's end marker.\n\t\tif ((effect.f & EFFECT_RAN) === 0 || effect.nodes_end === null) {\n\t\t\teffect.nodes_end = hydrate_node;\n\t\t}\n\t\thydrate_next();\n\t\treturn;\n\t}\n\n\tif (anchor === null) {\n\t\t// edge case — void `<svelte:element>` with content\n\t\treturn;\n\t}\n\n\tanchor.before(/** @type {Node} */ (dom));\n}\n\n/**\n * Create (or hydrate) an unique UID for the component instance.\n */\nexport function props_id() {\n\tif (\n\t\thydrating &&\n\t\thydrate_node &&\n\t\thydrate_node.nodeType === COMMENT_NODE &&\n\t\thydrate_node.textContent?.startsWith(`$`)\n\t) {\n\t\tconst id = hydrate_node.textContent.substring(1);\n\t\thydrate_next();\n\t\treturn id;\n\t}\n\n\t// @ts-expect-error This way we ensure the id is unique even across Svelte runtimes\n\t(window.__svelte ??= {}).uid ??= 1;\n\n\t// @ts-expect-error\n\treturn `c${window.__svelte.uid++}`;\n}\n","const regex_return_characters = /\\r/g;\n\n/**\n * @param {string} str\n * @returns {string}\n */\nexport function hash(str) {\n\tstr = str.replace(regex_return_characters, '');\n\tlet hash = 5381;\n\tlet i = str.length;\n\n\twhile (i--) hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n\treturn (hash >>> 0).toString(36);\n}\n\nconst VOID_ELEMENT_NAMES = [\n\t'area',\n\t'base',\n\t'br',\n\t'col',\n\t'command',\n\t'embed',\n\t'hr',\n\t'img',\n\t'input',\n\t'keygen',\n\t'link',\n\t'meta',\n\t'param',\n\t'source',\n\t'track',\n\t'wbr'\n];\n\n/**\n * Returns `true` if `name` is of a void element\n * @param {string} name\n */\nexport function is_void(name) {\n\treturn VOID_ELEMENT_NAMES.includes(name) || name.toLowerCase() === '!doctype';\n}\n\nconst RESERVED_WORDS = [\n\t'arguments',\n\t'await',\n\t'break',\n\t'case',\n\t'catch',\n\t'class',\n\t'const',\n\t'continue',\n\t'debugger',\n\t'default',\n\t'delete',\n\t'do',\n\t'else',\n\t'enum',\n\t'eval',\n\t'export',\n\t'extends',\n\t'false',\n\t'finally',\n\t'for',\n\t'function',\n\t'if',\n\t'implements',\n\t'import',\n\t'in',\n\t'instanceof',\n\t'interface',\n\t'let',\n\t'new',\n\t'null',\n\t'package',\n\t'private',\n\t'protected',\n\t'public',\n\t'return',\n\t'static',\n\t'super',\n\t'switch',\n\t'this',\n\t'throw',\n\t'true',\n\t'try',\n\t'typeof',\n\t'var',\n\t'void',\n\t'while',\n\t'with',\n\t'yield'\n];\n\n/**\n * Returns `true` if `word` is a reserved JavaScript keyword\n * @param {string} word\n */\nexport function is_reserved(word) {\n\treturn RESERVED_WORDS.includes(word);\n}\n\n/**\n * @param {string} name\n */\nexport function is_capture_event(name) {\n\treturn name.endsWith('capture') && name !== 'gotpointercapture' && name !== 'lostpointercapture';\n}\n\n/** List of Element events that will be delegated */\nconst DELEGATED_EVENTS = [\n\t'beforeinput',\n\t'click',\n\t'change',\n\t'dblclick',\n\t'contextmenu',\n\t'focusin',\n\t'focusout',\n\t'input',\n\t'keydown',\n\t'keyup',\n\t'mousedown',\n\t'mousemove',\n\t'mouseout',\n\t'mouseover',\n\t'mouseup',\n\t'pointerdown',\n\t'pointermove',\n\t'pointerout',\n\t'pointerover',\n\t'pointerup',\n\t'touchend',\n\t'touchmove',\n\t'touchstart'\n];\n\n/**\n * Returns `true` if `event_name` is a delegated event\n * @param {string} event_name\n */\nexport function can_delegate_event(event_name) {\n\treturn DELEGATED_EVENTS.includes(event_name);\n}\n\n/**\n * Attributes that are boolean, i.e. they are present or not present.\n */\nconst DOM_BOOLEAN_ATTRIBUTES = [\n\t'allowfullscreen',\n\t'async',\n\t'autofocus',\n\t'autoplay',\n\t'checked',\n\t'controls',\n\t'default',\n\t'disabled',\n\t'formnovalidate',\n\t'indeterminate',\n\t'inert',\n\t'ismap',\n\t'loop',\n\t'multiple',\n\t'muted',\n\t'nomodule',\n\t'novalidate',\n\t'open',\n\t'playsinline',\n\t'readonly',\n\t'required',\n\t'reversed',\n\t'seamless',\n\t'selected',\n\t'webkitdirectory',\n\t'defer',\n\t'disablepictureinpicture',\n\t'disableremoteplayback'\n];\n\n/**\n * Returns `true` if `name` is a boolean attribute\n * @param {string} name\n */\nexport function is_boolean_attribute(name) {\n\treturn DOM_BOOLEAN_ATTRIBUTES.includes(name);\n}\n\n/**\n * @type {Record<string, string>}\n * List of attribute names that should be aliased to their property names\n * because they behave differently between setting them as an attribute and\n * setting them as a property.\n */\nconst ATTRIBUTE_ALIASES = {\n\t// no `class: 'className'` because we handle that separately\n\tformnovalidate: 'formNoValidate',\n\tismap: 'isMap',\n\tnomodule: 'noModule',\n\tplaysinline: 'playsInline',\n\treadonly: 'readOnly',\n\tdefaultvalue: 'defaultValue',\n\tdefaultchecked: 'defaultChecked',\n\tsrcobject: 'srcObject',\n\tnovalidate: 'noValidate',\n\tallowfullscreen: 'allowFullscreen',\n\tdisablepictureinpicture: 'disablePictureInPicture',\n\tdisableremoteplayback: 'disableRemotePlayback'\n};\n\n/**\n * @param {string} name\n */\nexport function normalize_attribute(name) {\n\tname = name.toLowerCase();\n\treturn ATTRIBUTE_ALIASES[name] ?? name;\n}\n\nconst DOM_PROPERTIES = [\n\t...DOM_BOOLEAN_ATTRIBUTES,\n\t'formNoValidate',\n\t'isMap',\n\t'noModule',\n\t'playsInline',\n\t'readOnly',\n\t'value',\n\t'volume',\n\t'defaultValue',\n\t'defaultChecked',\n\t'srcObject',\n\t'noValidate',\n\t'allowFullscreen',\n\t'disablePictureInPicture',\n\t'disableRemotePlayback'\n];\n\n/**\n * @param {string} name\n */\nexport function is_dom_property(name) {\n\treturn DOM_PROPERTIES.includes(name);\n}\n\nconst NON_STATIC_PROPERTIES = ['autofocus', 'muted', 'defaultValue', 'defaultChecked'];\n\n/**\n * Returns `true` if the given attribute cannot be set through the template\n * string, i.e. needs some kind of JavaScript handling to work.\n * @param {string} name\n */\nexport function cannot_be_set_statically(name) {\n\treturn NON_STATIC_PROPERTIES.includes(name);\n}\n\n/**\n * Subset of delegated events which should be passive by default.\n * These two are already passive via browser defaults on window, document and body.\n * But since\n * - we're delegating them\n * - they happen often\n * - they apply to mobile which is generally less performant\n * we're marking them as passive by default for other elements, too.\n */\nconst PASSIVE_EVENTS = ['touchstart', 'touchmove'];\n\n/**\n * Returns `true` if `name` is a passive event\n * @param {string} name\n */\nexport function is_passive_event(name) {\n\treturn PASSIVE_EVENTS.includes(name);\n}\n\nconst CONTENT_EDITABLE_BINDINGS = ['textContent', 'innerHTML', 'innerText'];\n\n/** @param {string} name */\nexport function is_content_editable_binding(name) {\n\treturn CONTENT_EDITABLE_BINDINGS.includes(name);\n}\n\nconst LOAD_ERROR_ELEMENTS = [\n\t'body',\n\t'embed',\n\t'iframe',\n\t'img',\n\t'link',\n\t'object',\n\t'script',\n\t'style',\n\t'track'\n];\n\n/**\n * Returns `true` if the element emits `load` and `error` events\n * @param {string} name\n */\nexport function is_load_error_element(name) {\n\treturn LOAD_ERROR_ELEMENTS.includes(name);\n}\n\nconst SVG_ELEMENTS = [\n\t'altGlyph',\n\t'altGlyphDef',\n\t'altGlyphItem',\n\t'animate',\n\t'animateColor',\n\t'animateMotion',\n\t'animateTransform',\n\t'circle',\n\t'clipPath',\n\t'color-profile',\n\t'cursor',\n\t'defs',\n\t'desc',\n\t'discard',\n\t'ellipse',\n\t'feBlend',\n\t'feColorMatrix',\n\t'feComponentTransfer',\n\t'feComposite',\n\t'feConvolveMatrix',\n\t'feDiffuseLighting',\n\t'feDisplacementMap',\n\t'feDistantLight',\n\t'feDropShadow',\n\t'feFlood',\n\t'feFuncA',\n\t'feFuncB',\n\t'feFuncG',\n\t'feFuncR',\n\t'feGaussianBlur',\n\t'feImage',\n\t'feMerge',\n\t'feMergeNode',\n\t'feMorphology',\n\t'feOffset',\n\t'fePointLight',\n\t'feSpecularLighting',\n\t'feSpotLight',\n\t'feTile',\n\t'feTurbulence',\n\t'filter',\n\t'font',\n\t'font-face',\n\t'font-face-format',\n\t'font-face-name',\n\t'font-face-src',\n\t'font-face-uri',\n\t'foreignObject',\n\t'g',\n\t'glyph',\n\t'glyphRef',\n\t'hatch',\n\t'hatchpath',\n\t'hkern',\n\t'image',\n\t'line',\n\t'linearGradient',\n\t'marker',\n\t'mask',\n\t'mesh',\n\t'meshgradient',\n\t'meshpatch',\n\t'meshrow',\n\t'metadata',\n\t'missing-glyph',\n\t'mpath',\n\t'path',\n\t'pattern',\n\t'polygon',\n\t'polyline',\n\t'radialGradient',\n\t'rect',\n\t'set',\n\t'solidcolor',\n\t'stop',\n\t'svg',\n\t'switch',\n\t'symbol',\n\t'text',\n\t'textPath',\n\t'tref',\n\t'tspan',\n\t'unknown',\n\t'use',\n\t'view',\n\t'vkern'\n];\n\n/** @param {string} name */\nexport function is_svg(name) {\n\treturn SVG_ELEMENTS.includes(name);\n}\n\nconst MATHML_ELEMENTS = [\n\t'annotation',\n\t'annotation-xml',\n\t'maction',\n\t'math',\n\t'merror',\n\t'mfrac',\n\t'mi',\n\t'mmultiscripts',\n\t'mn',\n\t'mo',\n\t'mover',\n\t'mpadded',\n\t'mphantom',\n\t'mprescripts',\n\t'mroot',\n\t'mrow',\n\t'ms',\n\t'mspace',\n\t'msqrt',\n\t'mstyle',\n\t'msub',\n\t'msubsup',\n\t'msup',\n\t'mtable',\n\t'mtd',\n\t'mtext',\n\t'mtr',\n\t'munder',\n\t'munderover',\n\t'semantics'\n];\n\n/** @param {string} name */\nexport function is_mathml(name) {\n\treturn MATHML_ELEMENTS.includes(name);\n}\n\nconst STATE_CREATION_RUNES = /** @type {const} */ ([\n\t'$state',\n\t'$state.raw',\n\t'$derived',\n\t'$derived.by'\n]);\n\nconst RUNES = /** @type {const} */ ([\n\t...STATE_CREATION_RUNES,\n\t'$state.eager',\n\t'$state.snapshot',\n\t'$props',\n\t'$props.id',\n\t'$bindable',\n\t'$effect',\n\t'$effect.pre',\n\t'$effect.tracking',\n\t'$effect.root',\n\t'$effect.pending',\n\t'$inspect',\n\t'$inspect().with',\n\t'$inspect.trace',\n\t'$host'\n]);\n\n/** @typedef {typeof RUNES[number]} RuneName */\n\n/**\n * @param {string} name\n * @returns {name is RuneName}\n */\nexport function is_rune(name) {\n\treturn RUNES.includes(/** @type {RuneName} */ (name));\n}\n\n/** @typedef {typeof STATE_CREATION_RUNES[number]} StateCreationRuneName */\n\n/**\n * @param {string} name\n * @returns {name is StateCreationRuneName}\n */\nexport function is_state_creation_rune(name) {\n\treturn STATE_CREATION_RUNES.includes(/** @type {StateCreationRuneName} */ (name));\n}\n\n/** List of elements that require raw contents and should not have SSR comments put in them */\nconst RAW_TEXT_ELEMENTS = /** @type {const} */ (['textarea', 'script', 'style', 'title']);\n\n/** @param {string} name */\nexport function is_raw_text_element(name) {\n\treturn RAW_TEXT_ELEMENTS.includes(/** @type {typeof RAW_TEXT_ELEMENTS[number]} */ (name));\n}\n\n/**\n * Prevent devtools trying to make `location` a clickable link by inserting a zero-width space\n * @template {string | undefined} T\n * @param {T} location\n * @returns {T};\n */\nexport function sanitize_location(location) {\n\treturn /** @type {T} */ (location?.replace(/\\//g, '/\\u200b'));\n}\n","/** @import { ComponentContext, Effect, TemplateNode } from '#client' */\n/** @import { Component, ComponentType, SvelteComponent, MountOptions } from '../../index.js' */\nimport { DEV } from 'esm-env';\nimport {\n\tclear_text_content,\n\tcreate_text,\n\tget_first_child,\n\tget_next_sibling,\n\tinit_operations\n} from './dom/operations.js';\nimport { HYDRATION_END, HYDRATION_ERROR, HYDRATION_START } from '../../constants.js';\nimport { active_effect } from './runtime.js';\nimport { push, pop, component_context } from './context.js';\nimport { component_root } from './reactivity/effects.js';\nimport { hydrate_node, hydrating, set_hydrate_node, set_hydrating } from './dom/hydration.js';\nimport { array_from } from '../shared/utils.js';\nimport {\n\tall_registered_events,\n\thandle_event_propagation,\n\troot_event_handles\n} from './dom/elements/events.js';\nimport * as w from './warnings.js';\nimport * as e from './errors.js';\nimport { assign_nodes } from './dom/template.js';\nimport { is_passive_event } from '../../utils.js';\nimport { COMMENT_NODE, STATE_SYMBOL } from './constants.js';\nimport { boundary } from './dom/blocks/boundary.js';\n\n/**\n * This is normally true — block effects should run their intro transitions —\n * but is false during hydration (unless `options.intro` is `true`) and\n * when creating the children of a `<svelte:element>` that just changed tag\n */\nexport let should_intro = true;\n\n/** @param {boolean} value */\nexport function set_should_intro(value) {\n\tshould_intro = value;\n}\n\n/**\n * @param {Element} text\n * @param {string} value\n * @returns {void}\n */\nexport function set_text(text, value) {\n\t// For objects, we apply string coercion (which might make things like $state array references in the template reactive) before diffing\n\tvar str = value == null ? '' : typeof value === 'object' ? value + '' : value;\n\t// @ts-expect-error\n\tif (str !== (text.__t ??= text.nodeValue)) {\n\t\t// @ts-expect-error\n\t\ttext.__t = str;\n\t\ttext.nodeValue = str + '';\n\t}\n}\n\n/**\n * Mounts a component to the given target and returns the exports and potentially the props (if compiled with `accessors: true`) of the component.\n * Transitions will play during the initial render unless the `intro` option is set to `false`.\n *\n * @template {Record<string, any>} Props\n * @template {Record<string, any>} Exports\n * @param {ComponentType<SvelteComponent<Props>> | Component<Props, Exports, any>} component\n * @param {MountOptions<Props>} options\n * @returns {Exports}\n */\nexport function mount(component, options) {\n\treturn _mount(component, options);\n}\n\n/**\n * Hydrates a component on the given target and returns the exports and potentially the props (if compiled with `accessors: true`) of the component\n *\n * @template {Record<string, any>} Props\n * @template {Record<string, any>} Exports\n * @param {ComponentType<SvelteComponent<Props>> | Component<Props, Exports, any>} component\n * @param {{} extends Props ? {\n * \t\ttarget: Document | Element | ShadowRoot;\n * \t\tprops?: Props;\n * \t\tevents?: Record<string, (e: any) => any>;\n * \tcontext?: Map<any, any>;\n * \t\tintro?: boolean;\n * \t\trecover?: boolean;\n * \t} : {\n * \t\ttarget: Document | Element | ShadowRoot;\n * \t\tprops: Props;\n * \t\tevents?: Record<string, (e: any) => any>;\n * \tcontext?: Map<any, any>;\n * \t\tintro?: boolean;\n * \t\trecover?: boolean;\n * \t}} options\n * @returns {Exports}\n */\nexport function hydrate(component, options) {\n\tinit_operations();\n\toptions.intro = options.intro ?? false;\n\tconst target = options.target;\n\tconst was_hydrating = hydrating;\n\tconst previous_hydrate_node = hydrate_node;\n\n\ttry {\n\t\tvar anchor = /** @type {TemplateNode} */ (get_first_child(target));\n\t\twhile (\n\t\t\tanchor &&\n\t\t\t(anchor.nodeType !== COMMENT_NODE || /** @type {Comment} */ (anchor).data !== HYDRATION_START)\n\t\t) {\n\t\t\tanchor = /** @type {TemplateNode} */ (get_next_sibling(anchor));\n\t\t}\n\n\t\tif (!anchor) {\n\t\t\tthrow HYDRATION_ERROR;\n\t\t}\n\n\t\tset_hydrating(true);\n\t\tset_hydrate_node(/** @type {Comment} */ (anchor));\n\n\t\tconst instance = _mount(component, { ...options, anchor });\n\n\t\tset_hydrating(false);\n\n\t\treturn /** @type {Exports} */ (instance);\n\t} catch (error) {\n\t\t// re-throw Svelte errors - they are certainly not related to hydration\n\t\tif (\n\t\t\terror instanceof Error &&\n\t\t\terror.message.split('\\n').some((line) => line.startsWith('https://svelte.dev/e/'))\n\t\t) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error !== HYDRATION_ERROR) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn('Failed to hydrate: ', error);\n\t\t}\n\n\t\tif (options.recover === false) {\n\t\t\te.hydration_failed();\n\t\t}\n\n\t\t// If an error occurred above, the operations might not yet have been initialised.\n\t\tinit_operations();\n\t\tclear_text_content(target);\n\n\t\tset_hydrating(false);\n\t\treturn mount(component, options);\n\t} finally {\n\t\tset_hydrating(was_hydrating);\n\t\tset_hydrate_node(previous_hydrate_node);\n\t}\n}\n\n/** @type {Map<string, number>} */\nconst document_listeners = new Map();\n\n/**\n * @template {Record<string, any>} Exports\n * @param {ComponentType<SvelteComponent<any>> | Component<any>} Component\n * @param {MountOptions} options\n * @returns {Exports}\n */\nfunction _mount(Component, { target, anchor, props = {}, events, context, intro = true }) {\n\tinit_operations();\n\n\t/** @type {Set<string>} */\n\tvar registered_events = new Set();\n\n\t/** @param {Array<string>} events */\n\tvar event_handle = (events) => {\n\t\tfor (var i = 0; i < events.length; i++) {\n\t\t\tvar event_name = events[i];\n\n\t\t\tif (registered_events.has(event_name)) continue;\n\t\t\tregistered_events.add(event_name);\n\n\t\t\tvar passive = is_passive_event(event_name);\n\n\t\t\t// Add the event listener to both the container and the document.\n\t\t\t// The container listener ensures we catch events from within in case\n\t\t\t// the outer content stops propagation of the event.\n\t\t\ttarget.addEventListener(event_name, handle_event_propagation, { passive });\n\n\t\t\tvar n = document_listeners.get(event_name);\n\n\t\t\tif (n === undefined) {\n\t\t\t\t// The document listener ensures we catch events that originate from elements that were\n\t\t\t\t// manually moved outside of the container (e.g. via manual portals).\n\t\t\t\tdocument.addEventListener(event_name, handle_event_propagation, { passive });\n\t\t\t\tdocument_listeners.set(event_name, 1);\n\t\t\t} else {\n\t\t\t\tdocument_listeners.set(event_name, n + 1);\n\t\t\t}\n\t\t}\n\t};\n\n\tevent_handle(array_from(all_registered_events));\n\troot_event_handles.add(event_handle);\n\n\t/** @type {Exports} */\n\t// @ts-expect-error will be defined because the render effect runs synchronously\n\tvar component = undefined;\n\n\tvar unmount = component_root(() => {\n\t\tvar anchor_node = anchor ?? target.appendChild(create_text());\n\n\t\tboundary(\n\t\t\t/** @type {TemplateNode} */ (anchor_node),\n\t\t\t{\n\t\t\t\tpending: () => {}\n\t\t\t},\n\t\t\t(anchor_node) => {\n\t\t\t\tif (context) {\n\t\t\t\t\tpush({});\n\t\t\t\t\tvar ctx = /** @type {ComponentContext} */ (component_context);\n\t\t\t\t\tctx.c = context;\n\t\t\t\t}\n\n\t\t\t\tif (events) {\n\t\t\t\t\t// We can't spread the object or else we'd lose the state proxy stuff, if it is one\n\t\t\t\t\t/** @type {any} */ (props).$$events = events;\n\t\t\t\t}\n\n\t\t\t\tif (hydrating) {\n\t\t\t\t\tassign_nodes(/** @type {TemplateNode} */ (anchor_node), null);\n\t\t\t\t}\n\n\t\t\t\tshould_intro = intro;\n\t\t\t\t// @ts-expect-error the public typings are not what the actual function looks like\n\t\t\t\tcomponent = Component(anchor_node, props) || {};\n\t\t\t\tshould_intro = true;\n\n\t\t\t\tif (hydrating) {\n\t\t\t\t\t/** @type {Effect} */ (active_effect).nodes_end = hydrate_node;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\thydrate_node === null ||\n\t\t\t\t\t\thydrate_node.nodeType !== COMMENT_NODE ||\n\t\t\t\t\t\t/** @type {Comment} */ (hydrate_node).data !== HYDRATION_END\n\t\t\t\t\t) {\n\t\t\t\t\t\tw.hydration_mismatch();\n\t\t\t\t\t\tthrow HYDRATION_ERROR;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (context) {\n\t\t\t\t\tpop();\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\treturn () => {\n\t\t\tfor (var event_name of registered_events) {\n\t\t\t\ttarget.removeEventListener(event_name, handle_event_propagation);\n\n\t\t\t\tvar n = /** @type {number} */ (document_listeners.get(event_name));\n\n\t\t\t\tif (--n === 0) {\n\t\t\t\t\tdocument.removeEventListener(event_name, handle_event_propagation);\n\t\t\t\t\tdocument_listeners.delete(event_name);\n\t\t\t\t} else {\n\t\t\t\t\tdocument_listeners.set(event_name, n);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\troot_event_handles.delete(event_handle);\n\n\t\t\tif (anchor_node !== anchor) {\n\t\t\t\tanchor_node.parentNode?.removeChild(anchor_node);\n\t\t\t}\n\t\t};\n\t});\n\n\tmounted_components.set(component, unmount);\n\treturn component;\n}\n\n/**\n * References of the components that were mounted or hydrated.\n * Uses a `WeakMap` to avoid memory leaks.\n */\nlet mounted_components = new WeakMap();\n\n/**\n * Unmounts a component that was previously mounted using `mount` or `hydrate`.\n *\n * Since 5.13.0, if `options.outro` is `true`, [transitions](https://svelte.dev/docs/svelte/transition) will play before the component is removed from the DOM.\n *\n * Returns a `Promise` that resolves after transitions have completed if `options.outro` is true, or immediately otherwise (prior to 5.13.0, returns `void`).\n *\n * ```js\n * import { mount, unmount } from 'svelte';\n * import App from './App.svelte';\n *\n * const app = mount(App, { target: document.body });\n *\n * // later...\n * unmount(app, { outro: true });\n * ```\n * @param {Record<string, any>} component\n * @param {{ outro?: boolean }} [options]\n * @returns {Promise<void>}\n */\nexport function unmount(component, options) {\n\tconst fn = mounted_components.get(component);\n\n\tif (fn) {\n\t\tmounted_components.delete(component);\n\t\treturn fn(options);\n\t}\n\n\tif (DEV) {\n\t\tif (STATE_SYMBOL in component) {\n\t\t\tw.state_proxy_unmount();\n\t\t} else {\n\t\t\tw.lifecycle_double_unmount();\n\t\t}\n\t}\n\n\treturn Promise.resolve();\n}\n","/** @import { Effect, TemplateNode } from '#client' */\nimport { Batch, current_batch } from '../../reactivity/batch.js';\nimport {\n\tbranch,\n\tdestroy_effect,\n\tmove_effect,\n\tpause_effect,\n\tresume_effect\n} from '../../reactivity/effects.js';\nimport { hydrate_node, hydrating } from '../hydration.js';\nimport { create_text, should_defer_append } from '../operations.js';\n\n/**\n * @typedef {{ effect: Effect, fragment: DocumentFragment }} Branch\n */\n\n/**\n * @template Key\n */\nexport class BranchManager {\n\t/** @type {TemplateNode} */\n\tanchor;\n\n\t/** @type {Map<Batch, Key>} */\n\t#batches = new Map();\n\n\t/**\n\t * Map of keys to effects that are currently rendered in the DOM.\n\t * These effects are visible and actively part of the document tree.\n\t * Example:\n\t * ```\n\t * {#if condition}\n\t * \tfoo\n\t * {:else}\n\t * \tbar\n\t * {/if}\n\t * ```\n\t * Can result in the entries `true->Effect` and `false->Effect`\n\t * @type {Map<Key, Effect>}\n\t */\n\t#onscreen = new Map();\n\n\t/**\n\t * Similar to #onscreen with respect to the keys, but contains branches that are not yet\n\t * in the DOM, because their insertion is deferred.\n\t * @type {Map<Key, Branch>}\n\t */\n\t#offscreen = new Map();\n\n\t/**\n\t * Keys of effects that are currently outroing\n\t * @type {Set<Key>}\n\t */\n\t#outroing = new Set();\n\n\t/**\n\t * Whether to pause (i.e. outro) on change, or destroy immediately.\n\t * This is necessary for `<svelte:element>`\n\t */\n\t#transition = true;\n\n\t/**\n\t * @param {TemplateNode} anchor\n\t * @param {boolean} transition\n\t */\n\tconstructor(anchor, transition = true) {\n\t\tthis.anchor = anchor;\n\t\tthis.#transition = transition;\n\t}\n\n\t#commit = () => {\n\t\tvar batch = /** @type {Batch} */ (current_batch);\n\n\t\t// if this batch was made obsolete, bail\n\t\tif (!this.#batches.has(batch)) return;\n\n\t\tvar key = /** @type {Key} */ (this.#batches.get(batch));\n\n\t\tvar onscreen = this.#onscreen.get(key);\n\n\t\tif (onscreen) {\n\t\t\t// effect is already in the DOM — abort any current outro\n\t\t\tresume_effect(onscreen);\n\t\t\tthis.#outroing.delete(key);\n\t\t} else {\n\t\t\t// effect is currently offscreen. put it in the DOM\n\t\t\tvar offscreen = this.#offscreen.get(key);\n\n\t\t\tif (offscreen) {\n\t\t\t\tthis.#onscreen.set(key, offscreen.effect);\n\t\t\t\tthis.#offscreen.delete(key);\n\n\t\t\t\t// remove the anchor...\n\t\t\t\t/** @type {TemplateNode} */ (offscreen.fragment.lastChild).remove();\n\n\t\t\t\t// ...and append the fragment\n\t\t\t\tthis.anchor.before(offscreen.fragment);\n\t\t\t\tonscreen = offscreen.effect;\n\t\t\t}\n\t\t}\n\n\t\tfor (const [b, k] of this.#batches) {\n\t\t\tthis.#batches.delete(b);\n\n\t\t\tif (b === batch) {\n\t\t\t\t// keep values for newer batches\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst offscreen = this.#offscreen.get(k);\n\n\t\t\tif (offscreen) {\n\t\t\t\t// for older batches, destroy offscreen effects\n\t\t\t\t// as they will never be committed\n\t\t\t\tdestroy_effect(offscreen.effect);\n\t\t\t\tthis.#offscreen.delete(k);\n\t\t\t}\n\t\t}\n\n\t\t// outro/destroy all onscreen effects...\n\t\tfor (const [k, effect] of this.#onscreen) {\n\t\t\t// ...except the one that was just committed\n\t\t\t// or those that are already outroing (else the transition is aborted and the effect destroyed right away)\n\t\t\tif (k === key || this.#outroing.has(k)) continue;\n\n\t\t\tconst on_destroy = () => {\n\t\t\t\tconst keys = Array.from(this.#batches.values());\n\n\t\t\t\tif (keys.includes(k)) {\n\t\t\t\t\t// keep the effect offscreen, as another batch will need it\n\t\t\t\t\tvar fragment = document.createDocumentFragment();\n\t\t\t\t\tmove_effect(effect, fragment);\n\n\t\t\t\t\tfragment.append(create_text()); // TODO can we avoid this?\n\n\t\t\t\t\tthis.#offscreen.set(k, { effect, fragment });\n\t\t\t\t} else {\n\t\t\t\t\tdestroy_effect(effect);\n\t\t\t\t}\n\n\t\t\t\tthis.#outroing.delete(k);\n\t\t\t\tthis.#onscreen.delete(k);\n\t\t\t};\n\n\t\t\tif (this.#transition || !onscreen) {\n\t\t\t\tthis.#outroing.add(k);\n\t\t\t\tpause_effect(effect, on_destroy, false);\n\t\t\t} else {\n\t\t\t\ton_destroy();\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * @param {Batch} batch\n\t */\n\t#discard = (batch) => {\n\t\tthis.#batches.delete(batch);\n\n\t\tconst keys = Array.from(this.#batches.values());\n\n\t\tfor (const [k, branch] of this.#offscreen) {\n\t\t\tif (!keys.includes(k)) {\n\t\t\t\tdestroy_effect(branch.effect);\n\t\t\t\tthis.#offscreen.delete(k);\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t *\n\t * @param {any} key\n\t * @param {null | ((target: TemplateNode) => void)} fn\n\t */\n\tensure(key, fn) {\n\t\tvar batch = /** @type {Batch} */ (current_batch);\n\t\tvar defer = should_defer_append();\n\n\t\tif (fn && !this.#onscreen.has(key) && !this.#offscreen.has(key)) {\n\t\t\tif (defer) {\n\t\t\t\tvar fragment = document.createDocumentFragment();\n\t\t\t\tvar target = create_text();\n\n\t\t\t\tfragment.append(target);\n\n\t\t\t\tthis.#offscreen.set(key, {\n\t\t\t\t\teffect: branch(() => fn(target)),\n\t\t\t\t\tfragment\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.#onscreen.set(\n\t\t\t\t\tkey,\n\t\t\t\t\tbranch(() => fn(this.anchor))\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tthis.#batches.set(batch, key);\n\n\t\tif (defer) {\n\t\t\tfor (const [k, effect] of this.#onscreen) {\n\t\t\t\tif (k === key) {\n\t\t\t\t\tbatch.skipped_effects.delete(effect);\n\t\t\t\t} else {\n\t\t\t\t\tbatch.skipped_effects.add(effect);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (const [k, branch] of this.#offscreen) {\n\t\t\t\tif (k === key) {\n\t\t\t\t\tbatch.skipped_effects.delete(branch.effect);\n\t\t\t\t} else {\n\t\t\t\t\tbatch.skipped_effects.add(branch.effect);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbatch.oncommit(this.#commit);\n\t\t\tbatch.ondiscard(this.#discard);\n\t\t} else {\n\t\t\tif (hydrating) {\n\t\t\t\tthis.anchor = hydrate_node;\n\t\t\t}\n\n\t\t\tthis.#commit();\n\t\t}\n\t}\n}\n","/** @import { Snippet } from 'svelte' */\n/** @import { TemplateNode } from '#client' */\n/** @import { Getters } from '#shared' */\nimport { EFFECT_TRANSPARENT, ELEMENT_NODE } from '#client/constants';\nimport { block, teardown } from '../../reactivity/effects.js';\nimport {\n\tdev_current_component_function,\n\tset_dev_current_component_function\n} from '../../context.js';\nimport { hydrate_next, hydrate_node, hydrating } from '../hydration.js';\nimport { create_fragment_from_html } from '../reconciler.js';\nimport { assign_nodes } from '../template.js';\nimport * as w from '../../warnings.js';\nimport * as e from '../../errors.js';\nimport { DEV } from 'esm-env';\nimport { get_first_child, get_next_sibling } from '../operations.js';\nimport { prevent_snippet_stringification } from '../../../shared/validate.js';\nimport { BranchManager } from './branches.js';\n\n/**\n * @template {(node: TemplateNode, ...args: any[]) => void} SnippetFn\n * @param {TemplateNode} node\n * @param {() => SnippetFn | null | undefined} get_snippet\n * @param {(() => any)[]} args\n * @returns {void}\n */\nexport function snippet(node, get_snippet, ...args) {\n\tvar branches = new BranchManager(node);\n\n\tblock(() => {\n\t\tconst snippet = get_snippet() ?? null;\n\n\t\tif (DEV && snippet == null) {\n\t\t\te.invalid_snippet();\n\t\t}\n\n\t\tbranches.ensure(snippet, snippet && ((anchor) => snippet(anchor, ...args)));\n\t}, EFFECT_TRANSPARENT);\n}\n\n/**\n * In development, wrap the snippet function so that it passes validation, and so that the\n * correct component context is set for ownership checks\n * @param {any} component\n * @param {(node: TemplateNode, ...args: any[]) => void} fn\n */\nexport function wrap_snippet(component, fn) {\n\tconst snippet = (/** @type {TemplateNode} */ node, /** @type {any[]} */ ...args) => {\n\t\tvar previous_component_function = dev_current_component_function;\n\t\tset_dev_current_component_function(component);\n\n\t\ttry {\n\t\t\treturn fn(node, ...args);\n\t\t} finally {\n\t\t\tset_dev_current_component_function(previous_component_function);\n\t\t}\n\t};\n\n\tprevent_snippet_stringification(snippet);\n\n\treturn snippet;\n}\n\n/**\n * Create a snippet programmatically\n * @template {unknown[]} Params\n * @param {(...params: Getters<Params>) => {\n * render: () => string\n * setup?: (element: Element) => void | (() => void)\n * }} fn\n * @returns {Snippet<Params>}\n */\nexport function createRawSnippet(fn) {\n\t// @ts-expect-error the types are a lie\n\treturn (/** @type {TemplateNode} */ anchor, /** @type {Getters<Params>} */ ...params) => {\n\t\tvar snippet = fn(...params);\n\n\t\t/** @type {Element} */\n\t\tvar element;\n\n\t\tif (hydrating) {\n\t\t\telement = /** @type {Element} */ (hydrate_node);\n\t\t\thydrate_next();\n\t\t} else {\n\t\t\tvar html = snippet.render().trim();\n\t\t\tvar fragment = create_fragment_from_html(html);\n\t\t\telement = /** @type {Element} */ (get_first_child(fragment));\n\n\t\t\tif (DEV && (get_next_sibling(element) !== null || element.nodeType !== ELEMENT_NODE)) {\n\t\t\t\tw.invalid_raw_snippet_render();\n\t\t\t}\n\n\t\t\tanchor.before(element);\n\t\t}\n\n\t\tconst result = snippet.setup?.(element);\n\t\tassign_nodes(element, element);\n\n\t\tif (typeof result === 'function') {\n\t\t\tteardown(result);\n\t\t}\n\t};\n}\n","/** @import { TemplateNode } from '#client' */\nimport { EFFECT_TRANSPARENT } from '#client/constants';\nimport {\n\thydrate_next,\n\thydrating,\n\tread_hydration_instruction,\n\tskip_nodes,\n\tset_hydrate_node,\n\tset_hydrating\n} from '../hydration.js';\nimport { block } from '../../reactivity/effects.js';\nimport { HYDRATION_START_ELSE } from '../../../../constants.js';\nimport { BranchManager } from './branches.js';\n\n// TODO reinstate https://github.com/sveltejs/svelte/pull/15250\n\n/**\n * @param {TemplateNode} node\n * @param {(branch: (fn: (anchor: Node) => void, flag?: boolean) => void) => void} fn\n * @param {boolean} [elseif] True if this is an `{:else if ...}` block rather than an `{#if ...}`, as that affects which transitions are considered 'local'\n * @returns {void}\n */\nexport function if_block(node, fn, elseif = false) {\n\tif (hydrating) {\n\t\thydrate_next();\n\t}\n\n\tvar branches = new BranchManager(node);\n\tvar flags = elseif ? EFFECT_TRANSPARENT : 0;\n\n\t/**\n\t * @param {boolean} condition,\n\t * @param {null | ((anchor: Node) => void)} fn\n\t */\n\tfunction update_branch(condition, fn) {\n\t\tif (hydrating) {\n\t\t\tconst is_else = read_hydration_instruction(node) === HYDRATION_START_ELSE;\n\n\t\t\tif (condition === is_else) {\n\t\t\t\t// Hydration mismatch: remove everything inside the anchor and start fresh.\n\t\t\t\t// This could happen with `{#if browser}...{/if}`, for example\n\t\t\t\tvar anchor = skip_nodes();\n\n\t\t\t\tset_hydrate_node(anchor);\n\t\t\t\tbranches.anchor = anchor;\n\n\t\t\t\tset_hydrating(false);\n\t\t\t\tbranches.ensure(condition, fn);\n\t\t\t\tset_hydrating(true);\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tbranches.ensure(condition, fn);\n\t}\n\n\tblock(() => {\n\t\tvar has_branch = false;\n\n\t\tfn((fn, flag = true) => {\n\t\t\thas_branch = true;\n\t\t\tupdate_branch(flag, fn);\n\t\t});\n\n\t\tif (!has_branch) {\n\t\t\tupdate_branch(false, null);\n\t\t}\n\t}, flags);\n}\n","/** @import { Effect, TemplateNode } from '#client' */\nimport { FILENAME, HYDRATION_ERROR } from '../../../../constants.js';\nimport { remove_effect_dom, template_effect } from '../../reactivity/effects.js';\nimport { hydrate_next, hydrate_node, hydrating, set_hydrate_node } from '../hydration.js';\nimport { create_fragment_from_html } from '../reconciler.js';\nimport { assign_nodes } from '../template.js';\nimport * as w from '../../warnings.js';\nimport { hash, sanitize_location } from '../../../../utils.js';\nimport { DEV } from 'esm-env';\nimport { dev_current_component_function } from '../../context.js';\nimport { get_first_child, get_next_sibling } from '../operations.js';\nimport { active_effect } from '../../runtime.js';\nimport { COMMENT_NODE } from '#client/constants';\n\n/**\n * @param {Element} element\n * @param {string | null} server_hash\n * @param {string} value\n */\nfunction check_hash(element, server_hash, value) {\n\tif (!server_hash || server_hash === hash(String(value ?? ''))) return;\n\n\tlet location;\n\n\t// @ts-expect-error\n\tconst loc = element.__svelte_meta?.loc;\n\tif (loc) {\n\t\tlocation = `near ${loc.file}:${loc.line}:${loc.column}`;\n\t} else if (dev_current_component_function?.[FILENAME]) {\n\t\tlocation = `in ${dev_current_component_function[FILENAME]}`;\n\t}\n\n\tw.hydration_html_changed(sanitize_location(location));\n}\n\n/**\n * @param {Element | Text | Comment} node\n * @param {() => string} get_value\n * @param {boolean} [svg]\n * @param {boolean} [mathml]\n * @param {boolean} [skip_warning]\n * @returns {void}\n */\nexport function html(node, get_value, svg = false, mathml = false, skip_warning = false) {\n\tvar anchor = node;\n\n\tvar value = '';\n\n\ttemplate_effect(() => {\n\t\tvar effect = /** @type {Effect} */ (active_effect);\n\n\t\tif (value === (value = get_value() ?? '')) {\n\t\t\tif (hydrating) hydrate_next();\n\t\t\treturn;\n\t\t}\n\n\t\tif (effect.nodes_start !== null) {\n\t\t\tremove_effect_dom(effect.nodes_start, /** @type {TemplateNode} */ (effect.nodes_end));\n\t\t\teffect.nodes_start = effect.nodes_end = null;\n\t\t}\n\n\t\tif (value === '') return;\n\n\t\tif (hydrating) {\n\t\t\t// We're deliberately not trying to repair mismatches between server and client,\n\t\t\t// as it's costly and error-prone (and it's an edge case to have a mismatch anyway)\n\t\t\tvar hash = /** @type {Comment} */ (hydrate_node).data;\n\t\t\tvar next = hydrate_next();\n\t\t\tvar last = next;\n\n\t\t\twhile (\n\t\t\t\tnext !== null &&\n\t\t\t\t(next.nodeType !== COMMENT_NODE || /** @type {Comment} */ (next).data !== '')\n\t\t\t) {\n\t\t\t\tlast = next;\n\t\t\t\tnext = /** @type {TemplateNode} */ (get_next_sibling(next));\n\t\t\t}\n\n\t\t\tif (next === null) {\n\t\t\t\tw.hydration_mismatch();\n\t\t\t\tthrow HYDRATION_ERROR;\n\t\t\t}\n\n\t\t\tif (DEV && !skip_warning) {\n\t\t\t\tcheck_hash(/** @type {Element} */ (next.parentNode), hash, value);\n\t\t\t}\n\n\t\t\tassign_nodes(hydrate_node, last);\n\t\t\tanchor = set_hydrate_node(next);\n\t\t\treturn;\n\t\t}\n\n\t\tvar html = value + '';\n\t\tif (svg) html = `<svg>${html}</svg>`;\n\t\telse if (mathml) html = `<math>${html}</math>`;\n\n\t\t// Don't use create_fragment_with_script_from_html here because that would mean script tags are executed.\n\t\t// @html is basically `.innerHTML = ...` and that doesn't execute scripts either due to security reasons.\n\t\t/** @type {DocumentFragment | Element} */\n\t\tvar node = create_fragment_from_html(html);\n\n\t\tif (svg || mathml) {\n\t\t\tnode = /** @type {Element} */ (get_first_child(node));\n\t\t}\n\n\t\tassign_nodes(\n\t\t\t/** @type {TemplateNode} */ (get_first_child(node)),\n\t\t\t/** @type {TemplateNode} */ (node.lastChild)\n\t\t);\n\n\t\tif (svg || mathml) {\n\t\t\twhile (get_first_child(node)) {\n\t\t\t\tanchor.before(/** @type {Node} */ (get_first_child(node)));\n\t\t\t}\n\t\t} else {\n\t\t\tanchor.before(node);\n\t\t}\n\t});\n}\n","import { hydrate_next, hydrating } from '../hydration.js';\n\n/**\n * @param {Comment} anchor\n * @param {Record<string, any>} $$props\n * @param {string} name\n * @param {Record<string, unknown>} slot_props\n * @param {null | ((anchor: Comment) => void)} fallback_fn\n */\nexport function slot(anchor, $$props, name, slot_props, fallback_fn) {\n\tif (hydrating) {\n\t\thydrate_next();\n\t}\n\n\tvar slot_fn = $$props.$$slots?.[name];\n\t// Interop: Can use snippets to fill slots\n\tvar is_interop = false;\n\tif (slot_fn === true) {\n\t\tslot_fn = $$props[name === 'default' ? 'children' : name];\n\t\tis_interop = true;\n\t}\n\n\tif (slot_fn === undefined) {\n\t\tif (fallback_fn !== null) {\n\t\t\tfallback_fn(anchor);\n\t\t}\n\t} else {\n\t\tslot_fn(anchor, is_interop ? () => slot_props : slot_props);\n\t}\n}\n\n/**\n * @param {Record<string, any>} props\n * @returns {Record<string, boolean>}\n */\nexport function sanitize_slots(props) {\n\t/** @type {Record<string, boolean>} */\n\tconst sanitized = {};\n\tif (props.children) sanitized.default = true;\n\tfor (const key in props.$$slots) {\n\t\tsanitized[key] = true;\n\t}\n\treturn sanitized;\n}\n","/** @import { Effect, TemplateNode } from '#client' */\nimport { FILENAME, NAMESPACE_SVG } from '../../../../constants.js';\nimport {\n\thydrate_next,\n\thydrate_node,\n\thydrating,\n\tset_hydrate_node,\n\tset_hydrating\n} from '../hydration.js';\nimport { create_text, get_first_child } from '../operations.js';\nimport { block, teardown } from '../../reactivity/effects.js';\nimport { set_should_intro } from '../../render.js';\nimport { current_each_item, set_current_each_item } from './each.js';\nimport { active_effect } from '../../runtime.js';\nimport { component_context, dev_stack } from '../../context.js';\nimport { DEV } from 'esm-env';\nimport { EFFECT_TRANSPARENT, ELEMENT_NODE } from '#client/constants';\nimport { assign_nodes } from '../template.js';\nimport { is_raw_text_element } from '../../../../utils.js';\nimport { BranchManager } from './branches.js';\n\n/**\n * @param {Comment | Element} node\n * @param {() => string} get_tag\n * @param {boolean} is_svg\n * @param {undefined | ((element: Element, anchor: Node | null) => void)} render_fn,\n * @param {undefined | (() => string)} get_namespace\n * @param {undefined | [number, number]} location\n * @returns {void}\n */\nexport function element(node, get_tag, is_svg, render_fn, get_namespace, location) {\n\tlet was_hydrating = hydrating;\n\n\tif (hydrating) {\n\t\thydrate_next();\n\t}\n\n\tvar filename = DEV && location && component_context?.function[FILENAME];\n\n\t/** @type {null | Element} */\n\tvar element = null;\n\n\tif (hydrating && hydrate_node.nodeType === ELEMENT_NODE) {\n\t\telement = /** @type {Element} */ (hydrate_node);\n\t\thydrate_next();\n\t}\n\n\tvar anchor = /** @type {TemplateNode} */ (hydrating ? hydrate_node : node);\n\n\t/**\n\t * The keyed `{#each ...}` item block, if any, that this element is inside.\n\t * We track this so we can set it when changing the element, allowing any\n\t * `animate:` directive to bind itself to the correct block\n\t */\n\tvar each_item_block = current_each_item;\n\n\tvar branches = new BranchManager(anchor, false);\n\n\tblock(() => {\n\t\tconst next_tag = get_tag() || null;\n\t\tvar ns = get_namespace ? get_namespace() : is_svg || next_tag === 'svg' ? NAMESPACE_SVG : null;\n\n\t\tif (next_tag === null) {\n\t\t\tbranches.ensure(null, null);\n\t\t\tset_should_intro(true);\n\t\t\treturn;\n\t\t}\n\n\t\tbranches.ensure(next_tag, (anchor) => {\n\t\t\t// See explanation of `each_item_block` above\n\t\t\tvar previous_each_item = current_each_item;\n\t\t\tset_current_each_item(each_item_block);\n\n\t\t\tif (next_tag) {\n\t\t\t\telement = hydrating\n\t\t\t\t\t? /** @type {Element} */ (element)\n\t\t\t\t\t: ns\n\t\t\t\t\t\t? document.createElementNS(ns, next_tag)\n\t\t\t\t\t\t: document.createElement(next_tag);\n\n\t\t\t\tif (DEV && location) {\n\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\telement.__svelte_meta = {\n\t\t\t\t\t\tparent: dev_stack,\n\t\t\t\t\t\tloc: {\n\t\t\t\t\t\t\tfile: filename,\n\t\t\t\t\t\t\tline: location[0],\n\t\t\t\t\t\t\tcolumn: location[1]\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tassign_nodes(element, element);\n\n\t\t\t\tif (render_fn) {\n\t\t\t\t\tif (hydrating && is_raw_text_element(next_tag)) {\n\t\t\t\t\t\t// prevent hydration glitches\n\t\t\t\t\t\telement.append(document.createComment(''));\n\t\t\t\t\t}\n\n\t\t\t\t\t// If hydrating, use the existing ssr comment as the anchor so that the\n\t\t\t\t\t// inner open and close methods can pick up the existing nodes correctly\n\t\t\t\t\tvar child_anchor = /** @type {TemplateNode} */ (\n\t\t\t\t\t\thydrating ? get_first_child(element) : element.appendChild(create_text())\n\t\t\t\t\t);\n\n\t\t\t\t\tif (hydrating) {\n\t\t\t\t\t\tif (child_anchor === null) {\n\t\t\t\t\t\t\tset_hydrating(false);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tset_hydrate_node(child_anchor);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// `child_anchor` is undefined if this is a void element, but we still\n\t\t\t\t\t// need to call `render_fn` in order to run actions etc. If the element\n\t\t\t\t\t// contains children, it's a user error (which is warned on elsewhere)\n\t\t\t\t\t// and the DOM will be silently discarded\n\t\t\t\t\trender_fn(element, child_anchor);\n\t\t\t\t}\n\n\t\t\t\t// we do this after calling `render_fn` so that child effects don't override `nodes.end`\n\t\t\t\t/** @type {Effect} */ (active_effect).nodes_end = element;\n\n\t\t\t\tanchor.before(element);\n\t\t\t}\n\n\t\t\tset_current_each_item(previous_each_item);\n\n\t\t\tif (hydrating) {\n\t\t\t\tset_hydrate_node(anchor);\n\t\t\t}\n\t\t});\n\n\t\t// revert to the default state after the effect has been created\n\t\tset_should_intro(true);\n\n\t\treturn () => {\n\t\t\tif (next_tag) {\n\t\t\t\t// if we're in this callback because we're re-running the effect,\n\t\t\t\t// disable intros (unless no element is currently displayed)\n\t\t\t\tset_should_intro(false);\n\t\t\t}\n\t\t};\n\t}, EFFECT_TRANSPARENT);\n\n\tteardown(() => {\n\t\tset_should_intro(true);\n\t});\n\n\tif (was_hydrating) {\n\t\tset_hydrating(true);\n\t\tset_hydrate_node(anchor);\n\t}\n}\n","/** @import { ActionPayload } from '#client' */\nimport { effect, render_effect } from '../../reactivity/effects.js';\nimport { safe_not_equal } from '../../reactivity/equality.js';\nimport { deep_read_state, untrack } from '../../runtime.js';\n\n/**\n * @template P\n * @param {Element} dom\n * @param {(dom: Element, value?: P) => ActionPayload<P>} action\n * @param {() => P} [get_value]\n * @returns {void}\n */\nexport function action(dom, action, get_value) {\n\teffect(() => {\n\t\tvar payload = untrack(() => action(dom, get_value?.()) || {});\n\n\t\tif (get_value && payload?.update) {\n\t\t\tvar inited = false;\n\t\t\t/** @type {P} */\n\t\t\tvar prev = /** @type {any} */ ({}); // initialize with something so it's never equal on first run\n\n\t\t\trender_effect(() => {\n\t\t\t\tvar value = get_value();\n\n\t\t\t\t// Action's update method is coarse-grained, i.e. when anything in the passed value changes, update.\n\t\t\t\t// This works in legacy mode because of mutable_source being updated as a whole, but when using $state\n\t\t\t\t// together with actions and mutation, it wouldn't notice the change without a deep read.\n\t\t\t\tdeep_read_state(value);\n\n\t\t\t\tif (inited && safe_not_equal(prev, value)) {\n\t\t\t\t\tprev = value;\n\t\t\t\t\t/** @type {Function} */ (payload.update)(value);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tinited = true;\n\t\t}\n\n\t\tif (payload?.destroy) {\n\t\t\treturn () => /** @type {Function} */ (payload.destroy)();\n\t\t}\n\t});\n}\n","/** @import { Effect } from '#client' */\nimport { branch, effect, destroy_effect, managed } from '../../reactivity/effects.js';\n\n// TODO in 6.0 or 7.0, when we remove legacy mode, we can simplify this by\n// getting rid of the block/branch stuff and just letting the effect rip.\n// see https://github.com/sveltejs/svelte/pull/15962\n\n/**\n * @param {Element} node\n * @param {() => (node: Element) => void} get_fn\n */\nexport function attach(node, get_fn) {\n\t/** @type {false | undefined | ((node: Element) => void)} */\n\tvar fn = undefined;\n\n\t/** @type {Effect | null} */\n\tvar e;\n\n\tmanaged(() => {\n\t\tif (fn !== (fn = get_fn())) {\n\t\t\tif (e) {\n\t\t\t\tdestroy_effect(e);\n\t\t\t\te = null;\n\t\t\t}\n\n\t\t\tif (fn) {\n\t\t\t\te = branch(() => {\n\t\t\t\t\teffect(() => /** @type {(node: Element) => void} */ (fn)(node));\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n}\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import { escape_html } from '../../escaping.js';\nimport { clsx as _clsx } from 'clsx';\n\n/**\n * `<div translate={false}>` should be rendered as `<div translate=\"no\">` and _not_\n * `<div translate=\"false\">`, which is equivalent to `<div translate=\"yes\">`. There\n * may be other odd cases that need to be added to this list in future\n * @type {Record<string, Map<any, string>>}\n */\nconst replacements = {\n\ttranslate: new Map([\n\t\t[true, 'yes'],\n\t\t[false, 'no']\n\t])\n};\n\n/**\n * @template V\n * @param {string} name\n * @param {V} value\n * @param {boolean} [is_boolean]\n * @returns {string}\n */\nexport function attr(name, value, is_boolean = false) {\n\t// attribute hidden for values other than \"until-found\" behaves like a boolean attribute\n\tif (name === 'hidden' && value !== 'until-found') {\n\t\tis_boolean = true;\n\t}\n\tif (value == null || (!value && is_boolean)) return '';\n\tconst normalized = (name in replacements && replacements[name].get(value)) || value;\n\tconst assignment = is_boolean ? '' : `=\"${escape_html(normalized, true)}\"`;\n\treturn ` ${name}${assignment}`;\n}\n\n/**\n * Small wrapper around clsx to preserve Svelte's (weird) handling of falsy values.\n * TODO Svelte 6 revisit this, and likely turn all falsy values into the empty string (what clsx also does)\n * @param {any} value\n */\nexport function clsx(value) {\n\tif (typeof value === 'object') {\n\t\treturn _clsx(value);\n\t} else {\n\t\treturn value ?? '';\n\t}\n}\n\nconst whitespace = [...' \\t\\n\\r\\f\\u00a0\\u000b\\ufeff'];\n\n/**\n * @param {any} value\n * @param {string | null} [hash]\n * @param {Record<string, boolean>} [directives]\n * @returns {string | null}\n */\nexport function to_class(value, hash, directives) {\n\tvar classname = value == null ? '' : '' + value;\n\n\tif (hash) {\n\t\tclassname = classname ? classname + ' ' + hash : hash;\n\t}\n\n\tif (directives) {\n\t\tfor (var key in directives) {\n\t\t\tif (directives[key]) {\n\t\t\t\tclassname = classname ? classname + ' ' + key : key;\n\t\t\t} else if (classname.length) {\n\t\t\t\tvar len = key.length;\n\t\t\t\tvar a = 0;\n\n\t\t\t\twhile ((a = classname.indexOf(key, a)) >= 0) {\n\t\t\t\t\tvar b = a + len;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t(a === 0 || whitespace.includes(classname[a - 1])) &&\n\t\t\t\t\t\t(b === classname.length || whitespace.includes(classname[b]))\n\t\t\t\t\t) {\n\t\t\t\t\t\tclassname = (a === 0 ? '' : classname.substring(0, a)) + classname.substring(b + 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ta = b;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn classname === '' ? null : classname;\n}\n\n/**\n *\n * @param {Record<string,any>} styles\n * @param {boolean} important\n */\nfunction append_styles(styles, important = false) {\n\tvar separator = important ? ' !important;' : ';';\n\tvar css = '';\n\n\tfor (var key in styles) {\n\t\tvar value = styles[key];\n\t\tif (value != null && value !== '') {\n\t\t\tcss += ' ' + key + ': ' + value + separator;\n\t\t}\n\t}\n\n\treturn css;\n}\n\n/**\n * @param {string} name\n * @returns {string}\n */\nfunction to_css_name(name) {\n\tif (name[0] !== '-' || name[1] !== '-') {\n\t\treturn name.toLowerCase();\n\t}\n\treturn name;\n}\n\n/**\n * @param {any} value\n * @param {Record<string, any> | [Record<string, any>, Record<string, any>]} [styles]\n * @returns {string | null}\n */\nexport function to_style(value, styles) {\n\tif (styles) {\n\t\tvar new_style = '';\n\n\t\t/** @type {Record<string,any> | undefined} */\n\t\tvar normal_styles;\n\n\t\t/** @type {Record<string,any> | undefined} */\n\t\tvar important_styles;\n\n\t\tif (Array.isArray(styles)) {\n\t\t\tnormal_styles = styles[0];\n\t\t\timportant_styles = styles[1];\n\t\t} else {\n\t\t\tnormal_styles = styles;\n\t\t}\n\n\t\tif (value) {\n\t\t\tvalue = String(value)\n\t\t\t\t.replaceAll(/\\s*\\/\\*.*?\\*\\/\\s*/g, '')\n\t\t\t\t.trim();\n\n\t\t\t/** @type {boolean | '\"' | \"'\"} */\n\t\t\tvar in_str = false;\n\t\t\tvar in_apo = 0;\n\t\t\tvar in_comment = false;\n\n\t\t\tvar reserved_names = [];\n\n\t\t\tif (normal_styles) {\n\t\t\t\treserved_names.push(...Object.keys(normal_styles).map(to_css_name));\n\t\t\t}\n\t\t\tif (important_styles) {\n\t\t\t\treserved_names.push(...Object.keys(important_styles).map(to_css_name));\n\t\t\t}\n\n\t\t\tvar start_index = 0;\n\t\t\tvar name_index = -1;\n\n\t\t\tconst len = value.length;\n\t\t\tfor (var i = 0; i < len; i++) {\n\t\t\t\tvar c = value[i];\n\n\t\t\t\tif (in_comment) {\n\t\t\t\t\tif (c === '/' && value[i - 1] === '*') {\n\t\t\t\t\t\tin_comment = false;\n\t\t\t\t\t}\n\t\t\t\t} else if (in_str) {\n\t\t\t\t\tif (in_str === c) {\n\t\t\t\t\t\tin_str = false;\n\t\t\t\t\t}\n\t\t\t\t} else if (c === '/' && value[i + 1] === '*') {\n\t\t\t\t\tin_comment = true;\n\t\t\t\t} else if (c === '\"' || c === \"'\") {\n\t\t\t\t\tin_str = c;\n\t\t\t\t} else if (c === '(') {\n\t\t\t\t\tin_apo++;\n\t\t\t\t} else if (c === ')') {\n\t\t\t\t\tin_apo--;\n\t\t\t\t}\n\n\t\t\t\tif (!in_comment && in_str === false && in_apo === 0) {\n\t\t\t\t\tif (c === ':' && name_index === -1) {\n\t\t\t\t\t\tname_index = i;\n\t\t\t\t\t} else if (c === ';' || i === len - 1) {\n\t\t\t\t\t\tif (name_index !== -1) {\n\t\t\t\t\t\t\tvar name = to_css_name(value.substring(start_index, name_index).trim());\n\n\t\t\t\t\t\t\tif (!reserved_names.includes(name)) {\n\t\t\t\t\t\t\t\tif (c !== ';') {\n\t\t\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tvar property = value.substring(start_index, i).trim();\n\t\t\t\t\t\t\t\tnew_style += ' ' + property + ';';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart_index = i + 1;\n\t\t\t\t\t\tname_index = -1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (normal_styles) {\n\t\t\tnew_style += append_styles(normal_styles);\n\t\t}\n\n\t\tif (important_styles) {\n\t\t\tnew_style += append_styles(important_styles, true);\n\t\t}\n\n\t\tnew_style = new_style.trim();\n\t\treturn new_style === '' ? null : new_style;\n\t}\n\n\treturn value == null ? null : String(value);\n}\n","import { to_class } from '../../../shared/attributes.js';\nimport { hydrating } from '../hydration.js';\n\n/**\n * @param {Element} dom\n * @param {boolean | number} is_html\n * @param {string | null} value\n * @param {string} [hash]\n * @param {Record<string, any>} [prev_classes]\n * @param {Record<string, any>} [next_classes]\n * @returns {Record<string, boolean> | undefined}\n */\nexport function set_class(dom, is_html, value, hash, prev_classes, next_classes) {\n\t// @ts-expect-error need to add __className to patched prototype\n\tvar prev = dom.__className;\n\n\tif (\n\t\thydrating ||\n\t\tprev !== value ||\n\t\tprev === undefined // for edge case of `class={undefined}`\n\t) {\n\t\tvar next_class_name = to_class(value, hash, next_classes);\n\n\t\tif (!hydrating || next_class_name !== dom.getAttribute('class')) {\n\t\t\t// Removing the attribute when the value is only an empty string causes\n\t\t\t// performance issues vs simply making the className an empty string. So\n\t\t\t// we should only remove the class if the value is nullish\n\t\t\t// and there no hash/directives :\n\t\t\tif (next_class_name == null) {\n\t\t\t\tdom.removeAttribute('class');\n\t\t\t} else if (is_html) {\n\t\t\t\tdom.className = next_class_name;\n\t\t\t} else {\n\t\t\t\tdom.setAttribute('class', next_class_name);\n\t\t\t}\n\t\t}\n\n\t\t// @ts-expect-error need to add __className to patched prototype\n\t\tdom.__className = value;\n\t} else if (next_classes && prev_classes !== next_classes) {\n\t\tfor (var key in next_classes) {\n\t\t\tvar is_present = !!next_classes[key];\n\n\t\t\tif (prev_classes == null || is_present !== !!prev_classes[key]) {\n\t\t\t\tdom.classList.toggle(key, is_present);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn next_classes;\n}\n","import { to_style } from '../../../shared/attributes.js';\nimport { hydrating } from '../hydration.js';\n\n/**\n * @param {Element & ElementCSSInlineStyle} dom\n * @param {Record<string, any>} prev\n * @param {Record<string, any>} next\n * @param {string} [priority]\n */\nfunction update_styles(dom, prev = {}, next, priority) {\n\tfor (var key in next) {\n\t\tvar value = next[key];\n\n\t\tif (prev[key] !== value) {\n\t\t\tif (next[key] == null) {\n\t\t\t\tdom.style.removeProperty(key);\n\t\t\t} else {\n\t\t\t\tdom.style.setProperty(key, value, priority);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * @param {Element & ElementCSSInlineStyle} dom\n * @param {string | null} value\n * @param {Record<string, any> | [Record<string, any>, Record<string, any>]} [prev_styles]\n * @param {Record<string, any> | [Record<string, any>, Record<string, any>]} [next_styles]\n */\nexport function set_style(dom, value, prev_styles, next_styles) {\n\t// @ts-expect-error\n\tvar prev = dom.__style;\n\n\tif (hydrating || prev !== value) {\n\t\tvar next_style_attr = to_style(value, next_styles);\n\n\t\tif (!hydrating || next_style_attr !== dom.getAttribute('style')) {\n\t\t\tif (next_style_attr == null) {\n\t\t\t\tdom.removeAttribute('style');\n\t\t\t} else {\n\t\t\t\tdom.style.cssText = next_style_attr;\n\t\t\t}\n\t\t}\n\n\t\t// @ts-expect-error\n\t\tdom.__style = value;\n\t} else if (next_styles) {\n\t\tif (Array.isArray(next_styles)) {\n\t\t\tupdate_styles(dom, prev_styles?.[0], next_styles[0]);\n\t\t\tupdate_styles(dom, prev_styles?.[1], next_styles[1], 'important');\n\t\t} else {\n\t\t\tupdate_styles(dom, prev_styles, next_styles);\n\t\t}\n\t}\n\n\treturn next_styles;\n}\n","import { effect, teardown } from '../../../reactivity/effects.js';\nimport { listen_to_event_and_reset_event } from './shared.js';\nimport { is } from '../../../proxy.js';\nimport { is_array } from '../../../../shared/utils.js';\nimport * as w from '../../../warnings.js';\nimport { Batch, current_batch, previous_batch } from '../../../reactivity/batch.js';\n\n/**\n * Selects the correct option(s) (depending on whether this is a multiple select)\n * @template V\n * @param {HTMLSelectElement} select\n * @param {V} value\n * @param {boolean} mounting\n */\nexport function select_option(select, value, mounting = false) {\n\tif (select.multiple) {\n\t\t// If value is null or undefined, keep the selection as is\n\t\tif (value == undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If not an array, warn and keep the selection as is\n\t\tif (!is_array(value)) {\n\t\t\treturn w.select_multiple_invalid_value();\n\t\t}\n\n\t\t// Otherwise, update the selection\n\t\tfor (var option of select.options) {\n\t\t\toption.selected = value.includes(get_option_value(option));\n\t\t}\n\n\t\treturn;\n\t}\n\n\tfor (option of select.options) {\n\t\tvar option_value = get_option_value(option);\n\t\tif (is(option_value, value)) {\n\t\t\toption.selected = true;\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (!mounting || value !== undefined) {\n\t\tselect.selectedIndex = -1; // no option should be selected\n\t}\n}\n\n/**\n * Selects the correct option(s) if `value` is given,\n * and then sets up a mutation observer to sync the\n * current selection to the dom when it changes. Such\n * changes could for example occur when options are\n * inside an `#each` block.\n * @param {HTMLSelectElement} select\n */\nexport function init_select(select) {\n\tvar observer = new MutationObserver(() => {\n\t\t// @ts-ignore\n\t\tselect_option(select, select.__value);\n\t\t// Deliberately don't update the potential binding value,\n\t\t// the model should be preserved unless explicitly changed\n\t});\n\n\tobserver.observe(select, {\n\t\t// Listen to option element changes\n\t\tchildList: true,\n\t\tsubtree: true, // because of <optgroup>\n\t\t// Listen to option element value attribute changes\n\t\t// (doesn't get notified of select value changes,\n\t\t// because that property is not reflected as an attribute)\n\t\tattributes: true,\n\t\tattributeFilter: ['value']\n\t});\n\n\tteardown(() => {\n\t\tobserver.disconnect();\n\t});\n}\n\n/**\n * @param {HTMLSelectElement} select\n * @param {() => unknown} get\n * @param {(value: unknown) => void} set\n * @returns {void}\n */\nexport function bind_select_value(select, get, set = get) {\n\tvar batches = new WeakSet();\n\tvar mounting = true;\n\n\tlisten_to_event_and_reset_event(select, 'change', (is_reset) => {\n\t\tvar query = is_reset ? '[selected]' : ':checked';\n\t\t/** @type {unknown} */\n\t\tvar value;\n\n\t\tif (select.multiple) {\n\t\t\tvalue = [].map.call(select.querySelectorAll(query), get_option_value);\n\t\t} else {\n\t\t\t/** @type {HTMLOptionElement | null} */\n\t\t\tvar selected_option =\n\t\t\t\tselect.querySelector(query) ??\n\t\t\t\t// will fall back to first non-disabled option if no option is selected\n\t\t\t\tselect.querySelector('option:not([disabled])');\n\t\t\tvalue = selected_option && get_option_value(selected_option);\n\t\t}\n\n\t\tset(value);\n\n\t\tif (current_batch !== null) {\n\t\t\tbatches.add(current_batch);\n\t\t}\n\t});\n\n\t// Needs to be an effect, not a render_effect, so that in case of each loops the logic runs after the each block has updated\n\teffect(() => {\n\t\tvar value = get();\n\n\t\tif (select === document.activeElement) {\n\t\t\t// we need both, because in non-async mode, render effects run before previous_batch is set\n\t\t\tvar batch = /** @type {Batch} */ (previous_batch ?? current_batch);\n\n\t\t\t// Don't update the <select> if it is focused. We can get here if, for example,\n\t\t\t// an update is deferred because of async work depending on the select:\n\t\t\t//\n\t\t\t// <select bind:value={selected}>...</select>\n\t\t\t// <p>{await find(selected)}</p>\n\t\t\tif (batches.has(batch)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tselect_option(select, value, mounting);\n\n\t\t// Mounting and value undefined -> take selection from dom\n\t\tif (mounting && value === undefined) {\n\t\t\t/** @type {HTMLOptionElement | null} */\n\t\t\tvar selected_option = select.querySelector(':checked');\n\t\t\tif (selected_option !== null) {\n\t\t\t\tvalue = get_option_value(selected_option);\n\t\t\t\tset(value);\n\t\t\t}\n\t\t}\n\n\t\t// @ts-ignore\n\t\tselect.__value = value;\n\t\tmounting = false;\n\t});\n\n\tinit_select(select);\n}\n\n/** @param {HTMLOptionElement} option */\nfunction get_option_value(option) {\n\t// __value only exists if the <option> has a value attribute\n\tif ('__value' in option) {\n\t\treturn option.__value;\n\t} else {\n\t\treturn option.value;\n\t}\n}\n","/** @import { Effect } from '#client' */\nimport { DEV } from 'esm-env';\nimport { hydrating, set_hydrating } from '../hydration.js';\nimport { get_descriptors, get_prototype_of } from '../../../shared/utils.js';\nimport { create_event, delegate } from './events.js';\nimport { add_form_reset_listener, autofocus } from './misc.js';\nimport * as w from '../../warnings.js';\nimport { LOADING_ATTR_SYMBOL } from '#client/constants';\nimport { queue_micro_task } from '../task.js';\nimport { is_capture_event, can_delegate_event, normalize_attribute } from '../../../../utils.js';\nimport {\n\tactive_effect,\n\tactive_reaction,\n\tget,\n\tset_active_effect,\n\tset_active_reaction\n} from '../../runtime.js';\nimport { attach } from './attachments.js';\nimport { clsx } from '../../../shared/attributes.js';\nimport { set_class } from './class.js';\nimport { set_style } from './style.js';\nimport { ATTACHMENT_KEY, NAMESPACE_HTML, UNINITIALIZED } from '../../../../constants.js';\nimport { branch, destroy_effect, effect, managed } from '../../reactivity/effects.js';\nimport { init_select, select_option } from './bindings/select.js';\nimport { flatten } from '../../reactivity/async.js';\n\nexport const CLASS = Symbol('class');\nexport const STYLE = Symbol('style');\n\nconst IS_CUSTOM_ELEMENT = Symbol('is custom element');\nconst IS_HTML = Symbol('is html');\n\n/**\n * The value/checked attribute in the template actually corresponds to the defaultValue property, so we need\n * to remove it upon hydration to avoid a bug when someone resets the form value.\n * @param {HTMLInputElement} input\n * @returns {void}\n */\nexport function remove_input_defaults(input) {\n\tif (!hydrating) return;\n\n\tvar already_removed = false;\n\n\t// We try and remove the default attributes later, rather than sync during hydration.\n\t// Doing it sync during hydration has a negative impact on performance, but deferring the\n\t// work in an idle task alleviates this greatly. If a form reset event comes in before\n\t// the idle callback, then we ensure the input defaults are cleared just before.\n\tvar remove_defaults = () => {\n\t\tif (already_removed) return;\n\t\talready_removed = true;\n\n\t\t// Remove the attributes but preserve the values\n\t\tif (input.hasAttribute('value')) {\n\t\t\tvar value = input.value;\n\t\t\tset_attribute(input, 'value', null);\n\t\t\tinput.value = value;\n\t\t}\n\n\t\tif (input.hasAttribute('checked')) {\n\t\t\tvar checked = input.checked;\n\t\t\tset_attribute(input, 'checked', null);\n\t\t\tinput.checked = checked;\n\t\t}\n\t};\n\n\t// @ts-expect-error\n\tinput.__on_r = remove_defaults;\n\tqueue_micro_task(remove_defaults);\n\tadd_form_reset_listener();\n}\n\n/**\n * @param {Element} element\n * @param {any} value\n */\nexport function set_value(element, value) {\n\tvar attributes = get_attributes(element);\n\n\tif (\n\t\tattributes.value ===\n\t\t\t(attributes.value =\n\t\t\t\t// treat null and undefined the same for the initial value\n\t\t\t\tvalue ?? undefined) ||\n\t\t// @ts-expect-error\n\t\t// `progress` elements always need their value set when it's `0`\n\t\t(element.value === value && (value !== 0 || element.nodeName !== 'PROGRESS'))\n\t) {\n\t\treturn;\n\t}\n\n\t// @ts-expect-error\n\telement.value = value ?? '';\n}\n\n/**\n * @param {Element} element\n * @param {boolean} checked\n */\nexport function set_checked(element, checked) {\n\tvar attributes = get_attributes(element);\n\n\tif (\n\t\tattributes.checked ===\n\t\t(attributes.checked =\n\t\t\t// treat null and undefined the same for the initial value\n\t\t\tchecked ?? undefined)\n\t) {\n\t\treturn;\n\t}\n\n\t// @ts-expect-error\n\telement.checked = checked;\n}\n\n/**\n * Sets the `selected` attribute on an `option` element.\n * Not set through the property because that doesn't reflect to the DOM,\n * which means it wouldn't be taken into account when a form is reset.\n * @param {HTMLOptionElement} element\n * @param {boolean} selected\n */\nexport function set_selected(element, selected) {\n\tif (selected) {\n\t\t// The selected option could've changed via user selection, and\n\t\t// setting the value without this check would set it back.\n\t\tif (!element.hasAttribute('selected')) {\n\t\t\telement.setAttribute('selected', '');\n\t\t}\n\t} else {\n\t\telement.removeAttribute('selected');\n\t}\n}\n\n/**\n * Applies the default checked property without influencing the current checked property.\n * @param {HTMLInputElement} element\n * @param {boolean} checked\n */\nexport function set_default_checked(element, checked) {\n\tconst existing_value = element.checked;\n\telement.defaultChecked = checked;\n\telement.checked = existing_value;\n}\n\n/**\n * Applies the default value property without influencing the current value property.\n * @param {HTMLInputElement | HTMLTextAreaElement} element\n * @param {string} value\n */\nexport function set_default_value(element, value) {\n\tconst existing_value = element.value;\n\telement.defaultValue = value;\n\telement.value = existing_value;\n}\n\n/**\n * @param {Element} element\n * @param {string} attribute\n * @param {string | null} value\n * @param {boolean} [skip_warning]\n */\nexport function set_attribute(element, attribute, value, skip_warning) {\n\tvar attributes = get_attributes(element);\n\n\tif (hydrating) {\n\t\tattributes[attribute] = element.getAttribute(attribute);\n\n\t\tif (\n\t\t\tattribute === 'src' ||\n\t\t\tattribute === 'srcset' ||\n\t\t\t(attribute === 'href' && element.nodeName === 'LINK')\n\t\t) {\n\t\t\tif (!skip_warning) {\n\t\t\t\tcheck_src_in_dev_hydration(element, attribute, value ?? '');\n\t\t\t}\n\n\t\t\t// If we reset these attributes, they would result in another network request, which we want to avoid.\n\t\t\t// We assume they are the same between client and server as checking if they are equal is expensive\n\t\t\t// (we can't just compare the strings as they can be different between client and server but result in the\n\t\t\t// same url, so we would need to create hidden anchor elements to compare them)\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (attributes[attribute] === (attributes[attribute] = value)) return;\n\n\tif (attribute === 'loading') {\n\t\t// @ts-expect-error\n\t\telement[LOADING_ATTR_SYMBOL] = value;\n\t}\n\n\tif (value == null) {\n\t\telement.removeAttribute(attribute);\n\t} else if (typeof value !== 'string' && get_setters(element).includes(attribute)) {\n\t\t// @ts-ignore\n\t\telement[attribute] = value;\n\t} else {\n\t\telement.setAttribute(attribute, value);\n\t}\n}\n\n/**\n * @param {Element} dom\n * @param {string} attribute\n * @param {string} value\n */\nexport function set_xlink_attribute(dom, attribute, value) {\n\tdom.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\n\n/**\n * @param {HTMLElement} node\n * @param {string} prop\n * @param {any} value\n */\nexport function set_custom_element_data(node, prop, value) {\n\t// We need to ensure that setting custom element props, which can\n\t// invoke lifecycle methods on other custom elements, does not also\n\t// associate those lifecycle methods with the current active reaction\n\t// or effect\n\tvar previous_reaction = active_reaction;\n\tvar previous_effect = active_effect;\n\n\t// If we're hydrating but the custom element is from Svelte, and it already scaffolded,\n\t// then it might run block logic in hydration mode, which we have to prevent.\n\tlet was_hydrating = hydrating;\n\tif (hydrating) {\n\t\tset_hydrating(false);\n\t}\n\n\tset_active_reaction(null);\n\tset_active_effect(null);\n\n\ttry {\n\t\tif (\n\t\t\t// `style` should use `set_attribute` rather than the setter\n\t\t\tprop !== 'style' &&\n\t\t\t// Don't compute setters for custom elements while they aren't registered yet,\n\t\t\t// because during their upgrade/instantiation they might add more setters.\n\t\t\t// Instead, fall back to a simple \"an object, then set as property\" heuristic.\n\t\t\t(setters_cache.has(node.getAttribute('is') || node.nodeName) ||\n\t\t\t// customElements may not be available in browser extension contexts\n\t\t\t!customElements ||\n\t\t\tcustomElements.get(node.getAttribute('is') || node.tagName.toLowerCase())\n\t\t\t\t? get_setters(node).includes(prop)\n\t\t\t\t: value && typeof value === 'object')\n\t\t) {\n\t\t\t// @ts-expect-error\n\t\t\tnode[prop] = value;\n\t\t} else {\n\t\t\t// We did getters etc checks already, stringify before passing to set_attribute\n\t\t\t// to ensure it doesn't invoke the same logic again, and potentially populating\n\t\t\t// the setters cache too early.\n\t\t\tset_attribute(node, prop, value == null ? value : String(value));\n\t\t}\n\t} finally {\n\t\tset_active_reaction(previous_reaction);\n\t\tset_active_effect(previous_effect);\n\t\tif (was_hydrating) {\n\t\t\tset_hydrating(true);\n\t\t}\n\t}\n}\n\n/**\n * Spreads attributes onto a DOM element, taking into account the currently set attributes\n * @param {Element & ElementCSSInlineStyle} element\n * @param {Record<string | symbol, any> | undefined} prev\n * @param {Record<string | symbol, any>} next New attributes - this function mutates this object\n * @param {string} [css_hash]\n * @param {boolean} [should_remove_defaults]\n * @param {boolean} [skip_warning]\n * @returns {Record<string, any>}\n */\nfunction set_attributes(\n\telement,\n\tprev,\n\tnext,\n\tcss_hash,\n\tshould_remove_defaults = false,\n\tskip_warning = false\n) {\n\tif (hydrating && should_remove_defaults && element.tagName === 'INPUT') {\n\t\tvar input = /** @type {HTMLInputElement} */ (element);\n\t\tvar attribute = input.type === 'checkbox' ? 'defaultChecked' : 'defaultValue';\n\n\t\tif (!(attribute in next)) {\n\t\t\tremove_input_defaults(input);\n\t\t}\n\t}\n\n\tvar attributes = get_attributes(element);\n\n\tvar is_custom_element = attributes[IS_CUSTOM_ELEMENT];\n\tvar preserve_attribute_case = !attributes[IS_HTML];\n\n\t// If we're hydrating but the custom element is from Svelte, and it already scaffolded,\n\t// then it might run block logic in hydration mode, which we have to prevent.\n\tlet is_hydrating_custom_element = hydrating && is_custom_element;\n\tif (is_hydrating_custom_element) {\n\t\tset_hydrating(false);\n\t}\n\n\tvar current = prev || {};\n\tvar is_option_element = element.tagName === 'OPTION';\n\n\tfor (var key in prev) {\n\t\tif (!(key in next)) {\n\t\t\tnext[key] = null;\n\t\t}\n\t}\n\n\tif (next.class) {\n\t\tnext.class = clsx(next.class);\n\t} else if (css_hash || next[CLASS]) {\n\t\tnext.class = null; /* force call to set_class() */\n\t}\n\n\tif (next[STYLE]) {\n\t\tnext.style ??= null; /* force call to set_style() */\n\t}\n\n\tvar setters = get_setters(element);\n\n\t// since key is captured we use const\n\tfor (const key in next) {\n\t\t// let instead of var because referenced in a closure\n\t\tlet value = next[key];\n\n\t\t// Up here because we want to do this for the initial value, too, even if it's undefined,\n\t\t// and this wouldn't be reached in case of undefined because of the equality check below\n\t\tif (is_option_element && key === 'value' && value == null) {\n\t\t\t// The <option> element is a special case because removing the value attribute means\n\t\t\t// the value is set to the text content of the option element, and setting the value\n\t\t\t// to null or undefined means the value is set to the string \"null\" or \"undefined\".\n\t\t\t// To align with how we handle this case in non-spread-scenarios, this logic is needed.\n\t\t\t// There's a super-edge-case bug here that is left in in favor of smaller code size:\n\t\t\t// Because of the \"set missing props to null\" logic above, we can't differentiate\n\t\t\t// between a missing value and an explicitly set value of null or undefined. That means\n\t\t\t// that once set, the value attribute of an <option> element can't be removed. This is\n\t\t\t// a very rare edge case, and removing the attribute altogether isn't possible either\n\t\t\t// for the <option value={undefined}> case, so we're not losing any functionality here.\n\t\t\t// @ts-ignore\n\t\t\telement.value = element.__value = '';\n\t\t\tcurrent[key] = value;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (key === 'class') {\n\t\t\tvar is_html = element.namespaceURI === 'http://www.w3.org/1999/xhtml';\n\t\t\tset_class(element, is_html, value, css_hash, prev?.[CLASS], next[CLASS]);\n\t\t\tcurrent[key] = value;\n\t\t\tcurrent[CLASS] = next[CLASS];\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (key === 'style') {\n\t\t\tset_style(element, value, prev?.[STYLE], next[STYLE]);\n\t\t\tcurrent[key] = value;\n\t\t\tcurrent[STYLE] = next[STYLE];\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar prev_value = current[key];\n\n\t\t// Skip if value is unchanged, unless it's `undefined` and the element still has the attribute\n\t\tif (value === prev_value && !(value === undefined && element.hasAttribute(key))) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tcurrent[key] = value;\n\n\t\tvar prefix = key[0] + key[1]; // this is faster than key.slice(0, 2)\n\t\tif (prefix === '$$') continue;\n\n\t\tif (prefix === 'on') {\n\t\t\t/** @type {{ capture?: true }} */\n\t\t\tconst opts = {};\n\t\t\tconst event_handle_key = '$$' + key;\n\t\t\tlet event_name = key.slice(2);\n\t\t\tvar delegated = can_delegate_event(event_name);\n\n\t\t\tif (is_capture_event(event_name)) {\n\t\t\t\tevent_name = event_name.slice(0, -7);\n\t\t\t\topts.capture = true;\n\t\t\t}\n\n\t\t\tif (!delegated && prev_value) {\n\t\t\t\t// Listening to same event but different handler -> our handle function below takes care of this\n\t\t\t\t// If we were to remove and add listeners in this case, it could happen that the event is \"swallowed\"\n\t\t\t\t// (the browser seems to not know yet that a new one exists now) and doesn't reach the handler\n\t\t\t\t// https://github.com/sveltejs/svelte/issues/11903\n\t\t\t\tif (value != null) continue;\n\n\t\t\t\telement.removeEventListener(event_name, current[event_handle_key], opts);\n\t\t\t\tcurrent[event_handle_key] = null;\n\t\t\t}\n\n\t\t\tif (value != null) {\n\t\t\t\tif (!delegated) {\n\t\t\t\t\t/**\n\t\t\t\t\t * @this {any}\n\t\t\t\t\t * @param {Event} evt\n\t\t\t\t\t */\n\t\t\t\t\tfunction handle(evt) {\n\t\t\t\t\t\tcurrent[key].call(this, evt);\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrent[event_handle_key] = create_event(event_name, element, handle, opts);\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\telement[`__${event_name}`] = value;\n\t\t\t\t\tdelegate([event_name]);\n\t\t\t\t}\n\t\t\t} else if (delegated) {\n\t\t\t\t// @ts-ignore\n\t\t\t\telement[`__${event_name}`] = undefined;\n\t\t\t}\n\t\t} else if (key === 'style') {\n\t\t\t// avoid using the setter\n\t\t\tset_attribute(element, key, value);\n\t\t} else if (key === 'autofocus') {\n\t\t\tautofocus(/** @type {HTMLElement} */ (element), Boolean(value));\n\t\t} else if (!is_custom_element && (key === '__value' || (key === 'value' && value != null))) {\n\t\t\t// @ts-ignore We're not running this for custom elements because __value is actually\n\t\t\t// how Lit stores the current value on the element, and messing with that would break things.\n\t\t\telement.value = element.__value = value;\n\t\t} else if (key === 'selected' && is_option_element) {\n\t\t\tset_selected(/** @type {HTMLOptionElement} */ (element), value);\n\t\t} else {\n\t\t\tvar name = key;\n\t\t\tif (!preserve_attribute_case) {\n\t\t\t\tname = normalize_attribute(name);\n\t\t\t}\n\n\t\t\tvar is_default = name === 'defaultValue' || name === 'defaultChecked';\n\n\t\t\tif (value == null && !is_custom_element && !is_default) {\n\t\t\t\tattributes[key] = null;\n\n\t\t\t\tif (name === 'value' || name === 'checked') {\n\t\t\t\t\t// removing value/checked also removes defaultValue/defaultChecked — preserve\n\t\t\t\t\tlet input = /** @type {HTMLInputElement} */ (element);\n\t\t\t\t\tconst use_default = prev === undefined;\n\t\t\t\t\tif (name === 'value') {\n\t\t\t\t\t\tlet previous = input.defaultValue;\n\t\t\t\t\t\tinput.removeAttribute(name);\n\t\t\t\t\t\tinput.defaultValue = previous;\n\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\tinput.value = input.__value = use_default ? previous : null;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlet previous = input.defaultChecked;\n\t\t\t\t\t\tinput.removeAttribute(name);\n\t\t\t\t\t\tinput.defaultChecked = previous;\n\t\t\t\t\t\tinput.checked = use_default ? previous : false;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\telement.removeAttribute(key);\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\tis_default ||\n\t\t\t\t(setters.includes(name) && (is_custom_element || typeof value !== 'string'))\n\t\t\t) {\n\t\t\t\t// @ts-ignore\n\t\t\t\telement[name] = value;\n\t\t\t\t// remove it from attributes's cache\n\t\t\t\tif (name in attributes) attributes[name] = UNINITIALIZED;\n\t\t\t} else if (typeof value !== 'function') {\n\t\t\t\tset_attribute(element, name, value, skip_warning);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (is_hydrating_custom_element) {\n\t\tset_hydrating(true);\n\t}\n\n\treturn current;\n}\n\n/**\n * @param {Element & ElementCSSInlineStyle} element\n * @param {(...expressions: any) => Record<string | symbol, any>} fn\n * @param {Array<() => any>} sync\n * @param {Array<() => Promise<any>>} async\n * @param {Array<Promise<void>>} blockers\n * @param {string} [css_hash]\n * @param {boolean} [should_remove_defaults]\n * @param {boolean} [skip_warning]\n */\nexport function attribute_effect(\n\telement,\n\tfn,\n\tsync = [],\n\tasync = [],\n\tblockers = [],\n\tcss_hash,\n\tshould_remove_defaults = false,\n\tskip_warning = false\n) {\n\tflatten(blockers, sync, async, (values) => {\n\t\t/** @type {Record<string | symbol, any> | undefined} */\n\t\tvar prev = undefined;\n\n\t\t/** @type {Record<symbol, Effect>} */\n\t\tvar effects = {};\n\n\t\tvar is_select = element.nodeName === 'SELECT';\n\t\tvar inited = false;\n\n\t\tmanaged(() => {\n\t\t\tvar next = fn(...values.map(get));\n\t\t\t/** @type {Record<string | symbol, any>} */\n\t\t\tvar current = set_attributes(\n\t\t\t\telement,\n\t\t\t\tprev,\n\t\t\t\tnext,\n\t\t\t\tcss_hash,\n\t\t\t\tshould_remove_defaults,\n\t\t\t\tskip_warning\n\t\t\t);\n\n\t\t\tif (inited && is_select && 'value' in next) {\n\t\t\t\tselect_option(/** @type {HTMLSelectElement} */ (element), next.value);\n\t\t\t}\n\n\t\t\tfor (let symbol of Object.getOwnPropertySymbols(effects)) {\n\t\t\t\tif (!next[symbol]) destroy_effect(effects[symbol]);\n\t\t\t}\n\n\t\t\tfor (let symbol of Object.getOwnPropertySymbols(next)) {\n\t\t\t\tvar n = next[symbol];\n\n\t\t\t\tif (symbol.description === ATTACHMENT_KEY && (!prev || n !== prev[symbol])) {\n\t\t\t\t\tif (effects[symbol]) destroy_effect(effects[symbol]);\n\t\t\t\t\teffects[symbol] = branch(() => attach(element, () => n));\n\t\t\t\t}\n\n\t\t\t\tcurrent[symbol] = n;\n\t\t\t}\n\n\t\t\tprev = current;\n\t\t});\n\n\t\tif (is_select) {\n\t\t\tvar select = /** @type {HTMLSelectElement} */ (element);\n\n\t\t\teffect(() => {\n\t\t\t\tselect_option(select, /** @type {Record<string | symbol, any>} */ (prev).value, true);\n\t\t\t\tinit_select(select);\n\t\t\t});\n\t\t}\n\n\t\tinited = true;\n\t});\n}\n\n/**\n *\n * @param {Element} element\n */\nfunction get_attributes(element) {\n\treturn /** @type {Record<string | symbol, unknown>} **/ (\n\t\t// @ts-expect-error\n\t\telement.__attributes ??= {\n\t\t\t[IS_CUSTOM_ELEMENT]: element.nodeName.includes('-'),\n\t\t\t[IS_HTML]: element.namespaceURI === NAMESPACE_HTML\n\t\t}\n\t);\n}\n\n/** @type {Map<string, string[]>} */\nvar setters_cache = new Map();\n\n/** @param {Element} element */\nfunction get_setters(element) {\n\tvar cache_key = element.getAttribute('is') || element.nodeName;\n\tvar setters = setters_cache.get(cache_key);\n\tif (setters) return setters;\n\tsetters_cache.set(cache_key, (setters = []));\n\n\tvar descriptors;\n\tvar proto = element; // In the case of custom elements there might be setters on the instance\n\tvar element_proto = Element.prototype;\n\n\t// Stop at Element, from there on there's only unnecessary setters we're not interested in\n\t// Do not use contructor.name here as that's unreliable in some browser environments\n\twhile (element_proto !== proto) {\n\t\tdescriptors = get_descriptors(proto);\n\n\t\tfor (var key in descriptors) {\n\t\t\tif (descriptors[key].set) {\n\t\t\t\tsetters.push(key);\n\t\t\t}\n\t\t}\n\n\t\tproto = get_prototype_of(proto);\n\t}\n\n\treturn setters;\n}\n\n/**\n * @param {any} element\n * @param {string} attribute\n * @param {string} value\n */\nfunction check_src_in_dev_hydration(element, attribute, value) {\n\tif (!DEV) return;\n\tif (attribute === 'srcset' && srcset_url_equal(element, value)) return;\n\tif (src_url_equal(element.getAttribute(attribute) ?? '', value)) return;\n\n\tw.hydration_attribute_changed(\n\t\tattribute,\n\t\telement.outerHTML.replace(element.innerHTML, element.innerHTML && '...'),\n\t\tString(value)\n\t);\n}\n\n/**\n * @param {string} element_src\n * @param {string} url\n * @returns {boolean}\n */\nfunction src_url_equal(element_src, url) {\n\tif (element_src === url) return true;\n\treturn new URL(element_src, document.baseURI).href === new URL(url, document.baseURI).href;\n}\n\n/** @param {string} srcset */\nfunction split_srcset(srcset) {\n\treturn srcset.split(',').map((src) => src.trim().split(' ').filter(Boolean));\n}\n\n/**\n * @param {HTMLSourceElement | HTMLImageElement} element\n * @param {string} srcset\n * @returns {boolean}\n */\nfunction srcset_url_equal(element, srcset) {\n\tvar element_urls = split_srcset(element.srcset);\n\tvar urls = split_srcset(srcset);\n\n\treturn (\n\t\turls.length === element_urls.length &&\n\t\turls.every(\n\t\t\t([url, width], i) =>\n\t\t\t\twidth === element_urls[i][1] &&\n\t\t\t\t// We need to test both ways because Vite will create an a full URL with\n\t\t\t\t// `new URL(asset, import.meta.url).href` for the client when `base: './'`, and the\n\t\t\t\t// relative URLs inside srcset are not automatically resolved to absolute URLs by\n\t\t\t\t// browsers (in contrast to img.src). This means both SSR and DOM code could\n\t\t\t\t// contain relative or absolute URLs.\n\t\t\t\t(src_url_equal(element_urls[i][0], url) || src_url_equal(url, element_urls[i][0]))\n\t\t)\n\t);\n}\n","/** @import { Batch } from '../../../reactivity/batch.js' */\nimport { DEV } from 'esm-env';\nimport { render_effect, teardown } from '../../../reactivity/effects.js';\nimport { listen_to_event_and_reset_event } from './shared.js';\nimport * as e from '../../../errors.js';\nimport { is } from '../../../proxy.js';\nimport { queue_micro_task } from '../../task.js';\nimport { hydrating } from '../../hydration.js';\nimport { tick, untrack } from '../../../runtime.js';\nimport { is_runes } from '../../../context.js';\nimport { current_batch, previous_batch } from '../../../reactivity/batch.js';\n\n/**\n * @param {HTMLInputElement} input\n * @param {() => unknown} get\n * @param {(value: unknown) => void} set\n * @returns {void}\n */\nexport function bind_value(input, get, set = get) {\n\tvar batches = new WeakSet();\n\n\tlisten_to_event_and_reset_event(input, 'input', async (is_reset) => {\n\t\tif (DEV && input.type === 'checkbox') {\n\t\t\t// TODO should this happen in prod too?\n\t\t\te.bind_invalid_checkbox_value();\n\t\t}\n\n\t\t/** @type {any} */\n\t\tvar value = is_reset ? input.defaultValue : input.value;\n\t\tvalue = is_numberlike_input(input) ? to_number(value) : value;\n\t\tset(value);\n\n\t\tif (current_batch !== null) {\n\t\t\tbatches.add(current_batch);\n\t\t}\n\n\t\t// Because `{#each ...}` blocks work by updating sources inside the flush,\n\t\t// we need to wait a tick before checking to see if we should forcibly\n\t\t// update the input and reset the selection state\n\t\tawait tick();\n\n\t\t// Respect any validation in accessors\n\t\tif (value !== (value = get())) {\n\t\t\tvar start = input.selectionStart;\n\t\t\tvar end = input.selectionEnd;\n\t\t\tvar length = input.value.length;\n\n\t\t\t// the value is coerced on assignment\n\t\t\tinput.value = value ?? '';\n\n\t\t\t// Restore selection\n\t\t\tif (end !== null) {\n\t\t\t\tvar new_length = input.value.length;\n\t\t\t\t// If cursor was at end and new input is longer, move cursor to new end\n\t\t\t\tif (start === end && end === length && new_length > length) {\n\t\t\t\t\tinput.selectionStart = new_length;\n\t\t\t\t\tinput.selectionEnd = new_length;\n\t\t\t\t} else {\n\t\t\t\t\tinput.selectionStart = start;\n\t\t\t\t\tinput.selectionEnd = Math.min(end, new_length);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\tif (\n\t\t// If we are hydrating and the value has since changed,\n\t\t// then use the updated value from the input instead.\n\t\t(hydrating && input.defaultValue !== input.value) ||\n\t\t// If defaultValue is set, then value == defaultValue\n\t\t// TODO Svelte 6: remove input.value check and set to empty string?\n\t\t(untrack(get) == null && input.value)\n\t) {\n\t\tset(is_numberlike_input(input) ? to_number(input.value) : input.value);\n\n\t\tif (current_batch !== null) {\n\t\t\tbatches.add(current_batch);\n\t\t}\n\t}\n\n\trender_effect(() => {\n\t\tif (DEV && input.type === 'checkbox') {\n\t\t\t// TODO should this happen in prod too?\n\t\t\te.bind_invalid_checkbox_value();\n\t\t}\n\n\t\tvar value = get();\n\n\t\tif (input === document.activeElement) {\n\t\t\t// we need both, because in non-async mode, render effects run before previous_batch is set\n\t\t\tvar batch = /** @type {Batch} */ (previous_batch ?? current_batch);\n\n\t\t\t// Never rewrite the contents of a focused input. We can get here if, for example,\n\t\t\t// an update is deferred because of async work depending on the input:\n\t\t\t//\n\t\t\t// <input bind:value={query}>\n\t\t\t// <p>{await find(query)}</p>\n\t\t\tif (batches.has(batch)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (is_numberlike_input(input) && value === to_number(input.value)) {\n\t\t\t// handles 0 vs 00 case (see https://github.com/sveltejs/svelte/issues/9959)\n\t\t\treturn;\n\t\t}\n\n\t\tif (input.type === 'date' && !value && !input.value) {\n\t\t\t// Handles the case where a temporarily invalid date is set (while typing, for example with a leading 0 for the day)\n\t\t\t// and prevents this state from clearing the other parts of the date input (see https://github.com/sveltejs/svelte/issues/7897)\n\t\t\treturn;\n\t\t}\n\n\t\t// don't set the value of the input if it's the same to allow\n\t\t// minlength to work properly\n\t\tif (value !== input.value) {\n\t\t\t// @ts-expect-error the value is coerced on assignment\n\t\t\tinput.value = value ?? '';\n\t\t}\n\t});\n}\n\n/** @type {Set<HTMLInputElement[]>} */\nconst pending = new Set();\n\n/**\n * @param {HTMLInputElement[]} inputs\n * @param {null | [number]} group_index\n * @param {HTMLInputElement} input\n * @param {() => unknown} get\n * @param {(value: unknown) => void} set\n * @returns {void}\n */\nexport function bind_group(inputs, group_index, input, get, set = get) {\n\tvar is_checkbox = input.getAttribute('type') === 'checkbox';\n\tvar binding_group = inputs;\n\n\t// needs to be let or related code isn't treeshaken out if it's always false\n\tlet hydration_mismatch = false;\n\n\tif (group_index !== null) {\n\t\tfor (var index of group_index) {\n\t\t\t// @ts-expect-error\n\t\t\tbinding_group = binding_group[index] ??= [];\n\t\t}\n\t}\n\n\tbinding_group.push(input);\n\n\tlisten_to_event_and_reset_event(\n\t\tinput,\n\t\t'change',\n\t\t() => {\n\t\t\t// @ts-ignore\n\t\t\tvar value = input.__value;\n\n\t\t\tif (is_checkbox) {\n\t\t\t\tvalue = get_binding_group_value(binding_group, value, input.checked);\n\t\t\t}\n\n\t\t\tset(value);\n\t\t},\n\t\t// TODO better default value handling\n\t\t() => set(is_checkbox ? [] : null)\n\t);\n\n\trender_effect(() => {\n\t\tvar value = get();\n\n\t\t// If we are hydrating and the value has since changed, then use the update value\n\t\t// from the input instead.\n\t\tif (hydrating && input.defaultChecked !== input.checked) {\n\t\t\thydration_mismatch = true;\n\t\t\treturn;\n\t\t}\n\n\t\tif (is_checkbox) {\n\t\t\tvalue = value || [];\n\t\t\t// @ts-ignore\n\t\t\tinput.checked = value.includes(input.__value);\n\t\t} else {\n\t\t\t// @ts-ignore\n\t\t\tinput.checked = is(input.__value, value);\n\t\t}\n\t});\n\n\tteardown(() => {\n\t\tvar index = binding_group.indexOf(input);\n\n\t\tif (index !== -1) {\n\t\t\tbinding_group.splice(index, 1);\n\t\t}\n\t});\n\n\tif (!pending.has(binding_group)) {\n\t\tpending.add(binding_group);\n\n\t\tqueue_micro_task(() => {\n\t\t\t// necessary to maintain binding group order in all insertion scenarios\n\t\t\tbinding_group.sort((a, b) => (a.compareDocumentPosition(b) === 4 ? -1 : 1));\n\t\t\tpending.delete(binding_group);\n\t\t});\n\t}\n\n\tqueue_micro_task(() => {\n\t\tif (hydration_mismatch) {\n\t\t\tvar value;\n\n\t\t\tif (is_checkbox) {\n\t\t\t\tvalue = get_binding_group_value(binding_group, value, input.checked);\n\t\t\t} else {\n\t\t\t\tvar hydration_input = binding_group.find((input) => input.checked);\n\t\t\t\t// @ts-ignore\n\t\t\t\tvalue = hydration_input?.__value;\n\t\t\t}\n\n\t\t\tset(value);\n\t\t}\n\t});\n}\n\n/**\n * @param {HTMLInputElement} input\n * @param {() => unknown} get\n * @param {(value: unknown) => void} set\n * @returns {void}\n */\nexport function bind_checked(input, get, set = get) {\n\tlisten_to_event_and_reset_event(input, 'change', (is_reset) => {\n\t\tvar value = is_reset ? input.defaultChecked : input.checked;\n\t\tset(value);\n\t});\n\n\tif (\n\t\t// If we are hydrating and the value has since changed,\n\t\t// then use the update value from the input instead.\n\t\t(hydrating && input.defaultChecked !== input.checked) ||\n\t\t// If defaultChecked is set, then checked == defaultChecked\n\t\tuntrack(get) == null\n\t) {\n\t\tset(input.checked);\n\t}\n\n\trender_effect(() => {\n\t\tvar value = get();\n\t\tinput.checked = Boolean(value);\n\t});\n}\n\n/**\n * @template V\n * @param {Array<HTMLInputElement>} group\n * @param {V} __value\n * @param {boolean} checked\n * @returns {V[]}\n */\nfunction get_binding_group_value(group, __value, checked) {\n\t/** @type {Set<V>} */\n\tvar value = new Set();\n\n\tfor (var i = 0; i < group.length; i += 1) {\n\t\tif (group[i].checked) {\n\t\t\t// @ts-ignore\n\t\t\tvalue.add(group[i].__value);\n\t\t}\n\t}\n\n\tif (!checked) {\n\t\tvalue.delete(__value);\n\t}\n\n\treturn Array.from(value);\n}\n\n/**\n * @param {HTMLInputElement} input\n */\nfunction is_numberlike_input(input) {\n\tvar type = input.type;\n\treturn type === 'number' || type === 'range';\n}\n\n/**\n * @param {string} value\n */\nfunction to_number(value) {\n\treturn value === '' ? null : +value;\n}\n\n/**\n * @param {HTMLInputElement} input\n * @param {() => FileList | null} get\n * @param {(value: FileList | null) => void} set\n */\nexport function bind_files(input, get, set = get) {\n\tlisten_to_event_and_reset_event(input, 'change', () => {\n\t\tset(input.files);\n\t});\n\n\tif (\n\t\t// If we are hydrating and the value has since changed,\n\t\t// then use the updated value from the input instead.\n\t\thydrating &&\n\t\tinput.files\n\t) {\n\t\tset(input.files);\n\t}\n\n\trender_effect(() => {\n\t\tinput.files = get();\n\t});\n}\n","import { STATE_SYMBOL } from '#client/constants';\nimport { effect, render_effect } from '../../../reactivity/effects.js';\nimport { untrack } from '../../../runtime.js';\nimport { queue_micro_task } from '../../task.js';\n\n/**\n * @param {any} bound_value\n * @param {Element} element_or_component\n * @returns {boolean}\n */\nfunction is_bound_this(bound_value, element_or_component) {\n\treturn (\n\t\tbound_value === element_or_component || bound_value?.[STATE_SYMBOL] === element_or_component\n\t);\n}\n\n/**\n * @param {any} element_or_component\n * @param {(value: unknown, ...parts: unknown[]) => void} update\n * @param {(...parts: unknown[]) => unknown} get_value\n * @param {() => unknown[]} [get_parts] Set if the this binding is used inside an each block,\n * \t\t\t\t\t\t\t\t\t\treturns all the parts of the each block context that are used in the expression\n * @returns {void}\n */\nexport function bind_this(element_or_component = {}, update, get_value, get_parts) {\n\teffect(() => {\n\t\t/** @type {unknown[]} */\n\t\tvar old_parts;\n\n\t\t/** @type {unknown[]} */\n\t\tvar parts;\n\n\t\trender_effect(() => {\n\t\t\told_parts = parts;\n\t\t\t// We only track changes to the parts, not the value itself to avoid unnecessary reruns.\n\t\t\tparts = get_parts?.() || [];\n\n\t\t\tuntrack(() => {\n\t\t\t\tif (element_or_component !== get_value(...parts)) {\n\t\t\t\t\tupdate(element_or_component, ...parts);\n\t\t\t\t\t// If this is an effect rerun (cause: each block context changes), then nullify the binding at\n\t\t\t\t\t// the previous position if it isn't already taken over by a different effect.\n\t\t\t\t\tif (old_parts && is_bound_this(get_value(...old_parts), element_or_component)) {\n\t\t\t\t\t\tupdate(null, ...old_parts);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\treturn () => {\n\t\t\t// We cannot use effects in the teardown phase, we we use a microtask instead.\n\t\t\tqueue_micro_task(() => {\n\t\t\t\tif (parts && is_bound_this(get_value(...parts), element_or_component)) {\n\t\t\t\t\tupdate(null, ...parts);\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\t});\n\n\treturn element_or_component;\n}\n","/** @import { StoreReferencesContainer } from '#client' */\n/** @import { Store } from '#shared' */\nimport { subscribe_to_store } from '../../../store/utils.js';\nimport { get as get_store } from '../../../store/shared/index.js';\nimport { define_property, noop } from '../../shared/utils.js';\nimport { get } from '../runtime.js';\nimport { teardown } from './effects.js';\nimport { mutable_source, set } from './sources.js';\nimport { DEV } from 'esm-env';\n\n/**\n * Whether or not the prop currently being read is a store binding, as in\n * `<Child bind:x={$y} />`. If it is, we treat the prop as mutable even in\n * runes mode, and skip `binding_property_non_reactive` validation\n */\nlet is_store_binding = false;\n\nlet IS_UNMOUNTED = Symbol();\n\n/**\n * Gets the current value of a store. If the store isn't subscribed to yet, it will create a proxy\n * signal that will be updated when the store is. The store references container is needed to\n * track reassignments to stores and to track the correct component context.\n * @template V\n * @param {Store<V> | null | undefined} store\n * @param {string} store_name\n * @param {StoreReferencesContainer} stores\n * @returns {V}\n */\nexport function store_get(store, store_name, stores) {\n\tconst entry = (stores[store_name] ??= {\n\t\tstore: null,\n\t\tsource: mutable_source(undefined),\n\t\tunsubscribe: noop\n\t});\n\n\tif (DEV) {\n\t\tentry.source.label = store_name;\n\t}\n\n\t// if the component that setup this is already unmounted we don't want to register a subscription\n\tif (entry.store !== store && !(IS_UNMOUNTED in stores)) {\n\t\tentry.unsubscribe();\n\t\tentry.store = store ?? null;\n\n\t\tif (store == null) {\n\t\t\tentry.source.v = undefined; // see synchronous callback comment below\n\t\t\tentry.unsubscribe = noop;\n\t\t} else {\n\t\t\tvar is_synchronous_callback = true;\n\n\t\t\tentry.unsubscribe = subscribe_to_store(store, (v) => {\n\t\t\t\tif (is_synchronous_callback) {\n\t\t\t\t\t// If the first updates to the store value (possibly multiple of them) are synchronously\n\t\t\t\t\t// inside a derived, we will hit the `state_unsafe_mutation` error if we `set` the value\n\t\t\t\t\tentry.source.v = v;\n\t\t\t\t} else {\n\t\t\t\t\tset(entry.source, v);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tis_synchronous_callback = false;\n\t\t}\n\t}\n\n\t// if the component that setup this stores is already unmounted the source will be out of sync\n\t// so we just use the `get` for the stores, less performant but it avoids to create a memory leak\n\t// and it will keep the value consistent\n\tif (store && IS_UNMOUNTED in stores) {\n\t\treturn get_store(store);\n\t}\n\n\treturn get(entry.source);\n}\n\n/**\n * Unsubscribe from a store if it's not the same as the one in the store references container.\n * We need this in addition to `store_get` because someone could unsubscribe from a store but\n * then never subscribe to the new one (if any), causing the subscription to stay open wrongfully.\n * @param {Store<any> | null | undefined} store\n * @param {string} store_name\n * @param {StoreReferencesContainer} stores\n */\nexport function store_unsub(store, store_name, stores) {\n\t/** @type {StoreReferencesContainer[''] | undefined} */\n\tlet entry = stores[store_name];\n\n\tif (entry && entry.store !== store) {\n\t\t// Don't reset store yet, so that store_get above can resubscribe to new store if necessary\n\t\tentry.unsubscribe();\n\t\tentry.unsubscribe = noop;\n\t}\n\n\treturn store;\n}\n\n/**\n * Sets the new value of a store and returns that value.\n * @template V\n * @param {Store<V>} store\n * @param {V} value\n * @returns {V}\n */\nexport function store_set(store, value) {\n\tstore.set(value);\n\treturn value;\n}\n\n/**\n * @param {StoreReferencesContainer} stores\n * @param {string} store_name\n */\nexport function invalidate_store(stores, store_name) {\n\tvar entry = stores[store_name];\n\tif (entry.store !== null) {\n\t\tstore_set(entry.store, entry.source.v);\n\t}\n}\n\n/**\n * Unsubscribes from all auto-subscribed stores on destroy\n * @returns {[StoreReferencesContainer, ()=>void]}\n */\nexport function setup_stores() {\n\t/** @type {StoreReferencesContainer} */\n\tconst stores = {};\n\n\tfunction cleanup() {\n\t\tteardown(() => {\n\t\t\tfor (var store_name in stores) {\n\t\t\t\tconst ref = stores[store_name];\n\t\t\t\tref.unsubscribe();\n\t\t\t}\n\t\t\tdefine_property(stores, IS_UNMOUNTED, {\n\t\t\t\tenumerable: false,\n\t\t\t\tvalue: true\n\t\t\t});\n\t\t});\n\t}\n\n\treturn [stores, cleanup];\n}\n\n/**\n * Updates a store with a new value.\n * @param {Store<V>} store the store to update\n * @param {any} expression the expression that mutates the store\n * @param {V} new_value the new store value\n * @template V\n */\nexport function store_mutate(store, expression, new_value) {\n\tstore.set(new_value);\n\treturn expression;\n}\n\n/**\n * @param {Store<number>} store\n * @param {number} store_value\n * @param {1 | -1} [d]\n * @returns {number}\n */\nexport function update_store(store, store_value, d = 1) {\n\tstore.set(store_value + d);\n\treturn store_value;\n}\n\n/**\n * @param {Store<number>} store\n * @param {number} store_value\n * @param {1 | -1} [d]\n * @returns {number}\n */\nexport function update_pre_store(store, store_value, d = 1) {\n\tconst value = store_value + d;\n\tstore.set(value);\n\treturn value;\n}\n\n/**\n * Called inside prop getters to communicate that the prop is a store binding\n */\nexport function mark_store_binding() {\n\tis_store_binding = true;\n}\n\n/**\n * Returns a tuple that indicates whether `fn()` reads a prop that is a store binding.\n * Used to prevent `binding_property_non_reactive` validation false positives and\n * ensure that these props are treated as mutable even in runes mode\n * @template T\n * @param {() => T} fn\n * @returns {[T, boolean]}\n */\nexport function capture_store_binding(fn) {\n\tvar previous_is_store_binding = is_store_binding;\n\n\ttry {\n\t\tis_store_binding = false;\n\t\treturn [fn(), is_store_binding];\n\t} finally {\n\t\tis_store_binding = previous_is_store_binding;\n\t}\n}\n","/** @import { Effect, Source } from './types.js' */\nimport { DEV } from 'esm-env';\nimport {\n\tPROPS_IS_BINDABLE,\n\tPROPS_IS_IMMUTABLE,\n\tPROPS_IS_LAZY_INITIAL,\n\tPROPS_IS_RUNES,\n\tPROPS_IS_UPDATED\n} from '../../../constants.js';\nimport { get_descriptor, is_function } from '../../shared/utils.js';\nimport { set, source, update } from './sources.js';\nimport { derived, derived_safe_equal } from './deriveds.js';\nimport {\n\tactive_effect,\n\tget,\n\tis_destroying_effect,\n\tset_active_effect,\n\tuntrack\n} from '../runtime.js';\nimport * as e from '../errors.js';\nimport { DESTROYED, LEGACY_PROPS, STATE_SYMBOL } from '#client/constants';\nimport { proxy } from '../proxy.js';\nimport { capture_store_binding } from './store.js';\nimport { legacy_mode_flag } from '../../flags/index.js';\n\n/**\n * @param {((value?: number) => number)} fn\n * @param {1 | -1} [d]\n * @returns {number}\n */\nexport function update_prop(fn, d = 1) {\n\tconst value = fn();\n\tfn(value + d);\n\treturn value;\n}\n\n/**\n * @param {((value?: number) => number)} fn\n * @param {1 | -1} [d]\n * @returns {number}\n */\nexport function update_pre_prop(fn, d = 1) {\n\tconst value = fn() + d;\n\tfn(value);\n\treturn value;\n}\n\n/**\n * The proxy handler for rest props (i.e. `const { x, ...rest } = $props()`).\n * Is passed the full `$$props` object and excludes the named props.\n * @type {ProxyHandler<{ props: Record<string | symbol, unknown>, exclude: Array<string | symbol>, name?: string }>}}\n */\nconst rest_props_handler = {\n\tget(target, key) {\n\t\tif (target.exclude.includes(key)) return;\n\t\treturn target.props[key];\n\t},\n\tset(target, key) {\n\t\tif (DEV) {\n\t\t\t// TODO should this happen in prod too?\n\t\t\te.props_rest_readonly(`${target.name}.${String(key)}`);\n\t\t}\n\n\t\treturn false;\n\t},\n\tgetOwnPropertyDescriptor(target, key) {\n\t\tif (target.exclude.includes(key)) return;\n\t\tif (key in target.props) {\n\t\t\treturn {\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: target.props[key]\n\t\t\t};\n\t\t}\n\t},\n\thas(target, key) {\n\t\tif (target.exclude.includes(key)) return false;\n\t\treturn key in target.props;\n\t},\n\townKeys(target) {\n\t\treturn Reflect.ownKeys(target.props).filter((key) => !target.exclude.includes(key));\n\t}\n};\n\n/**\n * @param {Record<string, unknown>} props\n * @param {string[]} exclude\n * @param {string} [name]\n * @returns {Record<string, unknown>}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function rest_props(props, exclude, name) {\n\treturn new Proxy(\n\t\tDEV ? { props, exclude, name, other: {}, to_proxy: [] } : { props, exclude },\n\t\trest_props_handler\n\t);\n}\n\n/**\n * The proxy handler for legacy $$restProps and $$props\n * @type {ProxyHandler<{ props: Record<string | symbol, unknown>, exclude: Array<string | symbol>, special: Record<string | symbol, (v?: unknown) => unknown>, version: Source<number>, parent_effect: Effect }>}}\n */\nconst legacy_rest_props_handler = {\n\tget(target, key) {\n\t\tif (target.exclude.includes(key)) return;\n\t\tget(target.version);\n\t\treturn key in target.special ? target.special[key]() : target.props[key];\n\t},\n\tset(target, key, value) {\n\t\tif (!(key in target.special)) {\n\t\t\tvar previous_effect = active_effect;\n\n\t\t\ttry {\n\t\t\t\tset_active_effect(target.parent_effect);\n\n\t\t\t\t// Handle props that can temporarily get out of sync with the parent\n\t\t\t\t/** @type {Record<string, (v?: unknown) => unknown>} */\n\t\t\t\ttarget.special[key] = prop(\n\t\t\t\t\t{\n\t\t\t\t\t\tget [key]() {\n\t\t\t\t\t\t\treturn target.props[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t/** @type {string} */ (key),\n\t\t\t\t\tPROPS_IS_UPDATED\n\t\t\t\t);\n\t\t\t} finally {\n\t\t\t\tset_active_effect(previous_effect);\n\t\t\t}\n\t\t}\n\n\t\ttarget.special[key](value);\n\t\tupdate(target.version); // $$props is coarse-grained: when $$props.x is updated, usages of $$props.y etc are also rerun\n\t\treturn true;\n\t},\n\tgetOwnPropertyDescriptor(target, key) {\n\t\tif (target.exclude.includes(key)) return;\n\t\tif (key in target.props) {\n\t\t\treturn {\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: target.props[key]\n\t\t\t};\n\t\t}\n\t},\n\tdeleteProperty(target, key) {\n\t\t// Svelte 4 allowed for deletions on $$restProps\n\t\tif (target.exclude.includes(key)) return true;\n\t\ttarget.exclude.push(key);\n\t\tupdate(target.version);\n\t\treturn true;\n\t},\n\thas(target, key) {\n\t\tif (target.exclude.includes(key)) return false;\n\t\treturn key in target.props;\n\t},\n\townKeys(target) {\n\t\treturn Reflect.ownKeys(target.props).filter((key) => !target.exclude.includes(key));\n\t}\n};\n\n/**\n * @param {Record<string, unknown>} props\n * @param {string[]} exclude\n * @returns {Record<string, unknown>}\n */\nexport function legacy_rest_props(props, exclude) {\n\treturn new Proxy(\n\t\t{\n\t\t\tprops,\n\t\t\texclude,\n\t\t\tspecial: {},\n\t\t\tversion: source(0),\n\t\t\t// TODO this is only necessary because we need to track component\n\t\t\t// destruction inside `prop`, because of `bind:this`, but it\n\t\t\t// seems likely that we can simplify `bind:this` instead\n\t\t\tparent_effect: /** @type {Effect} */ (active_effect)\n\t\t},\n\t\tlegacy_rest_props_handler\n\t);\n}\n\n/**\n * The proxy handler for spread props. Handles the incoming array of props\n * that looks like `() => { dynamic: props }, { static: prop }, ..` and wraps\n * them so that the whole thing is passed to the component as the `$$props` argument.\n * @type {ProxyHandler<{ props: Array<Record<string | symbol, unknown> | (() => Record<string | symbol, unknown>)> }>}}\n */\nconst spread_props_handler = {\n\tget(target, key) {\n\t\tlet i = target.props.length;\n\t\twhile (i--) {\n\t\t\tlet p = target.props[i];\n\t\t\tif (is_function(p)) p = p();\n\t\t\tif (typeof p === 'object' && p !== null && key in p) return p[key];\n\t\t}\n\t},\n\tset(target, key, value) {\n\t\tlet i = target.props.length;\n\t\twhile (i--) {\n\t\t\tlet p = target.props[i];\n\t\t\tif (is_function(p)) p = p();\n\t\t\tconst desc = get_descriptor(p, key);\n\t\t\tif (desc && desc.set) {\n\t\t\t\tdesc.set(value);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\tgetOwnPropertyDescriptor(target, key) {\n\t\tlet i = target.props.length;\n\t\twhile (i--) {\n\t\t\tlet p = target.props[i];\n\t\t\tif (is_function(p)) p = p();\n\t\t\tif (typeof p === 'object' && p !== null && key in p) {\n\t\t\t\tconst descriptor = get_descriptor(p, key);\n\t\t\t\tif (descriptor && !descriptor.configurable) {\n\t\t\t\t\t// Prevent a \"Non-configurability Report Error\": The target is an array, it does\n\t\t\t\t\t// not actually contain this property. If it is now described as non-configurable,\n\t\t\t\t\t// the proxy throws a validation error. Setting it to true avoids that.\n\t\t\t\t\tdescriptor.configurable = true;\n\t\t\t\t}\n\t\t\t\treturn descriptor;\n\t\t\t}\n\t\t}\n\t},\n\thas(target, key) {\n\t\t// To prevent a false positive `is_entry_props` in the `prop` function\n\t\tif (key === STATE_SYMBOL || key === LEGACY_PROPS) return false;\n\n\t\tfor (let p of target.props) {\n\t\t\tif (is_function(p)) p = p();\n\t\t\tif (p != null && key in p) return true;\n\t\t}\n\n\t\treturn false;\n\t},\n\townKeys(target) {\n\t\t/** @type {Array<string | symbol>} */\n\t\tconst keys = [];\n\n\t\tfor (let p of target.props) {\n\t\t\tif (is_function(p)) p = p();\n\t\t\tif (!p) continue;\n\n\t\t\tfor (const key in p) {\n\t\t\t\tif (!keys.includes(key)) keys.push(key);\n\t\t\t}\n\n\t\t\tfor (const key of Object.getOwnPropertySymbols(p)) {\n\t\t\t\tif (!keys.includes(key)) keys.push(key);\n\t\t\t}\n\t\t}\n\n\t\treturn keys;\n\t}\n};\n\n/**\n * @param {Array<Record<string, unknown> | (() => Record<string, unknown>)>} props\n * @returns {any}\n */\nexport function spread_props(...props) {\n\treturn new Proxy({ props }, spread_props_handler);\n}\n\n/**\n * This function is responsible for synchronizing a possibly bound prop with the inner component state.\n * It is used whenever the compiler sees that the component writes to the prop, or when it has a default prop_value.\n * @template V\n * @param {Record<string, unknown>} props\n * @param {string} key\n * @param {number} flags\n * @param {V | (() => V)} [fallback]\n * @returns {(() => V | ((arg: V) => V) | ((arg: V, mutation: boolean) => V))}\n */\nexport function prop(props, key, flags, fallback) {\n\tvar runes = !legacy_mode_flag || (flags & PROPS_IS_RUNES) !== 0;\n\tvar bindable = (flags & PROPS_IS_BINDABLE) !== 0;\n\tvar lazy = (flags & PROPS_IS_LAZY_INITIAL) !== 0;\n\n\tvar fallback_value = /** @type {V} */ (fallback);\n\tvar fallback_dirty = true;\n\n\tvar get_fallback = () => {\n\t\tif (fallback_dirty) {\n\t\t\tfallback_dirty = false;\n\n\t\t\tfallback_value = lazy\n\t\t\t\t? untrack(/** @type {() => V} */ (fallback))\n\t\t\t\t: /** @type {V} */ (fallback);\n\t\t}\n\n\t\treturn fallback_value;\n\t};\n\n\t/** @type {((v: V) => void) | undefined} */\n\tvar setter;\n\n\tif (bindable) {\n\t\t// Can be the case when someone does `mount(Component, props)` with `let props = $state({...})`\n\t\t// or `createClassComponent(Component, props)`\n\t\tvar is_entry_props = STATE_SYMBOL in props || LEGACY_PROPS in props;\n\n\t\tsetter =\n\t\t\tget_descriptor(props, key)?.set ??\n\t\t\t(is_entry_props && key in props ? (v) => (props[key] = v) : undefined);\n\t}\n\n\tvar initial_value;\n\tvar is_store_sub = false;\n\n\tif (bindable) {\n\t\t[initial_value, is_store_sub] = capture_store_binding(() => /** @type {V} */ (props[key]));\n\t} else {\n\t\tinitial_value = /** @type {V} */ (props[key]);\n\t}\n\n\tif (initial_value === undefined && fallback !== undefined) {\n\t\tinitial_value = get_fallback();\n\n\t\tif (setter) {\n\t\t\tif (runes) e.props_invalid_value(key);\n\t\t\tsetter(initial_value);\n\t\t}\n\t}\n\n\t/** @type {() => V} */\n\tvar getter;\n\n\tif (runes) {\n\t\tgetter = () => {\n\t\t\tvar value = /** @type {V} */ (props[key]);\n\t\t\tif (value === undefined) return get_fallback();\n\t\t\tfallback_dirty = true;\n\t\t\treturn value;\n\t\t};\n\t} else {\n\t\tgetter = () => {\n\t\t\tvar value = /** @type {V} */ (props[key]);\n\n\t\t\tif (value !== undefined) {\n\t\t\t\t// in legacy mode, we don't revert to the fallback value\n\t\t\t\t// if the prop goes from defined to undefined. The easiest\n\t\t\t\t// way to model this is to make the fallback undefined\n\t\t\t\t// as soon as the prop has a value\n\t\t\t\tfallback_value = /** @type {V} */ (undefined);\n\t\t\t}\n\n\t\t\treturn value === undefined ? fallback_value : value;\n\t\t};\n\t}\n\n\t// prop is never written to — we only need a getter\n\tif (runes && (flags & PROPS_IS_UPDATED) === 0) {\n\t\treturn getter;\n\t}\n\n\t// prop is written to, but the parent component had `bind:foo` which\n\t// means we can just call `$$props.foo = value` directly\n\tif (setter) {\n\t\tvar legacy_parent = props.$$legacy;\n\t\treturn /** @type {() => V} */ (\n\t\t\tfunction (/** @type {V} */ value, /** @type {boolean} */ mutation) {\n\t\t\t\tif (arguments.length > 0) {\n\t\t\t\t\t// We don't want to notify if the value was mutated and the parent is in runes mode.\n\t\t\t\t\t// In that case the state proxy (if it exists) should take care of the notification.\n\t\t\t\t\t// If the parent is not in runes mode, we need to notify on mutation, too, that the prop\n\t\t\t\t\t// has changed because the parent will not be able to detect the change otherwise.\n\t\t\t\t\tif (!runes || !mutation || legacy_parent || is_store_sub) {\n\t\t\t\t\t\t/** @type {Function} */ (setter)(mutation ? getter() : value);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\n\t\t\t\treturn getter();\n\t\t\t}\n\t\t);\n\t}\n\n\t// Either prop is written to, but there's no binding, which means we\n\t// create a derived that we can write to locally.\n\t// Or we are in legacy mode where we always create a derived to replicate that\n\t// Svelte 4 did not trigger updates when a primitive value was updated to the same value.\n\tvar overridden = false;\n\n\tvar d = ((flags & PROPS_IS_IMMUTABLE) !== 0 ? derived : derived_safe_equal)(() => {\n\t\toverridden = false;\n\t\treturn getter();\n\t});\n\n\tif (DEV) {\n\t\td.label = key;\n\t}\n\n\t// Capture the initial value if it's bindable\n\tif (bindable) get(d);\n\n\tvar parent_effect = /** @type {Effect} */ (active_effect);\n\n\treturn /** @type {() => V} */ (\n\t\tfunction (/** @type {any} */ value, /** @type {boolean} */ mutation) {\n\t\t\tif (arguments.length > 0) {\n\t\t\t\tconst new_value = mutation ? get(d) : runes && bindable ? proxy(value) : value;\n\n\t\t\t\tset(d, new_value);\n\t\t\t\toverridden = true;\n\n\t\t\t\tif (fallback_value !== undefined) {\n\t\t\t\t\tfallback_value = new_value;\n\t\t\t\t}\n\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\t// special case — avoid recalculating the derived if we're in a\n\t\t\t// teardown function and the prop was overridden locally, or the\n\t\t\t// component was already destroyed (this latter part is necessary\n\t\t\t// because `bind:this` can read props after the component has\n\t\t\t// been destroyed. TODO simplify `bind:this`\n\t\t\tif ((is_destroying_effect && overridden) || (parent_effect.f & DESTROYED) !== 0) {\n\t\t\t\treturn d.v;\n\t\t\t}\n\n\t\t\treturn get(d);\n\t\t}\n\t);\n}\n","export const variantClasses = {\r\n primary: 'bg-[var(--color-accent)] text-[var(--color-text)] accent-glow hover-lift',\r\n secondary: 'bg-transparent text-[var(--color-text)] border border-[var(--color-border-strong)] hover:border-[var(--color-accent)] hover-lift',\r\n ghost: 'bg-transparent text-[var(--color-text)] hover:bg-[var(--color-base-2)] hover-lift'\r\n};\r\n\r\nexport const sizeClasses = {\r\n sm: 'px-3 py-1.5 text-sm',\r\n md: 'px-4 py-2 text-base',\r\n lg: 'px-6 py-3 text-lg'\r\n};\r\n","<script lang=\"ts\">\r\n import { variantClasses, sizeClasses } from './buttonClasses';\r\n\r\n interface Props {\r\n variant?: 'primary' | 'secondary' | 'ghost';\r\n size?: 'sm' | 'md' | 'lg';\r\n disabled?: boolean;\r\n type?: 'button' | 'submit' | 'reset';\r\n onclick?: (event: MouseEvent) => void;\r\n children?: import('svelte').Snippet;\r\n }\r\n\r\n let {\r\n variant = 'primary',\r\n size = 'md',\r\n disabled = false,\r\n type = 'button',\r\n onclick,\r\n children\r\n }: Props = $props();\r\n\r\n const baseClasses = 'inline-flex items-center justify-center rounded-[var(--radius-lg)] font-[var(--font-body)] transition-all duration-300 ease-[var(--ease-luxe)] cursor-pointer';\r\n const disabledClasses = 'opacity-50 cursor-not-allowed pointer-events-none';\r\n</script>\r\n\r\n<button\r\n {type}\r\n {disabled}\r\n onclick={onclick}\r\n class=\"{baseClasses} {variantClasses[variant]} {sizeClasses[size]} {disabled ? disabledClasses : ''}\"\r\n>\r\n {@render children?.()}\r\n</button>\r\n","<script lang=\"ts\">\r\n interface Props {\r\n variant?: 'primary' | 'secondary' | 'ghost';\r\n size?: 'sm' | 'md' | 'lg';\r\n shape?: 'circle' | 'square';\r\n disabled?: boolean;\r\n type?: 'button' | 'submit' | 'reset';\r\n ariaLabel: string;\r\n onclick?: (event: MouseEvent) => void;\r\n children?: import('svelte').Snippet;\r\n }\r\n\r\n let {\r\n variant = 'ghost',\r\n size = 'md',\r\n shape = 'circle',\r\n disabled = false,\r\n type = 'button',\r\n ariaLabel,\r\n onclick,\r\n children\r\n }: Props = $props();\r\n\r\n const variantClasses = {\r\n primary: 'bg-[var(--color-accent)] text-[var(--color-text)] accent-glow',\r\n secondary: 'bg-transparent text-[var(--color-text)] border border-[var(--color-border-strong)] hover:border-[var(--color-accent)]',\r\n ghost: 'bg-transparent text-[var(--color-text)] hover:bg-[var(--color-base-2)]'\r\n };\r\n\r\n const sizeClasses = {\r\n sm: 'w-8 h-8 text-sm',\r\n md: 'w-10 h-10 text-base',\r\n lg: 'w-12 h-12 text-lg'\r\n };\r\n\r\n const shapeClasses = {\r\n circle: 'rounded-[var(--radius-pill)]',\r\n square: 'rounded-[var(--radius-lg)]'\r\n };\r\n\r\n const baseClasses = 'inline-flex items-center justify-center font-[var(--font-body)] transition-all duration-300 ease-[var(--ease-luxe)] cursor-pointer hover-lift';\r\n const disabledClasses = 'opacity-50 cursor-not-allowed pointer-events-none';\r\n</script>\r\n\r\n<button\r\n {type}\r\n {disabled}\r\n aria-label={ariaLabel}\r\n onclick={onclick}\r\n class=\"{baseClasses} {variantClasses[variant]} {sizeClasses[size]} {shapeClasses[shape]} {disabled ? disabledClasses : ''}\"\r\n>\r\n {@render children?.()}\r\n</button>\r\n","<script lang=\"ts\">\r\n interface Props {\r\n orientation?: 'horizontal' | 'vertical';\r\n spacing?: boolean;\r\n children?: import('svelte').Snippet;\r\n }\r\n\r\n let {\r\n orientation = 'horizontal',\r\n spacing = false,\r\n children\r\n }: Props = $props();\r\n\r\n const orientationClasses = {\r\n horizontal: 'flex-row',\r\n vertical: 'flex-col'\r\n };\r\n\r\n const mergedBorderClasses = {\r\n horizontal: '[&>*:not(:first-child)]:ml-[-1px] [&>*:not(:first-child):not(:last-child)]:rounded-none [&>*:first-child]:rounded-r-none [&>*:last-child]:rounded-l-none',\r\n vertical: '[&>*:not(:first-child)]:mt-[-1px] [&>*:not(:first-child):not(:last-child)]:rounded-none [&>*:first-child]:rounded-b-none [&>*:last-child]:rounded-t-none'\r\n };\r\n\r\n const spacingClasses = 'gap-2';\r\n const baseClasses = 'flex bg-transparent';\r\n</script>\r\n\r\n<div class=\"{baseClasses} {orientationClasses[orientation]} {spacing ? spacingClasses : mergedBorderClasses[orientation]}\">\r\n {@render children?.()}\r\n</div>\r\n","<script lang=\"ts\">\r\n import { variantClasses, sizeClasses } from './buttonClasses';\r\n\r\n interface Props {\r\n href: string;\r\n variant?: 'primary' | 'secondary' | 'ghost';\r\n size?: 'sm' | 'md' | 'lg';\r\n disabled?: boolean;\r\n target?: '_self' | '_blank' | '_parent' | '_top';\r\n rel?: string;\r\n children?: import('svelte').Snippet;\r\n }\r\n\r\n let {\r\n href,\r\n variant = 'primary',\r\n size = 'md',\r\n disabled = false,\r\n target,\r\n rel,\r\n children\r\n }: Props = $props();\r\n\r\n const baseClasses = 'inline-flex items-center justify-center rounded-[var(--radius-lg)] font-[var(--font-body)] transition-all duration-300 ease-[var(--ease-luxe)] no-underline';\r\n const disabledClasses = 'opacity-50 pointer-events-none';\r\n\r\n const computedRel = $derived(target === '_blank' ? (rel || 'noopener noreferrer') : rel);\r\n</script>\r\n\r\n<a\r\n href={disabled ? undefined : href}\r\n {target}\r\n rel={computedRel}\r\n class=\"{baseClasses} {variantClasses[variant]} {sizeClasses[size]} {disabled ? disabledClasses : ''}\"\r\n>\r\n {@render children?.()}\r\n</a>\r\n","<script lang=\"ts\">\r\n interface Props {\r\n position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';\r\n size?: 'md' | 'lg';\r\n disabled?: boolean;\r\n ariaLabel: string;\r\n onclick?: (event: MouseEvent) => void;\r\n children?: import('svelte').Snippet;\r\n }\r\n\r\n let {\r\n position = 'bottom-right',\r\n size = 'lg',\r\n disabled = false,\r\n ariaLabel,\r\n onclick,\r\n children\r\n }: Props = $props();\r\n\r\n const positionClasses = {\r\n 'bottom-right': 'bottom-6 right-6',\r\n 'bottom-left': 'bottom-6 left-6',\r\n 'top-right': 'top-6 right-6',\r\n 'top-left': 'top-6 left-6'\r\n };\r\n\r\n const sizeClasses = {\r\n md: 'w-14 h-14 text-base',\r\n lg: 'w-16 h-16 text-lg'\r\n };\r\n\r\n const baseClasses = 'fixed z-50 flex items-center justify-center rounded-[var(--radius-pill)] bg-[var(--color-accent)] text-[var(--color-text)] accent-glow hover-lift shadow-[var(--shadow-deep)] transition-all duration-300 ease-[var(--ease-luxe)] cursor-pointer animate-[glow-pulse_3s_ease-in-out_infinite] hover:scale-110';\r\n const disabledClasses = 'opacity-50 cursor-not-allowed pointer-events-none';\r\n</script>\r\n\r\n<button\r\n type=\"button\"\r\n {disabled}\r\n aria-label={ariaLabel}\r\n onclick={onclick}\r\n class=\"{baseClasses} {positionClasses[position]} {sizeClasses[size]} {disabled ? disabledClasses : ''}\"\r\n>\r\n {@render children?.()}\r\n</button>\r\n","export const urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n","/* @ts-self-types=\"./index.d.ts\" */\nimport { urlAlphabet as scopedUrlAlphabet } from './url-alphabet/index.js'\nexport { urlAlphabet } from './url-alphabet/index.js'\nexport let random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nexport let customRandom = (alphabet, defaultSize, getRandom) => {\n let mask = (2 << Math.log2(alphabet.length - 1)) - 1\n let step = -~((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step | 0\n while (j--) {\n id += alphabet[bytes[j] & mask] || ''\n if (id.length >= size) return id\n }\n }\n }\n}\nexport let customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size | 0, random)\nexport let nanoid = (size = 21) => {\n let id = ''\n let bytes = crypto.getRandomValues(new Uint8Array((size |= 0)))\n while (size--) {\n id += scopedUrlAlphabet[bytes[size] & 63]\n }\n return id\n}\n","import { nanoid } from 'nanoid';\r\n\r\n/**\r\n * Generate a unique ID with an optional prefix.\r\n * Uses nanoid for smaller size and better security than Math.random() or crypto.randomUUID().\r\n * \r\n * @param prefix - Optional prefix for the ID (e.g., 'input', 'modal', 'tooltip')\r\n * @returns A unique ID string with the format `prefix-{nanoid}`\r\n * \r\n * @example\r\n * createId('input') // Returns 'input-V1StGXR8_Z5jdHi6B'\r\n * createId('modal') // Returns 'modal-n5yjdHi6BV1StGXR8'\r\n */\r\nexport function createId(prefix: string): string {\r\n return `${prefix}-${nanoid(9)}`;\r\n}\r\n","<script lang=\"ts\">\r\n import { createId } from '../../lib/internal/id.js';\r\n\r\n interface Props {\r\n type?: 'text' | 'email' | 'password' | 'number' | 'tel' | 'url';\r\n value?: string;\r\n placeholder?: string;\r\n disabled?: boolean;\r\n error?: boolean;\r\n label?: string;\r\n id?: string;\r\n oninput?: (event: Event) => void;\r\n }\r\n\r\n let {\r\n type = 'text',\r\n value = $bindable(''),\r\n placeholder,\r\n disabled = false,\r\n error = false,\r\n label,\r\n id = createId('input'),\r\n oninput\r\n }: Props = $props();\r\n\r\n const baseClasses = 'glass-panel rounded-lg px-4 py-3 font-body text-text placeholder:text-text-muted transition-all duration-300 ease-luxe w-full';\r\n const focusClasses = 'focus:outline-none focus:border-accent focus:accent-glow';\r\n const errorClasses = error ? 'border-error' : '';\r\n const disabledClasses = disabled ? 'opacity-50 cursor-not-allowed' : '';\r\n</script>\r\n\r\n{#if label}\r\n <div>\r\n <label for={id} class=\"text-text-soft text-sm mb-2 block\">\r\n {label}\r\n </label>\r\n <input\r\n {type}\r\n {id}\r\n {placeholder}\r\n {disabled}\r\n bind:value\r\n oninput={oninput}\r\n class=\"{baseClasses} {focusClasses} {errorClasses} {disabledClasses}\"\r\n />\r\n </div>\r\n{:else}\r\n <input\r\n {type}\r\n {id}\r\n {placeholder}\r\n {disabled}\r\n bind:value\r\n oninput={oninput}\r\n class=\"{baseClasses} {focusClasses} {errorClasses} {disabledClasses}\"\r\n />\r\n{/if}\r\n","<script lang=\"ts\">\r\n import { createId } from '../../lib/internal/id.js';\r\n\r\n interface Props {\r\n value?: string;\r\n placeholder?: string;\r\n rows?: number;\r\n disabled?: boolean;\r\n error?: boolean;\r\n label?: string;\r\n id?: string;\r\n oninput?: (event: Event) => void;\r\n }\r\n\r\n let {\r\n value = $bindable(''),\r\n placeholder,\r\n rows = 4,\r\n disabled = false,\r\n error = false,\r\n label,\r\n id = createId('textarea'),\r\n oninput\r\n }: Props = $props();\r\n\r\n const baseClasses = 'glass-panel rounded-lg px-4 py-3 font-body text-text placeholder:text-text-muted transition-all duration-300 ease-luxe w-full resize-y min-h-[100px]';\r\n const focusClasses = 'focus:outline-none focus:border-accent focus:accent-glow';\r\n const errorClasses = error ? 'border-error' : '';\r\n const disabledClasses = disabled ? 'opacity-50 cursor-not-allowed' : '';\r\n</script>\r\n\r\n{#if label}\r\n <div>\r\n <label for={id} class=\"text-text-soft text-sm mb-2 block\">\r\n {label}\r\n </label>\r\n <textarea\r\n {id}\r\n {placeholder}\r\n {disabled}\r\n {rows}\r\n bind:value\r\n oninput={oninput}\r\n class=\"{baseClasses} {focusClasses} {errorClasses} {disabledClasses}\"\r\n ></textarea>\r\n </div>\r\n{:else}\r\n <textarea\r\n {id}\r\n {placeholder}\r\n {disabled}\r\n {rows}\r\n bind:value\r\n oninput={oninput}\r\n class=\"{baseClasses} {focusClasses} {errorClasses} {disabledClasses}\"\r\n ></textarea>\r\n{/if}\r\n","<script lang=\"ts\">\r\n import { createId } from '../../lib/internal/id.js';\r\n\r\n interface Props {\r\n value?: string;\r\n options: Array<{ value: string; label: string }>;\r\n placeholder?: string;\r\n disabled?: boolean;\r\n error?: boolean;\r\n label?: string;\r\n id?: string;\r\n onchange?: (event: Event) => void;\r\n }\r\n\r\n let {\r\n value = $bindable(''),\r\n options,\r\n placeholder,\r\n disabled = false,\r\n error = false,\r\n label,\r\n id = createId('select'),\r\n onchange\r\n }: Props = $props();\r\n\r\n const chevronIcon = \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none'%3E%3Cpath d='M2.5 4.5L6 8L9.5 4.5' stroke='%23ADADAD' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\";\r\n \r\n const baseClasses = `glass-panel rounded-lg px-4 py-3 pr-10 font-body text-text transition-all duration-300 ease-luxe w-full appearance-none bg-no-repeat bg-[right_1rem_center] bg-[length:12px]`;\r\n const focusClasses = 'focus:outline-none focus:border-accent focus:accent-glow';\r\n const errorClasses = error ? 'border-error' : '';\r\n const disabledClasses = disabled ? 'opacity-50 cursor-not-allowed' : '';\r\n</script>\r\n\r\n{#if label}\r\n <div>\r\n <label for={id} class=\"text-text-soft text-sm mb-2 block\">\r\n {label}\r\n </label>\r\n <select\r\n {id}\r\n {disabled}\r\n bind:value\r\n onchange={onchange}\r\n class=\"{baseClasses} {focusClasses} {errorClasses} {disabledClasses}\"\r\n style={`background-image: url('${chevronIcon}')`}\r\n >\r\n {#if placeholder}\r\n <option disabled value=\"\">{placeholder}</option>\r\n {/if}\r\n {#each options as option}\r\n <option value={option.value}>{option.label}</option>\r\n {/each}\r\n </select>\r\n </div>\r\n{:else}\r\n <select\r\n {id}\r\n {disabled}\r\n bind:value\r\n onchange={onchange}\r\n class=\"{baseClasses} {focusClasses} {errorClasses} {disabledClasses}\"\r\n style={`background-image: url('${chevronIcon}')`}\r\n >\r\n {#if placeholder}\r\n <option disabled value=\"\">{placeholder}</option>\r\n {/if}\r\n {#each options as option}\r\n <option value={option.value}>{option.label}</option>\r\n {/each}\r\n </select>\r\n{/if}\r\n","<script lang=\"ts\">\r\n import { createId } from '../../lib/internal/id.js';\r\n\r\n interface Props {\r\n checked?: boolean;\r\n disabled?: boolean;\r\n label?: string;\r\n id?: string;\r\n onchange?: (event: Event) => void;\r\n }\r\n\r\n let {\r\n checked = $bindable(false),\r\n disabled = false,\r\n label,\r\n id = createId('checkbox'),\r\n onchange\r\n }: Props = $props();\r\n</script>\r\n\r\n<label for={id} class=\"flex items-center gap-2 cursor-pointer {disabled ? 'opacity-50 cursor-not-allowed' : ''}\">\r\n <input\r\n type=\"checkbox\"\r\n {id}\r\n {disabled}\r\n bind:checked\r\n onchange={onchange}\r\n class=\"w-5 h-5 rounded-sm border-2 border-border-strong bg-transparent appearance-none transition-all duration-200 ease-luxe cursor-pointer checked:bg-accent checked:border-accent checked:accent-glow focus:outline-none focus:ring-2 focus:ring-accent focus:ring-offset-2 focus:ring-offset-base-1 relative {disabled ? 'cursor-not-allowed' : ''}\"\r\n />\r\n {#if label}\r\n <span class=\"text-text text-sm select-none\">\r\n {label}\r\n </span>\r\n {/if}\r\n</label>\r\n\r\n<style>\r\n input[type=\"checkbox\"]:checked::after {\r\n content: '';\r\n position: absolute;\r\n left: 50%;\r\n top: 50%;\r\n transform: translate(-50%, -50%);\r\n width: 10px;\r\n height: 10px;\r\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10' fill='none'%3E%3Cpath d='M2 5L4 7L8 3' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\");\r\n background-size: contain;\r\n background-repeat: no-repeat;\r\n background-position: center;\r\n }\r\n</style>\r\n","<script lang=\"ts\">\r\n import { createId } from '../../lib/internal/id.js';\r\n\r\n interface Props {\r\n checked?: boolean;\r\n disabled?: boolean;\r\n label?: string;\r\n id?: string;\r\n onchange?: (event: Event) => void;\r\n }\r\n\r\n let {\r\n checked = $bindable(false),\r\n disabled = false,\r\n label,\r\n id = createId('switch'),\r\n onchange\r\n }: Props = $props();\r\n</script>\r\n\r\n<label for={id} class=\"flex items-center gap-2 cursor-pointer {disabled ? 'opacity-50 cursor-not-allowed' : ''}\">\r\n <input\r\n type=\"checkbox\"\r\n role=\"switch\"\r\n aria-checked={checked}\r\n {id}\r\n {disabled}\r\n bind:checked\r\n onchange={onchange}\r\n class=\"w-11 h-6 rounded-pill bg-base-3 border border-border appearance-none transition-all duration-300 ease-luxe cursor-pointer checked:bg-accent checked:accent-glow focus:outline-none focus:ring-2 focus:ring-accent focus:ring-offset-2 focus:ring-offset-base-1 relative {disabled ? 'cursor-not-allowed' : ''}\"\r\n />\r\n {#if label}\r\n <span class=\"text-text text-sm select-none\">\r\n {label}\r\n </span>\r\n {/if}\r\n</label>\r\n\r\n<style>\r\n input[type=\"checkbox\"]::after {\r\n content: '';\r\n position: absolute;\r\n left: 0.25rem;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n width: 1rem;\r\n height: 1rem;\r\n border-radius: var(--radius-pill);\r\n background: var(--color-text);\r\n transition: all 0.3s var(--ease-luxe);\r\n }\r\n\r\n input[type=\"checkbox\"]:checked::after {\r\n transform: translate(1.25rem, -50%);\r\n }\r\n</style>\r\n","<script lang=\"ts\">\r\n interface Props {\r\n value?: string;\r\n options: Array<{ value: string; label: string }>;\r\n name: string;\r\n disabled?: boolean;\r\n orientation?: 'vertical' | 'horizontal';\r\n label?: string;\r\n onchange?: (event: Event) => void;\r\n }\r\n\r\n let {\r\n value = $bindable(''),\r\n options,\r\n name,\r\n disabled = false,\r\n orientation = 'vertical',\r\n label,\r\n onchange\r\n }: Props = $props();\r\n\r\n const containerClasses = $derived(orientation === 'vertical' ? 'flex flex-col gap-3' : 'flex flex-row gap-4');\r\n</script>\r\n\r\n{#if label}\r\n <fieldset class={disabled ? 'opacity-50' : ''}>\r\n <legend class=\"text-[var(--color-text-soft)] text-sm mb-3 block\">\r\n {label}\r\n </legend>\r\n <div class={containerClasses}>\r\n {#each options as option}\r\n {@const radioId = `${name}-${option.value}`}\r\n <label for={radioId} class=\"flex items-center gap-2 cursor-pointer {disabled ? 'cursor-not-allowed' : ''}\">\r\n <input\r\n type=\"radio\"\r\n id={radioId}\r\n {name}\r\n value={option.value}\r\n {disabled}\r\n bind:group={value}\r\n onchange={onchange}\r\n class=\"w-5 h-5 rounded-[var(--radius-pill)] border-2 border-[var(--color-border-strong)] bg-transparent appearance-none transition-all duration-200 ease-[var(--ease-luxe)] cursor-pointer checked:border-[var(--color-accent)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent)] focus:ring-offset-2 focus:ring-offset-[var(--color-base-1)] relative {disabled ? 'cursor-not-allowed' : ''}\"\r\n />\r\n <span class=\"text-[var(--color-text)] text-sm select-none\">\r\n {option.label}\r\n </span>\r\n </label>\r\n {/each}\r\n </div>\r\n </fieldset>\r\n{:else}\r\n <div class={containerClasses}>\r\n {#each options as option}\r\n {@const radioId = `${name}-${option.value}`}\r\n <label for={radioId} class=\"flex items-center gap-2 cursor-pointer {disabled ? 'opacity-50 cursor-not-allowed' : ''}\">\r\n <input\r\n type=\"radio\"\r\n id={radioId}\r\n {name}\r\n value={option.value}\r\n {disabled}\r\n bind:group={value}\r\n onchange={onchange}\r\n class=\"w-5 h-5 rounded-[var(--radius-pill)] border-2 border-[var(--color-border-strong)] bg-transparent appearance-none transition-all duration-200 ease-[var(--ease-luxe)] cursor-pointer checked:border-[var(--color-accent)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent)] focus:ring-offset-2 focus:ring-offset-[var(--color-base-1)] relative {disabled ? 'cursor-not-allowed' : ''}\"\r\n />\r\n <span class=\"text-[var(--color-text)] text-sm select-none\">\r\n {option.label}\r\n </span>\r\n </label>\r\n {/each}\r\n </div>\r\n{/if}\r\n\r\n<style>\r\n input[type=\"radio\"]:checked::after {\r\n content: '';\r\n position: absolute;\r\n left: 50%;\r\n top: 50%;\r\n transform: translate(-50%, -50%);\r\n width: 0.625rem;\r\n height: 0.625rem;\r\n border-radius: var(--radius-pill);\r\n background: var(--color-accent);\r\n box-shadow: var(--shadow-accent-glow);\r\n }\r\n</style>\r\n","<script lang=\"ts\">\r\n import { createId } from '../../lib/internal/id.js';\r\n\r\n interface Props {\r\n value?: number;\r\n min?: number;\r\n max?: number;\r\n step?: number;\r\n disabled?: boolean;\r\n label?: string;\r\n showValue?: boolean;\r\n id?: string;\r\n oninput?: (event: Event) => void;\r\n }\r\n\r\n let {\r\n value = $bindable(0),\r\n min = 0,\r\n max = 100,\r\n step = 1,\r\n disabled = false,\r\n label,\r\n showValue = true,\r\n id = createId('range'),\r\n oninput\r\n }: Props = $props();\r\n\r\n const percentage = $derived(max === min ? 0 : ((value - min) / (max - min)) * 100);\r\n</script>\r\n\r\n<div>\r\n {#if label || showValue}\r\n <div class=\"flex justify-between items-center mb-2\">\r\n {#if label}\r\n <label for={id} class=\"text-text-soft text-sm\">\r\n {label}\r\n </label>\r\n {/if}\r\n {#if showValue}\r\n <span class=\"text-text-soft text-sm\">\r\n {value}\r\n </span>\r\n {/if}\r\n </div>\r\n {/if}\r\n <input\r\n type=\"range\"\r\n {id}\r\n {min}\r\n {max}\r\n {step}\r\n {disabled}\r\n bind:value\r\n oninput={oninput}\r\n aria-valuemin={min}\r\n aria-valuemax={max}\r\n aria-valuenow={value}\r\n class=\"w-full h-2 rounded-pill appearance-none cursor-pointer transition-opacity duration-200 {disabled ? 'opacity-50 cursor-not-allowed' : ''}\"\r\n style=\"background: linear-gradient(to right, var(--color-accent) 0%, var(--color-accent) {percentage}%, var(--color-base-3) {percentage}%, var(--color-base-3) 100%); border: 1px solid var(--color-border);\"\r\n />\r\n</div>\r\n\r\n<style>\r\n input[type=\"range\"]::-webkit-slider-thumb {\r\n appearance: none;\r\n width: 1.25rem;\r\n height: 1.25rem;\r\n border-radius: var(--radius-pill);\r\n background: var(--color-accent);\r\n box-shadow: var(--shadow-accent-glow);\r\n cursor: pointer;\r\n transition: transform 0.2s var(--ease-luxe);\r\n }\r\n\r\n input[type=\"range\"]::-webkit-slider-thumb:hover {\r\n transform: scale(1.1);\r\n }\r\n\r\n input[type=\"range\"]::-moz-range-thumb {\r\n appearance: none;\r\n width: 1.25rem;\r\n height: 1.25rem;\r\n border-radius: var(--radius-pill);\r\n background: var(--color-accent);\r\n box-shadow: var(--shadow-accent-glow);\r\n cursor: pointer;\r\n transition: transform 0.2s var(--ease-luxe);\r\n border: none;\r\n }\r\n\r\n input[type=\"range\"]::-moz-range-thumb:hover {\r\n transform: scale(1.1);\r\n }\r\n\r\n input[type=\"range\"]:focus::-webkit-slider-thumb {\r\n box-shadow: \r\n var(--shadow-accent-glow),\r\n 0 0 0 3px var(--color-base-1),\r\n 0 0 0 5px var(--color-accent);\r\n }\r\n\r\n input[type=\"range\"]:focus::-moz-range-thumb {\r\n box-shadow: \r\n var(--shadow-accent-glow),\r\n 0 0 0 3px var(--color-base-1),\r\n 0 0 0 5px var(--color-accent);\r\n }\r\n\r\n input[type=\"range\"]:disabled::-webkit-slider-thumb {\r\n cursor: not-allowed;\r\n }\r\n\r\n input[type=\"range\"]:disabled::-moz-range-thumb {\r\n cursor: not-allowed;\r\n }\r\n</style>\r\n","<script lang=\"ts\">\r\n import { createId } from '../../lib/internal/id.js';\r\n\r\n /**\r\n * FileUpload component props.\r\n * \r\n * The `onchange` callback receives an event object with the following shape:\r\n * `{ target: { files: FileList } }` for both drag-and-drop and click-based selection.\r\n */\r\n interface Props {\r\n files?: FileList | null;\r\n accept?: string;\r\n multiple?: boolean;\r\n disabled?: boolean;\r\n label?: string;\r\n id?: string;\r\n onchange?: (event: { target: { files: FileList } }) => void;\r\n }\r\n\r\n let {\r\n files = $bindable(null),\r\n accept,\r\n multiple = false,\r\n disabled = false,\r\n label,\r\n id = createId('file-upload'),\r\n onchange\r\n }: Props = $props();\r\n\r\n let isDragging = $state(false);\r\n let inputElement: HTMLInputElement;\r\n\r\n function handleDragOver(event: DragEvent) {\r\n event.preventDefault();\r\n if (!disabled) {\r\n isDragging = true;\r\n }\r\n }\r\n\r\n function handleDragLeave() {\r\n isDragging = false;\r\n }\r\n\r\n function handleDrop(event: DragEvent) {\r\n event.preventDefault();\r\n isDragging = false;\r\n \r\n if (!disabled && event.dataTransfer?.files) {\r\n files = event.dataTransfer.files;\r\n if (onchange) {\r\n // Call onchange directly with synthetic event object\r\n onchange({ target: { files: event.dataTransfer.files } });\r\n }\r\n }\r\n }\r\n\r\n function handleClick() {\r\n if (!disabled) {\r\n inputElement?.click();\r\n }\r\n }\r\n\r\n function handleInputChange(event: Event) {\r\n const input = event.target as HTMLInputElement;\r\n if (onchange && input.files) {\r\n // Call onchange with consistent event shape\r\n onchange({ target: { files: input.files } });\r\n }\r\n }\r\n\r\n const fileList = $derived(files ? Array.from(files) : []);\r\n</script>\r\n\r\n<div>\r\n {#if label}\r\n <div class=\"text-text-soft text-sm mb-2 block\">\r\n {label}\r\n </div>\r\n {/if}\r\n \r\n <input\r\n type=\"file\"\r\n {id}\r\n {accept}\r\n {multiple}\r\n {disabled}\r\n bind:this={inputElement}\r\n bind:files\r\n onchange={handleInputChange}\r\n class=\"hidden\"\r\n />\r\n \r\n <div\r\n role=\"button\"\r\n tabindex={disabled ? -1 : 0}\r\n aria-label=\"Click or drag files to upload\"\r\n ondragover={handleDragOver}\r\n ondragleave={handleDragLeave}\r\n ondrop={handleDrop}\r\n onclick={handleClick}\r\n onkeydown={(e) => e.key === 'Enter' && handleClick()}\r\n class=\"glass-panel rounded-lg p-8 text-center cursor-pointer transition-all duration-300 ease-luxe {isDragging ? 'border-2 border-accent accent-glow bg-base-2' : ''} {disabled ? 'opacity-50 cursor-not-allowed pointer-events-none' : ''}\"\r\n >\r\n <div class=\"flex flex-col items-center gap-2\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"48\"\r\n height=\"48\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n class=\"text-text-soft\"\r\n >\r\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\r\n <polyline points=\"17 8 12 3 7 8\" />\r\n <line x1=\"12\" y1=\"3\" x2=\"12\" y2=\"15\" />\r\n </svg>\r\n \r\n <div>\r\n <p class=\"text-text text-sm font-medium\">\r\n Click to upload or drag and drop\r\n </p>\r\n <p class=\"text-text-muted text-xs mt-1\">\r\n {accept ? `Accepted formats: ${accept}` : 'Any file type'}\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {#if fileList.length > 0}\r\n <div class=\"mt-4\">\r\n <p class=\"text-text-soft text-xs mb-2\">\r\n Selected files:\r\n </p>\r\n <ul class=\"space-y-1\">\r\n {#each fileList as file}\r\n <li class=\"text-text text-xs flex items-center gap-2\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"12\"\r\n height=\"12\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n >\r\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\" />\r\n <polyline points=\"14 2 14 8 20 8\" />\r\n </svg>\r\n <span>{file.name}</span>\r\n <span class=\"text-text-muted\">\r\n ({(file.size / 1024).toFixed(1)} KB)\r\n </span>\r\n </li>\r\n {/each}\r\n </ul>\r\n </div>\r\n {/if}\r\n</div>\r\n","import { enable_legacy_mode_flag } from './index.js';\n\nenable_legacy_mode_flag();\n","<script lang=\"ts\">\r\n // No props needed for standard slot usage\r\n</script>\r\n\r\n<div class=\"flex items-stretch rounded-[var(--radius-lg)] overflow-hidden glass-panel [&>*:not(:first-child)]:ml-[-1px] [&>*:not(:first-child):not(:last-child)]:rounded-none [&>*:first-child]:rounded-r-none [&>*:last-child]:rounded-l-none\">\r\n <slot />\r\n</div>\r\n","<script lang=\"ts\">\r\n import type { Snippet } from 'svelte';\r\n\r\n interface Props {\r\n padding?: 'none' | 'sm' | 'md' | 'lg';\r\n hoverable?: boolean;\r\n children?: Snippet;\r\n header?: Snippet;\r\n footer?: Snippet;\r\n }\r\n\r\n let {\r\n padding = 'md',\r\n hoverable = false,\r\n children,\r\n header,\r\n footer\r\n }: Props = $props();\r\n\r\n const paddingClasses = {\r\n none: 'p-0',\r\n sm: 'p-4',\r\n md: 'p-6',\r\n lg: 'p-8'\r\n };\r\n\r\n const baseClasses = 'glass-panel rounded-xl transition-all duration-300 ease-[var(--ease-luxe)]';\r\n</script>\r\n\r\n<div class=\"{baseClasses} {hoverable ? 'hover-lift' : ''} {paddingClasses[padding]}\">\r\n {#if header}\r\n <div class=\"pb-4 mb-4 border-b border-border\">\r\n {@render header()}\r\n </div>\r\n {/if}\r\n\r\n <div>\r\n {@render children?.()}\r\n </div>\r\n\r\n {#if footer}\r\n <div class=\"pt-4 mt-4 border-t border-border\">\r\n {@render footer()}\r\n </div>\r\n {/if}\r\n</div>\r\n","<script lang=\"ts\">\r\n import type { Snippet } from 'svelte';\r\n\r\n interface Props {\r\n padding?: 'none' | 'sm' | 'md' | 'lg';\r\n rounded?: boolean;\r\n glass?: boolean;\r\n children?: Snippet;\r\n }\r\n\r\n let {\r\n padding = 'md',\r\n rounded = true,\r\n glass = true,\r\n children\r\n }: Props = $props();\r\n\r\n const paddingClasses = {\r\n none: 'p-0',\r\n sm: 'p-4',\r\n md: 'p-6',\r\n lg: 'p-8'\r\n };\r\n\r\n const glassClasses = glass ? 'glass-panel' : 'bg-[var(--color-panel)]';\r\n const roundedClasses = rounded ? 'rounded-[var(--radius-lg)]' : '';\r\n const baseClasses = 'transition-all duration-300 ease-[var(--ease-luxe)]';\r\n</script>\r\n\r\n<div class=\"{baseClasses} {glassClasses} {roundedClasses} {paddingClasses[padding]}\">\r\n {@render children?.()}\r\n</div>\r\n","<script lang=\"ts\">\r\n import type { Snippet } from 'svelte';\r\n\r\n interface Props {\r\n cols?: 1 | 2 | 3 | 4 | 6 | 12;\r\n gap?: 'none' | 'sm' | 'md' | 'lg' | 'xl';\r\n responsive?: boolean;\r\n children?: Snippet;\r\n }\r\n\r\n let {\r\n cols = 3,\r\n gap = 'md',\r\n responsive = true,\r\n children\r\n }: Props = $props();\r\n\r\n const colsClasses = {\r\n 1: 'grid-cols-1',\r\n 2: 'grid-cols-2',\r\n 3: 'grid-cols-3',\r\n 4: 'grid-cols-4',\r\n 6: 'grid-cols-6',\r\n 12: 'grid-cols-12'\r\n };\r\n\r\n const gapClasses = {\r\n none: 'gap-0',\r\n sm: 'gap-2',\r\n md: 'gap-4',\r\n lg: 'gap-6',\r\n xl: 'gap-8'\r\n };\r\n\r\n const responsiveClasses = responsive\r\n ? `grid-cols-1 ${cols >= 2 ? 'md:grid-cols-2' : ''} lg:${colsClasses[cols]}`\r\n : colsClasses[cols];\r\n\r\n const baseClasses = 'grid w-full';\r\n</script>\r\n\r\n<div class=\"{baseClasses} {responsiveClasses} {gapClasses[gap]}\">\r\n {@render children?.()}\r\n</div>\r\n","<script lang=\"ts\">\r\n import type { Snippet } from 'svelte';\r\n\r\n interface Props {\r\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\r\n centered?: boolean;\r\n padding?: boolean;\r\n children?: Snippet;\r\n }\r\n\r\n let {\r\n size = 'lg',\r\n centered = true,\r\n padding = true,\r\n children\r\n }: Props = $props();\r\n\r\n const sizeClasses = {\r\n sm: 'max-w-screen-sm',\r\n md: 'max-w-screen-md',\r\n lg: 'max-w-screen-lg',\r\n xl: 'max-w-screen-xl',\r\n full: 'max-w-full'\r\n };\r\n\r\n const centeredClasses = centered ? 'mx-auto' : '';\r\n const paddingClasses = padding ? 'px-4 md:px-6 lg:px-8' : '';\r\n const baseClasses = 'w-full';\r\n</script>\r\n\r\n<div class=\"{baseClasses} {sizeClasses[size]} {centeredClasses} {paddingClasses}\">\r\n {@render children?.()}\r\n</div>\r\n","<script lang=\"ts\">\r\n import type { Snippet } from 'svelte';\r\n\r\n interface Props {\r\n level?: 1 | 2 | 3 | 4 | 5 | 6;\r\n glow?: boolean;\r\n subtitle?: string;\r\n align?: 'left' | 'center' | 'right';\r\n children?: Snippet;\r\n }\r\n\r\n let {\r\n level = 2,\r\n glow = true,\r\n subtitle,\r\n align = 'left',\r\n children\r\n }: Props = $props();\r\n\r\n const headingTag = `h${level}`;\r\n const glowClasses = glow ? 'text-glow' : '';\r\n const alignClasses = `text-${align}`;\r\n \r\n const headingClasses = `font-[var(--font-heading)] text-[length:var(--text-h${level}-size)] font-[number:var(--text-h${level}-weight)] leading-[var(--text-h${level}-line-height)] text-[var(--color-text)] ${glowClasses} ${alignClasses}`;\r\n const subtitleClasses = `mt-2 font-[var(--font-body)] text-[length:var(--text-body-size)] text-[var(--color-text-soft)] ${alignClasses}`;\r\n</script>\r\n\r\n<div class=\"mb-8\">\r\n <svelte:element this={headingTag} class={headingClasses}>\r\n {@render children?.()}\r\n </svelte:element>\r\n\r\n {#if subtitle}\r\n <p class={subtitleClasses}>\r\n {subtitle}\r\n </p>\r\n {/if}\r\n</div>\r\n","<script lang=\"ts\">\r\n interface Props {\r\n orientation?: 'horizontal' | 'vertical';\r\n spacing?: 'none' | 'sm' | 'md' | 'lg';\r\n thickness?: 'thin' | 'normal' | 'thick';\r\n variant?: 'default' | 'strong';\r\n }\r\n\r\n let {\r\n orientation = 'horizontal',\r\n spacing = 'md',\r\n thickness = 'normal',\r\n variant = 'default'\r\n }: Props = $props();\r\n\r\n const horizontalThicknessMap = {\r\n thin: 'border-t-[1px]',\r\n normal: 'border-t-[1px]',\r\n thick: 'border-t-[2px]'\r\n };\r\n\r\n const verticalThicknessMap = {\r\n thin: 'border-l-[1px]',\r\n normal: 'border-l-[1px]',\r\n thick: 'border-l-[2px]'\r\n };\r\n\r\n const horizontalSpacing = {\r\n none: 'my-0',\r\n sm: 'my-2',\r\n md: 'my-4',\r\n lg: 'my-6'\r\n };\r\n\r\n const verticalSpacing = {\r\n none: 'mx-0',\r\n sm: 'mx-2',\r\n md: 'mx-4',\r\n lg: 'mx-6'\r\n };\r\n\r\n const borderColor = variant === 'strong' ? 'border-[var(--color-border-strong)]' : 'border-[var(--color-border)]';\r\n\r\n const horizontalClasses = `w-full ${horizontalThicknessMap[thickness]} ${borderColor} ${horizontalSpacing[spacing]}`;\r\n const verticalClasses = `h-full ${verticalThicknessMap[thickness]} ${borderColor} ${verticalSpacing[spacing]}`;\r\n</script>\r\n\r\n{#if orientation === 'horizontal'}\r\n <hr class={horizontalClasses} />\r\n{:else}\r\n <div class={verticalClasses}></div>\r\n{/if}\r\n","<script lang=\"ts\">\r\n import type { Snippet } from 'svelte';\r\n\r\n interface Props {\r\n position?: 'sticky' | 'fixed';\r\n height?: 'sm' | 'md' | 'lg';\r\n children?: Snippet;\r\n }\r\n\r\n let {\r\n position = 'sticky',\r\n height = 'md',\r\n children\r\n }: Props = $props();\r\n\r\n const positionClasses = {\r\n sticky: 'sticky top-0',\r\n fixed: 'fixed top-0 left-0 right-0'\r\n };\r\n\r\n const heightClasses = {\r\n sm: 'h-14',\r\n md: 'h-16',\r\n lg: 'h-20'\r\n };\r\n\r\n const baseClasses = 'z-40 glass-panel flex items-center justify-between px-4 md:px-6 lg:px-8 transition-all duration-300 ease-[var(--ease-luxe)]';\r\n</script>\r\n\r\n<nav class=\"{baseClasses} {positionClasses[position]} {heightClasses[height]}\">\r\n {@render children?.()}\r\n</nav>\r\n","<script lang=\"ts\">\r\n import type { Snippet } from 'svelte';\r\n\r\n interface Props {\r\n open?: boolean;\r\n side?: 'left' | 'right';\r\n width?: 'sm' | 'md' | 'lg';\r\n children?: Snippet;\r\n }\r\n\r\n let {\r\n open = $bindable(true),\r\n side = 'left',\r\n width = 'md',\r\n children\r\n }: Props = $props();\r\n\r\n const widthClasses = {\r\n sm: { open: 'w-56', collapsed: 'w-14' },\r\n md: { open: 'w-64', collapsed: 'w-16' },\r\n lg: { open: 'w-80', collapsed: 'w-20' }\r\n };\r\n\r\n const sideClasses = {\r\n left: 'left-0',\r\n right: 'right-0'\r\n };\r\n\r\n const currentWidth = $derived(open ? widthClasses[width].open : widthClasses[width].collapsed);\r\n const baseClasses = 'fixed top-0 bottom-0 z-30 glass-panel overflow-y-auto overflow-x-hidden transition-all duration-300 ease-[var(--ease-luxe)]';\r\n</script>\r\n\r\n<aside class=\"{baseClasses} {sideClasses[side]} {currentWidth}\">\r\n {@render children?.()}\r\n</aside>\r\n","<script lang=\"ts\">\r\n\r\n interface Tab {\r\n id: string;\r\n label: string;\r\n disabled?: boolean;\r\n }\r\n\r\n interface Props {\r\n tabs: Tab[];\r\n activeTab?: string;\r\n orientation?: 'horizontal' | 'vertical';\r\n variant?: 'default' | 'pills';\r\n onTabChange?: (tabId: string) => void;\r\n }\r\n\r\n let {\r\n tabs,\r\n activeTab = $bindable(''),\r\n orientation = 'horizontal',\r\n variant = 'default',\r\n onTabChange\r\n }: Props = $props();\r\n\r\n function handleTabClick(tabId: string, disabled?: boolean) {\r\n if (disabled) return;\r\n activeTab = tabId;\r\n if (onTabChange) {\r\n onTabChange(tabId);\r\n }\r\n }\r\n\r\n const orientationClasses = {\r\n horizontal: 'flex flex-row',\r\n vertical: 'flex flex-col'\r\n };\r\n\r\n const radiusClass = variant === 'pills' ? 'rounded-pill' : 'rounded-md';\r\n</script>\r\n\r\n<div role=\"tablist\" class=\"{orientationClasses[orientation]} gap-1 p-1\">\r\n {#each tabs as tab}\r\n <button\r\n role=\"tab\"\r\n aria-selected={activeTab === tab.id}\r\n aria-disabled={tab.disabled}\r\n onclick={() => handleTabClick(tab.id, tab.disabled)}\r\n disabled={tab.disabled}\r\n class=\"px-4 py-2 {radiusClass} font-body text-sm transition-all duration-300 ease-luxe {activeTab === tab.id ? 'bg-accent text-text accent-glow' : 'text-text-soft hover:bg-base-3'} {tab.disabled ? 'opacity-50 pointer-events-none' : 'cursor-pointer'}\"\r\n >\r\n {tab.label}\r\n </button>\r\n {/each}\r\n</div>\r\n","<script lang=\"ts\">\r\n import type { Snippet } from 'svelte';\r\n\r\n interface BreadcrumbItem {\r\n label: string;\r\n href?: string;\r\n onclick?: () => void;\r\n }\r\n\r\n interface Props {\r\n items: BreadcrumbItem[];\r\n separator?: string;\r\n separatorIcon?: Snippet;\r\n }\r\n\r\n let {\r\n items,\r\n separator = '/',\r\n separatorIcon\r\n }: Props = $props();\r\n</script>\r\n\r\n<nav role=\"navigation\" aria-label=\"Breadcrumb\">\r\n <ol class=\"flex items-center gap-2\">\r\n {#each items as item, index}\r\n <li class=\"flex items-center gap-2\">\r\n {#if item.href}\r\n <a\r\n href={item.href}\r\n class=\"text-sm font-[var(--font-body)] text-[var(--color-text-soft)] hover:text-[var(--color-accent)] hover:underline transition-colors duration-200 ease-[var(--ease-luxe)]\"\r\n >\r\n {item.label}\r\n </a>\r\n {:else if item.onclick}\r\n <button\r\n onclick={item.onclick}\r\n class=\"text-sm font-[var(--font-body)] text-[var(--color-text-soft)] hover:text-[var(--color-accent)] hover:underline transition-colors duration-200 ease-[var(--ease-luxe)] cursor-pointer\"\r\n >\r\n {item.label}\r\n </button>\r\n {:else}\r\n <span class=\"text-sm font-[var(--font-body)] {index === items.length - 1 ? 'text-[var(--color-text)]' : 'text-[var(--color-text-soft)]'}\">\r\n {item.label}\r\n </span>\r\n {/if}\r\n\r\n {#if index < items.length - 1}\r\n <span class=\"text-[var(--color-text-muted)] text-sm\" aria-hidden=\"true\">\r\n {#if separatorIcon}\r\n {@render separatorIcon()}\r\n {:else}\r\n {separator}\r\n {/if}\r\n </span>\r\n {/if}\r\n </li>\r\n {/each}\r\n </ol>\r\n</nav>\r\n","<script lang=\"ts\">\r\n import type { Snippet } from 'svelte';\r\n\r\n interface MenuItem {\r\n id: string;\r\n label: string;\r\n icon?: Snippet;\r\n disabled?: boolean;\r\n onclick?: () => void;\r\n }\r\n\r\n interface Props {\r\n items?: MenuItem[];\r\n children?: Snippet;\r\n }\r\n\r\n let {\r\n items,\r\n children\r\n }: Props = $props();\r\n\r\n function handleItemClick(item: MenuItem) {\r\n if (!item.disabled && item.onclick) {\r\n item.onclick();\r\n }\r\n }\r\n</script>\r\n\r\n<div role=\"menu\" class=\"glass-panel rounded-[var(--radius-lg)] p-2 shadow-[var(--shadow-deep)]\">\r\n {#if children}\r\n {@render children()}\r\n {:else if items}\r\n {#each items as item}\r\n <button\r\n role=\"menuitem\"\r\n aria-disabled={item.disabled}\r\n onclick={() => handleItemClick(item)}\r\n disabled={item.disabled}\r\n class=\"flex items-center gap-2 w-full px-3 py-2 rounded-[var(--radius-md)] text-[var(--color-text)] text-sm font-[var(--font-body)] hover:bg-[var(--color-base-3)] transition-all duration-200 ease-[var(--ease-luxe)] {item.disabled ? 'opacity-50 pointer-events-none' : 'cursor-pointer'}\"\r\n >\r\n {#if item.icon}\r\n {@render item.icon()}\r\n {/if}\r\n <span>{item.label}</span>\r\n </button>\r\n {/each}\r\n {/if}\r\n</div>\r\n","<script lang=\"ts\">\r\n import type { Snippet } from 'svelte';\r\n\r\n interface Props {\r\n open?: boolean;\r\n placement?: 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end';\r\n trigger?: Snippet;\r\n children?: Snippet;\r\n }\r\n\r\n let {\r\n open = $bindable(false),\r\n placement = 'bottom-start',\r\n trigger,\r\n children\r\n }: Props = $props();\r\n\r\n let menuElement: HTMLDivElement;\r\n let wrapperElement: HTMLDivElement;\r\n\r\n const placementClasses = {\r\n 'bottom-start': 'top-full left-0 mt-2',\r\n 'bottom-end': 'top-full right-0 mt-2',\r\n 'top-start': 'bottom-full left-0 mb-2',\r\n 'top-end': 'bottom-full right-0 mb-2'\r\n };\r\n\r\n function toggleMenu() {\r\n open = !open;\r\n }\r\n\r\n function handleClickOutside(event: MouseEvent) {\r\n if (menuElement && !wrapperElement.contains(event.target as Node)) {\r\n open = false;\r\n }\r\n }\r\n\r\n function handleEscape(event: KeyboardEvent) {\r\n if (event.key === 'Escape') {\r\n open = false;\r\n }\r\n }\r\n\r\n $effect(() => {\r\n if (open) {\r\n document.addEventListener('click', handleClickOutside);\r\n document.addEventListener('keydown', handleEscape);\r\n\r\n return () => {\r\n document.removeEventListener('click', handleClickOutside);\r\n document.removeEventListener('keydown', handleEscape);\r\n };\r\n }\r\n });\r\n</script>\r\n\r\n<div bind:this={wrapperElement} class=\"relative\">\r\n <button\r\n type=\"button\"\r\n onclick={toggleMenu}\r\n onkeydown={(e) => {\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n e.preventDefault();\r\n toggleMenu();\r\n }\r\n }}\r\n class=\"bg-transparent border-none p-0 cursor-pointer\"\r\n >\r\n {@render trigger?.()}\r\n </button>\r\n\r\n {#if open}\r\n <div\r\n bind:this={menuElement}\r\n class=\"absolute {placementClasses[placement]} z-50 glass-panel rounded-[var(--radius-lg)] shadow-[var(--shadow-deep)] min-w-[12rem] animate-[fade-up_0.2s_var(--ease-luxe)]\"\r\n >\r\n {@render children?.()}\r\n </div>\r\n {/if}\r\n</div>\r\n","<script lang=\"ts\">\r\n import type { Snippet } from 'svelte';\r\n\r\n interface Props {\r\n open?: boolean;\r\n x?: number;\r\n y?: number;\r\n trigger?: Snippet;\r\n children?: Snippet;\r\n }\r\n\r\n let {\r\n open = $bindable(false),\r\n x = $bindable(0),\r\n y = $bindable(0),\r\n trigger,\r\n children\r\n }: Props = $props();\r\n\r\n let menuElement = $state<HTMLDivElement>();\r\n\r\n function handleContextMenu(event: MouseEvent) {\r\n event.preventDefault();\r\n x = event.clientX;\r\n y = event.clientY;\r\n open = true;\r\n\r\n // Adjust position if menu would overflow viewport\r\n requestAnimationFrame(() => {\r\n if (menuElement) {\r\n const menuRect = menuElement.getBoundingClientRect();\r\n const viewportWidth = window.innerWidth;\r\n const viewportHeight = window.innerHeight;\r\n\r\n if (x + menuRect.width > viewportWidth) {\r\n x = viewportWidth - menuRect.width - 10;\r\n }\r\n\r\n if (y + menuRect.height > viewportHeight) {\r\n y = viewportHeight - menuRect.height - 10;\r\n }\r\n }\r\n });\r\n }\r\n\r\n function handleClickOutside(event: MouseEvent) {\r\n if (menuElement && !menuElement.contains(event.target as Node)) {\r\n open = false;\r\n }\r\n }\r\n\r\n function handleEscape(event: KeyboardEvent) {\r\n if (event.key === 'Escape') {\r\n open = false;\r\n }\r\n }\r\n\r\n $effect(() => {\r\n if (open) {\r\n document.addEventListener('click', handleClickOutside);\r\n document.addEventListener('keydown', handleEscape);\r\n\r\n return () => {\r\n document.removeEventListener('click', handleClickOutside);\r\n document.removeEventListener('keydown', handleEscape);\r\n };\r\n }\r\n });\r\n</script>\r\n\r\n<div oncontextmenu={handleContextMenu} role=\"presentation\" class=\"contents\">\r\n {@render trigger?.()}\r\n</div>\r\n\r\n{#if open}\r\n <div\r\n bind:this={menuElement}\r\n class=\"fixed z-50 glass-panel rounded-[var(--radius-lg)] shadow-[var(--shadow-deep)] min-w-[12rem] animate-[fade-in_0.15s_var(--ease-luxe)]\"\r\n style=\"left: {x}px; top: {y}px;\"\r\n >\r\n {@render children?.()}\r\n </div>\r\n{/if}\r\n","<script lang=\"ts\">\r\n import type { Snippet } from 'svelte';\r\n import { createId } from '../../lib/internal/id.js';\r\n\r\n interface Props {\r\n open?: boolean;\r\n title?: string;\r\n size?: 'sm' | 'md' | 'lg' | 'xl';\r\n closeOnBackdrop?: boolean;\r\n closeOnEscape?: boolean;\r\n children?: Snippet;\r\n footer?: Snippet;\r\n }\r\n\r\n let {\r\n open = $bindable(false),\r\n title,\r\n size = 'md',\r\n closeOnBackdrop = true,\r\n closeOnEscape = true,\r\n children,\r\n footer\r\n }: Props = $props();\r\n\r\n let modalElement = $state<HTMLDivElement>();\r\n let previousFocus = $state<HTMLElement | null>(null);\r\n\r\n const sizeClasses = {\r\n sm: 'max-w-[28rem]',\r\n md: 'max-w-[36rem]',\r\n lg: 'max-w-[48rem]',\r\n xl: 'max-w-[64rem]'\r\n };\r\n\r\n const titleId = createId('modal-title');\r\n\r\n function handleClose() {\r\n open = false;\r\n }\r\n\r\n function handleBackdropClick(event: MouseEvent) {\r\n if (closeOnBackdrop && event.target === event.currentTarget) {\r\n handleClose();\r\n }\r\n }\r\n\r\n function handleEscape(event: KeyboardEvent) {\r\n if (closeOnEscape && event.key === 'Escape') {\r\n handleClose();\r\n }\r\n }\r\n\r\n $effect(() => {\r\n if (typeof document === 'undefined') return;\r\n \r\n if (open) {\r\n // Store previous focus\r\n previousFocus = document.activeElement as HTMLElement;\r\n\r\n // Prevent body scroll\r\n document.body.style.overflow = 'hidden';\r\n\r\n // Add event listeners\r\n document.addEventListener('keydown', handleEscape);\r\n\r\n // Focus first interactive element\r\n requestAnimationFrame(() => {\r\n const firstInteractive = modalElement?.querySelector<HTMLElement>(\r\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\r\n );\r\n firstInteractive?.focus();\r\n });\r\n\r\n return () => {\r\n // Restore body scroll\r\n document.body.style.overflow = '';\r\n\r\n // Remove event listeners\r\n document.removeEventListener('keydown', handleEscape);\r\n\r\n // Restore previous focus\r\n previousFocus?.focus();\r\n };\r\n }\r\n });\r\n</script>\r\n\r\n{#if open}\r\n <div\r\n class=\"fixed inset-0 z-50 flex items-center justify-center p-4 bg-overlay backdrop-blur-md animate-[fade-in_0.2s_var(--ease-luxe)]\"\r\n onclick={handleBackdropClick}\r\n role=\"presentation\"\r\n >\r\n <div\r\n bind:this={modalElement}\r\n class=\"glass-panel rounded-xl shadow-deep w-full {sizeClasses[size]} animate-[fade-up_0.3s_var(--ease-luxe)] flex flex-col max-h-[90vh]\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n aria-labelledby={title ? titleId : undefined}\r\n >\r\n {#if title}\r\n <div class=\"flex items-center justify-between p-6 border-b border-border\">\r\n <h2 id={titleId} class=\"text-xl font-semibold text-text\">\r\n {title}\r\n </h2>\r\n <button\r\n type=\"button\"\r\n onclick={handleClose}\r\n class=\"text-text-soft hover:text-text transition-colors\"\r\n aria-label=\"Close modal\"\r\n >\r\n <svg class=\"w-6 h-6\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\" />\r\n </svg>\r\n </button>\r\n </div>\r\n {/if}\r\n\r\n <div class=\"flex-1 overflow-y-auto p-6 max-h-[70vh]\" style=\"scrollbar-width: thin; scrollbar-color: var(--color-accent) var(--color-base-3);\">\r\n {@render children?.()}\r\n </div>\r\n\r\n {#if footer}\r\n <div class=\"flex items-center justify-end gap-3 p-6 border-t border-border\">\r\n {@render footer?.()}\r\n </div>\r\n {/if}\r\n </div>\r\n </div>\r\n{/if}\r\n","<script lang=\"ts\">\r\n import type { Snippet } from 'svelte';\r\n\r\n interface Props {\r\n variant?: 'info' | 'success' | 'warning' | 'error';\r\n title?: string;\r\n dismissible?: boolean;\r\n onclose?: () => void;\r\n children?: Snippet;\r\n }\r\n\r\n let {\r\n variant = 'info',\r\n title,\r\n dismissible = false,\r\n onclose,\r\n children\r\n }: Props = $props();\r\n\r\n let visible = $state(true);\r\n\r\n const variantClasses = {\r\n info: 'border-l-4 border-accent',\r\n success: 'border-l-4 border-success',\r\n warning: 'border-l-4 border-warning',\r\n error: 'border-l-4 border-error'\r\n };\r\n\r\n const variantTextClasses = {\r\n info: 'text-accent-soft',\r\n success: 'text-success',\r\n warning: 'text-warning',\r\n error: 'text-error'\r\n };\r\n\r\n const variantIcons = {\r\n info: 'M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z',\r\n success: 'M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z',\r\n warning: 'M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z',\r\n error: 'M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z'\r\n };\r\n\r\n const roleMap = {\r\n info: 'status',\r\n success: 'status',\r\n warning: 'alert',\r\n error: 'alert'\r\n };\r\n\r\n const ariaLiveMap = {\r\n info: 'polite',\r\n success: 'polite',\r\n warning: 'polite',\r\n error: 'assertive'\r\n } satisfies Record<'info' | 'success' | 'warning' | 'error', 'polite' | 'assertive'>;\r\n\r\n function handleClose() {\r\n visible = false;\r\n onclose?.();\r\n }\r\n</script>\r\n\r\n{#if visible}\r\n <div\r\n class=\"glass-panel rounded-lg p-4 flex gap-3 {variantClasses[variant]} animate-[fade-in_0.2s_var(--ease-luxe)]\"\r\n role={roleMap[variant]}\r\n aria-live={ariaLiveMap[variant]}\r\n >\r\n <div class=\"shrink-0 {variantTextClasses[variant]}\">\r\n <svg class=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d={variantIcons[variant]} />\r\n </svg>\r\n </div>\r\n\r\n <div class=\"flex-1 min-w-0\">\r\n {#if title}\r\n <h4 class=\"font-semibold text-text mb-1\">\r\n {title}\r\n </h4>\r\n {/if}\r\n <div class=\"text-sm text-text-soft\">\r\n {@render children?.()}\r\n </div>\r\n </div>\r\n\r\n {#if dismissible}\r\n <button\r\n type=\"button\"\r\n onclick={handleClose}\r\n class=\"shrink-0 text-text-soft hover:text-text transition-colors\"\r\n aria-label=\"Dismiss alert\"\r\n >\r\n <svg class=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\" />\r\n </svg>\r\n </button>\r\n {/if}\r\n </div>\r\n{/if}\r\n","<script lang=\"ts\">\r\n interface Props {\r\n size?: 'sm' | 'md' | 'lg';\r\n label?: string;\r\n }\r\n\r\n let {\r\n size = 'md',\r\n label\r\n }: Props = $props();\r\n\r\n const sizeClasses = {\r\n sm: 'w-4 h-4 border-2',\r\n md: 'w-8 h-8 border-4',\r\n lg: 'w-12 h-12 border-4'\r\n };\r\n</script>\r\n\r\n<div\r\n class=\"inline-flex items-center justify-center\"\r\n role=\"status\"\r\n aria-live=\"polite\"\r\n aria-label={label || 'Loading'}\r\n>\r\n <div\r\n class=\"{sizeClasses[size]} border-[var(--color-base-3)] border-t-[var(--color-accent)] rounded-[var(--radius-pill)] accent-glow animate-spin\"\r\n />\r\n <span class=\"sr-only\">{label || 'Loading'}</span>\r\n</div>\r\n\r\n<style>\r\n .sr-only {\r\n position: absolute;\r\n width: 1px;\r\n height: 1px;\r\n padding: 0;\r\n margin: -1px;\r\n overflow: hidden;\r\n clip: rect(0, 0, 0, 0);\r\n white-space: nowrap;\r\n border-width: 0;\r\n }\r\n</style>\r\n","<script lang=\"ts\">\r\n import type { Snippet } from 'svelte';\r\n import { createId } from '../../lib/internal/id.js';\r\n\r\n interface Props {\r\n content: string;\r\n placement?: 'top' | 'bottom' | 'left' | 'right';\r\n delay?: number;\r\n trigger?: Snippet;\r\n }\r\n\r\n let {\r\n content,\r\n placement = 'top',\r\n delay = 200,\r\n trigger\r\n }: Props = $props();\r\n\r\n let visible = $state(false);\r\n let actualPlacement = $state(placement);\r\n let tooltipElement = $state<HTMLDivElement>();\r\n let timeoutId: number | undefined;\r\n\r\n const tooltipId = createId('tooltip');\r\n\r\n const placementClasses = {\r\n top: 'bottom-full left-1/2 -translate-x-1/2 mb-2',\r\n bottom: 'top-full left-1/2 -translate-x-1/2 mt-2',\r\n left: 'right-full top-1/2 -translate-y-1/2 mr-2',\r\n right: 'left-full top-1/2 -translate-y-1/2 ml-2'\r\n };\r\n\r\n const oppositePlacement = {\r\n top: 'bottom',\r\n bottom: 'top',\r\n left: 'right',\r\n right: 'left'\r\n } as const;\r\n\r\n function handleMouseEnter() {\r\n if (typeof window === 'undefined') return;\r\n timeoutId = window.setTimeout(() => {\r\n visible = true;\r\n }, delay);\r\n }\r\n\r\n function handleMouseLeave() {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId);\r\n }\r\n visible = false;\r\n }\r\n\r\n function handleFocus() {\r\n handleMouseEnter();\r\n }\r\n\r\n function handleBlur() {\r\n handleMouseLeave();\r\n }\r\n\r\n // Reset actualPlacement when visibility changes\r\n $effect(() => {\r\n if (!visible) {\r\n actualPlacement = placement;\r\n }\r\n });\r\n\r\n // Check viewport bounds and flip placement if needed\r\n $effect(() => {\r\n if (typeof window === 'undefined') return;\r\n \r\n if (visible && tooltipElement) {\r\n const rect = tooltipElement.getBoundingClientRect();\r\n const viewportWidth = window.innerWidth;\r\n const viewportHeight = window.innerHeight;\r\n\r\n // Determine if current placement overflows and flip if needed\r\n if (actualPlacement === 'top' && rect.top < 0 && actualPlacement !== oppositePlacement[placement]) {\r\n actualPlacement = 'bottom';\r\n } else if (actualPlacement === 'bottom' && rect.bottom > viewportHeight && actualPlacement !== oppositePlacement[placement]) {\r\n actualPlacement = 'top';\r\n } else if (actualPlacement === 'left' && rect.left < 0 && actualPlacement !== oppositePlacement[placement]) {\r\n actualPlacement = 'right';\r\n } else if (actualPlacement === 'right' && rect.right > viewportWidth && actualPlacement !== oppositePlacement[placement]) {\r\n actualPlacement = 'left';\r\n }\r\n }\r\n });\r\n</script>\r\n\r\n<div class=\"relative inline-block\">\r\n <div\r\n aria-describedby={visible ? tooltipId : undefined}\r\n onmouseenter={handleMouseEnter}\r\n onmouseleave={handleMouseLeave}\r\n onfocus={handleFocus}\r\n onblur={handleBlur}\r\n role=\"presentation\"\r\n class=\"contents\"\r\n >\r\n {@render trigger?.()}\r\n </div>\r\n\r\n {#if visible}\r\n <div\r\n bind:this={tooltipElement}\r\n id={tooltipId}\r\n role=\"tooltip\"\r\n class=\"absolute {placementClasses[actualPlacement]} z-50 glass-panel rounded-md px-3 py-2 text-sm text-text whitespace-nowrap animate-[fade-in_0.15s_var(--ease-luxe)] pointer-events-none\"\r\n >\r\n {content}\r\n </div>\r\n {/if}\r\n</div>\r\n","<script lang=\"ts\">\r\n interface Props {\r\n value: number;\r\n max?: number;\r\n size?: 'sm' | 'md' | 'lg';\r\n showLabel?: boolean;\r\n label?: string;\r\n }\r\n\r\n let {\r\n value,\r\n max = 100,\r\n size = 'md',\r\n showLabel = false,\r\n label\r\n }: Props = $props();\r\n\r\n const percentage = $derived(Math.min(100, Math.max(0, (value / max) * 100)));\r\n\r\n const heightClasses = {\r\n sm: 'h-2',\r\n md: 'h-3',\r\n lg: 'h-4'\r\n };\r\n</script>\r\n\r\n<div\r\n class=\"relative bg-[var(--color-base-3)] border border-[var(--color-border)] rounded-[var(--radius-pill)] overflow-hidden shadow-[var(--shadow-deep)] {heightClasses[size]}\"\r\n role=\"progressbar\"\r\n aria-valuenow={value}\r\n aria-valuemin=\"0\"\r\n aria-valuemax={max}\r\n aria-label={label || `${percentage.toFixed(0)}% complete`}\r\n>\r\n <div\r\n class=\"h-full bg-[var(--color-accent)] accent-glow transition-all duration-500 ease-[var(--ease-luxe)]\"\r\n style=\"width: {percentage}%\"\r\n />\r\n\r\n {#if showLabel}\r\n <div class=\"absolute inset-0 flex items-center justify-center text-xs font-semibold text-[var(--color-text)] text-glow\">\r\n {label || `${percentage.toFixed(0)}%`}\r\n </div>\r\n {/if}\r\n</div>\r\n","<script lang=\"ts\">\r\n interface Props {\r\n variant?: 'text' | 'circular' | 'rectangular';\r\n width?: string;\r\n height?: string;\r\n count?: number;\r\n }\r\n\r\n let {\r\n variant = 'rectangular',\r\n width,\r\n height,\r\n count = 1\r\n }: Props = $props();\r\n\r\n const defaultDimensions = {\r\n text: { width: '100%', height: '1rem' },\r\n circular: { width: '3rem', height: '3rem' },\r\n rectangular: { width: '100%', height: '8rem' }\r\n };\r\n\r\n const roundingClasses = {\r\n text: 'rounded-[var(--radius-sm)]',\r\n circular: 'rounded-[var(--radius-pill)]',\r\n rectangular: 'rounded-[var(--radius-lg)]'\r\n };\r\n\r\n const finalWidth = width || defaultDimensions[variant].width;\r\n const finalHeight = height || defaultDimensions[variant].height;\r\n</script>\r\n\r\n<div\r\n aria-busy=\"true\"\r\n aria-live=\"polite\"\r\n aria-label=\"Loading content\"\r\n>\r\n {#if variant === 'text'}\r\n {#each Array(count) as _, i}\r\n <div\r\n class=\"bg-[var(--color-base-3)] border border-[var(--color-border)] {roundingClasses[variant]} mb-2 skeleton-shimmer\"\r\n style=\"width: {i === count - 1 ? '80%' : finalWidth}; height: {finalHeight};\"\r\n />\r\n {/each}\r\n {:else}\r\n <div\r\n class=\"bg-[var(--color-base-3)] border border-[var(--color-border)] {roundingClasses[variant]} skeleton-shimmer\"\r\n style=\"width: {finalWidth}; height: {finalHeight};\"\r\n />\r\n {/if}\r\n</div>\r\n\r\n<style>\r\n .skeleton-shimmer {\r\n position: relative;\r\n overflow: hidden;\r\n }\r\n\r\n .skeleton-shimmer::before {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 200%;\r\n height: 100%;\r\n background: linear-gradient(\r\n 90deg,\r\n transparent,\r\n rgba(127, 61, 255, 0.1),\r\n transparent\r\n );\r\n animation: shimmer 1.5s ease-in-out infinite;\r\n }\r\n\r\n @keyframes shimmer {\r\n 0% {\r\n transform: translateX(-100%);\r\n }\r\n 100% {\r\n transform: translateX(100%);\r\n }\r\n }\r\n</style>\r\n","<script lang=\"ts\">\r\n interface Props {\r\n message: string;\r\n variant?: 'info' | 'success' | 'warning' | 'error';\r\n duration?: number;\r\n position?: 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';\r\n dismissible?: boolean;\r\n onclose?: () => void;\r\n /** Index in toast stack for vertical offset. Pass the toast's position in a list to enable stacking. */\r\n index?: number;\r\n }\r\n\r\n let {\r\n message,\r\n variant = 'info',\r\n duration = 3000,\r\n position = 'bottom-right',\r\n dismissible = true,\r\n onclose,\r\n index = 0\r\n }: Props = $props();\r\n\r\n let visible = $state(true);\r\n let isExiting = $state(false);\r\n\r\n const positionClasses = {\r\n 'top-left': 'top-4 left-4',\r\n 'top-center': 'top-4 left-1/2 -translate-x-1/2',\r\n 'top-right': 'top-4 right-4',\r\n 'bottom-left': 'bottom-4 left-4',\r\n 'bottom-center': 'bottom-4 left-1/2 -translate-x-1/2',\r\n 'bottom-right': 'bottom-4 right-4'\r\n };\r\n\r\n const variantBorderClasses = {\r\n info: 'border-l-4 border-[var(--color-accent)]',\r\n success: 'border-l-4 border-[var(--color-success)]',\r\n warning: 'border-l-4 border-[var(--color-warning)]',\r\n error: 'border-l-4 border-[var(--color-error)]'\r\n };\r\n\r\n const variantIconClasses = {\r\n info: 'text-[var(--color-accent-soft)]',\r\n success: 'text-[var(--color-success)]',\r\n warning: 'text-[var(--color-warning)]',\r\n error: 'text-[var(--color-error)]'\r\n };\r\n\r\n const variantIcons = {\r\n info: 'M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z',\r\n success: 'M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z',\r\n warning: 'M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z',\r\n error: 'M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z'\r\n };\r\n\r\n const roleMap = {\r\n info: 'status',\r\n success: 'status',\r\n warning: 'alert',\r\n error: 'alert'\r\n };\r\n\r\n const ariaLiveMap = {\r\n info: 'polite',\r\n success: 'polite',\r\n warning: 'polite',\r\n error: 'assertive'\r\n } satisfies Record<'info' | 'success' | 'warning' | 'error', 'polite' | 'assertive'>;\r\n\r\n const animationClasses = $derived(\r\n position.startsWith('bottom')\r\n ? 'animate-[fade-up_0.3s_var(--ease-luxe)]'\r\n : 'animate-[fade-in_0.3s_var(--ease-luxe)]'\r\n );\r\n\r\n const stackOffset = $derived(\r\n position.startsWith('bottom')\r\n ? `translateY(-${index * 5}rem)`\r\n : `translateY(${index * 5}rem)`\r\n );\r\n\r\n function handleClose() {\r\n if (isExiting || !visible) return; // Prevent double-close\r\n isExiting = true;\r\n setTimeout(() => {\r\n visible = false;\r\n onclose?.();\r\n }, 200); // Match fade-out animation duration\r\n }\r\n\r\n $effect(() => {\r\n // Only auto-dismiss if toast is visible and duration is set\r\n if (visible && !isExiting && duration > 0) {\r\n const timer = setTimeout(() => {\r\n handleClose();\r\n }, duration);\r\n\r\n return () => {\r\n clearTimeout(timer);\r\n };\r\n }\r\n });\r\n</script>\r\n\r\n{#if visible}\r\n <div\r\n class=\"fixed z-[100] {positionClasses[position]} {isExiting ? 'animate-[fade-out_0.2s_var(--ease-sharp)]' : animationClasses}\"\r\n style=\"transform: {stackOffset}\"\r\n >\r\n <div\r\n class=\"glass-panel rounded-[var(--radius-lg)] p-4 min-w-[20rem] max-w-md flex gap-3 items-start {variantBorderClasses[variant]}\"\r\n role={roleMap[variant]}\r\n aria-live={ariaLiveMap[variant]}\r\n aria-atomic=\"true\"\r\n >\r\n <div class=\"flex-shrink-0 {variantIconClasses[variant]}\">\r\n <svg class=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d={variantIcons[variant]} />\r\n </svg>\r\n </div>\r\n\r\n <div class=\"flex-1 text-sm text-[var(--color-text)]\">\r\n {message}\r\n </div>\r\n\r\n {#if dismissible}\r\n <button\r\n type=\"button\"\r\n onclick={handleClose}\r\n class=\"flex-shrink-0 text-[var(--color-text-soft)] hover:text-[var(--color-text)] transition-colors\"\r\n aria-label=\"Dismiss notification\"\r\n >\r\n <svg class=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\" />\r\n </svg>\r\n </button>\r\n {/if}\r\n </div>\r\n </div>\r\n{/if}\r\n","<script lang=\"ts\">\r\n import type { Snippet } from 'svelte';\r\n\r\n interface Props {\r\n height?: string;\r\n children?: Snippet;\r\n }\r\n\r\n let { height = '400px', children }: Props = $props();\r\n</script>\r\n\r\n<div\r\n class=\"overflow-y-auto\"\r\n style=\"\r\n height: {height};\r\n scrollbar-width: thin;\r\n scrollbar-color: var(--color-accent) var(--color-base-3);\r\n \"\r\n>\r\n {@render children?.()}\r\n</div>\r\n\r\n<style>\r\n div::-webkit-scrollbar {\r\n width: 8px;\r\n }\r\n\r\n div::-webkit-scrollbar-track {\r\n background: var(--color-base-3);\r\n border-radius: var(--radius-sm);\r\n }\r\n\r\n div::-webkit-scrollbar-thumb {\r\n background: var(--color-accent);\r\n border-radius: var(--radius-sm);\r\n }\r\n\r\n div::-webkit-scrollbar-thumb:hover {\r\n background: var(--color-accent-soft);\r\n }\r\n</style>\r\n","<script lang=\"ts\">\r\n import type { Snippet } from 'svelte';\r\n import { createId } from '../../lib/internal/id.js';\r\n import ScrollArea from '../utilities/ScrollArea.svelte';\r\n\r\n interface Props {\r\n open?: boolean;\r\n side?: 'left' | 'right' | 'top' | 'bottom';\r\n size?: 'sm' | 'md' | 'lg';\r\n title?: string;\r\n closeOnBackdrop?: boolean;\r\n closeOnEscape?: boolean;\r\n children?: Snippet;\r\n footer?: Snippet;\r\n }\r\n\r\n let {\r\n open = $bindable(false),\r\n side = 'right',\r\n size = 'md',\r\n title,\r\n closeOnBackdrop = true,\r\n closeOnEscape = true,\r\n children,\r\n footer\r\n }: Props = $props();\r\n\r\n let drawerElement = $state<HTMLDivElement>();\r\n let previousFocus = $state<HTMLElement | null>(null);\r\n\r\n const titleId = createId('drawer-title');\r\n\r\n const sizeClasses = {\r\n left: {\r\n sm: 'max-w-[20rem]',\r\n md: 'max-w-[28rem]',\r\n lg: 'max-w-[36rem]'\r\n },\r\n right: {\r\n sm: 'max-w-[20rem]',\r\n md: 'max-w-[28rem]',\r\n lg: 'max-w-[36rem]'\r\n },\r\n top: {\r\n sm: 'max-h-[20rem]',\r\n md: 'max-h-[28rem]',\r\n lg: 'max-h-[36rem]'\r\n },\r\n bottom: {\r\n sm: 'max-h-[20rem]',\r\n md: 'max-h-[28rem]',\r\n lg: 'max-h-[36rem]'\r\n }\r\n };\r\n\r\n const positionClasses = {\r\n left: 'left-0 top-0 h-full',\r\n right: 'right-0 top-0 h-full',\r\n top: 'top-0 left-0 w-full',\r\n bottom: 'bottom-0 left-0 w-full'\r\n };\r\n\r\n const animationClasses = {\r\n left: 'animate-[slide-in-left_0.3s_var(--ease-luxe)]',\r\n right: 'animate-[slide-in-right_0.3s_var(--ease-luxe)]',\r\n top: 'animate-[slide-in-top_0.3s_var(--ease-luxe)]',\r\n bottom: 'animate-[slide-in-bottom_0.3s_var(--ease-luxe)]'\r\n };\r\n\r\n function handleClose() {\r\n open = false;\r\n }\r\n\r\n function handleBackdropClick(event: MouseEvent) {\r\n if (closeOnBackdrop && event.target === event.currentTarget) {\r\n handleClose();\r\n }\r\n }\r\n\r\n function handleEscape(event: KeyboardEvent) {\r\n if (closeOnEscape && event.key === 'Escape') {\r\n handleClose();\r\n }\r\n }\r\n\r\n $effect(() => {\r\n if (typeof document === 'undefined') return;\r\n \r\n if (open) {\r\n // Store previous focus\r\n previousFocus = document.activeElement as HTMLElement;\r\n\r\n // Prevent body scroll\r\n document.body.style.overflow = 'hidden';\r\n\r\n // Add event listeners\r\n document.addEventListener('keydown', handleEscape);\r\n\r\n // Focus first interactive element\r\n requestAnimationFrame(() => {\r\n const firstInteractive = drawerElement?.querySelector<HTMLElement>(\r\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\r\n );\r\n firstInteractive?.focus();\r\n });\r\n\r\n return () => {\r\n // Restore body scroll\r\n document.body.style.overflow = '';\r\n\r\n // Remove event listeners\r\n document.removeEventListener('keydown', handleEscape);\r\n\r\n // Restore previous focus\r\n previousFocus?.focus();\r\n };\r\n }\r\n });\r\n</script>\r\n\r\n{#if open}\r\n <div\r\n class=\"fixed inset-0 z-50 bg-overlay backdrop-blur-md animate-[fade-in_0.2s_var(--ease-luxe)]\"\r\n onclick={handleBackdropClick}\r\n role=\"presentation\"\r\n >\r\n <div\r\n bind:this={drawerElement}\r\n class=\"glass-panel shadow-deep fixed {positionClasses[side]} {sizeClasses[side][size]} {animationClasses[side]} flex flex-col\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n aria-labelledby={title ? titleId : undefined}\r\n >\r\n {#if title}\r\n <div class=\"flex items-center justify-between p-6 border-b border-border\">\r\n <h2 id={titleId} class=\"text-xl font-semibold text-text\">\r\n {title}\r\n </h2>\r\n <button\r\n type=\"button\"\r\n onclick={handleClose}\r\n class=\"text-text-soft hover:text-text transition-colors\"\r\n aria-label=\"Close drawer\"\r\n >\r\n <svg class=\"w-6 h-6\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\" />\r\n </svg>\r\n </button>\r\n </div>\r\n {/if}\r\n\r\n <div class=\"flex-1 overflow-hidden\">\r\n <ScrollArea height=\"100%\">\r\n <div class=\"p-6\">\r\n {@render children?.()}\r\n </div>\r\n </ScrollArea>\r\n </div>\r\n\r\n {#if footer}\r\n <div class=\"flex items-center justify-end gap-3 p-6 border-t border-border\">\r\n {@render footer?.()}\r\n </div>\r\n {/if}\r\n </div>\r\n </div>\r\n{/if}\r\n","<script lang=\"ts\">\r\n import type { Snippet } from 'svelte';\r\n import { createId } from '../../lib/internal/id.js';\r\n\r\n interface Props {\r\n open?: boolean;\r\n placement?: 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'right';\r\n closeOnClickOutside?: boolean;\r\n trigger?: Snippet;\r\n children?: Snippet;\r\n }\r\n\r\n let {\r\n open = $bindable(false),\r\n placement = 'bottom',\r\n closeOnClickOutside = true,\r\n trigger,\r\n children\r\n }: Props = $props();\r\n\r\n let popoverElement = $state<HTMLDivElement>();\r\n let wrapperElement = $state<HTMLDivElement>();\r\n let actualPlacement = $state(placement);\r\n\r\n const popoverId = createId('popover');\r\n\r\n const placementClasses = {\r\n 'top': 'bottom-full left-1/2 -translate-x-1/2 mb-2',\r\n 'top-start': 'bottom-full left-0 mb-2',\r\n 'top-end': 'bottom-full right-0 mb-2',\r\n 'bottom': 'top-full left-1/2 -translate-x-1/2 mt-2',\r\n 'bottom-start': 'top-full left-0 mt-2',\r\n 'bottom-end': 'top-full right-0 mt-2',\r\n 'left': 'right-full top-1/2 -translate-y-1/2 mr-2',\r\n 'right': 'left-full top-1/2 -translate-y-1/2 ml-2'\r\n };\r\n\r\n const oppositePlacement = {\r\n 'top': 'bottom',\r\n 'top-start': 'bottom-start',\r\n 'top-end': 'bottom-end',\r\n 'bottom': 'top',\r\n 'bottom-start': 'top-start',\r\n 'bottom-end': 'top-end',\r\n 'left': 'right',\r\n 'right': 'left'\r\n } as const;\r\n\r\n function toggleOpen() {\r\n open = !open;\r\n }\r\n\r\n function handleClickOutside(event: MouseEvent) {\r\n if (closeOnClickOutside && popoverElement && wrapperElement && !wrapperElement.contains(event.target as Node)) {\r\n open = false;\r\n }\r\n }\r\n\r\n function handleEscape(event: KeyboardEvent) {\r\n if (event.key === 'Escape') {\r\n open = false;\r\n }\r\n }\r\n\r\n // Reset actualPlacement when visibility changes\r\n $effect(() => {\r\n if (!open) {\r\n actualPlacement = placement;\r\n }\r\n });\r\n\r\n // Check viewport bounds and flip placement if needed\r\n $effect(() => {\r\n if (typeof window === 'undefined') return;\r\n \r\n if (open && popoverElement) {\r\n const rect = popoverElement.getBoundingClientRect();\r\n const viewportWidth = window.innerWidth;\r\n const viewportHeight = window.innerHeight;\r\n\r\n // Determine if current placement overflows and flip if needed\r\n if (actualPlacement.startsWith('top') && rect.top < 0) {\r\n actualPlacement = oppositePlacement[actualPlacement] || placement;\r\n } else if (actualPlacement.startsWith('bottom') && rect.bottom > viewportHeight) {\r\n actualPlacement = oppositePlacement[actualPlacement] || placement;\r\n } else if (actualPlacement === 'left' && rect.left < 0) {\r\n actualPlacement = 'right';\r\n } else if (actualPlacement === 'right' && rect.right > viewportWidth) {\r\n actualPlacement = 'left';\r\n }\r\n }\r\n });\r\n\r\n $effect(() => {\r\n if (typeof document === 'undefined') return;\r\n \r\n if (open) {\r\n document.addEventListener('click', handleClickOutside);\r\n document.addEventListener('keydown', handleEscape);\r\n\r\n return () => {\r\n document.removeEventListener('click', handleClickOutside);\r\n document.removeEventListener('keydown', handleEscape);\r\n };\r\n }\r\n });\r\n</script>\r\n\r\n<div bind:this={wrapperElement} class=\"relative inline-block\">\r\n <button\r\n type=\"button\"\r\n onclick={toggleOpen}\r\n aria-haspopup=\"true\"\r\n aria-expanded={open}\r\n aria-controls={open ? popoverId : undefined}\r\n class=\"bg-transparent border-none p-0 cursor-pointer\"\r\n >\r\n {@render trigger?.()}\r\n </button>\r\n\r\n {#if open}\r\n <div\r\n bind:this={popoverElement}\r\n id={popoverId}\r\n class=\"absolute {placementClasses[actualPlacement]} z-50 glass-panel rounded-lg shadow-deep animate-[fade-up_0.2s_var(--ease-luxe)]\"\r\n role=\"dialog\"\r\n >\r\n {@render children?.()}\r\n </div>\r\n {/if}\r\n</div>\r\n","<script lang=\"ts\">\r\n import type { Snippet } from 'svelte';\r\n\r\n interface Props {\r\n open?: boolean;\r\n placement?: 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end';\r\n children?: Snippet;\r\n }\r\n\r\n let {\r\n open = $bindable(false),\r\n placement = 'bottom-start',\r\n children\r\n }: Props = $props();\r\n\r\n const placementClasses = {\r\n 'bottom-start': 'top-full left-0 mt-2',\r\n 'bottom-end': 'top-full right-0 mt-2',\r\n 'top-start': 'bottom-full left-0 mb-2',\r\n 'top-end': 'bottom-full right-0 mb-2'\r\n };\r\n</script>\r\n\r\n{#if open}\r\n <div\r\n class=\"absolute {placementClasses[placement]} z-50 glass-panel rounded-[var(--radius-lg)] shadow-[var(--shadow-deep)] min-w-[12rem] animate-[fade-up_0.2s_var(--ease-luxe)]\"\r\n >\r\n {@render children?.()}\r\n </div>\r\n{/if}\r\n","<script lang=\"ts\">\r\n import type { Snippet } from 'svelte';\r\n import { createId } from '../../lib/internal/id.js';\r\n\r\n interface Command {\r\n id: string;\r\n label: string;\r\n icon?: Snippet;\r\n onSelect: () => void;\r\n keywords?: string[];\r\n }\r\n\r\n interface Props {\r\n open?: boolean;\r\n commands: Command[];\r\n placeholder?: string;\r\n }\r\n\r\n let {\r\n open = $bindable(false),\r\n commands,\r\n placeholder = 'Search commands...'\r\n }: Props = $props();\r\n\r\n let query = $state('');\r\n let selectedIndex = $state(0);\r\n let inputElement = $state<HTMLInputElement>();\r\n let previousFocus = $state<HTMLElement | null>(null);\r\n\r\n const paletteId = createId('command-palette');\r\n\r\n // Inline fuzzy matching function\r\n function fuzzyMatch(text: string, search: string): boolean {\r\n const searchChars = search.toLowerCase().split('');\r\n const textLower = text.toLowerCase();\r\n let searchIndex = 0;\r\n\r\n for (let i = 0; i < textLower.length && searchIndex < searchChars.length; i++) {\r\n if (textLower[i] === searchChars[searchIndex]) {\r\n searchIndex++;\r\n }\r\n }\r\n\r\n return searchIndex === searchChars.length;\r\n }\r\n\r\n let filteredCommands = $derived(\r\n query.trim() === ''\r\n ? commands\r\n : commands.filter(cmd => {\r\n // Match against label\r\n if (fuzzyMatch(cmd.label, query)) return true;\r\n\r\n // Match against keywords\r\n if (cmd.keywords) {\r\n return cmd.keywords.some(keyword => fuzzyMatch(keyword, query));\r\n }\r\n\r\n return false;\r\n })\r\n );\r\n\r\n function handleClose() {\r\n open = false;\r\n query = '';\r\n selectedIndex = 0;\r\n }\r\n\r\n function handleBackdropClick(event: MouseEvent) {\r\n if (event.target === event.currentTarget) {\r\n handleClose();\r\n }\r\n }\r\n\r\n function handleSelectCommand(command: Command) {\r\n command.onSelect();\r\n handleClose();\r\n }\r\n\r\n function handleKeyDown(event: KeyboardEvent) {\r\n if (event.key === 'ArrowDown') {\r\n if (!filteredCommands.length) return;\r\n event.preventDefault();\r\n selectedIndex = (selectedIndex + 1) % filteredCommands.length;\r\n } else if (event.key === 'ArrowUp') {\r\n if (!filteredCommands.length) return;\r\n event.preventDefault();\r\n selectedIndex = (selectedIndex - 1 + filteredCommands.length) % filteredCommands.length;\r\n } else if (event.key === 'Enter') {\r\n event.preventDefault();\r\n if (filteredCommands[selectedIndex]) {\r\n handleSelectCommand(filteredCommands[selectedIndex]);\r\n } else if (filteredCommands.length) {\r\n selectedIndex = 0;\r\n }\r\n } else if (event.key === 'Escape') {\r\n event.preventDefault();\r\n handleClose();\r\n }\r\n }\r\n\r\n // Reset and clamp selected index when filtered commands change\r\n $effect(() => {\r\n if (filteredCommands.length === 0) {\r\n selectedIndex = -1;\r\n } else if (selectedIndex >= filteredCommands.length || selectedIndex < 0) {\r\n selectedIndex = 0;\r\n }\r\n });\r\n\r\n $effect(() => {\r\n if (typeof document === 'undefined') return;\r\n \r\n if (open) {\r\n // Store previous focus\r\n previousFocus = document.activeElement as HTMLElement;\r\n\r\n // Prevent body scroll\r\n document.body.style.overflow = 'hidden';\r\n\r\n // Focus input element\r\n requestAnimationFrame(() => {\r\n inputElement?.focus();\r\n });\r\n\r\n return () => {\r\n // Restore body scroll\r\n document.body.style.overflow = '';\r\n\r\n // Restore previous focus\r\n previousFocus?.focus();\r\n };\r\n }\r\n });\r\n</script>\r\n\r\n{#if open}\r\n <div\r\n class=\"fixed inset-0 z-50 flex items-start justify-center pt-[20vh] p-4 bg-overlay backdrop-blur-md animate-[fade-in_0.2s_var(--ease-luxe)]\"\r\n onclick={handleBackdropClick}\r\n role=\"presentation\"\r\n >\r\n <div\r\n class=\"glass-panel rounded-xl shadow-deep w-full max-w-[36rem] animate-[fade-up_0.3s_var(--ease-luxe)]\"\r\n role=\"combobox\"\r\n aria-expanded=\"true\"\r\n aria-haspopup=\"listbox\"\r\n aria-controls={paletteId}\r\n aria-activedescendant={selectedIndex >= 0 && selectedIndex < filteredCommands.length && filteredCommands[selectedIndex] ? `cmd-${filteredCommands[selectedIndex].id}` : undefined}\r\n tabindex=\"0\"\r\n >\r\n <div class=\"p-4 border-b border-border\">\r\n <input\r\n bind:this={inputElement}\r\n bind:value={query}\r\n type=\"text\"\r\n placeholder={placeholder}\r\n onkeydown={handleKeyDown}\r\n class=\"w-full bg-transparent border-none outline-none text-text text-lg placeholder:text-text-muted\"\r\n aria-autocomplete=\"list\"\r\n />\r\n </div>\r\n\r\n <div\r\n id={paletteId}\r\n role=\"listbox\"\r\n class=\"max-h-[400px] overflow-y-auto\"\r\n style=\"scrollbar-width: thin; scrollbar-color: var(--color-accent) var(--color-base-3);\"\r\n >\r\n {#if filteredCommands.length === 0}\r\n <div class=\"p-8 text-center text-text-muted\">\r\n No commands found\r\n </div>\r\n {:else}\r\n {#each filteredCommands as command, index (command.id)}\r\n <button\r\n id=\"cmd-{command.id}\"\r\n type=\"button\"\r\n role=\"option\"\r\n aria-selected={index === selectedIndex}\r\n tabindex={index === selectedIndex ? 0 : -1}\r\n onclick={() => handleSelectCommand(command)}\r\n class=\"w-full flex items-center gap-3 p-4 text-left text-text hover:bg-base-3 transition-colors {index === selectedIndex ? 'accent-glow bg-base-3' : ''}\"\r\n >\r\n {#if command.icon}\r\n <div class=\"shrink-0\">\r\n {@render command.icon()}\r\n </div>\r\n {/if}\r\n <span>{command.label}</span>\r\n </button>\r\n {/each}\r\n {/if}\r\n </div>\r\n </div>\r\n </div>\r\n{/if}\r\n\r\n<style>\r\n div[role=\"listbox\"]::-webkit-scrollbar {\r\n width: 8px;\r\n }\r\n\r\n div[role=\"listbox\"]::-webkit-scrollbar-track {\r\n background: var(--color-base-3);\r\n border-radius: var(--radius-sm);\r\n }\r\n\r\n div[role=\"listbox\"]::-webkit-scrollbar-thumb {\r\n background: var(--color-accent);\r\n border-radius: var(--radius-sm);\r\n }\r\n\r\n div[role=\"listbox\"]::-webkit-scrollbar-thumb:hover {\r\n background: var(--color-accent-soft);\r\n }\r\n</style>\r\n","<script lang=\"ts\">\r\n\tinterface Props {\r\n\t\tlevel?: 1 | 2 | 3 | 4 | 5 | 6;\r\n\t\tglow?: boolean;\r\n\t\tas?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\r\n\t\tchildren?: import('svelte').Snippet;\r\n\t}\r\n\r\n\tlet { level = 1, glow = false, as, children }: Props = $props();\r\n\r\n\tconst element = $derived(as ?? `h${level}`);\r\n\tconst baseClasses = $derived(\r\n\t\t`transition-all duration-300 ${glow ? 'text-glow' : ''}`\r\n\t);\r\n\tconst styles = $derived(\r\n\t\t`font-size: var(--text-h${level}-size); line-height: var(--text-h${level}-line-height); font-weight: var(--text-h${level}-weight); font-family: var(--font-heading); color: var(--color-text);`\r\n\t);\r\n</script>\r\n\r\n<svelte:element this={element} class={baseClasses} style={styles}>\r\n\t{@render children?.()}\r\n</svelte:element>\r\n","<script lang=\"ts\">\r\n\tinterface Props {\r\n\t\tvariant?: 'body' | 'caption';\r\n\t\tcolor?: 'default' | 'soft' | 'muted';\r\n\t\tas?: 'p' | 'span' | 'div';\r\n\t\tchildren?: import('svelte').Snippet;\r\n\t}\r\n\r\n\tlet { variant = 'body', color = 'default', as = 'p', children }: Props = $props();\r\n\r\n\tconst colorMap = {\r\n\t\tdefault: 'var(--color-text)',\r\n\t\tsoft: 'var(--color-text-soft)',\r\n\t\tmuted: 'var(--color-text-muted)'\r\n\t};\r\n\r\n\tconst styles = $derived(\r\n\t\t`font-size: var(--text-${variant}-size); line-height: var(--text-${variant}-line-height); font-weight: var(--text-${variant}-weight); font-family: var(--font-body); color: ${colorMap[color]};`\r\n\t);\r\n</script>\r\n\r\n<svelte:element this={as} class=\"transition-colors duration-300\" style={styles}>\r\n\t{@render children?.()}\r\n</svelte:element>\r\n","<script lang=\"ts\">\r\n\tinterface Props {\r\n\t\tchildren?: import('svelte').Snippet;\r\n\t}\r\n\r\n\tlet { children }: Props = $props();\r\n</script>\r\n\r\n<code\r\n\tclass=\"inline-flex items-center transition-all duration-300 hover:shadow-[0_0_12px_rgba(127,61,255,0.3)]\"\r\n\tstyle=\"background: rgba(127, 61, 255, 0.1); border: 1px solid var(--color-border); padding: 0.125rem 0.375rem; border-radius: var(--radius-sm); font-family: var(--font-mono); color: var(--color-accent-soft); font-size: 0.9em;\"\r\n>\r\n\t{@render children?.()}\r\n</code>\r\n","<script lang=\"ts\">\r\n\tinterface Props {\r\n\t\tstriped?: boolean;\r\n\t\thoverable?: boolean;\r\n\t\tcompact?: boolean;\r\n\t\tchildren?: import('svelte').Snippet;\r\n\t}\r\n\r\n\tlet { striped = false, hoverable = true, compact = false, children }: Props = $props();\r\n</script>\r\n\r\n<div class=\"glass-panel rounded-[var(--radius-xl)] overflow-hidden\">\r\n\t<table class=\"mrdv-table w-full\" class:striped class:hoverable class:compact>\r\n\t\t{@render children?.()}\r\n\t</table>\r\n</div>\r\n\r\n<style>\r\n\t.mrdv-table :global(thead) {\r\n\t\tbackground: var(--color-base-2);\r\n\t\tborder-bottom: 2px solid var(--color-border-strong);\r\n\t}\r\n\r\n\t.mrdv-table :global(thead th) {\r\n\t\tcolor: var(--color-text);\r\n\t\tfont-weight: 600;\r\n\t\ttext-transform: uppercase;\r\n\t\tletter-spacing: 0.05em;\r\n\t\ttext-align: left;\r\n\t}\r\n\r\n\t.mrdv-table.compact :global(th),\r\n\t.mrdv-table.compact :global(td) {\r\n\t\tpadding: 0.5rem 1rem;\r\n\t}\r\n\r\n\t.mrdv-table:not(.compact) :global(th),\r\n\t.mrdv-table:not(.compact) :global(td) {\r\n\t\tpadding: 1rem 1.5rem;\r\n\t}\r\n\r\n\t.mrdv-table :global(tbody) {\r\n\t\tposition: relative;\r\n\t\tz-index: 1;\r\n\t}\r\n\r\n\t.mrdv-table :global(tbody tr) {\r\n\t\tborder-bottom: 1px solid var(--color-border);\r\n\t\ttransition: all var(--ease-luxe);\r\n\t}\r\n\r\n\t.mrdv-table.hoverable :global(tbody tr:hover) {\r\n\t\tbackground: rgba(127, 61, 255, 0.05);\r\n\t\ttransform: translateY(-1px);\r\n\t\tbox-shadow:\r\n\t\t\t0 2px 8px rgba(0, 0, 0, 0.2),\r\n\t\t\tvar(--shadow-accent-glow);\r\n\t}\r\n\r\n\t.mrdv-table.striped :global(tbody tr:nth-child(even)) {\r\n\t\tbackground: rgba(255, 255, 255, 0.02);\r\n\t}\r\n\r\n\t.mrdv-table.striped.hoverable :global(tbody tr:nth-child(even):hover) {\r\n\t\tbackground: rgba(127, 61, 255, 0.05);\r\n\t\ttransform: translateY(-1px);\r\n\t\tbox-shadow:\r\n\t\t\t0 2px 8px rgba(0, 0, 0, 0.2),\r\n\t\t\tvar(--shadow-accent-glow);\r\n\t}\r\n\r\n\t.mrdv-table :global(th),\r\n\t.mrdv-table :global(td) {\r\n\t\ttext-align: left;\r\n\t}\r\n</style>\r\n","<script lang=\"ts\">\r\n\tinterface Props {\r\n\t\tcurrentPage: number;\r\n\t\ttotalPages: number;\r\n\t\tmaxVisible?: number;\r\n\t\tonpagechange?: (page: number) => void;\r\n\t}\r\n\r\n\tlet { currentPage = $bindable(1), totalPages, maxVisible = 7, onpagechange }: Props = $props();\r\n\r\n\tconst visiblePages = $derived((() => {\r\n\t\tconst pages: (number | 'ellipsis')[] = [];\r\n\r\n\t\tif (totalPages <= maxVisible) {\r\n\t\t\t// Show all pages\r\n\t\t\tfor (let i = 1; i <= totalPages; i++) {\r\n\t\t\t\tpages.push(i);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// Always show first page\r\n\t\t\tpages.push(1);\r\n\r\n\t\t\tconst halfVisible = Math.floor((maxVisible - 2) / 2);\r\n\t\t\tlet startPage = Math.max(2, currentPage - halfVisible);\r\n\t\t\tlet endPage = Math.min(totalPages - 1, currentPage + halfVisible);\r\n\r\n\t\t\t// Adjust range if at boundaries\r\n\t\t\tif (currentPage <= halfVisible + 1) {\r\n\t\t\t\tendPage = maxVisible - 1;\r\n\t\t\t} else if (currentPage >= totalPages - halfVisible) {\r\n\t\t\t\tstartPage = totalPages - maxVisible + 2;\r\n\t\t\t}\r\n\r\n\t\t\t// Add ellipsis before start if needed\r\n\t\t\tif (startPage > 2) {\r\n\t\t\t\tpages.push('ellipsis');\r\n\t\t\t}\r\n\r\n\t\t\t// Add middle pages\r\n\t\t\tfor (let i = startPage; i <= endPage; i++) {\r\n\t\t\t\tpages.push(i);\r\n\t\t\t}\r\n\r\n\t\t\t// Add ellipsis after end if needed\r\n\t\t\tif (endPage < totalPages - 1) {\r\n\t\t\t\tpages.push('ellipsis');\r\n\t\t\t}\r\n\r\n\t\t\t// Always show last page\r\n\t\t\tpages.push(totalPages);\r\n\t\t}\r\n\r\n\t\treturn pages;\r\n\t})());\r\n\r\n\tfunction goToPage(page: number) {\r\n\t\tif (page < 1 || page > totalPages || page === currentPage) return;\r\n\t\tcurrentPage = page;\r\n\t\tonpagechange?.(page);\r\n\t}\r\n</script>\r\n\r\n<nav role=\"navigation\" aria-label=\"Pagination\" class=\"flex items-center gap-2\">\r\n\t<!-- Previous Button -->\r\n\t<button\r\n\t\tclass=\"px-3 py-2 rounded-[var(--radius-md)] border border-[var(--color-border)] bg-transparent transition-all duration-300 font-[var(--font-body)] hover:bg-[rgba(127,61,255,0.1)] hover:border-[var(--color-accent)] disabled:opacity-40 disabled:cursor-not-allowed disabled:hover:bg-transparent disabled:hover:border-[var(--color-border)]\"\r\n\t\tonclick={() => goToPage(currentPage - 1)}\r\n\t\tdisabled={currentPage === 1}\r\n\t\taria-disabled={currentPage === 1}\r\n\t>\r\n\t\tPrevious\r\n\t</button>\r\n\r\n\t<!-- Page Numbers -->\r\n\t{#each visiblePages as page}\r\n\t\t{#if page === 'ellipsis'}\r\n\t\t\t<span class=\"px-3 py-2 text-[var(--color-text-muted)]\">...</span>\r\n\t\t{:else}\r\n\t\t\t<button\r\n\t\t\t\tclass=\"px-3 py-2 rounded-[var(--radius-md)] transition-all duration-300 font-[var(--font-body)]\"\r\n\t\t\t\tclass:active={page === currentPage}\r\n\t\t\t\tclass:inactive={page !== currentPage}\r\n\t\t\t\tonclick={() => goToPage(page)}\r\n\t\t\t\taria-current={page === currentPage ? 'page' : undefined}\r\n\t\t\t>\r\n\t\t\t\t{page}\r\n\t\t\t</button>\r\n\t\t{/if}\r\n\t{/each}\r\n\r\n\t<!-- Next Button -->\r\n\t<button\r\n\t\tclass=\"px-3 py-2 rounded-[var(--radius-md)] border border-[var(--color-border)] bg-transparent transition-all duration-300 font-[var(--font-body)] hover:bg-[rgba(127,61,255,0.1)] hover:border-[var(--color-accent)] disabled:opacity-40 disabled:cursor-not-allowed disabled:hover:bg-transparent disabled:hover:border-[var(--color-border)]\"\r\n\t\tonclick={() => goToPage(currentPage + 1)}\r\n\t\tdisabled={currentPage === totalPages}\r\n\t\taria-disabled={currentPage === totalPages}\r\n\t>\r\n\t\tNext\r\n\t</button>\r\n</nav>\r\n\r\n<style>\r\n\tbutton.active {\r\n\t\tbackground: var(--color-accent);\r\n\t\tcolor: var(--color-text);\r\n\t\tcursor: default;\r\n\t}\r\n\r\n\tbutton.active {\r\n\t\tbox-shadow: 0 0 20px rgba(127, 61, 255, 0.5);\r\n\t}\r\n\r\n\tbutton.inactive {\r\n\t\tbackground: transparent;\r\n\t\tborder: 1px solid var(--color-border);\r\n\t\tcolor: var(--color-text);\r\n\t}\r\n\r\n\tbutton.inactive:hover {\r\n\t\tbackground: rgba(127, 61, 255, 0.1);\r\n\t\tborder-color: var(--color-accent);\r\n\t}\r\n</style>\r\n","<script lang=\"ts\">\r\n\tinterface Props {\r\n\t\tvariant?: 'default' | 'success' | 'warning' | 'error' | 'accent';\r\n\t\tsize?: 'sm' | 'md';\r\n\t\tchildren?: import('svelte').Snippet;\r\n\t}\r\n\r\n\tlet { variant = 'default', size = 'md', children }: Props = $props();\r\n\r\n\tconst variantClasses = {\r\n\t\tdefault: 'bg-[var(--color-base-3)] text-[var(--color-text-soft)] border-[var(--color-base-3)]',\r\n\t\tsuccess:\r\n\t\t\t'bg-[rgba(0,232,151,0.15)] text-[var(--color-success)] border-[var(--color-success)]',\r\n\t\twarning:\r\n\t\t\t'bg-[rgba(255,200,97,0.15)] text-[var(--color-warning)] border-[var(--color-warning)]',\r\n\t\terror: 'bg-[rgba(255,74,106,0.15)] text-[var(--color-error)] border-[var(--color-error)]',\r\n\t\taccent: 'bg-[rgba(127,61,255,0.15)] text-[var(--color-accent-soft)] border-[var(--color-accent)] accent-glow'\r\n\t};\r\n\r\n\tconst sizeClasses = {\r\n\t\tsm: 'px-2 py-0.5 text-xs',\r\n\t\tmd: 'px-2.5 py-1 text-sm'\r\n\t};\r\n\r\n\tconst classes = $derived(\r\n\t\t`inline-flex items-center justify-center rounded-[var(--radius-pill)] border font-[var(--font-body)] font-medium transition-all duration-300 ${variantClasses[variant]} ${sizeClasses[size]}`\r\n\t);\r\n</script>\r\n\r\n<span class={classes}>\r\n\t{@render children?.()}\r\n</span>\r\n","<script lang=\"ts\">\r\n\tinterface Props {\r\n\t\tvariant?: 'default' | 'accent';\r\n\t\tdismissible?: boolean;\r\n\t\tondismiss?: () => void;\r\n\t\tchildren?: import('svelte').Snippet;\r\n\t}\r\n\r\n\tlet { variant = 'default', dismissible = false, ondismiss, children }: Props = $props();\r\n\r\n\tconst variantClasses = {\r\n\t\tdefault:\r\n\t\t\t'bg-[var(--color-base-2)] text-[var(--color-text-soft)] border-[var(--color-border)]',\r\n\t\taccent:\r\n\t\t\t'bg-[rgba(127,61,255,0.1)] text-[var(--color-accent-soft)] border-[var(--color-accent)] shadow-[0_0_12px_rgba(127,61,255,0.2)]'\r\n\t};\r\n\r\n\tconst classes = $derived(\r\n\t\t`inline-flex items-center gap-2 px-3 py-1.5 rounded-[var(--radius-pill)] border font-[var(--font-body)] font-medium text-sm transition-all duration-300 hover:scale-[1.02] ${variantClasses[variant]}`\r\n\t);\r\n\r\n\tfunction handleDismiss() {\r\n\t\tondismiss?.();\r\n\t}\r\n</script>\r\n\r\n<span class={classes}>\r\n\t{@render children?.()}\r\n\r\n\t{#if dismissible}\r\n\t\t<button\r\n\t\t\tclass=\"ml-1 opacity-60 hover:opacity-100 hover:text-[var(--color-text)] transition-all duration-300\"\r\n\t\t\tonclick={handleDismiss}\r\n\t\t\taria-label=\"Remove tag\"\r\n\t\t>\r\n\t\t\t<svg\r\n\t\t\t\twidth=\"14\"\r\n\t\t\t\theight=\"14\"\r\n\t\t\t\tviewBox=\"0 0 14 14\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t>\r\n\t\t\t\t<path\r\n\t\t\t\t\td=\"M10.5 3.5L3.5 10.5M3.5 3.5L10.5 10.5\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstroke-width=\"1.5\"\r\n\t\t\t\t\tstroke-linecap=\"round\"\r\n\t\t\t\t\tstroke-linejoin=\"round\"\r\n\t\t\t\t/>\r\n\t\t\t</svg>\r\n\t\t</button>\r\n\t{/if}\r\n</span>\r\n","<script lang=\"ts\">\r\n\tinterface Props {\r\n\t\tvariant?: 'plain' | 'bordered' | 'divided';\r\n\t\thoverable?: boolean;\r\n\t\tchildren?: import('svelte').Snippet;\r\n\t}\r\n\r\n\tlet { variant = 'plain', hoverable = false, children }: Props = $props();\r\n\r\n\tconst containerClasses = $derived(\r\n\t\tvariant === 'bordered'\r\n\t\t\t? 'glass-panel rounded-[var(--radius-lg)] border border-[var(--color-border)]'\r\n\t\t\t: ''\r\n\t);\r\n\r\n\tconst listClasses = $derived(`list-none ${variant} ${hoverable ? 'hoverable' : ''}`);\r\n</script>\r\n\r\n{#if variant === 'bordered'}\r\n\t<div class={containerClasses}>\r\n\t\t<ul class={listClasses}>\r\n\t\t\t{@render children?.()}\r\n\t\t</ul>\r\n\t</div>\r\n{:else}\r\n\t<ul class={listClasses}>\r\n\t\t{@render children?.()}\r\n\t</ul>\r\n{/if}\r\n\r\n<style>\r\n\tul {\r\n\t\tmargin: 0;\r\n\t\tpadding: 0;\r\n\t\tcolor: var(--color-text);\r\n\t\tfont-family: var(--font-body);\r\n\t}\r\n\r\n\t:global(ul.plain > li) {\r\n\t\tpadding: 0.5rem 0;\r\n\t}\r\n\r\n\t:global(ul.bordered > li) {\r\n\t\tpadding: 0.75rem 1rem;\r\n\t}\r\n\r\n\t:global(ul.divided > li) {\r\n\t\tpadding: 0.75rem 1rem;\r\n\t\tborder-bottom: 1px solid var(--color-border);\r\n\t}\r\n\r\n\t:global(ul.divided > li:last-child) {\r\n\t\tborder-bottom: none;\r\n\t}\r\n\r\n\t:global(ul.hoverable > li) {\r\n\t\ttransition: all var(--ease-luxe);\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t:global(ul.hoverable > li:hover) {\r\n\t\tbackground: rgba(127, 61, 255, 0.05);\r\n\t}\r\n</style>\r\n","<script lang=\"ts\">\r\n\tinterface Props {\r\n\t\tsrc?: string;\r\n\t\talt: string;\r\n\t\tsize?: 'sm' | 'md' | 'lg' | 'xl';\r\n\t\tfallback?: string;\r\n\t\tglow?: boolean;\r\n\t}\r\n\r\n\tlet { src, alt, size = 'md', fallback, glow = false }: Props = $props();\r\n\r\n\tlet imageLoaded = $state(!!src);\r\n\tlet imageError = $state(false);\r\n\r\n\tconst sizeClasses = {\r\n\t\tsm: 'w-8 h-8',\r\n\t\tmd: 'w-12 h-12',\r\n\t\tlg: 'w-16 h-16',\r\n\t\txl: 'w-24 h-24'\r\n\t};\r\n\r\n\tconst fontSizes = {\r\n\t\tsm: '0.75rem',\r\n\t\tmd: '1rem',\r\n\t\tlg: '1.25rem',\r\n\t\txl: '1.5rem'\r\n\t};\r\n\r\n\tconst classes = $derived(\r\n\t\t`${sizeClasses[size]} rounded-full overflow-hidden inline-flex items-center justify-center transition-all duration-300 hover:scale-105 ${glow ? 'border-2 border-[var(--color-accent)] accent-glow' : ''}`\r\n\t);\r\n\r\n\tconst fallbackText = $derived(\r\n\t\tfallback || alt.charAt(0).toUpperCase()\r\n\t);\r\n\r\n\tfunction handleImageError() {\r\n\t\timageError = true;\r\n\t\timageLoaded = false;\r\n\t}\r\n\r\n\tfunction handleImageLoad() {\r\n\t\timageLoaded = true;\r\n\t\timageError = false;\r\n\t}\r\n</script>\r\n\r\n{#if src && !imageError}\r\n\t<div class={classes}>\r\n\t\t<img\r\n\t\t\t{src}\r\n\t\t\t{alt}\r\n\t\t\tclass=\"w-full h-full object-cover\"\r\n\t\t\tonerror={handleImageError}\r\n\t\t\tonload={handleImageLoad}\r\n\t\t/>\r\n\t</div>\r\n{:else}\r\n\t<div\r\n\t\tclass={classes}\r\n\t\tstyle=\"background: linear-gradient(135deg, var(--color-accent) 0%, rgba(127, 61, 255, 0.7) 100%); color: var(--color-text); font-weight: 600; text-transform: uppercase; font-size: {fontSizes[size]};\"\r\n\t\trole=\"img\"\r\n\t\taria-label={alt}\r\n\t>\r\n\t\t{fallbackText}\r\n\t</div>\r\n{/if}\r\n","class ShikiError extends Error {\n constructor(message) {\n super(message);\n this.name = \"ShikiError\";\n }\n}\n\nexport { ShikiError };\n","// src/utils.ts\nfunction clone(something) {\n return doClone(something);\n}\nfunction doClone(something) {\n if (Array.isArray(something)) {\n return cloneArray(something);\n }\n if (something instanceof RegExp) {\n return something;\n }\n if (typeof something === \"object\") {\n return cloneObj(something);\n }\n return something;\n}\nfunction cloneArray(arr) {\n let r = [];\n for (let i = 0, len = arr.length; i < len; i++) {\n r[i] = doClone(arr[i]);\n }\n return r;\n}\nfunction cloneObj(obj) {\n let r = {};\n for (let key in obj) {\n r[key] = doClone(obj[key]);\n }\n return r;\n}\nfunction mergeObjects(target, ...sources) {\n sources.forEach((source) => {\n for (let key in source) {\n target[key] = source[key];\n }\n });\n return target;\n}\nfunction basename(path) {\n const idx = ~path.lastIndexOf(\"/\") || ~path.lastIndexOf(\"\\\\\");\n if (idx === 0) {\n return path;\n } else if (~idx === path.length - 1) {\n return basename(path.substring(0, path.length - 1));\n } else {\n return path.substr(~idx + 1);\n }\n}\nvar CAPTURING_REGEX_SOURCE = /\\$(\\d+)|\\${(\\d+):\\/(downcase|upcase)}/g;\nvar RegexSource = class {\n static hasCaptures(regexSource) {\n if (regexSource === null) {\n return false;\n }\n CAPTURING_REGEX_SOURCE.lastIndex = 0;\n return CAPTURING_REGEX_SOURCE.test(regexSource);\n }\n static replaceCaptures(regexSource, captureSource, captureIndices) {\n return regexSource.replace(CAPTURING_REGEX_SOURCE, (match, index, commandIndex, command) => {\n let capture = captureIndices[parseInt(index || commandIndex, 10)];\n if (capture) {\n let result = captureSource.substring(capture.start, capture.end);\n while (result[0] === \".\") {\n result = result.substring(1);\n }\n switch (command) {\n case \"downcase\":\n return result.toLowerCase();\n case \"upcase\":\n return result.toUpperCase();\n default:\n return result;\n }\n } else {\n return match;\n }\n });\n }\n};\nfunction strcmp(a, b) {\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n return 0;\n}\nfunction strArrCmp(a, b) {\n if (a === null && b === null) {\n return 0;\n }\n if (!a) {\n return -1;\n }\n if (!b) {\n return 1;\n }\n let len1 = a.length;\n let len2 = b.length;\n if (len1 === len2) {\n for (let i = 0; i < len1; i++) {\n let res = strcmp(a[i], b[i]);\n if (res !== 0) {\n return res;\n }\n }\n return 0;\n }\n return len1 - len2;\n}\nfunction isValidHexColor(hex) {\n if (/^#[0-9a-f]{6}$/i.test(hex)) {\n return true;\n }\n if (/^#[0-9a-f]{8}$/i.test(hex)) {\n return true;\n }\n if (/^#[0-9a-f]{3}$/i.test(hex)) {\n return true;\n }\n if (/^#[0-9a-f]{4}$/i.test(hex)) {\n return true;\n }\n return false;\n}\nfunction escapeRegExpCharacters(value) {\n return value.replace(/[\\-\\\\\\{\\}\\*\\+\\?\\|\\^\\$\\.\\,\\[\\]\\(\\)\\#\\s]/g, \"\\\\$&\");\n}\nvar CachedFn = class {\n constructor(fn) {\n this.fn = fn;\n }\n cache = /* @__PURE__ */ new Map();\n get(key) {\n if (this.cache.has(key)) {\n return this.cache.get(key);\n }\n const value = this.fn(key);\n this.cache.set(key, value);\n return value;\n }\n};\n\n// src/theme.ts\nvar Theme = class {\n constructor(_colorMap, _defaults, _root) {\n this._colorMap = _colorMap;\n this._defaults = _defaults;\n this._root = _root;\n }\n static createFromRawTheme(source, colorMap) {\n return this.createFromParsedTheme(parseTheme(source), colorMap);\n }\n static createFromParsedTheme(source, colorMap) {\n return resolveParsedThemeRules(source, colorMap);\n }\n _cachedMatchRoot = new CachedFn(\n (scopeName) => this._root.match(scopeName)\n );\n getColorMap() {\n return this._colorMap.getColorMap();\n }\n getDefaults() {\n return this._defaults;\n }\n match(scopePath) {\n if (scopePath === null) {\n return this._defaults;\n }\n const scopeName = scopePath.scopeName;\n const matchingTrieElements = this._cachedMatchRoot.get(scopeName);\n const effectiveRule = matchingTrieElements.find(\n (v) => _scopePathMatchesParentScopes(scopePath.parent, v.parentScopes)\n );\n if (!effectiveRule) {\n return null;\n }\n return new StyleAttributes(\n effectiveRule.fontStyle,\n effectiveRule.foreground,\n effectiveRule.background\n );\n }\n};\nvar ScopeStack = class _ScopeStack {\n constructor(parent, scopeName) {\n this.parent = parent;\n this.scopeName = scopeName;\n }\n static push(path, scopeNames) {\n for (const name of scopeNames) {\n path = new _ScopeStack(path, name);\n }\n return path;\n }\n static from(...segments) {\n let result = null;\n for (let i = 0; i < segments.length; i++) {\n result = new _ScopeStack(result, segments[i]);\n }\n return result;\n }\n push(scopeName) {\n return new _ScopeStack(this, scopeName);\n }\n getSegments() {\n let item = this;\n const result = [];\n while (item) {\n result.push(item.scopeName);\n item = item.parent;\n }\n result.reverse();\n return result;\n }\n toString() {\n return this.getSegments().join(\" \");\n }\n extends(other) {\n if (this === other) {\n return true;\n }\n if (this.parent === null) {\n return false;\n }\n return this.parent.extends(other);\n }\n getExtensionIfDefined(base) {\n const result = [];\n let item = this;\n while (item && item !== base) {\n result.push(item.scopeName);\n item = item.parent;\n }\n return item === base ? result.reverse() : void 0;\n }\n};\nfunction _scopePathMatchesParentScopes(scopePath, parentScopes) {\n if (parentScopes.length === 0) {\n return true;\n }\n for (let index = 0; index < parentScopes.length; index++) {\n let scopePattern = parentScopes[index];\n let scopeMustMatch = false;\n if (scopePattern === \">\") {\n if (index === parentScopes.length - 1) {\n return false;\n }\n scopePattern = parentScopes[++index];\n scopeMustMatch = true;\n }\n while (scopePath) {\n if (_matchesScope(scopePath.scopeName, scopePattern)) {\n break;\n }\n if (scopeMustMatch) {\n return false;\n }\n scopePath = scopePath.parent;\n }\n if (!scopePath) {\n return false;\n }\n scopePath = scopePath.parent;\n }\n return true;\n}\nfunction _matchesScope(scopeName, scopePattern) {\n return scopePattern === scopeName || scopeName.startsWith(scopePattern) && scopeName[scopePattern.length] === \".\";\n}\nvar StyleAttributes = class {\n constructor(fontStyle, foregroundId, backgroundId) {\n this.fontStyle = fontStyle;\n this.foregroundId = foregroundId;\n this.backgroundId = backgroundId;\n }\n};\nfunction parseTheme(source) {\n if (!source) {\n return [];\n }\n if (!source.settings || !Array.isArray(source.settings)) {\n return [];\n }\n let settings = source.settings;\n let result = [], resultLen = 0;\n for (let i = 0, len = settings.length; i < len; i++) {\n let entry = settings[i];\n if (!entry.settings) {\n continue;\n }\n let scopes;\n if (typeof entry.scope === \"string\") {\n let _scope = entry.scope;\n _scope = _scope.replace(/^[,]+/, \"\");\n _scope = _scope.replace(/[,]+$/, \"\");\n scopes = _scope.split(\",\");\n } else if (Array.isArray(entry.scope)) {\n scopes = entry.scope;\n } else {\n scopes = [\"\"];\n }\n let fontStyle = -1 /* NotSet */;\n if (typeof entry.settings.fontStyle === \"string\") {\n fontStyle = 0 /* None */;\n let segments = entry.settings.fontStyle.split(\" \");\n for (let j = 0, lenJ = segments.length; j < lenJ; j++) {\n let segment = segments[j];\n switch (segment) {\n case \"italic\":\n fontStyle = fontStyle | 1 /* Italic */;\n break;\n case \"bold\":\n fontStyle = fontStyle | 2 /* Bold */;\n break;\n case \"underline\":\n fontStyle = fontStyle | 4 /* Underline */;\n break;\n case \"strikethrough\":\n fontStyle = fontStyle | 8 /* Strikethrough */;\n break;\n }\n }\n }\n let foreground = null;\n if (typeof entry.settings.foreground === \"string\" && isValidHexColor(entry.settings.foreground)) {\n foreground = entry.settings.foreground;\n }\n let background = null;\n if (typeof entry.settings.background === \"string\" && isValidHexColor(entry.settings.background)) {\n background = entry.settings.background;\n }\n for (let j = 0, lenJ = scopes.length; j < lenJ; j++) {\n let _scope = scopes[j].trim();\n let segments = _scope.split(\" \");\n let scope = segments[segments.length - 1];\n let parentScopes = null;\n if (segments.length > 1) {\n parentScopes = segments.slice(0, segments.length - 1);\n parentScopes.reverse();\n }\n result[resultLen++] = new ParsedThemeRule(\n scope,\n parentScopes,\n i,\n fontStyle,\n foreground,\n background\n );\n }\n }\n return result;\n}\nvar ParsedThemeRule = class {\n constructor(scope, parentScopes, index, fontStyle, foreground, background) {\n this.scope = scope;\n this.parentScopes = parentScopes;\n this.index = index;\n this.fontStyle = fontStyle;\n this.foreground = foreground;\n this.background = background;\n }\n};\nvar FontStyle = /* @__PURE__ */ ((FontStyle2) => {\n FontStyle2[FontStyle2[\"NotSet\"] = -1] = \"NotSet\";\n FontStyle2[FontStyle2[\"None\"] = 0] = \"None\";\n FontStyle2[FontStyle2[\"Italic\"] = 1] = \"Italic\";\n FontStyle2[FontStyle2[\"Bold\"] = 2] = \"Bold\";\n FontStyle2[FontStyle2[\"Underline\"] = 4] = \"Underline\";\n FontStyle2[FontStyle2[\"Strikethrough\"] = 8] = \"Strikethrough\";\n return FontStyle2;\n})(FontStyle || {});\nfunction resolveParsedThemeRules(parsedThemeRules, _colorMap) {\n parsedThemeRules.sort((a, b) => {\n let r = strcmp(a.scope, b.scope);\n if (r !== 0) {\n return r;\n }\n r = strArrCmp(a.parentScopes, b.parentScopes);\n if (r !== 0) {\n return r;\n }\n return a.index - b.index;\n });\n let defaultFontStyle = 0 /* None */;\n let defaultForeground = \"#000000\";\n let defaultBackground = \"#ffffff\";\n while (parsedThemeRules.length >= 1 && parsedThemeRules[0].scope === \"\") {\n let incomingDefaults = parsedThemeRules.shift();\n if (incomingDefaults.fontStyle !== -1 /* NotSet */) {\n defaultFontStyle = incomingDefaults.fontStyle;\n }\n if (incomingDefaults.foreground !== null) {\n defaultForeground = incomingDefaults.foreground;\n }\n if (incomingDefaults.background !== null) {\n defaultBackground = incomingDefaults.background;\n }\n }\n let colorMap = new ColorMap(_colorMap);\n let defaults = new StyleAttributes(defaultFontStyle, colorMap.getId(defaultForeground), colorMap.getId(defaultBackground));\n let root = new ThemeTrieElement(new ThemeTrieElementRule(0, null, -1 /* NotSet */, 0, 0), []);\n for (let i = 0, len = parsedThemeRules.length; i < len; i++) {\n let rule = parsedThemeRules[i];\n root.insert(0, rule.scope, rule.parentScopes, rule.fontStyle, colorMap.getId(rule.foreground), colorMap.getId(rule.background));\n }\n return new Theme(colorMap, defaults, root);\n}\nvar ColorMap = class {\n _isFrozen;\n _lastColorId;\n _id2color;\n _color2id;\n constructor(_colorMap) {\n this._lastColorId = 0;\n this._id2color = [];\n this._color2id = /* @__PURE__ */ Object.create(null);\n if (Array.isArray(_colorMap)) {\n this._isFrozen = true;\n for (let i = 0, len = _colorMap.length; i < len; i++) {\n this._color2id[_colorMap[i]] = i;\n this._id2color[i] = _colorMap[i];\n }\n } else {\n this._isFrozen = false;\n }\n }\n getId(color) {\n if (color === null) {\n return 0;\n }\n color = color.toUpperCase();\n let value = this._color2id[color];\n if (value) {\n return value;\n }\n if (this._isFrozen) {\n throw new Error(`Missing color in color map - ${color}`);\n }\n value = ++this._lastColorId;\n this._color2id[color] = value;\n this._id2color[value] = color;\n return value;\n }\n getColorMap() {\n return this._id2color.slice(0);\n }\n};\nvar emptyParentScopes = Object.freeze([]);\nvar ThemeTrieElementRule = class _ThemeTrieElementRule {\n scopeDepth;\n parentScopes;\n fontStyle;\n foreground;\n background;\n constructor(scopeDepth, parentScopes, fontStyle, foreground, background) {\n this.scopeDepth = scopeDepth;\n this.parentScopes = parentScopes || emptyParentScopes;\n this.fontStyle = fontStyle;\n this.foreground = foreground;\n this.background = background;\n }\n clone() {\n return new _ThemeTrieElementRule(this.scopeDepth, this.parentScopes, this.fontStyle, this.foreground, this.background);\n }\n static cloneArr(arr) {\n let r = [];\n for (let i = 0, len = arr.length; i < len; i++) {\n r[i] = arr[i].clone();\n }\n return r;\n }\n acceptOverwrite(scopeDepth, fontStyle, foreground, background) {\n if (this.scopeDepth > scopeDepth) {\n console.log(\"how did this happen?\");\n } else {\n this.scopeDepth = scopeDepth;\n }\n if (fontStyle !== -1 /* NotSet */) {\n this.fontStyle = fontStyle;\n }\n if (foreground !== 0) {\n this.foreground = foreground;\n }\n if (background !== 0) {\n this.background = background;\n }\n }\n};\nvar ThemeTrieElement = class _ThemeTrieElement {\n constructor(_mainRule, rulesWithParentScopes = [], _children = {}) {\n this._mainRule = _mainRule;\n this._children = _children;\n this._rulesWithParentScopes = rulesWithParentScopes;\n }\n _rulesWithParentScopes;\n static _cmpBySpecificity(a, b) {\n if (a.scopeDepth !== b.scopeDepth) {\n return b.scopeDepth - a.scopeDepth;\n }\n let aParentIndex = 0;\n let bParentIndex = 0;\n while (true) {\n if (a.parentScopes[aParentIndex] === \">\") {\n aParentIndex++;\n }\n if (b.parentScopes[bParentIndex] === \">\") {\n bParentIndex++;\n }\n if (aParentIndex >= a.parentScopes.length || bParentIndex >= b.parentScopes.length) {\n break;\n }\n const parentScopeLengthDiff = b.parentScopes[bParentIndex].length - a.parentScopes[aParentIndex].length;\n if (parentScopeLengthDiff !== 0) {\n return parentScopeLengthDiff;\n }\n aParentIndex++;\n bParentIndex++;\n }\n return b.parentScopes.length - a.parentScopes.length;\n }\n match(scope) {\n if (scope !== \"\") {\n let dotIndex = scope.indexOf(\".\");\n let head;\n let tail;\n if (dotIndex === -1) {\n head = scope;\n tail = \"\";\n } else {\n head = scope.substring(0, dotIndex);\n tail = scope.substring(dotIndex + 1);\n }\n if (this._children.hasOwnProperty(head)) {\n return this._children[head].match(tail);\n }\n }\n const rules = this._rulesWithParentScopes.concat(this._mainRule);\n rules.sort(_ThemeTrieElement._cmpBySpecificity);\n return rules;\n }\n insert(scopeDepth, scope, parentScopes, fontStyle, foreground, background) {\n if (scope === \"\") {\n this._doInsertHere(scopeDepth, parentScopes, fontStyle, foreground, background);\n return;\n }\n let dotIndex = scope.indexOf(\".\");\n let head;\n let tail;\n if (dotIndex === -1) {\n head = scope;\n tail = \"\";\n } else {\n head = scope.substring(0, dotIndex);\n tail = scope.substring(dotIndex + 1);\n }\n let child;\n if (this._children.hasOwnProperty(head)) {\n child = this._children[head];\n } else {\n child = new _ThemeTrieElement(this._mainRule.clone(), ThemeTrieElementRule.cloneArr(this._rulesWithParentScopes));\n this._children[head] = child;\n }\n child.insert(scopeDepth + 1, tail, parentScopes, fontStyle, foreground, background);\n }\n _doInsertHere(scopeDepth, parentScopes, fontStyle, foreground, background) {\n if (parentScopes === null) {\n this._mainRule.acceptOverwrite(scopeDepth, fontStyle, foreground, background);\n return;\n }\n for (let i = 0, len = this._rulesWithParentScopes.length; i < len; i++) {\n let rule = this._rulesWithParentScopes[i];\n if (strArrCmp(rule.parentScopes, parentScopes) === 0) {\n rule.acceptOverwrite(scopeDepth, fontStyle, foreground, background);\n return;\n }\n }\n if (fontStyle === -1 /* NotSet */) {\n fontStyle = this._mainRule.fontStyle;\n }\n if (foreground === 0) {\n foreground = this._mainRule.foreground;\n }\n if (background === 0) {\n background = this._mainRule.background;\n }\n this._rulesWithParentScopes.push(new ThemeTrieElementRule(scopeDepth, parentScopes, fontStyle, foreground, background));\n }\n};\n\n// src/encodedTokenAttributes.ts\nvar EncodedTokenMetadata = class _EncodedTokenMetadata {\n static toBinaryStr(encodedTokenAttributes) {\n return encodedTokenAttributes.toString(2).padStart(32, \"0\");\n }\n static print(encodedTokenAttributes) {\n const languageId = _EncodedTokenMetadata.getLanguageId(encodedTokenAttributes);\n const tokenType = _EncodedTokenMetadata.getTokenType(encodedTokenAttributes);\n const fontStyle = _EncodedTokenMetadata.getFontStyle(encodedTokenAttributes);\n const foreground = _EncodedTokenMetadata.getForeground(encodedTokenAttributes);\n const background = _EncodedTokenMetadata.getBackground(encodedTokenAttributes);\n console.log({\n languageId,\n tokenType,\n fontStyle,\n foreground,\n background\n });\n }\n static getLanguageId(encodedTokenAttributes) {\n return (encodedTokenAttributes & 255 /* LANGUAGEID_MASK */) >>> 0 /* LANGUAGEID_OFFSET */;\n }\n static getTokenType(encodedTokenAttributes) {\n return (encodedTokenAttributes & 768 /* TOKEN_TYPE_MASK */) >>> 8 /* TOKEN_TYPE_OFFSET */;\n }\n static containsBalancedBrackets(encodedTokenAttributes) {\n return (encodedTokenAttributes & 1024 /* BALANCED_BRACKETS_MASK */) !== 0;\n }\n static getFontStyle(encodedTokenAttributes) {\n return (encodedTokenAttributes & 30720 /* FONT_STYLE_MASK */) >>> 11 /* FONT_STYLE_OFFSET */;\n }\n static getForeground(encodedTokenAttributes) {\n return (encodedTokenAttributes & 16744448 /* FOREGROUND_MASK */) >>> 15 /* FOREGROUND_OFFSET */;\n }\n static getBackground(encodedTokenAttributes) {\n return (encodedTokenAttributes & 4278190080 /* BACKGROUND_MASK */) >>> 24 /* BACKGROUND_OFFSET */;\n }\n /**\n * Updates the fields in `metadata`.\n * A value of `0`, `NotSet` or `null` indicates that the corresponding field should be left as is.\n */\n static set(encodedTokenAttributes, languageId, tokenType, containsBalancedBrackets, fontStyle, foreground, background) {\n let _languageId = _EncodedTokenMetadata.getLanguageId(encodedTokenAttributes);\n let _tokenType = _EncodedTokenMetadata.getTokenType(encodedTokenAttributes);\n let _containsBalancedBracketsBit = _EncodedTokenMetadata.containsBalancedBrackets(encodedTokenAttributes) ? 1 : 0;\n let _fontStyle = _EncodedTokenMetadata.getFontStyle(encodedTokenAttributes);\n let _foreground = _EncodedTokenMetadata.getForeground(encodedTokenAttributes);\n let _background = _EncodedTokenMetadata.getBackground(encodedTokenAttributes);\n if (languageId !== 0) {\n _languageId = languageId;\n }\n if (tokenType !== 8 /* NotSet */) {\n _tokenType = fromOptionalTokenType(tokenType);\n }\n if (containsBalancedBrackets !== null) {\n _containsBalancedBracketsBit = containsBalancedBrackets ? 1 : 0;\n }\n if (fontStyle !== -1 /* NotSet */) {\n _fontStyle = fontStyle;\n }\n if (foreground !== 0) {\n _foreground = foreground;\n }\n if (background !== 0) {\n _background = background;\n }\n return (_languageId << 0 /* LANGUAGEID_OFFSET */ | _tokenType << 8 /* TOKEN_TYPE_OFFSET */ | _containsBalancedBracketsBit << 10 /* BALANCED_BRACKETS_OFFSET */ | _fontStyle << 11 /* FONT_STYLE_OFFSET */ | _foreground << 15 /* FOREGROUND_OFFSET */ | _background << 24 /* BACKGROUND_OFFSET */) >>> 0;\n }\n};\nfunction toOptionalTokenType(standardType) {\n return standardType;\n}\nfunction fromOptionalTokenType(standardType) {\n return standardType;\n}\n\n// src/matcher.ts\nfunction createMatchers(selector, matchesName) {\n const results = [];\n const tokenizer = newTokenizer(selector);\n let token = tokenizer.next();\n while (token !== null) {\n let priority = 0;\n if (token.length === 2 && token.charAt(1) === \":\") {\n switch (token.charAt(0)) {\n case \"R\":\n priority = 1;\n break;\n case \"L\":\n priority = -1;\n break;\n default:\n console.log(`Unknown priority ${token} in scope selector`);\n }\n token = tokenizer.next();\n }\n let matcher = parseConjunction();\n results.push({ matcher, priority });\n if (token !== \",\") {\n break;\n }\n token = tokenizer.next();\n }\n return results;\n function parseOperand() {\n if (token === \"-\") {\n token = tokenizer.next();\n const expressionToNegate = parseOperand();\n return (matcherInput) => !!expressionToNegate && !expressionToNegate(matcherInput);\n }\n if (token === \"(\") {\n token = tokenizer.next();\n const expressionInParents = parseInnerExpression();\n if (token === \")\") {\n token = tokenizer.next();\n }\n return expressionInParents;\n }\n if (isIdentifier(token)) {\n const identifiers = [];\n do {\n identifiers.push(token);\n token = tokenizer.next();\n } while (isIdentifier(token));\n return (matcherInput) => matchesName(identifiers, matcherInput);\n }\n return null;\n }\n function parseConjunction() {\n const matchers = [];\n let matcher = parseOperand();\n while (matcher) {\n matchers.push(matcher);\n matcher = parseOperand();\n }\n return (matcherInput) => matchers.every((matcher2) => matcher2(matcherInput));\n }\n function parseInnerExpression() {\n const matchers = [];\n let matcher = parseConjunction();\n while (matcher) {\n matchers.push(matcher);\n if (token === \"|\" || token === \",\") {\n do {\n token = tokenizer.next();\n } while (token === \"|\" || token === \",\");\n } else {\n break;\n }\n matcher = parseConjunction();\n }\n return (matcherInput) => matchers.some((matcher2) => matcher2(matcherInput));\n }\n}\nfunction isIdentifier(token) {\n return !!token && !!token.match(/[\\w\\.:]+/);\n}\nfunction newTokenizer(input) {\n let regex = /([LR]:|[\\w\\.:][\\w\\.:\\-]*|[\\,\\|\\-\\(\\)])/g;\n let match = regex.exec(input);\n return {\n next: () => {\n if (!match) {\n return null;\n }\n const res = match[0];\n match = regex.exec(input);\n return res;\n }\n };\n}\n\n// src/onigLib.ts\nvar FindOption = /* @__PURE__ */ ((FindOption2) => {\n FindOption2[FindOption2[\"None\"] = 0] = \"None\";\n FindOption2[FindOption2[\"NotBeginString\"] = 1] = \"NotBeginString\";\n FindOption2[FindOption2[\"NotEndString\"] = 2] = \"NotEndString\";\n FindOption2[FindOption2[\"NotBeginPosition\"] = 4] = \"NotBeginPosition\";\n FindOption2[FindOption2[\"DebugCall\"] = 8] = \"DebugCall\";\n return FindOption2;\n})(FindOption || {});\nfunction disposeOnigString(str) {\n if (typeof str.dispose === \"function\") {\n str.dispose();\n }\n}\n\n// src/grammar/grammarDependencies.ts\nvar TopLevelRuleReference = class {\n constructor(scopeName) {\n this.scopeName = scopeName;\n }\n toKey() {\n return this.scopeName;\n }\n};\nvar TopLevelRepositoryRuleReference = class {\n constructor(scopeName, ruleName) {\n this.scopeName = scopeName;\n this.ruleName = ruleName;\n }\n toKey() {\n return `${this.scopeName}#${this.ruleName}`;\n }\n};\nvar ExternalReferenceCollector = class {\n _references = [];\n _seenReferenceKeys = /* @__PURE__ */ new Set();\n get references() {\n return this._references;\n }\n visitedRule = /* @__PURE__ */ new Set();\n add(reference) {\n const key = reference.toKey();\n if (this._seenReferenceKeys.has(key)) {\n return;\n }\n this._seenReferenceKeys.add(key);\n this._references.push(reference);\n }\n};\nvar ScopeDependencyProcessor = class {\n constructor(repo, initialScopeName) {\n this.repo = repo;\n this.initialScopeName = initialScopeName;\n this.seenFullScopeRequests.add(this.initialScopeName);\n this.Q = [new TopLevelRuleReference(this.initialScopeName)];\n }\n seenFullScopeRequests = /* @__PURE__ */ new Set();\n seenPartialScopeRequests = /* @__PURE__ */ new Set();\n Q;\n processQueue() {\n const q = this.Q;\n this.Q = [];\n const deps = new ExternalReferenceCollector();\n for (const dep of q) {\n collectReferencesOfReference(dep, this.initialScopeName, this.repo, deps);\n }\n for (const dep of deps.references) {\n if (dep instanceof TopLevelRuleReference) {\n if (this.seenFullScopeRequests.has(dep.scopeName)) {\n continue;\n }\n this.seenFullScopeRequests.add(dep.scopeName);\n this.Q.push(dep);\n } else {\n if (this.seenFullScopeRequests.has(dep.scopeName)) {\n continue;\n }\n if (this.seenPartialScopeRequests.has(dep.toKey())) {\n continue;\n }\n this.seenPartialScopeRequests.add(dep.toKey());\n this.Q.push(dep);\n }\n }\n }\n};\nfunction collectReferencesOfReference(reference, baseGrammarScopeName, repo, result) {\n const selfGrammar = repo.lookup(reference.scopeName);\n if (!selfGrammar) {\n if (reference.scopeName === baseGrammarScopeName) {\n throw new Error(`No grammar provided for <${baseGrammarScopeName}>`);\n }\n return;\n }\n const baseGrammar = repo.lookup(baseGrammarScopeName);\n if (reference instanceof TopLevelRuleReference) {\n collectExternalReferencesInTopLevelRule({ baseGrammar, selfGrammar }, result);\n } else {\n collectExternalReferencesInTopLevelRepositoryRule(\n reference.ruleName,\n { baseGrammar, selfGrammar, repository: selfGrammar.repository },\n result\n );\n }\n const injections = repo.injections(reference.scopeName);\n if (injections) {\n for (const injection of injections) {\n result.add(new TopLevelRuleReference(injection));\n }\n }\n}\nfunction collectExternalReferencesInTopLevelRepositoryRule(ruleName, context, result) {\n if (context.repository && context.repository[ruleName]) {\n const rule = context.repository[ruleName];\n collectExternalReferencesInRules([rule], context, result);\n }\n}\nfunction collectExternalReferencesInTopLevelRule(context, result) {\n if (context.selfGrammar.patterns && Array.isArray(context.selfGrammar.patterns)) {\n collectExternalReferencesInRules(\n context.selfGrammar.patterns,\n { ...context, repository: context.selfGrammar.repository },\n result\n );\n }\n if (context.selfGrammar.injections) {\n collectExternalReferencesInRules(\n Object.values(context.selfGrammar.injections),\n { ...context, repository: context.selfGrammar.repository },\n result\n );\n }\n}\nfunction collectExternalReferencesInRules(rules, context, result) {\n for (const rule of rules) {\n if (result.visitedRule.has(rule)) {\n continue;\n }\n result.visitedRule.add(rule);\n const patternRepository = rule.repository ? mergeObjects({}, context.repository, rule.repository) : context.repository;\n if (Array.isArray(rule.patterns)) {\n collectExternalReferencesInRules(rule.patterns, { ...context, repository: patternRepository }, result);\n }\n const include = rule.include;\n if (!include) {\n continue;\n }\n const reference = parseInclude(include);\n switch (reference.kind) {\n case 0 /* Base */:\n collectExternalReferencesInTopLevelRule({ ...context, selfGrammar: context.baseGrammar }, result);\n break;\n case 1 /* Self */:\n collectExternalReferencesInTopLevelRule(context, result);\n break;\n case 2 /* RelativeReference */:\n collectExternalReferencesInTopLevelRepositoryRule(reference.ruleName, { ...context, repository: patternRepository }, result);\n break;\n case 3 /* TopLevelReference */:\n case 4 /* TopLevelRepositoryReference */:\n const selfGrammar = reference.scopeName === context.selfGrammar.scopeName ? context.selfGrammar : reference.scopeName === context.baseGrammar.scopeName ? context.baseGrammar : void 0;\n if (selfGrammar) {\n const newContext = { baseGrammar: context.baseGrammar, selfGrammar, repository: patternRepository };\n if (reference.kind === 4 /* TopLevelRepositoryReference */) {\n collectExternalReferencesInTopLevelRepositoryRule(reference.ruleName, newContext, result);\n } else {\n collectExternalReferencesInTopLevelRule(newContext, result);\n }\n } else {\n if (reference.kind === 4 /* TopLevelRepositoryReference */) {\n result.add(new TopLevelRepositoryRuleReference(reference.scopeName, reference.ruleName));\n } else {\n result.add(new TopLevelRuleReference(reference.scopeName));\n }\n }\n break;\n }\n }\n}\nvar BaseReference = class {\n kind = 0 /* Base */;\n};\nvar SelfReference = class {\n kind = 1 /* Self */;\n};\nvar RelativeReference = class {\n constructor(ruleName) {\n this.ruleName = ruleName;\n }\n kind = 2 /* RelativeReference */;\n};\nvar TopLevelReference = class {\n constructor(scopeName) {\n this.scopeName = scopeName;\n }\n kind = 3 /* TopLevelReference */;\n};\nvar TopLevelRepositoryReference = class {\n constructor(scopeName, ruleName) {\n this.scopeName = scopeName;\n this.ruleName = ruleName;\n }\n kind = 4 /* TopLevelRepositoryReference */;\n};\nfunction parseInclude(include) {\n if (include === \"$base\") {\n return new BaseReference();\n } else if (include === \"$self\") {\n return new SelfReference();\n }\n const indexOfSharp = include.indexOf(\"#\");\n if (indexOfSharp === -1) {\n return new TopLevelReference(include);\n } else if (indexOfSharp === 0) {\n return new RelativeReference(include.substring(1));\n } else {\n const scopeName = include.substring(0, indexOfSharp);\n const ruleName = include.substring(indexOfSharp + 1);\n return new TopLevelRepositoryReference(scopeName, ruleName);\n }\n}\n\n// src/rule.ts\nvar HAS_BACK_REFERENCES = /\\\\(\\d+)/;\nvar BACK_REFERENCING_END = /\\\\(\\d+)/g;\nvar ruleIdSymbol = Symbol(\"RuleId\");\nvar endRuleId = -1;\nvar whileRuleId = -2;\nfunction ruleIdFromNumber(id) {\n return id;\n}\nfunction ruleIdToNumber(id) {\n return id;\n}\nvar Rule = class {\n $location;\n id;\n _nameIsCapturing;\n _name;\n _contentNameIsCapturing;\n _contentName;\n constructor($location, id, name, contentName) {\n this.$location = $location;\n this.id = id;\n this._name = name || null;\n this._nameIsCapturing = RegexSource.hasCaptures(this._name);\n this._contentName = contentName || null;\n this._contentNameIsCapturing = RegexSource.hasCaptures(this._contentName);\n }\n get debugName() {\n const location = this.$location ? `${basename(this.$location.filename)}:${this.$location.line}` : \"unknown\";\n return `${this.constructor.name}#${this.id} @ ${location}`;\n }\n getName(lineText, captureIndices) {\n if (!this._nameIsCapturing || this._name === null || lineText === null || captureIndices === null) {\n return this._name;\n }\n return RegexSource.replaceCaptures(this._name, lineText, captureIndices);\n }\n getContentName(lineText, captureIndices) {\n if (!this._contentNameIsCapturing || this._contentName === null) {\n return this._contentName;\n }\n return RegexSource.replaceCaptures(this._contentName, lineText, captureIndices);\n }\n};\nvar CaptureRule = class extends Rule {\n retokenizeCapturedWithRuleId;\n constructor($location, id, name, contentName, retokenizeCapturedWithRuleId) {\n super($location, id, name, contentName);\n this.retokenizeCapturedWithRuleId = retokenizeCapturedWithRuleId;\n }\n dispose() {\n }\n collectPatterns(grammar, out) {\n throw new Error(\"Not supported!\");\n }\n compile(grammar, endRegexSource) {\n throw new Error(\"Not supported!\");\n }\n compileAG(grammar, endRegexSource, allowA, allowG) {\n throw new Error(\"Not supported!\");\n }\n};\nvar MatchRule = class extends Rule {\n _match;\n captures;\n _cachedCompiledPatterns;\n constructor($location, id, name, match, captures) {\n super($location, id, name, null);\n this._match = new RegExpSource(match, this.id);\n this.captures = captures;\n this._cachedCompiledPatterns = null;\n }\n dispose() {\n if (this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns.dispose();\n this._cachedCompiledPatterns = null;\n }\n }\n get debugMatchRegExp() {\n return `${this._match.source}`;\n }\n collectPatterns(grammar, out) {\n out.push(this._match);\n }\n compile(grammar, endRegexSource) {\n return this._getCachedCompiledPatterns(grammar).compile(grammar);\n }\n compileAG(grammar, endRegexSource, allowA, allowG) {\n return this._getCachedCompiledPatterns(grammar).compileAG(grammar, allowA, allowG);\n }\n _getCachedCompiledPatterns(grammar) {\n if (!this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns = new RegExpSourceList();\n this.collectPatterns(grammar, this._cachedCompiledPatterns);\n }\n return this._cachedCompiledPatterns;\n }\n};\nvar IncludeOnlyRule = class extends Rule {\n hasMissingPatterns;\n patterns;\n _cachedCompiledPatterns;\n constructor($location, id, name, contentName, patterns) {\n super($location, id, name, contentName);\n this.patterns = patterns.patterns;\n this.hasMissingPatterns = patterns.hasMissingPatterns;\n this._cachedCompiledPatterns = null;\n }\n dispose() {\n if (this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns.dispose();\n this._cachedCompiledPatterns = null;\n }\n }\n collectPatterns(grammar, out) {\n for (const pattern of this.patterns) {\n const rule = grammar.getRule(pattern);\n rule.collectPatterns(grammar, out);\n }\n }\n compile(grammar, endRegexSource) {\n return this._getCachedCompiledPatterns(grammar).compile(grammar);\n }\n compileAG(grammar, endRegexSource, allowA, allowG) {\n return this._getCachedCompiledPatterns(grammar).compileAG(grammar, allowA, allowG);\n }\n _getCachedCompiledPatterns(grammar) {\n if (!this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns = new RegExpSourceList();\n this.collectPatterns(grammar, this._cachedCompiledPatterns);\n }\n return this._cachedCompiledPatterns;\n }\n};\nvar BeginEndRule = class extends Rule {\n _begin;\n beginCaptures;\n _end;\n endHasBackReferences;\n endCaptures;\n applyEndPatternLast;\n hasMissingPatterns;\n patterns;\n _cachedCompiledPatterns;\n constructor($location, id, name, contentName, begin, beginCaptures, end, endCaptures, applyEndPatternLast, patterns) {\n super($location, id, name, contentName);\n this._begin = new RegExpSource(begin, this.id);\n this.beginCaptures = beginCaptures;\n this._end = new RegExpSource(end ? end : \"\\uFFFF\", -1);\n this.endHasBackReferences = this._end.hasBackReferences;\n this.endCaptures = endCaptures;\n this.applyEndPatternLast = applyEndPatternLast || false;\n this.patterns = patterns.patterns;\n this.hasMissingPatterns = patterns.hasMissingPatterns;\n this._cachedCompiledPatterns = null;\n }\n dispose() {\n if (this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns.dispose();\n this._cachedCompiledPatterns = null;\n }\n }\n get debugBeginRegExp() {\n return `${this._begin.source}`;\n }\n get debugEndRegExp() {\n return `${this._end.source}`;\n }\n getEndWithResolvedBackReferences(lineText, captureIndices) {\n return this._end.resolveBackReferences(lineText, captureIndices);\n }\n collectPatterns(grammar, out) {\n out.push(this._begin);\n }\n compile(grammar, endRegexSource) {\n return this._getCachedCompiledPatterns(grammar, endRegexSource).compile(grammar);\n }\n compileAG(grammar, endRegexSource, allowA, allowG) {\n return this._getCachedCompiledPatterns(grammar, endRegexSource).compileAG(grammar, allowA, allowG);\n }\n _getCachedCompiledPatterns(grammar, endRegexSource) {\n if (!this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns = new RegExpSourceList();\n for (const pattern of this.patterns) {\n const rule = grammar.getRule(pattern);\n rule.collectPatterns(grammar, this._cachedCompiledPatterns);\n }\n if (this.applyEndPatternLast) {\n this._cachedCompiledPatterns.push(this._end.hasBackReferences ? this._end.clone() : this._end);\n } else {\n this._cachedCompiledPatterns.unshift(this._end.hasBackReferences ? this._end.clone() : this._end);\n }\n }\n if (this._end.hasBackReferences) {\n if (this.applyEndPatternLast) {\n this._cachedCompiledPatterns.setSource(this._cachedCompiledPatterns.length() - 1, endRegexSource);\n } else {\n this._cachedCompiledPatterns.setSource(0, endRegexSource);\n }\n }\n return this._cachedCompiledPatterns;\n }\n};\nvar BeginWhileRule = class extends Rule {\n _begin;\n beginCaptures;\n whileCaptures;\n _while;\n whileHasBackReferences;\n hasMissingPatterns;\n patterns;\n _cachedCompiledPatterns;\n _cachedCompiledWhilePatterns;\n constructor($location, id, name, contentName, begin, beginCaptures, _while, whileCaptures, patterns) {\n super($location, id, name, contentName);\n this._begin = new RegExpSource(begin, this.id);\n this.beginCaptures = beginCaptures;\n this.whileCaptures = whileCaptures;\n this._while = new RegExpSource(_while, whileRuleId);\n this.whileHasBackReferences = this._while.hasBackReferences;\n this.patterns = patterns.patterns;\n this.hasMissingPatterns = patterns.hasMissingPatterns;\n this._cachedCompiledPatterns = null;\n this._cachedCompiledWhilePatterns = null;\n }\n dispose() {\n if (this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns.dispose();\n this._cachedCompiledPatterns = null;\n }\n if (this._cachedCompiledWhilePatterns) {\n this._cachedCompiledWhilePatterns.dispose();\n this._cachedCompiledWhilePatterns = null;\n }\n }\n get debugBeginRegExp() {\n return `${this._begin.source}`;\n }\n get debugWhileRegExp() {\n return `${this._while.source}`;\n }\n getWhileWithResolvedBackReferences(lineText, captureIndices) {\n return this._while.resolveBackReferences(lineText, captureIndices);\n }\n collectPatterns(grammar, out) {\n out.push(this._begin);\n }\n compile(grammar, endRegexSource) {\n return this._getCachedCompiledPatterns(grammar).compile(grammar);\n }\n compileAG(grammar, endRegexSource, allowA, allowG) {\n return this._getCachedCompiledPatterns(grammar).compileAG(grammar, allowA, allowG);\n }\n _getCachedCompiledPatterns(grammar) {\n if (!this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns = new RegExpSourceList();\n for (const pattern of this.patterns) {\n const rule = grammar.getRule(pattern);\n rule.collectPatterns(grammar, this._cachedCompiledPatterns);\n }\n }\n return this._cachedCompiledPatterns;\n }\n compileWhile(grammar, endRegexSource) {\n return this._getCachedCompiledWhilePatterns(grammar, endRegexSource).compile(grammar);\n }\n compileWhileAG(grammar, endRegexSource, allowA, allowG) {\n return this._getCachedCompiledWhilePatterns(grammar, endRegexSource).compileAG(grammar, allowA, allowG);\n }\n _getCachedCompiledWhilePatterns(grammar, endRegexSource) {\n if (!this._cachedCompiledWhilePatterns) {\n this._cachedCompiledWhilePatterns = new RegExpSourceList();\n this._cachedCompiledWhilePatterns.push(this._while.hasBackReferences ? this._while.clone() : this._while);\n }\n if (this._while.hasBackReferences) {\n this._cachedCompiledWhilePatterns.setSource(0, endRegexSource ? endRegexSource : \"\\uFFFF\");\n }\n return this._cachedCompiledWhilePatterns;\n }\n};\nvar RuleFactory = class _RuleFactory {\n static createCaptureRule(helper, $location, name, contentName, retokenizeCapturedWithRuleId) {\n return helper.registerRule((id) => {\n return new CaptureRule($location, id, name, contentName, retokenizeCapturedWithRuleId);\n });\n }\n static getCompiledRuleId(desc, helper, repository) {\n if (!desc.id) {\n helper.registerRule((id) => {\n desc.id = id;\n if (desc.match) {\n return new MatchRule(\n desc.$vscodeTextmateLocation,\n desc.id,\n desc.name,\n desc.match,\n _RuleFactory._compileCaptures(desc.captures, helper, repository)\n );\n }\n if (typeof desc.begin === \"undefined\") {\n if (desc.repository) {\n repository = mergeObjects({}, repository, desc.repository);\n }\n let patterns = desc.patterns;\n if (typeof patterns === \"undefined\" && desc.include) {\n patterns = [{ include: desc.include }];\n }\n return new IncludeOnlyRule(\n desc.$vscodeTextmateLocation,\n desc.id,\n desc.name,\n desc.contentName,\n _RuleFactory._compilePatterns(patterns, helper, repository)\n );\n }\n if (desc.while) {\n return new BeginWhileRule(\n desc.$vscodeTextmateLocation,\n desc.id,\n desc.name,\n desc.contentName,\n desc.begin,\n _RuleFactory._compileCaptures(desc.beginCaptures || desc.captures, helper, repository),\n desc.while,\n _RuleFactory._compileCaptures(desc.whileCaptures || desc.captures, helper, repository),\n _RuleFactory._compilePatterns(desc.patterns, helper, repository)\n );\n }\n return new BeginEndRule(\n desc.$vscodeTextmateLocation,\n desc.id,\n desc.name,\n desc.contentName,\n desc.begin,\n _RuleFactory._compileCaptures(desc.beginCaptures || desc.captures, helper, repository),\n desc.end,\n _RuleFactory._compileCaptures(desc.endCaptures || desc.captures, helper, repository),\n desc.applyEndPatternLast,\n _RuleFactory._compilePatterns(desc.patterns, helper, repository)\n );\n });\n }\n return desc.id;\n }\n static _compileCaptures(captures, helper, repository) {\n let r = [];\n if (captures) {\n let maximumCaptureId = 0;\n for (const captureId in captures) {\n if (captureId === \"$vscodeTextmateLocation\") {\n continue;\n }\n const numericCaptureId = parseInt(captureId, 10);\n if (numericCaptureId > maximumCaptureId) {\n maximumCaptureId = numericCaptureId;\n }\n }\n for (let i = 0; i <= maximumCaptureId; i++) {\n r[i] = null;\n }\n for (const captureId in captures) {\n if (captureId === \"$vscodeTextmateLocation\") {\n continue;\n }\n const numericCaptureId = parseInt(captureId, 10);\n let retokenizeCapturedWithRuleId = 0;\n if (captures[captureId].patterns) {\n retokenizeCapturedWithRuleId = _RuleFactory.getCompiledRuleId(captures[captureId], helper, repository);\n }\n r[numericCaptureId] = _RuleFactory.createCaptureRule(helper, captures[captureId].$vscodeTextmateLocation, captures[captureId].name, captures[captureId].contentName, retokenizeCapturedWithRuleId);\n }\n }\n return r;\n }\n static _compilePatterns(patterns, helper, repository) {\n let r = [];\n if (patterns) {\n for (let i = 0, len = patterns.length; i < len; i++) {\n const pattern = patterns[i];\n let ruleId = -1;\n if (pattern.include) {\n const reference = parseInclude(pattern.include);\n switch (reference.kind) {\n case 0 /* Base */:\n case 1 /* Self */:\n ruleId = _RuleFactory.getCompiledRuleId(repository[pattern.include], helper, repository);\n break;\n case 2 /* RelativeReference */:\n let localIncludedRule = repository[reference.ruleName];\n if (localIncludedRule) {\n ruleId = _RuleFactory.getCompiledRuleId(localIncludedRule, helper, repository);\n } else {\n }\n break;\n case 3 /* TopLevelReference */:\n case 4 /* TopLevelRepositoryReference */:\n const externalGrammarName = reference.scopeName;\n const externalGrammarInclude = reference.kind === 4 /* TopLevelRepositoryReference */ ? reference.ruleName : null;\n const externalGrammar = helper.getExternalGrammar(externalGrammarName, repository);\n if (externalGrammar) {\n if (externalGrammarInclude) {\n let externalIncludedRule = externalGrammar.repository[externalGrammarInclude];\n if (externalIncludedRule) {\n ruleId = _RuleFactory.getCompiledRuleId(externalIncludedRule, helper, externalGrammar.repository);\n } else {\n }\n } else {\n ruleId = _RuleFactory.getCompiledRuleId(externalGrammar.repository.$self, helper, externalGrammar.repository);\n }\n } else {\n }\n break;\n }\n } else {\n ruleId = _RuleFactory.getCompiledRuleId(pattern, helper, repository);\n }\n if (ruleId !== -1) {\n const rule = helper.getRule(ruleId);\n let skipRule = false;\n if (rule instanceof IncludeOnlyRule || rule instanceof BeginEndRule || rule instanceof BeginWhileRule) {\n if (rule.hasMissingPatterns && rule.patterns.length === 0) {\n skipRule = true;\n }\n }\n if (skipRule) {\n continue;\n }\n r.push(ruleId);\n }\n }\n }\n return {\n patterns: r,\n hasMissingPatterns: (patterns ? patterns.length : 0) !== r.length\n };\n }\n};\nvar RegExpSource = class _RegExpSource {\n source;\n ruleId;\n hasAnchor;\n hasBackReferences;\n _anchorCache;\n constructor(regExpSource, ruleId) {\n if (regExpSource && typeof regExpSource === \"string\") {\n const len = regExpSource.length;\n let lastPushedPos = 0;\n let output = [];\n let hasAnchor = false;\n for (let pos = 0; pos < len; pos++) {\n const ch = regExpSource.charAt(pos);\n if (ch === \"\\\\\") {\n if (pos + 1 < len) {\n const nextCh = regExpSource.charAt(pos + 1);\n if (nextCh === \"z\") {\n output.push(regExpSource.substring(lastPushedPos, pos));\n output.push(\"$(?!\\\\n)(?<!\\\\n)\");\n lastPushedPos = pos + 2;\n } else if (nextCh === \"A\" || nextCh === \"G\") {\n hasAnchor = true;\n }\n pos++;\n }\n }\n }\n this.hasAnchor = hasAnchor;\n if (lastPushedPos === 0) {\n this.source = regExpSource;\n } else {\n output.push(regExpSource.substring(lastPushedPos, len));\n this.source = output.join(\"\");\n }\n } else {\n this.hasAnchor = false;\n this.source = regExpSource;\n }\n if (this.hasAnchor) {\n this._anchorCache = this._buildAnchorCache();\n } else {\n this._anchorCache = null;\n }\n this.ruleId = ruleId;\n if (typeof this.source === \"string\") {\n this.hasBackReferences = HAS_BACK_REFERENCES.test(this.source);\n } else {\n this.hasBackReferences = false;\n }\n }\n clone() {\n return new _RegExpSource(this.source, this.ruleId);\n }\n setSource(newSource) {\n if (this.source === newSource) {\n return;\n }\n this.source = newSource;\n if (this.hasAnchor) {\n this._anchorCache = this._buildAnchorCache();\n }\n }\n resolveBackReferences(lineText, captureIndices) {\n if (typeof this.source !== \"string\") {\n throw new Error(\"This method should only be called if the source is a string\");\n }\n let capturedValues = captureIndices.map((capture) => {\n return lineText.substring(capture.start, capture.end);\n });\n BACK_REFERENCING_END.lastIndex = 0;\n return this.source.replace(BACK_REFERENCING_END, (match, g1) => {\n return escapeRegExpCharacters(capturedValues[parseInt(g1, 10)] || \"\");\n });\n }\n _buildAnchorCache() {\n if (typeof this.source !== \"string\") {\n throw new Error(\"This method should only be called if the source is a string\");\n }\n let A0_G0_result = [];\n let A0_G1_result = [];\n let A1_G0_result = [];\n let A1_G1_result = [];\n let pos, len, ch, nextCh;\n for (pos = 0, len = this.source.length; pos < len; pos++) {\n ch = this.source.charAt(pos);\n A0_G0_result[pos] = ch;\n A0_G1_result[pos] = ch;\n A1_G0_result[pos] = ch;\n A1_G1_result[pos] = ch;\n if (ch === \"\\\\\") {\n if (pos + 1 < len) {\n nextCh = this.source.charAt(pos + 1);\n if (nextCh === \"A\") {\n A0_G0_result[pos + 1] = \"\\uFFFF\";\n A0_G1_result[pos + 1] = \"\\uFFFF\";\n A1_G0_result[pos + 1] = \"A\";\n A1_G1_result[pos + 1] = \"A\";\n } else if (nextCh === \"G\") {\n A0_G0_result[pos + 1] = \"\\uFFFF\";\n A0_G1_result[pos + 1] = \"G\";\n A1_G0_result[pos + 1] = \"\\uFFFF\";\n A1_G1_result[pos + 1] = \"G\";\n } else {\n A0_G0_result[pos + 1] = nextCh;\n A0_G1_result[pos + 1] = nextCh;\n A1_G0_result[pos + 1] = nextCh;\n A1_G1_result[pos + 1] = nextCh;\n }\n pos++;\n }\n }\n }\n return {\n A0_G0: A0_G0_result.join(\"\"),\n A0_G1: A0_G1_result.join(\"\"),\n A1_G0: A1_G0_result.join(\"\"),\n A1_G1: A1_G1_result.join(\"\")\n };\n }\n resolveAnchors(allowA, allowG) {\n if (!this.hasAnchor || !this._anchorCache || typeof this.source !== \"string\") {\n return this.source;\n }\n if (allowA) {\n if (allowG) {\n return this._anchorCache.A1_G1;\n } else {\n return this._anchorCache.A1_G0;\n }\n } else {\n if (allowG) {\n return this._anchorCache.A0_G1;\n } else {\n return this._anchorCache.A0_G0;\n }\n }\n }\n};\nvar RegExpSourceList = class {\n _items;\n _hasAnchors;\n _cached;\n _anchorCache;\n constructor() {\n this._items = [];\n this._hasAnchors = false;\n this._cached = null;\n this._anchorCache = {\n A0_G0: null,\n A0_G1: null,\n A1_G0: null,\n A1_G1: null\n };\n }\n dispose() {\n this._disposeCaches();\n }\n _disposeCaches() {\n if (this._cached) {\n this._cached.dispose();\n this._cached = null;\n }\n if (this._anchorCache.A0_G0) {\n this._anchorCache.A0_G0.dispose();\n this._anchorCache.A0_G0 = null;\n }\n if (this._anchorCache.A0_G1) {\n this._anchorCache.A0_G1.dispose();\n this._anchorCache.A0_G1 = null;\n }\n if (this._anchorCache.A1_G0) {\n this._anchorCache.A1_G0.dispose();\n this._anchorCache.A1_G0 = null;\n }\n if (this._anchorCache.A1_G1) {\n this._anchorCache.A1_G1.dispose();\n this._anchorCache.A1_G1 = null;\n }\n }\n push(item) {\n this._items.push(item);\n this._hasAnchors = this._hasAnchors || item.hasAnchor;\n }\n unshift(item) {\n this._items.unshift(item);\n this._hasAnchors = this._hasAnchors || item.hasAnchor;\n }\n length() {\n return this._items.length;\n }\n setSource(index, newSource) {\n if (this._items[index].source !== newSource) {\n this._disposeCaches();\n this._items[index].setSource(newSource);\n }\n }\n compile(onigLib) {\n if (!this._cached) {\n let regExps = this._items.map((e) => e.source);\n this._cached = new CompiledRule(onigLib, regExps, this._items.map((e) => e.ruleId));\n }\n return this._cached;\n }\n compileAG(onigLib, allowA, allowG) {\n if (!this._hasAnchors) {\n return this.compile(onigLib);\n } else {\n if (allowA) {\n if (allowG) {\n if (!this._anchorCache.A1_G1) {\n this._anchorCache.A1_G1 = this._resolveAnchors(onigLib, allowA, allowG);\n }\n return this._anchorCache.A1_G1;\n } else {\n if (!this._anchorCache.A1_G0) {\n this._anchorCache.A1_G0 = this._resolveAnchors(onigLib, allowA, allowG);\n }\n return this._anchorCache.A1_G0;\n }\n } else {\n if (allowG) {\n if (!this._anchorCache.A0_G1) {\n this._anchorCache.A0_G1 = this._resolveAnchors(onigLib, allowA, allowG);\n }\n return this._anchorCache.A0_G1;\n } else {\n if (!this._anchorCache.A0_G0) {\n this._anchorCache.A0_G0 = this._resolveAnchors(onigLib, allowA, allowG);\n }\n return this._anchorCache.A0_G0;\n }\n }\n }\n }\n _resolveAnchors(onigLib, allowA, allowG) {\n let regExps = this._items.map((e) => e.resolveAnchors(allowA, allowG));\n return new CompiledRule(onigLib, regExps, this._items.map((e) => e.ruleId));\n }\n};\nvar CompiledRule = class {\n constructor(onigLib, regExps, rules) {\n this.regExps = regExps;\n this.rules = rules;\n this.scanner = onigLib.createOnigScanner(regExps);\n }\n scanner;\n dispose() {\n if (typeof this.scanner.dispose === \"function\") {\n this.scanner.dispose();\n }\n }\n toString() {\n const r = [];\n for (let i = 0, len = this.rules.length; i < len; i++) {\n r.push(\" - \" + this.rules[i] + \": \" + this.regExps[i]);\n }\n return r.join(\"\\n\");\n }\n findNextMatchSync(string, startPosition, options) {\n const result = this.scanner.findNextMatchSync(string, startPosition, options);\n if (!result) {\n return null;\n }\n return {\n ruleId: this.rules[result.index],\n captureIndices: result.captureIndices\n };\n }\n};\n\n// src/grammar/basicScopesAttributeProvider.ts\nvar BasicScopeAttributes = class {\n constructor(languageId, tokenType) {\n this.languageId = languageId;\n this.tokenType = tokenType;\n }\n};\nvar BasicScopeAttributesProvider = class _BasicScopeAttributesProvider {\n _defaultAttributes;\n _embeddedLanguagesMatcher;\n constructor(initialLanguageId, embeddedLanguages) {\n this._defaultAttributes = new BasicScopeAttributes(initialLanguageId, 8 /* NotSet */);\n this._embeddedLanguagesMatcher = new ScopeMatcher(Object.entries(embeddedLanguages || {}));\n }\n getDefaultAttributes() {\n return this._defaultAttributes;\n }\n getBasicScopeAttributes(scopeName) {\n if (scopeName === null) {\n return _BasicScopeAttributesProvider._NULL_SCOPE_METADATA;\n }\n return this._getBasicScopeAttributes.get(scopeName);\n }\n static _NULL_SCOPE_METADATA = new BasicScopeAttributes(0, 0);\n _getBasicScopeAttributes = new CachedFn((scopeName) => {\n const languageId = this._scopeToLanguage(scopeName);\n const standardTokenType = this._toStandardTokenType(scopeName);\n return new BasicScopeAttributes(languageId, standardTokenType);\n });\n /**\n * Given a produced TM scope, return the language that token describes or null if unknown.\n * e.g. source.html => html, source.css.embedded.html => css, punctuation.definition.tag.html => null\n */\n _scopeToLanguage(scope) {\n return this._embeddedLanguagesMatcher.match(scope) || 0;\n }\n _toStandardTokenType(scopeName) {\n const m = scopeName.match(_BasicScopeAttributesProvider.STANDARD_TOKEN_TYPE_REGEXP);\n if (!m) {\n return 8 /* NotSet */;\n }\n switch (m[1]) {\n case \"comment\":\n return 1 /* Comment */;\n case \"string\":\n return 2 /* String */;\n case \"regex\":\n return 3 /* RegEx */;\n case \"meta.embedded\":\n return 0 /* Other */;\n }\n throw new Error(\"Unexpected match for standard token type!\");\n }\n static STANDARD_TOKEN_TYPE_REGEXP = /\\b(comment|string|regex|meta\\.embedded)\\b/;\n};\nvar ScopeMatcher = class {\n values;\n scopesRegExp;\n constructor(values) {\n if (values.length === 0) {\n this.values = null;\n this.scopesRegExp = null;\n } else {\n this.values = new Map(values);\n const escapedScopes = values.map(\n ([scopeName, value]) => escapeRegExpCharacters(scopeName)\n );\n escapedScopes.sort();\n escapedScopes.reverse();\n this.scopesRegExp = new RegExp(\n `^((${escapedScopes.join(\")|(\")}))($|\\\\.)`,\n \"\"\n );\n }\n }\n match(scope) {\n if (!this.scopesRegExp) {\n return void 0;\n }\n const m = scope.match(this.scopesRegExp);\n if (!m) {\n return void 0;\n }\n return this.values.get(m[1]);\n }\n};\n\n// src/debug.ts\nvar DebugFlags = {\n InDebugMode: typeof process !== \"undefined\" && !!process.env[\"VSCODE_TEXTMATE_DEBUG\"]\n};\nvar UseOnigurumaFindOptions = false;\n\n// src/grammar/tokenizeString.ts\nvar TokenizeStringResult = class {\n constructor(stack, stoppedEarly) {\n this.stack = stack;\n this.stoppedEarly = stoppedEarly;\n }\n};\nfunction _tokenizeString(grammar, lineText, isFirstLine, linePos, stack, lineTokens, checkWhileConditions, timeLimit) {\n const lineLength = lineText.content.length;\n let STOP = false;\n let anchorPosition = -1;\n if (checkWhileConditions) {\n const whileCheckResult = _checkWhileConditions(\n grammar,\n lineText,\n isFirstLine,\n linePos,\n stack,\n lineTokens\n );\n stack = whileCheckResult.stack;\n linePos = whileCheckResult.linePos;\n isFirstLine = whileCheckResult.isFirstLine;\n anchorPosition = whileCheckResult.anchorPosition;\n }\n const startTime = Date.now();\n while (!STOP) {\n if (timeLimit !== 0) {\n const elapsedTime = Date.now() - startTime;\n if (elapsedTime > timeLimit) {\n return new TokenizeStringResult(stack, true);\n }\n }\n scanNext();\n }\n return new TokenizeStringResult(stack, false);\n function scanNext() {\n if (false) {\n console.log(\"\");\n console.log(\n `@@scanNext ${linePos}: |${lineText.content.substr(linePos).replace(/\\n$/, \"\\\\n\")}|`\n );\n }\n const r = matchRuleOrInjections(\n grammar,\n lineText,\n isFirstLine,\n linePos,\n stack,\n anchorPosition\n );\n if (!r) {\n lineTokens.produce(stack, lineLength);\n STOP = true;\n return;\n }\n const captureIndices = r.captureIndices;\n const matchedRuleId = r.matchedRuleId;\n const hasAdvanced = captureIndices && captureIndices.length > 0 ? captureIndices[0].end > linePos : false;\n if (matchedRuleId === endRuleId) {\n const poppedRule = stack.getRule(grammar);\n if (false) {\n console.log(\n \" popping \" + poppedRule.debugName + \" - \" + poppedRule.debugEndRegExp\n );\n }\n lineTokens.produce(stack, captureIndices[0].start);\n stack = stack.withContentNameScopesList(stack.nameScopesList);\n handleCaptures(\n grammar,\n lineText,\n isFirstLine,\n stack,\n lineTokens,\n poppedRule.endCaptures,\n captureIndices\n );\n lineTokens.produce(stack, captureIndices[0].end);\n const popped = stack;\n stack = stack.parent;\n anchorPosition = popped.getAnchorPos();\n if (!hasAdvanced && popped.getEnterPos() === linePos) {\n if (false) {\n console.error(\n \"[1] - Grammar is in an endless loop - Grammar pushed & popped a rule without advancing\"\n );\n }\n stack = popped;\n lineTokens.produce(stack, lineLength);\n STOP = true;\n return;\n }\n } else {\n const _rule = grammar.getRule(matchedRuleId);\n lineTokens.produce(stack, captureIndices[0].start);\n const beforePush = stack;\n const scopeName = _rule.getName(lineText.content, captureIndices);\n const nameScopesList = stack.contentNameScopesList.pushAttributed(\n scopeName,\n grammar\n );\n stack = stack.push(\n matchedRuleId,\n linePos,\n anchorPosition,\n captureIndices[0].end === lineLength,\n null,\n nameScopesList,\n nameScopesList\n );\n if (_rule instanceof BeginEndRule) {\n const pushedRule = _rule;\n if (false) {\n console.log(\n \" pushing \" + pushedRule.debugName + \" - \" + pushedRule.debugBeginRegExp\n );\n }\n handleCaptures(\n grammar,\n lineText,\n isFirstLine,\n stack,\n lineTokens,\n pushedRule.beginCaptures,\n captureIndices\n );\n lineTokens.produce(stack, captureIndices[0].end);\n anchorPosition = captureIndices[0].end;\n const contentName = pushedRule.getContentName(\n lineText.content,\n captureIndices\n );\n const contentNameScopesList = nameScopesList.pushAttributed(\n contentName,\n grammar\n );\n stack = stack.withContentNameScopesList(contentNameScopesList);\n if (pushedRule.endHasBackReferences) {\n stack = stack.withEndRule(\n pushedRule.getEndWithResolvedBackReferences(\n lineText.content,\n captureIndices\n )\n );\n }\n if (!hasAdvanced && beforePush.hasSameRuleAs(stack)) {\n if (false) {\n console.error(\n \"[2] - Grammar is in an endless loop - Grammar pushed the same rule without advancing\"\n );\n }\n stack = stack.pop();\n lineTokens.produce(stack, lineLength);\n STOP = true;\n return;\n }\n } else if (_rule instanceof BeginWhileRule) {\n const pushedRule = _rule;\n if (false) {\n console.log(\" pushing \" + pushedRule.debugName);\n }\n handleCaptures(\n grammar,\n lineText,\n isFirstLine,\n stack,\n lineTokens,\n pushedRule.beginCaptures,\n captureIndices\n );\n lineTokens.produce(stack, captureIndices[0].end);\n anchorPosition = captureIndices[0].end;\n const contentName = pushedRule.getContentName(\n lineText.content,\n captureIndices\n );\n const contentNameScopesList = nameScopesList.pushAttributed(\n contentName,\n grammar\n );\n stack = stack.withContentNameScopesList(contentNameScopesList);\n if (pushedRule.whileHasBackReferences) {\n stack = stack.withEndRule(\n pushedRule.getWhileWithResolvedBackReferences(\n lineText.content,\n captureIndices\n )\n );\n }\n if (!hasAdvanced && beforePush.hasSameRuleAs(stack)) {\n if (false) {\n console.error(\n \"[3] - Grammar is in an endless loop - Grammar pushed the same rule without advancing\"\n );\n }\n stack = stack.pop();\n lineTokens.produce(stack, lineLength);\n STOP = true;\n return;\n }\n } else {\n const matchingRule = _rule;\n if (false) {\n console.log(\n \" matched \" + matchingRule.debugName + \" - \" + matchingRule.debugMatchRegExp\n );\n }\n handleCaptures(\n grammar,\n lineText,\n isFirstLine,\n stack,\n lineTokens,\n matchingRule.captures,\n captureIndices\n );\n lineTokens.produce(stack, captureIndices[0].end);\n stack = stack.pop();\n if (!hasAdvanced) {\n if (false) {\n console.error(\n \"[4] - Grammar is in an endless loop - Grammar is not advancing, nor is it pushing/popping\"\n );\n }\n stack = stack.safePop();\n lineTokens.produce(stack, lineLength);\n STOP = true;\n return;\n }\n }\n }\n if (captureIndices[0].end > linePos) {\n linePos = captureIndices[0].end;\n isFirstLine = false;\n }\n }\n}\nfunction _checkWhileConditions(grammar, lineText, isFirstLine, linePos, stack, lineTokens) {\n let anchorPosition = stack.beginRuleCapturedEOL ? 0 : -1;\n const whileRules = [];\n for (let node = stack; node; node = node.pop()) {\n const nodeRule = node.getRule(grammar);\n if (nodeRule instanceof BeginWhileRule) {\n whileRules.push({\n rule: nodeRule,\n stack: node\n });\n }\n }\n for (let whileRule = whileRules.pop(); whileRule; whileRule = whileRules.pop()) {\n const { ruleScanner, findOptions } = prepareRuleWhileSearch(whileRule.rule, grammar, whileRule.stack.endRule, isFirstLine, linePos === anchorPosition);\n const r = ruleScanner.findNextMatchSync(lineText, linePos, findOptions);\n if (false) {\n console.log(\" scanning for while rule\");\n console.log(ruleScanner.toString());\n }\n if (r) {\n const matchedRuleId = r.ruleId;\n if (matchedRuleId !== whileRuleId) {\n stack = whileRule.stack.pop();\n break;\n }\n if (r.captureIndices && r.captureIndices.length) {\n lineTokens.produce(whileRule.stack, r.captureIndices[0].start);\n handleCaptures(grammar, lineText, isFirstLine, whileRule.stack, lineTokens, whileRule.rule.whileCaptures, r.captureIndices);\n lineTokens.produce(whileRule.stack, r.captureIndices[0].end);\n anchorPosition = r.captureIndices[0].end;\n if (r.captureIndices[0].end > linePos) {\n linePos = r.captureIndices[0].end;\n isFirstLine = false;\n }\n }\n } else {\n if (false) {\n console.log(\" popping \" + whileRule.rule.debugName + \" - \" + whileRule.rule.debugWhileRegExp);\n }\n stack = whileRule.stack.pop();\n break;\n }\n }\n return { stack, linePos, anchorPosition, isFirstLine };\n}\nfunction matchRuleOrInjections(grammar, lineText, isFirstLine, linePos, stack, anchorPosition) {\n const matchResult = matchRule(grammar, lineText, isFirstLine, linePos, stack, anchorPosition);\n const injections = grammar.getInjections();\n if (injections.length === 0) {\n return matchResult;\n }\n const injectionResult = matchInjections(injections, grammar, lineText, isFirstLine, linePos, stack, anchorPosition);\n if (!injectionResult) {\n return matchResult;\n }\n if (!matchResult) {\n return injectionResult;\n }\n const matchResultScore = matchResult.captureIndices[0].start;\n const injectionResultScore = injectionResult.captureIndices[0].start;\n if (injectionResultScore < matchResultScore || injectionResult.priorityMatch && injectionResultScore === matchResultScore) {\n return injectionResult;\n }\n return matchResult;\n}\nfunction matchRule(grammar, lineText, isFirstLine, linePos, stack, anchorPosition) {\n const rule = stack.getRule(grammar);\n const { ruleScanner, findOptions } = prepareRuleSearch(rule, grammar, stack.endRule, isFirstLine, linePos === anchorPosition);\n const r = ruleScanner.findNextMatchSync(lineText, linePos, findOptions);\n if (r) {\n return {\n captureIndices: r.captureIndices,\n matchedRuleId: r.ruleId\n };\n }\n return null;\n}\nfunction matchInjections(injections, grammar, lineText, isFirstLine, linePos, stack, anchorPosition) {\n let bestMatchRating = Number.MAX_VALUE;\n let bestMatchCaptureIndices = null;\n let bestMatchRuleId;\n let bestMatchResultPriority = 0;\n const scopes = stack.contentNameScopesList.getScopeNames();\n for (let i = 0, len = injections.length; i < len; i++) {\n const injection = injections[i];\n if (!injection.matcher(scopes)) {\n continue;\n }\n const rule = grammar.getRule(injection.ruleId);\n const { ruleScanner, findOptions } = prepareRuleSearch(rule, grammar, null, isFirstLine, linePos === anchorPosition);\n const matchResult = ruleScanner.findNextMatchSync(lineText, linePos, findOptions);\n if (!matchResult) {\n continue;\n }\n if (false) {\n console.log(` matched injection: ${injection.debugSelector}`);\n console.log(ruleScanner.toString());\n }\n const matchRating = matchResult.captureIndices[0].start;\n if (matchRating >= bestMatchRating) {\n continue;\n }\n bestMatchRating = matchRating;\n bestMatchCaptureIndices = matchResult.captureIndices;\n bestMatchRuleId = matchResult.ruleId;\n bestMatchResultPriority = injection.priority;\n if (bestMatchRating === linePos) {\n break;\n }\n }\n if (bestMatchCaptureIndices) {\n return {\n priorityMatch: bestMatchResultPriority === -1,\n captureIndices: bestMatchCaptureIndices,\n matchedRuleId: bestMatchRuleId\n };\n }\n return null;\n}\nfunction prepareRuleSearch(rule, grammar, endRegexSource, allowA, allowG) {\n if (UseOnigurumaFindOptions) {\n const ruleScanner2 = rule.compile(grammar, endRegexSource);\n const findOptions = getFindOptions(allowA, allowG);\n return { ruleScanner: ruleScanner2, findOptions };\n }\n const ruleScanner = rule.compileAG(grammar, endRegexSource, allowA, allowG);\n return { ruleScanner, findOptions: 0 /* None */ };\n}\nfunction prepareRuleWhileSearch(rule, grammar, endRegexSource, allowA, allowG) {\n if (UseOnigurumaFindOptions) {\n const ruleScanner2 = rule.compileWhile(grammar, endRegexSource);\n const findOptions = getFindOptions(allowA, allowG);\n return { ruleScanner: ruleScanner2, findOptions };\n }\n const ruleScanner = rule.compileWhileAG(grammar, endRegexSource, allowA, allowG);\n return { ruleScanner, findOptions: 0 /* None */ };\n}\nfunction getFindOptions(allowA, allowG) {\n let options = 0 /* None */;\n if (!allowA) {\n options |= 1 /* NotBeginString */;\n }\n if (!allowG) {\n options |= 4 /* NotBeginPosition */;\n }\n return options;\n}\nfunction handleCaptures(grammar, lineText, isFirstLine, stack, lineTokens, captures, captureIndices) {\n if (captures.length === 0) {\n return;\n }\n const lineTextContent = lineText.content;\n const len = Math.min(captures.length, captureIndices.length);\n const localStack = [];\n const maxEnd = captureIndices[0].end;\n for (let i = 0; i < len; i++) {\n const captureRule = captures[i];\n if (captureRule === null) {\n continue;\n }\n const captureIndex = captureIndices[i];\n if (captureIndex.length === 0) {\n continue;\n }\n if (captureIndex.start > maxEnd) {\n break;\n }\n while (localStack.length > 0 && localStack[localStack.length - 1].endPos <= captureIndex.start) {\n lineTokens.produceFromScopes(localStack[localStack.length - 1].scopes, localStack[localStack.length - 1].endPos);\n localStack.pop();\n }\n if (localStack.length > 0) {\n lineTokens.produceFromScopes(localStack[localStack.length - 1].scopes, captureIndex.start);\n } else {\n lineTokens.produce(stack, captureIndex.start);\n }\n if (captureRule.retokenizeCapturedWithRuleId) {\n const scopeName = captureRule.getName(lineTextContent, captureIndices);\n const nameScopesList = stack.contentNameScopesList.pushAttributed(scopeName, grammar);\n const contentName = captureRule.getContentName(lineTextContent, captureIndices);\n const contentNameScopesList = nameScopesList.pushAttributed(contentName, grammar);\n const stackClone = stack.push(captureRule.retokenizeCapturedWithRuleId, captureIndex.start, -1, false, null, nameScopesList, contentNameScopesList);\n const onigSubStr = grammar.createOnigString(lineTextContent.substring(0, captureIndex.end));\n _tokenizeString(\n grammar,\n onigSubStr,\n isFirstLine && captureIndex.start === 0,\n captureIndex.start,\n stackClone,\n lineTokens,\n false,\n /* no time limit */\n 0\n );\n disposeOnigString(onigSubStr);\n continue;\n }\n const captureRuleScopeName = captureRule.getName(lineTextContent, captureIndices);\n if (captureRuleScopeName !== null) {\n const base = localStack.length > 0 ? localStack[localStack.length - 1].scopes : stack.contentNameScopesList;\n const captureRuleScopesList = base.pushAttributed(captureRuleScopeName, grammar);\n localStack.push(new LocalStackElement(captureRuleScopesList, captureIndex.end));\n }\n }\n while (localStack.length > 0) {\n lineTokens.produceFromScopes(localStack[localStack.length - 1].scopes, localStack[localStack.length - 1].endPos);\n localStack.pop();\n }\n}\nvar LocalStackElement = class {\n scopes;\n endPos;\n constructor(scopes, endPos) {\n this.scopes = scopes;\n this.endPos = endPos;\n }\n};\n\n// src/grammar/grammar.ts\nfunction createGrammar(scopeName, grammar, initialLanguage, embeddedLanguages, tokenTypes, balancedBracketSelectors, grammarRepository, onigLib) {\n return new Grammar(\n scopeName,\n grammar,\n initialLanguage,\n embeddedLanguages,\n tokenTypes,\n balancedBracketSelectors,\n grammarRepository,\n onigLib\n );\n}\nfunction collectInjections(result, selector, rule, ruleFactoryHelper, grammar) {\n const matchers = createMatchers(selector, nameMatcher);\n const ruleId = RuleFactory.getCompiledRuleId(rule, ruleFactoryHelper, grammar.repository);\n for (const matcher of matchers) {\n result.push({\n debugSelector: selector,\n matcher: matcher.matcher,\n ruleId,\n grammar,\n priority: matcher.priority\n });\n }\n}\nfunction nameMatcher(identifers, scopes) {\n if (scopes.length < identifers.length) {\n return false;\n }\n let lastIndex = 0;\n return identifers.every((identifier) => {\n for (let i = lastIndex; i < scopes.length; i++) {\n if (scopesAreMatching(scopes[i], identifier)) {\n lastIndex = i + 1;\n return true;\n }\n }\n return false;\n });\n}\nfunction scopesAreMatching(thisScopeName, scopeName) {\n if (!thisScopeName) {\n return false;\n }\n if (thisScopeName === scopeName) {\n return true;\n }\n const len = scopeName.length;\n return thisScopeName.length > len && thisScopeName.substr(0, len) === scopeName && thisScopeName[len] === \".\";\n}\nvar Grammar = class {\n constructor(_rootScopeName, grammar, initialLanguage, embeddedLanguages, tokenTypes, balancedBracketSelectors, grammarRepository, _onigLib) {\n this._rootScopeName = _rootScopeName;\n this.balancedBracketSelectors = balancedBracketSelectors;\n this._onigLib = _onigLib;\n this._basicScopeAttributesProvider = new BasicScopeAttributesProvider(\n initialLanguage,\n embeddedLanguages\n );\n this._rootId = -1;\n this._lastRuleId = 0;\n this._ruleId2desc = [null];\n this._includedGrammars = {};\n this._grammarRepository = grammarRepository;\n this._grammar = initGrammar(grammar, null);\n this._injections = null;\n this._tokenTypeMatchers = [];\n if (tokenTypes) {\n for (const selector of Object.keys(tokenTypes)) {\n const matchers = createMatchers(selector, nameMatcher);\n for (const matcher of matchers) {\n this._tokenTypeMatchers.push({\n matcher: matcher.matcher,\n type: tokenTypes[selector]\n });\n }\n }\n }\n }\n _rootId;\n _lastRuleId;\n _ruleId2desc;\n _includedGrammars;\n _grammarRepository;\n _grammar;\n _injections;\n _basicScopeAttributesProvider;\n _tokenTypeMatchers;\n get themeProvider() {\n return this._grammarRepository;\n }\n dispose() {\n for (const rule of this._ruleId2desc) {\n if (rule) {\n rule.dispose();\n }\n }\n }\n createOnigScanner(sources) {\n return this._onigLib.createOnigScanner(sources);\n }\n createOnigString(sources) {\n return this._onigLib.createOnigString(sources);\n }\n getMetadataForScope(scope) {\n return this._basicScopeAttributesProvider.getBasicScopeAttributes(scope);\n }\n _collectInjections() {\n const grammarRepository = {\n lookup: (scopeName2) => {\n if (scopeName2 === this._rootScopeName) {\n return this._grammar;\n }\n return this.getExternalGrammar(scopeName2);\n },\n injections: (scopeName2) => {\n return this._grammarRepository.injections(scopeName2);\n }\n };\n const result = [];\n const scopeName = this._rootScopeName;\n const grammar = grammarRepository.lookup(scopeName);\n if (grammar) {\n const rawInjections = grammar.injections;\n if (rawInjections) {\n for (let expression in rawInjections) {\n collectInjections(\n result,\n expression,\n rawInjections[expression],\n this,\n grammar\n );\n }\n }\n const injectionScopeNames = this._grammarRepository.injections(scopeName);\n if (injectionScopeNames) {\n injectionScopeNames.forEach((injectionScopeName) => {\n const injectionGrammar = this.getExternalGrammar(injectionScopeName);\n if (injectionGrammar) {\n const selector = injectionGrammar.injectionSelector;\n if (selector) {\n collectInjections(\n result,\n selector,\n injectionGrammar,\n this,\n injectionGrammar\n );\n }\n }\n });\n }\n }\n result.sort((i1, i2) => i1.priority - i2.priority);\n return result;\n }\n getInjections() {\n if (this._injections === null) {\n this._injections = this._collectInjections();\n }\n return this._injections;\n }\n registerRule(factory) {\n const id = ++this._lastRuleId;\n const result = factory(ruleIdFromNumber(id));\n this._ruleId2desc[id] = result;\n return result;\n }\n getRule(ruleId) {\n return this._ruleId2desc[ruleIdToNumber(ruleId)];\n }\n getExternalGrammar(scopeName, repository) {\n if (this._includedGrammars[scopeName]) {\n return this._includedGrammars[scopeName];\n } else if (this._grammarRepository) {\n const rawIncludedGrammar = this._grammarRepository.lookup(scopeName);\n if (rawIncludedGrammar) {\n this._includedGrammars[scopeName] = initGrammar(\n rawIncludedGrammar,\n repository && repository.$base\n );\n return this._includedGrammars[scopeName];\n }\n }\n return void 0;\n }\n tokenizeLine(lineText, prevState, timeLimit = 0) {\n const r = this._tokenize(lineText, prevState, false, timeLimit);\n return {\n tokens: r.lineTokens.getResult(r.ruleStack, r.lineLength),\n ruleStack: r.ruleStack,\n stoppedEarly: r.stoppedEarly\n };\n }\n tokenizeLine2(lineText, prevState, timeLimit = 0) {\n const r = this._tokenize(lineText, prevState, true, timeLimit);\n return {\n tokens: r.lineTokens.getBinaryResult(r.ruleStack, r.lineLength),\n ruleStack: r.ruleStack,\n stoppedEarly: r.stoppedEarly\n };\n }\n _tokenize(lineText, prevState, emitBinaryTokens, timeLimit) {\n if (this._rootId === -1) {\n this._rootId = RuleFactory.getCompiledRuleId(\n this._grammar.repository.$self,\n this,\n this._grammar.repository\n );\n this.getInjections();\n }\n let isFirstLine;\n if (!prevState || prevState === StateStackImpl.NULL) {\n isFirstLine = true;\n const rawDefaultMetadata = this._basicScopeAttributesProvider.getDefaultAttributes();\n const defaultStyle = this.themeProvider.getDefaults();\n const defaultMetadata = EncodedTokenMetadata.set(\n 0,\n rawDefaultMetadata.languageId,\n rawDefaultMetadata.tokenType,\n null,\n defaultStyle.fontStyle,\n defaultStyle.foregroundId,\n defaultStyle.backgroundId\n );\n const rootScopeName = this.getRule(this._rootId).getName(\n null,\n null\n );\n let scopeList;\n if (rootScopeName) {\n scopeList = AttributedScopeStack.createRootAndLookUpScopeName(\n rootScopeName,\n defaultMetadata,\n this\n );\n } else {\n scopeList = AttributedScopeStack.createRoot(\n \"unknown\",\n defaultMetadata\n );\n }\n prevState = new StateStackImpl(\n null,\n this._rootId,\n -1,\n -1,\n false,\n null,\n scopeList,\n scopeList\n );\n } else {\n isFirstLine = false;\n prevState.reset();\n }\n lineText = lineText + \"\\n\";\n const onigLineText = this.createOnigString(lineText);\n const lineLength = onigLineText.content.length;\n const lineTokens = new LineTokens(\n emitBinaryTokens,\n lineText,\n this._tokenTypeMatchers,\n this.balancedBracketSelectors\n );\n const r = _tokenizeString(\n this,\n onigLineText,\n isFirstLine,\n 0,\n prevState,\n lineTokens,\n true,\n timeLimit\n );\n disposeOnigString(onigLineText);\n return {\n lineLength,\n lineTokens,\n ruleStack: r.stack,\n stoppedEarly: r.stoppedEarly\n };\n }\n};\nfunction initGrammar(grammar, base) {\n grammar = clone(grammar);\n grammar.repository = grammar.repository || {};\n grammar.repository.$self = {\n $vscodeTextmateLocation: grammar.$vscodeTextmateLocation,\n patterns: grammar.patterns,\n name: grammar.scopeName\n };\n grammar.repository.$base = base || grammar.repository.$self;\n return grammar;\n}\nvar AttributedScopeStack = class _AttributedScopeStack {\n /**\n * Invariant:\n * ```\n * if (parent && !scopePath.extends(parent.scopePath)) {\n * \tthrow new Error();\n * }\n * ```\n */\n constructor(parent, scopePath, tokenAttributes) {\n this.parent = parent;\n this.scopePath = scopePath;\n this.tokenAttributes = tokenAttributes;\n }\n static fromExtension(namesScopeList, contentNameScopesList) {\n let current = namesScopeList;\n let scopeNames = namesScopeList?.scopePath ?? null;\n for (const frame of contentNameScopesList) {\n scopeNames = ScopeStack.push(scopeNames, frame.scopeNames);\n current = new _AttributedScopeStack(current, scopeNames, frame.encodedTokenAttributes);\n }\n return current;\n }\n static createRoot(scopeName, tokenAttributes) {\n return new _AttributedScopeStack(null, new ScopeStack(null, scopeName), tokenAttributes);\n }\n static createRootAndLookUpScopeName(scopeName, tokenAttributes, grammar) {\n const rawRootMetadata = grammar.getMetadataForScope(scopeName);\n const scopePath = new ScopeStack(null, scopeName);\n const rootStyle = grammar.themeProvider.themeMatch(scopePath);\n const resolvedTokenAttributes = _AttributedScopeStack.mergeAttributes(\n tokenAttributes,\n rawRootMetadata,\n rootStyle\n );\n return new _AttributedScopeStack(null, scopePath, resolvedTokenAttributes);\n }\n get scopeName() {\n return this.scopePath.scopeName;\n }\n toString() {\n return this.getScopeNames().join(\" \");\n }\n equals(other) {\n return _AttributedScopeStack.equals(this, other);\n }\n static equals(a, b) {\n do {\n if (a === b) {\n return true;\n }\n if (!a && !b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n if (a.scopeName !== b.scopeName || a.tokenAttributes !== b.tokenAttributes) {\n return false;\n }\n a = a.parent;\n b = b.parent;\n } while (true);\n }\n static mergeAttributes(existingTokenAttributes, basicScopeAttributes, styleAttributes) {\n let fontStyle = -1 /* NotSet */;\n let foreground = 0;\n let background = 0;\n if (styleAttributes !== null) {\n fontStyle = styleAttributes.fontStyle;\n foreground = styleAttributes.foregroundId;\n background = styleAttributes.backgroundId;\n }\n return EncodedTokenMetadata.set(\n existingTokenAttributes,\n basicScopeAttributes.languageId,\n basicScopeAttributes.tokenType,\n null,\n fontStyle,\n foreground,\n background\n );\n }\n pushAttributed(scopePath, grammar) {\n if (scopePath === null) {\n return this;\n }\n if (scopePath.indexOf(\" \") === -1) {\n return _AttributedScopeStack._pushAttributed(this, scopePath, grammar);\n }\n const scopes = scopePath.split(/ /g);\n let result = this;\n for (const scope of scopes) {\n result = _AttributedScopeStack._pushAttributed(result, scope, grammar);\n }\n return result;\n }\n static _pushAttributed(target, scopeName, grammar) {\n const rawMetadata = grammar.getMetadataForScope(scopeName);\n const newPath = target.scopePath.push(scopeName);\n const scopeThemeMatchResult = grammar.themeProvider.themeMatch(newPath);\n const metadata = _AttributedScopeStack.mergeAttributes(\n target.tokenAttributes,\n rawMetadata,\n scopeThemeMatchResult\n );\n return new _AttributedScopeStack(target, newPath, metadata);\n }\n getScopeNames() {\n return this.scopePath.getSegments();\n }\n getExtensionIfDefined(base) {\n const result = [];\n let self = this;\n while (self && self !== base) {\n result.push({\n encodedTokenAttributes: self.tokenAttributes,\n scopeNames: self.scopePath.getExtensionIfDefined(self.parent?.scopePath ?? null)\n });\n self = self.parent;\n }\n return self === base ? result.reverse() : void 0;\n }\n};\nvar StateStackImpl = class _StateStackImpl {\n /**\n * Invariant:\n * ```\n * if (contentNameScopesList !== nameScopesList && contentNameScopesList?.parent !== nameScopesList) {\n * \tthrow new Error();\n * }\n * if (this.parent && !nameScopesList.extends(this.parent.contentNameScopesList)) {\n * \tthrow new Error();\n * }\n * ```\n */\n constructor(parent, ruleId, enterPos, anchorPos, beginRuleCapturedEOL, endRule, nameScopesList, contentNameScopesList) {\n this.parent = parent;\n this.ruleId = ruleId;\n this.beginRuleCapturedEOL = beginRuleCapturedEOL;\n this.endRule = endRule;\n this.nameScopesList = nameScopesList;\n this.contentNameScopesList = contentNameScopesList;\n this.depth = this.parent ? this.parent.depth + 1 : 1;\n this._enterPos = enterPos;\n this._anchorPos = anchorPos;\n }\n _stackElementBrand = void 0;\n // TODO remove me\n static NULL = new _StateStackImpl(\n null,\n 0,\n 0,\n 0,\n false,\n null,\n null,\n null\n );\n /**\n * The position on the current line where this state was pushed.\n * This is relevant only while tokenizing a line, to detect endless loops.\n * Its value is meaningless across lines.\n */\n _enterPos;\n /**\n * The captured anchor position when this stack element was pushed.\n * This is relevant only while tokenizing a line, to restore the anchor position when popping.\n * Its value is meaningless across lines.\n */\n _anchorPos;\n /**\n * The depth of the stack.\n */\n depth;\n equals(other) {\n if (other === null) {\n return false;\n }\n return _StateStackImpl._equals(this, other);\n }\n static _equals(a, b) {\n if (a === b) {\n return true;\n }\n if (!this._structuralEquals(a, b)) {\n return false;\n }\n return AttributedScopeStack.equals(a.contentNameScopesList, b.contentNameScopesList);\n }\n /**\n * A structural equals check. Does not take into account `scopes`.\n */\n static _structuralEquals(a, b) {\n do {\n if (a === b) {\n return true;\n }\n if (!a && !b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n if (a.depth !== b.depth || a.ruleId !== b.ruleId || a.endRule !== b.endRule) {\n return false;\n }\n a = a.parent;\n b = b.parent;\n } while (true);\n }\n clone() {\n return this;\n }\n static _reset(el) {\n while (el) {\n el._enterPos = -1;\n el._anchorPos = -1;\n el = el.parent;\n }\n }\n reset() {\n _StateStackImpl._reset(this);\n }\n pop() {\n return this.parent;\n }\n safePop() {\n if (this.parent) {\n return this.parent;\n }\n return this;\n }\n push(ruleId, enterPos, anchorPos, beginRuleCapturedEOL, endRule, nameScopesList, contentNameScopesList) {\n return new _StateStackImpl(\n this,\n ruleId,\n enterPos,\n anchorPos,\n beginRuleCapturedEOL,\n endRule,\n nameScopesList,\n contentNameScopesList\n );\n }\n getEnterPos() {\n return this._enterPos;\n }\n getAnchorPos() {\n return this._anchorPos;\n }\n getRule(grammar) {\n return grammar.getRule(this.ruleId);\n }\n toString() {\n const r = [];\n this._writeString(r, 0);\n return \"[\" + r.join(\",\") + \"]\";\n }\n _writeString(res, outIndex) {\n if (this.parent) {\n outIndex = this.parent._writeString(res, outIndex);\n }\n res[outIndex++] = `(${this.ruleId}, ${this.nameScopesList?.toString()}, ${this.contentNameScopesList?.toString()})`;\n return outIndex;\n }\n withContentNameScopesList(contentNameScopeStack) {\n if (this.contentNameScopesList === contentNameScopeStack) {\n return this;\n }\n return this.parent.push(\n this.ruleId,\n this._enterPos,\n this._anchorPos,\n this.beginRuleCapturedEOL,\n this.endRule,\n this.nameScopesList,\n contentNameScopeStack\n );\n }\n withEndRule(endRule) {\n if (this.endRule === endRule) {\n return this;\n }\n return new _StateStackImpl(\n this.parent,\n this.ruleId,\n this._enterPos,\n this._anchorPos,\n this.beginRuleCapturedEOL,\n endRule,\n this.nameScopesList,\n this.contentNameScopesList\n );\n }\n // Used to warn of endless loops\n hasSameRuleAs(other) {\n let el = this;\n while (el && el._enterPos === other._enterPos) {\n if (el.ruleId === other.ruleId) {\n return true;\n }\n el = el.parent;\n }\n return false;\n }\n toStateStackFrame() {\n return {\n ruleId: ruleIdToNumber(this.ruleId),\n beginRuleCapturedEOL: this.beginRuleCapturedEOL,\n endRule: this.endRule,\n nameScopesList: this.nameScopesList?.getExtensionIfDefined(this.parent?.nameScopesList ?? null) ?? [],\n contentNameScopesList: this.contentNameScopesList?.getExtensionIfDefined(this.nameScopesList) ?? []\n };\n }\n static pushFrame(self, frame) {\n const namesScopeList = AttributedScopeStack.fromExtension(self?.nameScopesList ?? null, frame.nameScopesList);\n return new _StateStackImpl(\n self,\n ruleIdFromNumber(frame.ruleId),\n frame.enterPos ?? -1,\n frame.anchorPos ?? -1,\n frame.beginRuleCapturedEOL,\n frame.endRule,\n namesScopeList,\n AttributedScopeStack.fromExtension(namesScopeList, frame.contentNameScopesList)\n );\n }\n};\nvar BalancedBracketSelectors = class {\n balancedBracketScopes;\n unbalancedBracketScopes;\n allowAny = false;\n constructor(balancedBracketScopes, unbalancedBracketScopes) {\n this.balancedBracketScopes = balancedBracketScopes.flatMap(\n (selector) => {\n if (selector === \"*\") {\n this.allowAny = true;\n return [];\n }\n return createMatchers(selector, nameMatcher).map((m) => m.matcher);\n }\n );\n this.unbalancedBracketScopes = unbalancedBracketScopes.flatMap(\n (selector) => createMatchers(selector, nameMatcher).map((m) => m.matcher)\n );\n }\n get matchesAlways() {\n return this.allowAny && this.unbalancedBracketScopes.length === 0;\n }\n get matchesNever() {\n return this.balancedBracketScopes.length === 0 && !this.allowAny;\n }\n match(scopes) {\n for (const excluder of this.unbalancedBracketScopes) {\n if (excluder(scopes)) {\n return false;\n }\n }\n for (const includer of this.balancedBracketScopes) {\n if (includer(scopes)) {\n return true;\n }\n }\n return this.allowAny;\n }\n};\nvar LineTokens = class {\n constructor(emitBinaryTokens, lineText, tokenTypeOverrides, balancedBracketSelectors) {\n this.balancedBracketSelectors = balancedBracketSelectors;\n this._emitBinaryTokens = emitBinaryTokens;\n this._tokenTypeOverrides = tokenTypeOverrides;\n if (false) {\n this._lineText = lineText;\n } else {\n this._lineText = null;\n }\n this._tokens = [];\n this._binaryTokens = [];\n this._lastTokenEndIndex = 0;\n }\n _emitBinaryTokens;\n /**\n * defined only if `false`.\n */\n _lineText;\n /**\n * used only if `_emitBinaryTokens` is false.\n */\n _tokens;\n /**\n * used only if `_emitBinaryTokens` is true.\n */\n _binaryTokens;\n _lastTokenEndIndex;\n _tokenTypeOverrides;\n produce(stack, endIndex) {\n this.produceFromScopes(stack.contentNameScopesList, endIndex);\n }\n produceFromScopes(scopesList, endIndex) {\n if (this._lastTokenEndIndex >= endIndex) {\n return;\n }\n if (this._emitBinaryTokens) {\n let metadata = scopesList?.tokenAttributes ?? 0;\n let containsBalancedBrackets = false;\n if (this.balancedBracketSelectors?.matchesAlways) {\n containsBalancedBrackets = true;\n }\n if (this._tokenTypeOverrides.length > 0 || this.balancedBracketSelectors && !this.balancedBracketSelectors.matchesAlways && !this.balancedBracketSelectors.matchesNever) {\n const scopes2 = scopesList?.getScopeNames() ?? [];\n for (const tokenType of this._tokenTypeOverrides) {\n if (tokenType.matcher(scopes2)) {\n metadata = EncodedTokenMetadata.set(\n metadata,\n 0,\n toOptionalTokenType(tokenType.type),\n null,\n -1 /* NotSet */,\n 0,\n 0\n );\n }\n }\n if (this.balancedBracketSelectors) {\n containsBalancedBrackets = this.balancedBracketSelectors.match(scopes2);\n }\n }\n if (containsBalancedBrackets) {\n metadata = EncodedTokenMetadata.set(\n metadata,\n 0,\n 8 /* NotSet */,\n containsBalancedBrackets,\n -1 /* NotSet */,\n 0,\n 0\n );\n }\n if (this._binaryTokens.length > 0 && this._binaryTokens[this._binaryTokens.length - 1] === metadata) {\n this._lastTokenEndIndex = endIndex;\n return;\n }\n this._binaryTokens.push(this._lastTokenEndIndex);\n this._binaryTokens.push(metadata);\n this._lastTokenEndIndex = endIndex;\n return;\n }\n const scopes = scopesList?.getScopeNames() ?? [];\n this._tokens.push({\n startIndex: this._lastTokenEndIndex,\n endIndex,\n // value: lineText.substring(lastTokenEndIndex, endIndex),\n scopes\n });\n this._lastTokenEndIndex = endIndex;\n }\n getResult(stack, lineLength) {\n if (this._tokens.length > 0 && this._tokens[this._tokens.length - 1].startIndex === lineLength - 1) {\n this._tokens.pop();\n }\n if (this._tokens.length === 0) {\n this._lastTokenEndIndex = -1;\n this.produce(stack, lineLength);\n this._tokens[this._tokens.length - 1].startIndex = 0;\n }\n return this._tokens;\n }\n getBinaryResult(stack, lineLength) {\n if (this._binaryTokens.length > 0 && this._binaryTokens[this._binaryTokens.length - 2] === lineLength - 1) {\n this._binaryTokens.pop();\n this._binaryTokens.pop();\n }\n if (this._binaryTokens.length === 0) {\n this._lastTokenEndIndex = -1;\n this.produce(stack, lineLength);\n this._binaryTokens[this._binaryTokens.length - 2] = 0;\n }\n const result = new Uint32Array(this._binaryTokens.length);\n for (let i = 0, len = this._binaryTokens.length; i < len; i++) {\n result[i] = this._binaryTokens[i];\n }\n return result;\n }\n};\n\n// src/registry.ts\nvar SyncRegistry = class {\n constructor(theme, _onigLib) {\n this._onigLib = _onigLib;\n this._theme = theme;\n }\n _grammars = /* @__PURE__ */ new Map();\n _rawGrammars = /* @__PURE__ */ new Map();\n _injectionGrammars = /* @__PURE__ */ new Map();\n _theme;\n dispose() {\n for (const grammar of this._grammars.values()) {\n grammar.dispose();\n }\n }\n setTheme(theme) {\n this._theme = theme;\n }\n getColorMap() {\n return this._theme.getColorMap();\n }\n /**\n * Add `grammar` to registry and return a list of referenced scope names\n */\n addGrammar(grammar, injectionScopeNames) {\n this._rawGrammars.set(grammar.scopeName, grammar);\n if (injectionScopeNames) {\n this._injectionGrammars.set(grammar.scopeName, injectionScopeNames);\n }\n }\n /**\n * Lookup a raw grammar.\n */\n lookup(scopeName) {\n return this._rawGrammars.get(scopeName);\n }\n /**\n * Returns the injections for the given grammar\n */\n injections(targetScope) {\n return this._injectionGrammars.get(targetScope);\n }\n /**\n * Get the default theme settings\n */\n getDefaults() {\n return this._theme.getDefaults();\n }\n /**\n * Match a scope in the theme.\n */\n themeMatch(scopePath) {\n return this._theme.match(scopePath);\n }\n /**\n * Lookup a grammar.\n */\n grammarForScopeName(scopeName, initialLanguage, embeddedLanguages, tokenTypes, balancedBracketSelectors) {\n if (!this._grammars.has(scopeName)) {\n let rawGrammar = this._rawGrammars.get(scopeName);\n if (!rawGrammar) {\n return null;\n }\n this._grammars.set(scopeName, createGrammar(\n scopeName,\n rawGrammar,\n initialLanguage,\n embeddedLanguages,\n tokenTypes,\n balancedBracketSelectors,\n this,\n this._onigLib\n ));\n }\n return this._grammars.get(scopeName);\n }\n};\n\n// src/index.ts\nvar Registry = class {\n _options;\n _syncRegistry;\n _ensureGrammarCache;\n constructor(options) {\n this._options = options;\n this._syncRegistry = new SyncRegistry(\n Theme.createFromRawTheme(options.theme, options.colorMap),\n options.onigLib\n );\n this._ensureGrammarCache = /* @__PURE__ */ new Map();\n }\n dispose() {\n this._syncRegistry.dispose();\n }\n /**\n * Change the theme. Once called, no previous `ruleStack` should be used anymore.\n */\n setTheme(theme, colorMap) {\n this._syncRegistry.setTheme(Theme.createFromRawTheme(theme, colorMap));\n }\n /**\n * Returns a lookup array for color ids.\n */\n getColorMap() {\n return this._syncRegistry.getColorMap();\n }\n /**\n * Load the grammar for `scopeName` and all referenced included grammars asynchronously.\n * Please do not use language id 0.\n */\n loadGrammarWithEmbeddedLanguages(initialScopeName, initialLanguage, embeddedLanguages) {\n return this.loadGrammarWithConfiguration(initialScopeName, initialLanguage, { embeddedLanguages });\n }\n /**\n * Load the grammar for `scopeName` and all referenced included grammars asynchronously.\n * Please do not use language id 0.\n */\n loadGrammarWithConfiguration(initialScopeName, initialLanguage, configuration) {\n return this._loadGrammar(\n initialScopeName,\n initialLanguage,\n configuration.embeddedLanguages,\n configuration.tokenTypes,\n new BalancedBracketSelectors(\n configuration.balancedBracketSelectors || [],\n configuration.unbalancedBracketSelectors || []\n )\n );\n }\n /**\n * Load the grammar for `scopeName` and all referenced included grammars asynchronously.\n */\n loadGrammar(initialScopeName) {\n return this._loadGrammar(initialScopeName, 0, null, null, null);\n }\n _loadGrammar(initialScopeName, initialLanguage, embeddedLanguages, tokenTypes, balancedBracketSelectors) {\n const dependencyProcessor = new ScopeDependencyProcessor(this._syncRegistry, initialScopeName);\n while (dependencyProcessor.Q.length > 0) {\n dependencyProcessor.Q.map((request) => this._loadSingleGrammar(request.scopeName));\n dependencyProcessor.processQueue();\n }\n return this._grammarForScopeName(\n initialScopeName,\n initialLanguage,\n embeddedLanguages,\n tokenTypes,\n balancedBracketSelectors\n );\n }\n _loadSingleGrammar(scopeName) {\n if (!this._ensureGrammarCache.has(scopeName)) {\n this._doLoadSingleGrammar(scopeName);\n this._ensureGrammarCache.set(scopeName, true);\n }\n }\n _doLoadSingleGrammar(scopeName) {\n const grammar = this._options.loadGrammar(scopeName);\n if (grammar) {\n const injections = typeof this._options.getInjections === \"function\" ? this._options.getInjections(scopeName) : void 0;\n this._syncRegistry.addGrammar(grammar, injections);\n }\n }\n /**\n * Adds a rawGrammar.\n */\n addGrammar(rawGrammar, injections = [], initialLanguage = 0, embeddedLanguages = null) {\n this._syncRegistry.addGrammar(rawGrammar, injections);\n return this._grammarForScopeName(rawGrammar.scopeName, initialLanguage, embeddedLanguages);\n }\n /**\n * Get the grammar for `scopeName`. The grammar must first be created via `loadGrammar` or `addGrammar`.\n */\n _grammarForScopeName(scopeName, initialLanguage = 0, embeddedLanguages = null, tokenTypes = null, balancedBracketSelectors = null) {\n return this._syncRegistry.grammarForScopeName(\n scopeName,\n initialLanguage,\n embeddedLanguages,\n tokenTypes,\n balancedBracketSelectors\n );\n }\n};\nvar INITIAL = StateStackImpl.NULL;\nexport {\n EncodedTokenMetadata,\n FindOption,\n FontStyle,\n INITIAL,\n Registry,\n Theme,\n disposeOnigString\n};\n","/**\n * List of HTML void tag names.\n *\n * @type {Array<string>}\n */\nexport const htmlVoidElements = [\n 'area',\n 'base',\n 'basefont',\n 'bgsound',\n 'br',\n 'col',\n 'command',\n 'embed',\n 'frame',\n 'hr',\n 'image',\n 'img',\n 'input',\n 'keygen',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr'\n]\n","/**\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","/**\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","/**\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","/**\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","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","/**\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","/**\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","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","/**\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","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","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","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","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","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","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","/**\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","// 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","/**\n * @callback Handler\n * Handle a value, with a certain ID field set to a certain value.\n * The ID field is passed to `zwitch`, and it’s value is this function’s\n * place on the `handlers` record.\n * @param {...any} parameters\n * Arbitrary parameters passed to the zwitch.\n * The first will be an object with a certain ID field set to a certain value.\n * @returns {any}\n * Anything!\n */\n\n/**\n * @callback UnknownHandler\n * Handle values that do have a certain ID field, but it’s set to a value\n * that is not listed in the `handlers` record.\n * @param {unknown} value\n * An object with a certain ID field set to an unknown value.\n * @param {...any} rest\n * Arbitrary parameters passed to the zwitch.\n * @returns {any}\n * Anything!\n */\n\n/**\n * @callback InvalidHandler\n * Handle values that do not have a certain ID field.\n * @param {unknown} value\n * Any unknown value.\n * @param {...any} rest\n * Arbitrary parameters passed to the zwitch.\n * @returns {void|null|undefined|never}\n * This should crash or return nothing.\n */\n\n/**\n * @template {InvalidHandler} [Invalid=InvalidHandler]\n * @template {UnknownHandler} [Unknown=UnknownHandler]\n * @template {Record<string, Handler>} [Handlers=Record<string, Handler>]\n * @typedef Options\n * Configuration (required).\n * @property {Invalid} [invalid]\n * Handler to use for invalid values.\n * @property {Unknown} [unknown]\n * Handler to use for unknown values.\n * @property {Handlers} [handlers]\n * Handlers to use.\n */\n\nconst own = {}.hasOwnProperty\n\n/**\n * Handle values based on a field.\n *\n * @template {InvalidHandler} [Invalid=InvalidHandler]\n * @template {UnknownHandler} [Unknown=UnknownHandler]\n * @template {Record<string, Handler>} [Handlers=Record<string, Handler>]\n * @param {string} key\n * Field to switch on.\n * @param {Options<Invalid, Unknown, Handlers>} [options]\n * Configuration (required).\n * @returns {{unknown: Unknown, invalid: Invalid, handlers: Handlers, (...parameters: Parameters<Handlers[keyof Handlers]>): ReturnType<Handlers[keyof Handlers]>, (...parameters: Parameters<Unknown>): ReturnType<Unknown>}}\n */\nexport function zwitch(key, options) {\n const settings = options || {}\n\n /**\n * Handle one value.\n *\n * Based on the bound `key`, a respective handler will be called.\n * If `value` is not an object, or doesn’t have a `key` property, the special\n * “invalid” handler will be called.\n * If `value` has an unknown `key`, the special “unknown” handler will be\n * called.\n *\n * All arguments, and the context object, are passed through to the handler,\n * and it’s result is returned.\n *\n * @this {unknown}\n * Any context object.\n * @param {unknown} [value]\n * Any value.\n * @param {...unknown} parameters\n * Arbitrary parameters passed to the zwitch.\n * @property {Handler} invalid\n * Handle for values that do not have a certain ID field.\n * @property {Handler} unknown\n * Handle values that do have a certain ID field, but it’s set to a value\n * that is not listed in the `handlers` record.\n * @property {Handlers} handlers\n * Record of handlers.\n * @returns {unknown}\n * Anything.\n */\n function one(value, ...parameters) {\n /** @type {Handler|undefined} */\n let fn = one.invalid\n const handlers = one.handlers\n\n if (value && own.call(value, key)) {\n // @ts-expect-error Indexable.\n const id = String(value[key])\n // @ts-expect-error Indexable.\n fn = own.call(handlers, id) ? handlers[id] : one.unknown\n }\n\n if (fn) {\n return fn.call(this, value, ...parameters)\n }\n }\n\n one.handlers = settings.handlers || {}\n one.invalid = settings.invalid\n one.unknown = settings.unknown\n\n // @ts-expect-error: matches!\n return one\n}\n","/**\n * @typedef CoreOptions\n * @property {ReadonlyArray<string>} [subset=[]]\n * Whether to only escape the given subset of characters.\n * @property {boolean} [escapeOnly=false]\n * Whether to only escape possibly dangerous characters.\n * Those characters are `\"`, `&`, `'`, `<`, `>`, and `` ` ``.\n *\n * @typedef FormatOptions\n * @property {(code: number, next: number, options: CoreWithFormatOptions) => string} format\n * Format strategy.\n *\n * @typedef {CoreOptions & FormatOptions & import('./util/format-smart.js').FormatSmartOptions} CoreWithFormatOptions\n */\n\nconst defaultSubsetRegex = /[\"&'<>`]/g\nconst surrogatePairsRegex = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g\nconst controlCharactersRegex =\n // eslint-disable-next-line no-control-regex, unicorn/no-hex-escape\n /[\\x01-\\t\\v\\f\\x0E-\\x1F\\x7F\\x81\\x8D\\x8F\\x90\\x9D\\xA0-\\uFFFF]/g\nconst regexEscapeRegex = /[|\\\\{}()[\\]^$+*?.]/g\n\n/** @type {WeakMap<ReadonlyArray<string>, RegExp>} */\nconst subsetToRegexCache = new WeakMap()\n\n/**\n * Encode certain characters in `value`.\n *\n * @param {string} value\n * @param {CoreWithFormatOptions} options\n * @returns {string}\n */\nexport function core(value, options) {\n value = value.replace(\n options.subset\n ? charactersToExpressionCached(options.subset)\n : defaultSubsetRegex,\n basic\n )\n\n if (options.subset || options.escapeOnly) {\n return value\n }\n\n return (\n value\n // Surrogate pairs.\n .replace(surrogatePairsRegex, surrogate)\n // BMP control characters (C0 except for LF, CR, SP; DEL; and some more\n // non-ASCII ones).\n .replace(controlCharactersRegex, basic)\n )\n\n /**\n * @param {string} pair\n * @param {number} index\n * @param {string} all\n */\n function surrogate(pair, index, all) {\n return options.format(\n (pair.charCodeAt(0) - 0xd800) * 0x400 +\n pair.charCodeAt(1) -\n 0xdc00 +\n 0x10000,\n all.charCodeAt(index + 2),\n options\n )\n }\n\n /**\n * @param {string} character\n * @param {number} index\n * @param {string} all\n */\n function basic(character, index, all) {\n return options.format(\n character.charCodeAt(0),\n all.charCodeAt(index + 1),\n options\n )\n }\n}\n\n/**\n * A wrapper function that caches the result of `charactersToExpression` with a WeakMap.\n * This can improve performance when tooling calls `charactersToExpression` repeatedly\n * with the same subset.\n *\n * @param {ReadonlyArray<string>} subset\n * @returns {RegExp}\n */\nfunction charactersToExpressionCached(subset) {\n let cached = subsetToRegexCache.get(subset)\n\n if (!cached) {\n cached = charactersToExpression(subset)\n subsetToRegexCache.set(subset, cached)\n }\n\n return cached\n}\n\n/**\n * @param {ReadonlyArray<string>} subset\n * @returns {RegExp}\n */\nfunction charactersToExpression(subset) {\n /** @type {Array<string>} */\n const groups = []\n let index = -1\n\n while (++index < subset.length) {\n groups.push(subset[index].replace(regexEscapeRegex, '\\\\$&'))\n }\n\n return new RegExp('(?:' + groups.join('|') + ')', 'g')\n}\n","const hexadecimalRegex = /[\\dA-Fa-f]/\n\n/**\n * Configurable ways to encode characters as hexadecimal references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @returns {string}\n */\nexport function toHexadecimal(code, next, omit) {\n const value = '&#x' + code.toString(16).toUpperCase()\n return omit && next && !hexadecimalRegex.test(String.fromCharCode(next))\n ? value\n : value + ';'\n}\n","const decimalRegex = /\\d/\n\n/**\n * Configurable ways to encode characters as decimal references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @returns {string}\n */\nexport function toDecimal(code, next, omit) {\n const value = '&#' + String(code)\n return omit && next && !decimalRegex.test(String.fromCharCode(next))\n ? value\n : value + ';'\n}\n","/**\n * List of legacy HTML named character references that don’t need a trailing semicolon.\n *\n * @type {Array<string>}\n */\nexport const characterEntitiesLegacy = [\n 'AElig',\n 'AMP',\n 'Aacute',\n 'Acirc',\n 'Agrave',\n 'Aring',\n 'Atilde',\n 'Auml',\n 'COPY',\n 'Ccedil',\n 'ETH',\n 'Eacute',\n 'Ecirc',\n 'Egrave',\n 'Euml',\n 'GT',\n 'Iacute',\n 'Icirc',\n 'Igrave',\n 'Iuml',\n 'LT',\n 'Ntilde',\n 'Oacute',\n 'Ocirc',\n 'Ograve',\n 'Oslash',\n 'Otilde',\n 'Ouml',\n 'QUOT',\n 'REG',\n 'THORN',\n 'Uacute',\n 'Ucirc',\n 'Ugrave',\n 'Uuml',\n 'Yacute',\n 'aacute',\n 'acirc',\n 'acute',\n 'aelig',\n 'agrave',\n 'amp',\n 'aring',\n 'atilde',\n 'auml',\n 'brvbar',\n 'ccedil',\n 'cedil',\n 'cent',\n 'copy',\n 'curren',\n 'deg',\n 'divide',\n 'eacute',\n 'ecirc',\n 'egrave',\n 'eth',\n 'euml',\n 'frac12',\n 'frac14',\n 'frac34',\n 'gt',\n 'iacute',\n 'icirc',\n 'iexcl',\n 'igrave',\n 'iquest',\n 'iuml',\n 'laquo',\n 'lt',\n 'macr',\n 'micro',\n 'middot',\n 'nbsp',\n 'not',\n 'ntilde',\n 'oacute',\n 'ocirc',\n 'ograve',\n 'ordf',\n 'ordm',\n 'oslash',\n 'otilde',\n 'ouml',\n 'para',\n 'plusmn',\n 'pound',\n 'quot',\n 'raquo',\n 'reg',\n 'sect',\n 'shy',\n 'sup1',\n 'sup2',\n 'sup3',\n 'szlig',\n 'thorn',\n 'times',\n 'uacute',\n 'ucirc',\n 'ugrave',\n 'uml',\n 'uuml',\n 'yacute',\n 'yen',\n 'yuml'\n]\n","/**\n * Map of named character references from HTML 4.\n *\n * @type {Record<string, string>}\n */\nexport const characterEntitiesHtml4 = {\n nbsp: ' ',\n iexcl: '¡',\n cent: '¢',\n pound: '£',\n curren: '¤',\n yen: '¥',\n brvbar: '¦',\n sect: '§',\n uml: '¨',\n copy: '©',\n ordf: 'ª',\n laquo: '«',\n not: '¬',\n shy: '­',\n reg: '®',\n macr: '¯',\n deg: '°',\n plusmn: '±',\n sup2: '²',\n sup3: '³',\n acute: '´',\n micro: 'µ',\n para: '¶',\n middot: '·',\n cedil: '¸',\n sup1: '¹',\n ordm: 'º',\n raquo: '»',\n frac14: '¼',\n frac12: '½',\n frac34: '¾',\n iquest: '¿',\n Agrave: 'À',\n Aacute: 'Á',\n Acirc: 'Â',\n Atilde: 'Ã',\n Auml: 'Ä',\n Aring: 'Å',\n AElig: 'Æ',\n Ccedil: 'Ç',\n Egrave: 'È',\n Eacute: 'É',\n Ecirc: 'Ê',\n Euml: 'Ë',\n Igrave: 'Ì',\n Iacute: 'Í',\n Icirc: 'Î',\n Iuml: 'Ï',\n ETH: 'Ð',\n Ntilde: 'Ñ',\n Ograve: 'Ò',\n Oacute: 'Ó',\n Ocirc: 'Ô',\n Otilde: 'Õ',\n Ouml: 'Ö',\n times: '×',\n Oslash: 'Ø',\n Ugrave: 'Ù',\n Uacute: 'Ú',\n Ucirc: 'Û',\n Uuml: 'Ü',\n Yacute: 'Ý',\n THORN: 'Þ',\n szlig: 'ß',\n agrave: 'à',\n aacute: 'á',\n acirc: 'â',\n atilde: 'ã',\n auml: 'ä',\n aring: 'å',\n aelig: 'æ',\n ccedil: 'ç',\n egrave: 'è',\n eacute: 'é',\n ecirc: 'ê',\n euml: 'ë',\n igrave: 'ì',\n iacute: 'í',\n icirc: 'î',\n iuml: 'ï',\n eth: 'ð',\n ntilde: 'ñ',\n ograve: 'ò',\n oacute: 'ó',\n ocirc: 'ô',\n otilde: 'õ',\n ouml: 'ö',\n divide: '÷',\n oslash: 'ø',\n ugrave: 'ù',\n uacute: 'ú',\n ucirc: 'û',\n uuml: 'ü',\n yacute: 'ý',\n thorn: 'þ',\n yuml: 'ÿ',\n fnof: 'ƒ',\n Alpha: 'Α',\n Beta: 'Β',\n Gamma: 'Γ',\n Delta: 'Δ',\n Epsilon: 'Ε',\n Zeta: 'Ζ',\n Eta: 'Η',\n Theta: 'Θ',\n Iota: 'Ι',\n Kappa: 'Κ',\n Lambda: 'Λ',\n Mu: 'Μ',\n Nu: 'Ν',\n Xi: 'Ξ',\n Omicron: 'Ο',\n Pi: 'Π',\n Rho: 'Ρ',\n Sigma: 'Σ',\n Tau: 'Τ',\n Upsilon: 'Υ',\n Phi: 'Φ',\n Chi: 'Χ',\n Psi: 'Ψ',\n Omega: 'Ω',\n alpha: 'α',\n beta: 'β',\n gamma: 'γ',\n delta: 'δ',\n epsilon: 'ε',\n zeta: 'ζ',\n eta: 'η',\n theta: 'θ',\n iota: 'ι',\n kappa: 'κ',\n lambda: 'λ',\n mu: 'μ',\n nu: 'ν',\n xi: 'ξ',\n omicron: 'ο',\n pi: 'π',\n rho: 'ρ',\n sigmaf: 'ς',\n sigma: 'σ',\n tau: 'τ',\n upsilon: 'υ',\n phi: 'φ',\n chi: 'χ',\n psi: 'ψ',\n omega: 'ω',\n thetasym: 'ϑ',\n upsih: 'ϒ',\n piv: 'ϖ',\n bull: '•',\n hellip: '…',\n prime: '′',\n Prime: '″',\n oline: '‾',\n frasl: '⁄',\n weierp: '℘',\n image: 'ℑ',\n real: 'ℜ',\n trade: '™',\n alefsym: 'ℵ',\n larr: '←',\n uarr: '↑',\n rarr: '→',\n darr: '↓',\n harr: '↔',\n crarr: '↵',\n lArr: '⇐',\n uArr: '⇑',\n rArr: '⇒',\n dArr: '⇓',\n hArr: '⇔',\n forall: '∀',\n part: '∂',\n exist: '∃',\n empty: '∅',\n nabla: '∇',\n isin: '∈',\n notin: '∉',\n ni: '∋',\n prod: '∏',\n sum: '∑',\n minus: '−',\n lowast: '∗',\n radic: '√',\n prop: '∝',\n infin: '∞',\n ang: '∠',\n and: '∧',\n or: '∨',\n cap: '∩',\n cup: '∪',\n int: '∫',\n there4: '∴',\n sim: '∼',\n cong: '≅',\n asymp: '≈',\n ne: '≠',\n equiv: '≡',\n le: '≤',\n ge: '≥',\n sub: '⊂',\n sup: '⊃',\n nsub: '⊄',\n sube: '⊆',\n supe: '⊇',\n oplus: '⊕',\n otimes: '⊗',\n perp: '⊥',\n sdot: '⋅',\n lceil: '⌈',\n rceil: '⌉',\n lfloor: '⌊',\n rfloor: '⌋',\n lang: '〈',\n rang: '〉',\n loz: '◊',\n spades: '♠',\n clubs: '♣',\n hearts: '♥',\n diams: '♦',\n quot: '\"',\n amp: '&',\n lt: '<',\n gt: '>',\n OElig: 'Œ',\n oelig: 'œ',\n Scaron: 'Š',\n scaron: 'š',\n Yuml: 'Ÿ',\n circ: 'ˆ',\n tilde: '˜',\n ensp: ' ',\n emsp: ' ',\n thinsp: ' ',\n zwnj: '‌',\n zwj: '‍',\n lrm: '‎',\n rlm: '‏',\n ndash: '–',\n mdash: '—',\n lsquo: '‘',\n rsquo: '’',\n sbquo: '‚',\n ldquo: '“',\n rdquo: '”',\n bdquo: '„',\n dagger: '†',\n Dagger: '‡',\n permil: '‰',\n lsaquo: '‹',\n rsaquo: '›',\n euro: '€'\n}\n","/**\n * List of legacy (that don’t need a trailing `;`) named references which could,\n * depending on what follows them, turn into a different meaning\n *\n * @type {Array<string>}\n */\nexport const dangerous = [\n 'cent',\n 'copy',\n 'divide',\n 'gt',\n 'lt',\n 'not',\n 'para',\n 'times'\n]\n","import {characterEntitiesLegacy} from 'character-entities-legacy'\nimport {characterEntitiesHtml4} from 'character-entities-html4'\nimport {dangerous} from '../constant/dangerous.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * `characterEntitiesHtml4` but inverted.\n *\n * @type {Record<string, string>}\n */\nconst characters = {}\n\n/** @type {string} */\nlet key\n\nfor (key in characterEntitiesHtml4) {\n if (own.call(characterEntitiesHtml4, key)) {\n characters[characterEntitiesHtml4[key]] = key\n }\n}\n\nconst notAlphanumericRegex = /[^\\dA-Za-z]/\n\n/**\n * Configurable ways to encode characters as named references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @param {boolean|undefined} attribute\n * @returns {string}\n */\nexport function toNamed(code, next, omit, attribute) {\n const character = String.fromCharCode(code)\n\n if (own.call(characters, character)) {\n const name = characters[character]\n const value = '&' + name\n\n if (\n omit &&\n characterEntitiesLegacy.includes(name) &&\n !dangerous.includes(name) &&\n (!attribute ||\n (next &&\n next !== 61 /* `=` */ &&\n notAlphanumericRegex.test(String.fromCharCode(next))))\n ) {\n return value\n }\n\n return value + ';'\n }\n\n return ''\n}\n","/**\n * @typedef FormatSmartOptions\n * @property {boolean} [useNamedReferences=false]\n * Prefer named character references (`&amp;`) where possible.\n * @property {boolean} [useShortestReferences=false]\n * Prefer the shortest possible reference, if that results in less bytes.\n * **Note**: `useNamedReferences` can be omitted when using `useShortestReferences`.\n * @property {boolean} [omitOptionalSemicolons=false]\n * Whether to omit semicolons when possible.\n * **Note**: This creates what HTML calls “parse errors” but is otherwise still valid HTML — don’t use this except when building a minifier.\n * Omitting semicolons is possible for certain named and numeric references in some cases.\n * @property {boolean} [attribute=false]\n * Create character references which don’t fail in attributes.\n * **Note**: `attribute` only applies when operating dangerously with\n * `omitOptionalSemicolons: true`.\n */\n\nimport {toHexadecimal} from './to-hexadecimal.js'\nimport {toDecimal} from './to-decimal.js'\nimport {toNamed} from './to-named.js'\n\n/**\n * Configurable ways to encode a character yielding pretty or small results.\n *\n * @param {number} code\n * @param {number} next\n * @param {FormatSmartOptions} options\n * @returns {string}\n */\nexport function formatSmart(code, next, options) {\n let numeric = toHexadecimal(code, next, options.omitOptionalSemicolons)\n /** @type {string|undefined} */\n let named\n\n if (options.useNamedReferences || options.useShortestReferences) {\n named = toNamed(\n code,\n next,\n options.omitOptionalSemicolons,\n options.attribute\n )\n }\n\n // Use the shortest numeric reference when requested.\n // A simple algorithm would use decimal for all code points under 100, as\n // those are shorter than hexadecimal:\n //\n // * `&#99;` vs `&#x63;` (decimal shorter)\n // * `&#100;` vs `&#x64;` (equal)\n //\n // However, because we take `next` into consideration when `omit` is used,\n // And it would be possible that decimals are shorter on bigger values as\n // well if `next` is hexadecimal but not decimal, we instead compare both.\n if (\n (options.useShortestReferences || !named) &&\n options.useShortestReferences\n ) {\n const decimal = toDecimal(code, next, options.omitOptionalSemicolons)\n\n if (decimal.length < numeric.length) {\n numeric = decimal\n }\n }\n\n return named &&\n (!options.useShortestReferences || named.length < numeric.length)\n ? named\n : numeric\n}\n","/**\n * @typedef {import('./core.js').CoreOptions & import('./util/format-smart.js').FormatSmartOptions} Options\n * @typedef {import('./core.js').CoreOptions} LightOptions\n */\n\nimport {core} from './core.js'\nimport {formatSmart} from './util/format-smart.js'\nimport {formatBasic} from './util/format-basic.js'\n\n/**\n * Encode special characters in `value`.\n *\n * @param {string} value\n * Value to encode.\n * @param {Options} [options]\n * Configuration.\n * @returns {string}\n * Encoded value.\n */\nexport function stringifyEntities(value, options) {\n return core(value, Object.assign({format: formatSmart}, options))\n}\n\n/**\n * Encode special characters in `value` as hexadecimals.\n *\n * @param {string} value\n * Value to encode.\n * @param {LightOptions} [options]\n * Configuration.\n * @returns {string}\n * Encoded value.\n */\nexport function stringifyEntitiesLight(value, options) {\n return core(value, Object.assign({format: formatBasic}, options))\n}\n","/**\n * @import {Comment, Parents} from 'hast'\n * @import {State} from '../index.js'\n */\n\nimport {stringifyEntities} from 'stringify-entities'\n\nconst htmlCommentRegex = /^>|^->|<!--|-->|--!>|<!-$/g\n\n// Declare arrays as variables so it can be cached by `stringifyEntities`\nconst bogusCommentEntitySubset = ['>']\nconst commentEntitySubset = ['<', '>']\n\n/**\n * Serialize a comment.\n *\n * @param {Comment} node\n * Node to handle.\n * @param {number | undefined} _1\n * Index of `node` in `parent.\n * @param {Parents | undefined} _2\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function comment(node, _1, _2, state) {\n // See: <https://html.spec.whatwg.org/multipage/syntax.html#comments>\n return state.settings.bogusComments\n ? '<?' +\n stringifyEntities(\n node.value,\n Object.assign({}, state.settings.characterReferences, {\n subset: bogusCommentEntitySubset\n })\n ) +\n '>'\n : '<!--' + node.value.replace(htmlCommentRegex, encode) + '-->'\n\n /**\n * @param {string} $0\n */\n function encode($0) {\n return stringifyEntities(\n $0,\n Object.assign({}, state.settings.characterReferences, {\n subset: commentEntitySubset\n })\n )\n }\n}\n","/**\n * @import {Doctype, Parents} from 'hast'\n * @import {State} from '../index.js'\n */\n\n/**\n * Serialize a doctype.\n *\n * @param {Doctype} _1\n * Node to handle.\n * @param {number | undefined} _2\n * Index of `node` in `parent.\n * @param {Parents | undefined} _3\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function doctype(_1, _2, _3, state) {\n return (\n '<!' +\n (state.settings.upperDoctype ? 'DOCTYPE' : 'doctype') +\n (state.settings.tightDoctype ? '' : ' ') +\n 'html>'\n )\n}\n","/**\n * Count how often a character (or substring) is used in a string.\n *\n * @param {string} value\n * Value to search in.\n * @param {string} character\n * Character (or substring) to look for.\n * @return {number}\n * Number of times `character` occurred in `value`.\n */\nexport function ccount(value, character) {\n const source = String(value)\n\n if (typeof character !== 'string') {\n throw new TypeError('Expected character')\n }\n\n let count = 0\n let index = source.indexOf(character)\n\n while (index !== -1) {\n count++\n index = source.indexOf(character, index + character.length)\n }\n\n return count\n}\n","/**\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","/**\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","/**\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","/**\n * @import {Parents, RootContent} from 'hast'\n */\n\nimport {whitespace} from 'hast-util-whitespace'\n\nexport const siblingAfter = siblings(1)\nexport const siblingBefore = siblings(-1)\n\n/** @type {Array<RootContent>} */\nconst emptyChildren = []\n\n/**\n * Factory to check siblings in a direction.\n *\n * @param {number} increment\n */\nfunction siblings(increment) {\n return sibling\n\n /**\n * Find applicable siblings in a direction.\n *\n * @template {Parents} Parent\n * Parent type.\n * @param {Parent | undefined} parent\n * Parent.\n * @param {number | undefined} index\n * Index of child in `parent`.\n * @param {boolean | undefined} [includeWhitespace=false]\n * Whether to include whitespace (default: `false`).\n * @returns {Parent extends {children: Array<infer Child>} ? Child | undefined : never}\n * Child of parent.\n */\n function sibling(parent, index, includeWhitespace) {\n const siblings = parent ? parent.children : emptyChildren\n let offset = (index || 0) + increment\n let next = siblings[offset]\n\n if (!includeWhitespace) {\n while (next && whitespace(next)) {\n offset += increment\n next = siblings[offset]\n }\n }\n\n // @ts-expect-error: it’s a correct child.\n return next\n }\n}\n","/**\n * @import {Element, Parents} from 'hast'\n */\n\n/**\n * @callback OmitHandle\n * Check if a tag can be omitted.\n * @param {Element} element\n * Element to check.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether to omit a tag.\n *\n */\n\nconst own = {}.hasOwnProperty\n\n/**\n * Factory to check if a given node can have a tag omitted.\n *\n * @param {Record<string, OmitHandle>} handlers\n * Omission handlers, where each key is a tag name, and each value is the\n * corresponding handler.\n * @returns {OmitHandle}\n * Whether to omit a tag of an element.\n */\nexport function omission(handlers) {\n return omit\n\n /**\n * Check if a given node can have a tag omitted.\n *\n * @type {OmitHandle}\n */\n function omit(node, index, parent) {\n return (\n own.call(handlers, node.tagName) &&\n handlers[node.tagName](node, index, parent)\n )\n }\n}\n","/**\n * @import {Element, Parents} from 'hast'\n */\n\nimport {whitespace} from 'hast-util-whitespace'\nimport {siblingAfter} from './util/siblings.js'\nimport {omission} from './omission.js'\n\nexport const closing = omission({\n body,\n caption: headOrColgroupOrCaption,\n colgroup: headOrColgroupOrCaption,\n dd,\n dt,\n head: headOrColgroupOrCaption,\n html,\n li,\n optgroup,\n option,\n p,\n rp: rubyElement,\n rt: rubyElement,\n tbody,\n td: cells,\n tfoot,\n th: cells,\n thead,\n tr\n})\n\n/**\n * Macro for `</head>`, `</colgroup>`, and `</caption>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction headOrColgroupOrCaption(_, index, parent) {\n const next = siblingAfter(parent, index, true)\n return (\n !next ||\n (next.type !== 'comment' &&\n !(next.type === 'text' && whitespace(next.value.charAt(0))))\n )\n}\n\n/**\n * Whether to omit `</html>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction html(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || next.type !== 'comment'\n}\n\n/**\n * Whether to omit `</body>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction body(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || next.type !== 'comment'\n}\n\n/**\n * Whether to omit `</p>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction p(_, index, parent) {\n const next = siblingAfter(parent, index)\n return next\n ? next.type === 'element' &&\n (next.tagName === 'address' ||\n next.tagName === 'article' ||\n next.tagName === 'aside' ||\n next.tagName === 'blockquote' ||\n next.tagName === 'details' ||\n next.tagName === 'div' ||\n next.tagName === 'dl' ||\n next.tagName === 'fieldset' ||\n next.tagName === 'figcaption' ||\n next.tagName === 'figure' ||\n next.tagName === 'footer' ||\n next.tagName === 'form' ||\n next.tagName === 'h1' ||\n next.tagName === 'h2' ||\n next.tagName === 'h3' ||\n next.tagName === 'h4' ||\n next.tagName === 'h5' ||\n next.tagName === 'h6' ||\n next.tagName === 'header' ||\n next.tagName === 'hgroup' ||\n next.tagName === 'hr' ||\n next.tagName === 'main' ||\n next.tagName === 'menu' ||\n next.tagName === 'nav' ||\n next.tagName === 'ol' ||\n next.tagName === 'p' ||\n next.tagName === 'pre' ||\n next.tagName === 'section' ||\n next.tagName === 'table' ||\n next.tagName === 'ul')\n : !parent ||\n // Confusing parent.\n !(\n parent.type === 'element' &&\n (parent.tagName === 'a' ||\n parent.tagName === 'audio' ||\n parent.tagName === 'del' ||\n parent.tagName === 'ins' ||\n parent.tagName === 'map' ||\n parent.tagName === 'noscript' ||\n parent.tagName === 'video')\n )\n}\n\n/**\n * Whether to omit `</li>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction li(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || (next.type === 'element' && next.tagName === 'li')\n}\n\n/**\n * Whether to omit `</dt>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction dt(_, index, parent) {\n const next = siblingAfter(parent, index)\n return Boolean(\n next &&\n next.type === 'element' &&\n (next.tagName === 'dt' || next.tagName === 'dd')\n )\n}\n\n/**\n * Whether to omit `</dd>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction dd(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'dt' || next.tagName === 'dd'))\n )\n}\n\n/**\n * Whether to omit `</rt>` or `</rp>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction rubyElement(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'rp' || next.tagName === 'rt'))\n )\n}\n\n/**\n * Whether to omit `</optgroup>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction optgroup(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || (next.type === 'element' && next.tagName === 'optgroup')\n}\n\n/**\n * Whether to omit `</option>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction option(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'option' || next.tagName === 'optgroup'))\n )\n}\n\n/**\n * Whether to omit `</thead>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction thead(_, index, parent) {\n const next = siblingAfter(parent, index)\n return Boolean(\n next &&\n next.type === 'element' &&\n (next.tagName === 'tbody' || next.tagName === 'tfoot')\n )\n}\n\n/**\n * Whether to omit `</tbody>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction tbody(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'tbody' || next.tagName === 'tfoot'))\n )\n}\n\n/**\n * Whether to omit `</tfoot>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction tfoot(_, index, parent) {\n return !siblingAfter(parent, index)\n}\n\n/**\n * Whether to omit `</tr>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction tr(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || (next.type === 'element' && next.tagName === 'tr')\n}\n\n/**\n * Whether to omit `</td>` or `</th>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction cells(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'td' || next.tagName === 'th'))\n )\n}\n","/**\n * @import {Element, Parents} from 'hast'\n */\n\nimport {whitespace} from 'hast-util-whitespace'\nimport {siblingAfter, siblingBefore} from './util/siblings.js'\nimport {closing} from './closing.js'\nimport {omission} from './omission.js'\n\nexport const opening = omission({\n body,\n colgroup,\n head,\n html,\n tbody\n})\n\n/**\n * Whether to omit `<html>`.\n *\n * @param {Element} node\n * Element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction html(node) {\n const head = siblingAfter(node, -1)\n return !head || head.type !== 'comment'\n}\n\n/**\n * Whether to omit `<head>`.\n *\n * @param {Element} node\n * Element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction head(node) {\n /** @type {Set<string>} */\n const seen = new Set()\n\n // Whether `srcdoc` or not,\n // make sure the content model at least doesn’t have too many `base`s/`title`s.\n for (const child of node.children) {\n if (\n child.type === 'element' &&\n (child.tagName === 'base' || child.tagName === 'title')\n ) {\n if (seen.has(child.tagName)) return false\n seen.add(child.tagName)\n }\n }\n\n // “May be omitted if the element is empty,\n // or if the first thing inside the head element is an element.”\n const child = node.children[0]\n return !child || child.type === 'element'\n}\n\n/**\n * Whether to omit `<body>`.\n *\n * @param {Element} node\n * Element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction body(node) {\n const head = siblingAfter(node, -1, true)\n\n return (\n !head ||\n (head.type !== 'comment' &&\n !(head.type === 'text' && whitespace(head.value.charAt(0))) &&\n !(\n head.type === 'element' &&\n (head.tagName === 'meta' ||\n head.tagName === 'link' ||\n head.tagName === 'script' ||\n head.tagName === 'style' ||\n head.tagName === 'template')\n ))\n )\n}\n\n/**\n * Whether to omit `<colgroup>`.\n * The spec describes some logic for the opening tag, but it’s easier to\n * implement in the closing tag, to the same effect, so we handle it there\n * instead.\n *\n * @param {Element} node\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction colgroup(node, index, parent) {\n const previous = siblingBefore(parent, index)\n const head = siblingAfter(node, -1, true)\n\n // Previous colgroup was already omitted.\n if (\n parent &&\n previous &&\n previous.type === 'element' &&\n previous.tagName === 'colgroup' &&\n closing(previous, parent.children.indexOf(previous), parent)\n ) {\n return false\n }\n\n return Boolean(head && head.type === 'element' && head.tagName === 'col')\n}\n\n/**\n * Whether to omit `<tbody>`.\n *\n * @param {Element} node\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction tbody(node, index, parent) {\n const previous = siblingBefore(parent, index)\n const head = siblingAfter(node, -1)\n\n // Previous table section was already omitted.\n if (\n parent &&\n previous &&\n previous.type === 'element' &&\n (previous.tagName === 'thead' || previous.tagName === 'tbody') &&\n closing(previous, parent.children.indexOf(previous), parent)\n ) {\n return false\n }\n\n return Boolean(head && head.type === 'element' && head.tagName === 'tr')\n}\n","/**\n * @import {Element, Parents, Properties} from 'hast'\n * @import {State} from '../index.js'\n */\n\nimport {ccount} from 'ccount'\nimport {stringify as commas} from 'comma-separated-tokens'\nimport {find, svg} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport {stringifyEntities} from 'stringify-entities'\nimport {closing} from '../omission/closing.js'\nimport {opening} from '../omission/opening.js'\n\n/**\n * Maps of subsets.\n *\n * Each value is a matrix of tuples.\n * The value at `0` causes parse errors, the value at `1` is valid.\n * Of both, the value at `0` is unsafe, and the value at `1` is safe.\n *\n * @type {Record<'double' | 'name' | 'single' | 'unquoted', Array<[Array<string>, Array<string>]>>}\n */\nconst constants = {\n // See: <https://html.spec.whatwg.org/#attribute-name-state>.\n name: [\n ['\\t\\n\\f\\r &/=>'.split(''), '\\t\\n\\f\\r \"&\\'/=>`'.split('')],\n ['\\0\\t\\n\\f\\r \"&\\'/<=>'.split(''), '\\0\\t\\n\\f\\r \"&\\'/<=>`'.split('')]\n ],\n // See: <https://html.spec.whatwg.org/#attribute-value-(unquoted)-state>.\n unquoted: [\n ['\\t\\n\\f\\r &>'.split(''), '\\0\\t\\n\\f\\r \"&\\'<=>`'.split('')],\n ['\\0\\t\\n\\f\\r \"&\\'<=>`'.split(''), '\\0\\t\\n\\f\\r \"&\\'<=>`'.split('')]\n ],\n // See: <https://html.spec.whatwg.org/#attribute-value-(single-quoted)-state>.\n single: [\n [\"&'\".split(''), '\"&\\'`'.split('')],\n [\"\\0&'\".split(''), '\\0\"&\\'`'.split('')]\n ],\n // See: <https://html.spec.whatwg.org/#attribute-value-(double-quoted)-state>.\n double: [\n ['\"&'.split(''), '\"&\\'`'.split('')],\n ['\\0\"&'.split(''), '\\0\"&\\'`'.split('')]\n ]\n}\n\n/**\n * Serialize an element node.\n *\n * @param {Element} node\n * Node to handle.\n * @param {number | undefined} index\n * Index of `node` in `parent.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function element(node, index, parent, state) {\n const schema = state.schema\n const omit = schema.space === 'svg' ? false : state.settings.omitOptionalTags\n let selfClosing =\n schema.space === 'svg'\n ? state.settings.closeEmptyElements\n : state.settings.voids.includes(node.tagName.toLowerCase())\n /** @type {Array<string>} */\n const parts = []\n /** @type {string} */\n let last\n\n if (schema.space === 'html' && node.tagName === 'svg') {\n state.schema = svg\n }\n\n const attributes = serializeAttributes(state, node.properties)\n\n const content = state.all(\n schema.space === 'html' && node.tagName === 'template' ? node.content : node\n )\n\n state.schema = schema\n\n // If the node is categorised as void, but it has children, remove the\n // categorisation.\n // This enables for example `menuitem`s, which are void in W3C HTML but not\n // void in WHATWG HTML, to be stringified properly.\n // Note: `menuitem` has since been removed from the HTML spec, and so is no\n // longer void.\n if (content) selfClosing = false\n\n if (attributes || !omit || !opening(node, index, parent)) {\n parts.push('<', node.tagName, attributes ? ' ' + attributes : '')\n\n if (\n selfClosing &&\n (schema.space === 'svg' || state.settings.closeSelfClosing)\n ) {\n last = attributes.charAt(attributes.length - 1)\n if (\n !state.settings.tightSelfClosing ||\n last === '/' ||\n (last && last !== '\"' && last !== \"'\")\n ) {\n parts.push(' ')\n }\n\n parts.push('/')\n }\n\n parts.push('>')\n }\n\n parts.push(content)\n\n if (!selfClosing && (!omit || !closing(node, index, parent))) {\n parts.push('</' + node.tagName + '>')\n }\n\n return parts.join('')\n}\n\n/**\n * @param {State} state\n * @param {Properties | null | undefined} properties\n * @returns {string}\n */\nfunction serializeAttributes(state, properties) {\n /** @type {Array<string>} */\n const values = []\n let index = -1\n /** @type {string} */\n let key\n\n if (properties) {\n for (key in properties) {\n if (properties[key] !== null && properties[key] !== undefined) {\n const value = serializeAttribute(state, key, properties[key])\n if (value) values.push(value)\n }\n }\n }\n\n while (++index < values.length) {\n const last = state.settings.tightAttributes\n ? values[index].charAt(values[index].length - 1)\n : undefined\n\n // In tight mode, don’t add a space after quoted attributes.\n if (index !== values.length - 1 && last !== '\"' && last !== \"'\") {\n values[index] += ' '\n }\n }\n\n return values.join('')\n}\n\n/**\n * @param {State} state\n * @param {string} key\n * @param {Properties[keyof Properties]} value\n * @returns {string}\n */\nfunction serializeAttribute(state, key, value) {\n const info = find(state.schema, key)\n const x =\n state.settings.allowParseErrors && state.schema.space === 'html' ? 0 : 1\n const y = state.settings.allowDangerousCharacters ? 0 : 1\n let quote = state.quote\n /** @type {string | undefined} */\n let result\n\n if (info.overloadedBoolean && (value === info.attribute || value === '')) {\n value = true\n } else if (\n (info.boolean || info.overloadedBoolean) &&\n (typeof value !== 'string' || value === info.attribute || value === '')\n ) {\n value = Boolean(value)\n }\n\n if (\n value === null ||\n value === undefined ||\n value === false ||\n (typeof value === 'number' && Number.isNaN(value))\n ) {\n return ''\n }\n\n const name = stringifyEntities(\n info.attribute,\n Object.assign({}, state.settings.characterReferences, {\n // Always encode without parse errors in non-HTML.\n subset: constants.name[x][y]\n })\n )\n\n // No value.\n // There is currently only one boolean property in SVG: `[download]` on\n // `<a>`.\n // This property does not seem to work in browsers (Firefox, Safari, Chrome),\n // so I can’t test if dropping the value works.\n // But I assume that it should:\n //\n // ```html\n // <!doctype html>\n // <svg viewBox=\"0 0 100 100\">\n // <a href=https://example.com download>\n // <circle cx=50 cy=40 r=35 />\n // </a>\n // </svg>\n // ```\n //\n // See: <https://github.com/wooorm/property-information/blob/main/lib/svg.js>\n if (value === true) return name\n\n // `spaces` doesn’t accept a second argument, but it’s given here just to\n // keep the code cleaner.\n value = Array.isArray(value)\n ? (info.commaSeparated ? commas : spaces)(value, {\n padLeft: !state.settings.tightCommaSeparatedLists\n })\n : String(value)\n\n if (state.settings.collapseEmptyAttributes && !value) return name\n\n // Check unquoted value.\n if (state.settings.preferUnquoted) {\n result = stringifyEntities(\n value,\n Object.assign({}, state.settings.characterReferences, {\n attribute: true,\n subset: constants.unquoted[x][y]\n })\n )\n }\n\n // If we don’t want unquoted, or if `value` contains character references when\n // unquoted…\n if (result !== value) {\n // If the alternative is less common than `quote`, switch.\n if (\n state.settings.quoteSmart &&\n ccount(value, quote) > ccount(value, state.alternative)\n ) {\n quote = state.alternative\n }\n\n result =\n quote +\n stringifyEntities(\n value,\n Object.assign({}, state.settings.characterReferences, {\n // Always encode without parse errors in non-HTML.\n subset: (quote === \"'\" ? constants.single : constants.double)[x][y],\n attribute: true\n })\n ) +\n quote\n }\n\n // Don’t add a `=` for unquoted empties.\n return name + (result ? '=' + result : result)\n}\n","/**\n * @import {Parents, Text} from 'hast'\n * @import {Raw} from 'mdast-util-to-hast'\n * @import {State} from '../index.js'\n */\n\nimport {stringifyEntities} from 'stringify-entities'\n\n// Declare array as variable so it can be cached by `stringifyEntities`\nconst textEntitySubset = ['<', '&']\n\n/**\n * Serialize a text node.\n *\n * @param {Raw | Text} node\n * Node to handle.\n * @param {number | undefined} _\n * Index of `node` in `parent.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function text(node, _, parent, state) {\n // Check if content of `node` should be escaped.\n return parent &&\n parent.type === 'element' &&\n (parent.tagName === 'script' || parent.tagName === 'style')\n ? node.value\n : stringifyEntities(\n node.value,\n Object.assign({}, state.settings.characterReferences, {\n subset: textEntitySubset\n })\n )\n}\n","/**\n * @import {Parents} from 'hast'\n * @import {Raw} from 'mdast-util-to-hast'\n * @import {State} from '../index.js'\n */\n\nimport {text} from './text.js'\n\n/**\n * Serialize a raw node.\n *\n * @param {Raw} node\n * Node to handle.\n * @param {number | undefined} index\n * Index of `node` in `parent.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function raw(node, index, parent, state) {\n return state.settings.allowDangerousHtml\n ? node.value\n : text(node, index, parent, state)\n}\n","/**\n * @import {Parents, Root} from 'hast'\n * @import {State} from '../index.js'\n */\n\n/**\n * Serialize a root.\n *\n * @param {Root} node\n * Node to handle.\n * @param {number | undefined} _1\n * Index of `node` in `parent.\n * @param {Parents | undefined} _2\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function root(node, _1, _2, state) {\n return state.all(node)\n}\n","/**\n * @import {Nodes, Parents} from 'hast'\n * @import {State} from '../index.js'\n */\n\nimport {zwitch} from 'zwitch'\nimport {comment} from './comment.js'\nimport {doctype} from './doctype.js'\nimport {element} from './element.js'\nimport {raw} from './raw.js'\nimport {root} from './root.js'\nimport {text} from './text.js'\n\n/**\n * @type {(node: Nodes, index: number | undefined, parent: Parents | undefined, state: State) => string}\n */\nexport const handle = zwitch('type', {\n invalid,\n unknown,\n handlers: {comment, doctype, element, raw, root, text}\n})\n\n/**\n * Fail when a non-node is found in the tree.\n *\n * @param {unknown} node\n * Unknown value.\n * @returns {never}\n * Never.\n */\nfunction invalid(node) {\n throw new Error('Expected node, not `' + node + '`')\n}\n\n/**\n * Fail when a node with an unknown type is found in the tree.\n *\n * @param {unknown} node_\n * Unknown node.\n * @returns {never}\n * Never.\n */\nfunction unknown(node_) {\n // `type` is guaranteed by runtime JS.\n const node = /** @type {Nodes} */ (node_)\n throw new Error('Cannot compile unknown node `' + node.type + '`')\n}\n","/**\n * @import {Nodes, Parents, RootContent} from 'hast'\n * @import {Schema} from 'property-information'\n * @import {Options as StringifyEntitiesOptions} from 'stringify-entities'\n */\n\n/**\n * @typedef {Omit<StringifyEntitiesOptions, 'attribute' | 'escapeOnly' | 'subset'>} CharacterReferences\n *\n * @typedef Options\n * Configuration.\n * @property {boolean | null | undefined} [allowDangerousCharacters=false]\n * Do not encode some characters which cause XSS vulnerabilities in older\n * browsers (default: `false`).\n *\n * > ⚠️ **Danger**: only set this if you completely trust the content.\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n * Allow `raw` nodes and insert them as raw HTML (default: `false`).\n *\n * When `false`, `Raw` nodes are encoded.\n *\n * > ⚠️ **Danger**: only set this if you completely trust the content.\n * @property {boolean | null | undefined} [allowParseErrors=false]\n * Do not encode characters which cause parse errors (even though they work),\n * to save bytes (default: `false`).\n *\n * Not used in the SVG space.\n *\n * > 👉 **Note**: intentionally creates parse errors in markup (how parse\n * > errors are handled is well defined, so this works but isn’t pretty).\n * @property {boolean | null | undefined} [bogusComments=false]\n * Use “bogus comments” instead of comments to save byes: `<?charlie>`\n * instead of `<!--charlie-->` (default: `false`).\n *\n * > 👉 **Note**: intentionally creates parse errors in markup (how parse\n * > errors are handled is well defined, so this works but isn’t pretty).\n * @property {CharacterReferences | null | undefined} [characterReferences]\n * Configure how to serialize character references (optional).\n * @property {boolean | null | undefined} [closeEmptyElements=false]\n * Close SVG elements without any content with slash (`/`) on the opening tag\n * instead of an end tag: `<circle />` instead of `<circle></circle>`\n * (default: `false`).\n *\n * See `tightSelfClosing` to control whether a space is used before the\n * slash.\n *\n * Not used in the HTML space.\n * @property {boolean | null | undefined} [closeSelfClosing=false]\n * Close self-closing nodes with an extra slash (`/`): `<img />` instead of\n * `<img>` (default: `false`).\n *\n * See `tightSelfClosing` to control whether a space is used before the\n * slash.\n *\n * Not used in the SVG space.\n * @property {boolean | null | undefined} [collapseEmptyAttributes=false]\n * Collapse empty attributes: get `class` instead of `class=\"\"` (default:\n * `false`).\n *\n * Not used in the SVG space.\n *\n * > 👉 **Note**: boolean attributes (such as `hidden`) are always collapsed.\n * @property {boolean | null | undefined} [omitOptionalTags=false]\n * Omit optional opening and closing tags (default: `false`).\n *\n * For example, in `<ol><li>one</li><li>two</li></ol>`, both `</li>` closing\n * tags can be omitted.\n * The first because it’s followed by another `li`, the last because it’s\n * followed by nothing.\n *\n * Not used in the SVG space.\n * @property {boolean | null | undefined} [preferUnquoted=false]\n * Leave attributes unquoted if that results in less bytes (default: `false`).\n *\n * Not used in the SVG space.\n * @property {boolean | null | undefined} [quoteSmart=false]\n * Use the other quote if that results in less bytes (default: `false`).\n * @property {Quote | null | undefined} [quote='\"']\n * Preferred quote to use (default: `'\"'`).\n * @property {Space | null | undefined} [space='html']\n * When an `<svg>` element is found in the HTML space, this package already\n * automatically switches to and from the SVG space when entering and exiting\n * it (default: `'html'`).\n *\n * > 👉 **Note**: hast is not XML.\n * > It supports SVG as embedded in HTML.\n * > It does not support the features available in XML.\n * > Passing SVG might break but fragments of modern SVG should be fine.\n * > Use [`xast`][xast] if you need to support SVG as XML.\n * @property {boolean | null | undefined} [tightAttributes=false]\n * Join attributes together, without whitespace, if possible: get\n * `class=\"a b\"title=\"c d\"` instead of `class=\"a b\" title=\"c d\"` to save\n * bytes (default: `false`).\n *\n * Not used in the SVG space.\n *\n * > 👉 **Note**: intentionally creates parse errors in markup (how parse\n * > errors are handled is well defined, so this works but isn’t pretty).\n * @property {boolean | null | undefined} [tightCommaSeparatedLists=false]\n * Join known comma-separated attribute values with just a comma (`,`),\n * instead of padding them on the right as well (`,␠`, where `␠` represents a\n * space) (default: `false`).\n * @property {boolean | null | undefined} [tightDoctype=false]\n * Drop unneeded spaces in doctypes: `<!doctypehtml>` instead of\n * `<!doctype html>` to save bytes (default: `false`).\n *\n * > 👉 **Note**: intentionally creates parse errors in markup (how parse\n * > errors are handled is well defined, so this works but isn’t pretty).\n * @property {boolean | null | undefined} [tightSelfClosing=false]\n * Do not use an extra space when closing self-closing elements: `<img/>`\n * instead of `<img />` (default: `false`).\n *\n * > 👉 **Note**: only used if `closeSelfClosing: true` or\n * > `closeEmptyElements: true`.\n * @property {boolean | null | undefined} [upperDoctype=false]\n * Use a `<!DOCTYPE…` instead of `<!doctype…` (default: `false`).\n *\n * Useless except for XHTML.\n * @property {ReadonlyArray<string> | null | undefined} [voids]\n * Tag names of elements to serialize without closing tag (default: `html-void-elements`).\n *\n * Not used in the SVG space.\n *\n * > 👉 **Note**: It’s highly unlikely that you want to pass this, because\n * > hast is not for XML, and HTML will not add more void elements.\n *\n * @typedef {'\"' | \"'\"} Quote\n * HTML quotes for attribute values.\n *\n * @typedef {Omit<Required<{[key in keyof Options]: Exclude<Options[key], null | undefined>}>, 'space' | 'quote'>} Settings\n *\n * @typedef {'html' | 'svg'} Space\n * Namespace.\n *\n * @typedef State\n * Info passed around about the current state.\n * @property {(node: Parents | undefined) => string} all\n * Serialize the children of a parent node.\n * @property {Quote} alternative\n * Alternative quote.\n * @property {(node: Nodes, index: number | undefined, parent: Parents | undefined) => string} one\n * Serialize one node.\n * @property {Quote} quote\n * Preferred quote.\n * @property {Schema} schema\n * Current schema.\n * @property {Settings} settings\n * User configuration.\n */\n\nimport {htmlVoidElements} from 'html-void-elements'\nimport {html, svg} from 'property-information'\nimport {handle} from './handle/index.js'\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/** @type {CharacterReferences} */\nconst emptyCharacterReferences = {}\n\n/** @type {Array<never>} */\nconst emptyChildren = []\n\n/**\n * Serialize hast as HTML.\n *\n * @param {Array<RootContent> | Nodes} tree\n * Tree to serialize.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {string}\n * Serialized HTML.\n */\nexport function toHtml(tree, options) {\n const options_ = options || emptyOptions\n const quote = options_.quote || '\"'\n const alternative = quote === '\"' ? \"'\" : '\"'\n\n if (quote !== '\"' && quote !== \"'\") {\n throw new Error('Invalid quote `' + quote + '`, expected `\\'` or `\"`')\n }\n\n /** @type {State} */\n const state = {\n one,\n all,\n settings: {\n omitOptionalTags: options_.omitOptionalTags || false,\n allowParseErrors: options_.allowParseErrors || false,\n allowDangerousCharacters: options_.allowDangerousCharacters || false,\n quoteSmart: options_.quoteSmart || false,\n preferUnquoted: options_.preferUnquoted || false,\n tightAttributes: options_.tightAttributes || false,\n upperDoctype: options_.upperDoctype || false,\n tightDoctype: options_.tightDoctype || false,\n bogusComments: options_.bogusComments || false,\n tightCommaSeparatedLists: options_.tightCommaSeparatedLists || false,\n tightSelfClosing: options_.tightSelfClosing || false,\n collapseEmptyAttributes: options_.collapseEmptyAttributes || false,\n allowDangerousHtml: options_.allowDangerousHtml || false,\n voids: options_.voids || htmlVoidElements,\n characterReferences:\n options_.characterReferences || emptyCharacterReferences,\n closeSelfClosing: options_.closeSelfClosing || false,\n closeEmptyElements: options_.closeEmptyElements || false\n },\n schema: options_.space === 'svg' ? svg : html,\n quote,\n alternative\n }\n\n return state.one(\n Array.isArray(tree) ? {type: 'root', children: tree} : tree,\n undefined,\n undefined\n )\n}\n\n/**\n * Serialize a node.\n *\n * @this {State}\n * Info passed around about the current state.\n * @param {Nodes} node\n * Node to handle.\n * @param {number | undefined} index\n * Index of `node` in `parent.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @returns {string}\n * Serialized node.\n */\nfunction one(node, index, parent) {\n return handle(node, index, parent, this)\n}\n\n/**\n * Serialize all children of `parent`.\n *\n * @this {State}\n * Info passed around about the current state.\n * @param {Parents | undefined} parent\n * Parent whose children to serialize.\n * @returns {string}\n */\nexport function all(parent) {\n /** @type {Array<string>} */\n const results = []\n const children = (parent && parent.children) || emptyChildren\n let index = -1\n\n while (++index < children.length) {\n results[index] = this.one(children[index], index, parent)\n }\n\n return results.join('')\n}\n","import { ShikiError as ShikiError$1 } from '@shikijs/types';\nexport * from '@shikijs/types';\nimport { FontStyle, INITIAL, EncodedTokenMetadata, Registry as Registry$1, Theme } from '@shikijs/vscode-textmate';\nimport { toHtml } from 'hast-util-to-html';\n\nfunction resolveColorReplacements(theme, options) {\n const replacements = typeof theme === \"string\" ? {} : { ...theme.colorReplacements };\n const themeName = typeof theme === \"string\" ? theme : theme.name;\n for (const [key, value] of Object.entries(options?.colorReplacements || {})) {\n if (typeof value === \"string\")\n replacements[key] = value;\n else if (key === themeName)\n Object.assign(replacements, value);\n }\n return replacements;\n}\nfunction applyColorReplacements(color, replacements) {\n if (!color)\n return color;\n return replacements?.[color?.toLowerCase()] || color;\n}\n\nfunction toArray(x) {\n return Array.isArray(x) ? x : [x];\n}\nasync function normalizeGetter(p) {\n return Promise.resolve(typeof p === \"function\" ? p() : p).then((r) => r.default || r);\n}\nfunction isPlainLang(lang) {\n return !lang || [\"plaintext\", \"txt\", \"text\", \"plain\"].includes(lang);\n}\nfunction isSpecialLang(lang) {\n return lang === \"ansi\" || isPlainLang(lang);\n}\nfunction isNoneTheme(theme) {\n return theme === \"none\";\n}\nfunction isSpecialTheme(theme) {\n return isNoneTheme(theme);\n}\n\nfunction addClassToHast(node, className) {\n if (!className)\n return node;\n node.properties ||= {};\n node.properties.class ||= [];\n if (typeof node.properties.class === \"string\")\n node.properties.class = node.properties.class.split(/\\s+/g);\n if (!Array.isArray(node.properties.class))\n node.properties.class = [];\n const targets = Array.isArray(className) ? className : className.split(/\\s+/g);\n for (const c of targets) {\n if (c && !node.properties.class.includes(c))\n node.properties.class.push(c);\n }\n return node;\n}\n\nfunction splitLines(code, preserveEnding = false) {\n if (code.length === 0) {\n return [[\"\", 0]];\n }\n const parts = code.split(/(\\r?\\n)/g);\n let index = 0;\n const lines = [];\n for (let i = 0; i < parts.length; i += 2) {\n const line = preserveEnding ? parts[i] + (parts[i + 1] || \"\") : parts[i];\n lines.push([line, index]);\n index += parts[i].length;\n index += parts[i + 1]?.length || 0;\n }\n return lines;\n}\nfunction createPositionConverter(code) {\n const lines = splitLines(code, true).map(([line]) => line);\n function indexToPos(index) {\n if (index === code.length) {\n return {\n line: lines.length - 1,\n character: lines[lines.length - 1].length\n };\n }\n let character = index;\n let line = 0;\n for (const lineText of lines) {\n if (character < lineText.length)\n break;\n character -= lineText.length;\n line++;\n }\n return { line, character };\n }\n function posToIndex(line, character) {\n let index = 0;\n for (let i = 0; i < line; i++)\n index += lines[i].length;\n index += character;\n return index;\n }\n return {\n lines,\n indexToPos,\n posToIndex\n };\n}\nfunction guessEmbeddedLanguages(code, _lang, highlighter) {\n const langs = /* @__PURE__ */ new Set();\n for (const match of code.matchAll(/:?lang=[\"']([^\"']+)[\"']/g)) {\n const lang = match[1].toLowerCase().trim();\n if (lang)\n langs.add(lang);\n }\n for (const match of code.matchAll(/(?:```|~~~)([\\w-]+)/g)) {\n const lang = match[1].toLowerCase().trim();\n if (lang)\n langs.add(lang);\n }\n for (const match of code.matchAll(/\\\\begin\\{([\\w-]+)\\}/g)) {\n const lang = match[1].toLowerCase().trim();\n if (lang)\n langs.add(lang);\n }\n for (const match of code.matchAll(/<script\\s+(?:type|lang)=[\"']([^\"']+)[\"']/gi)) {\n const fullType = match[1].toLowerCase().trim();\n const lang = fullType.includes(\"/\") ? fullType.split(\"/\").pop() : fullType;\n if (lang)\n langs.add(lang);\n }\n if (!highlighter)\n return Array.from(langs);\n const bundle = highlighter.getBundledLanguages();\n return Array.from(langs).filter((l) => l && bundle[l]);\n}\n\nconst DEFAULT_COLOR_LIGHT_DARK = \"light-dark()\";\nconst COLOR_KEYS = [\"color\", \"background-color\"];\n\nfunction splitToken(token, offsets) {\n let lastOffset = 0;\n const tokens = [];\n for (const offset of offsets) {\n if (offset > lastOffset) {\n tokens.push({\n ...token,\n content: token.content.slice(lastOffset, offset),\n offset: token.offset + lastOffset\n });\n }\n lastOffset = offset;\n }\n if (lastOffset < token.content.length) {\n tokens.push({\n ...token,\n content: token.content.slice(lastOffset),\n offset: token.offset + lastOffset\n });\n }\n return tokens;\n}\nfunction splitTokens(tokens, breakpoints) {\n const sorted = Array.from(breakpoints instanceof Set ? breakpoints : new Set(breakpoints)).sort((a, b) => a - b);\n if (!sorted.length)\n return tokens;\n return tokens.map((line) => {\n return line.flatMap((token) => {\n const breakpointsInToken = sorted.filter((i) => token.offset < i && i < token.offset + token.content.length).map((i) => i - token.offset).sort((a, b) => a - b);\n if (!breakpointsInToken.length)\n return token;\n return splitToken(token, breakpointsInToken);\n });\n });\n}\nfunction flatTokenVariants(merged, variantsOrder, cssVariablePrefix, defaultColor, colorsRendering = \"css-vars\") {\n const token = {\n content: merged.content,\n explanation: merged.explanation,\n offset: merged.offset\n };\n const styles = variantsOrder.map((t) => getTokenStyleObject(merged.variants[t]));\n const styleKeys = new Set(styles.flatMap((t) => Object.keys(t)));\n const mergedStyles = {};\n const varKey = (idx, key) => {\n const keyName = key === \"color\" ? \"\" : key === \"background-color\" ? \"-bg\" : `-${key}`;\n return cssVariablePrefix + variantsOrder[idx] + (key === \"color\" ? \"\" : keyName);\n };\n styles.forEach((cur, idx) => {\n for (const key of styleKeys) {\n const value = cur[key] || \"inherit\";\n if (idx === 0 && defaultColor && COLOR_KEYS.includes(key)) {\n if (defaultColor === DEFAULT_COLOR_LIGHT_DARK && styles.length > 1) {\n const lightIndex = variantsOrder.findIndex((t) => t === \"light\");\n const darkIndex = variantsOrder.findIndex((t) => t === \"dark\");\n if (lightIndex === -1 || darkIndex === -1)\n throw new ShikiError$1('When using `defaultColor: \"light-dark()\"`, you must provide both `light` and `dark` themes');\n const lightValue = styles[lightIndex][key] || \"inherit\";\n const darkValue = styles[darkIndex][key] || \"inherit\";\n mergedStyles[key] = `light-dark(${lightValue}, ${darkValue})`;\n if (colorsRendering === \"css-vars\")\n mergedStyles[varKey(idx, key)] = value;\n } else {\n mergedStyles[key] = value;\n }\n } else {\n if (colorsRendering === \"css-vars\")\n mergedStyles[varKey(idx, key)] = value;\n }\n }\n });\n token.htmlStyle = mergedStyles;\n return token;\n}\nfunction getTokenStyleObject(token) {\n const styles = {};\n if (token.color)\n styles.color = token.color;\n if (token.bgColor)\n styles[\"background-color\"] = token.bgColor;\n if (token.fontStyle) {\n if (token.fontStyle & FontStyle.Italic)\n styles[\"font-style\"] = \"italic\";\n if (token.fontStyle & FontStyle.Bold)\n styles[\"font-weight\"] = \"bold\";\n const decorations = [];\n if (token.fontStyle & FontStyle.Underline)\n decorations.push(\"underline\");\n if (token.fontStyle & FontStyle.Strikethrough)\n decorations.push(\"line-through\");\n if (decorations.length)\n styles[\"text-decoration\"] = decorations.join(\" \");\n }\n return styles;\n}\nfunction stringifyTokenStyle(token) {\n if (typeof token === \"string\")\n return token;\n return Object.entries(token).map(([key, value]) => `${key}:${value}`).join(\";\");\n}\n\nconst _grammarStateMap = /* @__PURE__ */ new WeakMap();\nfunction setLastGrammarStateToMap(keys, state) {\n _grammarStateMap.set(keys, state);\n}\nfunction getLastGrammarStateFromMap(keys) {\n return _grammarStateMap.get(keys);\n}\nclass GrammarState {\n /**\n * Theme to Stack mapping\n */\n _stacks = {};\n lang;\n get themes() {\n return Object.keys(this._stacks);\n }\n get theme() {\n return this.themes[0];\n }\n get _stack() {\n return this._stacks[this.theme];\n }\n /**\n * Static method to create a initial grammar state.\n */\n static initial(lang, themes) {\n return new GrammarState(\n Object.fromEntries(toArray(themes).map((theme) => [theme, INITIAL])),\n lang\n );\n }\n constructor(...args) {\n if (args.length === 2) {\n const [stacksMap, lang] = args;\n this.lang = lang;\n this._stacks = stacksMap;\n } else {\n const [stack, lang, theme] = args;\n this.lang = lang;\n this._stacks = { [theme]: stack };\n }\n }\n /**\n * Get the internal stack object.\n * @internal\n */\n getInternalStack(theme = this.theme) {\n return this._stacks[theme];\n }\n getScopes(theme = this.theme) {\n return getScopes(this._stacks[theme]);\n }\n toJSON() {\n return {\n lang: this.lang,\n theme: this.theme,\n themes: this.themes,\n scopes: this.getScopes()\n };\n }\n}\nfunction getScopes(stack) {\n const scopes = [];\n const visited = /* @__PURE__ */ new Set();\n function pushScope(stack2) {\n if (visited.has(stack2))\n return;\n visited.add(stack2);\n const name = stack2?.nameScopesList?.scopeName;\n if (name)\n scopes.push(name);\n if (stack2.parent)\n pushScope(stack2.parent);\n }\n pushScope(stack);\n return scopes;\n}\nfunction getGrammarStack(state, theme) {\n if (!(state instanceof GrammarState))\n throw new ShikiError$1(\"Invalid grammar state\");\n return state.getInternalStack(theme);\n}\n\nfunction transformerDecorations() {\n const map = /* @__PURE__ */ new WeakMap();\n function getContext(shiki) {\n if (!map.has(shiki.meta)) {\n let normalizePosition = function(p) {\n if (typeof p === \"number\") {\n if (p < 0 || p > shiki.source.length)\n throw new ShikiError$1(`Invalid decoration offset: ${p}. Code length: ${shiki.source.length}`);\n return {\n ...converter.indexToPos(p),\n offset: p\n };\n } else {\n const line = converter.lines[p.line];\n if (line === void 0)\n throw new ShikiError$1(`Invalid decoration position ${JSON.stringify(p)}. Lines length: ${converter.lines.length}`);\n let character = p.character;\n if (character < 0)\n character = line.length + character;\n if (character < 0 || character > line.length)\n throw new ShikiError$1(`Invalid decoration position ${JSON.stringify(p)}. Line ${p.line} length: ${line.length}`);\n return {\n ...p,\n character,\n offset: converter.posToIndex(p.line, character)\n };\n }\n };\n const converter = createPositionConverter(shiki.source);\n const decorations = (shiki.options.decorations || []).map((d) => ({\n ...d,\n start: normalizePosition(d.start),\n end: normalizePosition(d.end)\n }));\n verifyIntersections(decorations);\n map.set(shiki.meta, {\n decorations,\n converter,\n source: shiki.source\n });\n }\n return map.get(shiki.meta);\n }\n return {\n name: \"shiki:decorations\",\n tokens(tokens) {\n if (!this.options.decorations?.length)\n return;\n const ctx = getContext(this);\n const breakpoints = ctx.decorations.flatMap((d) => [d.start.offset, d.end.offset]);\n const splitted = splitTokens(tokens, breakpoints);\n return splitted;\n },\n code(codeEl) {\n if (!this.options.decorations?.length)\n return;\n const ctx = getContext(this);\n const lines = Array.from(codeEl.children).filter((i) => i.type === \"element\" && i.tagName === \"span\");\n if (lines.length !== ctx.converter.lines.length)\n throw new ShikiError$1(`Number of lines in code element (${lines.length}) does not match the number of lines in the source (${ctx.converter.lines.length}). Failed to apply decorations.`);\n function applyLineSection(line, start, end, decoration) {\n const lineEl = lines[line];\n let text = \"\";\n let startIndex = -1;\n let endIndex = -1;\n if (start === 0)\n startIndex = 0;\n if (end === 0)\n endIndex = 0;\n if (end === Number.POSITIVE_INFINITY)\n endIndex = lineEl.children.length;\n if (startIndex === -1 || endIndex === -1) {\n for (let i = 0; i < lineEl.children.length; i++) {\n text += stringify(lineEl.children[i]);\n if (startIndex === -1 && text.length === start)\n startIndex = i + 1;\n if (endIndex === -1 && text.length === end)\n endIndex = i + 1;\n }\n }\n if (startIndex === -1)\n throw new ShikiError$1(`Failed to find start index for decoration ${JSON.stringify(decoration.start)}`);\n if (endIndex === -1)\n throw new ShikiError$1(`Failed to find end index for decoration ${JSON.stringify(decoration.end)}`);\n const children = lineEl.children.slice(startIndex, endIndex);\n if (!decoration.alwaysWrap && children.length === lineEl.children.length) {\n applyDecoration(lineEl, decoration, \"line\");\n } else if (!decoration.alwaysWrap && children.length === 1 && children[0].type === \"element\") {\n applyDecoration(children[0], decoration, \"token\");\n } else {\n const wrapper = {\n type: \"element\",\n tagName: \"span\",\n properties: {},\n children\n };\n applyDecoration(wrapper, decoration, \"wrapper\");\n lineEl.children.splice(startIndex, children.length, wrapper);\n }\n }\n function applyLine(line, decoration) {\n lines[line] = applyDecoration(lines[line], decoration, \"line\");\n }\n function applyDecoration(el, decoration, type) {\n const properties = decoration.properties || {};\n const transform = decoration.transform || ((i) => i);\n el.tagName = decoration.tagName || \"span\";\n el.properties = {\n ...el.properties,\n ...properties,\n class: el.properties.class\n };\n if (decoration.properties?.class)\n addClassToHast(el, decoration.properties.class);\n el = transform(el, type) || el;\n return el;\n }\n const lineApplies = [];\n const sorted = ctx.decorations.sort((a, b) => b.start.offset - a.start.offset || a.end.offset - b.end.offset);\n for (const decoration of sorted) {\n const { start, end } = decoration;\n if (start.line === end.line) {\n applyLineSection(start.line, start.character, end.character, decoration);\n } else if (start.line < end.line) {\n applyLineSection(start.line, start.character, Number.POSITIVE_INFINITY, decoration);\n for (let i = start.line + 1; i < end.line; i++)\n lineApplies.unshift(() => applyLine(i, decoration));\n applyLineSection(end.line, 0, end.character, decoration);\n }\n }\n lineApplies.forEach((i) => i());\n }\n };\n}\nfunction verifyIntersections(items) {\n for (let i = 0; i < items.length; i++) {\n const foo = items[i];\n if (foo.start.offset > foo.end.offset)\n throw new ShikiError$1(`Invalid decoration range: ${JSON.stringify(foo.start)} - ${JSON.stringify(foo.end)}`);\n for (let j = i + 1; j < items.length; j++) {\n const bar = items[j];\n const isFooHasBarStart = foo.start.offset <= bar.start.offset && bar.start.offset < foo.end.offset;\n const isFooHasBarEnd = foo.start.offset < bar.end.offset && bar.end.offset <= foo.end.offset;\n const isBarHasFooStart = bar.start.offset <= foo.start.offset && foo.start.offset < bar.end.offset;\n const isBarHasFooEnd = bar.start.offset < foo.end.offset && foo.end.offset <= bar.end.offset;\n if (isFooHasBarStart || isFooHasBarEnd || isBarHasFooStart || isBarHasFooEnd) {\n if (isFooHasBarStart && isFooHasBarEnd)\n continue;\n if (isBarHasFooStart && isBarHasFooEnd)\n continue;\n if (isBarHasFooStart && foo.start.offset === foo.end.offset)\n continue;\n if (isFooHasBarEnd && bar.start.offset === bar.end.offset)\n continue;\n throw new ShikiError$1(`Decorations ${JSON.stringify(foo.start)} and ${JSON.stringify(bar.start)} intersect.`);\n }\n }\n }\n}\nfunction stringify(el) {\n if (el.type === \"text\")\n return el.value;\n if (el.type === \"element\")\n return el.children.map(stringify).join(\"\");\n return \"\";\n}\n\nconst builtInTransformers = [\n /* @__PURE__ */ transformerDecorations()\n];\nfunction getTransformers(options) {\n const transformers = sortTransformersByEnforcement(options.transformers || []);\n return [\n ...transformers.pre,\n ...transformers.normal,\n ...transformers.post,\n ...builtInTransformers\n ];\n}\nfunction sortTransformersByEnforcement(transformers) {\n const pre = [];\n const post = [];\n const normal = [];\n for (const transformer of transformers) {\n switch (transformer.enforce) {\n case \"pre\":\n pre.push(transformer);\n break;\n case \"post\":\n post.push(transformer);\n break;\n default:\n normal.push(transformer);\n }\n }\n return { pre, post, normal };\n}\n\n// src/colors.ts\nvar namedColors = [\n \"black\",\n \"red\",\n \"green\",\n \"yellow\",\n \"blue\",\n \"magenta\",\n \"cyan\",\n \"white\",\n \"brightBlack\",\n \"brightRed\",\n \"brightGreen\",\n \"brightYellow\",\n \"brightBlue\",\n \"brightMagenta\",\n \"brightCyan\",\n \"brightWhite\"\n];\n\n// src/decorations.ts\nvar decorations = {\n 1: \"bold\",\n 2: \"dim\",\n 3: \"italic\",\n 4: \"underline\",\n 7: \"reverse\",\n 8: \"hidden\",\n 9: \"strikethrough\"\n};\n\n// src/parser.ts\nfunction findSequence(value, position) {\n const nextEscape = value.indexOf(\"\\x1B\", position);\n if (nextEscape !== -1) {\n if (value[nextEscape + 1] === \"[\") {\n const nextClose = value.indexOf(\"m\", nextEscape);\n if (nextClose !== -1) {\n return {\n sequence: value.substring(nextEscape + 2, nextClose).split(\";\"),\n startPosition: nextEscape,\n position: nextClose + 1\n };\n }\n }\n }\n return {\n position: value.length\n };\n}\nfunction parseColor(sequence) {\n const colorMode = sequence.shift();\n if (colorMode === \"2\") {\n const rgb = sequence.splice(0, 3).map((x) => Number.parseInt(x));\n if (rgb.length !== 3 || rgb.some((x) => Number.isNaN(x)))\n return;\n return {\n type: \"rgb\",\n rgb\n };\n } else if (colorMode === \"5\") {\n const index = sequence.shift();\n if (index) {\n return { type: \"table\", index: Number(index) };\n }\n }\n}\nfunction parseSequence(sequence) {\n const commands = [];\n while (sequence.length > 0) {\n const code = sequence.shift();\n if (!code)\n continue;\n const codeInt = Number.parseInt(code);\n if (Number.isNaN(codeInt))\n continue;\n if (codeInt === 0) {\n commands.push({ type: \"resetAll\" });\n } else if (codeInt <= 9) {\n const decoration = decorations[codeInt];\n if (decoration) {\n commands.push({\n type: \"setDecoration\",\n value: decorations[codeInt]\n });\n }\n } else if (codeInt <= 29) {\n const decoration = decorations[codeInt - 20];\n if (decoration) {\n commands.push({\n type: \"resetDecoration\",\n value: decoration\n });\n if (decoration === \"dim\") {\n commands.push({\n type: \"resetDecoration\",\n value: \"bold\"\n });\n }\n }\n } else if (codeInt <= 37) {\n commands.push({\n type: \"setForegroundColor\",\n value: { type: \"named\", name: namedColors[codeInt - 30] }\n });\n } else if (codeInt === 38) {\n const color = parseColor(sequence);\n if (color) {\n commands.push({\n type: \"setForegroundColor\",\n value: color\n });\n }\n } else if (codeInt === 39) {\n commands.push({\n type: \"resetForegroundColor\"\n });\n } else if (codeInt <= 47) {\n commands.push({\n type: \"setBackgroundColor\",\n value: { type: \"named\", name: namedColors[codeInt - 40] }\n });\n } else if (codeInt === 48) {\n const color = parseColor(sequence);\n if (color) {\n commands.push({\n type: \"setBackgroundColor\",\n value: color\n });\n }\n } else if (codeInt === 49) {\n commands.push({\n type: \"resetBackgroundColor\"\n });\n } else if (codeInt === 53) {\n commands.push({\n type: \"setDecoration\",\n value: \"overline\"\n });\n } else if (codeInt === 55) {\n commands.push({\n type: \"resetDecoration\",\n value: \"overline\"\n });\n } else if (codeInt >= 90 && codeInt <= 97) {\n commands.push({\n type: \"setForegroundColor\",\n value: { type: \"named\", name: namedColors[codeInt - 90 + 8] }\n });\n } else if (codeInt >= 100 && codeInt <= 107) {\n commands.push({\n type: \"setBackgroundColor\",\n value: { type: \"named\", name: namedColors[codeInt - 100 + 8] }\n });\n }\n }\n return commands;\n}\nfunction createAnsiSequenceParser() {\n let foreground = null;\n let background = null;\n let decorations2 = /* @__PURE__ */ new Set();\n return {\n parse(value) {\n const tokens = [];\n let position = 0;\n do {\n const findResult = findSequence(value, position);\n const text = findResult.sequence ? value.substring(position, findResult.startPosition) : value.substring(position);\n if (text.length > 0) {\n tokens.push({\n value: text,\n foreground,\n background,\n decorations: new Set(decorations2)\n });\n }\n if (findResult.sequence) {\n const commands = parseSequence(findResult.sequence);\n for (const styleToken of commands) {\n if (styleToken.type === \"resetAll\") {\n foreground = null;\n background = null;\n decorations2.clear();\n } else if (styleToken.type === \"resetForegroundColor\") {\n foreground = null;\n } else if (styleToken.type === \"resetBackgroundColor\") {\n background = null;\n } else if (styleToken.type === \"resetDecoration\") {\n decorations2.delete(styleToken.value);\n }\n }\n for (const styleToken of commands) {\n if (styleToken.type === \"setForegroundColor\") {\n foreground = styleToken.value;\n } else if (styleToken.type === \"setBackgroundColor\") {\n background = styleToken.value;\n } else if (styleToken.type === \"setDecoration\") {\n decorations2.add(styleToken.value);\n }\n }\n }\n position = findResult.position;\n } while (position < value.length);\n return tokens;\n }\n };\n}\n\n// src/palette.ts\nvar defaultNamedColorsMap = {\n black: \"#000000\",\n red: \"#bb0000\",\n green: \"#00bb00\",\n yellow: \"#bbbb00\",\n blue: \"#0000bb\",\n magenta: \"#ff00ff\",\n cyan: \"#00bbbb\",\n white: \"#eeeeee\",\n brightBlack: \"#555555\",\n brightRed: \"#ff5555\",\n brightGreen: \"#00ff00\",\n brightYellow: \"#ffff55\",\n brightBlue: \"#5555ff\",\n brightMagenta: \"#ff55ff\",\n brightCyan: \"#55ffff\",\n brightWhite: \"#ffffff\"\n};\nfunction createColorPalette(namedColorsMap = defaultNamedColorsMap) {\n function namedColor(name) {\n return namedColorsMap[name];\n }\n function rgbColor(rgb) {\n return `#${rgb.map((x) => Math.max(0, Math.min(x, 255)).toString(16).padStart(2, \"0\")).join(\"\")}`;\n }\n let colorTable;\n function getColorTable() {\n if (colorTable) {\n return colorTable;\n }\n colorTable = [];\n for (let i = 0; i < namedColors.length; i++) {\n colorTable.push(namedColor(namedColors[i]));\n }\n let levels = [0, 95, 135, 175, 215, 255];\n for (let r = 0; r < 6; r++) {\n for (let g = 0; g < 6; g++) {\n for (let b = 0; b < 6; b++) {\n colorTable.push(rgbColor([levels[r], levels[g], levels[b]]));\n }\n }\n }\n let level = 8;\n for (let i = 0; i < 24; i++, level += 10) {\n colorTable.push(rgbColor([level, level, level]));\n }\n return colorTable;\n }\n function tableColor(index) {\n return getColorTable()[index];\n }\n function value(color) {\n switch (color.type) {\n case \"named\":\n return namedColor(color.name);\n case \"rgb\":\n return rgbColor(color.rgb);\n case \"table\":\n return tableColor(color.index);\n }\n }\n return {\n value\n };\n}\n\nconst defaultAnsiColors = {\n black: \"#000000\",\n red: \"#cd3131\",\n green: \"#0DBC79\",\n yellow: \"#E5E510\",\n blue: \"#2472C8\",\n magenta: \"#BC3FBC\",\n cyan: \"#11A8CD\",\n white: \"#E5E5E5\",\n brightBlack: \"#666666\",\n brightRed: \"#F14C4C\",\n brightGreen: \"#23D18B\",\n brightYellow: \"#F5F543\",\n brightBlue: \"#3B8EEA\",\n brightMagenta: \"#D670D6\",\n brightCyan: \"#29B8DB\",\n brightWhite: \"#FFFFFF\"\n};\nfunction tokenizeAnsiWithTheme(theme, fileContents, options) {\n const colorReplacements = resolveColorReplacements(theme, options);\n const lines = splitLines(fileContents);\n const ansiPalette = Object.fromEntries(\n namedColors.map((name) => {\n const key = `terminal.ansi${name[0].toUpperCase()}${name.substring(1)}`;\n const themeColor = theme.colors?.[key];\n return [name, themeColor || defaultAnsiColors[name]];\n })\n );\n const colorPalette = createColorPalette(ansiPalette);\n const parser = createAnsiSequenceParser();\n return lines.map(\n (line) => parser.parse(line[0]).map((token) => {\n let color;\n let bgColor;\n if (token.decorations.has(\"reverse\")) {\n color = token.background ? colorPalette.value(token.background) : theme.bg;\n bgColor = token.foreground ? colorPalette.value(token.foreground) : theme.fg;\n } else {\n color = token.foreground ? colorPalette.value(token.foreground) : theme.fg;\n bgColor = token.background ? colorPalette.value(token.background) : void 0;\n }\n color = applyColorReplacements(color, colorReplacements);\n bgColor = applyColorReplacements(bgColor, colorReplacements);\n if (token.decorations.has(\"dim\"))\n color = dimColor(color);\n let fontStyle = FontStyle.None;\n if (token.decorations.has(\"bold\"))\n fontStyle |= FontStyle.Bold;\n if (token.decorations.has(\"italic\"))\n fontStyle |= FontStyle.Italic;\n if (token.decorations.has(\"underline\"))\n fontStyle |= FontStyle.Underline;\n if (token.decorations.has(\"strikethrough\"))\n fontStyle |= FontStyle.Strikethrough;\n return {\n content: token.value,\n offset: line[1],\n // TODO: more accurate offset? might need to fork ansi-sequence-parser\n color,\n bgColor,\n fontStyle\n };\n })\n );\n}\nfunction dimColor(color) {\n const hexMatch = color.match(/#([0-9a-f]{3,8})/i);\n if (hexMatch) {\n const hex = hexMatch[1];\n if (hex.length === 8) {\n const alpha = Math.round(Number.parseInt(hex.slice(6, 8), 16) / 2).toString(16).padStart(2, \"0\");\n return `#${hex.slice(0, 6)}${alpha}`;\n } else if (hex.length === 6) {\n return `#${hex}80`;\n } else if (hex.length === 4) {\n const r = hex[0];\n const g = hex[1];\n const b = hex[2];\n const a = hex[3];\n const alpha = Math.round(Number.parseInt(`${a}${a}`, 16) / 2).toString(16).padStart(2, \"0\");\n return `#${r}${r}${g}${g}${b}${b}${alpha}`;\n } else if (hex.length === 3) {\n const r = hex[0];\n const g = hex[1];\n const b = hex[2];\n return `#${r}${r}${g}${g}${b}${b}80`;\n }\n }\n const cssVarMatch = color.match(/var\\((--[\\w-]+-ansi-[\\w-]+)\\)/);\n if (cssVarMatch)\n return `var(${cssVarMatch[1]}-dim)`;\n return color;\n}\n\nfunction codeToTokensBase(internal, code, options = {}) {\n const {\n lang = \"text\",\n theme: themeName = internal.getLoadedThemes()[0]\n } = options;\n if (isPlainLang(lang) || isNoneTheme(themeName))\n return splitLines(code).map((line) => [{ content: line[0], offset: line[1] }]);\n const { theme, colorMap } = internal.setTheme(themeName);\n if (lang === \"ansi\")\n return tokenizeAnsiWithTheme(theme, code, options);\n const _grammar = internal.getLanguage(lang);\n if (options.grammarState) {\n if (options.grammarState.lang !== _grammar.name) {\n throw new ShikiError$1(`Grammar state language \"${options.grammarState.lang}\" does not match highlight language \"${_grammar.name}\"`);\n }\n if (!options.grammarState.themes.includes(theme.name)) {\n throw new ShikiError$1(`Grammar state themes \"${options.grammarState.themes}\" do not contain highlight theme \"${theme.name}\"`);\n }\n }\n return tokenizeWithTheme(code, _grammar, theme, colorMap, options);\n}\nfunction getLastGrammarState(...args) {\n if (args.length === 2) {\n return getLastGrammarStateFromMap(args[1]);\n }\n const [internal, code, options = {}] = args;\n const {\n lang = \"text\",\n theme: themeName = internal.getLoadedThemes()[0]\n } = options;\n if (isPlainLang(lang) || isNoneTheme(themeName))\n throw new ShikiError$1(\"Plain language does not have grammar state\");\n if (lang === \"ansi\")\n throw new ShikiError$1(\"ANSI language does not have grammar state\");\n const { theme, colorMap } = internal.setTheme(themeName);\n const _grammar = internal.getLanguage(lang);\n return new GrammarState(\n _tokenizeWithTheme(code, _grammar, theme, colorMap, options).stateStack,\n _grammar.name,\n theme.name\n );\n}\nfunction tokenizeWithTheme(code, grammar, theme, colorMap, options) {\n const result = _tokenizeWithTheme(code, grammar, theme, colorMap, options);\n const grammarState = new GrammarState(\n _tokenizeWithTheme(code, grammar, theme, colorMap, options).stateStack,\n grammar.name,\n theme.name\n );\n setLastGrammarStateToMap(result.tokens, grammarState);\n return result.tokens;\n}\nfunction _tokenizeWithTheme(code, grammar, theme, colorMap, options) {\n const colorReplacements = resolveColorReplacements(theme, options);\n const {\n tokenizeMaxLineLength = 0,\n tokenizeTimeLimit = 500\n } = options;\n const lines = splitLines(code);\n let stateStack = options.grammarState ? getGrammarStack(options.grammarState, theme.name) ?? INITIAL : options.grammarContextCode != null ? _tokenizeWithTheme(\n options.grammarContextCode,\n grammar,\n theme,\n colorMap,\n {\n ...options,\n grammarState: void 0,\n grammarContextCode: void 0\n }\n ).stateStack : INITIAL;\n let actual = [];\n const final = [];\n for (let i = 0, len = lines.length; i < len; i++) {\n const [line, lineOffset] = lines[i];\n if (line === \"\") {\n actual = [];\n final.push([]);\n continue;\n }\n if (tokenizeMaxLineLength > 0 && line.length >= tokenizeMaxLineLength) {\n actual = [];\n final.push([{\n content: line,\n offset: lineOffset,\n color: \"\",\n fontStyle: 0\n }]);\n continue;\n }\n let resultWithScopes;\n let tokensWithScopes;\n let tokensWithScopesIndex;\n if (options.includeExplanation) {\n resultWithScopes = grammar.tokenizeLine(line, stateStack, tokenizeTimeLimit);\n tokensWithScopes = resultWithScopes.tokens;\n tokensWithScopesIndex = 0;\n }\n const result = grammar.tokenizeLine2(line, stateStack, tokenizeTimeLimit);\n const tokensLength = result.tokens.length / 2;\n for (let j = 0; j < tokensLength; j++) {\n const startIndex = result.tokens[2 * j];\n const nextStartIndex = j + 1 < tokensLength ? result.tokens[2 * j + 2] : line.length;\n if (startIndex === nextStartIndex)\n continue;\n const metadata = result.tokens[2 * j + 1];\n const color = applyColorReplacements(\n colorMap[EncodedTokenMetadata.getForeground(metadata)],\n colorReplacements\n );\n const fontStyle = EncodedTokenMetadata.getFontStyle(metadata);\n const token = {\n content: line.substring(startIndex, nextStartIndex),\n offset: lineOffset + startIndex,\n color,\n fontStyle\n };\n if (options.includeExplanation) {\n const themeSettingsSelectors = [];\n if (options.includeExplanation !== \"scopeName\") {\n for (const setting of theme.settings) {\n let selectors;\n switch (typeof setting.scope) {\n case \"string\":\n selectors = setting.scope.split(/,/).map((scope) => scope.trim());\n break;\n case \"object\":\n selectors = setting.scope;\n break;\n default:\n continue;\n }\n themeSettingsSelectors.push({\n settings: setting,\n selectors: selectors.map((selector) => selector.split(/ /))\n });\n }\n }\n token.explanation = [];\n let offset = 0;\n while (startIndex + offset < nextStartIndex) {\n const tokenWithScopes = tokensWithScopes[tokensWithScopesIndex];\n const tokenWithScopesText = line.substring(\n tokenWithScopes.startIndex,\n tokenWithScopes.endIndex\n );\n offset += tokenWithScopesText.length;\n token.explanation.push({\n content: tokenWithScopesText,\n scopes: options.includeExplanation === \"scopeName\" ? explainThemeScopesNameOnly(\n tokenWithScopes.scopes\n ) : explainThemeScopesFull(\n themeSettingsSelectors,\n tokenWithScopes.scopes\n )\n });\n tokensWithScopesIndex += 1;\n }\n }\n actual.push(token);\n }\n final.push(actual);\n actual = [];\n stateStack = result.ruleStack;\n }\n return {\n tokens: final,\n stateStack\n };\n}\nfunction explainThemeScopesNameOnly(scopes) {\n return scopes.map((scope) => ({ scopeName: scope }));\n}\nfunction explainThemeScopesFull(themeSelectors, scopes) {\n const result = [];\n for (let i = 0, len = scopes.length; i < len; i++) {\n const scope = scopes[i];\n result[i] = {\n scopeName: scope,\n themeMatches: explainThemeScope(themeSelectors, scope, scopes.slice(0, i))\n };\n }\n return result;\n}\nfunction matchesOne(selector, scope) {\n return selector === scope || scope.substring(0, selector.length) === selector && scope[selector.length] === \".\";\n}\nfunction matches(selectors, scope, parentScopes) {\n if (!matchesOne(selectors[selectors.length - 1], scope))\n return false;\n let selectorParentIndex = selectors.length - 2;\n let parentIndex = parentScopes.length - 1;\n while (selectorParentIndex >= 0 && parentIndex >= 0) {\n if (matchesOne(selectors[selectorParentIndex], parentScopes[parentIndex]))\n selectorParentIndex -= 1;\n parentIndex -= 1;\n }\n if (selectorParentIndex === -1)\n return true;\n return false;\n}\nfunction explainThemeScope(themeSettingsSelectors, scope, parentScopes) {\n const result = [];\n for (const { selectors, settings } of themeSettingsSelectors) {\n for (const selectorPieces of selectors) {\n if (matches(selectorPieces, scope, parentScopes)) {\n result.push(settings);\n break;\n }\n }\n }\n return result;\n}\n\nfunction codeToTokensWithThemes(internal, code, options) {\n const themes = Object.entries(options.themes).filter((i) => i[1]).map((i) => ({ color: i[0], theme: i[1] }));\n const themedTokens = themes.map((t) => {\n const tokens2 = codeToTokensBase(internal, code, {\n ...options,\n theme: t.theme\n });\n const state = getLastGrammarStateFromMap(tokens2);\n const theme = typeof t.theme === \"string\" ? t.theme : t.theme.name;\n return {\n tokens: tokens2,\n state,\n theme\n };\n });\n const tokens = syncThemesTokenization(\n ...themedTokens.map((i) => i.tokens)\n );\n const mergedTokens = tokens[0].map(\n (line, lineIdx) => line.map((_token, tokenIdx) => {\n const mergedToken = {\n content: _token.content,\n variants: {},\n offset: _token.offset\n };\n if (\"includeExplanation\" in options && options.includeExplanation) {\n mergedToken.explanation = _token.explanation;\n }\n tokens.forEach((t, themeIdx) => {\n const {\n content: _,\n explanation: __,\n offset: ___,\n ...styles\n } = t[lineIdx][tokenIdx];\n mergedToken.variants[themes[themeIdx].color] = styles;\n });\n return mergedToken;\n })\n );\n const mergedGrammarState = themedTokens[0].state ? new GrammarState(\n Object.fromEntries(themedTokens.map((s) => [s.theme, s.state?.getInternalStack(s.theme)])),\n themedTokens[0].state.lang\n ) : void 0;\n if (mergedGrammarState)\n setLastGrammarStateToMap(mergedTokens, mergedGrammarState);\n return mergedTokens;\n}\nfunction syncThemesTokenization(...themes) {\n const outThemes = themes.map(() => []);\n const count = themes.length;\n for (let i = 0; i < themes[0].length; i++) {\n const lines = themes.map((t) => t[i]);\n const outLines = outThemes.map(() => []);\n outThemes.forEach((t, i2) => t.push(outLines[i2]));\n const indexes = lines.map(() => 0);\n const current = lines.map((l) => l[0]);\n while (current.every((t) => t)) {\n const minLength = Math.min(...current.map((t) => t.content.length));\n for (let n = 0; n < count; n++) {\n const token = current[n];\n if (token.content.length === minLength) {\n outLines[n].push(token);\n indexes[n] += 1;\n current[n] = lines[n][indexes[n]];\n } else {\n outLines[n].push({\n ...token,\n content: token.content.slice(0, minLength)\n });\n current[n] = {\n ...token,\n content: token.content.slice(minLength),\n offset: token.offset + minLength\n };\n }\n }\n }\n }\n return outThemes;\n}\n\nfunction codeToTokens(internal, code, options) {\n let bg;\n let fg;\n let tokens;\n let themeName;\n let rootStyle;\n let grammarState;\n if (\"themes\" in options) {\n const {\n defaultColor = \"light\",\n cssVariablePrefix = \"--shiki-\",\n colorsRendering = \"css-vars\"\n } = options;\n const themes = Object.entries(options.themes).filter((i) => i[1]).map((i) => ({ color: i[0], theme: i[1] })).sort((a, b) => a.color === defaultColor ? -1 : b.color === defaultColor ? 1 : 0);\n if (themes.length === 0)\n throw new ShikiError$1(\"`themes` option must not be empty\");\n const themeTokens = codeToTokensWithThemes(\n internal,\n code,\n options\n );\n grammarState = getLastGrammarStateFromMap(themeTokens);\n if (defaultColor && DEFAULT_COLOR_LIGHT_DARK !== defaultColor && !themes.find((t) => t.color === defaultColor))\n throw new ShikiError$1(`\\`themes\\` option must contain the defaultColor key \\`${defaultColor}\\``);\n const themeRegs = themes.map((t) => internal.getTheme(t.theme));\n const themesOrder = themes.map((t) => t.color);\n tokens = themeTokens.map((line) => line.map((token) => flatTokenVariants(token, themesOrder, cssVariablePrefix, defaultColor, colorsRendering)));\n if (grammarState)\n setLastGrammarStateToMap(tokens, grammarState);\n const themeColorReplacements = themes.map((t) => resolveColorReplacements(t.theme, options));\n fg = mapThemeColors(themes, themeRegs, themeColorReplacements, cssVariablePrefix, defaultColor, \"fg\", colorsRendering);\n bg = mapThemeColors(themes, themeRegs, themeColorReplacements, cssVariablePrefix, defaultColor, \"bg\", colorsRendering);\n themeName = `shiki-themes ${themeRegs.map((t) => t.name).join(\" \")}`;\n rootStyle = defaultColor ? void 0 : [fg, bg].join(\";\");\n } else if (\"theme\" in options) {\n const colorReplacements = resolveColorReplacements(options.theme, options);\n tokens = codeToTokensBase(\n internal,\n code,\n options\n );\n const _theme = internal.getTheme(options.theme);\n bg = applyColorReplacements(_theme.bg, colorReplacements);\n fg = applyColorReplacements(_theme.fg, colorReplacements);\n themeName = _theme.name;\n grammarState = getLastGrammarStateFromMap(tokens);\n } else {\n throw new ShikiError$1(\"Invalid options, either `theme` or `themes` must be provided\");\n }\n return {\n tokens,\n fg,\n bg,\n themeName,\n rootStyle,\n grammarState\n };\n}\nfunction mapThemeColors(themes, themeRegs, themeColorReplacements, cssVariablePrefix, defaultColor, property, colorsRendering) {\n return themes.map((t, idx) => {\n const value = applyColorReplacements(themeRegs[idx][property], themeColorReplacements[idx]) || \"inherit\";\n const cssVar = `${cssVariablePrefix + t.color}${property === \"bg\" ? \"-bg\" : \"\"}:${value}`;\n if (idx === 0 && defaultColor) {\n if (defaultColor === DEFAULT_COLOR_LIGHT_DARK && themes.length > 1) {\n const lightIndex = themes.findIndex((t2) => t2.color === \"light\");\n const darkIndex = themes.findIndex((t2) => t2.color === \"dark\");\n if (lightIndex === -1 || darkIndex === -1)\n throw new ShikiError$1('When using `defaultColor: \"light-dark()\"`, you must provide both `light` and `dark` themes');\n const lightValue = applyColorReplacements(themeRegs[lightIndex][property], themeColorReplacements[lightIndex]) || \"inherit\";\n const darkValue = applyColorReplacements(themeRegs[darkIndex][property], themeColorReplacements[darkIndex]) || \"inherit\";\n return `light-dark(${lightValue}, ${darkValue});${cssVar}`;\n }\n return value;\n }\n if (colorsRendering === \"css-vars\") {\n return cssVar;\n }\n return null;\n }).filter((i) => !!i).join(\";\");\n}\n\nfunction codeToHast(internal, code, options, transformerContext = {\n meta: {},\n options,\n codeToHast: (_code, _options) => codeToHast(internal, _code, _options),\n codeToTokens: (_code, _options) => codeToTokens(internal, _code, _options)\n}) {\n let input = code;\n for (const transformer of getTransformers(options))\n input = transformer.preprocess?.call(transformerContext, input, options) || input;\n let {\n tokens,\n fg,\n bg,\n themeName,\n rootStyle,\n grammarState\n } = codeToTokens(internal, input, options);\n const {\n mergeWhitespaces = true,\n mergeSameStyleTokens = false\n } = options;\n if (mergeWhitespaces === true)\n tokens = mergeWhitespaceTokens(tokens);\n else if (mergeWhitespaces === \"never\")\n tokens = splitWhitespaceTokens(tokens);\n if (mergeSameStyleTokens) {\n tokens = mergeAdjacentStyledTokens(tokens);\n }\n const contextSource = {\n ...transformerContext,\n get source() {\n return input;\n }\n };\n for (const transformer of getTransformers(options))\n tokens = transformer.tokens?.call(contextSource, tokens) || tokens;\n return tokensToHast(\n tokens,\n {\n ...options,\n fg,\n bg,\n themeName,\n rootStyle\n },\n contextSource,\n grammarState\n );\n}\nfunction tokensToHast(tokens, options, transformerContext, grammarState = getLastGrammarStateFromMap(tokens)) {\n const transformers = getTransformers(options);\n const lines = [];\n const root = {\n type: \"root\",\n children: []\n };\n const {\n structure = \"classic\",\n tabindex = \"0\"\n } = options;\n let preNode = {\n type: \"element\",\n tagName: \"pre\",\n properties: {\n class: `shiki ${options.themeName || \"\"}`,\n style: options.rootStyle || `background-color:${options.bg};color:${options.fg}`,\n ...tabindex !== false && tabindex != null ? {\n tabindex: tabindex.toString()\n } : {},\n ...Object.fromEntries(\n Array.from(\n Object.entries(options.meta || {})\n ).filter(([key]) => !key.startsWith(\"_\"))\n )\n },\n children: []\n };\n let codeNode = {\n type: \"element\",\n tagName: \"code\",\n properties: {},\n children: lines\n };\n const lineNodes = [];\n const context = {\n ...transformerContext,\n structure,\n addClassToHast,\n get source() {\n return transformerContext.source;\n },\n get tokens() {\n return tokens;\n },\n get options() {\n return options;\n },\n get root() {\n return root;\n },\n get pre() {\n return preNode;\n },\n get code() {\n return codeNode;\n },\n get lines() {\n return lineNodes;\n }\n };\n tokens.forEach((line, idx) => {\n if (idx) {\n if (structure === \"inline\")\n root.children.push({ type: \"element\", tagName: \"br\", properties: {}, children: [] });\n else if (structure === \"classic\")\n lines.push({ type: \"text\", value: \"\\n\" });\n }\n let lineNode = {\n type: \"element\",\n tagName: \"span\",\n properties: { class: \"line\" },\n children: []\n };\n let col = 0;\n for (const token of line) {\n let tokenNode = {\n type: \"element\",\n tagName: \"span\",\n properties: {\n ...token.htmlAttrs\n },\n children: [{ type: \"text\", value: token.content }]\n };\n const style = stringifyTokenStyle(token.htmlStyle || getTokenStyleObject(token));\n if (style)\n tokenNode.properties.style = style;\n for (const transformer of transformers)\n tokenNode = transformer?.span?.call(context, tokenNode, idx + 1, col, lineNode, token) || tokenNode;\n if (structure === \"inline\")\n root.children.push(tokenNode);\n else if (structure === \"classic\")\n lineNode.children.push(tokenNode);\n col += token.content.length;\n }\n if (structure === \"classic\") {\n for (const transformer of transformers)\n lineNode = transformer?.line?.call(context, lineNode, idx + 1) || lineNode;\n lineNodes.push(lineNode);\n lines.push(lineNode);\n } else if (structure === \"inline\") {\n lineNodes.push(lineNode);\n }\n });\n if (structure === \"classic\") {\n for (const transformer of transformers)\n codeNode = transformer?.code?.call(context, codeNode) || codeNode;\n preNode.children.push(codeNode);\n for (const transformer of transformers)\n preNode = transformer?.pre?.call(context, preNode) || preNode;\n root.children.push(preNode);\n } else if (structure === \"inline\") {\n const syntheticLines = [];\n let currentLine = {\n type: \"element\",\n tagName: \"span\",\n properties: { class: \"line\" },\n children: []\n };\n for (const child of root.children) {\n if (child.type === \"element\" && child.tagName === \"br\") {\n syntheticLines.push(currentLine);\n currentLine = {\n type: \"element\",\n tagName: \"span\",\n properties: { class: \"line\" },\n children: []\n };\n } else if (child.type === \"element\" || child.type === \"text\") {\n currentLine.children.push(child);\n }\n }\n syntheticLines.push(currentLine);\n const syntheticCode = {\n type: \"element\",\n tagName: \"code\",\n properties: {},\n children: syntheticLines\n };\n let transformedCode = syntheticCode;\n for (const transformer of transformers)\n transformedCode = transformer?.code?.call(context, transformedCode) || transformedCode;\n root.children = [];\n for (let i = 0; i < transformedCode.children.length; i++) {\n if (i > 0)\n root.children.push({ type: \"element\", tagName: \"br\", properties: {}, children: [] });\n const line = transformedCode.children[i];\n if (line.type === \"element\")\n root.children.push(...line.children);\n }\n }\n let result = root;\n for (const transformer of transformers)\n result = transformer?.root?.call(context, result) || result;\n if (grammarState)\n setLastGrammarStateToMap(result, grammarState);\n return result;\n}\nfunction mergeWhitespaceTokens(tokens) {\n return tokens.map((line) => {\n const newLine = [];\n let carryOnContent = \"\";\n let firstOffset = 0;\n line.forEach((token, idx) => {\n const isDecorated = token.fontStyle && (token.fontStyle & FontStyle.Underline || token.fontStyle & FontStyle.Strikethrough);\n const couldMerge = !isDecorated;\n if (couldMerge && token.content.match(/^\\s+$/) && line[idx + 1]) {\n if (!firstOffset)\n firstOffset = token.offset;\n carryOnContent += token.content;\n } else {\n if (carryOnContent) {\n if (couldMerge) {\n newLine.push({\n ...token,\n offset: firstOffset,\n content: carryOnContent + token.content\n });\n } else {\n newLine.push(\n {\n content: carryOnContent,\n offset: firstOffset\n },\n token\n );\n }\n firstOffset = 0;\n carryOnContent = \"\";\n } else {\n newLine.push(token);\n }\n }\n });\n return newLine;\n });\n}\nfunction splitWhitespaceTokens(tokens) {\n return tokens.map((line) => {\n return line.flatMap((token) => {\n if (token.content.match(/^\\s+$/))\n return token;\n const match = token.content.match(/^(\\s*)(.*?)(\\s*)$/);\n if (!match)\n return token;\n const [, leading, content, trailing] = match;\n if (!leading && !trailing)\n return token;\n const expanded = [{\n ...token,\n offset: token.offset + leading.length,\n content\n }];\n if (leading) {\n expanded.unshift({\n content: leading,\n offset: token.offset\n });\n }\n if (trailing) {\n expanded.push({\n content: trailing,\n offset: token.offset + leading.length + content.length\n });\n }\n return expanded;\n });\n });\n}\nfunction mergeAdjacentStyledTokens(tokens) {\n return tokens.map((line) => {\n const newLine = [];\n for (const token of line) {\n if (newLine.length === 0) {\n newLine.push({ ...token });\n continue;\n }\n const prevToken = newLine[newLine.length - 1];\n const prevStyle = stringifyTokenStyle(prevToken.htmlStyle || getTokenStyleObject(prevToken));\n const currentStyle = stringifyTokenStyle(token.htmlStyle || getTokenStyleObject(token));\n const isPrevDecorated = prevToken.fontStyle && (prevToken.fontStyle & FontStyle.Underline || prevToken.fontStyle & FontStyle.Strikethrough);\n const isDecorated = token.fontStyle && (token.fontStyle & FontStyle.Underline || token.fontStyle & FontStyle.Strikethrough);\n if (!isPrevDecorated && !isDecorated && prevStyle === currentStyle) {\n prevToken.content += token.content;\n } else {\n newLine.push({ ...token });\n }\n }\n return newLine;\n });\n}\n\nconst hastToHtml = toHtml;\nfunction codeToHtml(internal, code, options) {\n const context = {\n meta: {},\n options,\n codeToHast: (_code, _options) => codeToHast(internal, _code, _options),\n codeToTokens: (_code, _options) => codeToTokens(internal, _code, _options)\n };\n let result = hastToHtml(codeToHast(internal, code, options, context));\n for (const transformer of getTransformers(options))\n result = transformer.postprocess?.call(context, result, options) || result;\n return result;\n}\n\nconst VSCODE_FALLBACK_EDITOR_FG = { light: \"#333333\", dark: \"#bbbbbb\" };\nconst VSCODE_FALLBACK_EDITOR_BG = { light: \"#fffffe\", dark: \"#1e1e1e\" };\nconst RESOLVED_KEY = \"__shiki_resolved\";\nfunction normalizeTheme(rawTheme) {\n if (rawTheme?.[RESOLVED_KEY])\n return rawTheme;\n const theme = {\n ...rawTheme\n };\n if (theme.tokenColors && !theme.settings) {\n theme.settings = theme.tokenColors;\n delete theme.tokenColors;\n }\n theme.type ||= \"dark\";\n theme.colorReplacements = { ...theme.colorReplacements };\n theme.settings ||= [];\n let { bg, fg } = theme;\n if (!bg || !fg) {\n const globalSetting = theme.settings ? theme.settings.find((s) => !s.name && !s.scope) : void 0;\n if (globalSetting?.settings?.foreground)\n fg = globalSetting.settings.foreground;\n if (globalSetting?.settings?.background)\n bg = globalSetting.settings.background;\n if (!fg && theme?.colors?.[\"editor.foreground\"])\n fg = theme.colors[\"editor.foreground\"];\n if (!bg && theme?.colors?.[\"editor.background\"])\n bg = theme.colors[\"editor.background\"];\n if (!fg)\n fg = theme.type === \"light\" ? VSCODE_FALLBACK_EDITOR_FG.light : VSCODE_FALLBACK_EDITOR_FG.dark;\n if (!bg)\n bg = theme.type === \"light\" ? VSCODE_FALLBACK_EDITOR_BG.light : VSCODE_FALLBACK_EDITOR_BG.dark;\n theme.fg = fg;\n theme.bg = bg;\n }\n if (!(theme.settings[0] && theme.settings[0].settings && !theme.settings[0].scope)) {\n theme.settings.unshift({\n settings: {\n foreground: theme.fg,\n background: theme.bg\n }\n });\n }\n let replacementCount = 0;\n const replacementMap = /* @__PURE__ */ new Map();\n function getReplacementColor(value) {\n if (replacementMap.has(value))\n return replacementMap.get(value);\n replacementCount += 1;\n const hex = `#${replacementCount.toString(16).padStart(8, \"0\").toLowerCase()}`;\n if (theme.colorReplacements?.[`#${hex}`])\n return getReplacementColor(value);\n replacementMap.set(value, hex);\n return hex;\n }\n theme.settings = theme.settings.map((setting) => {\n const replaceFg = setting.settings?.foreground && !setting.settings.foreground.startsWith(\"#\");\n const replaceBg = setting.settings?.background && !setting.settings.background.startsWith(\"#\");\n if (!replaceFg && !replaceBg)\n return setting;\n const clone = {\n ...setting,\n settings: {\n ...setting.settings\n }\n };\n if (replaceFg) {\n const replacement = getReplacementColor(setting.settings.foreground);\n theme.colorReplacements[replacement] = setting.settings.foreground;\n clone.settings.foreground = replacement;\n }\n if (replaceBg) {\n const replacement = getReplacementColor(setting.settings.background);\n theme.colorReplacements[replacement] = setting.settings.background;\n clone.settings.background = replacement;\n }\n return clone;\n });\n for (const key of Object.keys(theme.colors || {})) {\n if (key === \"editor.foreground\" || key === \"editor.background\" || key.startsWith(\"terminal.ansi\")) {\n if (!theme.colors[key]?.startsWith(\"#\")) {\n const replacement = getReplacementColor(theme.colors[key]);\n theme.colorReplacements[replacement] = theme.colors[key];\n theme.colors[key] = replacement;\n }\n }\n }\n Object.defineProperty(theme, RESOLVED_KEY, {\n enumerable: false,\n writable: false,\n value: true\n });\n return theme;\n}\n\nasync function resolveLangs(langs) {\n return Array.from(new Set((await Promise.all(\n langs.filter((l) => !isSpecialLang(l)).map(async (lang) => await normalizeGetter(lang).then((r) => Array.isArray(r) ? r : [r]))\n )).flat()));\n}\nasync function resolveThemes(themes) {\n const resolved = await Promise.all(\n themes.map(\n async (theme) => isSpecialTheme(theme) ? null : normalizeTheme(await normalizeGetter(theme))\n )\n );\n return resolved.filter((i) => !!i);\n}\n\nlet _emitDeprecation = 3;\nlet _emitError = false;\nfunction enableDeprecationWarnings(emitDeprecation = true, emitError = false) {\n _emitDeprecation = emitDeprecation;\n _emitError = emitError;\n}\nfunction warnDeprecated(message, version = 3) {\n if (!_emitDeprecation)\n return;\n if (typeof _emitDeprecation === \"number\" && version > _emitDeprecation)\n return;\n if (_emitError) {\n throw new Error(`[SHIKI DEPRECATE]: ${message}`);\n } else {\n console.trace(`[SHIKI DEPRECATE]: ${message}`);\n }\n}\n\nclass ShikiError extends Error {\n constructor(message) {\n super(message);\n this.name = \"ShikiError\";\n }\n}\n\nclass Registry extends Registry$1 {\n constructor(_resolver, _themes, _langs, _alias = {}) {\n super(_resolver);\n this._resolver = _resolver;\n this._themes = _themes;\n this._langs = _langs;\n this._alias = _alias;\n this._themes.map((t) => this.loadTheme(t));\n this.loadLanguages(this._langs);\n }\n _resolvedThemes = /* @__PURE__ */ new Map();\n _resolvedGrammars = /* @__PURE__ */ new Map();\n _langMap = /* @__PURE__ */ new Map();\n _langGraph = /* @__PURE__ */ new Map();\n _textmateThemeCache = /* @__PURE__ */ new WeakMap();\n _loadedThemesCache = null;\n _loadedLanguagesCache = null;\n getTheme(theme) {\n if (typeof theme === \"string\")\n return this._resolvedThemes.get(theme);\n else\n return this.loadTheme(theme);\n }\n loadTheme(theme) {\n const _theme = normalizeTheme(theme);\n if (_theme.name) {\n this._resolvedThemes.set(_theme.name, _theme);\n this._loadedThemesCache = null;\n }\n return _theme;\n }\n getLoadedThemes() {\n if (!this._loadedThemesCache)\n this._loadedThemesCache = [...this._resolvedThemes.keys()];\n return this._loadedThemesCache;\n }\n // Override and re-implement this method to cache the textmate themes as `TextMateTheme.createFromRawTheme`\n // is expensive. Themes can switch often especially for dual-theme support.\n //\n // The parent class also accepts `colorMap` as the second parameter, but since we don't use that,\n // we omit here so it's easier to cache the themes.\n setTheme(theme) {\n let textmateTheme = this._textmateThemeCache.get(theme);\n if (!textmateTheme) {\n textmateTheme = Theme.createFromRawTheme(theme);\n this._textmateThemeCache.set(theme, textmateTheme);\n }\n this._syncRegistry.setTheme(textmateTheme);\n }\n getGrammar(name) {\n if (this._alias[name]) {\n const resolved = /* @__PURE__ */ new Set([name]);\n while (this._alias[name]) {\n name = this._alias[name];\n if (resolved.has(name))\n throw new ShikiError(`Circular alias \\`${Array.from(resolved).join(\" -> \")} -> ${name}\\``);\n resolved.add(name);\n }\n }\n return this._resolvedGrammars.get(name);\n }\n loadLanguage(lang) {\n if (this.getGrammar(lang.name))\n return;\n const embeddedLazilyBy = new Set(\n [...this._langMap.values()].filter((i) => i.embeddedLangsLazy?.includes(lang.name))\n );\n this._resolver.addLanguage(lang);\n const grammarConfig = {\n balancedBracketSelectors: lang.balancedBracketSelectors || [\"*\"],\n unbalancedBracketSelectors: lang.unbalancedBracketSelectors || []\n };\n this._syncRegistry._rawGrammars.set(lang.scopeName, lang);\n const g = this.loadGrammarWithConfiguration(lang.scopeName, 1, grammarConfig);\n g.name = lang.name;\n this._resolvedGrammars.set(lang.name, g);\n if (lang.aliases) {\n lang.aliases.forEach((alias) => {\n this._alias[alias] = lang.name;\n });\n }\n this._loadedLanguagesCache = null;\n if (embeddedLazilyBy.size) {\n for (const e of embeddedLazilyBy) {\n this._resolvedGrammars.delete(e.name);\n this._loadedLanguagesCache = null;\n this._syncRegistry?._injectionGrammars?.delete(e.scopeName);\n this._syncRegistry?._grammars?.delete(e.scopeName);\n this.loadLanguage(this._langMap.get(e.name));\n }\n }\n }\n dispose() {\n super.dispose();\n this._resolvedThemes.clear();\n this._resolvedGrammars.clear();\n this._langMap.clear();\n this._langGraph.clear();\n this._loadedThemesCache = null;\n }\n loadLanguages(langs) {\n for (const lang of langs)\n this.resolveEmbeddedLanguages(lang);\n const langsGraphArray = Array.from(this._langGraph.entries());\n const missingLangs = langsGraphArray.filter(([_, lang]) => !lang);\n if (missingLangs.length) {\n const dependents = langsGraphArray.filter(([_, lang]) => lang && lang.embeddedLangs?.some((l) => missingLangs.map(([name]) => name).includes(l))).filter((lang) => !missingLangs.includes(lang));\n throw new ShikiError(`Missing languages ${missingLangs.map(([name]) => `\\`${name}\\``).join(\", \")}, required by ${dependents.map(([name]) => `\\`${name}\\``).join(\", \")}`);\n }\n for (const [_, lang] of langsGraphArray)\n this._resolver.addLanguage(lang);\n for (const [_, lang] of langsGraphArray)\n this.loadLanguage(lang);\n }\n getLoadedLanguages() {\n if (!this._loadedLanguagesCache) {\n this._loadedLanguagesCache = [\n .../* @__PURE__ */ new Set([...this._resolvedGrammars.keys(), ...Object.keys(this._alias)])\n ];\n }\n return this._loadedLanguagesCache;\n }\n resolveEmbeddedLanguages(lang) {\n this._langMap.set(lang.name, lang);\n this._langGraph.set(lang.name, lang);\n const embedded = lang.embeddedLanguages ?? lang.embeddedLangs;\n if (embedded) {\n for (const embeddedLang of embedded)\n this._langGraph.set(embeddedLang, this._langMap.get(embeddedLang));\n }\n }\n}\n\nclass Resolver {\n _langs = /* @__PURE__ */ new Map();\n _scopeToLang = /* @__PURE__ */ new Map();\n _injections = /* @__PURE__ */ new Map();\n _onigLib;\n constructor(engine, langs) {\n this._onigLib = {\n createOnigScanner: (patterns) => engine.createScanner(patterns),\n createOnigString: (s) => engine.createString(s)\n };\n langs.forEach((i) => this.addLanguage(i));\n }\n get onigLib() {\n return this._onigLib;\n }\n getLangRegistration(langIdOrAlias) {\n return this._langs.get(langIdOrAlias);\n }\n loadGrammar(scopeName) {\n return this._scopeToLang.get(scopeName);\n }\n addLanguage(l) {\n this._langs.set(l.name, l);\n if (l.aliases) {\n l.aliases.forEach((a) => {\n this._langs.set(a, l);\n });\n }\n this._scopeToLang.set(l.scopeName, l);\n if (l.injectTo) {\n l.injectTo.forEach((i) => {\n if (!this._injections.get(i))\n this._injections.set(i, []);\n this._injections.get(i).push(l.scopeName);\n });\n }\n }\n getInjections(scopeName) {\n const scopeParts = scopeName.split(\".\");\n let injections = [];\n for (let i = 1; i <= scopeParts.length; i++) {\n const subScopeName = scopeParts.slice(0, i).join(\".\");\n injections = [...injections, ...this._injections.get(subScopeName) || []];\n }\n return injections;\n }\n}\n\nlet instancesCount = 0;\nfunction createShikiInternalSync(options) {\n instancesCount += 1;\n if (options.warnings !== false && instancesCount >= 10 && instancesCount % 10 === 0)\n console.warn(`[Shiki] ${instancesCount} instances have been created. Shiki is supposed to be used as a singleton, consider refactoring your code to cache your highlighter instance; Or call \\`highlighter.dispose()\\` to release unused instances.`);\n let isDisposed = false;\n if (!options.engine)\n throw new ShikiError(\"`engine` option is required for synchronous mode\");\n const langs = (options.langs || []).flat(1);\n const themes = (options.themes || []).flat(1).map(normalizeTheme);\n const resolver = new Resolver(options.engine, langs);\n const _registry = new Registry(resolver, themes, langs, options.langAlias);\n let _lastTheme;\n function getLanguage(name) {\n ensureNotDisposed();\n const _lang = _registry.getGrammar(typeof name === \"string\" ? name : name.name);\n if (!_lang)\n throw new ShikiError(`Language \\`${name}\\` not found, you may need to load it first`);\n return _lang;\n }\n function getTheme(name) {\n if (name === \"none\")\n return { bg: \"\", fg: \"\", name: \"none\", settings: [], type: \"dark\" };\n ensureNotDisposed();\n const _theme = _registry.getTheme(name);\n if (!_theme)\n throw new ShikiError(`Theme \\`${name}\\` not found, you may need to load it first`);\n return _theme;\n }\n function setTheme(name) {\n ensureNotDisposed();\n const theme = getTheme(name);\n if (_lastTheme !== name) {\n _registry.setTheme(theme);\n _lastTheme = name;\n }\n const colorMap = _registry.getColorMap();\n return {\n theme,\n colorMap\n };\n }\n function getLoadedThemes() {\n ensureNotDisposed();\n return _registry.getLoadedThemes();\n }\n function getLoadedLanguages() {\n ensureNotDisposed();\n return _registry.getLoadedLanguages();\n }\n function loadLanguageSync(...langs2) {\n ensureNotDisposed();\n _registry.loadLanguages(langs2.flat(1));\n }\n async function loadLanguage(...langs2) {\n return loadLanguageSync(await resolveLangs(langs2));\n }\n function loadThemeSync(...themes2) {\n ensureNotDisposed();\n for (const theme of themes2.flat(1)) {\n _registry.loadTheme(theme);\n }\n }\n async function loadTheme(...themes2) {\n ensureNotDisposed();\n return loadThemeSync(await resolveThemes(themes2));\n }\n function ensureNotDisposed() {\n if (isDisposed)\n throw new ShikiError(\"Shiki instance has been disposed\");\n }\n function dispose() {\n if (isDisposed)\n return;\n isDisposed = true;\n _registry.dispose();\n instancesCount -= 1;\n }\n return {\n setTheme,\n getTheme,\n getLanguage,\n getLoadedThemes,\n getLoadedLanguages,\n loadLanguage,\n loadLanguageSync,\n loadTheme,\n loadThemeSync,\n dispose,\n [Symbol.dispose]: dispose\n };\n}\n\nasync function createShikiInternal(options) {\n if (!options.engine) {\n warnDeprecated(\"`engine` option is required. Use `createOnigurumaEngine` or `createJavaScriptRegexEngine` to create an engine.\");\n }\n const [\n themes,\n langs,\n engine\n ] = await Promise.all([\n resolveThemes(options.themes || []),\n resolveLangs(options.langs || []),\n options.engine\n ]);\n return createShikiInternalSync({\n ...options,\n themes,\n langs,\n engine\n });\n}\n\nasync function createHighlighterCore(options) {\n const internal = await createShikiInternal(options);\n return {\n getLastGrammarState: (...args) => getLastGrammarState(internal, ...args),\n codeToTokensBase: (code, options2) => codeToTokensBase(internal, code, options2),\n codeToTokensWithThemes: (code, options2) => codeToTokensWithThemes(internal, code, options2),\n codeToTokens: (code, options2) => codeToTokens(internal, code, options2),\n codeToHast: (code, options2) => codeToHast(internal, code, options2),\n codeToHtml: (code, options2) => codeToHtml(internal, code, options2),\n getBundledLanguages: () => ({}),\n getBundledThemes: () => ({}),\n ...internal,\n getInternalContext: () => internal\n };\n}\nfunction createHighlighterCoreSync(options) {\n const internal = createShikiInternalSync(options);\n return {\n getLastGrammarState: (...args) => getLastGrammarState(internal, ...args),\n codeToTokensBase: (code, options2) => codeToTokensBase(internal, code, options2),\n codeToTokensWithThemes: (code, options2) => codeToTokensWithThemes(internal, code, options2),\n codeToTokens: (code, options2) => codeToTokens(internal, code, options2),\n codeToHast: (code, options2) => codeToHast(internal, code, options2),\n codeToHtml: (code, options2) => codeToHtml(internal, code, options2),\n getBundledLanguages: () => ({}),\n getBundledThemes: () => ({}),\n ...internal,\n getInternalContext: () => internal\n };\n}\nfunction makeSingletonHighlighterCore(createHighlighter) {\n let _shiki;\n async function getSingletonHighlighterCore2(options) {\n if (!_shiki) {\n _shiki = createHighlighter({\n ...options,\n themes: options.themes || [],\n langs: options.langs || []\n });\n return _shiki;\n } else {\n const s = await _shiki;\n await Promise.all([\n s.loadTheme(...options.themes || []),\n s.loadLanguage(...options.langs || [])\n ]);\n return s;\n }\n }\n return getSingletonHighlighterCore2;\n}\nconst getSingletonHighlighterCore = /* @__PURE__ */ makeSingletonHighlighterCore(createHighlighterCore);\n\nfunction createBundledHighlighter(options) {\n const bundledLanguages = options.langs;\n const bundledThemes = options.themes;\n const engine = options.engine;\n async function createHighlighter(options2) {\n function resolveLang(lang) {\n if (typeof lang === \"string\") {\n if (isSpecialLang(lang))\n return [];\n lang = options2.langAlias?.[lang] || lang;\n const bundle = bundledLanguages[lang];\n if (!bundle)\n throw new ShikiError$1(`Language \\`${lang}\\` is not included in this bundle. You may want to load it from external source.`);\n return bundle;\n }\n return lang;\n }\n function resolveTheme(theme) {\n if (isSpecialTheme(theme))\n return \"none\";\n if (typeof theme === \"string\") {\n const bundle = bundledThemes[theme];\n if (!bundle)\n throw new ShikiError$1(`Theme \\`${theme}\\` is not included in this bundle. You may want to load it from external source.`);\n return bundle;\n }\n return theme;\n }\n const _themes = (options2.themes ?? []).map((i) => resolveTheme(i));\n const langs = (options2.langs ?? []).map((i) => resolveLang(i));\n const core = await createHighlighterCore({\n engine: options2.engine ?? engine(),\n ...options2,\n themes: _themes,\n langs\n });\n return {\n ...core,\n loadLanguage(...langs2) {\n return core.loadLanguage(...langs2.map(resolveLang));\n },\n loadTheme(...themes) {\n return core.loadTheme(...themes.map(resolveTheme));\n },\n getBundledLanguages() {\n return bundledLanguages;\n },\n getBundledThemes() {\n return bundledThemes;\n }\n };\n }\n return createHighlighter;\n}\nfunction makeSingletonHighlighter(createHighlighter) {\n let _shiki;\n async function getSingletonHighlighter(options = {}) {\n if (!_shiki) {\n _shiki = createHighlighter({\n ...options,\n themes: [],\n langs: []\n });\n const s = await _shiki;\n await Promise.all([\n s.loadTheme(...options.themes || []),\n s.loadLanguage(...options.langs || [])\n ]);\n return s;\n } else {\n const s = await _shiki;\n await Promise.all([\n s.loadTheme(...options.themes || []),\n s.loadLanguage(...options.langs || [])\n ]);\n return s;\n }\n }\n return getSingletonHighlighter;\n}\nfunction createSingletonShorthands(createHighlighter, config) {\n const getSingletonHighlighter = makeSingletonHighlighter(createHighlighter);\n async function get(code, options) {\n const shiki = await getSingletonHighlighter({\n langs: [options.lang],\n themes: \"theme\" in options ? [options.theme] : Object.values(options.themes)\n });\n const langs = await config?.guessEmbeddedLanguages?.(code, options.lang, shiki);\n if (langs) {\n await shiki.loadLanguage(...langs);\n }\n return shiki;\n }\n return {\n getSingletonHighlighter(options) {\n return getSingletonHighlighter(options);\n },\n async codeToHtml(code, options) {\n const shiki = await get(code, options);\n return shiki.codeToHtml(code, options);\n },\n async codeToHast(code, options) {\n const shiki = await get(code, options);\n return shiki.codeToHast(code, options);\n },\n async codeToTokens(code, options) {\n const shiki = await get(code, options);\n return shiki.codeToTokens(code, options);\n },\n async codeToTokensBase(code, options) {\n const shiki = await get(code, options);\n return shiki.codeToTokensBase(code, options);\n },\n async codeToTokensWithThemes(code, options) {\n const shiki = await get(code, options);\n return shiki.codeToTokensWithThemes(code, options);\n },\n async getLastGrammarState(code, options) {\n const shiki = await getSingletonHighlighter({\n langs: [options.lang],\n themes: [options.theme]\n });\n return shiki.getLastGrammarState(code, options);\n }\n };\n}\nconst createdBundledHighlighter = createBundledHighlighter;\n\nfunction createCssVariablesTheme(options = {}) {\n const {\n name = \"css-variables\",\n variablePrefix = \"--shiki-\",\n fontStyle = true\n } = options;\n const variable = (name2) => {\n if (options.variableDefaults?.[name2])\n return `var(${variablePrefix}${name2}, ${options.variableDefaults[name2]})`;\n return `var(${variablePrefix}${name2})`;\n };\n const theme = {\n name,\n type: \"dark\",\n colors: {\n \"editor.foreground\": variable(\"foreground\"),\n \"editor.background\": variable(\"background\"),\n \"terminal.ansiBlack\": variable(\"ansi-black\"),\n \"terminal.ansiRed\": variable(\"ansi-red\"),\n \"terminal.ansiGreen\": variable(\"ansi-green\"),\n \"terminal.ansiYellow\": variable(\"ansi-yellow\"),\n \"terminal.ansiBlue\": variable(\"ansi-blue\"),\n \"terminal.ansiMagenta\": variable(\"ansi-magenta\"),\n \"terminal.ansiCyan\": variable(\"ansi-cyan\"),\n \"terminal.ansiWhite\": variable(\"ansi-white\"),\n \"terminal.ansiBrightBlack\": variable(\"ansi-bright-black\"),\n \"terminal.ansiBrightRed\": variable(\"ansi-bright-red\"),\n \"terminal.ansiBrightGreen\": variable(\"ansi-bright-green\"),\n \"terminal.ansiBrightYellow\": variable(\"ansi-bright-yellow\"),\n \"terminal.ansiBrightBlue\": variable(\"ansi-bright-blue\"),\n \"terminal.ansiBrightMagenta\": variable(\"ansi-bright-magenta\"),\n \"terminal.ansiBrightCyan\": variable(\"ansi-bright-cyan\"),\n \"terminal.ansiBrightWhite\": variable(\"ansi-bright-white\")\n },\n tokenColors: [\n {\n scope: [\n \"keyword.operator.accessor\",\n \"meta.group.braces.round.function.arguments\",\n \"meta.template.expression\",\n \"markup.fenced_code meta.embedded.block\"\n ],\n settings: {\n foreground: variable(\"foreground\")\n }\n },\n {\n scope: \"emphasis\",\n settings: {\n fontStyle: \"italic\"\n }\n },\n {\n scope: [\"strong\", \"markup.heading.markdown\", \"markup.bold.markdown\"],\n settings: {\n fontStyle: \"bold\"\n }\n },\n {\n scope: [\"markup.italic.markdown\"],\n settings: {\n fontStyle: \"italic\"\n }\n },\n {\n scope: \"meta.link.inline.markdown\",\n settings: {\n fontStyle: \"underline\",\n foreground: variable(\"token-link\")\n }\n },\n {\n scope: [\"string\", \"markup.fenced_code\", \"markup.inline\"],\n settings: {\n foreground: variable(\"token-string\")\n }\n },\n {\n scope: [\"comment\", \"string.quoted.docstring.multi\"],\n settings: {\n foreground: variable(\"token-comment\")\n }\n },\n {\n scope: [\n \"constant.numeric\",\n \"constant.language\",\n \"constant.other.placeholder\",\n \"constant.character.format.placeholder\",\n \"variable.language.this\",\n \"variable.other.object\",\n \"variable.other.class\",\n \"variable.other.constant\",\n \"meta.property-name\",\n \"meta.property-value\",\n \"support\"\n ],\n settings: {\n foreground: variable(\"token-constant\")\n }\n },\n {\n scope: [\n \"keyword\",\n \"storage.modifier\",\n \"storage.type\",\n \"storage.control.clojure\",\n \"entity.name.function.clojure\",\n \"entity.name.tag.yaml\",\n \"support.function.node\",\n \"support.type.property-name.json\",\n \"punctuation.separator.key-value\",\n \"punctuation.definition.template-expression\"\n ],\n settings: {\n foreground: variable(\"token-keyword\")\n }\n },\n {\n scope: \"variable.parameter.function\",\n settings: {\n foreground: variable(\"token-parameter\")\n }\n },\n {\n scope: [\n \"support.function\",\n \"entity.name.type\",\n \"entity.other.inherited-class\",\n \"meta.function-call\",\n \"meta.instance.constructor\",\n \"entity.other.attribute-name\",\n \"entity.name.function\",\n \"constant.keyword.clojure\"\n ],\n settings: {\n foreground: variable(\"token-function\")\n }\n },\n {\n scope: [\n \"entity.name.tag\",\n \"string.quoted\",\n \"string.regexp\",\n \"string.interpolated\",\n \"string.template\",\n \"string.unquoted.plain.out.yaml\",\n \"keyword.other.template\"\n ],\n settings: {\n foreground: variable(\"token-string-expression\")\n }\n },\n {\n scope: [\n \"punctuation.definition.arguments\",\n \"punctuation.definition.dict\",\n \"punctuation.separator\",\n \"meta.function-call.arguments\"\n ],\n settings: {\n foreground: variable(\"token-punctuation\")\n }\n },\n {\n // [Custom] Markdown links\n scope: [\n \"markup.underline.link\",\n \"punctuation.definition.metadata.markdown\"\n ],\n settings: {\n foreground: variable(\"token-link\")\n }\n },\n {\n // [Custom] Markdown list\n scope: [\"beginning.punctuation.definition.list.markdown\"],\n settings: {\n foreground: variable(\"token-string\")\n }\n },\n {\n // [Custom] Markdown punctuation definition brackets\n scope: [\n \"punctuation.definition.string.begin.markdown\",\n \"punctuation.definition.string.end.markdown\",\n \"string.other.link.title.markdown\",\n \"string.other.link.description.markdown\"\n ],\n settings: {\n foreground: variable(\"token-keyword\")\n }\n },\n {\n // [Custom] Diff\n scope: [\n \"markup.inserted\",\n \"meta.diff.header.to-file\",\n \"punctuation.definition.inserted\"\n ],\n settings: {\n foreground: variable(\"token-inserted\")\n }\n },\n {\n scope: [\n \"markup.deleted\",\n \"meta.diff.header.from-file\",\n \"punctuation.definition.deleted\"\n ],\n settings: {\n foreground: variable(\"token-deleted\")\n }\n },\n {\n scope: [\n \"markup.changed\",\n \"punctuation.definition.changed\"\n ],\n settings: {\n foreground: variable(\"token-changed\")\n }\n }\n ]\n };\n if (!fontStyle) {\n theme.tokenColors = theme.tokenColors?.map((tokenColor) => {\n if (tokenColor.settings?.fontStyle)\n delete tokenColor.settings.fontStyle;\n return tokenColor;\n });\n }\n return theme;\n}\n\nexport { addClassToHast, applyColorReplacements, codeToHast, codeToHtml, codeToTokens, codeToTokensBase, codeToTokensWithThemes, createBundledHighlighter, createCssVariablesTheme, createHighlighterCore, createHighlighterCoreSync, createPositionConverter, createShikiInternal, createShikiInternalSync, createSingletonShorthands, createdBundledHighlighter, enableDeprecationWarnings, flatTokenVariants, getSingletonHighlighterCore, getTokenStyleObject, guessEmbeddedLanguages, hastToHtml, isNoneTheme, isPlainLang, isSpecialLang, isSpecialTheme, makeSingletonHighlighter, makeSingletonHighlighterCore, normalizeGetter, normalizeTheme, resolveColorReplacements, splitLines, splitToken, splitTokens, stringifyTokenStyle, toArray, tokenizeAnsiWithTheme, tokenizeWithTheme, tokensToHast, transformerDecorations, warnDeprecated };\n","const bundledLanguagesInfo = [\n {\n \"id\": \"abap\",\n \"name\": \"ABAP\",\n \"import\": (() => import('@shikijs/langs/abap'))\n },\n {\n \"id\": \"actionscript-3\",\n \"name\": \"ActionScript\",\n \"import\": (() => import('@shikijs/langs/actionscript-3'))\n },\n {\n \"id\": \"ada\",\n \"name\": \"Ada\",\n \"import\": (() => import('@shikijs/langs/ada'))\n },\n {\n \"id\": \"angular-html\",\n \"name\": \"Angular HTML\",\n \"import\": (() => import('@shikijs/langs/angular-html'))\n },\n {\n \"id\": \"angular-ts\",\n \"name\": \"Angular TypeScript\",\n \"import\": (() => import('@shikijs/langs/angular-ts'))\n },\n {\n \"id\": \"apache\",\n \"name\": \"Apache Conf\",\n \"import\": (() => import('@shikijs/langs/apache'))\n },\n {\n \"id\": \"apex\",\n \"name\": \"Apex\",\n \"import\": (() => import('@shikijs/langs/apex'))\n },\n {\n \"id\": \"apl\",\n \"name\": \"APL\",\n \"import\": (() => import('@shikijs/langs/apl'))\n },\n {\n \"id\": \"applescript\",\n \"name\": \"AppleScript\",\n \"import\": (() => import('@shikijs/langs/applescript'))\n },\n {\n \"id\": \"ara\",\n \"name\": \"Ara\",\n \"import\": (() => import('@shikijs/langs/ara'))\n },\n {\n \"id\": \"asciidoc\",\n \"name\": \"AsciiDoc\",\n \"aliases\": [\n \"adoc\"\n ],\n \"import\": (() => import('@shikijs/langs/asciidoc'))\n },\n {\n \"id\": \"asm\",\n \"name\": \"Assembly\",\n \"import\": (() => import('@shikijs/langs/asm'))\n },\n {\n \"id\": \"astro\",\n \"name\": \"Astro\",\n \"import\": (() => import('@shikijs/langs/astro'))\n },\n {\n \"id\": \"awk\",\n \"name\": \"AWK\",\n \"import\": (() => import('@shikijs/langs/awk'))\n },\n {\n \"id\": \"ballerina\",\n \"name\": \"Ballerina\",\n \"import\": (() => import('@shikijs/langs/ballerina'))\n },\n {\n \"id\": \"bat\",\n \"name\": \"Batch File\",\n \"aliases\": [\n \"batch\"\n ],\n \"import\": (() => import('@shikijs/langs/bat'))\n },\n {\n \"id\": \"beancount\",\n \"name\": \"Beancount\",\n \"import\": (() => import('@shikijs/langs/beancount'))\n },\n {\n \"id\": \"berry\",\n \"name\": \"Berry\",\n \"aliases\": [\n \"be\"\n ],\n \"import\": (() => import('@shikijs/langs/berry'))\n },\n {\n \"id\": \"bibtex\",\n \"name\": \"BibTeX\",\n \"import\": (() => import('@shikijs/langs/bibtex'))\n },\n {\n \"id\": \"bicep\",\n \"name\": \"Bicep\",\n \"import\": (() => import('@shikijs/langs/bicep'))\n },\n {\n \"id\": \"blade\",\n \"name\": \"Blade\",\n \"import\": (() => import('@shikijs/langs/blade'))\n },\n {\n \"id\": \"bsl\",\n \"name\": \"1C (Enterprise)\",\n \"aliases\": [\n \"1c\"\n ],\n \"import\": (() => import('@shikijs/langs/bsl'))\n },\n {\n \"id\": \"c\",\n \"name\": \"C\",\n \"import\": (() => import('@shikijs/langs/c'))\n },\n {\n \"id\": \"cadence\",\n \"name\": \"Cadence\",\n \"aliases\": [\n \"cdc\"\n ],\n \"import\": (() => import('@shikijs/langs/cadence'))\n },\n {\n \"id\": \"cairo\",\n \"name\": \"Cairo\",\n \"import\": (() => import('@shikijs/langs/cairo'))\n },\n {\n \"id\": \"clarity\",\n \"name\": \"Clarity\",\n \"import\": (() => import('@shikijs/langs/clarity'))\n },\n {\n \"id\": \"clojure\",\n \"name\": \"Clojure\",\n \"aliases\": [\n \"clj\"\n ],\n \"import\": (() => import('@shikijs/langs/clojure'))\n },\n {\n \"id\": \"cmake\",\n \"name\": \"CMake\",\n \"import\": (() => import('@shikijs/langs/cmake'))\n },\n {\n \"id\": \"cobol\",\n \"name\": \"COBOL\",\n \"import\": (() => import('@shikijs/langs/cobol'))\n },\n {\n \"id\": \"codeowners\",\n \"name\": \"CODEOWNERS\",\n \"import\": (() => import('@shikijs/langs/codeowners'))\n },\n {\n \"id\": \"codeql\",\n \"name\": \"CodeQL\",\n \"aliases\": [\n \"ql\"\n ],\n \"import\": (() => import('@shikijs/langs/codeql'))\n },\n {\n \"id\": \"coffee\",\n \"name\": \"CoffeeScript\",\n \"aliases\": [\n \"coffeescript\"\n ],\n \"import\": (() => import('@shikijs/langs/coffee'))\n },\n {\n \"id\": \"common-lisp\",\n \"name\": \"Common Lisp\",\n \"aliases\": [\n \"lisp\"\n ],\n \"import\": (() => import('@shikijs/langs/common-lisp'))\n },\n {\n \"id\": \"coq\",\n \"name\": \"Coq\",\n \"import\": (() => import('@shikijs/langs/coq'))\n },\n {\n \"id\": \"cpp\",\n \"name\": \"C++\",\n \"aliases\": [\n \"c++\"\n ],\n \"import\": (() => import('@shikijs/langs/cpp'))\n },\n {\n \"id\": \"crystal\",\n \"name\": \"Crystal\",\n \"import\": (() => import('@shikijs/langs/crystal'))\n },\n {\n \"id\": \"csharp\",\n \"name\": \"C#\",\n \"aliases\": [\n \"c#\",\n \"cs\"\n ],\n \"import\": (() => import('@shikijs/langs/csharp'))\n },\n {\n \"id\": \"css\",\n \"name\": \"CSS\",\n \"import\": (() => import('@shikijs/langs/css'))\n },\n {\n \"id\": \"csv\",\n \"name\": \"CSV\",\n \"import\": (() => import('@shikijs/langs/csv'))\n },\n {\n \"id\": \"cue\",\n \"name\": \"CUE\",\n \"import\": (() => import('@shikijs/langs/cue'))\n },\n {\n \"id\": \"cypher\",\n \"name\": \"Cypher\",\n \"aliases\": [\n \"cql\"\n ],\n \"import\": (() => import('@shikijs/langs/cypher'))\n },\n {\n \"id\": \"d\",\n \"name\": \"D\",\n \"import\": (() => import('@shikijs/langs/d'))\n },\n {\n \"id\": \"dart\",\n \"name\": \"Dart\",\n \"import\": (() => import('@shikijs/langs/dart'))\n },\n {\n \"id\": \"dax\",\n \"name\": \"DAX\",\n \"import\": (() => import('@shikijs/langs/dax'))\n },\n {\n \"id\": \"desktop\",\n \"name\": \"Desktop\",\n \"import\": (() => import('@shikijs/langs/desktop'))\n },\n {\n \"id\": \"diff\",\n \"name\": \"Diff\",\n \"import\": (() => import('@shikijs/langs/diff'))\n },\n {\n \"id\": \"docker\",\n \"name\": \"Dockerfile\",\n \"aliases\": [\n \"dockerfile\"\n ],\n \"import\": (() => import('@shikijs/langs/docker'))\n },\n {\n \"id\": \"dotenv\",\n \"name\": \"dotEnv\",\n \"import\": (() => import('@shikijs/langs/dotenv'))\n },\n {\n \"id\": \"dream-maker\",\n \"name\": \"Dream Maker\",\n \"import\": (() => import('@shikijs/langs/dream-maker'))\n },\n {\n \"id\": \"edge\",\n \"name\": \"Edge\",\n \"import\": (() => import('@shikijs/langs/edge'))\n },\n {\n \"id\": \"elixir\",\n \"name\": \"Elixir\",\n \"import\": (() => import('@shikijs/langs/elixir'))\n },\n {\n \"id\": \"elm\",\n \"name\": \"Elm\",\n \"import\": (() => import('@shikijs/langs/elm'))\n },\n {\n \"id\": \"emacs-lisp\",\n \"name\": \"Emacs Lisp\",\n \"aliases\": [\n \"elisp\"\n ],\n \"import\": (() => import('@shikijs/langs/emacs-lisp'))\n },\n {\n \"id\": \"erb\",\n \"name\": \"ERB\",\n \"import\": (() => import('@shikijs/langs/erb'))\n },\n {\n \"id\": \"erlang\",\n \"name\": \"Erlang\",\n \"aliases\": [\n \"erl\"\n ],\n \"import\": (() => import('@shikijs/langs/erlang'))\n },\n {\n \"id\": \"fennel\",\n \"name\": \"Fennel\",\n \"import\": (() => import('@shikijs/langs/fennel'))\n },\n {\n \"id\": \"fish\",\n \"name\": \"Fish\",\n \"import\": (() => import('@shikijs/langs/fish'))\n },\n {\n \"id\": \"fluent\",\n \"name\": \"Fluent\",\n \"aliases\": [\n \"ftl\"\n ],\n \"import\": (() => import('@shikijs/langs/fluent'))\n },\n {\n \"id\": \"fortran-fixed-form\",\n \"name\": \"Fortran (Fixed Form)\",\n \"aliases\": [\n \"f\",\n \"for\",\n \"f77\"\n ],\n \"import\": (() => import('@shikijs/langs/fortran-fixed-form'))\n },\n {\n \"id\": \"fortran-free-form\",\n \"name\": \"Fortran (Free Form)\",\n \"aliases\": [\n \"f90\",\n \"f95\",\n \"f03\",\n \"f08\",\n \"f18\"\n ],\n \"import\": (() => import('@shikijs/langs/fortran-free-form'))\n },\n {\n \"id\": \"fsharp\",\n \"name\": \"F#\",\n \"aliases\": [\n \"f#\",\n \"fs\"\n ],\n \"import\": (() => import('@shikijs/langs/fsharp'))\n },\n {\n \"id\": \"gdresource\",\n \"name\": \"GDResource\",\n \"import\": (() => import('@shikijs/langs/gdresource'))\n },\n {\n \"id\": \"gdscript\",\n \"name\": \"GDScript\",\n \"import\": (() => import('@shikijs/langs/gdscript'))\n },\n {\n \"id\": \"gdshader\",\n \"name\": \"GDShader\",\n \"import\": (() => import('@shikijs/langs/gdshader'))\n },\n {\n \"id\": \"genie\",\n \"name\": \"Genie\",\n \"import\": (() => import('@shikijs/langs/genie'))\n },\n {\n \"id\": \"gherkin\",\n \"name\": \"Gherkin\",\n \"import\": (() => import('@shikijs/langs/gherkin'))\n },\n {\n \"id\": \"git-commit\",\n \"name\": \"Git Commit Message\",\n \"import\": (() => import('@shikijs/langs/git-commit'))\n },\n {\n \"id\": \"git-rebase\",\n \"name\": \"Git Rebase Message\",\n \"import\": (() => import('@shikijs/langs/git-rebase'))\n },\n {\n \"id\": \"gleam\",\n \"name\": \"Gleam\",\n \"import\": (() => import('@shikijs/langs/gleam'))\n },\n {\n \"id\": \"glimmer-js\",\n \"name\": \"Glimmer JS\",\n \"aliases\": [\n \"gjs\"\n ],\n \"import\": (() => import('@shikijs/langs/glimmer-js'))\n },\n {\n \"id\": \"glimmer-ts\",\n \"name\": \"Glimmer TS\",\n \"aliases\": [\n \"gts\"\n ],\n \"import\": (() => import('@shikijs/langs/glimmer-ts'))\n },\n {\n \"id\": \"glsl\",\n \"name\": \"GLSL\",\n \"import\": (() => import('@shikijs/langs/glsl'))\n },\n {\n \"id\": \"gnuplot\",\n \"name\": \"Gnuplot\",\n \"import\": (() => import('@shikijs/langs/gnuplot'))\n },\n {\n \"id\": \"go\",\n \"name\": \"Go\",\n \"import\": (() => import('@shikijs/langs/go'))\n },\n {\n \"id\": \"graphql\",\n \"name\": \"GraphQL\",\n \"aliases\": [\n \"gql\"\n ],\n \"import\": (() => import('@shikijs/langs/graphql'))\n },\n {\n \"id\": \"groovy\",\n \"name\": \"Groovy\",\n \"import\": (() => import('@shikijs/langs/groovy'))\n },\n {\n \"id\": \"hack\",\n \"name\": \"Hack\",\n \"import\": (() => import('@shikijs/langs/hack'))\n },\n {\n \"id\": \"haml\",\n \"name\": \"Ruby Haml\",\n \"import\": (() => import('@shikijs/langs/haml'))\n },\n {\n \"id\": \"handlebars\",\n \"name\": \"Handlebars\",\n \"aliases\": [\n \"hbs\"\n ],\n \"import\": (() => import('@shikijs/langs/handlebars'))\n },\n {\n \"id\": \"haskell\",\n \"name\": \"Haskell\",\n \"aliases\": [\n \"hs\"\n ],\n \"import\": (() => import('@shikijs/langs/haskell'))\n },\n {\n \"id\": \"haxe\",\n \"name\": \"Haxe\",\n \"import\": (() => import('@shikijs/langs/haxe'))\n },\n {\n \"id\": \"hcl\",\n \"name\": \"HashiCorp HCL\",\n \"import\": (() => import('@shikijs/langs/hcl'))\n },\n {\n \"id\": \"hjson\",\n \"name\": \"Hjson\",\n \"import\": (() => import('@shikijs/langs/hjson'))\n },\n {\n \"id\": \"hlsl\",\n \"name\": \"HLSL\",\n \"import\": (() => import('@shikijs/langs/hlsl'))\n },\n {\n \"id\": \"html\",\n \"name\": \"HTML\",\n \"import\": (() => import('@shikijs/langs/html'))\n },\n {\n \"id\": \"html-derivative\",\n \"name\": \"HTML (Derivative)\",\n \"import\": (() => import('@shikijs/langs/html-derivative'))\n },\n {\n \"id\": \"http\",\n \"name\": \"HTTP\",\n \"import\": (() => import('@shikijs/langs/http'))\n },\n {\n \"id\": \"hurl\",\n \"name\": \"Hurl\",\n \"import\": (() => import('@shikijs/langs/hurl'))\n },\n {\n \"id\": \"hxml\",\n \"name\": \"HXML\",\n \"import\": (() => import('@shikijs/langs/hxml'))\n },\n {\n \"id\": \"hy\",\n \"name\": \"Hy\",\n \"import\": (() => import('@shikijs/langs/hy'))\n },\n {\n \"id\": \"imba\",\n \"name\": \"Imba\",\n \"import\": (() => import('@shikijs/langs/imba'))\n },\n {\n \"id\": \"ini\",\n \"name\": \"INI\",\n \"aliases\": [\n \"properties\"\n ],\n \"import\": (() => import('@shikijs/langs/ini'))\n },\n {\n \"id\": \"java\",\n \"name\": \"Java\",\n \"import\": (() => import('@shikijs/langs/java'))\n },\n {\n \"id\": \"javascript\",\n \"name\": \"JavaScript\",\n \"aliases\": [\n \"js\",\n \"cjs\",\n \"mjs\"\n ],\n \"import\": (() => import('@shikijs/langs/javascript'))\n },\n {\n \"id\": \"jinja\",\n \"name\": \"Jinja\",\n \"import\": (() => import('@shikijs/langs/jinja'))\n },\n {\n \"id\": \"jison\",\n \"name\": \"Jison\",\n \"import\": (() => import('@shikijs/langs/jison'))\n },\n {\n \"id\": \"json\",\n \"name\": \"JSON\",\n \"import\": (() => import('@shikijs/langs/json'))\n },\n {\n \"id\": \"json5\",\n \"name\": \"JSON5\",\n \"import\": (() => import('@shikijs/langs/json5'))\n },\n {\n \"id\": \"jsonc\",\n \"name\": \"JSON with Comments\",\n \"import\": (() => import('@shikijs/langs/jsonc'))\n },\n {\n \"id\": \"jsonl\",\n \"name\": \"JSON Lines\",\n \"import\": (() => import('@shikijs/langs/jsonl'))\n },\n {\n \"id\": \"jsonnet\",\n \"name\": \"Jsonnet\",\n \"import\": (() => import('@shikijs/langs/jsonnet'))\n },\n {\n \"id\": \"jssm\",\n \"name\": \"JSSM\",\n \"aliases\": [\n \"fsl\"\n ],\n \"import\": (() => import('@shikijs/langs/jssm'))\n },\n {\n \"id\": \"jsx\",\n \"name\": \"JSX\",\n \"import\": (() => import('@shikijs/langs/jsx'))\n },\n {\n \"id\": \"julia\",\n \"name\": \"Julia\",\n \"aliases\": [\n \"jl\"\n ],\n \"import\": (() => import('@shikijs/langs/julia'))\n },\n {\n \"id\": \"kdl\",\n \"name\": \"KDL\",\n \"import\": (() => import('@shikijs/langs/kdl'))\n },\n {\n \"id\": \"kotlin\",\n \"name\": \"Kotlin\",\n \"aliases\": [\n \"kt\",\n \"kts\"\n ],\n \"import\": (() => import('@shikijs/langs/kotlin'))\n },\n {\n \"id\": \"kusto\",\n \"name\": \"Kusto\",\n \"aliases\": [\n \"kql\"\n ],\n \"import\": (() => import('@shikijs/langs/kusto'))\n },\n {\n \"id\": \"latex\",\n \"name\": \"LaTeX\",\n \"import\": (() => import('@shikijs/langs/latex'))\n },\n {\n \"id\": \"lean\",\n \"name\": \"Lean 4\",\n \"aliases\": [\n \"lean4\"\n ],\n \"import\": (() => import('@shikijs/langs/lean'))\n },\n {\n \"id\": \"less\",\n \"name\": \"Less\",\n \"import\": (() => import('@shikijs/langs/less'))\n },\n {\n \"id\": \"liquid\",\n \"name\": \"Liquid\",\n \"import\": (() => import('@shikijs/langs/liquid'))\n },\n {\n \"id\": \"llvm\",\n \"name\": \"LLVM IR\",\n \"import\": (() => import('@shikijs/langs/llvm'))\n },\n {\n \"id\": \"log\",\n \"name\": \"Log file\",\n \"import\": (() => import('@shikijs/langs/log'))\n },\n {\n \"id\": \"logo\",\n \"name\": \"Logo\",\n \"import\": (() => import('@shikijs/langs/logo'))\n },\n {\n \"id\": \"lua\",\n \"name\": \"Lua\",\n \"import\": (() => import('@shikijs/langs/lua'))\n },\n {\n \"id\": \"luau\",\n \"name\": \"Luau\",\n \"import\": (() => import('@shikijs/langs/luau'))\n },\n {\n \"id\": \"make\",\n \"name\": \"Makefile\",\n \"aliases\": [\n \"makefile\"\n ],\n \"import\": (() => import('@shikijs/langs/make'))\n },\n {\n \"id\": \"markdown\",\n \"name\": \"Markdown\",\n \"aliases\": [\n \"md\"\n ],\n \"import\": (() => import('@shikijs/langs/markdown'))\n },\n {\n \"id\": \"marko\",\n \"name\": \"Marko\",\n \"import\": (() => import('@shikijs/langs/marko'))\n },\n {\n \"id\": \"matlab\",\n \"name\": \"MATLAB\",\n \"import\": (() => import('@shikijs/langs/matlab'))\n },\n {\n \"id\": \"mdc\",\n \"name\": \"MDC\",\n \"import\": (() => import('@shikijs/langs/mdc'))\n },\n {\n \"id\": \"mdx\",\n \"name\": \"MDX\",\n \"import\": (() => import('@shikijs/langs/mdx'))\n },\n {\n \"id\": \"mermaid\",\n \"name\": \"Mermaid\",\n \"aliases\": [\n \"mmd\"\n ],\n \"import\": (() => import('@shikijs/langs/mermaid'))\n },\n {\n \"id\": \"mipsasm\",\n \"name\": \"MIPS Assembly\",\n \"aliases\": [\n \"mips\"\n ],\n \"import\": (() => import('@shikijs/langs/mipsasm'))\n },\n {\n \"id\": \"mojo\",\n \"name\": \"Mojo\",\n \"import\": (() => import('@shikijs/langs/mojo'))\n },\n {\n \"id\": \"move\",\n \"name\": \"Move\",\n \"import\": (() => import('@shikijs/langs/move'))\n },\n {\n \"id\": \"narrat\",\n \"name\": \"Narrat Language\",\n \"aliases\": [\n \"nar\"\n ],\n \"import\": (() => import('@shikijs/langs/narrat'))\n },\n {\n \"id\": \"nextflow\",\n \"name\": \"Nextflow\",\n \"aliases\": [\n \"nf\"\n ],\n \"import\": (() => import('@shikijs/langs/nextflow'))\n },\n {\n \"id\": \"nginx\",\n \"name\": \"Nginx\",\n \"import\": (() => import('@shikijs/langs/nginx'))\n },\n {\n \"id\": \"nim\",\n \"name\": \"Nim\",\n \"import\": (() => import('@shikijs/langs/nim'))\n },\n {\n \"id\": \"nix\",\n \"name\": \"Nix\",\n \"import\": (() => import('@shikijs/langs/nix'))\n },\n {\n \"id\": \"nushell\",\n \"name\": \"nushell\",\n \"aliases\": [\n \"nu\"\n ],\n \"import\": (() => import('@shikijs/langs/nushell'))\n },\n {\n \"id\": \"objective-c\",\n \"name\": \"Objective-C\",\n \"aliases\": [\n \"objc\"\n ],\n \"import\": (() => import('@shikijs/langs/objective-c'))\n },\n {\n \"id\": \"objective-cpp\",\n \"name\": \"Objective-C++\",\n \"import\": (() => import('@shikijs/langs/objective-cpp'))\n },\n {\n \"id\": \"ocaml\",\n \"name\": \"OCaml\",\n \"import\": (() => import('@shikijs/langs/ocaml'))\n },\n {\n \"id\": \"openscad\",\n \"name\": \"OpenSCAD\",\n \"aliases\": [\n \"scad\"\n ],\n \"import\": (() => import('@shikijs/langs/openscad'))\n },\n {\n \"id\": \"pascal\",\n \"name\": \"Pascal\",\n \"import\": (() => import('@shikijs/langs/pascal'))\n },\n {\n \"id\": \"perl\",\n \"name\": \"Perl\",\n \"import\": (() => import('@shikijs/langs/perl'))\n },\n {\n \"id\": \"php\",\n \"name\": \"PHP\",\n \"import\": (() => import('@shikijs/langs/php'))\n },\n {\n \"id\": \"pkl\",\n \"name\": \"Pkl\",\n \"import\": (() => import('@shikijs/langs/pkl'))\n },\n {\n \"id\": \"plsql\",\n \"name\": \"PL/SQL\",\n \"import\": (() => import('@shikijs/langs/plsql'))\n },\n {\n \"id\": \"po\",\n \"name\": \"Gettext PO\",\n \"aliases\": [\n \"pot\",\n \"potx\"\n ],\n \"import\": (() => import('@shikijs/langs/po'))\n },\n {\n \"id\": \"polar\",\n \"name\": \"Polar\",\n \"import\": (() => import('@shikijs/langs/polar'))\n },\n {\n \"id\": \"postcss\",\n \"name\": \"PostCSS\",\n \"import\": (() => import('@shikijs/langs/postcss'))\n },\n {\n \"id\": \"powerquery\",\n \"name\": \"PowerQuery\",\n \"import\": (() => import('@shikijs/langs/powerquery'))\n },\n {\n \"id\": \"powershell\",\n \"name\": \"PowerShell\",\n \"aliases\": [\n \"ps\",\n \"ps1\"\n ],\n \"import\": (() => import('@shikijs/langs/powershell'))\n },\n {\n \"id\": \"prisma\",\n \"name\": \"Prisma\",\n \"import\": (() => import('@shikijs/langs/prisma'))\n },\n {\n \"id\": \"prolog\",\n \"name\": \"Prolog\",\n \"import\": (() => import('@shikijs/langs/prolog'))\n },\n {\n \"id\": \"proto\",\n \"name\": \"Protocol Buffer 3\",\n \"aliases\": [\n \"protobuf\"\n ],\n \"import\": (() => import('@shikijs/langs/proto'))\n },\n {\n \"id\": \"pug\",\n \"name\": \"Pug\",\n \"aliases\": [\n \"jade\"\n ],\n \"import\": (() => import('@shikijs/langs/pug'))\n },\n {\n \"id\": \"puppet\",\n \"name\": \"Puppet\",\n \"import\": (() => import('@shikijs/langs/puppet'))\n },\n {\n \"id\": \"purescript\",\n \"name\": \"PureScript\",\n \"import\": (() => import('@shikijs/langs/purescript'))\n },\n {\n \"id\": \"python\",\n \"name\": \"Python\",\n \"aliases\": [\n \"py\"\n ],\n \"import\": (() => import('@shikijs/langs/python'))\n },\n {\n \"id\": \"qml\",\n \"name\": \"QML\",\n \"import\": (() => import('@shikijs/langs/qml'))\n },\n {\n \"id\": \"qmldir\",\n \"name\": \"QML Directory\",\n \"import\": (() => import('@shikijs/langs/qmldir'))\n },\n {\n \"id\": \"qss\",\n \"name\": \"Qt Style Sheets\",\n \"import\": (() => import('@shikijs/langs/qss'))\n },\n {\n \"id\": \"r\",\n \"name\": \"R\",\n \"import\": (() => import('@shikijs/langs/r'))\n },\n {\n \"id\": \"racket\",\n \"name\": \"Racket\",\n \"import\": (() => import('@shikijs/langs/racket'))\n },\n {\n \"id\": \"raku\",\n \"name\": \"Raku\",\n \"aliases\": [\n \"perl6\"\n ],\n \"import\": (() => import('@shikijs/langs/raku'))\n },\n {\n \"id\": \"razor\",\n \"name\": \"ASP.NET Razor\",\n \"import\": (() => import('@shikijs/langs/razor'))\n },\n {\n \"id\": \"reg\",\n \"name\": \"Windows Registry Script\",\n \"import\": (() => import('@shikijs/langs/reg'))\n },\n {\n \"id\": \"regexp\",\n \"name\": \"RegExp\",\n \"aliases\": [\n \"regex\"\n ],\n \"import\": (() => import('@shikijs/langs/regexp'))\n },\n {\n \"id\": \"rel\",\n \"name\": \"Rel\",\n \"import\": (() => import('@shikijs/langs/rel'))\n },\n {\n \"id\": \"riscv\",\n \"name\": \"RISC-V\",\n \"import\": (() => import('@shikijs/langs/riscv'))\n },\n {\n \"id\": \"rosmsg\",\n \"name\": \"ROS Interface\",\n \"import\": (() => import('@shikijs/langs/rosmsg'))\n },\n {\n \"id\": \"rst\",\n \"name\": \"reStructuredText\",\n \"import\": (() => import('@shikijs/langs/rst'))\n },\n {\n \"id\": \"ruby\",\n \"name\": \"Ruby\",\n \"aliases\": [\n \"rb\"\n ],\n \"import\": (() => import('@shikijs/langs/ruby'))\n },\n {\n \"id\": \"rust\",\n \"name\": \"Rust\",\n \"aliases\": [\n \"rs\"\n ],\n \"import\": (() => import('@shikijs/langs/rust'))\n },\n {\n \"id\": \"sas\",\n \"name\": \"SAS\",\n \"import\": (() => import('@shikijs/langs/sas'))\n },\n {\n \"id\": \"sass\",\n \"name\": \"Sass\",\n \"import\": (() => import('@shikijs/langs/sass'))\n },\n {\n \"id\": \"scala\",\n \"name\": \"Scala\",\n \"import\": (() => import('@shikijs/langs/scala'))\n },\n {\n \"id\": \"scheme\",\n \"name\": \"Scheme\",\n \"import\": (() => import('@shikijs/langs/scheme'))\n },\n {\n \"id\": \"scss\",\n \"name\": \"SCSS\",\n \"import\": (() => import('@shikijs/langs/scss'))\n },\n {\n \"id\": \"sdbl\",\n \"name\": \"1C (Query)\",\n \"aliases\": [\n \"1c-query\"\n ],\n \"import\": (() => import('@shikijs/langs/sdbl'))\n },\n {\n \"id\": \"shaderlab\",\n \"name\": \"ShaderLab\",\n \"aliases\": [\n \"shader\"\n ],\n \"import\": (() => import('@shikijs/langs/shaderlab'))\n },\n {\n \"id\": \"shellscript\",\n \"name\": \"Shell\",\n \"aliases\": [\n \"bash\",\n \"sh\",\n \"shell\",\n \"zsh\"\n ],\n \"import\": (() => import('@shikijs/langs/shellscript'))\n },\n {\n \"id\": \"shellsession\",\n \"name\": \"Shell Session\",\n \"aliases\": [\n \"console\"\n ],\n \"import\": (() => import('@shikijs/langs/shellsession'))\n },\n {\n \"id\": \"smalltalk\",\n \"name\": \"Smalltalk\",\n \"import\": (() => import('@shikijs/langs/smalltalk'))\n },\n {\n \"id\": \"solidity\",\n \"name\": \"Solidity\",\n \"import\": (() => import('@shikijs/langs/solidity'))\n },\n {\n \"id\": \"soy\",\n \"name\": \"Closure Templates\",\n \"aliases\": [\n \"closure-templates\"\n ],\n \"import\": (() => import('@shikijs/langs/soy'))\n },\n {\n \"id\": \"sparql\",\n \"name\": \"SPARQL\",\n \"import\": (() => import('@shikijs/langs/sparql'))\n },\n {\n \"id\": \"splunk\",\n \"name\": \"Splunk Query Language\",\n \"aliases\": [\n \"spl\"\n ],\n \"import\": (() => import('@shikijs/langs/splunk'))\n },\n {\n \"id\": \"sql\",\n \"name\": \"SQL\",\n \"import\": (() => import('@shikijs/langs/sql'))\n },\n {\n \"id\": \"ssh-config\",\n \"name\": \"SSH Config\",\n \"import\": (() => import('@shikijs/langs/ssh-config'))\n },\n {\n \"id\": \"stata\",\n \"name\": \"Stata\",\n \"import\": (() => import('@shikijs/langs/stata'))\n },\n {\n \"id\": \"stylus\",\n \"name\": \"Stylus\",\n \"aliases\": [\n \"styl\"\n ],\n \"import\": (() => import('@shikijs/langs/stylus'))\n },\n {\n \"id\": \"svelte\",\n \"name\": \"Svelte\",\n \"import\": (() => import('@shikijs/langs/svelte'))\n },\n {\n \"id\": \"swift\",\n \"name\": \"Swift\",\n \"import\": (() => import('@shikijs/langs/swift'))\n },\n {\n \"id\": \"system-verilog\",\n \"name\": \"SystemVerilog\",\n \"import\": (() => import('@shikijs/langs/system-verilog'))\n },\n {\n \"id\": \"systemd\",\n \"name\": \"Systemd Units\",\n \"import\": (() => import('@shikijs/langs/systemd'))\n },\n {\n \"id\": \"talonscript\",\n \"name\": \"TalonScript\",\n \"aliases\": [\n \"talon\"\n ],\n \"import\": (() => import('@shikijs/langs/talonscript'))\n },\n {\n \"id\": \"tasl\",\n \"name\": \"Tasl\",\n \"import\": (() => import('@shikijs/langs/tasl'))\n },\n {\n \"id\": \"tcl\",\n \"name\": \"Tcl\",\n \"import\": (() => import('@shikijs/langs/tcl'))\n },\n {\n \"id\": \"templ\",\n \"name\": \"Templ\",\n \"import\": (() => import('@shikijs/langs/templ'))\n },\n {\n \"id\": \"terraform\",\n \"name\": \"Terraform\",\n \"aliases\": [\n \"tf\",\n \"tfvars\"\n ],\n \"import\": (() => import('@shikijs/langs/terraform'))\n },\n {\n \"id\": \"tex\",\n \"name\": \"TeX\",\n \"import\": (() => import('@shikijs/langs/tex'))\n },\n {\n \"id\": \"toml\",\n \"name\": \"TOML\",\n \"import\": (() => import('@shikijs/langs/toml'))\n },\n {\n \"id\": \"ts-tags\",\n \"name\": \"TypeScript with Tags\",\n \"aliases\": [\n \"lit\"\n ],\n \"import\": (() => import('@shikijs/langs/ts-tags'))\n },\n {\n \"id\": \"tsv\",\n \"name\": \"TSV\",\n \"import\": (() => import('@shikijs/langs/tsv'))\n },\n {\n \"id\": \"tsx\",\n \"name\": \"TSX\",\n \"import\": (() => import('@shikijs/langs/tsx'))\n },\n {\n \"id\": \"turtle\",\n \"name\": \"Turtle\",\n \"import\": (() => import('@shikijs/langs/turtle'))\n },\n {\n \"id\": \"twig\",\n \"name\": \"Twig\",\n \"import\": (() => import('@shikijs/langs/twig'))\n },\n {\n \"id\": \"typescript\",\n \"name\": \"TypeScript\",\n \"aliases\": [\n \"ts\",\n \"cts\",\n \"mts\"\n ],\n \"import\": (() => import('@shikijs/langs/typescript'))\n },\n {\n \"id\": \"typespec\",\n \"name\": \"TypeSpec\",\n \"aliases\": [\n \"tsp\"\n ],\n \"import\": (() => import('@shikijs/langs/typespec'))\n },\n {\n \"id\": \"typst\",\n \"name\": \"Typst\",\n \"aliases\": [\n \"typ\"\n ],\n \"import\": (() => import('@shikijs/langs/typst'))\n },\n {\n \"id\": \"v\",\n \"name\": \"V\",\n \"import\": (() => import('@shikijs/langs/v'))\n },\n {\n \"id\": \"vala\",\n \"name\": \"Vala\",\n \"import\": (() => import('@shikijs/langs/vala'))\n },\n {\n \"id\": \"vb\",\n \"name\": \"Visual Basic\",\n \"aliases\": [\n \"cmd\"\n ],\n \"import\": (() => import('@shikijs/langs/vb'))\n },\n {\n \"id\": \"verilog\",\n \"name\": \"Verilog\",\n \"import\": (() => import('@shikijs/langs/verilog'))\n },\n {\n \"id\": \"vhdl\",\n \"name\": \"VHDL\",\n \"import\": (() => import('@shikijs/langs/vhdl'))\n },\n {\n \"id\": \"viml\",\n \"name\": \"Vim Script\",\n \"aliases\": [\n \"vim\",\n \"vimscript\"\n ],\n \"import\": (() => import('@shikijs/langs/viml'))\n },\n {\n \"id\": \"vue\",\n \"name\": \"Vue\",\n \"import\": (() => import('@shikijs/langs/vue'))\n },\n {\n \"id\": \"vue-html\",\n \"name\": \"Vue HTML\",\n \"import\": (() => import('@shikijs/langs/vue-html'))\n },\n {\n \"id\": \"vue-vine\",\n \"name\": \"Vue Vine\",\n \"import\": (() => import('@shikijs/langs/vue-vine'))\n },\n {\n \"id\": \"vyper\",\n \"name\": \"Vyper\",\n \"aliases\": [\n \"vy\"\n ],\n \"import\": (() => import('@shikijs/langs/vyper'))\n },\n {\n \"id\": \"wasm\",\n \"name\": \"WebAssembly\",\n \"import\": (() => import('@shikijs/langs/wasm'))\n },\n {\n \"id\": \"wenyan\",\n \"name\": \"Wenyan\",\n \"aliases\": [\n \"\\u6587\\u8A00\"\n ],\n \"import\": (() => import('@shikijs/langs/wenyan'))\n },\n {\n \"id\": \"wgsl\",\n \"name\": \"WGSL\",\n \"import\": (() => import('@shikijs/langs/wgsl'))\n },\n {\n \"id\": \"wikitext\",\n \"name\": \"Wikitext\",\n \"aliases\": [\n \"mediawiki\",\n \"wiki\"\n ],\n \"import\": (() => import('@shikijs/langs/wikitext'))\n },\n {\n \"id\": \"wit\",\n \"name\": \"WebAssembly Interface Types\",\n \"import\": (() => import('@shikijs/langs/wit'))\n },\n {\n \"id\": \"wolfram\",\n \"name\": \"Wolfram\",\n \"aliases\": [\n \"wl\"\n ],\n \"import\": (() => import('@shikijs/langs/wolfram'))\n },\n {\n \"id\": \"xml\",\n \"name\": \"XML\",\n \"import\": (() => import('@shikijs/langs/xml'))\n },\n {\n \"id\": \"xsl\",\n \"name\": \"XSL\",\n \"import\": (() => import('@shikijs/langs/xsl'))\n },\n {\n \"id\": \"yaml\",\n \"name\": \"YAML\",\n \"aliases\": [\n \"yml\"\n ],\n \"import\": (() => import('@shikijs/langs/yaml'))\n },\n {\n \"id\": \"zenscript\",\n \"name\": \"ZenScript\",\n \"import\": (() => import('@shikijs/langs/zenscript'))\n },\n {\n \"id\": \"zig\",\n \"name\": \"Zig\",\n \"import\": (() => import('@shikijs/langs/zig'))\n }\n];\nconst bundledLanguagesBase = Object.fromEntries(bundledLanguagesInfo.map((i) => [i.id, i.import]));\nconst bundledLanguagesAlias = Object.fromEntries(bundledLanguagesInfo.flatMap((i) => i.aliases?.map((a) => [a, i.import]) || []));\nconst bundledLanguages = {\n ...bundledLanguagesBase,\n ...bundledLanguagesAlias\n};\n\nexport { bundledLanguages, bundledLanguagesAlias, bundledLanguagesBase, bundledLanguagesInfo };\n","const bundledThemesInfo = [\n {\n \"id\": \"andromeeda\",\n \"displayName\": \"Andromeeda\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/andromeeda'))\n },\n {\n \"id\": \"aurora-x\",\n \"displayName\": \"Aurora X\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/aurora-x'))\n },\n {\n \"id\": \"ayu-dark\",\n \"displayName\": \"Ayu Dark\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/ayu-dark'))\n },\n {\n \"id\": \"catppuccin-frappe\",\n \"displayName\": \"Catppuccin Frapp\\xE9\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/catppuccin-frappe'))\n },\n {\n \"id\": \"catppuccin-latte\",\n \"displayName\": \"Catppuccin Latte\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/catppuccin-latte'))\n },\n {\n \"id\": \"catppuccin-macchiato\",\n \"displayName\": \"Catppuccin Macchiato\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/catppuccin-macchiato'))\n },\n {\n \"id\": \"catppuccin-mocha\",\n \"displayName\": \"Catppuccin Mocha\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/catppuccin-mocha'))\n },\n {\n \"id\": \"dark-plus\",\n \"displayName\": \"Dark Plus\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/dark-plus'))\n },\n {\n \"id\": \"dracula\",\n \"displayName\": \"Dracula Theme\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/dracula'))\n },\n {\n \"id\": \"dracula-soft\",\n \"displayName\": \"Dracula Theme Soft\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/dracula-soft'))\n },\n {\n \"id\": \"everforest-dark\",\n \"displayName\": \"Everforest Dark\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/everforest-dark'))\n },\n {\n \"id\": \"everforest-light\",\n \"displayName\": \"Everforest Light\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/everforest-light'))\n },\n {\n \"id\": \"github-dark\",\n \"displayName\": \"GitHub Dark\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/github-dark'))\n },\n {\n \"id\": \"github-dark-default\",\n \"displayName\": \"GitHub Dark Default\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/github-dark-default'))\n },\n {\n \"id\": \"github-dark-dimmed\",\n \"displayName\": \"GitHub Dark Dimmed\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/github-dark-dimmed'))\n },\n {\n \"id\": \"github-dark-high-contrast\",\n \"displayName\": \"GitHub Dark High Contrast\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/github-dark-high-contrast'))\n },\n {\n \"id\": \"github-light\",\n \"displayName\": \"GitHub Light\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/github-light'))\n },\n {\n \"id\": \"github-light-default\",\n \"displayName\": \"GitHub Light Default\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/github-light-default'))\n },\n {\n \"id\": \"github-light-high-contrast\",\n \"displayName\": \"GitHub Light High Contrast\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/github-light-high-contrast'))\n },\n {\n \"id\": \"gruvbox-dark-hard\",\n \"displayName\": \"Gruvbox Dark Hard\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/gruvbox-dark-hard'))\n },\n {\n \"id\": \"gruvbox-dark-medium\",\n \"displayName\": \"Gruvbox Dark Medium\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/gruvbox-dark-medium'))\n },\n {\n \"id\": \"gruvbox-dark-soft\",\n \"displayName\": \"Gruvbox Dark Soft\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/gruvbox-dark-soft'))\n },\n {\n \"id\": \"gruvbox-light-hard\",\n \"displayName\": \"Gruvbox Light Hard\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/gruvbox-light-hard'))\n },\n {\n \"id\": \"gruvbox-light-medium\",\n \"displayName\": \"Gruvbox Light Medium\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/gruvbox-light-medium'))\n },\n {\n \"id\": \"gruvbox-light-soft\",\n \"displayName\": \"Gruvbox Light Soft\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/gruvbox-light-soft'))\n },\n {\n \"id\": \"houston\",\n \"displayName\": \"Houston\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/houston'))\n },\n {\n \"id\": \"kanagawa-dragon\",\n \"displayName\": \"Kanagawa Dragon\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/kanagawa-dragon'))\n },\n {\n \"id\": \"kanagawa-lotus\",\n \"displayName\": \"Kanagawa Lotus\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/kanagawa-lotus'))\n },\n {\n \"id\": \"kanagawa-wave\",\n \"displayName\": \"Kanagawa Wave\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/kanagawa-wave'))\n },\n {\n \"id\": \"laserwave\",\n \"displayName\": \"LaserWave\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/laserwave'))\n },\n {\n \"id\": \"light-plus\",\n \"displayName\": \"Light Plus\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/light-plus'))\n },\n {\n \"id\": \"material-theme\",\n \"displayName\": \"Material Theme\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/material-theme'))\n },\n {\n \"id\": \"material-theme-darker\",\n \"displayName\": \"Material Theme Darker\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/material-theme-darker'))\n },\n {\n \"id\": \"material-theme-lighter\",\n \"displayName\": \"Material Theme Lighter\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/material-theme-lighter'))\n },\n {\n \"id\": \"material-theme-ocean\",\n \"displayName\": \"Material Theme Ocean\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/material-theme-ocean'))\n },\n {\n \"id\": \"material-theme-palenight\",\n \"displayName\": \"Material Theme Palenight\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/material-theme-palenight'))\n },\n {\n \"id\": \"min-dark\",\n \"displayName\": \"Min Dark\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/min-dark'))\n },\n {\n \"id\": \"min-light\",\n \"displayName\": \"Min Light\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/min-light'))\n },\n {\n \"id\": \"monokai\",\n \"displayName\": \"Monokai\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/monokai'))\n },\n {\n \"id\": \"night-owl\",\n \"displayName\": \"Night Owl\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/night-owl'))\n },\n {\n \"id\": \"nord\",\n \"displayName\": \"Nord\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/nord'))\n },\n {\n \"id\": \"one-dark-pro\",\n \"displayName\": \"One Dark Pro\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/one-dark-pro'))\n },\n {\n \"id\": \"one-light\",\n \"displayName\": \"One Light\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/one-light'))\n },\n {\n \"id\": \"plastic\",\n \"displayName\": \"Plastic\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/plastic'))\n },\n {\n \"id\": \"poimandres\",\n \"displayName\": \"Poimandres\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/poimandres'))\n },\n {\n \"id\": \"red\",\n \"displayName\": \"Red\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/red'))\n },\n {\n \"id\": \"rose-pine\",\n \"displayName\": \"Ros\\xE9 Pine\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/rose-pine'))\n },\n {\n \"id\": \"rose-pine-dawn\",\n \"displayName\": \"Ros\\xE9 Pine Dawn\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/rose-pine-dawn'))\n },\n {\n \"id\": \"rose-pine-moon\",\n \"displayName\": \"Ros\\xE9 Pine Moon\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/rose-pine-moon'))\n },\n {\n \"id\": \"slack-dark\",\n \"displayName\": \"Slack Dark\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/slack-dark'))\n },\n {\n \"id\": \"slack-ochin\",\n \"displayName\": \"Slack Ochin\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/slack-ochin'))\n },\n {\n \"id\": \"snazzy-light\",\n \"displayName\": \"Snazzy Light\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/snazzy-light'))\n },\n {\n \"id\": \"solarized-dark\",\n \"displayName\": \"Solarized Dark\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/solarized-dark'))\n },\n {\n \"id\": \"solarized-light\",\n \"displayName\": \"Solarized Light\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/solarized-light'))\n },\n {\n \"id\": \"synthwave-84\",\n \"displayName\": \"Synthwave '84\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/synthwave-84'))\n },\n {\n \"id\": \"tokyo-night\",\n \"displayName\": \"Tokyo Night\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/tokyo-night'))\n },\n {\n \"id\": \"vesper\",\n \"displayName\": \"Vesper\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/vesper'))\n },\n {\n \"id\": \"vitesse-black\",\n \"displayName\": \"Vitesse Black\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/vitesse-black'))\n },\n {\n \"id\": \"vitesse-dark\",\n \"displayName\": \"Vitesse Dark\",\n \"type\": \"dark\",\n \"import\": (() => import('@shikijs/themes/vitesse-dark'))\n },\n {\n \"id\": \"vitesse-light\",\n \"displayName\": \"Vitesse Light\",\n \"type\": \"light\",\n \"import\": (() => import('@shikijs/themes/vitesse-light'))\n }\n];\nconst bundledThemes = Object.fromEntries(bundledThemesInfo.map((i) => [i.id, i.import]));\n\nexport { bundledThemes, bundledThemesInfo };\n","class ShikiError extends Error {\n constructor(message) {\n super(message);\n this.name = \"ShikiError\";\n }\n}\n\nfunction getHeapMax() {\n return 2147483648;\n}\nfunction _emscripten_get_now() {\n return typeof performance !== \"undefined\" ? performance.now() : Date.now();\n}\nconst alignUp = (x, multiple) => x + (multiple - x % multiple) % multiple;\nasync function main(init) {\n let wasmMemory;\n let buffer;\n const binding = {};\n function updateGlobalBufferAndViews(buf) {\n buffer = buf;\n binding.HEAPU8 = new Uint8Array(buf);\n binding.HEAPU32 = new Uint32Array(buf);\n }\n function _emscripten_memcpy_big(dest, src, num) {\n binding.HEAPU8.copyWithin(dest, src, src + num);\n }\n function emscripten_realloc_buffer(size) {\n try {\n wasmMemory.grow(size - buffer.byteLength + 65535 >>> 16);\n updateGlobalBufferAndViews(wasmMemory.buffer);\n return 1;\n } catch {\n }\n }\n function _emscripten_resize_heap(requestedSize) {\n const oldSize = binding.HEAPU8.length;\n requestedSize = requestedSize >>> 0;\n const maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize)\n return false;\n for (let cutDown = 1; cutDown <= 4; cutDown *= 2) {\n let overGrownHeapSize = oldSize * (1 + 0.2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n const newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));\n const replacement = emscripten_realloc_buffer(newSize);\n if (replacement)\n return true;\n }\n return false;\n }\n const UTF8Decoder = typeof TextDecoder != \"undefined\" ? new TextDecoder(\"utf8\") : void 0;\n function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead = 1024) {\n const endIdx = idx + maxBytesToRead;\n let endPtr = idx;\n while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;\n if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {\n return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr));\n }\n let str = \"\";\n while (idx < endPtr) {\n let u0 = heapOrArray[idx++];\n if (!(u0 & 128)) {\n str += String.fromCharCode(u0);\n continue;\n }\n const u1 = heapOrArray[idx++] & 63;\n if ((u0 & 224) === 192) {\n str += String.fromCharCode((u0 & 31) << 6 | u1);\n continue;\n }\n const u2 = heapOrArray[idx++] & 63;\n if ((u0 & 240) === 224) {\n u0 = (u0 & 15) << 12 | u1 << 6 | u2;\n } else {\n u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63;\n }\n if (u0 < 65536) {\n str += String.fromCharCode(u0);\n } else {\n const ch = u0 - 65536;\n str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);\n }\n }\n return str;\n }\n function UTF8ToString(ptr, maxBytesToRead) {\n return ptr ? UTF8ArrayToString(binding.HEAPU8, ptr, maxBytesToRead) : \"\";\n }\n const asmLibraryArg = {\n emscripten_get_now: _emscripten_get_now,\n emscripten_memcpy_big: _emscripten_memcpy_big,\n emscripten_resize_heap: _emscripten_resize_heap,\n fd_write: () => 0\n };\n async function createWasm() {\n const info = {\n env: asmLibraryArg,\n wasi_snapshot_preview1: asmLibraryArg\n };\n const exports$1 = await init(info);\n wasmMemory = exports$1.memory;\n updateGlobalBufferAndViews(wasmMemory.buffer);\n Object.assign(binding, exports$1);\n binding.UTF8ToString = UTF8ToString;\n }\n await createWasm();\n return binding;\n}\n\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nlet onigBinding = null;\nfunction throwLastOnigError(onigBinding2) {\n throw new ShikiError(onigBinding2.UTF8ToString(onigBinding2.getLastOnigError()));\n}\nclass UtfString {\n constructor(str) {\n __publicField(this, \"utf16Length\");\n __publicField(this, \"utf8Length\");\n __publicField(this, \"utf16Value\");\n __publicField(this, \"utf8Value\");\n __publicField(this, \"utf16OffsetToUtf8\");\n __publicField(this, \"utf8OffsetToUtf16\");\n const utf16Length = str.length;\n const utf8Length = UtfString._utf8ByteLength(str);\n const computeIndicesMapping = utf8Length !== utf16Length;\n const utf16OffsetToUtf8 = computeIndicesMapping ? new Uint32Array(utf16Length + 1) : null;\n if (computeIndicesMapping)\n utf16OffsetToUtf8[utf16Length] = utf8Length;\n const utf8OffsetToUtf16 = computeIndicesMapping ? new Uint32Array(utf8Length + 1) : null;\n if (computeIndicesMapping)\n utf8OffsetToUtf16[utf8Length] = utf16Length;\n const utf8Value = new Uint8Array(utf8Length);\n let i8 = 0;\n for (let i16 = 0; i16 < utf16Length; i16++) {\n const charCode = str.charCodeAt(i16);\n let codePoint = charCode;\n let wasSurrogatePair = false;\n if (charCode >= 55296 && charCode <= 56319) {\n if (i16 + 1 < utf16Length) {\n const nextCharCode = str.charCodeAt(i16 + 1);\n if (nextCharCode >= 56320 && nextCharCode <= 57343) {\n codePoint = (charCode - 55296 << 10) + 65536 | nextCharCode - 56320;\n wasSurrogatePair = true;\n }\n }\n }\n if (computeIndicesMapping) {\n utf16OffsetToUtf8[i16] = i8;\n if (wasSurrogatePair)\n utf16OffsetToUtf8[i16 + 1] = i8;\n if (codePoint <= 127) {\n utf8OffsetToUtf16[i8 + 0] = i16;\n } else if (codePoint <= 2047) {\n utf8OffsetToUtf16[i8 + 0] = i16;\n utf8OffsetToUtf16[i8 + 1] = i16;\n } else if (codePoint <= 65535) {\n utf8OffsetToUtf16[i8 + 0] = i16;\n utf8OffsetToUtf16[i8 + 1] = i16;\n utf8OffsetToUtf16[i8 + 2] = i16;\n } else {\n utf8OffsetToUtf16[i8 + 0] = i16;\n utf8OffsetToUtf16[i8 + 1] = i16;\n utf8OffsetToUtf16[i8 + 2] = i16;\n utf8OffsetToUtf16[i8 + 3] = i16;\n }\n }\n if (codePoint <= 127) {\n utf8Value[i8++] = codePoint;\n } else if (codePoint <= 2047) {\n utf8Value[i8++] = 192 | (codePoint & 1984) >>> 6;\n utf8Value[i8++] = 128 | (codePoint & 63) >>> 0;\n } else if (codePoint <= 65535) {\n utf8Value[i8++] = 224 | (codePoint & 61440) >>> 12;\n utf8Value[i8++] = 128 | (codePoint & 4032) >>> 6;\n utf8Value[i8++] = 128 | (codePoint & 63) >>> 0;\n } else {\n utf8Value[i8++] = 240 | (codePoint & 1835008) >>> 18;\n utf8Value[i8++] = 128 | (codePoint & 258048) >>> 12;\n utf8Value[i8++] = 128 | (codePoint & 4032) >>> 6;\n utf8Value[i8++] = 128 | (codePoint & 63) >>> 0;\n }\n if (wasSurrogatePair)\n i16++;\n }\n this.utf16Length = utf16Length;\n this.utf8Length = utf8Length;\n this.utf16Value = str;\n this.utf8Value = utf8Value;\n this.utf16OffsetToUtf8 = utf16OffsetToUtf8;\n this.utf8OffsetToUtf16 = utf8OffsetToUtf16;\n }\n static _utf8ByteLength(str) {\n let result = 0;\n for (let i = 0, len = str.length; i < len; i++) {\n const charCode = str.charCodeAt(i);\n let codepoint = charCode;\n let wasSurrogatePair = false;\n if (charCode >= 55296 && charCode <= 56319) {\n if (i + 1 < len) {\n const nextCharCode = str.charCodeAt(i + 1);\n if (nextCharCode >= 56320 && nextCharCode <= 57343) {\n codepoint = (charCode - 55296 << 10) + 65536 | nextCharCode - 56320;\n wasSurrogatePair = true;\n }\n }\n }\n if (codepoint <= 127)\n result += 1;\n else if (codepoint <= 2047)\n result += 2;\n else if (codepoint <= 65535)\n result += 3;\n else\n result += 4;\n if (wasSurrogatePair)\n i++;\n }\n return result;\n }\n createString(onigBinding2) {\n const result = onigBinding2.omalloc(this.utf8Length);\n onigBinding2.HEAPU8.set(this.utf8Value, result);\n return result;\n }\n}\nconst _OnigString = class _OnigString {\n constructor(str) {\n __publicField(this, \"id\", ++_OnigString.LAST_ID);\n __publicField(this, \"_onigBinding\");\n __publicField(this, \"content\");\n __publicField(this, \"utf16Length\");\n __publicField(this, \"utf8Length\");\n __publicField(this, \"utf16OffsetToUtf8\");\n __publicField(this, \"utf8OffsetToUtf16\");\n __publicField(this, \"ptr\");\n if (!onigBinding)\n throw new ShikiError(\"Must invoke loadWasm first.\");\n this._onigBinding = onigBinding;\n this.content = str;\n const utfString = new UtfString(str);\n this.utf16Length = utfString.utf16Length;\n this.utf8Length = utfString.utf8Length;\n this.utf16OffsetToUtf8 = utfString.utf16OffsetToUtf8;\n this.utf8OffsetToUtf16 = utfString.utf8OffsetToUtf16;\n if (this.utf8Length < 1e4 && !_OnigString._sharedPtrInUse) {\n if (!_OnigString._sharedPtr)\n _OnigString._sharedPtr = onigBinding.omalloc(1e4);\n _OnigString._sharedPtrInUse = true;\n onigBinding.HEAPU8.set(utfString.utf8Value, _OnigString._sharedPtr);\n this.ptr = _OnigString._sharedPtr;\n } else {\n this.ptr = utfString.createString(onigBinding);\n }\n }\n convertUtf8OffsetToUtf16(utf8Offset) {\n if (this.utf8OffsetToUtf16) {\n if (utf8Offset < 0)\n return 0;\n if (utf8Offset > this.utf8Length)\n return this.utf16Length;\n return this.utf8OffsetToUtf16[utf8Offset];\n }\n return utf8Offset;\n }\n convertUtf16OffsetToUtf8(utf16Offset) {\n if (this.utf16OffsetToUtf8) {\n if (utf16Offset < 0)\n return 0;\n if (utf16Offset > this.utf16Length)\n return this.utf8Length;\n return this.utf16OffsetToUtf8[utf16Offset];\n }\n return utf16Offset;\n }\n dispose() {\n if (this.ptr === _OnigString._sharedPtr)\n _OnigString._sharedPtrInUse = false;\n else\n this._onigBinding.ofree(this.ptr);\n }\n};\n__publicField(_OnigString, \"LAST_ID\", 0);\n__publicField(_OnigString, \"_sharedPtr\", 0);\n// a pointer to a string of 10000 bytes\n__publicField(_OnigString, \"_sharedPtrInUse\", false);\nlet OnigString = _OnigString;\nclass OnigScanner {\n constructor(patterns) {\n __publicField(this, \"_onigBinding\");\n __publicField(this, \"_ptr\");\n if (!onigBinding)\n throw new ShikiError(\"Must invoke loadWasm first.\");\n const strPtrsArr = [];\n const strLenArr = [];\n for (let i = 0, len = patterns.length; i < len; i++) {\n const utfString = new UtfString(patterns[i]);\n strPtrsArr[i] = utfString.createString(onigBinding);\n strLenArr[i] = utfString.utf8Length;\n }\n const strPtrsPtr = onigBinding.omalloc(4 * patterns.length);\n onigBinding.HEAPU32.set(strPtrsArr, strPtrsPtr / 4);\n const strLenPtr = onigBinding.omalloc(4 * patterns.length);\n onigBinding.HEAPU32.set(strLenArr, strLenPtr / 4);\n const scannerPtr = onigBinding.createOnigScanner(strPtrsPtr, strLenPtr, patterns.length);\n for (let i = 0, len = patterns.length; i < len; i++)\n onigBinding.ofree(strPtrsArr[i]);\n onigBinding.ofree(strLenPtr);\n onigBinding.ofree(strPtrsPtr);\n if (scannerPtr === 0)\n throwLastOnigError(onigBinding);\n this._onigBinding = onigBinding;\n this._ptr = scannerPtr;\n }\n dispose() {\n this._onigBinding.freeOnigScanner(this._ptr);\n }\n findNextMatchSync(string, startPosition, arg) {\n let options = 0 /* None */;\n if (typeof arg === \"number\") {\n options = arg;\n }\n if (typeof string === \"string\") {\n string = new OnigString(string);\n const result = this._findNextMatchSync(string, startPosition, false, options);\n string.dispose();\n return result;\n }\n return this._findNextMatchSync(string, startPosition, false, options);\n }\n _findNextMatchSync(string, startPosition, debugCall, options) {\n const onigBinding2 = this._onigBinding;\n const resultPtr = onigBinding2.findNextOnigScannerMatch(this._ptr, string.id, string.ptr, string.utf8Length, string.convertUtf16OffsetToUtf8(startPosition), options);\n if (resultPtr === 0) {\n return null;\n }\n const HEAPU32 = onigBinding2.HEAPU32;\n let offset = resultPtr / 4;\n const index = HEAPU32[offset++];\n const count = HEAPU32[offset++];\n const captureIndices = [];\n for (let i = 0; i < count; i++) {\n const beg = string.convertUtf8OffsetToUtf16(HEAPU32[offset++]);\n const end = string.convertUtf8OffsetToUtf16(HEAPU32[offset++]);\n captureIndices[i] = {\n start: beg,\n end,\n length: end - beg\n };\n }\n return {\n index,\n captureIndices\n };\n }\n}\nfunction isInstantiatorOptionsObject(dataOrOptions) {\n return typeof dataOrOptions.instantiator === \"function\";\n}\nfunction isInstantiatorModule(dataOrOptions) {\n return typeof dataOrOptions.default === \"function\";\n}\nfunction isDataOptionsObject(dataOrOptions) {\n return typeof dataOrOptions.data !== \"undefined\";\n}\nfunction isResponse(dataOrOptions) {\n return typeof Response !== \"undefined\" && dataOrOptions instanceof Response;\n}\nfunction isArrayBuffer(data) {\n return typeof ArrayBuffer !== \"undefined\" && (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) || typeof Buffer !== \"undefined\" && Buffer.isBuffer?.(data) || typeof SharedArrayBuffer !== \"undefined\" && data instanceof SharedArrayBuffer || typeof Uint32Array !== \"undefined\" && data instanceof Uint32Array;\n}\nlet initPromise;\nfunction loadWasm(options) {\n if (initPromise)\n return initPromise;\n async function _load() {\n onigBinding = await main(async (info) => {\n let instance = options;\n instance = await instance;\n if (typeof instance === \"function\")\n instance = await instance(info);\n if (typeof instance === \"function\")\n instance = await instance(info);\n if (isInstantiatorOptionsObject(instance)) {\n instance = await instance.instantiator(info);\n } else if (isInstantiatorModule(instance)) {\n instance = await instance.default(info);\n } else {\n if (isDataOptionsObject(instance))\n instance = instance.data;\n if (isResponse(instance)) {\n if (typeof WebAssembly.instantiateStreaming === \"function\")\n instance = await _makeResponseStreamingLoader(instance)(info);\n else\n instance = await _makeResponseNonStreamingLoader(instance)(info);\n } else if (isArrayBuffer(instance)) {\n instance = await _makeArrayBufferLoader(instance)(info);\n } else if (instance instanceof WebAssembly.Module) {\n instance = await _makeArrayBufferLoader(instance)(info);\n } else if (\"default\" in instance && instance.default instanceof WebAssembly.Module) {\n instance = await _makeArrayBufferLoader(instance.default)(info);\n }\n }\n if (\"instance\" in instance)\n instance = instance.instance;\n if (\"exports\" in instance)\n instance = instance.exports;\n return instance;\n });\n }\n initPromise = _load();\n return initPromise;\n}\nfunction _makeArrayBufferLoader(data) {\n return (importObject) => WebAssembly.instantiate(data, importObject);\n}\nfunction _makeResponseStreamingLoader(data) {\n return (importObject) => WebAssembly.instantiateStreaming(data, importObject);\n}\nfunction _makeResponseNonStreamingLoader(data) {\n return async (importObject) => {\n const arrayBuffer = await data.arrayBuffer();\n return WebAssembly.instantiate(arrayBuffer, importObject);\n };\n}\n\nlet _defaultWasmLoader;\nfunction setDefaultWasmLoader(_loader) {\n _defaultWasmLoader = _loader;\n}\nfunction getDefaultWasmLoader() {\n return _defaultWasmLoader;\n}\nasync function createOnigurumaEngine(options) {\n if (options)\n await loadWasm(options);\n return {\n createScanner(patterns) {\n return new OnigScanner(patterns.map((p) => typeof p === \"string\" ? p : p.source));\n },\n createString(s) {\n return new OnigString(s);\n }\n };\n}\n\nexport { createOnigurumaEngine, getDefaultWasmLoader, loadWasm, setDefaultWasmLoader };\n","import { createSingletonShorthands, createBundledHighlighter, guessEmbeddedLanguages } from '@shikijs/core';\nexport * from '@shikijs/core';\nimport { bundledLanguages } from './langs.mjs';\nexport { bundledLanguagesAlias, bundledLanguagesBase, bundledLanguagesInfo } from './langs.mjs';\nimport { bundledThemes } from './themes.mjs';\nexport { bundledThemesInfo } from './themes.mjs';\nimport { createOnigurumaEngine } from '@shikijs/engine-oniguruma';\n\nconst createHighlighter = /* @__PURE__ */ createBundledHighlighter({\n langs: bundledLanguages,\n themes: bundledThemes,\n engine: () => createOnigurumaEngine(import('shiki/wasm'))\n});\nconst {\n codeToHtml,\n codeToHast,\n codeToTokens,\n codeToTokensBase,\n codeToTokensWithThemes,\n getSingletonHighlighter,\n getLastGrammarState\n} = /* @__PURE__ */ createSingletonShorthands(\n createHighlighter,\n { guessEmbeddedLanguages }\n);\n\nexport { bundledLanguages, bundledThemes, codeToHast, codeToHtml, codeToTokens, codeToTokensBase, codeToTokensWithThemes, createHighlighter, getLastGrammarState, getSingletonHighlighter };\n","<script lang=\"ts\">\r\n\timport { onMount } from 'svelte';\r\n\timport { codeToHtml } from 'shiki';\r\n\r\n\t/**\r\n\t * Props for the CodeBlock component.\r\n\t * \r\n\t * **SECURITY WARNING**: The `code` prop must contain only TRUSTED content.\r\n\t * This component uses {@html} to render syntax-highlighted code. Never pass\r\n\t * arbitrary user input directly to `code` unless it has been properly sanitized\r\n\t * upstream. Unescaped user content creates an XSS vulnerability.\r\n\t */\r\n\tinterface Props {\r\n\t\t/**\r\n\t\t * The code content to display. **MUST BE TRUSTED** - never pass unsanitized user input.\r\n\t\t */\r\n\t\tcode: string;\r\n\t\tlanguage?: string;\r\n\t\ttheme?: 'dark' | 'light';\r\n\t\tshowLineNumbers?: boolean;\r\n\t\thighlightLines?: number[];\r\n\t\tfilename?: string;\r\n\t}\r\n\r\n\tlet {\r\n\t\tcode,\r\n\t\tlanguage = 'typescript',\r\n\t\ttheme = 'dark',\r\n\t\tshowLineNumbers = false,\r\n\t\thighlightLines = [],\r\n\t\tfilename\r\n\t}: Props = $props();\r\n\r\n\tlet highlightedHtml = $state('');\r\n\tlet isLoading = $state(true);\r\n\r\n\t/**\r\n\t * HTML-escape function to prevent XSS attacks when building HTML strings.\r\n\t * Escapes: & < > \" ' characters.\r\n\t */\r\n\tfunction escapeHtml(text: string): string {\r\n\t\tconst div = document.createElement('div');\r\n\t\tdiv.textContent = text;\r\n\t\treturn div.innerHTML;\r\n\t}\r\n\r\n\tonMount(async () => {\r\n\t\tif (typeof DOMParser === 'undefined') {\r\n\t\t\t// SSR fallback: escape HTML to prevent XSS\r\n\t\t\tconst escapedCode = escapeHtml(code);\r\n\t\t\thighlightedHtml = `<pre><code>${escapedCode}</code></pre>`;\r\n\t\t\tisLoading = false;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tconst html = await codeToHtml(code, {\r\n\t\t\t\tlang: language,\r\n\t\t\t\ttheme: theme === 'dark' ? 'github-dark' : 'github-light'\r\n\t\t\t});\r\n\r\n\t\t\t// Process highlightLines if provided\r\n\t\t\tif (highlightLines && highlightLines.length > 0) {\r\n\t\t\t\tconst parser = new DOMParser();\r\n\t\t\t\tconst doc = parser.parseFromString(html, 'text/html');\r\n\t\t\t\tconst lines = doc.querySelectorAll('.shiki .line');\r\n\r\n\t\t\t\thighlightLines.forEach((lineNum) => {\r\n\t\t\t\t\tconst lineEl = lines[lineNum - 1];\r\n\t\t\t\t\tif (lineEl) {\r\n\t\t\t\t\t\tlineEl.classList.add('highlighted');\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\thighlightedHtml = doc.body.innerHTML;\r\n\t\t\t} else {\r\n\t\t\t\thighlightedHtml = html;\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error('Shiki highlighting error:', error);\r\n\t\t\t// Fallback with HTML escaping to prevent XSS\r\n\t\t\tconst escapedCode = escapeHtml(code);\r\n\t\t\tconst fallbackHtml = `<pre><code>${escapedCode}</code></pre>`;\r\n\r\n\t\t\tif (highlightLines && highlightLines.length > 0) {\r\n\t\t\t\tconst parser = new DOMParser();\r\n\t\t\t\tconst doc = parser.parseFromString(fallbackHtml, 'text/html');\r\n\t\t\t\tconst codeLines = code.split('\\n');\r\n\t\t\t\tconst codeEl = doc.querySelector('code');\r\n\r\n\t\t\t\tif (codeEl) {\r\n\t\t\t\t\t// Escape each line individually to prevent XSS\r\n\t\t\t\t\tcodeEl.innerHTML = codeLines\r\n\t\t\t\t\t\t.map(\r\n\t\t\t\t\t\t\t(line, i) =>\r\n\t\t\t\t\t\t\t\t`<div class=\"line ${highlightLines.includes(i + 1) ? 'highlighted' : ''}\">${escapeHtml(line) || ' '}</div>`\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\t.join('');\r\n\t\t\t\t}\r\n\r\n\t\t\t\thighlightedHtml = doc.body.innerHTML;\r\n\t\t\t} else {\r\n\t\t\t\thighlightedHtml = fallbackHtml;\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\tisLoading = false;\r\n\t\t}\r\n\t});\r\n\r\n\tconst lines = $derived(code.split('\\n'));\r\n</script>\r\n\r\n<div class=\"glass-panel rounded-lg overflow-hidden\">\r\n\t{#if filename}\r\n\t\t<div\r\n\t\t\tclass=\"px-4 py-2 border-b border-border\"\r\n\t\t\tstyle=\"background: var(--color-base-2); color: var(--color-text-soft); font-family: var(--font-mono); font-size: 0.875rem;\"\r\n\t\t>\r\n\t\t\t{filename}\r\n\t\t</div>\r\n\t{/if}\r\n\r\n\t<div\r\n\t\tclass=\"p-4 overflow-x-auto\"\r\n\t\tstyle=\"background: var(--color-base-1); font-family: var(--font-mono); font-size: 0.875rem; line-height: 1.6;\"\r\n\t>\r\n\t\t{#if isLoading}\r\n\t\t\t<pre><code>{code}</code></pre>\r\n\t\t{:else if showLineNumbers}\r\n\t\t\t<div class=\"flex\">\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"pr-4 border-r border-border select-none\"\r\n\t\t\t\t\tstyle=\"color: var(--color-text-muted);\"\r\n\t\t\t\t>\r\n\t\t\t\t\t{#each lines as _, i}\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\tclass:highlighted={highlightLines.includes(i + 1)}\r\n\t\t\t\t\t\t\tstyle={highlightLines.includes(i + 1)\r\n\t\t\t\t\t\t\t\t? 'background: rgba(127, 61, 255, 0.1);'\r\n\t\t\t\t\t\t\t\t: ''}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{i + 1}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t{/each}\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"pl-4 flex-1\">\r\n\t\t\t\t\t{@html highlightedHtml}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t{:else}\r\n\t\t\t<div>\r\n\t\t\t\t{@html highlightedHtml}\r\n\t\t\t</div>\r\n\t\t{/if}\r\n\t</div>\r\n</div>\r\n\r\n<style>\r\n\t/* Custom scrollbar styling */\r\n\tdiv::-webkit-scrollbar {\r\n\t\theight: 8px;\r\n\t}\r\n\r\n\tdiv::-webkit-scrollbar-track {\r\n\t\tbackground: var(--color-base-1);\r\n\t}\r\n\r\n\tdiv::-webkit-scrollbar-thumb {\r\n\t\tbackground: var(--color-accent);\r\n\t\tborder-radius: var(--radius-sm);\r\n\t}\r\n\r\n\tdiv::-webkit-scrollbar-thumb:hover {\r\n\t\tbackground: var(--color-accent-soft);\r\n\t}\r\n\r\n\t/* Remove default shiki styles that might conflict */\r\n\t:global(.shiki) {\r\n\t\tbackground: transparent !important;\r\n\t\tpadding: 0 !important;\r\n\t}\r\n\r\n\t:global(.shiki code) {\r\n\t\tfont-family: var(--font-mono);\r\n\t}\r\n\r\n\t/* Highlight gutter numbers */\r\n\t.highlighted {\r\n\t\tbackground: rgba(127, 61, 255, 0.1);\r\n\t}\r\n\r\n\t/* Highlight actual code lines */\r\n\t:global(.line.highlighted) {\r\n\t\tbackground: rgba(127, 61, 255, 0.1);\r\n\t\tdisplay: inline-block;\r\n\t\twidth: 100%;\r\n\t}\r\n</style>\r\n","<script lang=\"ts\">\r\n\tinterface Props {\r\n\t\tlabel: string;\r\n\t\tvalue: string | number;\r\n\t\tchange?: number;\r\n\t\ttrend?: 'up' | 'down' | 'neutral';\r\n\t\ticon?: import('svelte').Snippet;\r\n\t\tdescription?: string;\r\n\t}\r\n\r\n\tlet { label, value, change, trend, icon, description }: Props = $props();\r\n\r\n\tconst trendColors = {\r\n\t\tup: 'var(--color-success)',\r\n\t\tdown: 'var(--color-error)',\r\n\t\tneutral: 'var(--color-text-muted)'\r\n\t};\r\n\r\n\tconst trendColor = $derived(trend ? trendColors[trend] : 'var(--color-text-muted)');\r\n\tconst showGlow = $derived(trend === 'up');\r\n</script>\r\n\r\n<div class=\"glass-panel rounded-[var(--radius-xl)] p-6\">\r\n\t<!-- Top Row: Icon & Label -->\r\n\t<div class=\"flex items-start justify-between mb-4\">\r\n\t\t<div class=\"flex-1\">\r\n\t\t\t<div\r\n\t\t\t\tclass=\"uppercase tracking-wider\"\r\n\t\t\t\tstyle=\"color: var(--color-text-soft); font-family: var(--font-body); font-size: 0.875rem; font-weight: 500;\"\r\n\t\t\t>\r\n\t\t\t\t{label}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\r\n\t\t{#if icon}\r\n\t\t\t<div class=\"w-10 h-10\" style=\"color: var(--color-accent-soft);\">\r\n\t\t\t\t{@render icon()}\r\n\t\t\t</div>\r\n\t\t{/if}\r\n\t</div>\r\n\r\n\t<!-- Value Display -->\r\n\t<div\r\n\t\tclass=\"mb-2\"\r\n\t\tclass:text-glow={showGlow}\r\n\t\tstyle=\"color: var(--color-text); font-family: var(--font-heading); font-size: 2.5rem; font-weight: 700; line-height: 1.2;\"\r\n\t>\r\n\t\t{value}\r\n\t</div>\r\n\r\n\t<!-- Change Indicator & Description -->\r\n\t{#if change !== undefined || description}\r\n\t\t<div class=\"flex items-center gap-2 flex-wrap\">\r\n\t\t\t{#if change !== undefined}\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"inline-flex items-center gap-1 font-semibold text-sm\"\r\n\t\t\t\t\tstyle=\"color: {trendColor};\"\r\n\t\t\t\t>\r\n\t\t\t\t\t{#if trend === 'up'}\r\n\t\t\t\t\t\t<svg\r\n\t\t\t\t\t\t\twidth=\"16\"\r\n\t\t\t\t\t\t\theight=\"16\"\r\n\t\t\t\t\t\t\tviewBox=\"0 0 16 16\"\r\n\t\t\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<path\r\n\t\t\t\t\t\t\t\td=\"M8 12V4M8 4L4 8M8 4L12 8\"\r\n\t\t\t\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\t\t\t\tstroke-width=\"2\"\r\n\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\r\n\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</svg>\r\n\t\t\t\t\t{:else if trend === 'down'}\r\n\t\t\t\t\t\t<svg\r\n\t\t\t\t\t\t\twidth=\"16\"\r\n\t\t\t\t\t\t\theight=\"16\"\r\n\t\t\t\t\t\t\tviewBox=\"0 0 16 16\"\r\n\t\t\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<path\r\n\t\t\t\t\t\t\t\td=\"M8 4V12M8 12L4 8M8 12L12 8\"\r\n\t\t\t\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\t\t\t\tstroke-width=\"2\"\r\n\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\r\n\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</svg>\r\n\t\t\t\t\t{/if}\r\n\t\t\t\t\t{change > 0 ? '+' : ''}{change}%\r\n\t\t\t\t</div>\r\n\t\t\t{/if}\r\n\r\n\t\t\t{#if description}\r\n\t\t\t\t<div class=\"text-xs\" style=\"color: var(--color-text-muted);\">\r\n\t\t\t\t\t{description}\r\n\t\t\t\t</div>\r\n\t\t\t{/if}\r\n\t\t</div>\r\n\t{/if}\r\n</div>\r\n","<script lang=\"ts\">\r\n import type { Snippet } from 'svelte';\r\n\r\n /**\r\n * Portal component - teleports content to a different DOM location.\r\n * \r\n * **Focus Management**: This component handles DOM manipulation only.\r\n * For focus-sensitive content (modals, drawers, toasts), the parent component\r\n * should manage focus using the patterns from Modal.svelte and Drawer.svelte:\r\n * - Store previousFocus before opening\r\n * - Focus appropriate element after mount\r\n * - Restore focus on cleanup\r\n * \r\n * **Stacking Coordination**: Multiple portals can coexist. For z-index stacking,\r\n * manage via CSS classes on the portal children or implement a portal manager.\r\n */\r\n interface Props {\r\n target?: HTMLElement | string;\r\n children?: Snippet;\r\n }\r\n\r\n let { target = 'body', children }: Props = $props();\r\n\r\n let mountElement = $state<HTMLElement | null>(null);\r\n\r\n function portal(node: HTMLElement, currentTarget: HTMLElement) {\r\n currentTarget.appendChild(node);\r\n return {\r\n update(newTarget: HTMLElement) {\r\n // Handle target prop changes by moving node to new parent\r\n if (newTarget !== currentTarget) {\r\n newTarget.appendChild(node);\r\n }\r\n },\r\n destroy() {\r\n if (node.parentNode) {\r\n node.parentNode.removeChild(node);\r\n }\r\n }\r\n };\r\n }\r\n\r\n $effect(() => {\r\n if (typeof document === 'undefined') return;\r\n\r\n // Resolve target element\r\n const targetElement = typeof target === 'string'\r\n ? document.querySelector<HTMLElement>(target)\r\n : target;\r\n\r\n if (!targetElement) return;\r\n\r\n // Create container div\r\n const container = document.createElement('div');\r\n targetElement.appendChild(container);\r\n mountElement = container;\r\n\r\n return () => {\r\n // Cleanup: remove container from DOM\r\n container.remove();\r\n mountElement = null;\r\n };\r\n });\r\n</script>\r\n\r\n{#if mountElement}\r\n {#if children}\r\n <div use:portal={mountElement}>\r\n {@render children()}\r\n </div>\r\n {/if}\r\n{/if}\r\n","<script lang=\"ts\">\r\n import type { Snippet } from 'svelte';\r\n import { createId } from '../../lib/internal/id.js';\r\n\r\n interface Props {\r\n open: boolean;\r\n title: string;\r\n children?: Snippet;\r\n onToggle?: () => void;\r\n }\r\n\r\n let { open, title, children, onToggle }: Props = $props();\r\n\r\n let contentElement = $state<HTMLDivElement>();\r\n let openLocal = $state(open);\r\n\r\n const headerId = createId('collapse-header');\r\n const contentId = createId('collapse-content');\r\n\r\n function toggleLocal() {\r\n openLocal = !openLocal;\r\n }\r\n\r\n let effectiveOpen = $derived(onToggle ? open : openLocal);\r\n let maxHeight = $derived(effectiveOpen && contentElement ? `${contentElement.scrollHeight}px` : '0px');\r\n</script>\r\n\r\n<div class=\"border border-border rounded-md overflow-hidden {effectiveOpen ? 'glass-panel' : ''}\">\r\n <button\r\n id={headerId}\r\n type=\"button\"\r\n onclick={onToggle ?? toggleLocal}\r\n class=\"w-full flex items-center justify-between p-4 text-left text-text font-medium hover:bg-base-3 transition-colors\"\r\n aria-expanded={effectiveOpen}\r\n aria-controls={contentId}\r\n >\r\n <span>{title}</span>\r\n <svg\r\n class=\"w-5 h-5 transition-transform duration-300 ease-luxe {effectiveOpen ? 'rotate-180' : ''}\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M19 9l-7 7-7-7\" />\r\n </svg>\r\n </button>\r\n\r\n <div\r\n bind:this={contentElement}\r\n id={contentId}\r\n class=\"overflow-hidden transition-[max-height] duration-300 ease-luxe\"\r\n style=\"max-height: {maxHeight};\"\r\n role=\"region\"\r\n aria-labelledby={headerId}\r\n >\r\n <div class=\"p-4 text-text-soft border-t border-border\">\r\n {@render children?.()}\r\n </div>\r\n </div>\r\n</div>\r\n","<script lang=\"ts\">\r\n import type { Snippet } from 'svelte';\r\n import Collapse from './Collapse.svelte';\r\n\r\n interface AccordionItem {\r\n id: string;\r\n title: string;\r\n content: string | Snippet;\r\n }\r\n\r\n interface Props {\r\n items: AccordionItem[];\r\n openItems?: string | string[];\r\n mode?: 'single' | 'multiple';\r\n }\r\n\r\n let { items, openItems = $bindable([]), mode = 'single' }: Props = $props();\r\n\r\n // Normalize openItems to array\r\n let openItemsArray = $derived(\r\n mode === 'single'\r\n ? typeof openItems === 'string'\r\n ? [openItems]\r\n : []\r\n : Array.isArray(openItems)\r\n ? openItems\r\n : []\r\n );\r\n\r\n function isItemOpen(id: string): boolean {\r\n return openItemsArray.includes(id);\r\n }\r\n\r\n function toggleItem(id: string) {\r\n if (mode === 'single') {\r\n // Single mode: only one item open at a time\r\n if (isItemOpen(id)) {\r\n openItems = '';\r\n } else {\r\n openItems = id;\r\n }\r\n } else {\r\n // Multiple mode: toggle independently\r\n if (isItemOpen(id)) {\r\n openItems = openItemsArray.filter(itemId => itemId !== id);\r\n } else {\r\n openItems = [...openItemsArray, id];\r\n }\r\n }\r\n }\r\n</script>\r\n\r\n<div class=\"space-y-2\">\r\n {#each items as item (item.id)}\r\n <Collapse\r\n title={item.title}\r\n open={isItemOpen(item.id)}\r\n onToggle={() => toggleItem(item.id)}\r\n >\r\n {#if typeof item.content === 'string'}\r\n {item.content}\r\n {:else}\r\n {@render item.content()}\r\n {/if}\r\n </Collapse>\r\n {/each}\r\n</div>\r\n","<script lang=\"ts\">\r\n import type { Snippet } from 'svelte';\r\n\r\n interface CarouselItem {\r\n id: string;\r\n content: Snippet | string;\r\n }\r\n\r\n interface Props {\r\n items: CarouselItem[];\r\n currentIndex?: number;\r\n autoplay?: boolean;\r\n autoplayInterval?: number;\r\n showDots?: boolean;\r\n showArrows?: boolean;\r\n }\r\n\r\n let {\r\n items,\r\n currentIndex = $bindable(0),\r\n autoplay = false,\r\n autoplayInterval = 3000,\r\n showDots = true,\r\n showArrows = true\r\n }: Props = $props();\r\n\r\n let startX = $state(0);\r\n let currentX = $state(0);\r\n let isDragging = $state(false);\r\n\r\n function goToNext() {\r\n if (!items.length) return;\r\n currentIndex = (currentIndex + 1) % items.length;\r\n }\r\n\r\n function goToPrev() {\r\n if (!items.length) return;\r\n currentIndex = (currentIndex - 1 + items.length) % items.length;\r\n }\r\n\r\n function goToIndex(index: number) {\r\n if (items.length === 0 || index < 0 || index >= items.length) return;\r\n currentIndex = index;\r\n }\r\n\r\n function handleTouchStart(event: TouchEvent) {\r\n isDragging = true;\r\n startX = event.touches[0].clientX;\r\n currentX = startX;\r\n }\r\n\r\n function handleTouchMove(event: TouchEvent) {\r\n if (!isDragging) return;\r\n currentX = event.touches[0].clientX;\r\n }\r\n\r\n function handleTouchEnd() {\r\n if (!isDragging) return;\r\n if (!items.length) {\r\n isDragging = false;\r\n return;\r\n }\r\n isDragging = false;\r\n\r\n const diff = startX - currentX;\r\n const threshold = 50;\r\n\r\n if (diff > threshold) {\r\n goToNext();\r\n } else if (diff < -threshold) {\r\n goToPrev();\r\n }\r\n\r\n startX = 0;\r\n currentX = 0;\r\n }\r\n\r\n $effect(() => {\r\n if (!autoplay || items.length < 2) return;\r\n\r\n const interval = setInterval(goToNext, autoplayInterval);\r\n\r\n return () => {\r\n clearInterval(interval);\r\n };\r\n });\r\n\r\n // Clamp currentIndex when items change\r\n $effect(() => {\r\n if (items.length && (currentIndex < 0 || currentIndex >= items.length)) {\r\n currentIndex = 0;\r\n }\r\n });\r\n</script>\r\n\r\n<div class=\"glass-panel rounded-lg overflow-hidden relative\">\r\n <div\r\n class=\"flex transition-transform duration-300 ease-luxe\"\r\n style=\"transform: translateX(-{currentIndex * 100}%);\"\r\n ontouchstart={handleTouchStart}\r\n ontouchmove={handleTouchMove}\r\n ontouchend={handleTouchEnd}\r\n >\r\n {#each items as item (item.id)}\r\n <div class=\"min-w-full flex items-center justify-center p-8\">\r\n {#if typeof item.content === 'string'}\r\n <div class=\"text-text\">{item.content}</div>\r\n {:else}\r\n {@render item.content()}\r\n {/if}\r\n </div>\r\n {/each}\r\n </div>\r\n\r\n {#if showArrows && items.length}\r\n <button\r\n type=\"button\"\r\n onclick={goToPrev}\r\n class=\"absolute left-4 top-1/2 -translate-y-1/2 glass-panel rounded-full p-2 text-text hover:accent-glow transition-all\"\r\n aria-label=\"Previous item\"\r\n >\r\n <svg class=\"w-6 h-6\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M15 19l-7-7 7-7\" />\r\n </svg>\r\n </button>\r\n\r\n <button\r\n type=\"button\"\r\n onclick={goToNext}\r\n class=\"absolute right-4 top-1/2 -translate-y-1/2 glass-panel rounded-full p-2 text-text hover:accent-glow transition-all\"\r\n aria-label=\"Next item\"\r\n >\r\n <svg class=\"w-6 h-6\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 5l7 7-7 7\" />\r\n </svg>\r\n </button>\r\n {/if}\r\n\r\n {#if showDots && items.length}\r\n <div class=\"absolute bottom-4 left-1/2 -translate-x-1/2 flex gap-2\">\r\n {#each items as item, index (item.id)}\r\n <button\r\n type=\"button\"\r\n onclick={() => goToIndex(index)}\r\n class=\"w-2 h-2 rounded-full transition-all {index === currentIndex ? 'accent-glow bg-accent w-8' : 'bg-text-muted'}\"\r\n aria-label=\"Go to item {index + 1}\"\r\n >\r\n </button>\r\n {/each}\r\n </div>\r\n {/if}\r\n</div>\r\n","/**\r\n * @mrintel/villain-ui - A luxury Svelte 5 component library\r\n * \r\n * This is the main entry point for the component library.\r\n * \r\n * Note: Theme styles are NOT automatically imported. Consumers must explicitly\r\n * import '@mrintel/villain-ui/theme.css' in their application to use the default theme.\r\n * This gives full control over styling and allows custom theme implementations.\r\n */\r\n\r\nexport const version = '0.1.0';\r\n\r\n// ===== Button Components =====\r\nexport { Button, IconButton, ButtonGroup, LinkButton, FloatingActionButton } from './components/buttons';\r\n\r\n// ===== Form Components =====\r\nexport { Input, Textarea, Select, Checkbox, Switch, RadioGroup, RangeSlider, FileUpload, InputGroup } from './components/forms';\r\n\r\n// ===== Layout Components =====\r\nexport { Card, Panel, Grid, Container, SectionHeader, Divider } from './components/cards';\r\n\r\n// ===== Navigation Components =====\r\nexport { Navbar, Sidebar, Tabs, Breadcrumbs, Menu, DropdownMenu, ContextMenu } from './components/navigation';\r\n\r\n// ===== Overlay & Feedback Components =====\r\nexport { Modal, Alert, Spinner, Tooltip, ProgressBar, SkeletonLoader, Toast, Drawer, Popover, Dropdown, CommandPalette } from './components/overlays';\r\n\r\n// ===== Typography Components =====\r\nexport { Heading, Text, Code } from './components/typography';\r\n\r\n// ===== Data Display Components =====\r\nexport { Table, Pagination, Badge, Tag, List, Avatar, CodeBlock, Stat } from './components/data';\r\n\r\n// ===== Utility Components =====\r\nexport { Portal, Collapse, Accordion, Carousel, ScrollArea } from './components/utilities';\r\n"],"names":["PUBLIC_VERSION","EACH_ITEM_REACTIVE","EACH_INDEX_REACTIVE","EACH_IS_CONTROLLED","EACH_IS_ANIMATED","EACH_ITEM_IMMUTABLE","PROPS_IS_IMMUTABLE","PROPS_IS_RUNES","PROPS_IS_UPDATED","PROPS_IS_BINDABLE","PROPS_IS_LAZY_INITIAL","TEMPLATE_FRAGMENT","TEMPLATE_USE_IMPORT_NODE","UNINITIALIZED","NAMESPACE_HTML","NAMESPACE_SVG","ATTACHMENT_KEY","DEV","is_array","index_of","array_from","define_property","get_descriptor","get_descriptors","object_prototype","array_prototype","get_prototype_of","noop","run_all","arr","i","deferred","resolve","reject","promise","res","rej","DERIVED","EFFECT","RENDER_EFFECT","MANAGED_EFFECT","BLOCK_EFFECT","BRANCH_EFFECT","ROOT_EFFECT","BOUNDARY_EFFECT","CONNECTED","CLEAN","DIRTY","MAYBE_DIRTY","INERT","DESTROYED","EFFECT_RAN","EFFECT_TRANSPARENT","EAGER_EFFECT","HEAD_EFFECT","EFFECT_PRESERVED","USER_EFFECT","WAS_MARKED","REACTION_IS_UPDATING","ASYNC","ERROR_VALUE","STATE_SYMBOL","LEGACY_PROPS","LOADING_ATTR_SYMBOL","STALE_REACTION","async_derived_orphan","effect_in_teardown","rune","effect_in_unowned_derived","effect_orphan","effect_update_depth_exceeded","props_invalid_value","key","state_descriptors_fixed","state_prototype_fixed","state_unsafe_mutation","select_multiple_invalid_value","equals","value","safe_not_equal","a","b","safe_equals","legacy_mode_flag","tracing_mode_flag","enable_legacy_mode_flag","component_context","set_component_context","context","push","props","runes","fn","pop","component","effects","create_user_effect","is_runes","micro_tasks","run_micro_tasks","tasks","queue_micro_task","is_flushing_sync","flush_tasks","handle_error","error","effect","active_effect","active_reaction","invoke_error_boundary","e","batches","current_batch","previous_batch","batch_values","queued_root_effects","last_scheduled_effect","is_flushing","Batch","#commit_callbacks","#discard_callbacks","#pending","#blocking_pending","#deferred","#dirty_effects","#maybe_dirty_effects","root_effects","target","root","#traverse_effect_tree","#resolve","#defer_effects","flush_queued_effects","flags","is_branch","is_skippable_branch","skip","is_dirty","update_effect","child","parent","#clear_marked","set_signal_status","deps","dep","source","flush_effects","#commit","previous_batch_values","is_earlier","dummy_target","batch","sources","others","prev_queued_root_effects","marked","checked","mark_effects","blocking","schedule_effect","task","flushSync","was_flushing_sync","result","was_updating_effect","is_updating_effect","source_stacks","flush_count","set_is_updating_effect","updates","entry","infinite_loop_guard","old_values","e.effect_update_depth_exceeded","eager_block_effects","length","unlink_effect","ordered_effects","ancestor","j","reaction","depends_on","depends","signal","index","_","pause_effects","state","to_destroy","controlled_anchor","transitions","pause_children","run_out_transitions","fast_path","anchor","parent_node","clear_text_content","link","item","destroy_effect","each","node","get_collection","get_key","render_fn","fallback_fn","items","first","is_controlled","is_reactive_value","is_reactive_index","create_text","fallback","each_array","derived_safe_equal","collection","array","first_run","commit","reconcile","resume_effect","pause_effect","block","get","keys","prev","defer","should_defer_append","internal_set","create_item","branch","fragment","is_animated","current","seen","to_animate","matched","stashed","next","move","start","has_offscreen_items","destroy_length","reactive","mutable","v","mutable_source","end","dest","next_node","get_next_sibling","flatten","blockers","sync","async","d","derived","restore","capture","run","expression","async_derived","unset_context","previous_effect","previous_reaction","previous_component_context","activate_batch","set_active_effect","set_active_reaction","parent_derived","location","e.async_derived_orphan","boundary","should_suspend","deferreds","async_effect","handler","teardown","fulfil","p","go","user_derived","push_reaction_value","destroy_derived_effects","get_derived_parent_effect","execute_derived","prev_active_effect","update_reaction","update_derived","increment_write_version","is_destroying_effect","effect_tracking","status","eager_effects","eager_effects_deferred","stack","s","initial_value","immutable","trackable","set","should_proxy","untracking","current_sources","e.state_unsafe_mutation","new_value","proxy","old_value","mark_reactions","untracked_writes","set_untracked_writes","flush_eager_effects","prev_is_updating_effect","inspects","increment","reactions","not_dirty","prototype","is_proxied_array","version","parent_version","update_version","with_parent","set_update_version","prop","descriptor","e.state_descriptors_fixed","receiver","exists","has","other_s","ls","n","own_keys","e.state_prototype_fixed","get_proxied_value","is","is_firefox","first_child_getter","next_sibling_getter","get_first_child","is_text","first_child","sibling","count","next_sibling","autofocus","dom","body","listening_to_form_reset","add_form_reset_listener","evt","without_reactive_context","listen_to_event_and_reset_event","element","event","on_reset","validate_effect","e.effect_orphan","e.effect_in_unowned_derived","e.effect_in_teardown","push_effect","parent_effect","parent_last","create_effect","type","user_effect","render_effect","template_effect","values","managed","execute_effect_teardown","previously_destroying_effect","set_is_destroying_effect","destroy_effect_children","remove_dom","controller","destroy_block_effect_children","removed","remove_effect_dom","remove_reactions","transition","callback","destroy","remaining","check","local","transparent","resume_children","move_effect","new_deps","skipped_deps","write_version","read_version","dependencies","dependency","schedule_possible_effect_self_invalidation","previous_deps","previous_skipped_deps","previous_untracked_writes","previous_sources","previous_untracking","previous_update_version","remove_reaction","new_length","start_index","tick","is_derived","destroyed","depends_on_old_values","reconnect","untrack","STATUS_MASK","deep_read_state","deep_read","visited","proto","descriptors","all_registered_events","root_event_handles","create_event","event_name","options","target_handler","handle_event_propagation","passive","delegate","events","last_propagated_event","handler_element","owner_document","path","current_target","path_idx","handled_at","at_idx","handler_idx","throw_error","other_errors","parent_element","delegated","create_fragment_from_html","html","elem","assign_nodes","from_html","content","is_fragment","use_import_node","has_start","clone","from_namespace","ns","wrapped","from_svg","text","t","comment","frag","append","is_capture_event","name","DELEGATED_EVENTS","can_delegate_event","ATTRIBUTE_ALIASES","normalize_attribute","set_text","str","BranchManager","#batches","#onscreen","#offscreen","#outroing","#transition","onscreen","offscreen","k","on_destroy","#discard","snippet","get_snippet","args","branches","if_block","elseif","update_branch","condition","has_branch","flag","get_value","svg","mathml","skip_warning","slot","$$props","slot_props","slot_fn","is_interop","get_tag","is_svg","get_namespace","next_tag","child_anchor","action","payload","inited","attach","get_fn","r","f","o","clsx","_clsx","whitespace","to_class","hash","directives","classname","len","append_styles","styles","important","separator","css","to_css_name","to_style","new_style","normal_styles","important_styles","in_str","in_apo","in_comment","reserved_names","name_index","c","property","set_class","is_html","prev_classes","next_classes","next_class_name","is_present","update_styles","priority","set_style","prev_styles","next_styles","next_style_attr","select_option","select","mounting","w.select_multiple_invalid_value","option","get_option_value","option_value","init_select","observer","bind_select_value","is_reset","query","selected_option","CLASS","STYLE","IS_CUSTOM_ELEMENT","IS_HTML","set_selected","selected","set_attribute","attribute","attributes","get_attributes","get_setters","set_attributes","css_hash","should_remove_defaults","is_custom_element","preserve_attribute_case","is_option_element","setters","prev_value","prefix","opts","event_handle_key","handle","is_default","input","use_default","previous","attribute_effect","is_select","symbol","setters_cache","cache_key","element_proto","bind_value","is_numberlike_input","to_number","pending","bind_group","inputs","group_index","is_checkbox","binding_group","get_binding_group_value","bind_checked","group","__value","bind_files","is_bound_this","bound_value","element_or_component","bind_this","update","get_parts","old_parts","parts","is_store_binding","capture_store_binding","previous_is_store_binding","bindable","lazy","fallback_value","fallback_dirty","get_fallback","setter","is_entry_props","is_store_sub","e.props_invalid_value","getter","legacy_parent","mutation","overridden","variantClasses","sizeClasses","variant","size","disabled","disabledClasses","shape","shapeClasses","$.set_class","button","orientation","spacing","orientationClasses","mergedBorderClasses","spacingClasses","computedRel","$.derived","$.set_attribute","position","positionClasses","urlAlphabet","nanoid","id","bytes","scopedUrlAlphabet","createId","$.prop","errorClasses","input_1","rows","textarea","textarea_1","chevronIcon","$.set_text","text_2","$.get","option_2_value","option_2","text_4","option_4_value","option_4","select_1","containerClasses","radioId","input_value","text_1","input_1_value","min","max","step","showValue","percentage","$$render","consequent_1","consequent_2","$.set_style","files","multiple","isDragging","inputElement","handleDragOver","$.set","handleDragLeave","handleDrop","handleClick","handleInputChange","fileList","$.bind_this","$$value","div_2","$.each","ul","file","padding","hoverable","paddingClasses","$.template_effect","div","rounded","glass","glassClasses","roundedClasses","cols","gap","responsive","colsClasses","gapClasses","responsiveClasses","centered","centeredClasses","level","glow","align","headingTag","glowClasses","alignClasses","headingClasses","subtitleClasses","$$element","$$anchor","thickness","horizontalThicknessMap","verticalThicknessMap","horizontalSpacing","verticalSpacing","borderColor","horizontalClasses","verticalClasses","consequent","alternate","height","heightClasses","nav","open","side","width","widthClasses","sideClasses","currentWidth","activeTab","handleTabClick","tabId","radiusClass","tab","$$args","alternate_1","consequent_3","handleItemClick","$.snippet","node_5","placement","menuElement","wrapperElement","placementClasses","toggleMenu","handleClickOutside","handleEscape","$.user_effect","div_1","x","y","$.state","handleContextMenu","menuRect","viewportWidth","viewportHeight","closeOnBackdrop","closeOnEscape","modalElement","previousFocus","titleId","handleClose","handleBackdropClick","dismissible","visible","variantTextClasses","variantIcons","roleMap","ariaLiveMap","delay","actualPlacement","tooltipElement","timeoutId","tooltipId","oppositePlacement","handleMouseEnter","handleMouseLeave","handleFocus","handleBlur","rect","showLabel","defaultDimensions","roundingClasses","finalWidth","finalHeight","$.index","duration","isExiting","variantBorderClasses","variantIconClasses","animationClasses","stackOffset","timer","drawerElement","closeOnClickOutside","popoverElement","popoverId","toggleOpen","placeholder","selectedIndex","paletteId","fuzzyMatch","search","searchChars","textLower","searchIndex","filteredCommands","cmd","keyword","handleSelectCommand","command","handleKeyDown","node_2","node_4","$.bind_value","baseClasses","$.attribute_effect","color","as","colorMap","striped","compact","currentPage","maxVisible","visiblePages","pages","halfVisible","startPage","endPage","goToPage","page","button_1","classes","handleDismiss","listClasses","imageLoaded","imageError","fontSizes","fallbackText","handleImageError","handleImageLoad","message","something","doClone","cloneArray","cloneObj","obj","mergeObjects","basename","idx","CAPTURING_REGEX_SOURCE","RegexSource","regexSource","captureSource","captureIndices","match","commandIndex","strcmp","strArrCmp","len1","len2","isValidHexColor","hex","escapeRegExpCharacters","CachedFn","Theme","_colorMap","_defaults","_root","parseTheme","resolveParsedThemeRules","scopeName","scopePath","effectiveRule","_scopePathMatchesParentScopes","StyleAttributes","ScopeStack","_ScopeStack","scopeNames","segments","other","base","parentScopes","scopePattern","scopeMustMatch","_matchesScope","fontStyle","foregroundId","backgroundId","settings","resultLen","scopes","_scope","lenJ","foreground","background","scope","ParsedThemeRule","FontStyle","FontStyle2","parsedThemeRules","defaultFontStyle","defaultForeground","defaultBackground","incomingDefaults","ColorMap","defaults","ThemeTrieElement","ThemeTrieElementRule","rule","emptyParentScopes","_ThemeTrieElementRule","scopeDepth","_ThemeTrieElement","_mainRule","rulesWithParentScopes","_children","aParentIndex","bParentIndex","parentScopeLengthDiff","dotIndex","head","tail","rules","EncodedTokenMetadata","_EncodedTokenMetadata","encodedTokenAttributes","languageId","tokenType","containsBalancedBrackets","_languageId","_tokenType","_containsBalancedBracketsBit","_fontStyle","_foreground","_background","createMatchers","selector","matchesName","results","tokenizer","newTokenizer","token","matcher","parseConjunction","parseOperand","expressionToNegate","matcherInput","expressionInParents","parseInnerExpression","isIdentifier","identifiers","matchers","matcher2","regex","disposeOnigString","TopLevelRuleReference","TopLevelRepositoryRuleReference","ruleName","ExternalReferenceCollector","reference","ScopeDependencyProcessor","repo","initialScopeName","q","collectReferencesOfReference","baseGrammarScopeName","selfGrammar","baseGrammar","collectExternalReferencesInTopLevelRule","collectExternalReferencesInTopLevelRepositoryRule","injections","injection","collectExternalReferencesInRules","patternRepository","include","parseInclude","newContext","BaseReference","SelfReference","RelativeReference","TopLevelReference","TopLevelRepositoryReference","indexOfSharp","HAS_BACK_REFERENCES","BACK_REFERENCING_END","endRuleId","whileRuleId","Rule","$location","contentName","lineText","CaptureRule","retokenizeCapturedWithRuleId","grammar","out","endRegexSource","allowA","allowG","MatchRule","captures","RegExpSource","RegExpSourceList","IncludeOnlyRule","patterns","pattern","BeginEndRule","begin","beginCaptures","endCaptures","applyEndPatternLast","BeginWhileRule","_while","whileCaptures","RuleFactory","_RuleFactory","helper","desc","repository","maximumCaptureId","captureId","numericCaptureId","ruleId","localIncludedRule","externalGrammarName","externalGrammarInclude","externalGrammar","externalIncludedRule","skipRule","_RegExpSource","regExpSource","lastPushedPos","output","hasAnchor","pos","nextCh","newSource","capturedValues","g1","A0_G0_result","A0_G1_result","A1_G0_result","A1_G1_result","ch","onigLib","regExps","CompiledRule","string","startPosition","BasicScopeAttributes","BasicScopeAttributesProvider","_BasicScopeAttributesProvider","initialLanguageId","embeddedLanguages","ScopeMatcher","standardTokenType","m","escapedScopes","TokenizeStringResult","stoppedEarly","_tokenizeString","isFirstLine","linePos","lineTokens","checkWhileConditions","timeLimit","lineLength","STOP","anchorPosition","whileCheckResult","_checkWhileConditions","startTime","scanNext","matchRuleOrInjections","matchedRuleId","hasAdvanced","poppedRule","handleCaptures","popped","_rule","beforePush","nameScopesList","pushedRule","contentNameScopesList","whileRules","nodeRule","whileRule","ruleScanner","findOptions","prepareRuleWhileSearch","matchResult","matchRule","injectionResult","matchInjections","matchResultScore","injectionResultScore","prepareRuleSearch","bestMatchRating","bestMatchCaptureIndices","bestMatchRuleId","bestMatchResultPriority","matchRating","lineTextContent","localStack","maxEnd","captureRule","captureIndex","stackClone","onigSubStr","captureRuleScopeName","captureRuleScopesList","LocalStackElement","endPos","createGrammar","initialLanguage","tokenTypes","balancedBracketSelectors","grammarRepository","Grammar","collectInjections","ruleFactoryHelper","nameMatcher","identifers","lastIndex","identifier","scopesAreMatching","thisScopeName","_rootScopeName","_onigLib","initGrammar","scopeName2","rawInjections","injectionScopeNames","injectionScopeName","injectionGrammar","i1","i2","factory","rawIncludedGrammar","prevState","emitBinaryTokens","StateStackImpl","rawDefaultMetadata","defaultStyle","defaultMetadata","rootScopeName","scopeList","AttributedScopeStack","onigLineText","LineTokens","_AttributedScopeStack","tokenAttributes","namesScopeList","frame","rawRootMetadata","rootStyle","resolvedTokenAttributes","existingTokenAttributes","basicScopeAttributes","styleAttributes","rawMetadata","newPath","scopeThemeMatchResult","metadata","self","_StateStackImpl","enterPos","anchorPos","beginRuleCapturedEOL","endRule","el","outIndex","contentNameScopeStack","BalancedBracketSelectors","balancedBracketScopes","unbalancedBracketScopes","excluder","includer","tokenTypeOverrides","endIndex","scopesList","scopes2","SyncRegistry","theme","targetScope","rawGrammar","Registry","configuration","dependencyProcessor","request","INITIAL","htmlVoidElements","Schema","normal","space","merge","definitions","definition","normalize","Info","powers","boolean","booleanish","overloadedBoolean","number","spaceSeparated","commaSeparated","commaOrSpaceSeparated","checks","types","DefinedInfo","mask","mark","create","properties","normals","info","aria","caseSensitiveTransform","caseInsensitiveTransform","xlink","xmlns","xml","cap","dash","valid","find","schema","Type","rest","camelcase","dashes","kebab","$0","htmlBase","svgBase","own","zwitch","one","parameters","handlers","defaultSubsetRegex","surrogatePairsRegex","controlCharactersRegex","regexEscapeRegex","subsetToRegexCache","core","charactersToExpressionCached","basic","surrogate","pair","all","character","subset","cached","charactersToExpression","groups","hexadecimalRegex","toHexadecimal","code","omit","decimalRegex","toDecimal","characterEntitiesLegacy","characterEntitiesHtml4","dangerous","characters","notAlphanumericRegex","toNamed","formatSmart","numeric","named","decimal","stringifyEntities","htmlCommentRegex","bogusCommentEntitySubset","commentEntitySubset","_1","_2","encode","doctype","_3","ccount","stringify","re","thing","empty","siblingAfter","siblings","siblingBefore","emptyChildren","includeWhitespace","offset","omission","closing","headOrColgroupOrCaption","dd","dt","li","optgroup","rubyElement","tbody","cells","tfoot","thead","tr","opening","colgroup","constants","selfClosing","last","serializeAttributes","serializeAttribute","quote","commas","spaces","textEntitySubset","raw","invalid","unknown","node_","emptyOptions","emptyCharacterReferences","toHtml","tree","options_","alternative","children","resolveColorReplacements","replacements","themeName","applyColorReplacements","toArray","normalizeGetter","isPlainLang","lang","isSpecialLang","isNoneTheme","isSpecialTheme","addClassToHast","className","targets","splitLines","preserveEnding","lines","line","createPositionConverter","indexToPos","posToIndex","guessEmbeddedLanguages","_lang","highlighter","langs","fullType","bundle","l","DEFAULT_COLOR_LIGHT_DARK","COLOR_KEYS","splitToken","offsets","lastOffset","tokens","splitTokens","breakpoints","sorted","breakpointsInToken","flatTokenVariants","merged","variantsOrder","cssVariablePrefix","defaultColor","colorsRendering","getTokenStyleObject","styleKeys","mergedStyles","varKey","keyName","cur","lightIndex","darkIndex","ShikiError$1","lightValue","darkValue","decorations","stringifyTokenStyle","_grammarStateMap","setLastGrammarStateToMap","getLastGrammarStateFromMap","GrammarState","themes","stacksMap","getScopes","pushScope","stack2","getGrammarStack","transformerDecorations","map","getContext","shiki","normalizePosition","converter","verifyIntersections","codeEl","ctx","applyLineSection","decoration","lineEl","startIndex","applyDecoration","wrapper","applyLine","transform","lineApplies","foo","bar","isFooHasBarStart","isFooHasBarEnd","isBarHasFooStart","isBarHasFooEnd","builtInTransformers","getTransformers","transformers","sortTransformersByEnforcement","pre","post","transformer","namedColors","findSequence","nextEscape","nextClose","parseColor","sequence","colorMode","rgb","parseSequence","commands","codeInt","createAnsiSequenceParser","decorations2","findResult","styleToken","defaultNamedColorsMap","createColorPalette","namedColorsMap","namedColor","rgbColor","colorTable","getColorTable","levels","g","tableColor","defaultAnsiColors","tokenizeAnsiWithTheme","fileContents","colorReplacements","ansiPalette","themeColor","colorPalette","parser","bgColor","dimColor","hexMatch","alpha","cssVarMatch","codeToTokensBase","internal","_grammar","tokenizeWithTheme","getLastGrammarState","_tokenizeWithTheme","grammarState","tokenizeMaxLineLength","tokenizeTimeLimit","stateStack","actual","final","lineOffset","resultWithScopes","tokensWithScopes","tokensWithScopesIndex","tokensLength","nextStartIndex","themeSettingsSelectors","setting","selectors","tokenWithScopes","tokenWithScopesText","explainThemeScopesNameOnly","explainThemeScopesFull","themeSelectors","explainThemeScope","matchesOne","matches","selectorParentIndex","parentIndex","selectorPieces","codeToTokensWithThemes","themedTokens","tokens2","syncThemesTokenization","mergedTokens","lineIdx","_token","tokenIdx","mergedToken","themeIdx","__","___","mergedGrammarState","outThemes","outLines","indexes","minLength","codeToTokens","bg","fg","themeTokens","themeRegs","themesOrder","themeColorReplacements","mapThemeColors","_theme","cssVar","t2","codeToHast","transformerContext","_code","_options","mergeWhitespaces","mergeSameStyleTokens","mergeWhitespaceTokens","splitWhitespaceTokens","mergeAdjacentStyledTokens","contextSource","tokensToHast","structure","tabindex","preNode","codeNode","lineNodes","lineNode","col","tokenNode","style","syntheticLines","currentLine","transformedCode","newLine","carryOnContent","firstOffset","couldMerge","leading","trailing","expanded","prevToken","prevStyle","currentStyle","isPrevDecorated","isDecorated","hastToHtml","codeToHtml","VSCODE_FALLBACK_EDITOR_FG","VSCODE_FALLBACK_EDITOR_BG","RESOLVED_KEY","normalizeTheme","rawTheme","globalSetting","replacementCount","replacementMap","getReplacementColor","replaceFg","replaceBg","replacement","resolveLangs","resolveThemes","_emitDeprecation","warnDeprecated","Registry$1","_resolver","_themes","_langs","_alias","textmateTheme","resolved","ShikiError","embeddedLazilyBy","grammarConfig","alias","langsGraphArray","missingLangs","dependents","embedded","embeddedLang","Resolver","engine","langIdOrAlias","scopeParts","subScopeName","instancesCount","createShikiInternalSync","isDisposed","resolver","_registry","_lastTheme","getLanguage","ensureNotDisposed","getTheme","setTheme","getLoadedThemes","getLoadedLanguages","loadLanguageSync","langs2","loadLanguage","loadThemeSync","themes2","loadTheme","dispose","createShikiInternal","createHighlighterCore","options2","createBundledHighlighter","bundledLanguages","bundledThemes","createHighlighter","resolveLang","resolveTheme","makeSingletonHighlighter","_shiki","getSingletonHighlighter","createSingletonShorthands","config","bundledLanguagesInfo","bundledLanguagesBase","bundledLanguagesAlias","bundledThemesInfo","getHeapMax","_emscripten_get_now","alignUp","main","init","wasmMemory","buffer","binding","updateGlobalBufferAndViews","buf","_emscripten_memcpy_big","src","num","emscripten_realloc_buffer","_emscripten_resize_heap","requestedSize","oldSize","maxHeapSize","cutDown","overGrownHeapSize","newSize","UTF8Decoder","UTF8ArrayToString","heapOrArray","maxBytesToRead","endIdx","endPtr","u0","u1","u2","UTF8ToString","ptr","asmLibraryArg","createWasm","exports$1","__defProp","__defNormalProp","__publicField","onigBinding","throwLastOnigError","onigBinding2","UtfString","utf16Length","utf8Length","computeIndicesMapping","utf16OffsetToUtf8","utf8OffsetToUtf16","utf8Value","i8","i16","charCode","codePoint","wasSurrogatePair","nextCharCode","codepoint","_OnigString","utfString","utf8Offset","utf16Offset","OnigString","OnigScanner","strPtrsArr","strLenArr","strPtrsPtr","strLenPtr","scannerPtr","arg","debugCall","resultPtr","HEAPU32","beg","isInstantiatorOptionsObject","dataOrOptions","isInstantiatorModule","isDataOptionsObject","isResponse","isArrayBuffer","data","initPromise","loadWasm","_load","instance","_makeResponseStreamingLoader","_makeResponseNonStreamingLoader","_makeArrayBufferLoader","importObject","arrayBuffer","createOnigurumaEngine","language","showLineNumbers","highlightLines","highlightedHtml","isLoading","escapeHtml","onMount","escapedCode","doc","lineNum","fallbackHtml","codeLines","div_5","div_6","trendColors","trendColor","showGlow","consequent_5","mountElement","portal","currentTarget","newTarget","targetElement","container","contentElement","openLocal","$.proxy","headerId","contentId","toggleLocal","effectiveOpen","maxHeight","openItems","mode","openItemsArray","isItemOpen","toggleItem","itemId","node_1","currentIndex","autoplay","autoplayInterval","showDots","showArrows","startX","currentX","goToNext","goToPrev","goToIndex","handleTouchStart","handleTouchMove","handleTouchEnd","diff","threshold","interval","div_4","button_2"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,53,54,64,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150]}