@knpkv/rly 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (798) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +431 -0
  3. package/dist/Dialog-DwSIPb-B.js +707 -0
  4. package/dist/Dialog-DwSIPb-B.js.map +1 -0
  5. package/dist/LinkProvider-eJGdmWP9.js +10 -0
  6. package/dist/LinkProvider-eJGdmWP9.js.map +1 -0
  7. package/dist/PortalProvider-BpgZwSpw.js +99 -0
  8. package/dist/PortalProvider-BpgZwSpw.js.map +1 -0
  9. package/dist/abap-DF4NaQCD.js +5 -0
  10. package/dist/abap-DF4NaQCD.js.map +1 -0
  11. package/dist/actionscript-3-DD7XPL4p.js +5 -0
  12. package/dist/actionscript-3-DD7XPL4p.js.map +1 -0
  13. package/dist/ada-d7eD92uQ.js +5 -0
  14. package/dist/ada-d7eD92uQ.js.map +1 -0
  15. package/dist/andromeeda-Bxb5i4nV.js +6 -0
  16. package/dist/andromeeda-Bxb5i4nV.js.map +1 -0
  17. package/dist/angular-html-DjeMzdAQ.js +18 -0
  18. package/dist/angular-html-DjeMzdAQ.js.map +1 -0
  19. package/dist/angular-ts-CqajQeDi.js +20 -0
  20. package/dist/angular-ts-CqajQeDi.js.map +1 -0
  21. package/dist/apache-zsgjHeYU.js +5 -0
  22. package/dist/apache-zsgjHeYU.js.map +1 -0
  23. package/dist/apex-Bd8m0RvF.js +5 -0
  24. package/dist/apex-Bd8m0RvF.js.map +1 -0
  25. package/dist/apl-C2-wnbIh.js +18 -0
  26. package/dist/apl-C2-wnbIh.js.map +1 -0
  27. package/dist/applescript-D_ETOzPj.js +5 -0
  28. package/dist/applescript-D_ETOzPj.js.map +1 -0
  29. package/dist/ara-CXdsJbD3.js +5 -0
  30. package/dist/ara-CXdsJbD3.js.map +1 -0
  31. package/dist/asciidoc-0QzBkr0X.js +5 -0
  32. package/dist/asciidoc-0QzBkr0X.js.map +1 -0
  33. package/dist/asm-DLrPCi7c.js +5 -0
  34. package/dist/asm-DLrPCi7c.js.map +1 -0
  35. package/dist/assets/wasm-S0UXjx1m.js +2 -0
  36. package/dist/assets/wasm-S0UXjx1m.js.map +1 -0
  37. package/dist/assets/worker-BgoRBSyH.js +161 -0
  38. package/dist/assets/worker-BgoRBSyH.js.map +1 -0
  39. package/dist/astro-Dyg9Yf1H.js +20 -0
  40. package/dist/astro-Dyg9Yf1H.js.map +1 -0
  41. package/dist/aurora-x-BT618NJh.js +6 -0
  42. package/dist/aurora-x-BT618NJh.js.map +1 -0
  43. package/dist/awk-452npsTH.js +5 -0
  44. package/dist/awk-452npsTH.js.map +1 -0
  45. package/dist/ayu-dark-zGXZFZM0.js +6 -0
  46. package/dist/ayu-dark-zGXZFZM0.js.map +1 -0
  47. package/dist/ayu-light-CBT_p4y_.js +6 -0
  48. package/dist/ayu-light-CBT_p4y_.js.map +1 -0
  49. package/dist/ayu-mirage-Ce1XqO2e.js +6 -0
  50. package/dist/ayu-mirage-Ce1XqO2e.js.map +1 -0
  51. package/dist/ballerina-8wA0eHgr.js +5 -0
  52. package/dist/ballerina-8wA0eHgr.js.map +1 -0
  53. package/dist/base.css +36 -0
  54. package/dist/bat-C_-1s8II.js +5 -0
  55. package/dist/bat-C_-1s8II.js.map +1 -0
  56. package/dist/beancount-R_9qll1W.js +5 -0
  57. package/dist/beancount-R_9qll1W.js.map +1 -0
  58. package/dist/berry-oDXeVIfk.js +5 -0
  59. package/dist/berry-oDXeVIfk.js.map +1 -0
  60. package/dist/bibtex-CAeObnSR.js +5 -0
  61. package/dist/bibtex-CAeObnSR.js.map +1 -0
  62. package/dist/bicep-udSZHxea.js +5 -0
  63. package/dist/bicep-udSZHxea.js.map +1 -0
  64. package/dist/bird2-DeFExk0t.js +5 -0
  65. package/dist/bird2-DeFExk0t.js.map +1 -0
  66. package/dist/blade-DYfmPwz3.js +22 -0
  67. package/dist/blade-DYfmPwz3.js.map +1 -0
  68. package/dist/bsl-DHd4KnG5.js +7 -0
  69. package/dist/bsl-DHd4KnG5.js.map +1 -0
  70. package/dist/c-cGZGmORU.js +7 -0
  71. package/dist/c-cGZGmORU.js.map +1 -0
  72. package/dist/c3-BswAwd0V.js +5 -0
  73. package/dist/c3-BswAwd0V.js.map +1 -0
  74. package/dist/cadence-C2DNIpxD.js +5 -0
  75. package/dist/cadence-C2DNIpxD.js.map +1 -0
  76. package/dist/cairo-Cs1BSECX.js +7 -0
  77. package/dist/cairo-Cs1BSECX.js.map +1 -0
  78. package/dist/catppuccin-frappe-Dl6HO3V1.js +6 -0
  79. package/dist/catppuccin-frappe-Dl6HO3V1.js.map +1 -0
  80. package/dist/catppuccin-latte-1S1sNVY1.js +6 -0
  81. package/dist/catppuccin-latte-1S1sNVY1.js.map +1 -0
  82. package/dist/catppuccin-macchiato-ZIhdgX21.js +6 -0
  83. package/dist/catppuccin-macchiato-ZIhdgX21.js.map +1 -0
  84. package/dist/catppuccin-mocha-_ZcP6xjb.js +6 -0
  85. package/dist/catppuccin-mocha-_ZcP6xjb.js.map +1 -0
  86. package/dist/clarity-NkpJCD6R.js +5 -0
  87. package/dist/clarity-NkpJCD6R.js.map +1 -0
  88. package/dist/clojure-g5hblQ59.js +5 -0
  89. package/dist/clojure-g5hblQ59.js.map +1 -0
  90. package/dist/cmake-D30WusUY.js +5 -0
  91. package/dist/cmake-D30WusUY.js.map +1 -0
  92. package/dist/cobol-CQn9DMRE.js +12 -0
  93. package/dist/cobol-CQn9DMRE.js.map +1 -0
  94. package/dist/codeowners-a_Z0p9_y.js +5 -0
  95. package/dist/codeowners-a_Z0p9_y.js.map +1 -0
  96. package/dist/codeql-BkSUw1F6.js +5 -0
  97. package/dist/codeql-BkSUw1F6.js.map +1 -0
  98. package/dist/coffee-aGvNYvHG.js +7 -0
  99. package/dist/coffee-aGvNYvHG.js.map +1 -0
  100. package/dist/common-lisp-D2PkvS4V.js +5 -0
  101. package/dist/common-lisp-D2PkvS4V.js.map +1 -0
  102. package/dist/component-BJeeRuSu.js +13 -0
  103. package/dist/component-BJeeRuSu.js.map +1 -0
  104. package/dist/components.css +2 -0
  105. package/dist/coq-CZH6C0pT.js +5 -0
  106. package/dist/coq-CZH6C0pT.js.map +1 -0
  107. package/dist/cpp-DHR8Y2Rj.js +21 -0
  108. package/dist/cpp-DHR8Y2Rj.js.map +1 -0
  109. package/dist/crystal-BIBTY5IC.js +20 -0
  110. package/dist/crystal-BIBTY5IC.js.map +1 -0
  111. package/dist/csharp-RRkgh3c4.js +5 -0
  112. package/dist/csharp-RRkgh3c4.js.map +1 -0
  113. package/dist/css-ZOKctz-a.js +7 -0
  114. package/dist/css-ZOKctz-a.js.map +1 -0
  115. package/dist/csv-DFU5sVkH.js +5 -0
  116. package/dist/csv-DFU5sVkH.js.map +1 -0
  117. package/dist/cue-cdFZcSz0.js +5 -0
  118. package/dist/cue-cdFZcSz0.js.map +1 -0
  119. package/dist/cypher-DRjO_s97.js +5 -0
  120. package/dist/cypher-DRjO_s97.js.map +1 -0
  121. package/dist/d-BTgKsJ9x.js +5 -0
  122. package/dist/d-BTgKsJ9x.js.map +1 -0
  123. package/dist/dark-plus-DqQ1ETiq.js +6 -0
  124. package/dist/dark-plus-DqQ1ETiq.js.map +1 -0
  125. package/dist/dart-CtlcskXT.js +5 -0
  126. package/dist/dart-CtlcskXT.js.map +1 -0
  127. package/dist/dax-DMzovUnU.js +5 -0
  128. package/dist/dax-DMzovUnU.js.map +1 -0
  129. package/dist/desktop-0YG2NeB2.js +5 -0
  130. package/dist/desktop-0YG2NeB2.js.map +1 -0
  131. package/dist/diff/index.js +19611 -0
  132. package/dist/diff/index.js.map +1 -0
  133. package/dist/diff-D0WgTNQn.js +5 -0
  134. package/dist/diff-D0WgTNQn.js.map +1 -0
  135. package/dist/docker-DMpUQ2UE.js +5 -0
  136. package/dist/docker-DMpUQ2UE.js.map +1 -0
  137. package/dist/dotenv-BQQGfUx-.js +5 -0
  138. package/dist/dotenv-BQQGfUx-.js.map +1 -0
  139. package/dist/dracula-CRSL_5QA.js +6 -0
  140. package/dist/dracula-CRSL_5QA.js.map +1 -0
  141. package/dist/dracula-soft-BfVZ79F-.js +6 -0
  142. package/dist/dracula-soft-BfVZ79F-.js.map +1 -0
  143. package/dist/dream-maker-Br_aTy0D.js +5 -0
  144. package/dist/dream-maker-Br_aTy0D.js.map +1 -0
  145. package/dist/dts/diff/DiffCodeView.d.ts +4 -0
  146. package/dist/dts/diff/DiffCodeView.d.ts.map +1 -0
  147. package/dist/dts/diff/DiffFileTree.d.ts +54 -0
  148. package/dist/dts/diff/DiffFileTree.d.ts.map +1 -0
  149. package/dist/dts/diff/DiffFinding.d.ts +66 -0
  150. package/dist/dts/diff/DiffFinding.d.ts.map +1 -0
  151. package/dist/dts/diff/DiffHeader.d.ts +21 -0
  152. package/dist/dts/diff/DiffHeader.d.ts.map +1 -0
  153. package/dist/dts/diff/DiffWorkbench.d.ts +33 -0
  154. package/dist/dts/diff/DiffWorkbench.d.ts.map +1 -0
  155. package/dist/dts/diff/index.d.ts +14 -0
  156. package/dist/dts/diff/index.d.ts.map +1 -0
  157. package/dist/dts/diff/parse-diff.d.ts +6 -0
  158. package/dist/dts/diff/parse-diff.d.ts.map +1 -0
  159. package/dist/dts/diff/themes.d.ts +7 -0
  160. package/dist/dts/diff/themes.d.ts.map +1 -0
  161. package/dist/dts/diff/types.d.ts +70 -0
  162. package/dist/dts/diff/types.d.ts.map +1 -0
  163. package/dist/dts/diff/worker-pool.d.ts +27 -0
  164. package/dist/dts/diff/worker-pool.d.ts.map +1 -0
  165. package/dist/dts/foundations/GlobalStyles.d.ts +19 -0
  166. package/dist/dts/foundations/GlobalStyles.d.ts.map +1 -0
  167. package/dist/dts/foundations/Icon.d.ts +53 -0
  168. package/dist/dts/foundations/Icon.d.ts.map +1 -0
  169. package/dist/dts/foundations/LinkProvider.d.ts +19 -0
  170. package/dist/dts/foundations/LinkProvider.d.ts.map +1 -0
  171. package/dist/dts/foundations/PortalProvider.d.ts +24 -0
  172. package/dist/dts/foundations/PortalProvider.d.ts.map +1 -0
  173. package/dist/dts/foundations/ThemeProvider.d.ts +12 -0
  174. package/dist/dts/foundations/ThemeProvider.d.ts.map +1 -0
  175. package/dist/dts/foundations/index.d.ts +11 -0
  176. package/dist/dts/foundations/index.d.ts.map +1 -0
  177. package/dist/dts/index.d.ts +5 -0
  178. package/dist/dts/index.d.ts.map +1 -0
  179. package/dist/dts/internal/component.d.ts +9 -0
  180. package/dist/dts/internal/component.d.ts.map +1 -0
  181. package/dist/dts/internal/field-control.d.ts +5 -0
  182. package/dist/dts/internal/field-control.d.ts.map +1 -0
  183. package/dist/dts/internal/modal.d.ts +24 -0
  184. package/dist/dts/internal/modal.d.ts.map +1 -0
  185. package/dist/dts/patterns/AgentContextButton.d.ts +20 -0
  186. package/dist/dts/patterns/AgentContextButton.d.ts.map +1 -0
  187. package/dist/dts/patterns/AgentDrawer.d.ts +20 -0
  188. package/dist/dts/patterns/AgentDrawer.d.ts.map +1 -0
  189. package/dist/dts/patterns/AgentJob.d.ts +45 -0
  190. package/dist/dts/patterns/AgentJob.d.ts.map +1 -0
  191. package/dist/dts/patterns/AgentProposal.d.ts +37 -0
  192. package/dist/dts/patterns/AgentProposal.d.ts.map +1 -0
  193. package/dist/dts/patterns/AgentThread.d.ts +45 -0
  194. package/dist/dts/patterns/AgentThread.d.ts.map +1 -0
  195. package/dist/dts/patterns/CollaboratorGroup.d.ts +46 -0
  196. package/dist/dts/patterns/CollaboratorGroup.d.ts.map +1 -0
  197. package/dist/dts/patterns/EntityShell.d.ts +36 -0
  198. package/dist/dts/patterns/EntityShell.d.ts.map +1 -0
  199. package/dist/dts/patterns/EntityTable.d.ts +58 -0
  200. package/dist/dts/patterns/EntityTable.d.ts.map +1 -0
  201. package/dist/dts/patterns/EvidenceStamp.d.ts +20 -0
  202. package/dist/dts/patterns/EvidenceStamp.d.ts.map +1 -0
  203. package/dist/dts/patterns/FreshnessStamp.d.ts +67 -0
  204. package/dist/dts/patterns/FreshnessStamp.d.ts.map +1 -0
  205. package/dist/dts/patterns/GovernedActionReview.d.ts +22 -0
  206. package/dist/dts/patterns/GovernedActionReview.d.ts.map +1 -0
  207. package/dist/dts/patterns/PeopleStrip.d.ts +39 -0
  208. package/dist/dts/patterns/PeopleStrip.d.ts.map +1 -0
  209. package/dist/dts/patterns/Person.d.ts +43 -0
  210. package/dist/dts/patterns/Person.d.ts.map +1 -0
  211. package/dist/dts/patterns/Relationship.d.ts +85 -0
  212. package/dist/dts/patterns/Relationship.d.ts.map +1 -0
  213. package/dist/dts/patterns/RelationshipChain.d.ts +13 -0
  214. package/dist/dts/patterns/RelationshipChain.d.ts.map +1 -0
  215. package/dist/dts/patterns/RelationshipTable.d.ts +11 -0
  216. package/dist/dts/patterns/RelationshipTable.d.ts.map +1 -0
  217. package/dist/dts/patterns/ReleasePresentation.d.ts +47 -0
  218. package/dist/dts/patterns/ReleasePresentation.d.ts.map +1 -0
  219. package/dist/dts/patterns/ReleasePreview.d.ts +41 -0
  220. package/dist/dts/patterns/ReleasePreview.d.ts.map +1 -0
  221. package/dist/dts/patterns/ReleaseRelay.d.ts +93 -0
  222. package/dist/dts/patterns/ReleaseRelay.d.ts.map +1 -0
  223. package/dist/dts/patterns/ReleaseRow.d.ts +19 -0
  224. package/dist/dts/patterns/ReleaseRow.d.ts.map +1 -0
  225. package/dist/dts/patterns/ServiceMark.d.ts +59 -0
  226. package/dist/dts/patterns/ServiceMark.d.ts.map +1 -0
  227. package/dist/dts/patterns/StageRail.d.ts +43 -0
  228. package/dist/dts/patterns/StageRail.d.ts.map +1 -0
  229. package/dist/dts/patterns/TimelineRow.d.ts +25 -0
  230. package/dist/dts/patterns/TimelineRow.d.ts.map +1 -0
  231. package/dist/dts/patterns/Verdict.d.ts +45 -0
  232. package/dist/dts/patterns/Verdict.d.ts.map +1 -0
  233. package/dist/dts/patterns/WorksetCard.d.ts +60 -0
  234. package/dist/dts/patterns/WorksetCard.d.ts.map +1 -0
  235. package/dist/dts/patterns/index.d.ts +47 -0
  236. package/dist/dts/patterns/index.d.ts.map +1 -0
  237. package/dist/dts/primitives/Avatar.d.ts +60 -0
  238. package/dist/dts/primitives/Avatar.d.ts.map +1 -0
  239. package/dist/dts/primitives/Button.d.ts +57 -0
  240. package/dist/dts/primitives/Button.d.ts.map +1 -0
  241. package/dist/dts/primitives/Dialog.d.ts +64 -0
  242. package/dist/dts/primitives/Dialog.d.ts.map +1 -0
  243. package/dist/dts/primitives/Divider.d.ts +48 -0
  244. package/dist/dts/primitives/Divider.d.ts.map +1 -0
  245. package/dist/dts/primitives/Field.d.ts +42 -0
  246. package/dist/dts/primitives/Field.d.ts.map +1 -0
  247. package/dist/dts/primitives/IconButton.d.ts +54 -0
  248. package/dist/dts/primitives/IconButton.d.ts.map +1 -0
  249. package/dist/dts/primitives/Select.d.ts +68 -0
  250. package/dist/dts/primitives/Select.d.ts.map +1 -0
  251. package/dist/dts/primitives/Sheet.d.ts +80 -0
  252. package/dist/dts/primitives/Sheet.d.ts.map +1 -0
  253. package/dist/dts/primitives/Skeleton.d.ts +41 -0
  254. package/dist/dts/primitives/Skeleton.d.ts.map +1 -0
  255. package/dist/dts/primitives/StateLabel.d.ts +58 -0
  256. package/dist/dts/primitives/StateLabel.d.ts.map +1 -0
  257. package/dist/dts/primitives/StatePanel.d.ts +47 -0
  258. package/dist/dts/primitives/StatePanel.d.ts.map +1 -0
  259. package/dist/dts/primitives/Surface.d.ts +77 -0
  260. package/dist/dts/primitives/Surface.d.ts.map +1 -0
  261. package/dist/dts/primitives/Tabs.d.ts +49 -0
  262. package/dist/dts/primitives/Tabs.d.ts.map +1 -0
  263. package/dist/dts/primitives/Text.d.ts +107 -0
  264. package/dist/dts/primitives/Text.d.ts.map +1 -0
  265. package/dist/dts/primitives/index.d.ts +29 -0
  266. package/dist/dts/primitives/index.d.ts.map +1 -0
  267. package/dist/dts/tokens/index.d.ts +3 -0
  268. package/dist/dts/tokens/index.d.ts.map +1 -0
  269. package/dist/dts/tokens/semantic-tokens.d.ts +11 -0
  270. package/dist/dts/tokens/semantic-tokens.d.ts.map +1 -0
  271. package/dist/edge-B7KoGP0W.js +14 -0
  272. package/dist/edge-B7KoGP0W.js.map +1 -0
  273. package/dist/elixir-8yNBJ6Jj.js +7 -0
  274. package/dist/elixir-8yNBJ6Jj.js.map +1 -0
  275. package/dist/elm-BdFTLfNW.js +7 -0
  276. package/dist/elm-BdFTLfNW.js.map +1 -0
  277. package/dist/emacs-lisp-CylwubPi.js +5 -0
  278. package/dist/emacs-lisp-CylwubPi.js.map +1 -0
  279. package/dist/erb-CTaWYf-Z.js +12 -0
  280. package/dist/erb-CTaWYf-Z.js.map +1 -0
  281. package/dist/erlang-Ch-wSbtC.js +7 -0
  282. package/dist/erlang-Ch-wSbtC.js.map +1 -0
  283. package/dist/everforest-dark-CcFuQcXf.js +6 -0
  284. package/dist/everforest-dark-CcFuQcXf.js.map +1 -0
  285. package/dist/everforest-light-BoV2i2Al.js +6 -0
  286. package/dist/everforest-light-BoV2i2Al.js.map +1 -0
  287. package/dist/fennel-XqmdNU54.js +5 -0
  288. package/dist/fennel-XqmdNU54.js.map +1 -0
  289. package/dist/fish-DnIfDEl-.js +5 -0
  290. package/dist/fish-DnIfDEl-.js.map +1 -0
  291. package/dist/fluent-Dv7iXi9Q.js +5 -0
  292. package/dist/fluent-Dv7iXi9Q.js.map +1 -0
  293. package/dist/fonts/OFL-Geist-Mono.txt +93 -0
  294. package/dist/fonts/OFL-Geist.txt +93 -0
  295. package/dist/fonts/geist-latin-wght-normal.woff2 +0 -0
  296. package/dist/fonts/geist-mono-latin-wght-normal.woff2 +0 -0
  297. package/dist/fonts.css +15 -0
  298. package/dist/fortran-fixed-form-DhPWfUFx.js +7 -0
  299. package/dist/fortran-fixed-form-DhPWfUFx.js.map +1 -0
  300. package/dist/fortran-free-form-B6CnEX04.js +5 -0
  301. package/dist/fortran-free-form-B6CnEX04.js.map +1 -0
  302. package/dist/foundations/index.js +7 -0
  303. package/dist/foundations/index.js.map +1 -0
  304. package/dist/foundations-CEGDSEb-.js +29 -0
  305. package/dist/foundations-CEGDSEb-.js.map +1 -0
  306. package/dist/fsharp-Cl3YCXHY.js +7 -0
  307. package/dist/fsharp-Cl3YCXHY.js.map +1 -0
  308. package/dist/gdresource-DlLSEZF5.js +12 -0
  309. package/dist/gdresource-DlLSEZF5.js.map +1 -0
  310. package/dist/gdscript-C74XTZnl.js +5 -0
  311. package/dist/gdscript-C74XTZnl.js.map +1 -0
  312. package/dist/gdshader-C-YpNGc4.js +5 -0
  313. package/dist/gdshader-C-YpNGc4.js.map +1 -0
  314. package/dist/generated-tokens.css +236 -0
  315. package/dist/genie-eGJU5Fha.js +5 -0
  316. package/dist/genie-eGJU5Fha.js.map +1 -0
  317. package/dist/gherkin-DPafK1RH.js +5 -0
  318. package/dist/gherkin-DPafK1RH.js.map +1 -0
  319. package/dist/git-commit-DPJF7uyI.js +7 -0
  320. package/dist/git-commit-DPJF7uyI.js.map +1 -0
  321. package/dist/git-rebase-1lQcc_8G.js +7 -0
  322. package/dist/git-rebase-1lQcc_8G.js.map +1 -0
  323. package/dist/github-dark-C8E0KQJe.js +6 -0
  324. package/dist/github-dark-C8E0KQJe.js.map +1 -0
  325. package/dist/github-dark-default-DFYmiwPc.js +6 -0
  326. package/dist/github-dark-default-DFYmiwPc.js.map +1 -0
  327. package/dist/github-dark-dimmed-DnXj85_F.js +6 -0
  328. package/dist/github-dark-dimmed-DnXj85_F.js.map +1 -0
  329. package/dist/github-dark-high-contrast-Dtdyr26n.js +6 -0
  330. package/dist/github-dark-high-contrast-Dtdyr26n.js.map +1 -0
  331. package/dist/github-light-Ca_6hBT-.js +6 -0
  332. package/dist/github-light-Ca_6hBT-.js.map +1 -0
  333. package/dist/github-light-default-D9CsW6Lj.js +6 -0
  334. package/dist/github-light-default-D9CsW6Lj.js.map +1 -0
  335. package/dist/github-light-high-contrast-CnHiyug_.js +6 -0
  336. package/dist/github-light-high-contrast-CnHiyug_.js.map +1 -0
  337. package/dist/gleam-DDi89CaZ.js +5 -0
  338. package/dist/gleam-DDi89CaZ.js.map +1 -0
  339. package/dist/glimmer-js-C24RkBu3.js +16 -0
  340. package/dist/glimmer-js-C24RkBu3.js.map +1 -0
  341. package/dist/glimmer-ts-CuMV6CTx.js +16 -0
  342. package/dist/glimmer-ts-CuMV6CTx.js.map +1 -0
  343. package/dist/glsl-Dhnza3VS.js +8 -0
  344. package/dist/glsl-Dhnza3VS.js.map +1 -0
  345. package/dist/gn-CFzP8_PD.js +5 -0
  346. package/dist/gn-CFzP8_PD.js.map +1 -0
  347. package/dist/gnuplot-Dwu09Wsa.js +5 -0
  348. package/dist/gnuplot-Dwu09Wsa.js.map +1 -0
  349. package/dist/go-BEdBk4fh.js +5 -0
  350. package/dist/go-BEdBk4fh.js.map +1 -0
  351. package/dist/graphql-XoEAmpQ8.js +17 -0
  352. package/dist/graphql-XoEAmpQ8.js.map +1 -0
  353. package/dist/groovy-CmZ205Qh.js +5 -0
  354. package/dist/groovy-CmZ205Qh.js.map +1 -0
  355. package/dist/gruvbox-dark-hard-C2Gr9tNA.js +6 -0
  356. package/dist/gruvbox-dark-hard-C2Gr9tNA.js.map +1 -0
  357. package/dist/gruvbox-dark-medium-L0bb1Xr2.js +6 -0
  358. package/dist/gruvbox-dark-medium-L0bb1Xr2.js.map +1 -0
  359. package/dist/gruvbox-dark-soft-BrCjeO1b.js +6 -0
  360. package/dist/gruvbox-dark-soft-BrCjeO1b.js.map +1 -0
  361. package/dist/gruvbox-light-hard-CwoirS9d.js +6 -0
  362. package/dist/gruvbox-light-hard-CwoirS9d.js.map +1 -0
  363. package/dist/gruvbox-light-medium-948enV0o.js +6 -0
  364. package/dist/gruvbox-light-medium-948enV0o.js.map +1 -0
  365. package/dist/gruvbox-light-soft-DJRDHJ4A.js +6 -0
  366. package/dist/gruvbox-light-soft-DJRDHJ4A.js.map +1 -0
  367. package/dist/hack-BJMqReAi.js +12 -0
  368. package/dist/hack-BJMqReAi.js.map +1 -0
  369. package/dist/haml-DrId2D1O.js +13 -0
  370. package/dist/haml-DrId2D1O.js.map +1 -0
  371. package/dist/handlebars-DZwPToN9.js +16 -0
  372. package/dist/handlebars-DZwPToN9.js.map +1 -0
  373. package/dist/haskell-DSSJ-2AO.js +5 -0
  374. package/dist/haskell-DSSJ-2AO.js.map +1 -0
  375. package/dist/haxe-DYIi7e35.js +5 -0
  376. package/dist/haxe-DYIi7e35.js.map +1 -0
  377. package/dist/hcl-BxX70ue-.js +5 -0
  378. package/dist/hcl-BxX70ue-.js.map +1 -0
  379. package/dist/hjson-Znrrrv1t.js +5 -0
  380. package/dist/hjson-Znrrrv1t.js.map +1 -0
  381. package/dist/hlsl-D-dP8z1U.js +5 -0
  382. package/dist/hlsl-D-dP8z1U.js.map +1 -0
  383. package/dist/horizon-CHpyxs4k.js +6 -0
  384. package/dist/horizon-CHpyxs4k.js.map +1 -0
  385. package/dist/horizon-bright-B4IdUmr3.js +6 -0
  386. package/dist/horizon-bright-B4IdUmr3.js.map +1 -0
  387. package/dist/houston-DN3CwQQM.js +6 -0
  388. package/dist/houston-DN3CwQQM.js.map +1 -0
  389. package/dist/html-DtpzFOnc.js +13 -0
  390. package/dist/html-DtpzFOnc.js.map +1 -0
  391. package/dist/html-derivative-CwUHsnpl.js +7 -0
  392. package/dist/html-derivative-CwUHsnpl.js.map +1 -0
  393. package/dist/http-D0EmkgD6.js +16 -0
  394. package/dist/http-D0EmkgD6.js.map +1 -0
  395. package/dist/hurl-Cq6VhNBm.js +14 -0
  396. package/dist/hurl-Cq6VhNBm.js.map +1 -0
  397. package/dist/hxml-P9-3-L_m.js +7 -0
  398. package/dist/hxml-P9-3-L_m.js.map +1 -0
  399. package/dist/hy-Cd4h6N3W.js +5 -0
  400. package/dist/hy-Cd4h6N3W.js.map +1 -0
  401. package/dist/imba-DdhTsO9l.js +5 -0
  402. package/dist/imba-DdhTsO9l.js.map +1 -0
  403. package/dist/index.js +11 -0
  404. package/dist/index.js.map +1 -0
  405. package/dist/ini-CmgEGOBJ.js +5 -0
  406. package/dist/ini-CmgEGOBJ.js.map +1 -0
  407. package/dist/java-bgYET9_p.js +7 -0
  408. package/dist/java-bgYET9_p.js.map +1 -0
  409. package/dist/javascript-DkolN7UL.js +7 -0
  410. package/dist/javascript-DkolN7UL.js.map +1 -0
  411. package/dist/jinja-BiC-Pj0v.js +7 -0
  412. package/dist/jinja-BiC-Pj0v.js.map +1 -0
  413. package/dist/jison-Dr-l8eex.js +7 -0
  414. package/dist/jison-Dr-l8eex.js.map +1 -0
  415. package/dist/json-sI4g09N_.js +7 -0
  416. package/dist/json-sI4g09N_.js.map +1 -0
  417. package/dist/json5-D2Eltym1.js +5 -0
  418. package/dist/json5-D2Eltym1.js.map +1 -0
  419. package/dist/jsonc-BPIJyZ7u.js +5 -0
  420. package/dist/jsonc-BPIJyZ7u.js.map +1 -0
  421. package/dist/jsonl-BGkjXns2.js +5 -0
  422. package/dist/jsonl-BGkjXns2.js.map +1 -0
  423. package/dist/jsonnet-DsRfEVPr.js +5 -0
  424. package/dist/jsonnet-DsRfEVPr.js.map +1 -0
  425. package/dist/jssm-DP2pbfxn.js +5 -0
  426. package/dist/jssm-DP2pbfxn.js.map +1 -0
  427. package/dist/jsx-Dvk3VD3P.js +7 -0
  428. package/dist/jsx-Dvk3VD3P.js.map +1 -0
  429. package/dist/julia-zE69swcD.js +18 -0
  430. package/dist/julia-zE69swcD.js.map +1 -0
  431. package/dist/just-BaukHZGJ.js +20 -0
  432. package/dist/just-BaukHZGJ.js.map +1 -0
  433. package/dist/kanagawa-dragon-Be7EwFu2.js +6 -0
  434. package/dist/kanagawa-dragon-Be7EwFu2.js.map +1 -0
  435. package/dist/kanagawa-lotus-BG_AVwO1.js +6 -0
  436. package/dist/kanagawa-lotus-BG_AVwO1.js.map +1 -0
  437. package/dist/kanagawa-wave-k9oU6WSU.js +6 -0
  438. package/dist/kanagawa-wave-k9oU6WSU.js.map +1 -0
  439. package/dist/kdl-BdIUXyK8.js +5 -0
  440. package/dist/kdl-BdIUXyK8.js.map +1 -0
  441. package/dist/kotlin-CQsNEM2o.js +5 -0
  442. package/dist/kotlin-CQsNEM2o.js.map +1 -0
  443. package/dist/kusto-UWPUoeE5.js +5 -0
  444. package/dist/kusto-UWPUoeE5.js.map +1 -0
  445. package/dist/laserwave-BQEh-0Z7.js +6 -0
  446. package/dist/laserwave-BQEh-0Z7.js.map +1 -0
  447. package/dist/latex-DLbkyLJA.js +7 -0
  448. package/dist/latex-DLbkyLJA.js.map +1 -0
  449. package/dist/lean-D3P_r_z_.js +5 -0
  450. package/dist/lean-D3P_r_z_.js.map +1 -0
  451. package/dist/less-9LYkHheD.js +5 -0
  452. package/dist/less-9LYkHheD.js.map +1 -0
  453. package/dist/light-plus-Bqez6ilk.js +6 -0
  454. package/dist/light-plus-Bqez6ilk.js.map +1 -0
  455. package/dist/liquid-Dm003PUG.js +16 -0
  456. package/dist/liquid-Dm003PUG.js.map +1 -0
  457. package/dist/llvm-BZ-9x1Lq.js +5 -0
  458. package/dist/llvm-BZ-9x1Lq.js.map +1 -0
  459. package/dist/log-DvQMOE69.js +5 -0
  460. package/dist/log-DvQMOE69.js.map +1 -0
  461. package/dist/logo-Cl5E_QyH.js +5 -0
  462. package/dist/logo-Cl5E_QyH.js.map +1 -0
  463. package/dist/lua-BFlLWTPI.js +8 -0
  464. package/dist/lua-BFlLWTPI.js.map +1 -0
  465. package/dist/luau-D70m3rtt.js +5 -0
  466. package/dist/luau-D70m3rtt.js.map +1 -0
  467. package/dist/make-CE9Hryyp.js +5 -0
  468. package/dist/make-CE9Hryyp.js.map +1 -0
  469. package/dist/markdown-nUtTZkU8.js +5 -0
  470. package/dist/markdown-nUtTZkU8.js.map +1 -0
  471. package/dist/marko-DM4Ho4fx.js +16 -0
  472. package/dist/marko-DM4Ho4fx.js.map +1 -0
  473. package/dist/material-theme-CIO-Hbur.js +6 -0
  474. package/dist/material-theme-CIO-Hbur.js.map +1 -0
  475. package/dist/material-theme-darker-Domtwhbc.js +6 -0
  476. package/dist/material-theme-darker-Domtwhbc.js.map +1 -0
  477. package/dist/material-theme-lighter-BVioU1oN.js +6 -0
  478. package/dist/material-theme-lighter-BVioU1oN.js.map +1 -0
  479. package/dist/material-theme-ocean-EN3o5oM1.js +6 -0
  480. package/dist/material-theme-ocean-EN3o5oM1.js.map +1 -0
  481. package/dist/material-theme-palenight-mfLz0JAO.js +6 -0
  482. package/dist/material-theme-palenight-mfLz0JAO.js.map +1 -0
  483. package/dist/matlab-fM7rwTZt.js +5 -0
  484. package/dist/matlab-fM7rwTZt.js.map +1 -0
  485. package/dist/mdc-B7Fv08Xt.js +14 -0
  486. package/dist/mdc-B7Fv08Xt.js.map +1 -0
  487. package/dist/mdx-DswfiFg4.js +5 -0
  488. package/dist/mdx-DswfiFg4.js.map +1 -0
  489. package/dist/mermaid-D4X-e3rK.js +5 -0
  490. package/dist/mermaid-D4X-e3rK.js.map +1 -0
  491. package/dist/min-dark-Dh8NxWQA.js +6 -0
  492. package/dist/min-dark-Dh8NxWQA.js.map +1 -0
  493. package/dist/min-light-BMsR2L-Q.js +6 -0
  494. package/dist/min-light-BMsR2L-Q.js.map +1 -0
  495. package/dist/mipsasm-DbPELTlh.js +5 -0
  496. package/dist/mipsasm-DbPELTlh.js.map +1 -0
  497. package/dist/mojo-DO3SwCZN.js +5 -0
  498. package/dist/mojo-DO3SwCZN.js.map +1 -0
  499. package/dist/monokai-CIkuocyw.js +6 -0
  500. package/dist/monokai-CIkuocyw.js.map +1 -0
  501. package/dist/moonbit-BRyCXbVu.js +5 -0
  502. package/dist/moonbit-BRyCXbVu.js.map +1 -0
  503. package/dist/move-D1Ne4dqA.js +5 -0
  504. package/dist/move-D1Ne4dqA.js.map +1 -0
  505. package/dist/narrat-9pGDjQTI.js +5 -0
  506. package/dist/narrat-9pGDjQTI.js.map +1 -0
  507. package/dist/nextflow-CR3Afn0i.js +7 -0
  508. package/dist/nextflow-CR3Afn0i.js.map +1 -0
  509. package/dist/nextflow-groovy-Dpj38dkf.js +5 -0
  510. package/dist/nextflow-groovy-Dpj38dkf.js.map +1 -0
  511. package/dist/nginx-BVQfGd0R.js +7 -0
  512. package/dist/nginx-BVQfGd0R.js.map +1 -0
  513. package/dist/night-owl-light-B-Yqi-4j.js +6 -0
  514. package/dist/night-owl-light-B-Yqi-4j.js.map +1 -0
  515. package/dist/night-owl-uNgl2c6t.js +6 -0
  516. package/dist/night-owl-uNgl2c6t.js.map +1 -0
  517. package/dist/nim-CfOw1hHF.js +22 -0
  518. package/dist/nim-CfOw1hHF.js.map +1 -0
  519. package/dist/nix-CwcLdFnB.js +5 -0
  520. package/dist/nix-CwcLdFnB.js.map +1 -0
  521. package/dist/nord-BQHHR53A.js +6 -0
  522. package/dist/nord-BQHHR53A.js.map +1 -0
  523. package/dist/nushell-DrP4m5HL.js +5 -0
  524. package/dist/nushell-DrP4m5HL.js.map +1 -0
  525. package/dist/objective-c-DK-EKgyd.js +5 -0
  526. package/dist/objective-c-DK-EKgyd.js.map +1 -0
  527. package/dist/objective-cpp-CXtEgxjw.js +5 -0
  528. package/dist/objective-cpp-CXtEgxjw.js.map +1 -0
  529. package/dist/ocaml-BO-0Wjtk.js +5 -0
  530. package/dist/ocaml-BO-0Wjtk.js.map +1 -0
  531. package/dist/odin-BDNmOx6H.js +5 -0
  532. package/dist/odin-BDNmOx6H.js.map +1 -0
  533. package/dist/one-dark-pro-DL1KYbOl.js +6 -0
  534. package/dist/one-dark-pro-DL1KYbOl.js.map +1 -0
  535. package/dist/one-light-Dqlxwgrc.js +6 -0
  536. package/dist/one-light-Dqlxwgrc.js.map +1 -0
  537. package/dist/openscad-B8gTrm-E.js +5 -0
  538. package/dist/openscad-B8gTrm-E.js.map +1 -0
  539. package/dist/pascal-CRtegPzh.js +5 -0
  540. package/dist/pascal-CRtegPzh.js.map +1 -0
  541. package/dist/patterns/index.js +5 -0
  542. package/dist/patterns/index.js.map +1 -0
  543. package/dist/patterns-DEbg7R-A.js +2792 -0
  544. package/dist/patterns-DEbg7R-A.js.map +1 -0
  545. package/dist/perl-CDnthZrn.js +18 -0
  546. package/dist/perl-CDnthZrn.js.map +1 -0
  547. package/dist/php-CR8sYVxC.js +20 -0
  548. package/dist/php-CR8sYVxC.js.map +1 -0
  549. package/dist/pierre-dark-0J0Lv8Ow.js +6 -0
  550. package/dist/pierre-dark-0J0Lv8Ow.js.map +1 -0
  551. package/dist/pierre-dark-protanopia-deuteranopia-Cy4lqUIE.js +6 -0
  552. package/dist/pierre-dark-protanopia-deuteranopia-Cy4lqUIE.js.map +1 -0
  553. package/dist/pierre-dark-soft-B2ikN8gz.js +6 -0
  554. package/dist/pierre-dark-soft-B2ikN8gz.js.map +1 -0
  555. package/dist/pierre-dark-tritanopia-Bi7McslL.js +6 -0
  556. package/dist/pierre-dark-tritanopia-Bi7McslL.js.map +1 -0
  557. package/dist/pierre-dark-vibrant-CDt1miv5.js +6 -0
  558. package/dist/pierre-dark-vibrant-CDt1miv5.js.map +1 -0
  559. package/dist/pierre-light-CItmEzRu.js +6 -0
  560. package/dist/pierre-light-CItmEzRu.js.map +1 -0
  561. package/dist/pierre-light-protanopia-deuteranopia-D2pfgbnd.js +6 -0
  562. package/dist/pierre-light-protanopia-deuteranopia-D2pfgbnd.js.map +1 -0
  563. package/dist/pierre-light-soft-DY65cj4n.js +6 -0
  564. package/dist/pierre-light-soft-DY65cj4n.js.map +1 -0
  565. package/dist/pierre-light-tritanopia-CMEooIa-.js +6 -0
  566. package/dist/pierre-light-tritanopia-CMEooIa-.js.map +1 -0
  567. package/dist/pierre-light-vibrant-BjDcd7f8.js +6 -0
  568. package/dist/pierre-light-vibrant-BjDcd7f8.js.map +1 -0
  569. package/dist/pkl-C53Sb050.js +5 -0
  570. package/dist/pkl-C53Sb050.js.map +1 -0
  571. package/dist/plastic-DHYUQ3Nw.js +6 -0
  572. package/dist/plastic-DHYUQ3Nw.js.map +1 -0
  573. package/dist/plsql-Bx7tup_v.js +5 -0
  574. package/dist/plsql-Bx7tup_v.js.map +1 -0
  575. package/dist/po-DSTB2Mz9.js +5 -0
  576. package/dist/po-DSTB2Mz9.js.map +1 -0
  577. package/dist/poimandres-B_oVTWYn.js +6 -0
  578. package/dist/poimandres-B_oVTWYn.js.map +1 -0
  579. package/dist/polar-E3hAEXm5.js +5 -0
  580. package/dist/polar-E3hAEXm5.js.map +1 -0
  581. package/dist/postcss-BZib8l4b.js +5 -0
  582. package/dist/postcss-BZib8l4b.js.map +1 -0
  583. package/dist/powerquery-CJblX2B2.js +5 -0
  584. package/dist/powerquery-CJblX2B2.js.map +1 -0
  585. package/dist/powershell-C03Xi8fb.js +5 -0
  586. package/dist/powershell-C03Xi8fb.js.map +1 -0
  587. package/dist/primitives/index.js +6 -0
  588. package/dist/primitives/index.js.map +1 -0
  589. package/dist/primitives-nKxQGSsE.js +543 -0
  590. package/dist/primitives-nKxQGSsE.js.map +1 -0
  591. package/dist/prisma-4kxUlEbd.js +5 -0
  592. package/dist/prisma-4kxUlEbd.js.map +1 -0
  593. package/dist/prolog-Ce1YjgEP.js +5 -0
  594. package/dist/prolog-Ce1YjgEP.js.map +1 -0
  595. package/dist/proto-DGLklcji.js +5 -0
  596. package/dist/proto-DGLklcji.js.map +1 -0
  597. package/dist/pug-Td3yKitK.js +14 -0
  598. package/dist/pug-Td3yKitK.js.map +1 -0
  599. package/dist/puppet-B2qoEJs2.js +5 -0
  600. package/dist/puppet-B2qoEJs2.js.map +1 -0
  601. package/dist/purescript-Cq_6EhvO.js +5 -0
  602. package/dist/purescript-Cq_6EhvO.js.map +1 -0
  603. package/dist/python-D0AaDoWC.js +5 -0
  604. package/dist/python-D0AaDoWC.js.map +1 -0
  605. package/dist/qml-Do5uEWv6.js +7 -0
  606. package/dist/qml-Do5uEWv6.js.map +1 -0
  607. package/dist/qmldir-BSWsNKCW.js +5 -0
  608. package/dist/qmldir-BSWsNKCW.js.map +1 -0
  609. package/dist/qss-CT2jsqXX.js +5 -0
  610. package/dist/qss-CT2jsqXX.js.map +1 -0
  611. package/dist/r-BDDMZJe6.js +7 -0
  612. package/dist/r-BDDMZJe6.js.map +1 -0
  613. package/dist/racket-B0_wXtli.js +5 -0
  614. package/dist/racket-B0_wXtli.js.map +1 -0
  615. package/dist/raku-DKDZy5Ck.js +5 -0
  616. package/dist/raku-DKDZy5Ck.js.map +1 -0
  617. package/dist/razor-XTRNhwX-.js +12 -0
  618. package/dist/razor-XTRNhwX-.js.map +1 -0
  619. package/dist/red-Cl-YCUz2.js +6 -0
  620. package/dist/red-Cl-YCUz2.js.map +1 -0
  621. package/dist/reg-D6txjqBF.js +5 -0
  622. package/dist/reg-D6txjqBF.js.map +1 -0
  623. package/dist/regexp-3SQFFpHs.js +7 -0
  624. package/dist/regexp-3SQFFpHs.js.map +1 -0
  625. package/dist/rel-CY3GbSca.js +5 -0
  626. package/dist/rel-CY3GbSca.js.map +1 -0
  627. package/dist/riscv-BKjM5F1V.js +5 -0
  628. package/dist/riscv-BKjM5F1V.js.map +1 -0
  629. package/dist/rolldown-runtime-Dqa2HsxW.js +22 -0
  630. package/dist/rolldown-runtime-Dqa2HsxW.js.map +1 -0
  631. package/dist/ron-DJgcWJZU.js +5 -0
  632. package/dist/ron-DJgcWJZU.js.map +1 -0
  633. package/dist/rose-pine-CHe-WMZL.js +6 -0
  634. package/dist/rose-pine-CHe-WMZL.js.map +1 -0
  635. package/dist/rose-pine-dawn-C9NcAimu.js +6 -0
  636. package/dist/rose-pine-dawn-C9NcAimu.js.map +1 -0
  637. package/dist/rose-pine-moon-D5iongTz.js +6 -0
  638. package/dist/rose-pine-moon-D5iongTz.js.map +1 -0
  639. package/dist/rosmsg-BTByjkSH.js +5 -0
  640. package/dist/rosmsg-BTByjkSH.js.map +1 -0
  641. package/dist/rst-Bo3GrZDR.js +24 -0
  642. package/dist/rst-Bo3GrZDR.js.map +1 -0
  643. package/dist/ruby-CnkW74A2.js +32 -0
  644. package/dist/ruby-CnkW74A2.js.map +1 -0
  645. package/dist/rust-BrRMzTsN.js +5 -0
  646. package/dist/rust-BrRMzTsN.js.map +1 -0
  647. package/dist/sas-BrpAuH1X.js +7 -0
  648. package/dist/sas-BrpAuH1X.js.map +1 -0
  649. package/dist/sass-CL6GLiPQ.js +5 -0
  650. package/dist/sass-CL6GLiPQ.js.map +1 -0
  651. package/dist/scala-BST3Nfcj.js +5 -0
  652. package/dist/scala-BST3Nfcj.js.map +1 -0
  653. package/dist/scheme-BksZ4zIw.js +5 -0
  654. package/dist/scheme-BksZ4zIw.js.map +1 -0
  655. package/dist/scss-DxbDaa1W.js +8 -0
  656. package/dist/scss-DxbDaa1W.js.map +1 -0
  657. package/dist/sdbl-CLOIgNSF.js +5 -0
  658. package/dist/sdbl-CLOIgNSF.js.map +1 -0
  659. package/dist/shaderlab-DbecA-8I.js +7 -0
  660. package/dist/shaderlab-DbecA-8I.js.map +1 -0
  661. package/dist/shellscript-BfIUiu8Z.js +7 -0
  662. package/dist/shellscript-BfIUiu8Z.js.map +1 -0
  663. package/dist/shellsession-BrXWAUUe.js +7 -0
  664. package/dist/shellsession-BrXWAUUe.js.map +1 -0
  665. package/dist/slack-dark-C4j1hQBk.js +6 -0
  666. package/dist/slack-dark-C4j1hQBk.js.map +1 -0
  667. package/dist/slack-ochin-DaUwiF4w.js +6 -0
  668. package/dist/slack-ochin-DaUwiF4w.js.map +1 -0
  669. package/dist/smalltalk-DpZ76Hck.js +5 -0
  670. package/dist/smalltalk-DpZ76Hck.js.map +1 -0
  671. package/dist/snazzy-light-HTLPHPp-.js +6 -0
  672. package/dist/snazzy-light-HTLPHPp-.js.map +1 -0
  673. package/dist/solarized-dark-CtqZRgBQ.js +6 -0
  674. package/dist/solarized-dark-CtqZRgBQ.js.map +1 -0
  675. package/dist/solarized-light-B1T9oUZx.js +6 -0
  676. package/dist/solarized-light-B1T9oUZx.js.map +1 -0
  677. package/dist/solidity-C6WZChM7.js +5 -0
  678. package/dist/solidity-C6WZChM7.js.map +1 -0
  679. package/dist/soy-DiuscHH_.js +7 -0
  680. package/dist/soy-DiuscHH_.js.map +1 -0
  681. package/dist/sparql-BXcCAvJ8.js +7 -0
  682. package/dist/sparql-BXcCAvJ8.js.map +1 -0
  683. package/dist/splunk-MGILMmew.js +5 -0
  684. package/dist/splunk-MGILMmew.js.map +1 -0
  685. package/dist/sql-C9fPblfT.js +7 -0
  686. package/dist/sql-C9fPblfT.js.map +1 -0
  687. package/dist/ssh-config-CFmUyPR7.js +5 -0
  688. package/dist/ssh-config-CFmUyPR7.js.map +1 -0
  689. package/dist/stata-DuylPdFR.js +7 -0
  690. package/dist/stata-DuylPdFR.js.map +1 -0
  691. package/dist/styles.css +6 -0
  692. package/dist/stylus-Kh83dApl.js +5 -0
  693. package/dist/stylus-Kh83dApl.js.map +1 -0
  694. package/dist/surrealql-Cz1XwqtF.js +7 -0
  695. package/dist/surrealql-Cz1XwqtF.js.map +1 -0
  696. package/dist/svelte-Q6Sp2nAU.js +16 -0
  697. package/dist/svelte-Q6Sp2nAU.js.map +1 -0
  698. package/dist/swift-BkBDHPbH.js +5 -0
  699. package/dist/swift-BkBDHPbH.js.map +1 -0
  700. package/dist/synthwave-84-DnNSMmt7.js +6 -0
  701. package/dist/synthwave-84-DnNSMmt7.js.map +1 -0
  702. package/dist/system-verilog-DZimthQt.js +5 -0
  703. package/dist/system-verilog-DZimthQt.js.map +1 -0
  704. package/dist/systemd-ArfzIYBi.js +5 -0
  705. package/dist/systemd-ArfzIYBi.js.map +1 -0
  706. package/dist/talonscript-SIE54PtE.js +5 -0
  707. package/dist/talonscript-SIE54PtE.js.map +1 -0
  708. package/dist/tasl-Ck4PO08m.js +5 -0
  709. package/dist/tasl-Ck4PO08m.js.map +1 -0
  710. package/dist/tcl-DfkVwqLO.js +5 -0
  711. package/dist/tcl-DfkVwqLO.js.map +1 -0
  712. package/dist/templ-BbEWf7RW.js +14 -0
  713. package/dist/templ-BbEWf7RW.js.map +1 -0
  714. package/dist/terraform-DccThf6s.js +5 -0
  715. package/dist/terraform-DccThf6s.js.map +1 -0
  716. package/dist/tex-AkCbCkWx.js +7 -0
  717. package/dist/tex-AkCbCkWx.js.map +1 -0
  718. package/dist/tokens/index.js +4 -0
  719. package/dist/tokens/index.js.map +1 -0
  720. package/dist/tokens-CjK9bxo7.js +44 -0
  721. package/dist/tokens-CjK9bxo7.js.map +1 -0
  722. package/dist/tokyo-night-DTaxQB37.js +6 -0
  723. package/dist/tokyo-night-DTaxQB37.js.map +1 -0
  724. package/dist/toml-CIQJnU5u.js +5 -0
  725. package/dist/toml-CIQJnU5u.js.map +1 -0
  726. package/dist/ts-tags-s8JT4Lqr.js +40 -0
  727. package/dist/ts-tags-s8JT4Lqr.js.map +1 -0
  728. package/dist/tsv-AfvsdcL-.js +5 -0
  729. package/dist/tsv-AfvsdcL-.js.map +1 -0
  730. package/dist/tsx-CUO9ksLI.js +7 -0
  731. package/dist/tsx-CUO9ksLI.js.map +1 -0
  732. package/dist/turtle-D1NNZBgy.js +5 -0
  733. package/dist/turtle-D1NNZBgy.js.map +1 -0
  734. package/dist/twig-_tKsBeNA.js +20 -0
  735. package/dist/twig-_tKsBeNA.js.map +1 -0
  736. package/dist/typescript-DgM5MSMm.js +7 -0
  737. package/dist/typescript-DgM5MSMm.js.map +1 -0
  738. package/dist/typespec-JuVkJaIJ.js +5 -0
  739. package/dist/typespec-JuVkJaIJ.js.map +1 -0
  740. package/dist/typst-DXzoqiK9.js +5 -0
  741. package/dist/typst-DXzoqiK9.js.map +1 -0
  742. package/dist/v-Bfg6pRQ_.js +5 -0
  743. package/dist/v-Bfg6pRQ_.js.map +1 -0
  744. package/dist/vala-i5OYwFuH.js +5 -0
  745. package/dist/vala-i5OYwFuH.js.map +1 -0
  746. package/dist/vb-BMo8sl0w.js +5 -0
  747. package/dist/vb-BMo8sl0w.js.map +1 -0
  748. package/dist/verilog-Cq0B5e5o.js +5 -0
  749. package/dist/verilog-Cq0B5e5o.js.map +1 -0
  750. package/dist/vesper-BVVpkFqN.js +6 -0
  751. package/dist/vesper-BVVpkFqN.js.map +1 -0
  752. package/dist/vhdl-UepOATuw.js +5 -0
  753. package/dist/vhdl-UepOATuw.js.map +1 -0
  754. package/dist/viml-DgaHry3T.js +5 -0
  755. package/dist/viml-DgaHry3T.js.map +1 -0
  756. package/dist/vitesse-black-CMf5iX7e.js +6 -0
  757. package/dist/vitesse-black-CMf5iX7e.js.map +1 -0
  758. package/dist/vitesse-dark-BcEvL4Pv.js +6 -0
  759. package/dist/vitesse-dark-BcEvL4Pv.js.map +1 -0
  760. package/dist/vitesse-light-De_0x-27.js +6 -0
  761. package/dist/vitesse-light-De_0x-27.js.map +1 -0
  762. package/dist/vue-CVl6Qe3Y.js +23 -0
  763. package/dist/vue-CVl6Qe3Y.js.map +1 -0
  764. package/dist/vue-html-D_NmL5F1.js +7 -0
  765. package/dist/vue-html-D_NmL5F1.js.map +1 -0
  766. package/dist/vue-vine-CEzj9IPp.js +20 -0
  767. package/dist/vue-vine-CEzj9IPp.js.map +1 -0
  768. package/dist/vyper-BiyGiCmH.js +5 -0
  769. package/dist/vyper-BiyGiCmH.js.map +1 -0
  770. package/dist/wasm-DXa1gtBd.js +5 -0
  771. package/dist/wasm-DXa1gtBd.js.map +1 -0
  772. package/dist/wasm-DdoVa6M5.js +6 -0
  773. package/dist/wasm-DdoVa6M5.js.map +1 -0
  774. package/dist/wenyan-Ke6AN0BI.js +5 -0
  775. package/dist/wenyan-Ke6AN0BI.js.map +1 -0
  776. package/dist/wgsl-Vcm3Lg52.js +5 -0
  777. package/dist/wgsl-Vcm3Lg52.js.map +1 -0
  778. package/dist/wikitext-C4uDiSA9.js +5 -0
  779. package/dist/wikitext-C4uDiSA9.js.map +1 -0
  780. package/dist/wit-hbIPZwZR.js +5 -0
  781. package/dist/wit-hbIPZwZR.js.map +1 -0
  782. package/dist/wolfram-DGFnG0I5.js +5 -0
  783. package/dist/wolfram-DGFnG0I5.js.map +1 -0
  784. package/dist/xml-Dpvw5u88.js +8 -0
  785. package/dist/xml-Dpvw5u88.js.map +1 -0
  786. package/dist/xsl-gYljEfLj.js +7 -0
  787. package/dist/xsl-gYljEfLj.js.map +1 -0
  788. package/dist/yaml-BG-yw5f_.js +7 -0
  789. package/dist/yaml-BG-yw5f_.js.map +1 -0
  790. package/dist/zenscript-BtXHY1aa.js +5 -0
  791. package/dist/zenscript-BtXHY1aa.js.map +1 -0
  792. package/dist/zig-BaU1vZRj.js +5 -0
  793. package/dist/zig-BaU1vZRj.js.map +1 -0
  794. package/package.json +117 -0
  795. package/registry/USAGE.md +14 -0
  796. package/registry/components.json +4785 -0
  797. package/registry/schema.json +309 -0
  798. package/registry/search.json +1275 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["__defProp","ShikiError","import__shikijs_engine_oniguruma","matchingRule","Registry","splitLines","resolveThemes","codeToTokensBase","getLastGrammarState","codeToTokensWithThemes","types","html","svg","html","htmlBase","svgBase","own","own","stringify","stringify","re","emptyChildren","html","body","tbody","commas","spaces","node","html","ShikiError$1","splitLines","codeToTokensBase","codeToTokensBase$1","codeToTokens","codeToHast","codeToHtml","createShikiPrimitiveAsync$1","getLastGrammarState","r","l","o","m","b","y","C","T","M","F","ee","K","w","R","A","I","k","x","L","Q","P","te","h","E","z","X","G","U","V","J","$","W","N","D","_","B","O","q","g","H","i","x","Z","S","u","incrementIfAtLeast","r","slug","createGroup","createLookaroundAssertion","createUnicodeProperty","createQuantifier","createAlternative","createAssertion","createCharacter","createCharacterClass","createCharacterSet","slug2","hasOnlyChild","createBackreference","createCapturingGroup","createSubroutine","parse","createCharacter2","createGroup2","createAlternative2","#pattern","#captureMap","#nameMap","#strategy","#compiled","#execCore","parse2","splitFileContents","DEFAULT_PLAIN_TEXT_OPTIONS","splitFileContents","LRUMapPkg","instanceId","splitFileContents","instanceId","shouldRenderCode","shouldRenderHeader","LAYOUT_CHECKPOINT_INTERVAL","instanceId","measureFileAnnotationHeight","instanceId","instanceId","CodeView"],"sources":["../../src/diff/DiffCodeView.module.css","../../src/diff/DiffFileTree.module.css","../../src/diff/DiffFinding.module.css","../../src/diff/DiffHeader.module.css","../../src/diff/DiffWorkbench.module.css","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/react/constants.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/constants.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/getLineAnnotationName.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/getMergeConflictActionSlotName.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/parseMergeConflictDiffFromFile.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/react/utils/renderDiffChildren.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/react/utils/renderFileChildren.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/react/utils/useStableCallback.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/areThemesEqual.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/highlighter/themes/constants.js","../../../../node_modules/.pnpm/@pierre+theming@0.0.2_@pierre+theme@1.1.0_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1/node_modules/@pierre/theming/dist/modules/createThemeCollection.js","../../../../node_modules/.pnpm/@pierre+theming@0.0.2_@pierre+theme@1.1.0_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1/node_modules/@pierre/theming/dist/modules/unwrapDefault.js","../../../../node_modules/.pnpm/@pierre+theming@0.0.2_@pierre+theme@1.1.0_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1/node_modules/@pierre/theming/dist/modules/createThemeResolver.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/highlighter/themes/themeResolver.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/highlighter/themes/attachResolvedThemes.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/highlighter/languages/constants.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/highlighter/languages/attachResolvedLanguages.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/isWorkerContext.js","../../../../node_modules/.pnpm/shiki@4.3.1/node_modules/shiki/dist/rolldown-runtime-BBjsoOtd.mjs","../../../../node_modules/.pnpm/shiki@4.3.1/node_modules/shiki/dist/langs-bundle-full-4noeO3oH.mjs","../../../../node_modules/.pnpm/shiki@4.3.1/node_modules/shiki/dist/themes.mjs","../../../../node_modules/.pnpm/@shikijs+engine-oniguruma@4.3.1/node_modules/@shikijs/engine-oniguruma/dist/index.mjs","../../../../node_modules/.pnpm/shiki@4.3.1/node_modules/shiki/dist/engine-oniguruma.mjs","../../../../node_modules/.pnpm/@shikijs+types@4.3.1/node_modules/@shikijs/types/dist/index.mjs","../../../../node_modules/.pnpm/@shikijs+vscode-textmate@10.0.2/node_modules/@shikijs/vscode-textmate/dist/index.js","../../../../node_modules/.pnpm/@shikijs+primitive@4.3.1/node_modules/@shikijs/primitive/dist/index.mjs","../../../../node_modules/.pnpm/html-void-elements@3.0.0/node_modules/html-void-elements/index.js","../../../../node_modules/.pnpm/property-information@7.2.0/node_modules/property-information/lib/util/schema.js","../../../../node_modules/.pnpm/property-information@7.2.0/node_modules/property-information/lib/util/merge.js","../../../../node_modules/.pnpm/property-information@7.2.0/node_modules/property-information/lib/normalize.js","../../../../node_modules/.pnpm/property-information@7.2.0/node_modules/property-information/lib/util/info.js","../../../../node_modules/.pnpm/property-information@7.2.0/node_modules/property-information/lib/util/types.js","../../../../node_modules/.pnpm/property-information@7.2.0/node_modules/property-information/lib/util/defined-info.js","../../../../node_modules/.pnpm/property-information@7.2.0/node_modules/property-information/lib/util/create.js","../../../../node_modules/.pnpm/property-information@7.2.0/node_modules/property-information/lib/aria.js","../../../../node_modules/.pnpm/property-information@7.2.0/node_modules/property-information/lib/util/case-sensitive-transform.js","../../../../node_modules/.pnpm/property-information@7.2.0/node_modules/property-information/lib/util/case-insensitive-transform.js","../../../../node_modules/.pnpm/property-information@7.2.0/node_modules/property-information/lib/html.js","../../../../node_modules/.pnpm/property-information@7.2.0/node_modules/property-information/lib/svg.js","../../../../node_modules/.pnpm/property-information@7.2.0/node_modules/property-information/lib/xlink.js","../../../../node_modules/.pnpm/property-information@7.2.0/node_modules/property-information/lib/xmlns.js","../../../../node_modules/.pnpm/property-information@7.2.0/node_modules/property-information/lib/xml.js","../../../../node_modules/.pnpm/property-information@7.2.0/node_modules/property-information/lib/find.js","../../../../node_modules/.pnpm/property-information@7.2.0/node_modules/property-information/index.js","../../../../node_modules/.pnpm/zwitch@2.0.4/node_modules/zwitch/index.js","../../../../node_modules/.pnpm/stringify-entities@4.0.4/node_modules/stringify-entities/lib/core.js","../../../../node_modules/.pnpm/stringify-entities@4.0.4/node_modules/stringify-entities/lib/util/to-hexadecimal.js","../../../../node_modules/.pnpm/stringify-entities@4.0.4/node_modules/stringify-entities/lib/util/to-decimal.js","../../../../node_modules/.pnpm/character-entities-legacy@3.0.0/node_modules/character-entities-legacy/index.js","../../../../node_modules/.pnpm/character-entities-html4@2.1.0/node_modules/character-entities-html4/index.js","../../../../node_modules/.pnpm/stringify-entities@4.0.4/node_modules/stringify-entities/lib/constant/dangerous.js","../../../../node_modules/.pnpm/stringify-entities@4.0.4/node_modules/stringify-entities/lib/util/to-named.js","../../../../node_modules/.pnpm/stringify-entities@4.0.4/node_modules/stringify-entities/lib/util/format-smart.js","../../../../node_modules/.pnpm/stringify-entities@4.0.4/node_modules/stringify-entities/lib/index.js","../../../../node_modules/.pnpm/hast-util-to-html@9.0.5/node_modules/hast-util-to-html/lib/handle/comment.js","../../../../node_modules/.pnpm/hast-util-to-html@9.0.5/node_modules/hast-util-to-html/lib/handle/doctype.js","../../../../node_modules/.pnpm/ccount@2.0.1/node_modules/ccount/index.js","../../../../node_modules/.pnpm/comma-separated-tokens@2.0.3/node_modules/comma-separated-tokens/index.js","../../../../node_modules/.pnpm/space-separated-tokens@2.0.2/node_modules/space-separated-tokens/index.js","../../../../node_modules/.pnpm/hast-util-whitespace@3.0.0/node_modules/hast-util-whitespace/lib/index.js","../../../../node_modules/.pnpm/hast-util-to-html@9.0.5/node_modules/hast-util-to-html/lib/omission/util/siblings.js","../../../../node_modules/.pnpm/hast-util-to-html@9.0.5/node_modules/hast-util-to-html/lib/omission/omission.js","../../../../node_modules/.pnpm/hast-util-to-html@9.0.5/node_modules/hast-util-to-html/lib/omission/closing.js","../../../../node_modules/.pnpm/hast-util-to-html@9.0.5/node_modules/hast-util-to-html/lib/omission/opening.js","../../../../node_modules/.pnpm/hast-util-to-html@9.0.5/node_modules/hast-util-to-html/lib/handle/element.js","../../../../node_modules/.pnpm/hast-util-to-html@9.0.5/node_modules/hast-util-to-html/lib/handle/text.js","../../../../node_modules/.pnpm/hast-util-to-html@9.0.5/node_modules/hast-util-to-html/lib/handle/raw.js","../../../../node_modules/.pnpm/hast-util-to-html@9.0.5/node_modules/hast-util-to-html/lib/handle/root.js","../../../../node_modules/.pnpm/hast-util-to-html@9.0.5/node_modules/hast-util-to-html/lib/handle/index.js","../../../../node_modules/.pnpm/hast-util-to-html@9.0.5/node_modules/hast-util-to-html/lib/index.js","../../../../node_modules/.pnpm/@shikijs+core@4.3.1/node_modules/@shikijs/core/dist/index.mjs","../../../../node_modules/.pnpm/shiki@4.3.1/node_modules/shiki/dist/bundle-full.mjs","../../../../node_modules/.pnpm/@shikijs+engine-javascript@4.3.1/node_modules/@shikijs/engine-javascript/dist/scanner-DX8LRFGE.mjs","../../../../node_modules/.pnpm/oniguruma-parser@0.12.2/node_modules/oniguruma-parser/dist/utils.js","../../../../node_modules/.pnpm/oniguruma-parser@0.12.2/node_modules/oniguruma-parser/dist/tokenizer/tokenize.js","../../../../node_modules/.pnpm/oniguruma-parser@0.12.2/node_modules/oniguruma-parser/dist/parser/node-utils.js","../../../../node_modules/.pnpm/oniguruma-parser@0.12.2/node_modules/oniguruma-parser/dist/parser/parse.js","../../../../node_modules/.pnpm/oniguruma-parser@0.12.2/node_modules/oniguruma-parser/dist/traverser/traverse.js","../../../../node_modules/.pnpm/regex@6.1.0/node_modules/regex/src/utils-internals.js","../../../../node_modules/.pnpm/regex-utilities@2.3.0/node_modules/regex-utilities/src/index.js","../../../../node_modules/.pnpm/regex@6.1.0/node_modules/regex/src/atomic.js","../../../../node_modules/.pnpm/regex-recursion@6.0.2/node_modules/regex-recursion/src/index.js","../../../../node_modules/.pnpm/oniguruma-to-es@4.3.6/node_modules/oniguruma-to-es/dist/esm/index.js","../../../../node_modules/.pnpm/@shikijs+engine-javascript@4.3.1/node_modules/@shikijs/engine-javascript/dist/engine-compile.mjs","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/highlighter/languages/resolveLanguage.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/highlighter/languages/getResolvedOrResolveLanguage.js","../../../../node_modules/.pnpm/@pierre+theming@0.0.2_@pierre+theme@1.1.0_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1/node_modules/@pierre/theming/dist/modules/createTheme.js","../../../../node_modules/.pnpm/@pierre+theming@0.0.2_@pierre+theme@1.1.0_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1/node_modules/@pierre/theming/dist/collections/pierre.js","../../../../node_modules/.pnpm/@pierre+theming@0.0.2_@pierre+theme@1.1.0_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1/node_modules/@pierre/theming/dist/collections/shiki.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/highlighter/themes/themeResolution.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/highlighter/themes/resolveTheme.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/highlighter/themes/getResolvedOrResolveTheme.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/highlighter/shared_highlighter.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/getThemes.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/highlighter/themes/hasResolvedThemes.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/areFileRenderOptionsEqual.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/areFilesEqual.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/getFiletypeFromFileName.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/isFilePlainText.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/iterateOverFile.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/cleanLastNewline.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/hast_utils.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/processLine.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/wrapTokenFragments.js","../../../../node_modules/.pnpm/@shikijs+transformers@4.3.1/node_modules/@shikijs/transformers/dist/index.mjs","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/createTransformerWithState.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/formatCSSVariablePrefix.js","../../../../node_modules/.pnpm/@pierre+theming@0.0.2_@pierre+theme@1.1.0_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1/node_modules/@pierre/theming/dist/modules/color.js","../../../../node_modules/.pnpm/@pierre+theming@0.0.2_@pierre+theme@1.1.0_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1/node_modules/@pierre/theming/dist/modules/normalizeThemeColors.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/getHighlighterThemeStyles.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/getLineNodes.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/splitFileContents.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/renderFileWithHighlighter.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/areDiffTargetsEqual.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/areDiffRenderOptionsEqual.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/isDiffPlainText.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/computeVirtualFileMetrics.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/virtualDiffLayout.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/iterateOverDiff.js","../../../../node_modules/.pnpm/diff@9.0.0/node_modules/diff/libesm/diff/base.js","../../../../node_modules/.pnpm/diff@9.0.0/node_modules/diff/libesm/diff/character.js","../../../../node_modules/.pnpm/diff@9.0.0/node_modules/diff/libesm/util/string.js","../../../../node_modules/.pnpm/diff@9.0.0/node_modules/diff/libesm/diff/word.js","../../../../node_modules/.pnpm/diff@9.0.0/node_modules/diff/libesm/diff/line.js","../../../../node_modules/.pnpm/diff@9.0.0/node_modules/diff/libesm/diff/sentence.js","../../../../node_modules/.pnpm/diff@9.0.0/node_modules/diff/libesm/diff/css.js","../../../../node_modules/.pnpm/diff@9.0.0/node_modules/diff/libesm/diff/json.js","../../../../node_modules/.pnpm/diff@9.0.0/node_modules/diff/libesm/diff/array.js","../../../../node_modules/.pnpm/diff@9.0.0/node_modules/diff/libesm/patch/create.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/parseDiffDecorations.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/renderDiffWithHighlighter.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/highlighter/languages/getResolvedLanguages.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/highlighter/languages/hasResolvedLanguages.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/highlighter/languages/resolveLanguages.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/highlighter/themes/getResolvedThemes.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/highlighter/themes/resolveThemes.js","../../../../node_modules/.pnpm/lru_map@0.4.1/node_modules/lru_map/dist/lru.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/worker/WorkerPoolManager.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/react/WorkerPoolContext.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/areObjectsEqual.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/areOptionsEqual.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/managers/UniversalRenderingManager.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/areSelectionsEqual.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/createWindowFromScrollPosition.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/isStyleNode.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/prefersReducedMotion.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/roundToDevicePixel.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/includesFileAnnotations.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/areSelectionPointsEqual.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/createGutterUtilityElement.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/managers/InteractionManager.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/managers/ResizeManager.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/areRenderRangesEqual.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/highlighter/languages/areLanguagesAttached.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/highlighter/themes/areThemesAttached.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/createAnnotationElement.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/createContentColumn.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/getIconForType.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/createFileHeaderElement.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/createPreElement.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/getHighlighterOptions.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/shouldUseTokenTransformer.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/renderers/FileRenderer.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/sprite.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/areLineAnnotationsEqual.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/arePrePropertiesEqual.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/createAnnotationWrapperNode.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/createGutterUtilityContentNode.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/createUnsafeCSSStyleNode.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/scrollbarGutter.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/style.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/cssWrappers.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/getFileRendererOptions.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/getOrCreateCodeNode.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/hostTheme.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/prerenderHTMLIfNecessary.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/setWrapperNodeProps.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/components/web-components.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/components/File.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/components/VirtualizedFile.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/computeEstimatedDiffHeights.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/detachString.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/parsePatchFiles.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/parseDiffFromFile.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/managers/ScrollSyncManager.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/createEmptyRowBuffer.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/createNoNewlineElement.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/createSeparator.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/getHunkSeparatorSlotName.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/getTotalLineCountFromHunks.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/isDefaultRenderRange.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/renderers/DiffHunksRenderer.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/areDiffLineAnnotationsEqual.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/areHunkDataEqual.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/getDiffHunksRendererOptions.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/components/FileDiff.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/components/VirtualizedFileDiff.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/components/CodeView.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/utils/areManagedSnapshotsEqual.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/react/CodeView.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/highlighter/themes/registerCustomTheme.js","../../../../node_modules/.pnpm/@pierre+diffs@1.2.12_@shikijs+themes@4.3.1_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@pierre/diffs/dist/highlighter/themes/registerCustomCSSVariableTheme.js","../../src/diff/parse-diff.ts","../../src/diff/themes.ts","../../src/diff/worker-pool.tsx","../../src/diff/DiffCodeView.tsx","../../src/diff/DiffFileTree.tsx","../../src/diff/DiffFinding.tsx","../../src/diff/DiffHeader.tsx","../../src/diff/DiffWorkbench.tsx"],"sourcesContent":["@layer rly.components {\n .root {\n --diffs-addition-color-override: var(--rly-color-success-ink);\n --diffs-dark: var(--rly-color-text-1);\n --diffs-dark-bg: var(--rly-color-surface-1);\n --diffs-deletion-color-override: var(--rly-color-blocked-ink);\n --diffs-fg-number-addition-override: var(--rly-color-text-1);\n --diffs-fg-number-deletion-override: var(--rly-color-text-1);\n --diffs-light: var(--rly-color-text-1);\n --diffs-light-bg: var(--rly-color-surface-1);\n\n background: var(--rly-color-surface-1);\n border: 1px solid var(--rly-color-border-1);\n border-radius: var(--rly-radius-group);\n color: var(--rly-color-text-1);\n container-type: inline-size;\n min-inline-size: var(--rly-space-0);\n overflow: hidden;\n }\n\n .viewer {\n block-size: min(70vh, 48rem);\n font: var(--rly-type-code-weight) var(--rly-type-code-size) / var(--rly-type-code-line-height)\n var(--rly-type-code-font);\n min-block-size: 20rem;\n min-inline-size: var(--rly-space-0);\n }\n\n .viewer:focus-visible {\n outline: var(--rly-space-2) solid var(--rly-color-focus);\n outline-offset: calc(var(--rly-space-2) * -1);\n }\n\n .annotation {\n background: var(--rly-color-held-tint);\n border-inline-start: var(--rly-space-2) solid var(--rly-color-held-ink);\n color: var(--rly-color-text-1);\n font: var(--rly-type-label-weight) var(--rly-type-label-size) / var(--rly-type-label-line-height)\n var(--rly-type-label-font);\n padding: var(--rly-space-8) var(--rly-space-12);\n }\n\n .empty,\n .fallbackNotice {\n color: var(--rly-color-text-2);\n font: var(--rly-type-body-weight) var(--rly-type-body-size) / var(--rly-type-body-line-height)\n var(--rly-type-body-font);\n }\n\n .empty {\n margin: var(--rly-space-0);\n padding: var(--rly-space-24);\n }\n\n .fallbackNotice {\n border-block-end: 1px solid var(--rly-color-border-1);\n margin: var(--rly-space-0);\n padding: var(--rly-space-8) var(--rly-space-12);\n }\n\n @media (forced-colors: active) {\n .annotation,\n .viewer:focus-visible {\n forced-color-adjust: auto;\n }\n }\n}\n","@layer rly.components {\n .root {\n background: var(--rly-color-surface-1);\n border: 1px solid var(--rly-color-border-1);\n border-radius: var(--rly-radius-group);\n container-type: inline-size;\n display: grid;\n min-inline-size: var(--rly-space-0);\n overflow: hidden;\n }\n\n .header {\n align-items: end;\n display: flex;\n gap: var(--rly-space-16);\n justify-content: space-between;\n padding: var(--rly-space-20);\n }\n\n .header > span {\n display: grid;\n gap: var(--rly-space-2);\n min-inline-size: var(--rly-space-0);\n }\n\n .header h2 {\n color: var(--rly-color-text-1);\n font: var(--rly-type-card-title-weight) var(--rly-type-card-title-size) / var(--rly-type-card-title-line-height)\n var(--rly-type-card-title-font);\n letter-spacing: var(--rly-type-card-title-tracking);\n margin: var(--rly-space-0);\n overflow-wrap: anywhere;\n }\n\n .eyebrow,\n .notice,\n .empty,\n .error,\n .change,\n .content,\n .previousPath {\n color: var(--rly-color-text-2);\n font: var(--rly-type-meta-weight) var(--rly-type-meta-size) / var(--rly-type-meta-line-height)\n var(--rly-type-meta-font);\n }\n\n .eyebrow,\n .change {\n text-transform: uppercase;\n }\n\n .count {\n color: var(--rly-color-text-1);\n font: var(--rly-type-page-title-weight) var(--rly-type-page-title-size) / 0.8 var(--rly-type-page-title-font);\n letter-spacing: var(--rly-type-page-title-tracking);\n white-space: nowrap;\n }\n\n .notice,\n .empty,\n .error {\n border-block-start: 1px solid var(--rly-color-border-1);\n margin: var(--rly-space-0);\n padding: var(--rly-space-12) var(--rly-space-20);\n }\n\n .error {\n border-inline-start: var(--rly-space-4) solid var(--rly-color-held-ink);\n display: grid;\n gap: var(--rly-space-2);\n }\n\n .error strong {\n color: var(--rly-color-text-1);\n }\n\n .list {\n border-block-start: 1px solid var(--rly-color-border-1);\n list-style: none;\n margin: var(--rly-space-0);\n max-block-size: 34rem;\n overflow: auto;\n padding: var(--rly-space-0);\n }\n\n .list li {\n contain: content;\n contain-intrinsic-block-size: 58px;\n }\n\n .file {\n align-items: center;\n background: transparent;\n border: 0;\n border-block-end: 1px solid var(--rly-color-border-1);\n color: inherit;\n cursor: pointer;\n display: grid;\n gap: var(--rly-space-12);\n grid-template-columns: 3ch minmax(var(--rly-space-0), 1fr) auto;\n inline-size: 100%;\n min-block-size: 58px;\n padding: calc(var(--rly-space-8) + var(--rly-space-2)) var(--rly-space-16);\n text-align: start;\n }\n\n .file:hover {\n background: var(--rly-color-surface-2);\n }\n\n .file[aria-current=\"true\"] {\n background: var(--rly-color-surface-3);\n box-shadow: inset var(--rly-space-4) 0 var(--rly-color-focus);\n }\n\n .file:focus-visible {\n outline: 3px solid var(--rly-color-focus);\n outline-offset: -3px;\n }\n\n .index {\n color: var(--rly-color-text-3);\n font: var(--rly-type-meta-weight) var(--rly-type-meta-size) / var(--rly-type-meta-line-height)\n var(--rly-type-meta-font);\n text-align: end;\n }\n\n .pathBlock {\n display: grid;\n min-inline-size: var(--rly-space-0);\n }\n\n .path,\n .previousPath {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .path {\n color: var(--rly-color-text-1);\n font: var(--rly-type-code-weight) var(--rly-type-code-size) / var(--rly-type-code-line-height)\n var(--rly-type-code-font);\n }\n\n .previousPath {\n text-decoration: line-through;\n }\n\n .badges {\n align-items: end;\n display: grid;\n justify-items: end;\n }\n\n .content {\n max-inline-size: 24ch;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n @container (max-width: 24rem) {\n .header {\n align-items: start;\n }\n\n .count {\n font-size: var(--rly-type-section-title-size);\n }\n\n .file {\n align-items: start;\n grid-template-columns: 3ch minmax(var(--rly-space-0), 1fr);\n }\n\n .badges {\n align-items: start;\n grid-column: 2;\n justify-items: start;\n }\n\n .content {\n max-inline-size: 100%;\n white-space: normal;\n }\n }\n}\n","@layer rly.components {\n .root {\n background: var(--rly-color-surface-1);\n border: 1px solid var(--rly-color-border-1);\n border-radius: var(--rly-radius-group);\n container-type: inline-size;\n display: grid;\n min-inline-size: var(--rly-space-0);\n overflow: hidden;\n }\n\n .header {\n align-items: center;\n display: grid;\n gap: var(--rly-space-12);\n grid-template-columns: auto minmax(var(--rly-space-0), 1fr) auto;\n padding: var(--rly-space-16) var(--rly-space-20);\n }\n\n .avatar {\n align-items: center;\n background: var(--rly-color-surface-2);\n border: 1px solid var(--rly-color-border-2);\n color: var(--rly-color-text-1);\n display: inline-flex;\n font: var(--rly-type-meta-weight) var(--rly-type-meta-size) / 1 var(--rly-type-meta-font);\n justify-content: center;\n min-block-size: var(--rly-space-32);\n min-inline-size: var(--rly-space-32);\n }\n\n .human {\n border-radius: var(--rly-radius-round);\n }\n\n .agent {\n border-color: var(--rly-color-agent);\n border-radius: var(--rly-radius-field);\n color: var(--rly-color-agent);\n }\n\n .identity {\n display: grid;\n min-inline-size: var(--rly-space-0);\n }\n\n .identity strong,\n .body h2 {\n color: var(--rly-color-text-1);\n }\n\n .identity strong {\n font: var(--rly-type-label-weight) var(--rly-type-label-size) / var(--rly-type-label-line-height)\n var(--rly-type-label-font);\n }\n\n .identity span,\n .state,\n .severity,\n .body p,\n .anchorDetails,\n .stale {\n color: var(--rly-color-text-2);\n font: var(--rly-type-meta-weight) var(--rly-type-meta-size) / var(--rly-type-meta-line-height)\n var(--rly-type-meta-font);\n }\n\n .state,\n .severity {\n text-transform: uppercase;\n }\n\n .body {\n border-block-start: 1px solid var(--rly-color-border-1);\n display: grid;\n gap: var(--rly-space-6);\n padding: var(--rly-space-16) var(--rly-space-20);\n }\n\n .body h2,\n .body p {\n margin: var(--rly-space-0);\n overflow-wrap: anywhere;\n }\n\n .prevention {\n border-block-start: 1px solid var(--rly-color-border-1);\n color: var(--rly-color-text-2);\n }\n\n .prevention summary {\n cursor: pointer;\n display: list-item;\n list-style: none;\n min-block-size: 44px;\n padding: var(--rly-space-12) var(--rly-space-20);\n }\n\n .prevention summary::-webkit-details-marker {\n display: none;\n }\n\n .preventionSummary {\n align-items: center;\n display: grid;\n gap: var(--rly-space-12);\n grid-template-columns: minmax(var(--rly-space-0), 1fr) auto auto;\n }\n\n .preventionIndicator::before {\n color: var(--rly-color-text-1);\n content: \"+\";\n font: var(--rly-type-card-title-weight) var(--rly-type-card-title-size) / 1 var(--rly-type-card-title-font);\n }\n\n .prevention[open] .preventionIndicator::before {\n content: \"−\";\n }\n\n .prevention summary:hover {\n background: var(--rly-color-surface-2);\n }\n\n .prevention summary:focus-visible {\n outline: 3px solid var(--rly-color-focus);\n outline-offset: calc(-1 * var(--rly-space-4));\n }\n\n .preventionCopy {\n display: grid;\n gap: var(--rly-space-2);\n min-inline-size: var(--rly-space-0);\n }\n\n .prevention summary strong {\n color: var(--rly-color-text-1);\n font: var(--rly-type-label-weight) var(--rly-type-label-size) / var(--rly-type-label-line-height)\n var(--rly-type-label-font);\n }\n\n .preventionCopy span,\n .prevention dl,\n .rationale {\n font: var(--rly-type-meta-weight) var(--rly-type-meta-size) / var(--rly-type-meta-line-height)\n var(--rly-type-meta-font);\n }\n\n .prevention summary code {\n border: 1px solid var(--rly-color-agent);\n border-radius: var(--rly-radius-round);\n color: var(--rly-color-agent);\n padding: var(--rly-space-4) var(--rly-space-8);\n }\n\n .prevention dl {\n border-block-start: 1px solid var(--rly-color-border-1);\n display: grid;\n gap: var(--rly-space-12);\n margin: var(--rly-space-0);\n padding: var(--rly-space-16) var(--rly-space-20);\n }\n\n .rationale {\n border-block-start: 1px solid var(--rly-color-border-1);\n color: var(--rly-color-text-1);\n margin: var(--rly-space-0);\n padding: var(--rly-space-16) var(--rly-space-20);\n }\n\n .prevention dl div {\n display: grid;\n gap: var(--rly-space-2);\n }\n\n .prevention dt {\n text-transform: uppercase;\n }\n\n .prevention dd {\n color: var(--rly-color-text-1);\n margin: var(--rly-space-0);\n overflow-wrap: anywhere;\n }\n\n .body h2 {\n font: var(--rly-type-card-title-weight) var(--rly-type-card-title-size) / var(--rly-type-card-title-line-height)\n var(--rly-type-card-title-font);\n letter-spacing: var(--rly-type-card-title-tracking);\n }\n\n .body p {\n font: var(--rly-type-body-weight) var(--rly-type-body-size) / var(--rly-type-body-line-height)\n var(--rly-type-body-font);\n }\n\n .anchorDetails {\n border-block-start: 1px solid var(--rly-color-border-1);\n display: grid;\n grid-template-columns: repeat(2, minmax(var(--rly-space-0), 1fr));\n margin: var(--rly-space-0);\n padding: calc(var(--rly-space-8) + var(--rly-space-2)) var(--rly-space-20);\n }\n\n .anchorDetails div {\n display: grid;\n min-inline-size: var(--rly-space-0);\n }\n\n .anchorDetails dt {\n text-transform: uppercase;\n }\n\n .anchorDetails dd {\n color: var(--rly-color-text-1);\n margin: var(--rly-space-0);\n overflow-wrap: anywhere;\n }\n\n .footer {\n border-block-start: 1px solid var(--rly-color-border-1);\n padding: var(--rly-space-12) var(--rly-space-20);\n }\n\n .footer button {\n align-items: start;\n background: transparent;\n border: 0;\n border-radius: var(--rly-radius-control);\n color: var(--rly-color-text-1);\n cursor: pointer;\n display: grid;\n font: var(--rly-type-label-weight) var(--rly-type-label-size) / var(--rly-type-label-line-height)\n var(--rly-type-label-font);\n gap: var(--rly-space-2);\n inline-size: 100%;\n min-block-size: 44px;\n padding: var(--rly-space-6) var(--rly-space-8);\n text-align: start;\n }\n\n .footer button:hover {\n background: var(--rly-color-surface-2);\n }\n\n .footer button:focus-visible {\n outline: 3px solid var(--rly-color-focus);\n outline-offset: var(--rly-space-2);\n }\n\n .footer button code,\n .stale code {\n color: var(--rly-color-text-2);\n overflow-wrap: anywhere;\n }\n\n .stale {\n border-inline-start: var(--rly-space-4) solid var(--rly-color-held-ink);\n display: grid;\n gap: var(--rly-space-2);\n padding-inline-start: var(--rly-space-12);\n }\n\n .stale strong {\n color: var(--rly-color-text-1);\n }\n\n @container (max-width: 24rem) {\n .header {\n align-items: start;\n grid-template-columns: auto minmax(var(--rly-space-0), 1fr);\n }\n\n .state {\n grid-column: 2;\n }\n\n .anchorDetails {\n grid-template-columns: minmax(var(--rly-space-0), 1fr);\n }\n\n .header,\n .body,\n .prevention summary,\n .prevention dl,\n .rationale,\n .anchorDetails,\n .footer {\n padding-inline: calc(var(--rly-space-12) + var(--rly-space-2));\n }\n }\n}\n","@layer rly.components {\n .root {\n background: var(--rly-color-surface-1);\n border: 1px solid var(--rly-color-border-1);\n border-radius: var(--rly-radius-group);\n container-type: inline-size;\n display: grid;\n grid-template-columns: minmax(var(--rly-space-0), 1fr) auto;\n min-inline-size: var(--rly-space-0);\n overflow: hidden;\n }\n\n .thesis {\n display: grid;\n gap: var(--rly-space-4);\n padding: var(--rly-space-24);\n }\n\n .eyebrow,\n .thesis p,\n .progressCopy span {\n color: var(--rly-color-text-2);\n font: var(--rly-type-meta-weight) var(--rly-type-meta-size) / var(--rly-type-meta-line-height)\n var(--rly-type-meta-font);\n }\n\n .eyebrow {\n text-transform: uppercase;\n }\n\n .thesis h1,\n .thesis p {\n margin: var(--rly-space-0);\n overflow-wrap: anywhere;\n }\n\n .thesis h1 {\n color: var(--rly-color-text-1);\n font: var(--rly-type-page-title-weight) var(--rly-type-page-title-size) / var(--rly-type-page-title-line-height)\n var(--rly-type-page-title-font);\n letter-spacing: var(--rly-type-page-title-tracking);\n }\n\n .progress {\n align-content: center;\n border-inline-start: 1px solid var(--rly-color-border-1);\n display: grid;\n gap: var(--rly-space-12);\n min-inline-size: 15rem;\n padding: var(--rly-space-24);\n }\n\n .progressCopy {\n align-items: end;\n display: flex;\n gap: var(--rly-space-8);\n }\n\n .progressCopy strong {\n color: var(--rly-color-text-1);\n font: var(--rly-type-verdict-weight) var(--rly-type-verdict-size) / 0.75 var(--rly-type-verdict-font);\n letter-spacing: var(--rly-type-verdict-tracking);\n }\n\n .progress progress {\n accent-color: var(--rly-color-focus);\n block-size: var(--rly-space-6);\n inline-size: 100%;\n }\n\n .controls {\n align-items: center;\n border-block-start: 1px solid var(--rly-color-border-1);\n display: flex;\n flex-wrap: wrap;\n gap: var(--rly-space-8);\n grid-column: 1 / -1;\n padding: var(--rly-space-12) var(--rly-space-16);\n }\n\n .group {\n display: inline-flex;\n }\n\n .group button,\n .standalone {\n background: transparent;\n border: 1px solid var(--rly-color-border-2);\n color: var(--rly-color-text-2);\n cursor: pointer;\n font: var(--rly-type-label-weight) var(--rly-type-label-size) / var(--rly-type-label-line-height)\n var(--rly-type-label-font);\n min-block-size: 44px;\n padding: var(--rly-space-8) var(--rly-space-12);\n }\n\n .group button:first-child,\n .standalone {\n border-radius: var(--rly-radius-control) 0 0 var(--rly-radius-control);\n }\n\n .group button:last-child,\n .standalone {\n border-radius: 0 var(--rly-radius-control) var(--rly-radius-control) 0;\n }\n\n .group button + button {\n border-inline-start: 0;\n }\n\n .group button[aria-pressed=\"true\"],\n .standalone[aria-pressed=\"true\"] {\n background: var(--rly-color-surface-3);\n color: var(--rly-color-text-1);\n box-shadow: inset 0 -3px var(--rly-color-focus);\n }\n\n .group button:hover,\n .standalone:hover {\n background: var(--rly-color-surface-2);\n color: var(--rly-color-text-1);\n }\n\n .group button:focus-visible,\n .standalone:focus-visible {\n outline: 3px solid var(--rly-color-focus);\n outline-offset: var(--rly-space-2);\n position: relative;\n z-index: 1;\n }\n\n .standalone {\n border-radius: var(--rly-radius-control);\n }\n\n @container (max-width: 38rem) {\n .root {\n grid-template-columns: minmax(var(--rly-space-0), 1fr);\n }\n\n .progress {\n border-block-start: 1px solid var(--rly-color-border-1);\n border-inline-start: 0;\n min-inline-size: var(--rly-space-0);\n padding-block-start: var(--rly-space-16);\n }\n\n .controls {\n align-items: stretch;\n display: grid;\n }\n\n .group {\n display: grid;\n grid-template-columns: repeat(2, minmax(var(--rly-space-0), 1fr));\n }\n\n .group button,\n .group button:first-child,\n .group button:last-child,\n .standalone {\n border: 1px solid var(--rly-color-border-2);\n border-radius: var(--rly-radius-control);\n }\n\n .thesis,\n .progress {\n padding-inline: var(--rly-space-16);\n }\n }\n}\n","@layer rly.components {\n .root {\n background: var(--rly-color-surface-1);\n border: 1px solid var(--rly-color-border-1);\n border-radius: var(--rly-radius-group);\n color: var(--rly-color-text-1);\n container-type: inline-size;\n min-inline-size: var(--rly-space-0);\n overflow: hidden;\n }\n\n .header {\n border-block-end: 1px solid var(--rly-color-border-1);\n min-inline-size: var(--rly-space-0);\n }\n\n .header > *,\n .inventory > *,\n .viewer > *,\n .findingItem > * {\n border: 0;\n border-radius: var(--rly-space-0);\n }\n\n .body {\n display: grid;\n grid-template-columns: minmax(14rem, 0.72fr) minmax(22rem, 2.1fr) minmax(17rem, 0.9fr);\n min-inline-size: var(--rly-space-0);\n }\n\n .inventory,\n .review,\n .viewer,\n .findings {\n min-inline-size: var(--rly-space-0);\n }\n\n .inventory,\n .review {\n border-inline-end: 1px solid var(--rly-color-border-1);\n }\n\n .review {\n display: grid;\n grid-template-rows: auto auto minmax(0, 1fr);\n }\n\n .scope,\n .findingsHeader {\n display: grid;\n gap: var(--rly-space-2);\n padding: var(--rly-space-16) var(--rly-space-20);\n }\n\n .scope {\n grid-template-columns: minmax(var(--rly-space-0), 1fr) auto;\n }\n\n .scopeLabel,\n .scopeValue {\n grid-column: 1;\n }\n\n .scope span,\n .findingsHeader > span,\n .notice,\n .empty {\n color: var(--rly-color-text-2);\n font: var(--rly-type-meta-weight) var(--rly-type-meta-size) / var(--rly-type-meta-line-height)\n var(--rly-type-meta-font);\n }\n\n .scope span,\n .findingsHeader > span {\n text-transform: uppercase;\n }\n\n .scopeValue {\n font: var(--rly-type-label-weight) var(--rly-type-label-size) / var(--rly-type-label-line-height)\n var(--rly-type-label-font);\n overflow-wrap: anywhere;\n }\n\n .showAll {\n align-self: center;\n background: var(--rly-color-surface-2);\n border: 1px solid var(--rly-color-border-2);\n border-radius: var(--rly-radius-control);\n color: var(--rly-color-text-1);\n cursor: pointer;\n font: var(--rly-type-label-weight) var(--rly-type-label-size) / var(--rly-type-label-line-height)\n var(--rly-type-label-font);\n grid-column: 2;\n grid-row: 1 / 3;\n padding: var(--rly-space-8) var(--rly-space-12);\n }\n\n .showAll:hover {\n background: var(--rly-color-surface-3);\n }\n\n .showAll:focus-visible {\n outline: var(--rly-space-2) solid var(--rly-color-focus);\n outline-offset: var(--rly-space-2);\n }\n\n .notice {\n background: var(--rly-color-surface-2);\n border-block-start: 1px solid var(--rly-color-border-1);\n padding: calc(var(--rly-space-8) + var(--rly-space-2)) var(--rly-space-20);\n }\n\n .viewer {\n border-block-start: 1px solid var(--rly-color-border-1);\n overflow-x: auto;\n }\n\n .findings {\n align-content: start;\n display: grid;\n }\n\n .findingsHeader {\n grid-template-columns: minmax(var(--rly-space-0), 1fr) auto;\n }\n\n .findingsHeader > span {\n grid-column: 1 / -1;\n }\n\n .findingsHeader h2,\n .findingsHeader strong {\n margin: var(--rly-space-0);\n }\n\n .findingsHeader h2 {\n font: var(--rly-type-card-title-weight) var(--rly-type-card-title-size) / var(--rly-type-card-title-line-height)\n var(--rly-type-card-title-font);\n letter-spacing: var(--rly-type-card-title-tracking);\n }\n\n .findingsHeader strong {\n align-self: center;\n font: var(--rly-type-section-title-weight) var(--rly-type-section-title-size) /\n var(--rly-type-section-title-line-height) var(--rly-type-section-title-font);\n }\n\n .findingList {\n border-block-start: 1px solid var(--rly-color-border-1);\n list-style: none;\n margin: var(--rly-space-0);\n max-block-size: 48rem;\n overflow-y: auto;\n padding: var(--rly-space-0);\n }\n\n .findingList:focus-visible {\n outline: 2px solid var(--rly-color-focus);\n outline-offset: -2px;\n }\n\n .findingItem + .findingItem {\n border-block-start: 1px solid var(--rly-color-border-1);\n }\n\n .empty {\n border-block-start: 1px solid var(--rly-color-border-1);\n margin: var(--rly-space-0);\n padding: var(--rly-space-24) var(--rly-space-20);\n }\n\n @container (max-width: 58rem) {\n .body {\n grid-template-columns: minmax(var(--rly-space-0), 1fr);\n }\n\n .inventory,\n .review {\n border-block-end: 1px solid var(--rly-color-border-1);\n border-inline-end: 0;\n }\n\n .findingList {\n max-block-size: none;\n }\n }\n\n @container (max-width: 24rem) {\n .scope,\n .findingsHeader {\n padding-inline: calc(var(--rly-space-12) + var(--rly-space-2));\n }\n\n .notice,\n .empty {\n padding-inline: calc(var(--rly-space-12) + var(--rly-space-2));\n }\n }\n\n @media (forced-colors: active) {\n .notice,\n .showAll {\n forced-color-adjust: auto;\n }\n }\n}\n","//#region src/react/constants.ts\nconst GutterUtilitySlotStyles = {\n\tposition: \"absolute\",\n\ttop: 0,\n\tbottom: 0,\n\ttextAlign: \"center\",\n\twhiteSpace: \"normal\",\n\ttouchAction: \"none\"\n};\nconst MergeConflictSlotStyles = { display: \"contents\" };\nfunction noopRender() {\n\treturn null;\n}\n//#endregion\nexport { GutterUtilitySlotStyles, MergeConflictSlotStyles, noopRender };\n\n//# sourceMappingURL=constants.js.map","//#region src/constants.ts\nconst DIFFS_TAG_NAME = \"diffs-container\";\nconst DIFFS_DEVELOPMENT_BUILD = (() => {\n\ttry {\n\t\treturn process.env.NODE_ENV === \"development\";\n\t} catch {\n\t\treturn false;\n\t}\n})();\nconst COMMIT_METADATA_SPLIT = /(?=^From [a-f0-9]+ .+$)/m;\nconst GIT_DIFF_FILE_BREAK_REGEX = /(?=^diff --git)/gm;\nconst UNIFIED_DIFF_FILE_BREAK_REGEX = /(?=^---\\s+\\S)/gm;\nconst FILE_CONTEXT_BLOB = /(?=^@@ )/gm;\nconst HUNK_HEADER = /^@@ -(\\d+)(?:,(\\d+))? \\+(\\d+)(?:,(\\d+))? @@(?: (.*))?/m;\nconst SPLIT_WITH_NEWLINES = /(?<=\\n)/;\nconst FILENAME_HEADER_REGEX = /^(---|\\+\\+\\+)\\s+([^\\t\\r\\n]+)/;\nconst FILENAME_HEADER_REGEX_GIT = /^(---|\\+\\+\\+)\\s+[ab]\\/([^\\t\\r\\n]+)/;\nconst ALTERNATE_FILE_NAMES_GIT = /^diff --git (?:\"a\\/(.+?)\"|a\\/(.+?)) (?:\"b\\/(.+?)\"|b\\/(.+?))$/;\nconst INDEX_LINE_METADATA = /^index ([0-9a-f]+)\\.\\.([0-9a-f]+)(?: (\\d+))?$/i;\nconst MERGE_CONFLICT_START_MARKER_REGEX = /^<{7,}(?:\\s.*)?$/;\nconst MERGE_CONFLICT_BASE_MARKER_REGEX = /^\\|{7,}(?:\\s.*)?$/;\nconst MERGE_CONFLICT_SEPARATOR_MARKER_REGEX = /^={7,}$/;\nconst MERGE_CONFLICT_END_MARKER_REGEX = /^>{7,}(?:\\s.*)?$/;\nconst HEADER_PREFIX_SLOT_ID = \"header-prefix\";\nconst HEADER_METADATA_SLOT_ID = \"header-metadata\";\nconst CUSTOM_HEADER_SLOT_ID = \"header-custom\";\nconst DEFAULT_THEMES = {\n\tdark: \"pierre-dark\",\n\tlight: \"pierre-light\"\n};\nconst THEME_CSS_ATTRIBUTE = \"data-theme-css\";\nconst UNSAFE_CSS_ATTRIBUTE = \"data-unsafe-css\";\nconst CORE_CSS_ATTRIBUTE = \"data-core-css\";\nconst DIFFS_SCROLLBAR_MEASURE_ATTRIBUTE = \"data-diffs-scrollbar-measure\";\nconst DIFFS_SCROLLBAR_GUTTER_MEASURED_PROPERTY = \"--diffs-scrollbar-gutter-measured\";\nconst DEFAULT_COLLAPSED_CONTEXT_THRESHOLD = 1;\nconst DEFAULT_TOKENIZE_MAX_LENGTH = 1e5;\nconst DEFAULT_VIRTUAL_FILE_METRICS = {\n\thunkLineCount: 50,\n\tlineHeight: 20,\n\tdiffHeaderHeight: 44,\n\tspacing: 8\n};\nconst DEFAULT_CODE_VIEW_FILE_METRICS = {\n\t...DEFAULT_VIRTUAL_FILE_METRICS,\n\thunkLineCount: 1\n};\nconst DEFAULT_CODE_VIEW_LAYOUT = {\n\tpaddingTop: 8,\n\tpaddingBottom: 8,\n\tgap: 8\n};\nconst DEFAULT_SMOOTH_SCROLL_SETTINGS = {\n\tomega: .015,\n\tpositionEpsilon: .5,\n\tvelocityEpsilon: .05\n};\nconst DEFAULT_EXPANDED_REGION = Object.freeze({\n\tfromStart: 0,\n\tfromEnd: 0\n});\nconst DEFAULT_RENDER_RANGE = {\n\tstartingLine: 0,\n\ttotalLines: Infinity,\n\tbufferBefore: 0,\n\tbufferAfter: 0\n};\nconst EMPTY_RENDER_RANGE = {\n\tstartingLine: 0,\n\ttotalLines: 0,\n\tbufferBefore: 0,\n\tbufferAfter: 0\n};\n//#endregion\nexport { ALTERNATE_FILE_NAMES_GIT, COMMIT_METADATA_SPLIT, CORE_CSS_ATTRIBUTE, CUSTOM_HEADER_SLOT_ID, DEFAULT_CODE_VIEW_FILE_METRICS, DEFAULT_CODE_VIEW_LAYOUT, DEFAULT_COLLAPSED_CONTEXT_THRESHOLD, DEFAULT_EXPANDED_REGION, DEFAULT_RENDER_RANGE, DEFAULT_SMOOTH_SCROLL_SETTINGS, DEFAULT_THEMES, DEFAULT_TOKENIZE_MAX_LENGTH, DEFAULT_VIRTUAL_FILE_METRICS, DIFFS_DEVELOPMENT_BUILD, DIFFS_SCROLLBAR_GUTTER_MEASURED_PROPERTY, DIFFS_SCROLLBAR_MEASURE_ATTRIBUTE, DIFFS_TAG_NAME, EMPTY_RENDER_RANGE, FILENAME_HEADER_REGEX, FILENAME_HEADER_REGEX_GIT, FILE_CONTEXT_BLOB, GIT_DIFF_FILE_BREAK_REGEX, HEADER_METADATA_SLOT_ID, HEADER_PREFIX_SLOT_ID, HUNK_HEADER, INDEX_LINE_METADATA, MERGE_CONFLICT_BASE_MARKER_REGEX, MERGE_CONFLICT_END_MARKER_REGEX, MERGE_CONFLICT_SEPARATOR_MARKER_REGEX, MERGE_CONFLICT_START_MARKER_REGEX, SPLIT_WITH_NEWLINES, THEME_CSS_ATTRIBUTE, UNIFIED_DIFF_FILE_BREAK_REGEX, UNSAFE_CSS_ATTRIBUTE };\n\n//# sourceMappingURL=constants.js.map","//#region src/utils/getLineAnnotationName.ts\nfunction getLineAnnotationName(annotation) {\n\treturn `annotation-${\"side\" in annotation ? `${annotation.side}-` : \"\"}${annotation.lineNumber}`;\n}\n//#endregion\nexport { getLineAnnotationName };\n\n//# sourceMappingURL=getLineAnnotationName.js.map","//#region src/utils/getMergeConflictActionSlotName.ts\nfunction getMergeConflictActionSlotName({ hunkIndex, lineIndex, conflictIndex }) {\n\treturn `merge-conflict-action-${hunkIndex}-${lineIndex}-${conflictIndex}`;\n}\n//#endregion\nexport { getMergeConflictActionSlotName };\n\n//# sourceMappingURL=getMergeConflictActionSlotName.js.map","//#region src/utils/parseMergeConflictDiffFromFile.ts\nfunction getMergeConflictActionAnchor(action, fileDiff) {\n\tconst hunk = fileDiff.hunks[action.hunkIndex];\n\tif (hunk == null) return;\n\treturn {\n\t\thunkIndex: action.hunkIndex,\n\t\tlineIndex: getUnifiedLineStartForContent(hunk, action.startContentIndex)\n\t};\n}\nfunction parseMergeConflictDiffFromFile(file, maxContextLines = 6) {\n\tmaxContextLines = Math.max(maxContextLines, 1);\n\tconst s = {\n\t\tdeletionLines: [],\n\t\tadditionLines: [],\n\t\tconflictStack: [],\n\t\tconflictBuilders: [],\n\t\tactions: [],\n\t\thunks: [],\n\t\tnextConflictIndex: 0,\n\t\tsplitLineCount: 0,\n\t\tunifiedLineCount: 0,\n\t\tlastHunkEnd: 0,\n\t\tactiveHunk: void 0,\n\t\tmaxContextLines,\n\t\tmaxContextLines2: maxContextLines * 2\n\t};\n\tconst contents = file.contents;\n\tconst contentLength = contents.length;\n\tif (contentLength > 0) {\n\t\tlet lineStart = 0;\n\t\tlet lineIndex = 0;\n\t\tlet newlinePos = contents.indexOf(\"\\n\", lineStart);\n\t\twhile (newlinePos !== -1) {\n\t\t\tprocessLine(s, contents.slice(lineStart, newlinePos + 1), lineIndex);\n\t\t\tlineStart = newlinePos + 1;\n\t\t\tlineIndex++;\n\t\t\tnewlinePos = contents.indexOf(\"\\n\", lineStart);\n\t\t}\n\t\tif (lineStart < contentLength) processLine(s, contents.slice(lineStart), lineIndex);\n\t}\n\tif (s.conflictStack.length > 0) throw new Error(\"parseMergeConflictDiffFromFile: unfinished merge conflict marker stack\");\n\tif (s.activeHunk != null && s.activeHunk.hunkContent.length > 0) {\n\t\tflushBufferedContext(s, s.activeHunk, \"trailing\");\n\t\tfinalizeActiveHunk(s);\n\t}\n\tfor (let conflictIndex = 0; conflictIndex < s.conflictBuilders.length; conflictIndex++) {\n\t\tconst builder = s.conflictBuilders[conflictIndex];\n\t\tif (builder == null || !builder.completed) throw new Error(`parseMergeConflictDiffFromFile: failed to build merge conflict action ${conflictIndex}`);\n\t}\n\tif (s.hunks.length > 0 && s.additionLines.length > 0 && s.deletionLines.length > 0) {\n\t\tconst lastHunk = s.hunks[s.hunks.length - 1];\n\t\tconst collapsedAfter = Math.max(s.additionLines.length - (lastHunk.additionStart + lastHunk.additionCount - 1), 0);\n\t\ts.splitLineCount += collapsedAfter;\n\t\ts.unifiedLineCount += collapsedAfter;\n\t}\n\tconst currentContents = s.deletionLines.join(\"\");\n\tconst incomingContents = s.additionLines.join(\"\");\n\tconst currentFile = createResolvedConflictFile(file, \"current\", currentContents);\n\tconst incomingFile = createResolvedConflictFile(file, \"incoming\", incomingContents);\n\tlet type = \"change\";\n\tif (incomingContents === \"\") type = \"deleted\";\n\telse if (currentContents === \"\") type = \"new\";\n\tconst fileDiff = {\n\t\tname: file.name,\n\t\tprevName: void 0,\n\t\ttype,\n\t\thunks: s.hunks,\n\t\tsplitLineCount: s.splitLineCount,\n\t\tunifiedLineCount: s.unifiedLineCount,\n\t\tisPartial: false,\n\t\tdeletionLines: s.deletionLines,\n\t\tadditionLines: s.additionLines,\n\t\tcacheKey: file.cacheKey != null ? `${file.cacheKey}:merge-conflict-diff` : void 0\n\t};\n\treturn {\n\t\tfileDiff,\n\t\tcurrentFile,\n\t\tincomingFile,\n\t\tactions: s.actions,\n\t\tmarkerRows: buildMergeConflictMarkerRows(fileDiff, s.actions)\n\t};\n}\nfunction processLine(s, line, index) {\n\tconst frame = s.conflictStack[s.conflictStack.length - 1];\n\tif (frame == null) {\n\t\tif (line.length >= 7 && line.charCodeAt(0) === 60 && getMergeConflictMarkerType(line) === \"start\") {\n\t\t\thandleStartMarker(s, line, index);\n\t\t\treturn;\n\t\t}\n\t\temitContextLine(s, line);\n\t\treturn;\n\t}\n\tconst markerType = getMergeConflictMarkerType(line);\n\tif (markerType === \"start\") {\n\t\thandleStartMarker(s, line, index);\n\t\treturn;\n\t}\n\tif (markerType === \"base\") {\n\t\tframe.stage = \"base\";\n\t\tframe.baseMarkerLineIndex = index;\n\t\tframe.markerLines.base = line;\n\t\treturn;\n\t}\n\tif (markerType === \"separator\") {\n\t\tframe.stage = \"incoming\";\n\t\tframe.separatorLineIndex = index;\n\t\tframe.markerLines.separator = line;\n\t\treturn;\n\t}\n\tif (markerType === \"end\") {\n\t\tconst completedFrame = s.conflictStack.pop();\n\t\tif (completedFrame == null) throw new Error(\"parseMergeConflictDiffFromFile: encountered end marker before start marker\");\n\t\tfinalizeConflict(s, completedFrame, index, line);\n\t\treturn;\n\t}\n\tif (frame.stage === \"current\") emitChangeLine(s, \"deletion\", line, frame.conflictIndex, \"current\");\n\telse if (frame.stage === \"base\") emitContextLine(s, line, frame.conflictIndex);\n\telse emitChangeLine(s, \"addition\", line, frame.conflictIndex, \"incoming\");\n}\nfunction ensureActiveHunk(s) {\n\ts.activeHunk ??= createHunkBuilder(s.additionLines.length + 1, s.deletionLines.length + 1);\n\treturn s.activeHunk;\n}\nfunction assignConflictContent(s, conflictIndex, role, contentIndex) {\n\tconst builder = s.conflictBuilders[conflictIndex];\n\tif (builder == null) throw new Error(`parseMergeConflictDiffFromFile: failed to locate conflict action ${conflictIndex}`);\n\tconst action = builder.action;\n\tconst hunkIndex = s.hunks.length;\n\tif (action.hunkIndex < 0) action.hunkIndex = hunkIndex;\n\telse if (action.hunkIndex !== hunkIndex) throw new Error(`parseMergeConflictDiffFromFile: conflict ${conflictIndex} spans multiple hunks and cannot be anchored`);\n\tif (action.startContentIndex < 0) action.startContentIndex = contentIndex;\n\taction.endContentIndex = contentIndex;\n\taction.endMarkerContentIndex = contentIndex;\n\tif (role === \"current\") {\n\t\taction.currentContentIndex ??= contentIndex;\n\t\treturn;\n\t}\n\tif (role === \"base\") {\n\t\taction.baseContentIndex ??= contentIndex;\n\t\treturn;\n\t}\n\taction.incomingContentIndex = contentIndex;\n}\nfunction appendChangeLine(hunk, lineType, additionLineIndex, deletionLineIndex) {\n\tconst hunkContent = hunk.hunkContent;\n\tconst lastContent = hunkContent[hunkContent.length - 1];\n\tif (lastContent?.type === \"change\") {\n\t\tif (lineType === \"addition\") lastContent.additions++;\n\t\telse lastContent.deletions++;\n\t\treturn hunkContent.length - 1;\n\t}\n\thunkContent.push({\n\t\ttype: \"change\",\n\t\tadditions: lineType === \"addition\" ? 1 : 0,\n\t\tdeletions: lineType === \"deletion\" ? 1 : 0,\n\t\tadditionLineIndex,\n\t\tdeletionLineIndex\n\t});\n\treturn hunkContent.length - 1;\n}\nfunction flushBufferedContext(s, hunk, mode) {\n\tlet count = hunk.contextBufferCount;\n\tlet addStart = hunk.contextBufferAdditionStart;\n\tlet delStart = hunk.contextBufferDeletionStart;\n\tif (mode === \"leading\" && count > s.maxContextLines) {\n\t\tconst difference = count - s.maxContextLines;\n\t\taddStart += difference;\n\t\tdelStart += difference;\n\t\tcount = s.maxContextLines;\n\t\thunk.additionStart += difference;\n\t\thunk.deletionStart += difference;\n\t\thunk.additionLineIndex += difference;\n\t\thunk.deletionLineIndex += difference;\n\t}\n\tif (mode === \"trailing\" && count > s.maxContextLines) count = s.maxContextLines;\n\tif (count === 0) {\n\t\thunk.contextBufferCount = 0;\n\t\thunk.contextBufferBaseConflicts = void 0;\n\t\treturn;\n\t}\n\tconst hunkContent = hunk.hunkContent;\n\tconst lastContent = hunkContent[hunkContent.length - 1];\n\tlet contentIndex;\n\tif (lastContent?.type === \"context\") {\n\t\tlastContent.lines += count;\n\t\tcontentIndex = hunkContent.length - 1;\n\t} else {\n\t\thunkContent.push({\n\t\t\ttype: \"context\",\n\t\t\tlines: count,\n\t\t\tadditionLineIndex: addStart,\n\t\t\tdeletionLineIndex: delStart\n\t\t});\n\t\tcontentIndex = hunkContent.length - 1;\n\t}\n\thunk.additionCount += count;\n\thunk.deletionCount += count;\n\tconst baseConflicts = hunk.contextBufferBaseConflicts;\n\tif (baseConflicts != null) {\n\t\tconst bufferStartOffset = addStart - hunk.contextBufferAdditionStart;\n\t\tfor (const [offset, conflictIndex] of baseConflicts) if (offset >= bufferStartOffset && offset < bufferStartOffset + count) assignConflictContent(s, conflictIndex, \"base\", contentIndex);\n\t}\n\thunk.contextBufferCount = 0;\n\thunk.contextBufferBaseConflicts = void 0;\n}\nfunction finalizeActiveHunk(s) {\n\tif (s.activeHunk == null) return;\n\tconst hunk = s.activeHunk;\n\ts.activeHunk = void 0;\n\tif (hunk.hunkContent.length === 0) return;\n\tlet hunkSplitLineCount = 0;\n\tlet hunkUnifiedLineCount = 0;\n\tfor (const content of hunk.hunkContent) if (content.type === \"context\") {\n\t\thunkSplitLineCount += content.lines;\n\t\thunkUnifiedLineCount += content.lines;\n\t} else {\n\t\thunkSplitLineCount += Math.max(content.additions, content.deletions);\n\t\thunkUnifiedLineCount += content.additions + content.deletions;\n\t}\n\tconst collapsedBefore = Math.max(hunk.additionStart - 1 - s.lastHunkEnd, 0);\n\tconst finalizedHunk = {\n\t\tcollapsedBefore,\n\t\tadditionStart: hunk.additionStart,\n\t\tadditionCount: hunk.additionCount,\n\t\tadditionLines: hunk.additionLines,\n\t\tadditionLineIndex: hunk.additionLineIndex,\n\t\tdeletionStart: hunk.deletionStart,\n\t\tdeletionCount: hunk.deletionCount,\n\t\tdeletionLines: hunk.deletionLines,\n\t\tdeletionLineIndex: hunk.deletionLineIndex,\n\t\thunkContent: hunk.hunkContent,\n\t\thunkContext: void 0,\n\t\thunkSpecs: `@@ -${formatHunkRange(hunk.deletionStart, hunk.deletionCount)} +${formatHunkRange(hunk.additionStart, hunk.additionCount)} @@\\n`,\n\t\tsplitLineStart: s.splitLineCount + collapsedBefore,\n\t\tsplitLineCount: hunkSplitLineCount,\n\t\tunifiedLineStart: s.unifiedLineCount + collapsedBefore,\n\t\tunifiedLineCount: hunkUnifiedLineCount,\n\t\tnoEOFCRAdditions: false,\n\t\tnoEOFCRDeletions: false\n\t};\n\ts.hunks.push(finalizedHunk);\n\ts.splitLineCount += collapsedBefore + hunkSplitLineCount;\n\ts.unifiedLineCount += collapsedBefore + hunkUnifiedLineCount;\n\ts.lastHunkEnd = hunk.additionStart + hunk.additionCount - 1;\n}\nfunction splitHunkWithBufferedContext(s) {\n\tif (s.activeHunk == null) return;\n\tconst hunk = s.activeHunk;\n\tconst count = hunk.contextBufferCount;\n\tconst omittedContextLineCount = count - s.maxContextLines2;\n\tconst nextAddStart = hunk.contextBufferAdditionStart + count - s.maxContextLines;\n\tconst nextDelStart = hunk.contextBufferDeletionStart + count - s.maxContextLines;\n\tlet nextBaseConflicts;\n\tif (hunk.contextBufferBaseConflicts != null) {\n\t\tconst tailOffset = count - s.maxContextLines;\n\t\tfor (const [offset, ci] of hunk.contextBufferBaseConflicts) if (offset >= tailOffset) {\n\t\t\tnextBaseConflicts ??= /* @__PURE__ */ new Map();\n\t\t\tnextBaseConflicts.set(offset - tailOffset, ci);\n\t\t}\n\t}\n\tflushBufferedContext(s, hunk, \"trailing\");\n\tconst emittedAdditionCount = hunk.additionCount;\n\tconst emittedDeletionCount = hunk.deletionCount;\n\tfinalizeActiveHunk(s);\n\ts.activeHunk = createHunkBuilder(hunk.additionStart + emittedAdditionCount + omittedContextLineCount, hunk.deletionStart + emittedDeletionCount + omittedContextLineCount);\n\ts.activeHunk.contextBufferAdditionStart = nextAddStart;\n\ts.activeHunk.contextBufferDeletionStart = nextDelStart;\n\ts.activeHunk.contextBufferCount = s.maxContextLines;\n\ts.activeHunk.contextBufferBaseConflicts = nextBaseConflicts;\n}\nfunction emitContextLine(s, line, baseConflictIndex = -1) {\n\tconst hunk = ensureActiveHunk(s);\n\tif (hunk.contextBufferCount === 0) {\n\t\thunk.contextBufferAdditionStart = s.additionLines.length;\n\t\thunk.contextBufferDeletionStart = s.deletionLines.length;\n\t}\n\ts.additionLines.push(line);\n\ts.deletionLines.push(line);\n\tif (baseConflictIndex >= 0) {\n\t\thunk.contextBufferBaseConflicts ??= /* @__PURE__ */ new Map();\n\t\thunk.contextBufferBaseConflicts.set(hunk.contextBufferCount, baseConflictIndex);\n\t}\n\thunk.contextBufferCount++;\n}\nfunction emitChangeLine(s, lineType, line, conflictIndex, role) {\n\tlet hunk = ensureActiveHunk(s);\n\tif (hunk.hunkContent.length > 0 && hunk.contextBufferCount > s.maxContextLines2) {\n\t\tsplitHunkWithBufferedContext(s);\n\t\thunk = s.activeHunk;\n\t}\n\tflushBufferedContext(s, hunk, hunk.hunkContent.length === 0 ? \"leading\" : \"before-change\");\n\tconst additionLineIndex = s.additionLines.length;\n\tconst deletionLineIndex = s.deletionLines.length;\n\tif (lineType === \"addition\") s.additionLines.push(line);\n\telse s.deletionLines.push(line);\n\tconst contentIndex = appendChangeLine(hunk, lineType, additionLineIndex, deletionLineIndex);\n\tif (lineType === \"addition\") {\n\t\thunk.additionCount++;\n\t\thunk.additionLines++;\n\t} else {\n\t\thunk.deletionCount++;\n\t\thunk.deletionLines++;\n\t}\n\tassignConflictContent(s, conflictIndex, role, contentIndex);\n}\nfunction finalizeConflict(s, frame, endLineIndex, endMarkerLine) {\n\tif (frame.separatorLineIndex == null || frame.markerLines.separator == null) throw new Error(`parseMergeConflictDiffFromFile: conflict ${frame.conflictIndex} is missing a separator marker`);\n\tconst builder = s.conflictBuilders[frame.conflictIndex];\n\tif (builder == null) throw new Error(`parseMergeConflictDiffFromFile: failed to finalize conflict ${frame.conflictIndex}`);\n\tconst action = builder.action;\n\taction.markerLines.separator = frame.markerLines.separator;\n\taction.markerLines.end = endMarkerLine;\n\tif (frame.markerLines.base != null) action.markerLines.base = frame.markerLines.base;\n\taction.conflict = {\n\t\tconflictIndex: frame.conflictIndex,\n\t\tstartLineIndex: frame.startLineIndex,\n\t\tstartLineNumber: frame.startLineIndex + 1,\n\t\tseparatorLineIndex: frame.separatorLineIndex,\n\t\tseparatorLineNumber: frame.separatorLineIndex + 1,\n\t\tendLineIndex,\n\t\tendLineNumber: endLineIndex + 1,\n\t\tbaseMarkerLineIndex: frame.baseMarkerLineIndex,\n\t\tbaseMarkerLineNumber: frame.baseMarkerLineIndex != null ? frame.baseMarkerLineIndex + 1 : void 0\n\t};\n\tconst fallbackContentIndex = action.currentContentIndex ?? action.incomingContentIndex;\n\taction.currentContentIndex ??= fallbackContentIndex;\n\taction.incomingContentIndex ??= fallbackContentIndex;\n\tif (action.startContentIndex < 0 && fallbackContentIndex != null) action.startContentIndex = fallbackContentIndex;\n\tif (action.endContentIndex < 0 && fallbackContentIndex != null) action.endContentIndex = fallbackContentIndex;\n\tif (action.endMarkerContentIndex < 0 && fallbackContentIndex != null) action.endMarkerContentIndex = fallbackContentIndex;\n\tif (action.hunkIndex < 0 || action.startContentIndex < 0 || action.endContentIndex < 0 || action.endMarkerContentIndex < 0) throw new Error(`parseMergeConflictDiffFromFile: failed to anchor merge conflict ${frame.conflictIndex}`);\n\ts.actions[action.conflictIndex] = action;\n\tbuilder.completed = true;\n}\nfunction handleStartMarker(s, line, lineIndex) {\n\tconst conflictIndex = s.nextConflictIndex;\n\ts.nextConflictIndex++;\n\ts.conflictStack.push({\n\t\tconflictIndex,\n\t\tstage: \"current\",\n\t\tstartLineIndex: lineIndex,\n\t\tmarkerLines: { start: line }\n\t});\n\ts.conflictBuilders[conflictIndex] = {\n\t\tcompleted: false,\n\t\taction: {\n\t\t\tconflict: {\n\t\t\t\tconflictIndex,\n\t\t\t\tstartLineIndex: lineIndex,\n\t\t\t\tstartLineNumber: lineIndex + 1,\n\t\t\t\tseparatorLineIndex: lineIndex,\n\t\t\t\tseparatorLineNumber: lineIndex + 1,\n\t\t\t\tendLineIndex: lineIndex,\n\t\t\t\tendLineNumber: lineIndex + 1,\n\t\t\t\tbaseMarkerLineIndex: void 0,\n\t\t\t\tbaseMarkerLineNumber: void 0\n\t\t\t},\n\t\t\tconflictIndex,\n\t\t\thunkIndex: -1,\n\t\t\tstartContentIndex: -1,\n\t\t\tendContentIndex: -1,\n\t\t\tendMarkerContentIndex: -1,\n\t\t\tmarkerLines: {\n\t\t\t\tstart: line,\n\t\t\t\tseparator: \"\",\n\t\t\t\tend: \"\"\n\t\t\t}\n\t\t}\n\t};\n}\nfunction createHunkBuilder(additionStart, deletionStart) {\n\treturn {\n\t\tadditionStart,\n\t\tdeletionStart,\n\t\tadditionCount: 0,\n\t\tdeletionCount: 0,\n\t\tadditionLines: 0,\n\t\tdeletionLines: 0,\n\t\tadditionLineIndex: Math.max(additionStart - 1, 0),\n\t\tdeletionLineIndex: Math.max(deletionStart - 1, 0),\n\t\thunkContent: [],\n\t\tcontextBufferAdditionStart: Math.max(additionStart - 1, 0),\n\t\tcontextBufferDeletionStart: Math.max(deletionStart - 1, 0),\n\t\tcontextBufferCount: 0,\n\t\tcontextBufferBaseConflicts: void 0\n\t};\n}\nfunction formatHunkRange(start, count) {\n\treturn count === 1 ? `${start}` : `${start},${count}`;\n}\nfunction getMergeConflictMarkerType(line) {\n\tif (line.length < 7) return;\n\tconst markerCode = line.charCodeAt(0);\n\tif (markerCode !== 60 && markerCode !== 62 && markerCode !== 61 && markerCode !== 124) return;\n\tconst lineEnd = getLineContentEndIndex(line);\n\tif (lineEnd < 7) return;\n\tlet markerLength = 1;\n\twhile (markerLength < lineEnd && line.charCodeAt(markerLength) === markerCode) markerLength++;\n\tif (markerLength < 7) return;\n\tif (markerCode === 61) return markerLength === lineEnd ? \"separator\" : void 0;\n\tif (markerLength !== lineEnd && !isWhitespaceCode(line.charCodeAt(markerLength))) return;\n\tif (markerCode === 60) return \"start\";\n\tif (markerCode === 62) return \"end\";\n\treturn \"base\";\n}\nfunction getLineContentEndIndex(line) {\n\tlet end = line.length;\n\tif (end > 0 && line.charCodeAt(end - 1) === 10) end--;\n\tif (end > 0 && line.charCodeAt(end - 1) === 13) end--;\n\treturn end;\n}\nfunction isWhitespaceCode(code) {\n\treturn code === 9 || code === 10 || code === 11 || code === 12 || code === 13 || code === 32;\n}\nfunction createResolvedConflictFile(file, side, contents) {\n\treturn {\n\t\t...file,\n\t\tcontents,\n\t\tcacheKey: file.cacheKey != null ? `${file.cacheKey}:merge-conflict-${side}` : void 0\n\t};\n}\nfunction buildMergeConflictMarkerRows(fileDiff, actions) {\n\tconst markerRows = [];\n\tconst hunkLineStartCache = new Array(fileDiff.hunks.length);\n\tconst getLineStart = (hunkIndex, contentIndex) => {\n\t\tconst hunk = fileDiff.hunks[hunkIndex];\n\t\tif (hunk == null) return 0;\n\t\tlet starts = hunkLineStartCache[hunkIndex];\n\t\tif (starts == null) {\n\t\t\tstarts = new Array(hunk.hunkContent.length + 1);\n\t\t\tlet lineIndex = hunk.unifiedLineStart;\n\t\t\tstarts[0] = lineIndex;\n\t\t\tfor (let index = 0; index < hunk.hunkContent.length; index++) {\n\t\t\t\tconst content = hunk.hunkContent[index];\n\t\t\t\tlineIndex += content.type === \"context\" ? content.lines : content.deletions + content.additions;\n\t\t\t\tstarts[index + 1] = lineIndex;\n\t\t\t}\n\t\t\thunkLineStartCache[hunkIndex] = starts;\n\t\t}\n\t\treturn starts[Math.max(contentIndex, 0)] ?? hunk.unifiedLineStart;\n\t};\n\tconst getLineEnd = (hunkIndex, contentIndex) => {\n\t\tconst lineStart = getLineStart(hunkIndex, contentIndex);\n\t\tconst lineEndExclusive = hunkLineStartCache[hunkIndex]?.[Math.max(contentIndex + 1, 0)] ?? getLineStart(hunkIndex, contentIndex + 1);\n\t\treturn Math.max(lineStart, lineEndExclusive - 1);\n\t};\n\tfor (const action of actions) {\n\t\tif (action == null) continue;\n\t\tconst hunk = fileDiff.hunks[action.hunkIndex];\n\t\tif (hunk == null) continue;\n\t\tconst actionLineIndex = getLineStart(action.hunkIndex, action.startContentIndex);\n\t\tmarkerRows.push(createMergeConflictMarkerRow(action, \"marker-start\", action.startContentIndex, action.markerLines.start, actionLineIndex));\n\t\tif (action.baseContentIndex != null) {\n\t\t\tconst currentContentIndex = action.currentContentIndex;\n\t\t\tconst incomingContentIndex = action.incomingContentIndex;\n\t\t\tif (currentContentIndex == null || incomingContentIndex == null) continue;\n\t\t\tconst baseMarkerLine = action.markerLines.base;\n\t\t\tif (baseMarkerLine == null) continue;\n\t\t\tconst currentChange = hunk.hunkContent[currentContentIndex];\n\t\t\tconst baseContext = hunk.hunkContent[action.baseContentIndex];\n\t\t\tconst incomingChange = hunk.hunkContent[incomingContentIndex];\n\t\t\tif (currentChange?.type !== \"change\" || baseContext?.type !== \"context\" || incomingChange?.type !== \"change\") continue;\n\t\t\tconst currentStart = getLineStart(action.hunkIndex, currentContentIndex);\n\t\t\tconst incomingStart = getLineStart(action.hunkIndex, incomingContentIndex);\n\t\t\tmarkerRows.push(createMergeConflictMarkerRow(action, \"marker-base\", action.baseContentIndex, baseMarkerLine, currentStart + currentChange.deletions));\n\t\t\tmarkerRows.push(createMergeConflictMarkerRow(action, \"marker-separator\", action.baseContentIndex, action.markerLines.separator, incomingStart), createMergeConflictMarkerRow(action, \"marker-end\", action.endMarkerContentIndex, action.markerLines.end, getLineEnd(action.hunkIndex, action.endMarkerContentIndex)));\n\t\t\tcontinue;\n\t\t}\n\t\tconst currentContentIndex = action.currentContentIndex;\n\t\tif (currentContentIndex == null) continue;\n\t\tconst content = hunk.hunkContent[currentContentIndex];\n\t\tif (content?.type !== \"change\") continue;\n\t\tconst contentStart = getLineStart(action.hunkIndex, currentContentIndex);\n\t\tconst separatorLineIndex = content.deletions > 0 ? contentStart + content.deletions : actionLineIndex;\n\t\tmarkerRows.push(createMergeConflictMarkerRow(action, \"marker-separator\", currentContentIndex, action.markerLines.separator, separatorLineIndex), createMergeConflictMarkerRow(action, \"marker-end\", action.endMarkerContentIndex, action.markerLines.end, getLineEnd(action.hunkIndex, action.endMarkerContentIndex)));\n\t}\n\treturn markerRows;\n}\nfunction createMergeConflictMarkerRow(action, type, contentIndex, lineText, lineIndex) {\n\treturn {\n\t\ttype,\n\t\thunkIndex: action.hunkIndex,\n\t\tcontentIndex,\n\t\tconflictIndex: action.conflictIndex,\n\t\tlineText,\n\t\tlineIndex\n\t};\n}\nfunction getUnifiedLineStartForContent(hunk, contentIndex) {\n\tlet lineIndex = hunk.unifiedLineStart;\n\tfor (let index = 0; index < contentIndex; index++) {\n\t\tconst content = hunk.hunkContent[index];\n\t\tlineIndex += content.type === \"context\" ? content.lines : content.deletions + content.additions;\n\t}\n\treturn lineIndex;\n}\n//#endregion\nexport { buildMergeConflictMarkerRows, getMergeConflictActionAnchor, parseMergeConflictDiffFromFile };\n\n//# sourceMappingURL=parseMergeConflictDiffFromFile.js.map","import { CUSTOM_HEADER_SLOT_ID } from \"../../constants.js\";\nimport { getLineAnnotationName } from \"../../utils/getLineAnnotationName.js\";\nimport { getMergeConflictActionSlotName } from \"../../utils/getMergeConflictActionSlotName.js\";\nimport { getMergeConflictActionAnchor } from \"../../utils/parseMergeConflictDiffFromFile.js\";\nimport { GutterUtilitySlotStyles, MergeConflictSlotStyles } from \"../constants.js\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\n//#region src/react/utils/renderDiffChildren.tsx\nfunction renderDiffChildren({ fileDiff, actions, renderCustomHeader, renderHeaderPrefix, renderHeaderMetadata, renderAnnotation, renderGutterUtility, renderMergeConflictUtility, lineAnnotations, getHoveredLine, getInstance }) {\n\tconst customHeader = renderCustomHeader?.(fileDiff);\n\tconst prefix = renderHeaderPrefix?.(fileDiff);\n\tconst metadata = renderHeaderMetadata?.(fileDiff);\n\treturn /* @__PURE__ */ jsxs(Fragment, { children: [\n\t\tcustomHeader != null ? /* @__PURE__ */ jsx(\"div\", {\n\t\t\tslot: CUSTOM_HEADER_SLOT_ID,\n\t\t\tchildren: customHeader\n\t\t}) : /* @__PURE__ */ jsxs(Fragment, { children: [prefix != null && /* @__PURE__ */ jsx(\"div\", {\n\t\t\tslot: \"header-prefix\",\n\t\t\tchildren: prefix\n\t\t}), metadata != null && /* @__PURE__ */ jsx(\"div\", {\n\t\t\tslot: \"header-metadata\",\n\t\t\tchildren: metadata\n\t\t})] }),\n\t\trenderAnnotation != null && lineAnnotations?.map((annotation, index) => /* @__PURE__ */ jsx(\"div\", {\n\t\t\tslot: getLineAnnotationName(annotation),\n\t\t\tchildren: renderAnnotation(annotation)\n\t\t}, index)),\n\t\tactions != null && renderMergeConflictUtility != null && getInstance != null && actions.map((action) => {\n\t\t\tif (action == null) return;\n\t\t\tconst slot = getSlotName(action, fileDiff);\n\t\t\treturn /* @__PURE__ */ jsx(\"div\", {\n\t\t\t\tslot,\n\t\t\t\tstyle: MergeConflictSlotStyles,\n\t\t\t\tchildren: renderMergeConflictUtility(action, getInstance)\n\t\t\t}, slot);\n\t\t}),\n\t\trenderGutterUtility != null && /* @__PURE__ */ jsx(\"div\", {\n\t\t\tslot: \"gutter-utility-slot\",\n\t\t\tstyle: GutterUtilitySlotStyles,\n\t\t\tchildren: renderGutterUtility(getHoveredLine)\n\t\t})\n\t] });\n}\nfunction getSlotName(action, fileDiff) {\n\tconst anchor = getMergeConflictActionAnchor(action, fileDiff);\n\treturn anchor != null ? getMergeConflictActionSlotName({\n\t\thunkIndex: anchor.hunkIndex,\n\t\tlineIndex: anchor.lineIndex,\n\t\tconflictIndex: action.conflictIndex\n\t}) : void 0;\n}\n//#endregion\nexport { renderDiffChildren };\n\n//# sourceMappingURL=renderDiffChildren.js.map","import { CUSTOM_HEADER_SLOT_ID } from \"../../constants.js\";\nimport { getLineAnnotationName } from \"../../utils/getLineAnnotationName.js\";\nimport { GutterUtilitySlotStyles } from \"../constants.js\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\n//#region src/react/utils/renderFileChildren.tsx\nfunction renderFileChildren({ file, renderCustomHeader, renderHeaderPrefix, renderHeaderMetadata, renderAnnotation, lineAnnotations, renderGutterUtility, getHoveredLine }) {\n\tconst customHeader = renderCustomHeader?.(file);\n\tconst prefix = renderHeaderPrefix?.(file);\n\tconst metadata = renderHeaderMetadata?.(file);\n\treturn /* @__PURE__ */ jsxs(Fragment, { children: [\n\t\tcustomHeader != null ? /* @__PURE__ */ jsx(\"div\", {\n\t\t\tslot: CUSTOM_HEADER_SLOT_ID,\n\t\t\tchildren: customHeader\n\t\t}) : /* @__PURE__ */ jsxs(Fragment, { children: [prefix != null && /* @__PURE__ */ jsx(\"div\", {\n\t\t\tslot: \"header-prefix\",\n\t\t\tchildren: prefix\n\t\t}), metadata != null && /* @__PURE__ */ jsx(\"div\", {\n\t\t\tslot: \"header-metadata\",\n\t\t\tchildren: metadata\n\t\t})] }),\n\t\trenderAnnotation != null && lineAnnotations?.map((annotation, index) => /* @__PURE__ */ jsx(\"div\", {\n\t\t\tslot: getLineAnnotationName(annotation),\n\t\t\tchildren: renderAnnotation(annotation)\n\t\t}, index)),\n\t\trenderGutterUtility != null && /* @__PURE__ */ jsx(\"div\", {\n\t\t\tslot: \"gutter-utility-slot\",\n\t\t\tstyle: GutterUtilitySlotStyles,\n\t\t\tchildren: renderGutterUtility(getHoveredLine)\n\t\t})\n\t] });\n}\n//#endregion\nexport { renderFileChildren };\n\n//# sourceMappingURL=renderFileChildren.js.map","import { useCallback, useInsertionEffect, useRef } from \"react\";\n//#region src/react/utils/useStableCallback.ts\nfunction useStableCallback(callback) {\n\tconst callbackRef = useRef(callback);\n\tuseInsertionEffect(() => void (callbackRef.current = callback));\n\treturn useCallback((...args) => {\n\t\treturn callbackRef.current(...args);\n\t}, []);\n}\n//#endregion\nexport { useStableCallback };\n\n//# sourceMappingURL=useStableCallback.js.map","//#region src/utils/areThemesEqual.ts\nfunction areThemesEqual(themeA, themeB) {\n\tif (themeA == null || themeB == null || typeof themeA === \"string\" || typeof themeB === \"string\") return themeA === themeB;\n\treturn themeA.dark === themeB.dark && themeA.light === themeB.light;\n}\n//#endregion\nexport { areThemesEqual };\n\n//# sourceMappingURL=areThemesEqual.js.map","//#region src/highlighter/themes/constants.ts\nconst AttachedThemes = /* @__PURE__ */ new Set();\n//#endregion\nexport { AttachedThemes };\n\n//# sourceMappingURL=constants.js.map","//#region src/modules/createThemeCollection.ts\nfunction createThemeCollection(options) {\n\tconst descriptors = [];\n\tconst seen = /* @__PURE__ */ new Set();\n\tfor (const entry of getCollectionEntries(options.themes)) {\n\t\tconst themes = isThemeCollectionSource(entry) ? entry.getThemes() : [entry];\n\t\tfor (const descriptor of themes) {\n\t\t\tif (seen.has(descriptor.name)) throw new Error(`Theme collection already contains theme \"${descriptor.name}\"`);\n\t\t\tseen.add(descriptor.name);\n\t\t\tdescriptors.push(descriptor);\n\t\t}\n\t}\n\tconst allThemes = Object.freeze([...descriptors]);\n\tconst lightThemes = Object.freeze(allThemes.filter((descriptor) => descriptor.colorScheme === \"light\"));\n\tconst darkThemes = Object.freeze(allThemes.filter((descriptor) => descriptor.colorScheme === \"dark\"));\n\tconst themesByName = new Map(allThemes.map((descriptor) => [descriptor.name, descriptor]));\n\tconst allNames = Object.freeze(allThemes.map((descriptor) => descriptor.name));\n\tconst lightNames = Object.freeze(lightThemes.map((descriptor) => descriptor.name));\n\tconst darkNames = Object.freeze(darkThemes.map((descriptor) => descriptor.name));\n\tfunction filteredThemes(filterOptions) {\n\t\tif (filterOptions == null) return allThemes;\n\t\tconst { colorScheme, collection } = filterOptions;\n\t\tif (collection == null) {\n\t\t\tif (colorScheme === \"light\") return lightThemes;\n\t\t\tif (colorScheme === \"dark\") return darkThemes;\n\t\t\treturn allThemes;\n\t\t}\n\t\treturn allThemes.filter((descriptor) => {\n\t\t\tif (descriptor.collection !== collection) return false;\n\t\t\treturn colorScheme == null || descriptor.colorScheme === colorScheme;\n\t\t});\n\t}\n\treturn {\n\t\tgetTheme(name) {\n\t\t\treturn themesByName.get(name);\n\t\t},\n\t\tgetThemes(themeOptions) {\n\t\t\treturn filteredThemes(themeOptions);\n\t\t},\n\t\tgetThemeNames(namesOptions) {\n\t\t\tif (namesOptions?.collection == null) {\n\t\t\t\tif (namesOptions?.colorScheme === \"light\") return lightNames;\n\t\t\t\tif (namesOptions?.colorScheme === \"dark\") return darkNames;\n\t\t\t\treturn allNames;\n\t\t\t}\n\t\t\treturn filteredThemes(namesOptions).map((descriptor) => descriptor.name);\n\t\t},\n\t\thasTheme(name) {\n\t\t\treturn themesByName.has(name);\n\t\t},\n\t\torderBy(compare) {\n\t\t\treturn createThemeCollection({ themes: allThemes.map((descriptor, index) => ({\n\t\t\t\tdescriptor,\n\t\t\t\tindex\n\t\t\t})).sort((a, b) => {\n\t\t\t\tconst result = compare(a.descriptor, b.descriptor);\n\t\t\t\tif (result !== 0) return result;\n\t\t\t\treturn a.index - b.index;\n\t\t\t}).map((entry) => entry.descriptor) });\n\t\t},\n\t\tpick(names) {\n\t\t\tconst picked = [];\n\t\t\tconst pickedNames = /* @__PURE__ */ new Set();\n\t\t\tfor (const name of names) {\n\t\t\t\tif (pickedNames.has(name)) throw new Error(`Theme collection pick already includes theme \"${name}\"`);\n\t\t\t\tpickedNames.add(name);\n\t\t\t\tconst descriptor = themesByName.get(name);\n\t\t\t\tif (descriptor == null) throw new Error(`Theme collection does not contain theme \"${name}\"`);\n\t\t\t\tpicked.push(descriptor);\n\t\t\t}\n\t\t\treturn createThemeCollection({ themes: picked });\n\t\t},\n\t\tregisterInto(resolver) {\n\t\t\tfor (const descriptor of allThemes) resolver.registerThemeIfAbsent(descriptor.name, descriptor.load);\n\t\t}\n\t};\n}\nfunction getCollectionEntries(input) {\n\tif (isThemeCollectionEntry(input)) return [input];\n\treturn input;\n}\nfunction isThemeCollectionEntry(input) {\n\treturn isThemeCollectionSource(input) || isThemeDescriptor(input);\n}\nfunction isThemeDescriptor(input) {\n\treturn typeof input.name === \"string\" && typeof input.load === \"function\";\n}\nfunction isThemeCollectionSource(entry) {\n\treturn typeof entry.getThemes === \"function\";\n}\n//#endregion\nexport { createThemeCollection };\n\n//# sourceMappingURL=createThemeCollection.js.map","//#region src/modules/unwrapDefault.ts\nfunction unwrapDefault(value) {\n\treturn value !== null && typeof value === \"object\" && \"default\" in value ? value.default : value;\n}\n//#endregion\nexport { unwrapDefault };\n\n//# sourceMappingURL=unwrapDefault.js.map","import { unwrapDefault } from \"./unwrapDefault.js\";\n//#region src/modules/createThemeResolver.ts\nvar DuplicateThemeError = class extends Error {\n\tconstructor(name) {\n\t\tsuper(`Theme \"${name}\" is already registered`);\n\t\tthis.name = \"DuplicateThemeError\";\n\t}\n};\nvar UnregisteredThemeError = class extends Error {\n\tconstructor(name) {\n\t\tsuper(`No loader registered for theme \"${name}\"`);\n\t\tthis.name = \"UnregisteredThemeError\";\n\t}\n};\nvar UnresolvedThemeError = class extends Error {\n\tconstructor(name) {\n\t\tsuper(`Theme \"${name}\" has not been resolved`);\n\t\tthis.name = \"UnresolvedThemeError\";\n\t}\n};\nfunction createThemeResolver() {\n\tconst loaders = /* @__PURE__ */ new Map();\n\tconst resolved = /* @__PURE__ */ new Map();\n\tconst inflight = /* @__PURE__ */ new Map();\n\tlet cacheGeneration = 0;\n\tfunction registerTheme(name, loader) {\n\t\tif (loaders.has(name)) throw new DuplicateThemeError(name);\n\t\tloaders.set(name, loader);\n\t}\n\tfunction registerThemeIfAbsent(name, loader) {\n\t\tif (loaders.has(name)) return false;\n\t\tloaders.set(name, loader);\n\t\treturn true;\n\t}\n\tfunction hasRegisteredTheme(name) {\n\t\treturn loaders.has(name);\n\t}\n\tfunction resolveTheme(name) {\n\t\tconst cached = resolved.get(name);\n\t\tif (cached !== void 0) return Promise.resolve(cached);\n\t\tconst existing = inflight.get(name);\n\t\tif (existing !== void 0) return existing;\n\t\tconst loader = loaders.get(name);\n\t\tif (loader === void 0) return Promise.reject(new UnregisteredThemeError(name));\n\t\tconst generation = cacheGeneration;\n\t\tconst promise = loader().then((result) => {\n\t\t\tconst theme = unwrapDefault(result);\n\t\t\tif (generation === cacheGeneration) resolved.set(name, theme);\n\t\t\tif (inflight.get(name) === promise) inflight.delete(name);\n\t\t\treturn theme;\n\t\t}).catch((err) => {\n\t\t\tif (inflight.get(name) === promise) inflight.delete(name);\n\t\t\tthrow err;\n\t\t});\n\t\tinflight.set(name, promise);\n\t\treturn promise;\n\t}\n\tfunction resolveThemes(names) {\n\t\treturn Promise.all(names.map((name) => resolveTheme(name)));\n\t}\n\tfunction seedResolvedTheme(name, theme) {\n\t\tresolved.set(name, theme);\n\t}\n\tfunction seedResolvedThemes(entries) {\n\t\tfor (const [name, theme] of entries) seedResolvedTheme(name, theme);\n\t}\n\tfunction getResolvedTheme(name) {\n\t\treturn resolved.get(name);\n\t}\n\tfunction getResolvedThemes(names) {\n\t\tconst themes = [];\n\t\tfor (const name of names) {\n\t\t\tconst theme = resolved.get(name);\n\t\t\tif (theme === void 0) throw new UnresolvedThemeError(name);\n\t\t\tthemes.push(theme);\n\t\t}\n\t\treturn themes;\n\t}\n\tfunction hasResolvedTheme(name) {\n\t\treturn resolved.has(name);\n\t}\n\tfunction hasResolvedThemes(names) {\n\t\tfor (const name of names) if (!resolved.has(name)) return false;\n\t\treturn true;\n\t}\n\tfunction getResolvedOrResolveTheme(name) {\n\t\tconst cached = resolved.get(name);\n\t\tif (cached !== void 0) return cached;\n\t\treturn resolveTheme(name);\n\t}\n\tfunction clearResolvedThemes() {\n\t\tcacheGeneration++;\n\t\tresolved.clear();\n\t\tinflight.clear();\n\t}\n\treturn {\n\t\tclearResolvedThemes,\n\t\tgetResolvedOrResolveTheme,\n\t\tgetResolvedTheme,\n\t\tgetResolvedThemes,\n\t\thasRegisteredTheme,\n\t\thasResolvedTheme,\n\t\thasResolvedThemes,\n\t\tregisterTheme,\n\t\tregisterThemeIfAbsent,\n\t\tresolveTheme,\n\t\tresolveThemes,\n\t\tseedResolvedTheme,\n\t\tseedResolvedThemes\n\t};\n}\n//#endregion\nexport { DuplicateThemeError, UnregisteredThemeError, UnresolvedThemeError, createThemeResolver };\n\n//# sourceMappingURL=createThemeResolver.js.map","import { createThemeResolver } from \"@pierre/theming\";\n//#region src/highlighter/themes/themeResolver.ts\nconst themeResolver = createThemeResolver();\n//#endregion\nexport { themeResolver };\n\n//# sourceMappingURL=themeResolver.js.map","import { AttachedThemes } from \"./constants.js\";\nimport { themeResolver } from \"./themeResolver.js\";\n//#region src/highlighter/themes/attachResolvedThemes.ts\nfunction attachResolvedThemes(themes, highlighter) {\n\tthemes = Array.isArray(themes) ? themes : [themes];\n\tfor (let themeRef of themes) {\n\t\tlet resolvedTheme;\n\t\tif (typeof themeRef === \"string\") {\n\t\t\tresolvedTheme = themeResolver.getResolvedTheme(themeRef);\n\t\t\tif (resolvedTheme == null) throw new Error(`loadResolvedThemes: ${themeRef} is not resolved, you must resolve it before calling loadResolvedThemes`);\n\t\t} else {\n\t\t\tresolvedTheme = themeRef;\n\t\t\tthemeRef = themeRef.name;\n\t\t\tif (themeResolver.getResolvedTheme(themeRef) == null) themeResolver.seedResolvedTheme(themeRef, resolvedTheme);\n\t\t}\n\t\tif (AttachedThemes.has(themeRef)) continue;\n\t\tAttachedThemes.add(themeRef);\n\t\thighlighter.loadThemeSync(resolvedTheme);\n\t}\n}\n//#endregion\nexport { attachResolvedThemes };\n\n//# sourceMappingURL=attachResolvedThemes.js.map","//#region src/highlighter/languages/constants.ts\nconst ResolvedLanguages = /* @__PURE__ */ new Map();\nconst ResolvingLanguages = /* @__PURE__ */ new Map();\nconst RegisteredCustomLanguages = /* @__PURE__ */ new Map();\nconst AttachedLanguages = /* @__PURE__ */ new Set();\n//#endregion\nexport { AttachedLanguages, RegisteredCustomLanguages, ResolvedLanguages, ResolvingLanguages };\n\n//# sourceMappingURL=constants.js.map","import { AttachedLanguages, ResolvedLanguages } from \"./constants.js\";\n//#region src/highlighter/languages/attachResolvedLanguages.ts\nfunction attachResolvedLanguages(resolvedLanguages, highlighter) {\n\tresolvedLanguages = Array.isArray(resolvedLanguages) ? resolvedLanguages : [resolvedLanguages];\n\tfor (const resolvedLang of resolvedLanguages) {\n\t\tif (AttachedLanguages.has(resolvedLang.name)) continue;\n\t\tlet lang = ResolvedLanguages.get(resolvedLang.name);\n\t\tif (lang == null) {\n\t\t\tlang = resolvedLang;\n\t\t\tResolvedLanguages.set(resolvedLang.name, lang);\n\t\t}\n\t\tAttachedLanguages.add(lang.name);\n\t\thighlighter.loadLanguageSync(lang.data);\n\t}\n}\n//#endregion\nexport { attachResolvedLanguages };\n\n//# sourceMappingURL=attachResolvedLanguages.js.map","//#region src/utils/isWorkerContext.ts\nfunction isWorkerContext() {\n\treturn typeof WorkerGlobalScope !== \"undefined\" && typeof self !== \"undefined\" && self instanceof WorkerGlobalScope;\n}\n//#endregion\nexport { isWorkerContext };\n\n//# sourceMappingURL=isWorkerContext.js.map","//#region \\0rolldown/runtime.js\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __exportAll = (all, no_symbols) => {\n\tlet target = {};\n\tfor (var name in all) __defProp(target, name, {\n\t\tget: all[name],\n\t\tenumerable: true\n\t});\n\tif (!no_symbols) __defProp(target, Symbol.toStringTag, { value: \"Module\" });\n\treturn target;\n};\nvar __copyProps = (to, from, except, desc) => {\n\tif (from && typeof from === \"object\" || typeof from === \"function\") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {\n\t\tkey = keys[i];\n\t\tif (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {\n\t\t\tget: ((k) => from[k]).bind(null, key),\n\t\t\tenumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable\n\t\t});\n\t}\n\treturn to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\n//#endregion\nexport { __reExport as n, __exportAll as t };\n","//#region src/langs-bundle-full.ts\nconst bundledLanguagesInfo = [\n\t{\n\t\t\"id\": \"abap\",\n\t\t\"name\": \"ABAP\",\n\t\t\"import\": (() => import(\"@shikijs/langs/abap\"))\n\t},\n\t{\n\t\t\"id\": \"actionscript-3\",\n\t\t\"name\": \"ActionScript\",\n\t\t\"import\": (() => import(\"@shikijs/langs/actionscript-3\"))\n\t},\n\t{\n\t\t\"id\": \"ada\",\n\t\t\"name\": \"Ada\",\n\t\t\"import\": (() => import(\"@shikijs/langs/ada\"))\n\t},\n\t{\n\t\t\"id\": \"angular-html\",\n\t\t\"name\": \"Angular HTML\",\n\t\t\"import\": (() => import(\"@shikijs/langs/angular-html\"))\n\t},\n\t{\n\t\t\"id\": \"angular-ts\",\n\t\t\"name\": \"Angular TypeScript\",\n\t\t\"import\": (() => import(\"@shikijs/langs/angular-ts\"))\n\t},\n\t{\n\t\t\"id\": \"apache\",\n\t\t\"name\": \"Apache Conf\",\n\t\t\"import\": (() => import(\"@shikijs/langs/apache\"))\n\t},\n\t{\n\t\t\"id\": \"apex\",\n\t\t\"name\": \"Apex\",\n\t\t\"import\": (() => import(\"@shikijs/langs/apex\"))\n\t},\n\t{\n\t\t\"id\": \"apl\",\n\t\t\"name\": \"APL\",\n\t\t\"import\": (() => import(\"@shikijs/langs/apl\"))\n\t},\n\t{\n\t\t\"id\": \"applescript\",\n\t\t\"name\": \"AppleScript\",\n\t\t\"import\": (() => import(\"@shikijs/langs/applescript\"))\n\t},\n\t{\n\t\t\"id\": \"ara\",\n\t\t\"name\": \"Ara\",\n\t\t\"import\": (() => import(\"@shikijs/langs/ara\"))\n\t},\n\t{\n\t\t\"id\": \"asciidoc\",\n\t\t\"name\": \"AsciiDoc\",\n\t\t\"aliases\": [\"adoc\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/asciidoc\"))\n\t},\n\t{\n\t\t\"id\": \"asm\",\n\t\t\"name\": \"Assembly\",\n\t\t\"import\": (() => import(\"@shikijs/langs/asm\"))\n\t},\n\t{\n\t\t\"id\": \"astro\",\n\t\t\"name\": \"Astro\",\n\t\t\"import\": (() => import(\"@shikijs/langs/astro\"))\n\t},\n\t{\n\t\t\"id\": \"awk\",\n\t\t\"name\": \"AWK\",\n\t\t\"import\": (() => import(\"@shikijs/langs/awk\"))\n\t},\n\t{\n\t\t\"id\": \"ballerina\",\n\t\t\"name\": \"Ballerina\",\n\t\t\"import\": (() => import(\"@shikijs/langs/ballerina\"))\n\t},\n\t{\n\t\t\"id\": \"bat\",\n\t\t\"name\": \"Batch File\",\n\t\t\"aliases\": [\"batch\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/bat\"))\n\t},\n\t{\n\t\t\"id\": \"beancount\",\n\t\t\"name\": \"Beancount\",\n\t\t\"import\": (() => import(\"@shikijs/langs/beancount\"))\n\t},\n\t{\n\t\t\"id\": \"berry\",\n\t\t\"name\": \"Berry\",\n\t\t\"aliases\": [\"be\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/berry\"))\n\t},\n\t{\n\t\t\"id\": \"bibtex\",\n\t\t\"name\": \"BibTeX\",\n\t\t\"import\": (() => import(\"@shikijs/langs/bibtex\"))\n\t},\n\t{\n\t\t\"id\": \"bicep\",\n\t\t\"name\": \"Bicep\",\n\t\t\"import\": (() => import(\"@shikijs/langs/bicep\"))\n\t},\n\t{\n\t\t\"id\": \"bird2\",\n\t\t\"name\": \"BIRD2 Configuration\",\n\t\t\"aliases\": [\"bird\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/bird2\"))\n\t},\n\t{\n\t\t\"id\": \"blade\",\n\t\t\"name\": \"Blade\",\n\t\t\"import\": (() => import(\"@shikijs/langs/blade\"))\n\t},\n\t{\n\t\t\"id\": \"bsl\",\n\t\t\"name\": \"1C (Enterprise)\",\n\t\t\"aliases\": [\"1c\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/bsl\"))\n\t},\n\t{\n\t\t\"id\": \"c\",\n\t\t\"name\": \"C\",\n\t\t\"import\": (() => import(\"@shikijs/langs/c\"))\n\t},\n\t{\n\t\t\"id\": \"c3\",\n\t\t\"name\": \"C3\",\n\t\t\"import\": (() => import(\"@shikijs/langs/c3\"))\n\t},\n\t{\n\t\t\"id\": \"cadence\",\n\t\t\"name\": \"Cadence\",\n\t\t\"aliases\": [\"cdc\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/cadence\"))\n\t},\n\t{\n\t\t\"id\": \"cairo\",\n\t\t\"name\": \"Cairo\",\n\t\t\"import\": (() => import(\"@shikijs/langs/cairo\"))\n\t},\n\t{\n\t\t\"id\": \"clarity\",\n\t\t\"name\": \"Clarity\",\n\t\t\"import\": (() => import(\"@shikijs/langs/clarity\"))\n\t},\n\t{\n\t\t\"id\": \"clojure\",\n\t\t\"name\": \"Clojure\",\n\t\t\"aliases\": [\"clj\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/clojure\"))\n\t},\n\t{\n\t\t\"id\": \"cmake\",\n\t\t\"name\": \"CMake\",\n\t\t\"import\": (() => import(\"@shikijs/langs/cmake\"))\n\t},\n\t{\n\t\t\"id\": \"cobol\",\n\t\t\"name\": \"COBOL\",\n\t\t\"import\": (() => import(\"@shikijs/langs/cobol\"))\n\t},\n\t{\n\t\t\"id\": \"codeowners\",\n\t\t\"name\": \"CODEOWNERS\",\n\t\t\"import\": (() => import(\"@shikijs/langs/codeowners\"))\n\t},\n\t{\n\t\t\"id\": \"codeql\",\n\t\t\"name\": \"CodeQL\",\n\t\t\"aliases\": [\"ql\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/codeql\"))\n\t},\n\t{\n\t\t\"id\": \"coffee\",\n\t\t\"name\": \"CoffeeScript\",\n\t\t\"aliases\": [\"coffeescript\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/coffee\"))\n\t},\n\t{\n\t\t\"id\": \"common-lisp\",\n\t\t\"name\": \"Common Lisp\",\n\t\t\"aliases\": [\"lisp\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/common-lisp\"))\n\t},\n\t{\n\t\t\"id\": \"coq\",\n\t\t\"name\": \"Coq\",\n\t\t\"import\": (() => import(\"@shikijs/langs/coq\"))\n\t},\n\t{\n\t\t\"id\": \"cpp\",\n\t\t\"name\": \"C++\",\n\t\t\"aliases\": [\"c++\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/cpp\"))\n\t},\n\t{\n\t\t\"id\": \"crystal\",\n\t\t\"name\": \"Crystal\",\n\t\t\"import\": (() => import(\"@shikijs/langs/crystal\"))\n\t},\n\t{\n\t\t\"id\": \"csharp\",\n\t\t\"name\": \"C#\",\n\t\t\"aliases\": [\"c#\", \"cs\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/csharp\"))\n\t},\n\t{\n\t\t\"id\": \"css\",\n\t\t\"name\": \"CSS\",\n\t\t\"import\": (() => import(\"@shikijs/langs/css\"))\n\t},\n\t{\n\t\t\"id\": \"csv\",\n\t\t\"name\": \"CSV\",\n\t\t\"import\": (() => import(\"@shikijs/langs/csv\"))\n\t},\n\t{\n\t\t\"id\": \"cue\",\n\t\t\"name\": \"CUE\",\n\t\t\"import\": (() => import(\"@shikijs/langs/cue\"))\n\t},\n\t{\n\t\t\"id\": \"cypher\",\n\t\t\"name\": \"Cypher\",\n\t\t\"aliases\": [\"cql\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/cypher\"))\n\t},\n\t{\n\t\t\"id\": \"d\",\n\t\t\"name\": \"D\",\n\t\t\"import\": (() => import(\"@shikijs/langs/d\"))\n\t},\n\t{\n\t\t\"id\": \"dart\",\n\t\t\"name\": \"Dart\",\n\t\t\"import\": (() => import(\"@shikijs/langs/dart\"))\n\t},\n\t{\n\t\t\"id\": \"dax\",\n\t\t\"name\": \"DAX\",\n\t\t\"import\": (() => import(\"@shikijs/langs/dax\"))\n\t},\n\t{\n\t\t\"id\": \"desktop\",\n\t\t\"name\": \"Desktop\",\n\t\t\"import\": (() => import(\"@shikijs/langs/desktop\"))\n\t},\n\t{\n\t\t\"id\": \"diff\",\n\t\t\"name\": \"Diff\",\n\t\t\"import\": (() => import(\"@shikijs/langs/diff\"))\n\t},\n\t{\n\t\t\"id\": \"docker\",\n\t\t\"name\": \"Dockerfile\",\n\t\t\"aliases\": [\"dockerfile\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/docker\"))\n\t},\n\t{\n\t\t\"id\": \"dotenv\",\n\t\t\"name\": \"dotEnv\",\n\t\t\"import\": (() => import(\"@shikijs/langs/dotenv\"))\n\t},\n\t{\n\t\t\"id\": \"dream-maker\",\n\t\t\"name\": \"Dream Maker\",\n\t\t\"import\": (() => import(\"@shikijs/langs/dream-maker\"))\n\t},\n\t{\n\t\t\"id\": \"edge\",\n\t\t\"name\": \"Edge\",\n\t\t\"import\": (() => import(\"@shikijs/langs/edge\"))\n\t},\n\t{\n\t\t\"id\": \"elixir\",\n\t\t\"name\": \"Elixir\",\n\t\t\"import\": (() => import(\"@shikijs/langs/elixir\"))\n\t},\n\t{\n\t\t\"id\": \"elm\",\n\t\t\"name\": \"Elm\",\n\t\t\"import\": (() => import(\"@shikijs/langs/elm\"))\n\t},\n\t{\n\t\t\"id\": \"emacs-lisp\",\n\t\t\"name\": \"Emacs Lisp\",\n\t\t\"aliases\": [\"elisp\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/emacs-lisp\"))\n\t},\n\t{\n\t\t\"id\": \"erb\",\n\t\t\"name\": \"ERB\",\n\t\t\"import\": (() => import(\"@shikijs/langs/erb\"))\n\t},\n\t{\n\t\t\"id\": \"erlang\",\n\t\t\"name\": \"Erlang\",\n\t\t\"aliases\": [\"erl\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/erlang\"))\n\t},\n\t{\n\t\t\"id\": \"fennel\",\n\t\t\"name\": \"Fennel\",\n\t\t\"import\": (() => import(\"@shikijs/langs/fennel\"))\n\t},\n\t{\n\t\t\"id\": \"fish\",\n\t\t\"name\": \"Fish\",\n\t\t\"import\": (() => import(\"@shikijs/langs/fish\"))\n\t},\n\t{\n\t\t\"id\": \"fluent\",\n\t\t\"name\": \"Fluent\",\n\t\t\"aliases\": [\"ftl\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/fluent\"))\n\t},\n\t{\n\t\t\"id\": \"fortran-fixed-form\",\n\t\t\"name\": \"Fortran (Fixed Form)\",\n\t\t\"aliases\": [\n\t\t\t\"f\",\n\t\t\t\"for\",\n\t\t\t\"f77\"\n\t\t],\n\t\t\"import\": (() => import(\"@shikijs/langs/fortran-fixed-form\"))\n\t},\n\t{\n\t\t\"id\": \"fortran-free-form\",\n\t\t\"name\": \"Fortran (Free Form)\",\n\t\t\"aliases\": [\n\t\t\t\"f90\",\n\t\t\t\"f95\",\n\t\t\t\"f03\",\n\t\t\t\"f08\",\n\t\t\t\"f18\"\n\t\t],\n\t\t\"import\": (() => import(\"@shikijs/langs/fortran-free-form\"))\n\t},\n\t{\n\t\t\"id\": \"fsharp\",\n\t\t\"name\": \"F#\",\n\t\t\"aliases\": [\"f#\", \"fs\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/fsharp\"))\n\t},\n\t{\n\t\t\"id\": \"gdresource\",\n\t\t\"name\": \"GDResource\",\n\t\t\"aliases\": [\"tscn\", \"tres\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/gdresource\"))\n\t},\n\t{\n\t\t\"id\": \"gdscript\",\n\t\t\"name\": \"GDScript\",\n\t\t\"aliases\": [\"gd\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/gdscript\"))\n\t},\n\t{\n\t\t\"id\": \"gdshader\",\n\t\t\"name\": \"GDShader\",\n\t\t\"import\": (() => import(\"@shikijs/langs/gdshader\"))\n\t},\n\t{\n\t\t\"id\": \"genie\",\n\t\t\"name\": \"Genie\",\n\t\t\"import\": (() => import(\"@shikijs/langs/genie\"))\n\t},\n\t{\n\t\t\"id\": \"gherkin\",\n\t\t\"name\": \"Gherkin\",\n\t\t\"import\": (() => import(\"@shikijs/langs/gherkin\"))\n\t},\n\t{\n\t\t\"id\": \"git-commit\",\n\t\t\"name\": \"Git Commit Message\",\n\t\t\"import\": (() => import(\"@shikijs/langs/git-commit\"))\n\t},\n\t{\n\t\t\"id\": \"git-rebase\",\n\t\t\"name\": \"Git Rebase Message\",\n\t\t\"import\": (() => import(\"@shikijs/langs/git-rebase\"))\n\t},\n\t{\n\t\t\"id\": \"gleam\",\n\t\t\"name\": \"Gleam\",\n\t\t\"import\": (() => import(\"@shikijs/langs/gleam\"))\n\t},\n\t{\n\t\t\"id\": \"glimmer-js\",\n\t\t\"name\": \"Glimmer JS\",\n\t\t\"aliases\": [\"gjs\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/glimmer-js\"))\n\t},\n\t{\n\t\t\"id\": \"glimmer-ts\",\n\t\t\"name\": \"Glimmer TS\",\n\t\t\"aliases\": [\"gts\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/glimmer-ts\"))\n\t},\n\t{\n\t\t\"id\": \"glsl\",\n\t\t\"name\": \"GLSL\",\n\t\t\"import\": (() => import(\"@shikijs/langs/glsl\"))\n\t},\n\t{\n\t\t\"id\": \"gn\",\n\t\t\"name\": \"GN\",\n\t\t\"import\": (() => import(\"@shikijs/langs/gn\"))\n\t},\n\t{\n\t\t\"id\": \"gnuplot\",\n\t\t\"name\": \"Gnuplot\",\n\t\t\"import\": (() => import(\"@shikijs/langs/gnuplot\"))\n\t},\n\t{\n\t\t\"id\": \"go\",\n\t\t\"name\": \"Go\",\n\t\t\"import\": (() => import(\"@shikijs/langs/go\"))\n\t},\n\t{\n\t\t\"id\": \"graphql\",\n\t\t\"name\": \"GraphQL\",\n\t\t\"aliases\": [\"gql\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/graphql\"))\n\t},\n\t{\n\t\t\"id\": \"groovy\",\n\t\t\"name\": \"Groovy\",\n\t\t\"import\": (() => import(\"@shikijs/langs/groovy\"))\n\t},\n\t{\n\t\t\"id\": \"hack\",\n\t\t\"name\": \"Hack\",\n\t\t\"import\": (() => import(\"@shikijs/langs/hack\"))\n\t},\n\t{\n\t\t\"id\": \"haml\",\n\t\t\"name\": \"Ruby Haml\",\n\t\t\"import\": (() => import(\"@shikijs/langs/haml\"))\n\t},\n\t{\n\t\t\"id\": \"handlebars\",\n\t\t\"name\": \"Handlebars\",\n\t\t\"aliases\": [\"hbs\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/handlebars\"))\n\t},\n\t{\n\t\t\"id\": \"haskell\",\n\t\t\"name\": \"Haskell\",\n\t\t\"aliases\": [\"hs\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/haskell\"))\n\t},\n\t{\n\t\t\"id\": \"haxe\",\n\t\t\"name\": \"Haxe\",\n\t\t\"import\": (() => import(\"@shikijs/langs/haxe\"))\n\t},\n\t{\n\t\t\"id\": \"hcl\",\n\t\t\"name\": \"HashiCorp HCL\",\n\t\t\"import\": (() => import(\"@shikijs/langs/hcl\"))\n\t},\n\t{\n\t\t\"id\": \"hjson\",\n\t\t\"name\": \"Hjson\",\n\t\t\"import\": (() => import(\"@shikijs/langs/hjson\"))\n\t},\n\t{\n\t\t\"id\": \"hlsl\",\n\t\t\"name\": \"HLSL\",\n\t\t\"import\": (() => import(\"@shikijs/langs/hlsl\"))\n\t},\n\t{\n\t\t\"id\": \"html\",\n\t\t\"name\": \"HTML\",\n\t\t\"import\": (() => import(\"@shikijs/langs/html\"))\n\t},\n\t{\n\t\t\"id\": \"html-derivative\",\n\t\t\"name\": \"HTML (Derivative)\",\n\t\t\"import\": (() => import(\"@shikijs/langs/html-derivative\"))\n\t},\n\t{\n\t\t\"id\": \"http\",\n\t\t\"name\": \"HTTP\",\n\t\t\"import\": (() => import(\"@shikijs/langs/http\"))\n\t},\n\t{\n\t\t\"id\": \"hurl\",\n\t\t\"name\": \"Hurl\",\n\t\t\"import\": (() => import(\"@shikijs/langs/hurl\"))\n\t},\n\t{\n\t\t\"id\": \"hxml\",\n\t\t\"name\": \"HXML\",\n\t\t\"import\": (() => import(\"@shikijs/langs/hxml\"))\n\t},\n\t{\n\t\t\"id\": \"hy\",\n\t\t\"name\": \"Hy\",\n\t\t\"import\": (() => import(\"@shikijs/langs/hy\"))\n\t},\n\t{\n\t\t\"id\": \"imba\",\n\t\t\"name\": \"Imba\",\n\t\t\"import\": (() => import(\"@shikijs/langs/imba\"))\n\t},\n\t{\n\t\t\"id\": \"ini\",\n\t\t\"name\": \"INI\",\n\t\t\"aliases\": [\"properties\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/ini\"))\n\t},\n\t{\n\t\t\"id\": \"java\",\n\t\t\"name\": \"Java\",\n\t\t\"import\": (() => import(\"@shikijs/langs/java\"))\n\t},\n\t{\n\t\t\"id\": \"javascript\",\n\t\t\"name\": \"JavaScript\",\n\t\t\"aliases\": [\n\t\t\t\"js\",\n\t\t\t\"cjs\",\n\t\t\t\"mjs\"\n\t\t],\n\t\t\"import\": (() => import(\"@shikijs/langs/javascript\"))\n\t},\n\t{\n\t\t\"id\": \"jinja\",\n\t\t\"name\": \"Jinja\",\n\t\t\"import\": (() => import(\"@shikijs/langs/jinja\"))\n\t},\n\t{\n\t\t\"id\": \"jison\",\n\t\t\"name\": \"Jison\",\n\t\t\"import\": (() => import(\"@shikijs/langs/jison\"))\n\t},\n\t{\n\t\t\"id\": \"json\",\n\t\t\"name\": \"JSON\",\n\t\t\"import\": (() => import(\"@shikijs/langs/json\"))\n\t},\n\t{\n\t\t\"id\": \"json5\",\n\t\t\"name\": \"JSON5\",\n\t\t\"import\": (() => import(\"@shikijs/langs/json5\"))\n\t},\n\t{\n\t\t\"id\": \"jsonc\",\n\t\t\"name\": \"JSON with Comments\",\n\t\t\"import\": (() => import(\"@shikijs/langs/jsonc\"))\n\t},\n\t{\n\t\t\"id\": \"jsonl\",\n\t\t\"name\": \"JSON Lines\",\n\t\t\"import\": (() => import(\"@shikijs/langs/jsonl\"))\n\t},\n\t{\n\t\t\"id\": \"jsonnet\",\n\t\t\"name\": \"Jsonnet\",\n\t\t\"import\": (() => import(\"@shikijs/langs/jsonnet\"))\n\t},\n\t{\n\t\t\"id\": \"jssm\",\n\t\t\"name\": \"JSSM\",\n\t\t\"aliases\": [\"fsl\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/jssm\"))\n\t},\n\t{\n\t\t\"id\": \"jsx\",\n\t\t\"name\": \"JSX\",\n\t\t\"import\": (() => import(\"@shikijs/langs/jsx\"))\n\t},\n\t{\n\t\t\"id\": \"julia\",\n\t\t\"name\": \"Julia\",\n\t\t\"aliases\": [\"jl\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/julia\"))\n\t},\n\t{\n\t\t\"id\": \"just\",\n\t\t\"name\": \"Just\",\n\t\t\"import\": (() => import(\"@shikijs/langs/just\"))\n\t},\n\t{\n\t\t\"id\": \"kdl\",\n\t\t\"name\": \"KDL\",\n\t\t\"import\": (() => import(\"@shikijs/langs/kdl\"))\n\t},\n\t{\n\t\t\"id\": \"kotlin\",\n\t\t\"name\": \"Kotlin\",\n\t\t\"aliases\": [\"kt\", \"kts\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/kotlin\"))\n\t},\n\t{\n\t\t\"id\": \"kusto\",\n\t\t\"name\": \"Kusto\",\n\t\t\"aliases\": [\"kql\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/kusto\"))\n\t},\n\t{\n\t\t\"id\": \"latex\",\n\t\t\"name\": \"LaTeX\",\n\t\t\"import\": (() => import(\"@shikijs/langs/latex\"))\n\t},\n\t{\n\t\t\"id\": \"lean\",\n\t\t\"name\": \"Lean 4\",\n\t\t\"aliases\": [\"lean4\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/lean\"))\n\t},\n\t{\n\t\t\"id\": \"less\",\n\t\t\"name\": \"Less\",\n\t\t\"import\": (() => import(\"@shikijs/langs/less\"))\n\t},\n\t{\n\t\t\"id\": \"liquid\",\n\t\t\"name\": \"Liquid\",\n\t\t\"import\": (() => import(\"@shikijs/langs/liquid\"))\n\t},\n\t{\n\t\t\"id\": \"llvm\",\n\t\t\"name\": \"LLVM IR\",\n\t\t\"import\": (() => import(\"@shikijs/langs/llvm\"))\n\t},\n\t{\n\t\t\"id\": \"log\",\n\t\t\"name\": \"Log file\",\n\t\t\"import\": (() => import(\"@shikijs/langs/log\"))\n\t},\n\t{\n\t\t\"id\": \"logo\",\n\t\t\"name\": \"Logo\",\n\t\t\"import\": (() => import(\"@shikijs/langs/logo\"))\n\t},\n\t{\n\t\t\"id\": \"lua\",\n\t\t\"name\": \"Lua\",\n\t\t\"import\": (() => import(\"@shikijs/langs/lua\"))\n\t},\n\t{\n\t\t\"id\": \"luau\",\n\t\t\"name\": \"Luau\",\n\t\t\"import\": (() => import(\"@shikijs/langs/luau\"))\n\t},\n\t{\n\t\t\"id\": \"make\",\n\t\t\"name\": \"Makefile\",\n\t\t\"aliases\": [\"makefile\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/make\"))\n\t},\n\t{\n\t\t\"id\": \"markdown\",\n\t\t\"name\": \"Markdown\",\n\t\t\"aliases\": [\"md\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/markdown\"))\n\t},\n\t{\n\t\t\"id\": \"marko\",\n\t\t\"name\": \"Marko\",\n\t\t\"import\": (() => import(\"@shikijs/langs/marko\"))\n\t},\n\t{\n\t\t\"id\": \"matlab\",\n\t\t\"name\": \"MATLAB\",\n\t\t\"import\": (() => import(\"@shikijs/langs/matlab\"))\n\t},\n\t{\n\t\t\"id\": \"mdc\",\n\t\t\"name\": \"MDC\",\n\t\t\"import\": (() => import(\"@shikijs/langs/mdc\"))\n\t},\n\t{\n\t\t\"id\": \"mdx\",\n\t\t\"name\": \"MDX\",\n\t\t\"import\": (() => import(\"@shikijs/langs/mdx\"))\n\t},\n\t{\n\t\t\"id\": \"mermaid\",\n\t\t\"name\": \"Mermaid\",\n\t\t\"aliases\": [\"mmd\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/mermaid\"))\n\t},\n\t{\n\t\t\"id\": \"mipsasm\",\n\t\t\"name\": \"MIPS Assembly\",\n\t\t\"aliases\": [\"mips\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/mipsasm\"))\n\t},\n\t{\n\t\t\"id\": \"mojo\",\n\t\t\"name\": \"Mojo\",\n\t\t\"import\": (() => import(\"@shikijs/langs/mojo\"))\n\t},\n\t{\n\t\t\"id\": \"moonbit\",\n\t\t\"name\": \"MoonBit\",\n\t\t\"aliases\": [\"mbt\", \"mbti\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/moonbit\"))\n\t},\n\t{\n\t\t\"id\": \"move\",\n\t\t\"name\": \"Move\",\n\t\t\"import\": (() => import(\"@shikijs/langs/move\"))\n\t},\n\t{\n\t\t\"id\": \"narrat\",\n\t\t\"name\": \"Narrat Language\",\n\t\t\"aliases\": [\"nar\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/narrat\"))\n\t},\n\t{\n\t\t\"id\": \"nextflow\",\n\t\t\"name\": \"Nextflow\",\n\t\t\"aliases\": [\"nf\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/nextflow\"))\n\t},\n\t{\n\t\t\"id\": \"nextflow-groovy\",\n\t\t\"name\": \"Nextflow Groovy\",\n\t\t\"import\": (() => import(\"@shikijs/langs/nextflow-groovy\"))\n\t},\n\t{\n\t\t\"id\": \"nginx\",\n\t\t\"name\": \"Nginx\",\n\t\t\"import\": (() => import(\"@shikijs/langs/nginx\"))\n\t},\n\t{\n\t\t\"id\": \"nim\",\n\t\t\"name\": \"Nim\",\n\t\t\"import\": (() => import(\"@shikijs/langs/nim\"))\n\t},\n\t{\n\t\t\"id\": \"nix\",\n\t\t\"name\": \"Nix\",\n\t\t\"import\": (() => import(\"@shikijs/langs/nix\"))\n\t},\n\t{\n\t\t\"id\": \"nushell\",\n\t\t\"name\": \"nushell\",\n\t\t\"aliases\": [\"nu\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/nushell\"))\n\t},\n\t{\n\t\t\"id\": \"objective-c\",\n\t\t\"name\": \"Objective-C\",\n\t\t\"aliases\": [\"objc\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/objective-c\"))\n\t},\n\t{\n\t\t\"id\": \"objective-cpp\",\n\t\t\"name\": \"Objective-C++\",\n\t\t\"import\": (() => import(\"@shikijs/langs/objective-cpp\"))\n\t},\n\t{\n\t\t\"id\": \"ocaml\",\n\t\t\"name\": \"OCaml\",\n\t\t\"import\": (() => import(\"@shikijs/langs/ocaml\"))\n\t},\n\t{\n\t\t\"id\": \"odin\",\n\t\t\"name\": \"Odin\",\n\t\t\"import\": (() => import(\"@shikijs/langs/odin\"))\n\t},\n\t{\n\t\t\"id\": \"openscad\",\n\t\t\"name\": \"OpenSCAD\",\n\t\t\"aliases\": [\"scad\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/openscad\"))\n\t},\n\t{\n\t\t\"id\": \"pascal\",\n\t\t\"name\": \"Pascal\",\n\t\t\"import\": (() => import(\"@shikijs/langs/pascal\"))\n\t},\n\t{\n\t\t\"id\": \"perl\",\n\t\t\"name\": \"Perl\",\n\t\t\"import\": (() => import(\"@shikijs/langs/perl\"))\n\t},\n\t{\n\t\t\"id\": \"php\",\n\t\t\"name\": \"PHP\",\n\t\t\"import\": (() => import(\"@shikijs/langs/php\"))\n\t},\n\t{\n\t\t\"id\": \"pkl\",\n\t\t\"name\": \"Pkl\",\n\t\t\"import\": (() => import(\"@shikijs/langs/pkl\"))\n\t},\n\t{\n\t\t\"id\": \"plsql\",\n\t\t\"name\": \"PL/SQL\",\n\t\t\"import\": (() => import(\"@shikijs/langs/plsql\"))\n\t},\n\t{\n\t\t\"id\": \"po\",\n\t\t\"name\": \"Gettext PO\",\n\t\t\"aliases\": [\"pot\", \"potx\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/po\"))\n\t},\n\t{\n\t\t\"id\": \"polar\",\n\t\t\"name\": \"Polar\",\n\t\t\"import\": (() => import(\"@shikijs/langs/polar\"))\n\t},\n\t{\n\t\t\"id\": \"postcss\",\n\t\t\"name\": \"PostCSS\",\n\t\t\"import\": (() => import(\"@shikijs/langs/postcss\"))\n\t},\n\t{\n\t\t\"id\": \"powerquery\",\n\t\t\"name\": \"PowerQuery\",\n\t\t\"import\": (() => import(\"@shikijs/langs/powerquery\"))\n\t},\n\t{\n\t\t\"id\": \"powershell\",\n\t\t\"name\": \"PowerShell\",\n\t\t\"aliases\": [\"ps\", \"ps1\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/powershell\"))\n\t},\n\t{\n\t\t\"id\": \"prisma\",\n\t\t\"name\": \"Prisma\",\n\t\t\"import\": (() => import(\"@shikijs/langs/prisma\"))\n\t},\n\t{\n\t\t\"id\": \"prolog\",\n\t\t\"name\": \"Prolog\",\n\t\t\"import\": (() => import(\"@shikijs/langs/prolog\"))\n\t},\n\t{\n\t\t\"id\": \"proto\",\n\t\t\"name\": \"Protocol Buffer 3\",\n\t\t\"aliases\": [\"protobuf\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/proto\"))\n\t},\n\t{\n\t\t\"id\": \"pug\",\n\t\t\"name\": \"Pug\",\n\t\t\"aliases\": [\"jade\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/pug\"))\n\t},\n\t{\n\t\t\"id\": \"puppet\",\n\t\t\"name\": \"Puppet\",\n\t\t\"import\": (() => import(\"@shikijs/langs/puppet\"))\n\t},\n\t{\n\t\t\"id\": \"purescript\",\n\t\t\"name\": \"PureScript\",\n\t\t\"import\": (() => import(\"@shikijs/langs/purescript\"))\n\t},\n\t{\n\t\t\"id\": \"python\",\n\t\t\"name\": \"Python\",\n\t\t\"aliases\": [\"py\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/python\"))\n\t},\n\t{\n\t\t\"id\": \"qml\",\n\t\t\"name\": \"QML\",\n\t\t\"import\": (() => import(\"@shikijs/langs/qml\"))\n\t},\n\t{\n\t\t\"id\": \"qmldir\",\n\t\t\"name\": \"QML Directory\",\n\t\t\"import\": (() => import(\"@shikijs/langs/qmldir\"))\n\t},\n\t{\n\t\t\"id\": \"qss\",\n\t\t\"name\": \"Qt Style Sheets\",\n\t\t\"import\": (() => import(\"@shikijs/langs/qss\"))\n\t},\n\t{\n\t\t\"id\": \"r\",\n\t\t\"name\": \"R\",\n\t\t\"import\": (() => import(\"@shikijs/langs/r\"))\n\t},\n\t{\n\t\t\"id\": \"racket\",\n\t\t\"name\": \"Racket\",\n\t\t\"import\": (() => import(\"@shikijs/langs/racket\"))\n\t},\n\t{\n\t\t\"id\": \"raku\",\n\t\t\"name\": \"Raku\",\n\t\t\"aliases\": [\"perl6\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/raku\"))\n\t},\n\t{\n\t\t\"id\": \"razor\",\n\t\t\"name\": \"ASP.NET Razor\",\n\t\t\"import\": (() => import(\"@shikijs/langs/razor\"))\n\t},\n\t{\n\t\t\"id\": \"reg\",\n\t\t\"name\": \"Windows Registry Script\",\n\t\t\"import\": (() => import(\"@shikijs/langs/reg\"))\n\t},\n\t{\n\t\t\"id\": \"regexp\",\n\t\t\"name\": \"RegExp\",\n\t\t\"aliases\": [\"regex\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/regexp\"))\n\t},\n\t{\n\t\t\"id\": \"rel\",\n\t\t\"name\": \"Rel\",\n\t\t\"import\": (() => import(\"@shikijs/langs/rel\"))\n\t},\n\t{\n\t\t\"id\": \"riscv\",\n\t\t\"name\": \"RISC-V\",\n\t\t\"import\": (() => import(\"@shikijs/langs/riscv\"))\n\t},\n\t{\n\t\t\"id\": \"ron\",\n\t\t\"name\": \"RON\",\n\t\t\"import\": (() => import(\"@shikijs/langs/ron\"))\n\t},\n\t{\n\t\t\"id\": \"rosmsg\",\n\t\t\"name\": \"ROS Interface\",\n\t\t\"import\": (() => import(\"@shikijs/langs/rosmsg\"))\n\t},\n\t{\n\t\t\"id\": \"rst\",\n\t\t\"name\": \"reStructuredText\",\n\t\t\"import\": (() => import(\"@shikijs/langs/rst\"))\n\t},\n\t{\n\t\t\"id\": \"ruby\",\n\t\t\"name\": \"Ruby\",\n\t\t\"aliases\": [\"rb\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/ruby\"))\n\t},\n\t{\n\t\t\"id\": \"rust\",\n\t\t\"name\": \"Rust\",\n\t\t\"aliases\": [\"rs\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/rust\"))\n\t},\n\t{\n\t\t\"id\": \"sas\",\n\t\t\"name\": \"SAS\",\n\t\t\"import\": (() => import(\"@shikijs/langs/sas\"))\n\t},\n\t{\n\t\t\"id\": \"sass\",\n\t\t\"name\": \"Sass\",\n\t\t\"import\": (() => import(\"@shikijs/langs/sass\"))\n\t},\n\t{\n\t\t\"id\": \"scala\",\n\t\t\"name\": \"Scala\",\n\t\t\"import\": (() => import(\"@shikijs/langs/scala\"))\n\t},\n\t{\n\t\t\"id\": \"scheme\",\n\t\t\"name\": \"Scheme\",\n\t\t\"import\": (() => import(\"@shikijs/langs/scheme\"))\n\t},\n\t{\n\t\t\"id\": \"scss\",\n\t\t\"name\": \"SCSS\",\n\t\t\"import\": (() => import(\"@shikijs/langs/scss\"))\n\t},\n\t{\n\t\t\"id\": \"sdbl\",\n\t\t\"name\": \"1C (Query)\",\n\t\t\"aliases\": [\"1c-query\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/sdbl\"))\n\t},\n\t{\n\t\t\"id\": \"shaderlab\",\n\t\t\"name\": \"ShaderLab\",\n\t\t\"aliases\": [\"shader\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/shaderlab\"))\n\t},\n\t{\n\t\t\"id\": \"shellscript\",\n\t\t\"name\": \"Shell\",\n\t\t\"aliases\": [\n\t\t\t\"bash\",\n\t\t\t\"sh\",\n\t\t\t\"shell\",\n\t\t\t\"zsh\"\n\t\t],\n\t\t\"import\": (() => import(\"@shikijs/langs/shellscript\"))\n\t},\n\t{\n\t\t\"id\": \"shellsession\",\n\t\t\"name\": \"Shell Session\",\n\t\t\"aliases\": [\"console\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/shellsession\"))\n\t},\n\t{\n\t\t\"id\": \"smalltalk\",\n\t\t\"name\": \"Smalltalk\",\n\t\t\"import\": (() => import(\"@shikijs/langs/smalltalk\"))\n\t},\n\t{\n\t\t\"id\": \"solidity\",\n\t\t\"name\": \"Solidity\",\n\t\t\"import\": (() => import(\"@shikijs/langs/solidity\"))\n\t},\n\t{\n\t\t\"id\": \"soy\",\n\t\t\"name\": \"Closure Templates\",\n\t\t\"aliases\": [\"closure-templates\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/soy\"))\n\t},\n\t{\n\t\t\"id\": \"sparql\",\n\t\t\"name\": \"SPARQL\",\n\t\t\"import\": (() => import(\"@shikijs/langs/sparql\"))\n\t},\n\t{\n\t\t\"id\": \"splunk\",\n\t\t\"name\": \"Splunk Query Language\",\n\t\t\"aliases\": [\"spl\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/splunk\"))\n\t},\n\t{\n\t\t\"id\": \"sql\",\n\t\t\"name\": \"SQL\",\n\t\t\"import\": (() => import(\"@shikijs/langs/sql\"))\n\t},\n\t{\n\t\t\"id\": \"ssh-config\",\n\t\t\"name\": \"SSH Config\",\n\t\t\"import\": (() => import(\"@shikijs/langs/ssh-config\"))\n\t},\n\t{\n\t\t\"id\": \"stata\",\n\t\t\"name\": \"Stata\",\n\t\t\"import\": (() => import(\"@shikijs/langs/stata\"))\n\t},\n\t{\n\t\t\"id\": \"stylus\",\n\t\t\"name\": \"Stylus\",\n\t\t\"aliases\": [\"styl\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/stylus\"))\n\t},\n\t{\n\t\t\"id\": \"surrealql\",\n\t\t\"name\": \"SurrealQL\",\n\t\t\"aliases\": [\"surql\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/surrealql\"))\n\t},\n\t{\n\t\t\"id\": \"svelte\",\n\t\t\"name\": \"Svelte\",\n\t\t\"import\": (() => import(\"@shikijs/langs/svelte\"))\n\t},\n\t{\n\t\t\"id\": \"swift\",\n\t\t\"name\": \"Swift\",\n\t\t\"import\": (() => import(\"@shikijs/langs/swift\"))\n\t},\n\t{\n\t\t\"id\": \"system-verilog\",\n\t\t\"name\": \"SystemVerilog\",\n\t\t\"import\": (() => import(\"@shikijs/langs/system-verilog\"))\n\t},\n\t{\n\t\t\"id\": \"systemd\",\n\t\t\"name\": \"Systemd Units\",\n\t\t\"import\": (() => import(\"@shikijs/langs/systemd\"))\n\t},\n\t{\n\t\t\"id\": \"talonscript\",\n\t\t\"name\": \"TalonScript\",\n\t\t\"aliases\": [\"talon\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/talonscript\"))\n\t},\n\t{\n\t\t\"id\": \"tasl\",\n\t\t\"name\": \"Tasl\",\n\t\t\"import\": (() => import(\"@shikijs/langs/tasl\"))\n\t},\n\t{\n\t\t\"id\": \"tcl\",\n\t\t\"name\": \"Tcl\",\n\t\t\"import\": (() => import(\"@shikijs/langs/tcl\"))\n\t},\n\t{\n\t\t\"id\": \"templ\",\n\t\t\"name\": \"Templ\",\n\t\t\"import\": (() => import(\"@shikijs/langs/templ\"))\n\t},\n\t{\n\t\t\"id\": \"terraform\",\n\t\t\"name\": \"Terraform\",\n\t\t\"aliases\": [\"tf\", \"tfvars\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/terraform\"))\n\t},\n\t{\n\t\t\"id\": \"tex\",\n\t\t\"name\": \"TeX\",\n\t\t\"import\": (() => import(\"@shikijs/langs/tex\"))\n\t},\n\t{\n\t\t\"id\": \"toml\",\n\t\t\"name\": \"TOML\",\n\t\t\"import\": (() => import(\"@shikijs/langs/toml\"))\n\t},\n\t{\n\t\t\"id\": \"ts-tags\",\n\t\t\"name\": \"TypeScript with Tags\",\n\t\t\"aliases\": [\"lit\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/ts-tags\"))\n\t},\n\t{\n\t\t\"id\": \"tsv\",\n\t\t\"name\": \"TSV\",\n\t\t\"import\": (() => import(\"@shikijs/langs/tsv\"))\n\t},\n\t{\n\t\t\"id\": \"tsx\",\n\t\t\"name\": \"TSX\",\n\t\t\"import\": (() => import(\"@shikijs/langs/tsx\"))\n\t},\n\t{\n\t\t\"id\": \"turtle\",\n\t\t\"name\": \"Turtle\",\n\t\t\"import\": (() => import(\"@shikijs/langs/turtle\"))\n\t},\n\t{\n\t\t\"id\": \"twig\",\n\t\t\"name\": \"Twig\",\n\t\t\"import\": (() => import(\"@shikijs/langs/twig\"))\n\t},\n\t{\n\t\t\"id\": \"typescript\",\n\t\t\"name\": \"TypeScript\",\n\t\t\"aliases\": [\n\t\t\t\"ts\",\n\t\t\t\"cts\",\n\t\t\t\"mts\"\n\t\t],\n\t\t\"import\": (() => import(\"@shikijs/langs/typescript\"))\n\t},\n\t{\n\t\t\"id\": \"typespec\",\n\t\t\"name\": \"TypeSpec\",\n\t\t\"aliases\": [\"tsp\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/typespec\"))\n\t},\n\t{\n\t\t\"id\": \"typst\",\n\t\t\"name\": \"Typst\",\n\t\t\"aliases\": [\"typ\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/typst\"))\n\t},\n\t{\n\t\t\"id\": \"v\",\n\t\t\"name\": \"V\",\n\t\t\"import\": (() => import(\"@shikijs/langs/v\"))\n\t},\n\t{\n\t\t\"id\": \"vala\",\n\t\t\"name\": \"Vala\",\n\t\t\"import\": (() => import(\"@shikijs/langs/vala\"))\n\t},\n\t{\n\t\t\"id\": \"vb\",\n\t\t\"name\": \"Visual Basic\",\n\t\t\"aliases\": [\"cmd\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/vb\"))\n\t},\n\t{\n\t\t\"id\": \"verilog\",\n\t\t\"name\": \"Verilog\",\n\t\t\"import\": (() => import(\"@shikijs/langs/verilog\"))\n\t},\n\t{\n\t\t\"id\": \"vhdl\",\n\t\t\"name\": \"VHDL\",\n\t\t\"import\": (() => import(\"@shikijs/langs/vhdl\"))\n\t},\n\t{\n\t\t\"id\": \"viml\",\n\t\t\"name\": \"Vim Script\",\n\t\t\"aliases\": [\"vim\", \"vimscript\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/viml\"))\n\t},\n\t{\n\t\t\"id\": \"vue\",\n\t\t\"name\": \"Vue\",\n\t\t\"import\": (() => import(\"@shikijs/langs/vue\"))\n\t},\n\t{\n\t\t\"id\": \"vue-html\",\n\t\t\"name\": \"Vue HTML\",\n\t\t\"import\": (() => import(\"@shikijs/langs/vue-html\"))\n\t},\n\t{\n\t\t\"id\": \"vue-vine\",\n\t\t\"name\": \"Vue Vine\",\n\t\t\"import\": (() => import(\"@shikijs/langs/vue-vine\"))\n\t},\n\t{\n\t\t\"id\": \"vyper\",\n\t\t\"name\": \"Vyper\",\n\t\t\"aliases\": [\"vy\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/vyper\"))\n\t},\n\t{\n\t\t\"id\": \"wasm\",\n\t\t\"name\": \"WebAssembly\",\n\t\t\"import\": (() => import(\"@shikijs/langs/wasm\"))\n\t},\n\t{\n\t\t\"id\": \"wenyan\",\n\t\t\"name\": \"Wenyan\",\n\t\t\"aliases\": [\"文言\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/wenyan\"))\n\t},\n\t{\n\t\t\"id\": \"wgsl\",\n\t\t\"name\": \"WGSL\",\n\t\t\"import\": (() => import(\"@shikijs/langs/wgsl\"))\n\t},\n\t{\n\t\t\"id\": \"wikitext\",\n\t\t\"name\": \"Wikitext\",\n\t\t\"aliases\": [\"mediawiki\", \"wiki\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/wikitext\"))\n\t},\n\t{\n\t\t\"id\": \"wit\",\n\t\t\"name\": \"WebAssembly Interface Types\",\n\t\t\"import\": (() => import(\"@shikijs/langs/wit\"))\n\t},\n\t{\n\t\t\"id\": \"wolfram\",\n\t\t\"name\": \"Wolfram\",\n\t\t\"aliases\": [\"wl\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/wolfram\"))\n\t},\n\t{\n\t\t\"id\": \"xml\",\n\t\t\"name\": \"XML\",\n\t\t\"import\": (() => import(\"@shikijs/langs/xml\"))\n\t},\n\t{\n\t\t\"id\": \"xsl\",\n\t\t\"name\": \"XSL\",\n\t\t\"import\": (() => import(\"@shikijs/langs/xsl\"))\n\t},\n\t{\n\t\t\"id\": \"yaml\",\n\t\t\"name\": \"YAML\",\n\t\t\"aliases\": [\"yml\"],\n\t\t\"import\": (() => import(\"@shikijs/langs/yaml\"))\n\t},\n\t{\n\t\t\"id\": \"zenscript\",\n\t\t\"name\": \"ZenScript\",\n\t\t\"import\": (() => import(\"@shikijs/langs/zenscript\"))\n\t},\n\t{\n\t\t\"id\": \"zig\",\n\t\t\"name\": \"Zig\",\n\t\t\"import\": (() => import(\"@shikijs/langs/zig\"))\n\t}\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\t...bundledLanguagesBase,\n\t...bundledLanguagesAlias\n};\n//#endregion\nexport { bundledLanguagesInfo as i, bundledLanguagesAlias as n, bundledLanguagesBase as r, bundledLanguages as t };\n","//#region src/themes.ts\nconst bundledThemesInfo = [\n\t{\n\t\t\"id\": \"andromeeda\",\n\t\t\"displayName\": \"Andromeeda\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/andromeeda\"))\n\t},\n\t{\n\t\t\"id\": \"aurora-x\",\n\t\t\"displayName\": \"Aurora X\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/aurora-x\"))\n\t},\n\t{\n\t\t\"id\": \"ayu-dark\",\n\t\t\"displayName\": \"Ayu Dark\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/ayu-dark\"))\n\t},\n\t{\n\t\t\"id\": \"ayu-light\",\n\t\t\"displayName\": \"Ayu Light\",\n\t\t\"type\": \"light\",\n\t\t\"import\": (() => import(\"@shikijs/themes/ayu-light\"))\n\t},\n\t{\n\t\t\"id\": \"ayu-mirage\",\n\t\t\"displayName\": \"Ayu Mirage\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/ayu-mirage\"))\n\t},\n\t{\n\t\t\"id\": \"catppuccin-frappe\",\n\t\t\"displayName\": \"Catppuccin Frappé\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/catppuccin-frappe\"))\n\t},\n\t{\n\t\t\"id\": \"catppuccin-latte\",\n\t\t\"displayName\": \"Catppuccin Latte\",\n\t\t\"type\": \"light\",\n\t\t\"import\": (() => import(\"@shikijs/themes/catppuccin-latte\"))\n\t},\n\t{\n\t\t\"id\": \"catppuccin-macchiato\",\n\t\t\"displayName\": \"Catppuccin Macchiato\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/catppuccin-macchiato\"))\n\t},\n\t{\n\t\t\"id\": \"catppuccin-mocha\",\n\t\t\"displayName\": \"Catppuccin Mocha\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/catppuccin-mocha\"))\n\t},\n\t{\n\t\t\"id\": \"dark-plus\",\n\t\t\"displayName\": \"Dark Plus\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/dark-plus\"))\n\t},\n\t{\n\t\t\"id\": \"dracula\",\n\t\t\"displayName\": \"Dracula Theme\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/dracula\"))\n\t},\n\t{\n\t\t\"id\": \"dracula-soft\",\n\t\t\"displayName\": \"Dracula Theme Soft\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/dracula-soft\"))\n\t},\n\t{\n\t\t\"id\": \"everforest-dark\",\n\t\t\"displayName\": \"Everforest Dark\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/everforest-dark\"))\n\t},\n\t{\n\t\t\"id\": \"everforest-light\",\n\t\t\"displayName\": \"Everforest Light\",\n\t\t\"type\": \"light\",\n\t\t\"import\": (() => import(\"@shikijs/themes/everforest-light\"))\n\t},\n\t{\n\t\t\"id\": \"github-dark\",\n\t\t\"displayName\": \"GitHub Dark\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/github-dark\"))\n\t},\n\t{\n\t\t\"id\": \"github-dark-default\",\n\t\t\"displayName\": \"GitHub Dark Default\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/github-dark-default\"))\n\t},\n\t{\n\t\t\"id\": \"github-dark-dimmed\",\n\t\t\"displayName\": \"GitHub Dark Dimmed\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/github-dark-dimmed\"))\n\t},\n\t{\n\t\t\"id\": \"github-dark-high-contrast\",\n\t\t\"displayName\": \"GitHub Dark High Contrast\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/github-dark-high-contrast\"))\n\t},\n\t{\n\t\t\"id\": \"github-light\",\n\t\t\"displayName\": \"GitHub Light\",\n\t\t\"type\": \"light\",\n\t\t\"import\": (() => import(\"@shikijs/themes/github-light\"))\n\t},\n\t{\n\t\t\"id\": \"github-light-default\",\n\t\t\"displayName\": \"GitHub Light Default\",\n\t\t\"type\": \"light\",\n\t\t\"import\": (() => import(\"@shikijs/themes/github-light-default\"))\n\t},\n\t{\n\t\t\"id\": \"github-light-high-contrast\",\n\t\t\"displayName\": \"GitHub Light High Contrast\",\n\t\t\"type\": \"light\",\n\t\t\"import\": (() => import(\"@shikijs/themes/github-light-high-contrast\"))\n\t},\n\t{\n\t\t\"id\": \"gruvbox-dark-hard\",\n\t\t\"displayName\": \"Gruvbox Dark Hard\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/gruvbox-dark-hard\"))\n\t},\n\t{\n\t\t\"id\": \"gruvbox-dark-medium\",\n\t\t\"displayName\": \"Gruvbox Dark Medium\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/gruvbox-dark-medium\"))\n\t},\n\t{\n\t\t\"id\": \"gruvbox-dark-soft\",\n\t\t\"displayName\": \"Gruvbox Dark Soft\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/gruvbox-dark-soft\"))\n\t},\n\t{\n\t\t\"id\": \"gruvbox-light-hard\",\n\t\t\"displayName\": \"Gruvbox Light Hard\",\n\t\t\"type\": \"light\",\n\t\t\"import\": (() => import(\"@shikijs/themes/gruvbox-light-hard\"))\n\t},\n\t{\n\t\t\"id\": \"gruvbox-light-medium\",\n\t\t\"displayName\": \"Gruvbox Light Medium\",\n\t\t\"type\": \"light\",\n\t\t\"import\": (() => import(\"@shikijs/themes/gruvbox-light-medium\"))\n\t},\n\t{\n\t\t\"id\": \"gruvbox-light-soft\",\n\t\t\"displayName\": \"Gruvbox Light Soft\",\n\t\t\"type\": \"light\",\n\t\t\"import\": (() => import(\"@shikijs/themes/gruvbox-light-soft\"))\n\t},\n\t{\n\t\t\"id\": \"horizon\",\n\t\t\"displayName\": \"Horizon\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/horizon\"))\n\t},\n\t{\n\t\t\"id\": \"horizon-bright\",\n\t\t\"displayName\": \"Horizon Bright\",\n\t\t\"type\": \"light\",\n\t\t\"import\": (() => import(\"@shikijs/themes/horizon-bright\"))\n\t},\n\t{\n\t\t\"id\": \"houston\",\n\t\t\"displayName\": \"Houston\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/houston\"))\n\t},\n\t{\n\t\t\"id\": \"kanagawa-dragon\",\n\t\t\"displayName\": \"Kanagawa Dragon\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/kanagawa-dragon\"))\n\t},\n\t{\n\t\t\"id\": \"kanagawa-lotus\",\n\t\t\"displayName\": \"Kanagawa Lotus\",\n\t\t\"type\": \"light\",\n\t\t\"import\": (() => import(\"@shikijs/themes/kanagawa-lotus\"))\n\t},\n\t{\n\t\t\"id\": \"kanagawa-wave\",\n\t\t\"displayName\": \"Kanagawa Wave\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/kanagawa-wave\"))\n\t},\n\t{\n\t\t\"id\": \"laserwave\",\n\t\t\"displayName\": \"LaserWave\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/laserwave\"))\n\t},\n\t{\n\t\t\"id\": \"light-plus\",\n\t\t\"displayName\": \"Light Plus\",\n\t\t\"type\": \"light\",\n\t\t\"import\": (() => import(\"@shikijs/themes/light-plus\"))\n\t},\n\t{\n\t\t\"id\": \"material-theme\",\n\t\t\"displayName\": \"Material Theme\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/material-theme\"))\n\t},\n\t{\n\t\t\"id\": \"material-theme-darker\",\n\t\t\"displayName\": \"Material Theme Darker\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/material-theme-darker\"))\n\t},\n\t{\n\t\t\"id\": \"material-theme-lighter\",\n\t\t\"displayName\": \"Material Theme Lighter\",\n\t\t\"type\": \"light\",\n\t\t\"import\": (() => import(\"@shikijs/themes/material-theme-lighter\"))\n\t},\n\t{\n\t\t\"id\": \"material-theme-ocean\",\n\t\t\"displayName\": \"Material Theme Ocean\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/material-theme-ocean\"))\n\t},\n\t{\n\t\t\"id\": \"material-theme-palenight\",\n\t\t\"displayName\": \"Material Theme Palenight\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/material-theme-palenight\"))\n\t},\n\t{\n\t\t\"id\": \"min-dark\",\n\t\t\"displayName\": \"Min Dark\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/min-dark\"))\n\t},\n\t{\n\t\t\"id\": \"min-light\",\n\t\t\"displayName\": \"Min Light\",\n\t\t\"type\": \"light\",\n\t\t\"import\": (() => import(\"@shikijs/themes/min-light\"))\n\t},\n\t{\n\t\t\"id\": \"monokai\",\n\t\t\"displayName\": \"Monokai\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/monokai\"))\n\t},\n\t{\n\t\t\"id\": \"night-owl\",\n\t\t\"displayName\": \"Night Owl\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/night-owl\"))\n\t},\n\t{\n\t\t\"id\": \"night-owl-light\",\n\t\t\"displayName\": \"Night Owl Light\",\n\t\t\"type\": \"light\",\n\t\t\"import\": (() => import(\"@shikijs/themes/night-owl-light\"))\n\t},\n\t{\n\t\t\"id\": \"nord\",\n\t\t\"displayName\": \"Nord\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/nord\"))\n\t},\n\t{\n\t\t\"id\": \"one-dark-pro\",\n\t\t\"displayName\": \"One Dark Pro\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/one-dark-pro\"))\n\t},\n\t{\n\t\t\"id\": \"one-light\",\n\t\t\"displayName\": \"One Light\",\n\t\t\"type\": \"light\",\n\t\t\"import\": (() => import(\"@shikijs/themes/one-light\"))\n\t},\n\t{\n\t\t\"id\": \"plastic\",\n\t\t\"displayName\": \"Plastic\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/plastic\"))\n\t},\n\t{\n\t\t\"id\": \"poimandres\",\n\t\t\"displayName\": \"Poimandres\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/poimandres\"))\n\t},\n\t{\n\t\t\"id\": \"red\",\n\t\t\"displayName\": \"Red\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/red\"))\n\t},\n\t{\n\t\t\"id\": \"rose-pine\",\n\t\t\"displayName\": \"Rosé Pine\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/rose-pine\"))\n\t},\n\t{\n\t\t\"id\": \"rose-pine-dawn\",\n\t\t\"displayName\": \"Rosé Pine Dawn\",\n\t\t\"type\": \"light\",\n\t\t\"import\": (() => import(\"@shikijs/themes/rose-pine-dawn\"))\n\t},\n\t{\n\t\t\"id\": \"rose-pine-moon\",\n\t\t\"displayName\": \"Rosé Pine Moon\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/rose-pine-moon\"))\n\t},\n\t{\n\t\t\"id\": \"slack-dark\",\n\t\t\"displayName\": \"Slack Dark\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/slack-dark\"))\n\t},\n\t{\n\t\t\"id\": \"slack-ochin\",\n\t\t\"displayName\": \"Slack Ochin\",\n\t\t\"type\": \"light\",\n\t\t\"import\": (() => import(\"@shikijs/themes/slack-ochin\"))\n\t},\n\t{\n\t\t\"id\": \"snazzy-light\",\n\t\t\"displayName\": \"Snazzy Light\",\n\t\t\"type\": \"light\",\n\t\t\"import\": (() => import(\"@shikijs/themes/snazzy-light\"))\n\t},\n\t{\n\t\t\"id\": \"solarized-dark\",\n\t\t\"displayName\": \"Solarized Dark\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/solarized-dark\"))\n\t},\n\t{\n\t\t\"id\": \"solarized-light\",\n\t\t\"displayName\": \"Solarized Light\",\n\t\t\"type\": \"light\",\n\t\t\"import\": (() => import(\"@shikijs/themes/solarized-light\"))\n\t},\n\t{\n\t\t\"id\": \"synthwave-84\",\n\t\t\"displayName\": \"Synthwave '84\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/synthwave-84\"))\n\t},\n\t{\n\t\t\"id\": \"tokyo-night\",\n\t\t\"displayName\": \"Tokyo Night\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/tokyo-night\"))\n\t},\n\t{\n\t\t\"id\": \"vesper\",\n\t\t\"displayName\": \"Vesper\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/vesper\"))\n\t},\n\t{\n\t\t\"id\": \"vitesse-black\",\n\t\t\"displayName\": \"Vitesse Black\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/vitesse-black\"))\n\t},\n\t{\n\t\t\"id\": \"vitesse-dark\",\n\t\t\"displayName\": \"Vitesse Dark\",\n\t\t\"type\": \"dark\",\n\t\t\"import\": (() => import(\"@shikijs/themes/vitesse-dark\"))\n\t},\n\t{\n\t\t\"id\": \"vitesse-light\",\n\t\t\"displayName\": \"Vitesse Light\",\n\t\t\"type\": \"light\",\n\t\t\"import\": (() => import(\"@shikijs/themes/vitesse-light\"))\n\t}\n];\nconst bundledThemes = Object.fromEntries(bundledThemesInfo.map((i) => [i.id, i.import]));\n//#endregion\nexport { bundledThemes, bundledThemesInfo };\n","//#region src/error.ts\nvar ShikiError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"ShikiError\";\n\t}\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 = await init(info);\n wasmMemory = exports.memory;\n updateGlobalBufferAndViews(wasmMemory.buffer);\n Object.assign(binding, exports);\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 { n as __reExport, t as __exportAll } from \"./rolldown-runtime-BBjsoOtd.mjs\";\nexport * from \"@shikijs/engine-oniguruma\";\n//#region src/engine-oniguruma.ts\nvar engine_oniguruma_exports = /* @__PURE__ */ __exportAll({});\nimport * as import__shikijs_engine_oniguruma from \"@shikijs/engine-oniguruma\";\n__reExport(engine_oniguruma_exports, import__shikijs_engine_oniguruma);\n//#endregion\nexport { engine_oniguruma_exports as t };\n","//#region src/error.ts\nvar ShikiError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"ShikiError\";\n\t}\n};\n//#endregion\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","import { ShikiError } from \"@shikijs/types\";\nimport { EncodedTokenMetadata, INITIAL, Registry as Registry$1, Theme } from \"@shikijs/vscode-textmate\";\nexport * from \"@shikijs/types\";\n//#region src/utils/colors.ts\nfunction resolveColorReplacements(theme, options) {\n\tconst replacements = typeof theme === \"string\" ? {} : { ...theme.colorReplacements };\n\tconst themeName = typeof theme === \"string\" ? theme : theme.name;\n\tfor (const [key, value] of Object.entries(options?.colorReplacements || {})) if (typeof value === \"string\") replacements[key] = value;\n\telse if (key === themeName) Object.assign(replacements, value);\n\treturn replacements;\n}\nfunction applyColorReplacements(color, replacements) {\n\tif (!color) return color;\n\treturn replacements?.[color?.toLowerCase()] || color;\n}\n//#endregion\n//#region src/utils/general.ts\nfunction toArray(x) {\n\treturn Array.isArray(x) ? x : [x];\n}\n/**\n* Normalize a getter to a promise.\n*/\nasync function normalizeGetter(p) {\n\treturn Promise.resolve(typeof p === \"function\" ? p() : p).then((r) => r.default || r);\n}\n/**\n* Check if the language is plaintext that is ignored by Shiki.\n*\n* Hard-coded plain text languages: `plaintext`, `txt`, `text`, `plain`.\n*/\nfunction isPlainLang(lang) {\n\treturn !lang || [\n\t\t\"plaintext\",\n\t\t\"txt\",\n\t\t\"text\",\n\t\t\"plain\"\n\t].includes(lang);\n}\n/**\n* Check if the language is specially handled or bypassed by Shiki.\n*\n* Hard-coded languages: `ansi` and plaintexts like `plaintext`, `txt`, `text`, `plain`.\n*/\nfunction isSpecialLang(lang) {\n\treturn lang === \"ansi\" || isPlainLang(lang);\n}\n/**\n* Check if the theme is specially handled or bypassed by Shiki.\n*\n* Hard-coded themes: `none`.\n*/\nfunction isNoneTheme(theme) {\n\treturn theme === \"none\";\n}\n/**\n* Check if the theme is specially handled or bypassed by Shiki.\n*\n* Hard-coded themes: `none`.\n*/\nfunction isSpecialTheme(theme) {\n\treturn isNoneTheme(theme);\n}\n//#endregion\n//#region src/utils/strings.ts\n/**\n* Split a string into lines, each line preserves the line ending.\n*\n* @param code - The code string to split into lines\n* @param preserveEnding - Whether to preserve line endings in the result\n* @returns Array of tuples containing [line content, offset index]\n*\n* @example\n* ```ts\n* splitLines('hello\\nworld', false)\n* // => [['hello', 0], ['world', 6]]\n*\n* splitLines('hello\\nworld', true)\n* // => [['hello\\n', 0], ['world', 6]]\n* ```\n*/\nconst RE_NEWLINE = /(\\r?\\n)/g;\nfunction splitLines(code, preserveEnding = false) {\n\tif (code.length === 0) return [[\"\", 0]];\n\tconst parts = code.split(RE_NEWLINE);\n\tlet index = 0;\n\tconst lines = [];\n\tfor (let i = 0; i < parts.length; i += 2) {\n\t\tconst line = preserveEnding ? parts[i] + (parts[i + 1] || \"\") : parts[i];\n\t\tlines.push([line, index]);\n\t\tindex += parts[i].length;\n\t\tindex += parts[i + 1]?.length || 0;\n\t}\n\treturn lines;\n}\n//#endregion\n//#region src/textmate/normalize-theme.ts\n/**\n* https://github.com/microsoft/vscode/blob/f7f05dee53fb33fe023db2e06e30a89d3094488f/src/vs/platform/theme/common/colorRegistry.ts#L258-L268\n*/\nconst VSCODE_FALLBACK_EDITOR_FG = {\n\tlight: \"#333333\",\n\tdark: \"#bbbbbb\"\n};\nconst VSCODE_FALLBACK_EDITOR_BG = {\n\tlight: \"#fffffe\",\n\tdark: \"#1e1e1e\"\n};\nconst RESOLVED_KEY = \"__shiki_resolved\";\n/**\n* Normalize a textmate theme to shiki theme\n*/\nfunction normalizeTheme(rawTheme) {\n\tif (rawTheme?.[RESOLVED_KEY]) return rawTheme;\n\tconst theme = { ...rawTheme };\n\tif (theme.tokenColors && !theme.settings) {\n\t\ttheme.settings = theme.tokenColors;\n\t\tdelete theme.tokenColors;\n\t}\n\ttheme.type ||= \"dark\";\n\ttheme.colorReplacements = { ...theme.colorReplacements };\n\ttheme.settings ||= [];\n\tlet { bg, fg } = theme;\n\tif (!bg || !fg) {\n\t\t/**\n\t\t* First try:\n\t\t* Theme might contain a global `tokenColor` without `name` or `scope`\n\t\t* Used as default value for foreground/background\n\t\t*/\n\t\tconst globalSetting = theme.settings ? theme.settings.find((s) => !s.name && !s.scope) : void 0;\n\t\tif (globalSetting?.settings?.foreground) fg = globalSetting.settings.foreground;\n\t\tif (globalSetting?.settings?.background) bg = globalSetting.settings.background;\n\t\t/**\n\t\t* Second try:\n\t\t* If there's no global `tokenColor` without `name` or `scope`\n\t\t* Use `editor.foreground` and `editor.background`\n\t\t*/\n\t\tif (!fg && theme?.colors?.[\"editor.foreground\"]) fg = theme.colors[\"editor.foreground\"];\n\t\tif (!bg && theme?.colors?.[\"editor.background\"]) bg = theme.colors[\"editor.background\"];\n\t\t/**\n\t\t* Last try:\n\t\t* If there's no fg/bg color specified in theme, use default\n\t\t*/\n\t\tif (!fg) fg = theme.type === \"light\" ? VSCODE_FALLBACK_EDITOR_FG.light : VSCODE_FALLBACK_EDITOR_FG.dark;\n\t\tif (!bg) bg = theme.type === \"light\" ? VSCODE_FALLBACK_EDITOR_BG.light : VSCODE_FALLBACK_EDITOR_BG.dark;\n\t\ttheme.fg = fg;\n\t\ttheme.bg = bg;\n\t}\n\tif (!(theme.settings[0] && theme.settings[0].settings && !theme.settings[0].scope)) theme.settings.unshift({ settings: {\n\t\tforeground: theme.fg,\n\t\tbackground: theme.bg\n\t} });\n\tlet replacementCount = 0;\n\tconst replacementMap = /* @__PURE__ */ new Map();\n\tfunction getReplacementColor(value) {\n\t\tif (replacementMap.has(value)) return replacementMap.get(value);\n\t\treplacementCount += 1;\n\t\tconst hex = `#${replacementCount.toString(16).padStart(8, \"0\").toLowerCase()}`;\n\t\tif (theme.colorReplacements?.[`#${hex}`]) return getReplacementColor(value);\n\t\treplacementMap.set(value, hex);\n\t\treturn hex;\n\t}\n\ttheme.settings = theme.settings.map((setting) => {\n\t\tconst replaceFg = setting.settings?.foreground && !setting.settings.foreground.startsWith(\"#\");\n\t\tconst replaceBg = setting.settings?.background && !setting.settings.background.startsWith(\"#\");\n\t\tif (!replaceFg && !replaceBg) return setting;\n\t\tconst clone = {\n\t\t\t...setting,\n\t\t\tsettings: { ...setting.settings }\n\t\t};\n\t\tif (replaceFg) {\n\t\t\tconst replacement = getReplacementColor(setting.settings.foreground);\n\t\t\ttheme.colorReplacements[replacement] = setting.settings.foreground;\n\t\t\tclone.settings.foreground = replacement;\n\t\t}\n\t\tif (replaceBg) {\n\t\t\tconst replacement = getReplacementColor(setting.settings.background);\n\t\t\ttheme.colorReplacements[replacement] = setting.settings.background;\n\t\t\tclone.settings.background = replacement;\n\t\t}\n\t\treturn clone;\n\t});\n\tfor (const key of Object.keys(theme.colors || {})) if (key === \"editor.foreground\" || key === \"editor.background\" || key.startsWith(\"terminal.ansi\")) {\n\t\tif (!theme.colors[key]?.startsWith(\"#\")) {\n\t\t\tconst replacement = getReplacementColor(theme.colors[key]);\n\t\t\ttheme.colorReplacements[replacement] = theme.colors[key];\n\t\t\ttheme.colors[key] = replacement;\n\t\t}\n\t}\n\tObject.defineProperty(theme, RESOLVED_KEY, {\n\t\tenumerable: false,\n\t\twritable: false,\n\t\tvalue: true\n\t});\n\treturn theme;\n}\n//#endregion\n//#region src/textmate/getters-resolve.ts\n/**\n* Resolve\n*/\nasync function resolveLangs(langs) {\n\treturn [...new Set((await Promise.all(langs.filter((l) => !isSpecialLang(l)).map(async (lang) => await normalizeGetter(lang).then((r) => Array.isArray(r) ? r : [r])))).flat())];\n}\nasync function resolveThemes(themes) {\n\treturn (await Promise.all(themes.map(async (theme) => isSpecialTheme(theme) ? null : normalizeTheme(await normalizeGetter(theme))))).filter((i) => !!i);\n}\n//#endregion\n//#region src/utils/alias.ts\nfunction resolveLangAlias(name, alias) {\n\tif (!alias) return name;\n\tif (alias[name]) {\n\t\tconst resolved = /* @__PURE__ */ new Set([name]);\n\t\twhile (alias[name]) {\n\t\t\tname = alias[name];\n\t\t\tif (resolved.has(name)) throw new ShikiError(`Circular alias \\`${[...resolved].join(\" -> \")} -> ${name}\\``);\n\t\t\tresolved.add(name);\n\t\t}\n\t}\n\treturn name;\n}\n//#endregion\n//#region src/textmate/registry.ts\nvar Registry = class extends Registry$1 {\n\t_resolver;\n\t_themes;\n\t_langs;\n\t_alias;\n\t_resolvedThemes = /* @__PURE__ */ new Map();\n\t_resolvedGrammars = /* @__PURE__ */ new Map();\n\t_langMap = /* @__PURE__ */ new Map();\n\t_langGraph = /* @__PURE__ */ new Map();\n\t_textmateThemeCache = /* @__PURE__ */ new WeakMap();\n\t_loadedThemesCache = null;\n\t_loadedLanguagesCache = null;\n\tconstructor(_resolver, _themes, _langs, _alias = {}) {\n\t\tsuper(_resolver);\n\t\tthis._resolver = _resolver;\n\t\tthis._themes = _themes;\n\t\tthis._langs = _langs;\n\t\tthis._alias = _alias;\n\t\tthis._themes.map((t) => this.loadTheme(t));\n\t\tthis.loadLanguages(this._langs);\n\t}\n\tgetTheme(theme) {\n\t\tif (typeof theme === \"string\") return this._resolvedThemes.get(theme);\n\t\telse return this.loadTheme(theme);\n\t}\n\tloadTheme(theme) {\n\t\tconst _theme = normalizeTheme(theme);\n\t\tif (_theme.name) {\n\t\t\tthis._resolvedThemes.set(_theme.name, _theme);\n\t\t\tthis._loadedThemesCache = null;\n\t\t}\n\t\treturn _theme;\n\t}\n\tgetLoadedThemes() {\n\t\tif (!this._loadedThemesCache) this._loadedThemesCache = [...this._resolvedThemes.keys()];\n\t\treturn this._loadedThemesCache;\n\t}\n\tsetTheme(theme) {\n\t\tlet textmateTheme = this._textmateThemeCache.get(theme);\n\t\tif (!textmateTheme) {\n\t\t\ttextmateTheme = Theme.createFromRawTheme(theme);\n\t\t\tthis._textmateThemeCache.set(theme, textmateTheme);\n\t\t}\n\t\tthis._syncRegistry.setTheme(textmateTheme);\n\t}\n\tgetGrammar(name) {\n\t\tname = resolveLangAlias(name, this._alias);\n\t\treturn this._resolvedGrammars.get(name);\n\t}\n\tloadLanguage(lang) {\n\t\tif (this.getGrammar(lang.name)) return;\n\t\tconst embeddedLazilyBy = new Set([...this._langMap.values()].filter((i) => i.embeddedLangsLazy?.includes(lang.name)));\n\t\tthis._resolver.addLanguage(lang);\n\t\tconst grammarConfig = {\n\t\t\tbalancedBracketSelectors: lang.balancedBracketSelectors || [\"*\"],\n\t\t\tunbalancedBracketSelectors: lang.unbalancedBracketSelectors || []\n\t\t};\n\t\tthis._syncRegistry._rawGrammars.set(lang.scopeName, lang);\n\t\tconst g = this.loadGrammarWithConfiguration(lang.scopeName, 1, grammarConfig);\n\t\tg.name = lang.name;\n\t\tthis._resolvedGrammars.set(lang.name, g);\n\t\tif (lang.aliases) lang.aliases.forEach((alias) => {\n\t\t\tthis._alias[alias] = lang.name;\n\t\t});\n\t\tthis._loadedLanguagesCache = null;\n\t\tif (embeddedLazilyBy.size) for (const e of embeddedLazilyBy) {\n\t\t\tthis._resolvedGrammars.delete(e.name);\n\t\t\tthis._loadedLanguagesCache = null;\n\t\t\tthis._syncRegistry?._injectionGrammars?.delete(e.scopeName);\n\t\t\tthis._syncRegistry?._grammars?.delete(e.scopeName);\n\t\t\tthis.loadLanguage(this._langMap.get(e.name));\n\t\t}\n\t}\n\tdispose() {\n\t\tsuper.dispose();\n\t\tthis._resolvedThemes.clear();\n\t\tthis._resolvedGrammars.clear();\n\t\tthis._langMap.clear();\n\t\tthis._langGraph.clear();\n\t\tthis._loadedThemesCache = null;\n\t}\n\tloadLanguages(langs) {\n\t\tfor (const lang of langs) this.resolveEmbeddedLanguages(lang);\n\t\tconst langsGraphArray = [...this._langGraph.entries()];\n\t\tconst missingLangs = langsGraphArray.filter(([_, lang]) => !lang);\n\t\tif (missingLangs.length) {\n\t\t\tconst dependents = langsGraphArray.filter(([_, lang]) => {\n\t\t\t\tif (!lang) return false;\n\t\t\t\treturn (lang.embeddedLanguages || lang.embeddedLangs)?.some((l) => missingLangs.map(([name]) => name).includes(l));\n\t\t\t}).filter((lang) => !missingLangs.includes(lang));\n\t\t\tthrow new ShikiError(`Missing languages ${missingLangs.map(([name]) => `\\`${name}\\``).join(\", \")}, required by ${dependents.map(([name]) => `\\`${name}\\``).join(\", \")}`);\n\t\t}\n\t\tfor (const [_, lang] of langsGraphArray) this._resolver.addLanguage(lang);\n\t\tfor (const [_, lang] of langsGraphArray) this.loadLanguage(lang);\n\t}\n\tgetLoadedLanguages() {\n\t\tif (!this._loadedLanguagesCache) this._loadedLanguagesCache = [.../* @__PURE__ */ new Set([...this._resolvedGrammars.keys(), ...Object.keys(this._alias)])];\n\t\treturn this._loadedLanguagesCache;\n\t}\n\tresolveEmbeddedLanguages(lang) {\n\t\tthis._langMap.set(lang.name, lang);\n\t\tthis._langGraph.set(lang.name, lang);\n\t\tconst embedded = lang.embeddedLanguages ?? lang.embeddedLangs;\n\t\tif (embedded) for (const embeddedLang of embedded) this._langGraph.set(embeddedLang, this._langMap.get(embeddedLang));\n\t}\n};\n//#endregion\n//#region src/textmate/resolver.ts\nvar Resolver = class {\n\t_langs = /* @__PURE__ */ new Map();\n\t_scopeToLang = /* @__PURE__ */ new Map();\n\t_injections = /* @__PURE__ */ new Map();\n\t_onigLib;\n\tconstructor(engine, langs) {\n\t\tthis._onigLib = {\n\t\t\tcreateOnigScanner: (patterns) => engine.createScanner(patterns),\n\t\t\tcreateOnigString: (s) => engine.createString(s)\n\t\t};\n\t\tlangs.forEach((i) => this.addLanguage(i));\n\t}\n\tget onigLib() {\n\t\treturn this._onigLib;\n\t}\n\tgetLangRegistration(langIdOrAlias) {\n\t\treturn this._langs.get(langIdOrAlias);\n\t}\n\tloadGrammar(scopeName) {\n\t\treturn this._scopeToLang.get(scopeName);\n\t}\n\taddLanguage(l) {\n\t\tthis._langs.set(l.name, l);\n\t\tif (l.aliases) l.aliases.forEach((a) => {\n\t\t\tthis._langs.set(a, l);\n\t\t});\n\t\tthis._scopeToLang.set(l.scopeName, l);\n\t\tif (l.injectTo) l.injectTo.forEach((i) => {\n\t\t\tif (!this._injections.get(i)) this._injections.set(i, []);\n\t\t\tthis._injections.get(i).push(l.scopeName);\n\t\t});\n\t}\n\tgetInjections(scopeName) {\n\t\tconst scopeParts = scopeName.split(\".\");\n\t\tlet injections = [];\n\t\tfor (let i = 1; i <= scopeParts.length; i++) {\n\t\t\tconst subScopeName = scopeParts.slice(0, i).join(\".\");\n\t\t\tinjections = [...injections, ...this._injections.get(subScopeName) || []];\n\t\t}\n\t\treturn injections;\n\t}\n};\n//#endregion\n//#region src/constructors/primitive.ts\nlet instancesCount = 0;\n/**\n* Get the minimal shiki primitive instance.\n*\n* Requires to provide the engine and all themes and languages upfront.\n*/\nfunction createShikiPrimitive(options) {\n\tinstancesCount += 1;\n\tif (options.warnings !== false && instancesCount >= 10 && instancesCount % 10 === 0) 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\tlet isDisposed = false;\n\tif (!options.engine) throw new ShikiError(\"`engine` option is required for synchronous mode\");\n\tconst langs = (options.langs || []).flat(1);\n\tconst themes = (options.themes || []).flat(1).map(normalizeTheme);\n\tconst _registry = new Registry(new Resolver(options.engine, langs), themes, langs, options.langAlias);\n\tlet _lastTheme;\n\tfunction resolveLangAlias$1(name) {\n\t\treturn resolveLangAlias(name, options.langAlias);\n\t}\n\tfunction getLanguage(name) {\n\t\tensureNotDisposed();\n\t\tconst _lang = _registry.getGrammar(typeof name === \"string\" ? name : name.name);\n\t\tif (!_lang) throw new ShikiError(`Language \\`${name}\\` not found, you may need to load it first`);\n\t\treturn _lang;\n\t}\n\tfunction getTheme(name) {\n\t\tif (name === \"none\") return {\n\t\t\tbg: \"\",\n\t\t\tfg: \"\",\n\t\t\tname: \"none\",\n\t\t\tsettings: [],\n\t\t\ttype: \"dark\"\n\t\t};\n\t\tensureNotDisposed();\n\t\tconst _theme = _registry.getTheme(name);\n\t\tif (!_theme) throw new ShikiError(`Theme \\`${name}\\` not found, you may need to load it first`);\n\t\treturn _theme;\n\t}\n\tfunction setTheme(name) {\n\t\tensureNotDisposed();\n\t\tconst theme = getTheme(name);\n\t\tif (_lastTheme !== name) {\n\t\t\t_registry.setTheme(theme);\n\t\t\t_lastTheme = name;\n\t\t}\n\t\treturn {\n\t\t\ttheme,\n\t\t\tcolorMap: _registry.getColorMap()\n\t\t};\n\t}\n\tfunction getLoadedThemes() {\n\t\tensureNotDisposed();\n\t\treturn _registry.getLoadedThemes();\n\t}\n\tfunction getLoadedLanguages() {\n\t\tensureNotDisposed();\n\t\treturn _registry.getLoadedLanguages();\n\t}\n\tfunction loadLanguageSync(...langs) {\n\t\tensureNotDisposed();\n\t\t_registry.loadLanguages(langs.flat(1));\n\t}\n\tasync function loadLanguage(...langs) {\n\t\treturn loadLanguageSync(await resolveLangs(langs));\n\t}\n\tfunction loadThemeSync(...themes) {\n\t\tensureNotDisposed();\n\t\tfor (const theme of themes.flat(1)) _registry.loadTheme(theme);\n\t}\n\tasync function loadTheme(...themes) {\n\t\tensureNotDisposed();\n\t\treturn loadThemeSync(await resolveThemes(themes));\n\t}\n\tfunction ensureNotDisposed() {\n\t\tif (isDisposed) throw new ShikiError(\"Shiki instance has been disposed\");\n\t}\n\tfunction dispose() {\n\t\tif (isDisposed) return;\n\t\tisDisposed = true;\n\t\t_registry.dispose();\n\t\tinstancesCount -= 1;\n\t}\n\treturn {\n\t\tsetTheme,\n\t\tgetTheme,\n\t\tgetLanguage,\n\t\tgetLoadedThemes,\n\t\tgetLoadedLanguages,\n\t\tresolveLangAlias: resolveLangAlias$1,\n\t\tloadLanguage,\n\t\tloadLanguageSync,\n\t\tloadTheme,\n\t\tloadThemeSync,\n\t\tdispose,\n\t\t[Symbol.dispose]: dispose\n\t};\n}\n/**\n* @deprecated Use `createShikiPrimitive` instead.\n*/\nconst createShikiInternalSync = createShikiPrimitive;\n//#endregion\n//#region src/constructors/async.ts\n/**\n* Get the minimal shiki primitive instance.\n*/\nasync function createShikiPrimitiveAsync(options) {\n\tif (!options.engine) console.warn(\"`engine` option is required. Use `createOnigurumaEngine` or `createJavaScriptRegexEngine` to create an engine.\");\n\tconst [themes, langs, engine] = await Promise.all([\n\t\tresolveThemes(options.themes || []),\n\t\tresolveLangs(options.langs || []),\n\t\toptions.engine\n\t]);\n\treturn createShikiPrimitive({\n\t\t...options,\n\t\tthemes,\n\t\tlangs,\n\t\tengine\n\t});\n}\n/**\n* @deprecated Use `createShikiPrimitiveAsync` instead.\n*/\nconst createShikiInternal = createShikiPrimitiveAsync;\n//#endregion\n//#region src/textmate/grammar-state.ts\nconst _grammarStateMap = /* @__PURE__ */ new WeakMap();\nfunction setLastGrammarStateToMap(keys, state) {\n\t_grammarStateMap.set(keys, state);\n}\nfunction getLastGrammarStateFromMap(keys) {\n\treturn _grammarStateMap.get(keys);\n}\n/**\n* GrammarState is a special reference object that holds the state of a grammar.\n*\n* It's used to highlight code snippets that are part of the target language.\n*/\nvar GrammarState = class GrammarState {\n\t/**\n\t* Theme to Stack mapping\n\t*/\n\t_stacks = {};\n\tlang;\n\tget themes() {\n\t\treturn Object.keys(this._stacks);\n\t}\n\tget theme() {\n\t\treturn this.themes[0];\n\t}\n\tget _stack() {\n\t\treturn this._stacks[this.theme];\n\t}\n\t/**\n\t* Static method to create a initial grammar state.\n\t*/\n\tstatic initial(lang, themes) {\n\t\treturn new GrammarState(Object.fromEntries(toArray(themes).map((theme) => [theme, INITIAL])), lang);\n\t}\n\tconstructor(...args) {\n\t\tif (args.length === 2) {\n\t\t\tconst [stacksMap, lang] = args;\n\t\t\tthis.lang = lang;\n\t\t\tthis._stacks = stacksMap;\n\t\t} else {\n\t\t\tconst [stack, lang, theme] = args;\n\t\t\tthis.lang = lang;\n\t\t\tthis._stacks = { [theme]: stack };\n\t\t}\n\t}\n\t/**\n\t* Get the internal stack object.\n\t* @internal\n\t*/\n\tgetInternalStack(theme = this.theme) {\n\t\treturn this._stacks[theme];\n\t}\n\tgetScopes(theme = this.theme) {\n\t\treturn getScopes(this._stacks[theme]);\n\t}\n\ttoJSON() {\n\t\treturn {\n\t\t\tlang: this.lang,\n\t\t\ttheme: this.theme,\n\t\t\tthemes: this.themes,\n\t\t\tscopes: this.getScopes()\n\t\t};\n\t}\n};\nfunction getScopes(stack) {\n\tconst scopes = [];\n\tconst visited = /* @__PURE__ */ new Set();\n\tfunction pushScope(stack) {\n\t\tif (visited.has(stack)) return;\n\t\tvisited.add(stack);\n\t\tconst name = stack?.nameScopesList?.scopeName;\n\t\tif (name) scopes.push(name);\n\t\tif (stack.parent) pushScope(stack.parent);\n\t}\n\tpushScope(stack);\n\treturn scopes;\n}\nfunction getGrammarStack(state, theme) {\n\tif (!(state instanceof GrammarState)) throw new ShikiError(\"Invalid grammar state\");\n\treturn state.getInternalStack(theme);\n}\n//#endregion\n//#region src/highlight/code-to-tokens-base.ts\nconst RE_COMMA = /,/;\nconst RE_SPACE = / /;\n/**\n* Code to tokens, with a simple theme.\n*/\nfunction codeToTokensBase(primitive, code, options = {}) {\n\tconst { theme: themeName = primitive.getLoadedThemes()[0] } = options;\n\tif (isPlainLang(primitive.resolveLangAlias(options.lang || \"text\")) || isNoneTheme(themeName)) return splitLines(code).map((line) => [{\n\t\tcontent: line[0],\n\t\toffset: line[1]\n\t}]);\n\tconst { theme, colorMap } = primitive.setTheme(themeName);\n\tconst _grammar = primitive.getLanguage(options.lang || \"text\");\n\tif (options.grammarState) {\n\t\tif (options.grammarState.lang !== _grammar.name) throw new ShikiError(`Grammar state language \"${options.grammarState.lang}\" does not match highlight language \"${_grammar.name}\"`);\n\t\tif (!options.grammarState.themes.includes(theme.name)) throw new ShikiError(`Grammar state themes \"${options.grammarState.themes}\" do not contain highlight theme \"${theme.name}\"`);\n\t}\n\treturn tokenizeWithTheme(code, _grammar, theme, colorMap, options);\n}\nfunction getLastGrammarState(...args) {\n\tif (args.length === 2) return getLastGrammarStateFromMap(args[1]);\n\tconst [primitive, code, options = {}] = args;\n\tconst { lang = \"text\", theme: themeName = primitive.getLoadedThemes()[0] } = options;\n\tif (isPlainLang(lang) || isNoneTheme(themeName)) throw new ShikiError(\"Plain language does not have grammar state\");\n\tif (lang === \"ansi\") throw new ShikiError(\"ANSI language does not have grammar state\");\n\tconst { theme, colorMap } = primitive.setTheme(themeName);\n\tconst _grammar = primitive.getLanguage(lang);\n\treturn new GrammarState(_tokenizeWithTheme(code, _grammar, theme, colorMap, options).stateStack, _grammar.name, theme.name);\n}\nfunction tokenizeWithTheme(code, grammar, theme, colorMap, options) {\n\tconst result = _tokenizeWithTheme(code, grammar, theme, colorMap, options);\n\tconst grammarState = new GrammarState(result.stateStack, grammar.name, theme.name);\n\tsetLastGrammarStateToMap(result.tokens, grammarState);\n\treturn result.tokens;\n}\nfunction _tokenizeWithTheme(code, grammar, theme, colorMap, options) {\n\tconst colorReplacements = resolveColorReplacements(theme, options);\n\tconst { tokenizeMaxLineLength = 0, tokenizeTimeLimit = 500, includeExplanation = false } = options;\n\tconst lines = splitLines(code);\n\tlet stateStack = options.grammarState ? getGrammarStack(options.grammarState, theme.name) ?? INITIAL : options.grammarContextCode != null ? _tokenizeWithTheme(options.grammarContextCode, grammar, theme, colorMap, {\n\t\t...options,\n\t\tgrammarState: void 0,\n\t\tgrammarContextCode: void 0\n\t}).stateStack : INITIAL;\n\tlet actual = [];\n\tconst final = [];\n\tfor (let i = 0, len = lines.length; i < len; i++) {\n\t\tconst [line, lineOffset] = lines[i];\n\t\tif (line === \"\") {\n\t\t\tactual = [];\n\t\t\tfinal.push([]);\n\t\t\tcontinue;\n\t\t}\n\t\tif (tokenizeMaxLineLength > 0 && line.length >= tokenizeMaxLineLength) {\n\t\t\tactual = [];\n\t\t\tfinal.push([{\n\t\t\t\tcontent: line,\n\t\t\t\toffset: lineOffset,\n\t\t\t\tcolor: \"\",\n\t\t\t\tfontStyle: 0\n\t\t\t}]);\n\t\t\tcontinue;\n\t\t}\n\t\tlet resultWithScopes;\n\t\tlet tokensWithScopes;\n\t\tlet tokensWithScopesIndex;\n\t\tif (includeExplanation && includeExplanation !== \"tokenType\") {\n\t\t\tresultWithScopes = grammar.tokenizeLine(line, stateStack, tokenizeTimeLimit);\n\t\t\ttokensWithScopes = resultWithScopes.tokens;\n\t\t\ttokensWithScopesIndex = 0;\n\t\t}\n\t\tconst result = grammar.tokenizeLine2(line, stateStack, tokenizeTimeLimit);\n\t\tconst tokensLength = result.tokens.length / 2;\n\t\tfor (let j = 0; j < tokensLength; j++) {\n\t\t\tconst startIndex = result.tokens[2 * j];\n\t\t\tconst nextStartIndex = j + 1 < tokensLength ? result.tokens[2 * j + 2] : line.length;\n\t\t\tif (startIndex === nextStartIndex) continue;\n\t\t\tconst metadata = result.tokens[2 * j + 1];\n\t\t\tconst color = applyColorReplacements(colorMap[EncodedTokenMetadata.getForeground(metadata)], colorReplacements);\n\t\t\tconst fontStyle = EncodedTokenMetadata.getFontStyle(metadata);\n\t\t\tconst token = {\n\t\t\t\tcontent: line.substring(startIndex, nextStartIndex),\n\t\t\t\toffset: lineOffset + startIndex,\n\t\t\t\tcolor,\n\t\t\t\tfontStyle\n\t\t\t};\n\t\t\tif (includeExplanation === \"tokenType\") token.type = EncodedTokenMetadata.getTokenType(metadata);\n\t\t\telse if (includeExplanation) {\n\t\t\t\tconst themeSettingsSelectors = [];\n\t\t\t\tif (includeExplanation !== \"scopeName\") for (const setting of theme.settings) {\n\t\t\t\t\tlet selectors;\n\t\t\t\t\tswitch (typeof setting.scope) {\n\t\t\t\t\t\tcase \"string\":\n\t\t\t\t\t\t\tselectors = setting.scope.split(RE_COMMA).map((scope) => scope.trim());\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\tselectors = setting.scope;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault: continue;\n\t\t\t\t\t}\n\t\t\t\t\tthemeSettingsSelectors.push({\n\t\t\t\t\t\tsettings: setting,\n\t\t\t\t\t\tselectors: selectors.map((selector) => selector.split(RE_SPACE))\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\ttoken.explanation = [];\n\t\t\t\tlet offset = 0;\n\t\t\t\twhile (startIndex + offset < nextStartIndex) {\n\t\t\t\t\tconst tokenWithScopes = tokensWithScopes[tokensWithScopesIndex];\n\t\t\t\t\tconst tokenWithScopesText = line.substring(tokenWithScopes.startIndex, tokenWithScopes.endIndex);\n\t\t\t\t\toffset += tokenWithScopesText.length;\n\t\t\t\t\ttoken.explanation.push({\n\t\t\t\t\t\tcontent: tokenWithScopesText,\n\t\t\t\t\t\tscopes: includeExplanation === \"scopeName\" ? explainThemeScopesNameOnly(tokenWithScopes.scopes) : explainThemeScopesFull(themeSettingsSelectors, tokenWithScopes.scopes)\n\t\t\t\t\t});\n\t\t\t\t\ttokensWithScopesIndex += 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\tactual.push(token);\n\t\t}\n\t\tfinal.push(actual);\n\t\tactual = [];\n\t\tstateStack = result.ruleStack;\n\t}\n\treturn {\n\t\ttokens: final,\n\t\tstateStack\n\t};\n}\nfunction explainThemeScopesNameOnly(scopes) {\n\treturn scopes.map((scope) => ({ scopeName: scope }));\n}\nfunction explainThemeScopesFull(themeSelectors, scopes) {\n\tconst result = [];\n\tfor (let i = 0, len = scopes.length; i < len; i++) {\n\t\tconst scope = scopes[i];\n\t\tresult[i] = {\n\t\t\tscopeName: scope,\n\t\t\tthemeMatches: explainThemeScope(themeSelectors, scope, scopes.slice(0, i))\n\t\t};\n\t}\n\treturn result;\n}\nfunction matchesOne(selector, scope) {\n\treturn selector === scope || scope.substring(0, selector.length) === selector && scope[selector.length] === \".\";\n}\nfunction matches(selectors, scope, parentScopes) {\n\tif (!matchesOne(selectors.at(-1), scope)) return false;\n\tlet selectorParentIndex = selectors.length - 2;\n\tlet parentIndex = parentScopes.length - 1;\n\twhile (selectorParentIndex >= 0 && parentIndex >= 0) {\n\t\tif (matchesOne(selectors[selectorParentIndex], parentScopes[parentIndex])) selectorParentIndex -= 1;\n\t\tparentIndex -= 1;\n\t}\n\tif (selectorParentIndex === -1) return true;\n\treturn false;\n}\nfunction explainThemeScope(themeSettingsSelectors, scope, parentScopes) {\n\tconst result = [];\n\tfor (const { selectors, settings } of themeSettingsSelectors) for (const selectorPieces of selectors) if (matches(selectorPieces, scope, parentScopes)) {\n\t\tresult.push(settings);\n\t\tbreak;\n\t}\n\treturn result;\n}\n//#endregion\n//#region src/highlight/code-to-tokens-themes.ts\n/**\n* Get tokens with multiple themes\n*/\nfunction codeToTokensWithThemes(primitive, code, options, codeToTokensBaseFn = codeToTokensBase) {\n\tconst themes = Object.entries(options.themes).filter((i) => i[1]).map((i) => ({\n\t\tcolor: i[0],\n\t\ttheme: i[1]\n\t}));\n\tconst themedTokens = themes.map((t) => {\n\t\tconst tokens = codeToTokensBaseFn(primitive, code, {\n\t\t\t...options,\n\t\t\ttheme: t.theme\n\t\t});\n\t\treturn {\n\t\t\ttokens,\n\t\t\tstate: getLastGrammarStateFromMap(tokens),\n\t\t\ttheme: typeof t.theme === \"string\" ? t.theme : t.theme.name\n\t\t};\n\t});\n\tconst tokens = alignThemesTokenization(...themedTokens.map((i) => i.tokens));\n\tconst mergedTokens = tokens[0].map((line, lineIdx) => line.map((_token, tokenIdx) => {\n\t\tconst mergedToken = {\n\t\t\tcontent: _token.content,\n\t\t\tvariants: {},\n\t\t\toffset: _token.offset\n\t\t};\n\t\tif (\"includeExplanation\" in options && options.includeExplanation) mergedToken.explanation = _token.explanation;\n\t\ttokens.forEach((t, themeIdx) => {\n\t\t\tconst { content: _, explanation: __, offset: ___, ...styles } = t[lineIdx][tokenIdx];\n\t\t\tmergedToken.variants[themes[themeIdx].color] = styles;\n\t\t});\n\t\treturn mergedToken;\n\t}));\n\tconst mergedGrammarState = themedTokens[0].state ? new GrammarState(Object.fromEntries(themedTokens.map((s) => [s.theme, s.state?.getInternalStack(s.theme)])), themedTokens[0].state.lang) : void 0;\n\tif (mergedGrammarState) setLastGrammarStateToMap(mergedTokens, mergedGrammarState);\n\treturn mergedTokens;\n}\n/**\n* Break tokens from multiple themes into same tokenization.\n*\n* For example, given two themes that tokenize `console.log(\"hello\")` as:\n*\n* - `console . log (\" hello \")` (6 tokens)\n* - `console .log ( \"hello\" )` (5 tokens)\n*\n* This function will return:\n*\n* - `console . log ( \" hello \" )` (8 tokens)\n* - `console . log ( \" hello \" )` (8 tokens)\n*/\nfunction alignThemesTokenization(...themes) {\n\tconst outThemes = themes.map(() => []);\n\tconst count = themes.length;\n\tfor (let i = 0; i < themes[0].length; i++) {\n\t\tconst lines = themes.map((t) => t[i]);\n\t\tconst outLines = outThemes.map(() => []);\n\t\toutThemes.forEach((t, i) => t.push(outLines[i]));\n\t\tconst indexes = lines.map(() => 0);\n\t\tconst current = lines.map((l) => l[0]);\n\t\twhile (current.every((t) => t)) {\n\t\t\tconst minLength = Math.min(...current.map((t) => t.content.length));\n\t\t\tfor (let n = 0; n < count; n++) {\n\t\t\t\tconst token = current[n];\n\t\t\t\tif (token.content.length === minLength) {\n\t\t\t\t\toutLines[n].push(token);\n\t\t\t\t\tindexes[n] += 1;\n\t\t\t\t\tcurrent[n] = lines[n][indexes[n]];\n\t\t\t\t} else {\n\t\t\t\t\toutLines[n].push({\n\t\t\t\t\t\t...token,\n\t\t\t\t\t\tcontent: token.content.slice(0, minLength)\n\t\t\t\t\t});\n\t\t\t\t\tcurrent[n] = {\n\t\t\t\t\t\t...token,\n\t\t\t\t\t\tcontent: token.content.slice(minLength),\n\t\t\t\t\t\toffset: token.offset + minLength\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn outThemes;\n}\n//#endregion\nexport { GrammarState, Registry, Resolver, alignThemesTokenization, applyColorReplacements, codeToTokensBase, codeToTokensWithThemes, createShikiInternal, createShikiInternalSync, createShikiPrimitive, createShikiPrimitiveAsync, getGrammarStack, getLastGrammarState, getLastGrammarStateFromMap, isNoneTheme, isPlainLang, isSpecialLang, isSpecialTheme, normalizeGetter, normalizeTheme, resolveColorReplacements, resolveLangAlias, resolveLangs, resolveThemes, setLastGrammarStateToMap, splitLines, toArray, tokenizeWithTheme };\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 alpha: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n blocking: spaceSeparated,\n capture: null,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n closedBy: null,\n colorSpace: null,\n cols: number,\n colSpan: number,\n command: null,\n commandFor: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n fetchPriority: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: overloadedBoolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inert: boolean,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeToggle: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n popover: null,\n popoverTarget: null,\n popoverTargetAction: null,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shadowRootClonable: boolean,\n shadowRootCustomElementRegistry: boolean,\n shadowRootDelegatesFocus: boolean,\n shadowRootMode: null,\n shadowRootSerializable: boolean,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n writingSuggestions: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // `<object>`. List of URIs to archives\n axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n background: null, // `<body>`. Use CSS `background-image` instead\n bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n border: number, // `<table>`. Use CSS `border-width` instead,\n borderColor: null, // `<table>`. Use CSS `border-color` instead,\n bottomMargin: number, // `<body>`\n cellPadding: null, // `<table>`\n cellSpacing: null, // `<table>`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // `<object>`\n clear: null, // `<br>`. Use CSS `clear` instead\n code: null, // `<object>`\n codeBase: null, // `<object>`\n codeType: null, // `<object>`\n color: null, // `<font>` and `<hr>`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // `<object>`\n event: null, // `<script>`\n face: null, // `<font>`. Use CSS instead\n frame: null, // `<table>`\n frameBorder: null, // `<iframe>`. Use CSS `border` instead\n hSpace: number, // `<img>` and `<object>`\n leftMargin: number, // `<body>`\n link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n lowSrc: null, // `<img>`. Use a `<picture>`\n marginHeight: number, // `<body>`\n marginWidth: number, // `<body>`\n noResize: boolean, // `<frame>`\n noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n noWrap: boolean, // `<td>` and `<th>`\n object: null, // `<applet>`\n profile: null, // `<head>`\n prompt: null, // `<isindex>`\n rev: null, // `<link>`\n rightMargin: number, // `<body>`\n rules: null, // `<table>`\n scheme: null, // `<meta>`\n scrolling: booleanish, // `<frame>`. Use overflow in the child context\n standby: null, // `<object>`\n summary: null, // `<table>`\n text: null, // `<body>`. Use CSS `color` instead\n topMargin: number, // `<body>`\n valueType: null, // `<param>`\n version: null, // `<html>`. Use a doctype.\n vAlign: null, // Several. Use CSS `vertical-align` instead\n vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n vSpace: number, // `<img>` and `<object>`\n\n // Non-standard Properties.\n allowTransparency: null,\n autoCorrect: null,\n autoSave: null,\n credentialless: boolean,\n disablePictureInPicture: boolean,\n disableRemotePlayback: boolean,\n exportParts: commaSeparated,\n part: spaceSeparated,\n prefix: null,\n property: null,\n results: number,\n security: null,\n unselectable: null\n },\n space: 'html',\n transform: caseInsensitiveTransform\n})\n","import {caseSensitiveTransform} from './util/case-sensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n boolean,\n commaOrSpaceSeparated,\n commaSeparated,\n number,\n spaceSeparated\n} from './util/types.js'\n\nexport const svg = create({\n attributes: {\n accentHeight: 'accent-height',\n alignmentBaseline: 'alignment-baseline',\n arabicForm: 'arabic-form',\n baselineShift: 'baseline-shift',\n capHeight: 'cap-height',\n className: 'class',\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n crossOrigin: 'crossorigin',\n dataType: 'datatype',\n dominantBaseline: 'dominant-baseline',\n enableBackground: 'enable-background',\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n hrefLang: 'hreflang',\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n horizOriginY: 'horiz-origin-y',\n imageRendering: 'image-rendering',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n maskType: 'mask-type',\n navDown: 'nav-down',\n navDownLeft: 'nav-down-left',\n navDownRight: 'nav-down-right',\n navLeft: 'nav-left',\n navNext: 'nav-next',\n navPrev: 'nav-prev',\n navRight: 'nav-right',\n navUp: 'nav-up',\n navUpLeft: 'nav-up-left',\n navUpRight: 'nav-up-right',\n onAbort: 'onabort',\n onActivate: 'onactivate',\n onAfterPrint: 'onafterprint',\n onBeforePrint: 'onbeforeprint',\n onBegin: 'onbegin',\n onCancel: 'oncancel',\n onCanPlay: 'oncanplay',\n onCanPlayThrough: 'oncanplaythrough',\n onChange: 'onchange',\n onClick: 'onclick',\n onClose: 'onclose',\n onCopy: 'oncopy',\n onCueChange: 'oncuechange',\n onCut: 'oncut',\n onDblClick: 'ondblclick',\n onDrag: 'ondrag',\n onDragEnd: 'ondragend',\n onDragEnter: 'ondragenter',\n onDragExit: 'ondragexit',\n onDragLeave: 'ondragleave',\n onDragOver: 'ondragover',\n onDragStart: 'ondragstart',\n onDrop: 'ondrop',\n onDurationChange: 'ondurationchange',\n onEmptied: 'onemptied',\n onEnd: 'onend',\n onEnded: 'onended',\n onError: 'onerror',\n onFocus: 'onfocus',\n onFocusIn: 'onfocusin',\n onFocusOut: 'onfocusout',\n onHashChange: 'onhashchange',\n onInput: 'oninput',\n onInvalid: 'oninvalid',\n onKeyDown: 'onkeydown',\n onKeyPress: 'onkeypress',\n onKeyUp: 'onkeyup',\n onLoad: 'onload',\n onLoadedData: 'onloadeddata',\n onLoadedMetadata: 'onloadedmetadata',\n onLoadStart: 'onloadstart',\n onMessage: 'onmessage',\n onMouseDown: 'onmousedown',\n onMouseEnter: 'onmouseenter',\n onMouseLeave: 'onmouseleave',\n onMouseMove: 'onmousemove',\n onMouseOut: 'onmouseout',\n onMouseOver: 'onmouseover',\n onMouseUp: 'onmouseup',\n onMouseWheel: 'onmousewheel',\n onOffline: 'onoffline',\n onOnline: 'ononline',\n onPageHide: 'onpagehide',\n onPageShow: 'onpageshow',\n onPaste: 'onpaste',\n onPause: 'onpause',\n onPlay: 'onplay',\n onPlaying: 'onplaying',\n onPopState: 'onpopstate',\n onProgress: 'onprogress',\n onRateChange: 'onratechange',\n onRepeat: 'onrepeat',\n onReset: 'onreset',\n onResize: 'onresize',\n onScroll: 'onscroll',\n onSeeked: 'onseeked',\n onSeeking: 'onseeking',\n onSelect: 'onselect',\n onShow: 'onshow',\n onStalled: 'onstalled',\n onStorage: 'onstorage',\n onSubmit: 'onsubmit',\n onSuspend: 'onsuspend',\n onTimeUpdate: 'ontimeupdate',\n onToggle: 'ontoggle',\n onUnload: 'onunload',\n onVolumeChange: 'onvolumechange',\n onWaiting: 'onwaiting',\n onZoom: 'onzoom',\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pointerEvents: 'pointer-events',\n referrerPolicy: 'referrerpolicy',\n renderingIntent: 'rendering-intent',\n shapeRendering: 'shape-rendering',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n strokeDashArray: 'stroke-dasharray',\n strokeDashOffset: 'stroke-dashoffset',\n strokeLineCap: 'stroke-linecap',\n strokeLineJoin: 'stroke-linejoin',\n strokeMiterLimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n tabIndex: 'tabindex',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n transformOrigin: 'transform-origin',\n typeOf: 'typeof',\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n vectorEffect: 'vector-effect',\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n xHeight: 'x-height',\n // These were camelcased in Tiny. Now lowercased in SVG 2\n playbackOrder: 'playbackorder',\n timelineBegin: 'timelinebegin'\n },\n properties: {\n about: commaOrSpaceSeparated,\n accentHeight: number,\n accumulate: null,\n additive: null,\n alignmentBaseline: null,\n alphabetic: number,\n amplitude: number,\n arabicForm: null,\n ascent: number,\n attributeName: null,\n attributeType: null,\n azimuth: number,\n bandwidth: null,\n baselineShift: null,\n baseFrequency: null,\n baseProfile: null,\n bbox: null,\n begin: null,\n bias: number,\n by: null,\n calcMode: null,\n capHeight: number,\n className: spaceSeparated,\n clip: null,\n clipPath: null,\n clipPathUnits: null,\n clipRule: null,\n color: null,\n colorInterpolation: null,\n colorInterpolationFilters: null,\n colorProfile: null,\n colorRendering: null,\n content: null,\n contentScriptType: null,\n contentStyleType: null,\n crossOrigin: null,\n cursor: null,\n cx: null,\n cy: null,\n d: null,\n dataType: null,\n defaultAction: null,\n descent: number,\n diffuseConstant: number,\n direction: null,\n display: null,\n dur: null,\n divisor: number,\n dominantBaseline: null,\n download: boolean,\n dx: null,\n dy: null,\n edgeMode: null,\n editable: null,\n elevation: number,\n enableBackground: null,\n end: null,\n event: null,\n exponent: number,\n externalResourcesRequired: null,\n fill: null,\n fillOpacity: number,\n fillRule: null,\n filter: null,\n filterRes: null,\n filterUnits: null,\n floodColor: null,\n floodOpacity: null,\n focusable: null,\n focusHighlight: null,\n fontFamily: null,\n fontSize: null,\n fontSizeAdjust: null,\n fontStretch: null,\n fontStyle: null,\n fontVariant: null,\n fontWeight: null,\n format: null,\n fr: null,\n from: null,\n fx: null,\n fy: null,\n g1: commaSeparated,\n g2: commaSeparated,\n glyphName: commaSeparated,\n glyphOrientationHorizontal: null,\n glyphOrientationVertical: null,\n glyphRef: null,\n gradientTransform: null,\n gradientUnits: null,\n handler: null,\n hanging: number,\n hatchContentUnits: null,\n hatchUnits: null,\n height: null,\n href: null,\n hrefLang: null,\n horizAdvX: number,\n horizOriginX: number,\n horizOriginY: number,\n id: null,\n ideographic: number,\n imageRendering: null,\n initialVisibility: null,\n in: null,\n in2: null,\n intercept: number,\n k: number,\n k1: number,\n k2: number,\n k3: number,\n k4: number,\n kernelMatrix: commaOrSpaceSeparated,\n kernelUnitLength: null,\n keyPoints: null, // SEMI_COLON_SEPARATED\n keySplines: null, // SEMI_COLON_SEPARATED\n keyTimes: null, // SEMI_COLON_SEPARATED\n kerning: null,\n lang: null,\n lengthAdjust: null,\n letterSpacing: null,\n lightingColor: null,\n limitingConeAngle: number,\n local: null,\n markerEnd: null,\n markerMid: null,\n markerStart: null,\n markerHeight: null,\n markerUnits: null,\n markerWidth: null,\n mask: null,\n maskContentUnits: null,\n maskType: null,\n maskUnits: null,\n mathematical: null,\n max: null,\n media: null,\n mediaCharacterEncoding: null,\n mediaContentEncodings: null,\n mediaSize: number,\n mediaTime: null,\n method: null,\n min: null,\n mode: null,\n name: null,\n navDown: null,\n navDownLeft: null,\n navDownRight: null,\n navLeft: null,\n navNext: null,\n navPrev: null,\n navRight: null,\n navUp: null,\n navUpLeft: null,\n navUpRight: null,\n numOctaves: null,\n observer: null,\n offset: null,\n onAbort: null,\n onActivate: null,\n onAfterPrint: null,\n onBeforePrint: null,\n onBegin: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnd: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFocusIn: null,\n onFocusOut: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadStart: null,\n onMessage: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onMouseWheel: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRepeat: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onShow: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onZoom: null,\n opacity: null,\n operator: null,\n order: null,\n orient: null,\n orientation: null,\n origin: null,\n overflow: null,\n overlay: null,\n overlinePosition: number,\n overlineThickness: number,\n paintOrder: null,\n panose1: null,\n path: null,\n pathLength: number,\n patternContentUnits: null,\n patternTransform: null,\n patternUnits: null,\n phase: null,\n ping: spaceSeparated,\n pitch: null,\n playbackOrder: null,\n pointerEvents: null,\n points: null,\n pointsAtX: number,\n pointsAtY: number,\n pointsAtZ: number,\n preserveAlpha: null,\n preserveAspectRatio: null,\n primitiveUnits: null,\n propagate: null,\n property: commaOrSpaceSeparated,\n r: null,\n radius: null,\n referrerPolicy: null,\n refX: null,\n refY: null,\n rel: commaOrSpaceSeparated,\n rev: commaOrSpaceSeparated,\n renderingIntent: null,\n repeatCount: null,\n repeatDur: null,\n requiredExtensions: commaOrSpaceSeparated,\n requiredFeatures: commaOrSpaceSeparated,\n requiredFonts: commaOrSpaceSeparated,\n requiredFormats: commaOrSpaceSeparated,\n resource: null,\n restart: null,\n result: null,\n rotate: null,\n rx: null,\n ry: null,\n scale: null,\n seed: null,\n shapeRendering: null,\n side: null,\n slope: null,\n snapshotTime: null,\n specularConstant: number,\n specularExponent: number,\n spreadMethod: null,\n spacing: null,\n startOffset: null,\n stdDeviation: null,\n stemh: null,\n stemv: null,\n stitchTiles: null,\n stopColor: null,\n stopOpacity: null,\n strikethroughPosition: number,\n strikethroughThickness: number,\n string: null,\n stroke: null,\n strokeDashArray: commaOrSpaceSeparated,\n strokeDashOffset: null,\n strokeLineCap: null,\n strokeLineJoin: null,\n strokeMiterLimit: number,\n strokeOpacity: number,\n strokeWidth: null,\n style: null,\n surfaceScale: number,\n syncBehavior: null,\n syncBehaviorDefault: null,\n syncMaster: null,\n syncTolerance: null,\n syncToleranceDefault: null,\n systemLanguage: commaOrSpaceSeparated,\n tabIndex: number,\n tableValues: null,\n target: null,\n targetX: number,\n targetY: number,\n textAnchor: null,\n textDecoration: null,\n textRendering: null,\n textLength: null,\n timelineBegin: null,\n title: null,\n transformBehavior: null,\n type: null,\n typeOf: commaOrSpaceSeparated,\n to: null,\n transform: null,\n transformOrigin: null,\n u1: null,\n u2: null,\n underlinePosition: number,\n underlineThickness: number,\n unicode: null,\n unicodeBidi: null,\n unicodeRange: null,\n unitsPerEm: number,\n values: null,\n vAlphabetic: number,\n vMathematical: number,\n vectorEffect: null,\n vHanging: number,\n vIdeographic: number,\n version: null,\n vertAdvY: number,\n vertOriginX: number,\n vertOriginY: number,\n viewBox: null,\n viewTarget: null,\n visibility: null,\n width: null,\n widths: null,\n wordSpacing: null,\n writingMode: null,\n x: null,\n x1: null,\n x2: null,\n xChannelSelector: null,\n xHeight: number,\n y: null,\n y1: null,\n y2: null,\n yChannelSelector: null,\n z: null,\n zoomAndPan: null\n },\n space: 'svg',\n transform: caseSensitiveTransform\n})\n","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\";\nimport { ShikiError, applyColorReplacements, codeToTokensBase as codeToTokensBase$1, codeToTokensWithThemes, codeToTokensWithThemes as codeToTokensWithThemes$1, createShikiInternal, createShikiInternalSync, createShikiPrimitive, createShikiPrimitive as createShikiPrimitive$1, createShikiPrimitiveAsync, createShikiPrimitiveAsync as createShikiPrimitiveAsync$1, getLastGrammarState, getLastGrammarStateFromMap, isNoneTheme, isPlainLang, isSpecialLang, isSpecialTheme, normalizeGetter, normalizeTheme, resolveColorReplacements, setLastGrammarStateToMap, splitLines, splitLines as splitLines$1, toArray, tokenizeWithTheme } from \"@shikijs/primitive\";\nimport { FontStyle } from \"@shikijs/vscode-textmate\";\nimport { toHtml } from \"hast-util-to-html\";\nexport * from \"@shikijs/types\";\n//#region src/utils/hast.ts\nconst RE_WHITESPACE = /\\s+/g;\n/**\n* Utility to append class to a hast node\n*\n* If the `property.class` is a string, it will be splitted by space and converted to an array.\n*/\nfunction addClassToHast(node, className) {\n\tif (!className) return node;\n\tnode.properties ||= {};\n\tnode.properties.class ||= [];\n\tif (typeof node.properties.class === \"string\") node.properties.class = node.properties.class.split(RE_WHITESPACE);\n\tif (!Array.isArray(node.properties.class)) node.properties.class = [];\n\tconst targets = Array.isArray(className) ? className : className.split(RE_WHITESPACE);\n\tfor (const c of targets) if (c && !node.properties.class.includes(c)) node.properties.class.push(c);\n\treturn node;\n}\n//#endregion\n//#region src/utils/strings.ts\nconst RE_LANG_ATTR = /:?lang=[\"']([^\"']+)[\"']/g;\nconst RE_CODE_FENCE = /(?:```|~~~)([\\w-]+)/g;\nconst RE_LATEX_BEGIN = /\\\\begin\\{([\\w-]+)\\}/g;\nconst RE_SCRIPT_LANG = /<script\\s+(?:type|lang)=[\"']([^\"']+)[\"']/gi;\n/**\n* Creates a converter between index and position in a code block.\n*\n* Overflow/underflow are unchecked.\n*/\nfunction createPositionConverter(code) {\n\tconst lines = splitLines$1(code, true).map(([line]) => line);\n\tfunction indexToPos(index) {\n\t\tif (index === code.length) return {\n\t\t\tline: lines.length - 1,\n\t\t\tcharacter: lines.at(-1).length\n\t\t};\n\t\tlet character = index;\n\t\tlet line = 0;\n\t\tfor (const lineText of lines) {\n\t\t\tif (character < lineText.length) break;\n\t\t\tcharacter -= lineText.length;\n\t\t\tline++;\n\t\t}\n\t\treturn {\n\t\t\tline,\n\t\t\tcharacter\n\t\t};\n\t}\n\tfunction posToIndex(line, character) {\n\t\tlet index = 0;\n\t\tfor (let i = 0; i < line; i++) index += lines[i].length;\n\t\tindex += character;\n\t\treturn index;\n\t}\n\treturn {\n\t\tlines,\n\t\tindexToPos,\n\t\tposToIndex\n\t};\n}\n/**\n* Guess embedded languages from given code and highlighter.\n*\n* When highlighter is provided, only bundled languages will be included.\n*\n* @param code - The code string to analyze\n* @param _lang - The primary language of the code (currently unused)\n* @param highlighter - Optional highlighter instance to validate languages\n* @returns Array of detected language identifiers\n*\n* @example\n* ```ts\n* // Detects 'javascript' from Vue SFC\n* guessEmbeddedLanguages('<script lang=\"javascript\">')\n*\n* // Detects 'python' from markdown code block\n* guessEmbeddedLanguages('```python\\nprint(\"hi\")\\n```')\n* ```\n*/\nfunction guessEmbeddedLanguages(code, _lang, highlighter) {\n\tconst langs = /* @__PURE__ */ new Set();\n\tfor (const match of code.matchAll(RE_LANG_ATTR)) {\n\t\tconst lang = match[1].toLowerCase().trim();\n\t\tif (lang) langs.add(lang);\n\t}\n\tfor (const match of code.matchAll(RE_CODE_FENCE)) {\n\t\tconst lang = match[1].toLowerCase().trim();\n\t\tif (lang) langs.add(lang);\n\t}\n\tfor (const match of code.matchAll(RE_LATEX_BEGIN)) {\n\t\tconst lang = match[1].toLowerCase().trim();\n\t\tif (lang) langs.add(lang);\n\t}\n\tfor (const match of code.matchAll(RE_SCRIPT_LANG)) {\n\t\tconst fullType = match[1].toLowerCase().trim();\n\t\tconst lang = fullType.includes(\"/\") ? fullType.split(\"/\").pop() : fullType;\n\t\tif (lang) langs.add(lang);\n\t}\n\tif (!highlighter) return [...langs];\n\tconst bundle = highlighter.getBundledLanguages();\n\treturn [...langs].filter((l) => l && bundle[l]);\n}\nconst COLOR_KEYS = [\"color\", \"background-color\"];\n//#endregion\n//#region src/utils/tokens.ts\n/**\n* Split a token into multiple tokens by given offsets.\n*\n* The offsets are relative to the token, and should be sorted.\n*/\nfunction splitToken(token, offsets) {\n\tlet lastOffset = 0;\n\tconst tokens = [];\n\tfor (const offset of offsets) {\n\t\tif (offset > lastOffset) tokens.push({\n\t\t\t...token,\n\t\t\tcontent: token.content.slice(lastOffset, offset),\n\t\t\toffset: token.offset + lastOffset\n\t\t});\n\t\tlastOffset = offset;\n\t}\n\tif (lastOffset < token.content.length) tokens.push({\n\t\t...token,\n\t\tcontent: token.content.slice(lastOffset),\n\t\toffset: token.offset + lastOffset\n\t});\n\treturn tokens;\n}\n/**\n* Split 2D tokens array by given breakpoints.\n*/\nfunction splitTokens(tokens, breakpoints) {\n\tconst sorted = [...breakpoints instanceof Set ? breakpoints : new Set(breakpoints)].sort((a, b) => a - b);\n\tif (!sorted.length) return tokens;\n\treturn tokens.map((line) => {\n\t\treturn line.flatMap((token) => {\n\t\t\tconst breakpointsInToken = sorted.filter((i) => token.offset < i && i < token.offset + token.content.length).map((i) => i - token.offset).sort((a, b) => a - b);\n\t\t\tif (!breakpointsInToken.length) return token;\n\t\t\treturn splitToken(token, breakpointsInToken);\n\t\t});\n\t});\n}\nfunction flatTokenVariants(merged, variantsOrder, cssVariablePrefix, defaultColor, colorsRendering = \"css-vars\") {\n\tconst token = {\n\t\tcontent: merged.content,\n\t\texplanation: merged.explanation,\n\t\toffset: merged.offset\n\t};\n\tconst styles = variantsOrder.map((t) => getTokenStyleObject(merged.variants[t]));\n\tconst styleKeys = new Set(styles.flatMap((t) => Object.keys(t)));\n\tconst mergedStyles = {};\n\tconst varKey = (idx, key) => {\n\t\tconst keyName = key === \"color\" ? \"\" : key === \"background-color\" ? \"-bg\" : `-${key}`;\n\t\treturn cssVariablePrefix + variantsOrder[idx] + (key === \"color\" ? \"\" : keyName);\n\t};\n\tstyles.forEach((cur, idx) => {\n\t\tfor (const key of styleKeys) {\n\t\t\tconst value = cur[key] || \"inherit\";\n\t\t\tif (idx === 0 && defaultColor && COLOR_KEYS.includes(key)) if (defaultColor === \"light-dark()\" && styles.length > 1) {\n\t\t\t\tconst lightIndex = variantsOrder.findIndex((t) => t === \"light\");\n\t\t\t\tconst darkIndex = variantsOrder.findIndex((t) => t === \"dark\");\n\t\t\t\tif (lightIndex === -1 || darkIndex === -1) throw new ShikiError$1(\"When using `defaultColor: \\\"light-dark()\\\"`, you must provide both `light` and `dark` themes\");\n\t\t\t\tmergedStyles[key] = `light-dark(${styles[lightIndex][key] || \"inherit\"}, ${styles[darkIndex][key] || \"inherit\"})`;\n\t\t\t\tif (colorsRendering === \"css-vars\") mergedStyles[varKey(idx, key)] = value;\n\t\t\t} else mergedStyles[key] = value;\n\t\t\telse if (colorsRendering === \"css-vars\") mergedStyles[varKey(idx, key)] = value;\n\t\t}\n\t});\n\ttoken.htmlStyle = mergedStyles;\n\treturn token;\n}\nfunction getTokenStyleObject(token) {\n\tconst styles = {};\n\tif (token.color) styles.color = token.color;\n\tif (token.bgColor) styles[\"background-color\"] = token.bgColor;\n\tif (token.fontStyle) {\n\t\tif (token.fontStyle & FontStyle.Italic) styles[\"font-style\"] = \"italic\";\n\t\tif (token.fontStyle & FontStyle.Bold) styles[\"font-weight\"] = \"bold\";\n\t\tconst decorations = [];\n\t\tif (token.fontStyle & FontStyle.Underline) decorations.push(\"underline\");\n\t\tif (token.fontStyle & FontStyle.Strikethrough) decorations.push(\"line-through\");\n\t\tif (decorations.length) styles[\"text-decoration\"] = decorations.join(\" \");\n\t}\n\treturn styles;\n}\nfunction stringifyTokenStyle(token) {\n\tif (typeof token === \"string\") return token;\n\treturn Object.entries(token).map(([key, value]) => `${key}:${value}`).join(\";\");\n}\n//#endregion\n//#region src/transformer-decorations.ts\n/**\n* A built-in transformer to add decorations to the highlighted code.\n*/\nfunction transformerDecorations() {\n\tconst map = /* @__PURE__ */ new WeakMap();\n\tfunction getContext(shiki) {\n\t\tif (!map.has(shiki.meta)) {\n\t\t\tconst converter = createPositionConverter(shiki.source);\n\t\t\tfunction normalizePosition(p) {\n\t\t\t\tif (typeof p === \"number\") {\n\t\t\t\t\tif (p < 0 || p > shiki.source.length) throw new ShikiError$1(`Invalid decoration offset: ${p}. Code length: ${shiki.source.length}`);\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...converter.indexToPos(p),\n\t\t\t\t\t\toffset: p\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tconst line = converter.lines[p.line];\n\t\t\t\t\tif (line === void 0) throw new ShikiError$1(`Invalid decoration position ${JSON.stringify(p)}. Lines length: ${converter.lines.length}`);\n\t\t\t\t\tlet character = p.character;\n\t\t\t\t\tif (character < 0) character = line.length + character;\n\t\t\t\t\tif (character < 0 || character > line.length) throw new ShikiError$1(`Invalid decoration position ${JSON.stringify(p)}. Line ${p.line} length: ${line.length}`);\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...p,\n\t\t\t\t\t\tcharacter,\n\t\t\t\t\t\toffset: converter.posToIndex(p.line, character)\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst decorations = (shiki.options.decorations || []).map((d) => ({\n\t\t\t\t...d,\n\t\t\t\tstart: normalizePosition(d.start),\n\t\t\t\tend: normalizePosition(d.end)\n\t\t\t}));\n\t\t\tverifyIntersections(decorations);\n\t\t\tmap.set(shiki.meta, {\n\t\t\t\tdecorations,\n\t\t\t\tconverter,\n\t\t\t\tsource: shiki.source\n\t\t\t});\n\t\t}\n\t\treturn map.get(shiki.meta);\n\t}\n\treturn {\n\t\tname: \"shiki:decorations\",\n\t\ttokens(tokens) {\n\t\t\tif (!this.options.decorations?.length) return;\n\t\t\treturn splitTokens(tokens, getContext(this).decorations.flatMap((d) => [d.start.offset, d.end.offset]));\n\t\t},\n\t\tcode(codeEl) {\n\t\t\tif (!this.options.decorations?.length) return;\n\t\t\tconst ctx = getContext(this);\n\t\t\tconst lines = [...codeEl.children].filter((i) => i.type === \"element\" && i.tagName === \"span\");\n\t\t\tif (lines.length !== ctx.converter.lines.length) 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\t\t\tfunction applyLineSection(line, start, end, decoration) {\n\t\t\t\tconst lineEl = lines[line];\n\t\t\t\tlet text = \"\";\n\t\t\t\tlet startIndex = -1;\n\t\t\t\tlet endIndex = -1;\n\t\t\t\tif (start === 0) startIndex = 0;\n\t\t\t\tif (end === 0) endIndex = 0;\n\t\t\t\tif (end === Number.POSITIVE_INFINITY) endIndex = lineEl.children.length;\n\t\t\t\tif (startIndex === -1 || endIndex === -1) for (let i = 0; i < lineEl.children.length; i++) {\n\t\t\t\t\ttext += stringify(lineEl.children[i]);\n\t\t\t\t\tif (startIndex === -1 && text.length === start) startIndex = i + 1;\n\t\t\t\t\tif (endIndex === -1 && text.length === end) endIndex = i + 1;\n\t\t\t\t}\n\t\t\t\tif (startIndex === -1) throw new ShikiError$1(`Failed to find start index for decoration ${JSON.stringify(decoration.start)}`);\n\t\t\t\tif (endIndex === -1) throw new ShikiError$1(`Failed to find end index for decoration ${JSON.stringify(decoration.end)}`);\n\t\t\t\tconst children = lineEl.children.slice(startIndex, endIndex);\n\t\t\t\tif (!decoration.alwaysWrap && children.length === lineEl.children.length) applyDecoration(lineEl, decoration, \"line\");\n\t\t\t\telse if (!decoration.alwaysWrap && children.length === 1 && children[0].type === \"element\") applyDecoration(children[0], decoration, \"token\");\n\t\t\t\telse {\n\t\t\t\t\tconst wrapper = {\n\t\t\t\t\t\ttype: \"element\",\n\t\t\t\t\t\ttagName: \"span\",\n\t\t\t\t\t\tproperties: {},\n\t\t\t\t\t\tchildren\n\t\t\t\t\t};\n\t\t\t\t\tapplyDecoration(wrapper, decoration, \"wrapper\");\n\t\t\t\t\tlineEl.children.splice(startIndex, children.length, wrapper);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfunction applyLine(line, decoration) {\n\t\t\t\tlines[line] = applyDecoration(lines[line], decoration, \"line\");\n\t\t\t}\n\t\t\tfunction applyDecoration(el, decoration, type) {\n\t\t\t\tconst properties = decoration.properties || {};\n\t\t\t\tconst transform = decoration.transform || ((i) => i);\n\t\t\t\tel.tagName = decoration.tagName || \"span\";\n\t\t\t\tel.properties = {\n\t\t\t\t\t...el.properties,\n\t\t\t\t\t...properties,\n\t\t\t\t\tclass: el.properties.class\n\t\t\t\t};\n\t\t\t\tif (decoration.properties?.class) addClassToHast(el, decoration.properties.class);\n\t\t\t\tel = transform(el, type) || el;\n\t\t\t\treturn el;\n\t\t\t}\n\t\t\tconst lineApplies = [];\n\t\t\tconst sorted = ctx.decorations.sort((a, b) => b.start.offset - a.start.offset || a.end.offset - b.end.offset);\n\t\t\tfor (const decoration of sorted) {\n\t\t\t\tconst { start, end } = decoration;\n\t\t\t\tif (start.line === end.line) applyLineSection(start.line, start.character, end.character, decoration);\n\t\t\t\telse if (start.line < end.line) {\n\t\t\t\t\tapplyLineSection(start.line, start.character, Number.POSITIVE_INFINITY, decoration);\n\t\t\t\t\tfor (let i = start.line + 1; i < end.line; i++) lineApplies.unshift(() => applyLine(i, decoration));\n\t\t\t\t\tapplyLineSection(end.line, 0, end.character, decoration);\n\t\t\t\t}\n\t\t\t}\n\t\t\tlineApplies.forEach((i) => i());\n\t\t}\n\t};\n}\nfunction verifyIntersections(items) {\n\tfor (let i = 0; i < items.length; i++) {\n\t\tconst foo = items[i];\n\t\tif (foo.start.offset > foo.end.offset) throw new ShikiError$1(`Invalid decoration range: ${JSON.stringify(foo.start)} - ${JSON.stringify(foo.end)}`);\n\t\tfor (let j = i + 1; j < items.length; j++) {\n\t\t\tconst bar = items[j];\n\t\t\tconst isFooHasBarStart = foo.start.offset <= bar.start.offset && bar.start.offset < foo.end.offset;\n\t\t\tconst isFooHasBarEnd = foo.start.offset < bar.end.offset && bar.end.offset <= foo.end.offset;\n\t\t\tconst isBarHasFooStart = bar.start.offset <= foo.start.offset && foo.start.offset < bar.end.offset;\n\t\t\tconst isBarHasFooEnd = bar.start.offset < foo.end.offset && foo.end.offset <= bar.end.offset;\n\t\t\tif (isFooHasBarStart || isFooHasBarEnd || isBarHasFooStart || isBarHasFooEnd) {\n\t\t\t\tif (isFooHasBarStart && isFooHasBarEnd) continue;\n\t\t\t\tif (isBarHasFooStart && isBarHasFooEnd) continue;\n\t\t\t\tif (isBarHasFooStart && foo.start.offset === foo.end.offset) continue;\n\t\t\t\tif (isFooHasBarEnd && bar.start.offset === bar.end.offset) continue;\n\t\t\t\tthrow new ShikiError$1(`Decorations ${JSON.stringify(foo.start)} and ${JSON.stringify(bar.start)} intersect.`);\n\t\t\t}\n\t\t}\n\t}\n}\nfunction stringify(el) {\n\tif (el.type === \"text\") return el.value;\n\tif (el.type === \"element\") return el.children.map(stringify).join(\"\");\n\treturn \"\";\n}\n//#endregion\n//#region src/highlight/_get-transformers.ts\nconst builtInTransformers = [/* @__PURE__ */ transformerDecorations()];\nfunction getTransformers(options) {\n\tconst transformers = sortTransformersByEnforcement(options.transformers || []);\n\treturn [\n\t\t...transformers.pre,\n\t\t...transformers.normal,\n\t\t...transformers.post,\n\t\t...builtInTransformers\n\t];\n}\nfunction sortTransformersByEnforcement(transformers) {\n\tconst pre = [];\n\tconst post = [];\n\tconst normal = [];\n\tfor (const transformer of transformers) switch (transformer.enforce) {\n\t\tcase \"pre\":\n\t\t\tpre.push(transformer);\n\t\t\tbreak;\n\t\tcase \"post\":\n\t\t\tpost.push(transformer);\n\t\t\tbreak;\n\t\tdefault: normal.push(transformer);\n\t}\n\treturn {\n\t\tpre,\n\t\tpost,\n\t\tnormal\n\t};\n}\n//#endregion\n//#region ../../node_modules/.pnpm/ansi-sequence-parser@1.1.3/node_modules/ansi-sequence-parser/dist/index.js\nvar namedColors = [\n\t\"black\",\n\t\"red\",\n\t\"green\",\n\t\"yellow\",\n\t\"blue\",\n\t\"magenta\",\n\t\"cyan\",\n\t\"white\",\n\t\"brightBlack\",\n\t\"brightRed\",\n\t\"brightGreen\",\n\t\"brightYellow\",\n\t\"brightBlue\",\n\t\"brightMagenta\",\n\t\"brightCyan\",\n\t\"brightWhite\"\n];\nvar decorations = {\n\t1: \"bold\",\n\t2: \"dim\",\n\t3: \"italic\",\n\t4: \"underline\",\n\t7: \"reverse\",\n\t8: \"hidden\",\n\t9: \"strikethrough\"\n};\nfunction findSequence(value, position) {\n\tconst nextEscape = value.indexOf(\"\\x1B\", position);\n\tif (nextEscape !== -1) {\n\t\tif (value[nextEscape + 1] === \"[\") {\n\t\t\tconst nextClose = value.indexOf(\"m\", nextEscape);\n\t\t\tif (nextClose !== -1) return {\n\t\t\t\tsequence: value.substring(nextEscape + 2, nextClose).split(\";\"),\n\t\t\t\tstartPosition: nextEscape,\n\t\t\t\tposition: nextClose + 1\n\t\t\t};\n\t\t}\n\t}\n\treturn { position: value.length };\n}\nfunction parseColor(sequence) {\n\tconst colorMode = sequence.shift();\n\tif (colorMode === \"2\") {\n\t\tconst rgb = sequence.splice(0, 3).map((x) => Number.parseInt(x));\n\t\tif (rgb.length !== 3 || rgb.some((x) => Number.isNaN(x))) return;\n\t\treturn {\n\t\t\ttype: \"rgb\",\n\t\t\trgb\n\t\t};\n\t} else if (colorMode === \"5\") {\n\t\tconst index = sequence.shift();\n\t\tif (index) return {\n\t\t\ttype: \"table\",\n\t\t\tindex: Number(index)\n\t\t};\n\t}\n}\nfunction parseSequence(sequence) {\n\tconst commands = [];\n\twhile (sequence.length > 0) {\n\t\tconst code = sequence.shift();\n\t\tif (!code) continue;\n\t\tconst codeInt = Number.parseInt(code);\n\t\tif (Number.isNaN(codeInt)) continue;\n\t\tif (codeInt === 0) commands.push({ type: \"resetAll\" });\n\t\telse if (codeInt <= 9) {\n\t\t\tif (decorations[codeInt]) commands.push({\n\t\t\t\ttype: \"setDecoration\",\n\t\t\t\tvalue: decorations[codeInt]\n\t\t\t});\n\t\t} else if (codeInt <= 29) {\n\t\t\tconst decoration = decorations[codeInt - 20];\n\t\t\tif (decoration) {\n\t\t\t\tcommands.push({\n\t\t\t\t\ttype: \"resetDecoration\",\n\t\t\t\t\tvalue: decoration\n\t\t\t\t});\n\t\t\t\tif (decoration === \"dim\") commands.push({\n\t\t\t\t\ttype: \"resetDecoration\",\n\t\t\t\t\tvalue: \"bold\"\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (codeInt <= 37) commands.push({\n\t\t\ttype: \"setForegroundColor\",\n\t\t\tvalue: {\n\t\t\t\ttype: \"named\",\n\t\t\t\tname: namedColors[codeInt - 30]\n\t\t\t}\n\t\t});\n\t\telse if (codeInt === 38) {\n\t\t\tconst color = parseColor(sequence);\n\t\t\tif (color) commands.push({\n\t\t\t\ttype: \"setForegroundColor\",\n\t\t\t\tvalue: color\n\t\t\t});\n\t\t} else if (codeInt === 39) commands.push({ type: \"resetForegroundColor\" });\n\t\telse if (codeInt <= 47) commands.push({\n\t\t\ttype: \"setBackgroundColor\",\n\t\t\tvalue: {\n\t\t\t\ttype: \"named\",\n\t\t\t\tname: namedColors[codeInt - 40]\n\t\t\t}\n\t\t});\n\t\telse if (codeInt === 48) {\n\t\t\tconst color = parseColor(sequence);\n\t\t\tif (color) commands.push({\n\t\t\t\ttype: \"setBackgroundColor\",\n\t\t\t\tvalue: color\n\t\t\t});\n\t\t} else if (codeInt === 49) commands.push({ type: \"resetBackgroundColor\" });\n\t\telse if (codeInt === 53) commands.push({\n\t\t\ttype: \"setDecoration\",\n\t\t\tvalue: \"overline\"\n\t\t});\n\t\telse if (codeInt === 55) commands.push({\n\t\t\ttype: \"resetDecoration\",\n\t\t\tvalue: \"overline\"\n\t\t});\n\t\telse if (codeInt >= 90 && codeInt <= 97) commands.push({\n\t\t\ttype: \"setForegroundColor\",\n\t\t\tvalue: {\n\t\t\t\ttype: \"named\",\n\t\t\t\tname: namedColors[codeInt - 90 + 8]\n\t\t\t}\n\t\t});\n\t\telse if (codeInt >= 100 && codeInt <= 107) commands.push({\n\t\t\ttype: \"setBackgroundColor\",\n\t\t\tvalue: {\n\t\t\t\ttype: \"named\",\n\t\t\t\tname: namedColors[codeInt - 100 + 8]\n\t\t\t}\n\t\t});\n\t}\n\treturn commands;\n}\nfunction createAnsiSequenceParser() {\n\tlet foreground = null;\n\tlet background = null;\n\tlet decorations2 = /* @__PURE__ */ new Set();\n\treturn { parse(value) {\n\t\tconst tokens = [];\n\t\tlet position = 0;\n\t\tdo {\n\t\t\tconst findResult = findSequence(value, position);\n\t\t\tconst text = findResult.sequence ? value.substring(position, findResult.startPosition) : value.substring(position);\n\t\t\tif (text.length > 0) tokens.push({\n\t\t\t\tvalue: text,\n\t\t\t\tforeground,\n\t\t\t\tbackground,\n\t\t\t\tdecorations: new Set(decorations2)\n\t\t\t});\n\t\t\tif (findResult.sequence) {\n\t\t\t\tconst commands = parseSequence(findResult.sequence);\n\t\t\t\tfor (const styleToken of commands) if (styleToken.type === \"resetAll\") {\n\t\t\t\t\tforeground = null;\n\t\t\t\t\tbackground = null;\n\t\t\t\t\tdecorations2.clear();\n\t\t\t\t} else if (styleToken.type === \"resetForegroundColor\") foreground = null;\n\t\t\t\telse if (styleToken.type === \"resetBackgroundColor\") background = null;\n\t\t\t\telse if (styleToken.type === \"resetDecoration\") decorations2.delete(styleToken.value);\n\t\t\t\tfor (const styleToken of commands) if (styleToken.type === \"setForegroundColor\") foreground = styleToken.value;\n\t\t\t\telse if (styleToken.type === \"setBackgroundColor\") background = styleToken.value;\n\t\t\t\telse if (styleToken.type === \"setDecoration\") decorations2.add(styleToken.value);\n\t\t\t}\n\t\t\tposition = findResult.position;\n\t\t} while (position < value.length);\n\t\treturn tokens;\n\t} };\n}\nvar defaultNamedColorsMap = {\n\tblack: \"#000000\",\n\tred: \"#bb0000\",\n\tgreen: \"#00bb00\",\n\tyellow: \"#bbbb00\",\n\tblue: \"#0000bb\",\n\tmagenta: \"#ff00ff\",\n\tcyan: \"#00bbbb\",\n\twhite: \"#eeeeee\",\n\tbrightBlack: \"#555555\",\n\tbrightRed: \"#ff5555\",\n\tbrightGreen: \"#00ff00\",\n\tbrightYellow: \"#ffff55\",\n\tbrightBlue: \"#5555ff\",\n\tbrightMagenta: \"#ff55ff\",\n\tbrightCyan: \"#55ffff\",\n\tbrightWhite: \"#ffffff\"\n};\nfunction createColorPalette(namedColorsMap = defaultNamedColorsMap) {\n\tfunction namedColor(name) {\n\t\treturn namedColorsMap[name];\n\t}\n\tfunction rgbColor(rgb) {\n\t\treturn `#${rgb.map((x) => Math.max(0, Math.min(x, 255)).toString(16).padStart(2, \"0\")).join(\"\")}`;\n\t}\n\tlet colorTable;\n\tfunction getColorTable() {\n\t\tif (colorTable) return colorTable;\n\t\tcolorTable = [];\n\t\tfor (let i = 0; i < namedColors.length; i++) colorTable.push(namedColor(namedColors[i]));\n\t\tlet levels = [\n\t\t\t0,\n\t\t\t95,\n\t\t\t135,\n\t\t\t175,\n\t\t\t215,\n\t\t\t255\n\t\t];\n\t\tfor (let r = 0; r < 6; r++) for (let g = 0; g < 6; g++) for (let b = 0; b < 6; b++) colorTable.push(rgbColor([\n\t\t\tlevels[r],\n\t\t\tlevels[g],\n\t\t\tlevels[b]\n\t\t]));\n\t\tlet level = 8;\n\t\tfor (let i = 0; i < 24; i++, level += 10) colorTable.push(rgbColor([\n\t\t\tlevel,\n\t\t\tlevel,\n\t\t\tlevel\n\t\t]));\n\t\treturn colorTable;\n\t}\n\tfunction tableColor(index) {\n\t\treturn getColorTable()[index];\n\t}\n\tfunction value(color) {\n\t\tswitch (color.type) {\n\t\t\tcase \"named\": return namedColor(color.name);\n\t\t\tcase \"rgb\": return rgbColor(color.rgb);\n\t\t\tcase \"table\": return tableColor(color.index);\n\t\t}\n\t}\n\treturn { value };\n}\n//#endregion\n//#region src/highlight/code-to-tokens-ansi.ts\nconst RE_HEX_COLOR = /#([0-9a-f]{3,8})/i;\nconst RE_CSS_VAR_ANSI = /var\\((--[\\w-]+-ansi-[\\w-]+)\\)/;\n/**\n* Default ANSI palette (VSCode compatible fallbacks)\n* Used when the theme does not define terminal.ansi* colors.\n*/\nconst defaultAnsiColors = {\n\tblack: \"#000000\",\n\tred: \"#cd3131\",\n\tgreen: \"#0DBC79\",\n\tyellow: \"#E5E510\",\n\tblue: \"#2472C8\",\n\tmagenta: \"#BC3FBC\",\n\tcyan: \"#11A8CD\",\n\twhite: \"#E5E5E5\",\n\tbrightBlack: \"#666666\",\n\tbrightRed: \"#F14C4C\",\n\tbrightGreen: \"#23D18B\",\n\tbrightYellow: \"#F5F543\",\n\tbrightBlue: \"#3B8EEA\",\n\tbrightMagenta: \"#D670D6\",\n\tbrightCyan: \"#29B8DB\",\n\tbrightWhite: \"#FFFFFF\"\n};\nfunction tokenizeAnsiWithTheme(theme, fileContents, options) {\n\tconst colorReplacements = resolveColorReplacements(theme, options);\n\tconst lines = splitLines(fileContents);\n\tconst colorPalette = createColorPalette(Object.fromEntries(namedColors.map((name) => {\n\t\tconst key = `terminal.ansi${name[0].toUpperCase()}${name.substring(1)}`;\n\t\treturn [name, theme.colors?.[key] || defaultAnsiColors[name]];\n\t})));\n\tconst parser = createAnsiSequenceParser();\n\treturn lines.map((line) => parser.parse(line[0]).map((token) => {\n\t\tlet color;\n\t\tlet bgColor;\n\t\tif (token.decorations.has(\"reverse\")) {\n\t\t\tcolor = token.background ? colorPalette.value(token.background) : theme.bg;\n\t\t\tbgColor = token.foreground ? colorPalette.value(token.foreground) : theme.fg;\n\t\t} else {\n\t\t\tcolor = token.foreground ? colorPalette.value(token.foreground) : theme.fg;\n\t\t\tbgColor = token.background ? colorPalette.value(token.background) : void 0;\n\t\t}\n\t\tcolor = applyColorReplacements(color, colorReplacements);\n\t\tbgColor = applyColorReplacements(bgColor, colorReplacements);\n\t\tif (token.decorations.has(\"dim\")) color = dimColor(color);\n\t\tlet fontStyle = FontStyle.None;\n\t\tif (token.decorations.has(\"bold\")) fontStyle |= FontStyle.Bold;\n\t\tif (token.decorations.has(\"italic\")) fontStyle |= FontStyle.Italic;\n\t\tif (token.decorations.has(\"underline\")) fontStyle |= FontStyle.Underline;\n\t\tif (token.decorations.has(\"strikethrough\")) fontStyle |= FontStyle.Strikethrough;\n\t\treturn {\n\t\t\tcontent: token.value,\n\t\t\toffset: line[1],\n\t\t\tcolor,\n\t\t\tbgColor,\n\t\t\tfontStyle\n\t\t};\n\t}));\n}\n/**\n* Adds 50% alpha to a hex color string or the \"-dim\" postfix to a CSS variable\n*/\nfunction dimColor(color) {\n\tconst hexMatch = color.match(RE_HEX_COLOR);\n\tif (hexMatch) {\n\t\tconst hex = hexMatch[1];\n\t\tif (hex.length === 8) {\n\t\t\tconst alpha = Math.round(Number.parseInt(hex.slice(6, 8), 16) / 2).toString(16).padStart(2, \"0\");\n\t\t\treturn `#${hex.slice(0, 6)}${alpha}`;\n\t\t} else if (hex.length === 6) return `#${hex}80`;\n\t\telse if (hex.length === 4) {\n\t\t\tconst r = hex[0];\n\t\t\tconst g = hex[1];\n\t\t\tconst b = hex[2];\n\t\t\tconst a = hex[3];\n\t\t\treturn `#${r}${r}${g}${g}${b}${b}${Math.round(Number.parseInt(`${a}${a}`, 16) / 2).toString(16).padStart(2, \"0\")}`;\n\t\t} else if (hex.length === 3) {\n\t\t\tconst r = hex[0];\n\t\t\tconst g = hex[1];\n\t\t\tconst b = hex[2];\n\t\t\treturn `#${r}${r}${g}${g}${b}${b}80`;\n\t\t}\n\t}\n\tconst cssVarMatch = color.match(RE_CSS_VAR_ANSI);\n\tif (cssVarMatch) return `var(${cssVarMatch[1]}-dim)`;\n\treturn color;\n}\n//#endregion\n//#region src/highlight/code-to-tokens-base.ts\n/**\n* Code to tokens, with a simple theme.\n* This wraps the tokenizer's implementation to add ANSI support.\n*/\nfunction codeToTokensBase(primitive, code, options = {}) {\n\tconst lang = primitive.resolveLangAlias(options.lang || \"text\");\n\tconst { theme: themeName = primitive.getLoadedThemes()[0] } = options;\n\tif (!isPlainLang(lang) && !isNoneTheme(themeName) && lang === \"ansi\") {\n\t\tconst { theme } = primitive.setTheme(themeName);\n\t\treturn tokenizeAnsiWithTheme(theme, code, options);\n\t}\n\treturn codeToTokensBase$1(primitive, code, options);\n}\n//#endregion\n//#region src/highlight/code-to-tokens.ts\n/**\n* High-level code-to-tokens API.\n*\n* It will use `codeToTokensWithThemes` or `codeToTokensBase` based on the options.\n*/\nfunction codeToTokens(primitive, code, options) {\n\tlet bg;\n\tlet fg;\n\tlet tokens;\n\tlet themeName;\n\tlet rootStyle;\n\tlet grammarState;\n\tif (\"themes\" in options) {\n\t\tconst { defaultColor = \"light\", cssVariablePrefix = \"--shiki-\", colorsRendering = \"css-vars\" } = options;\n\t\tconst themes = Object.entries(options.themes).filter((i) => i[1]).map((i) => ({\n\t\t\tcolor: i[0],\n\t\t\ttheme: i[1]\n\t\t})).sort((a, b) => a.color === defaultColor ? -1 : b.color === defaultColor ? 1 : 0);\n\t\tif (themes.length === 0) throw new ShikiError$1(\"`themes` option must not be empty\");\n\t\tconst themeTokens = codeToTokensWithThemes$1(primitive, code, options, codeToTokensBase);\n\t\tgrammarState = getLastGrammarStateFromMap(themeTokens);\n\t\tif (defaultColor && \"light-dark()\" !== defaultColor && !themes.some((t) => t.color === defaultColor)) throw new ShikiError$1(`\\`themes\\` option must contain the defaultColor key \\`${defaultColor}\\``);\n\t\tconst themeRegs = themes.map((t) => primitive.getTheme(t.theme));\n\t\tconst themesOrder = themes.map((t) => t.color);\n\t\ttokens = themeTokens.map((line) => line.map((token) => flatTokenVariants(token, themesOrder, cssVariablePrefix, defaultColor, colorsRendering)));\n\t\tif (grammarState) setLastGrammarStateToMap(tokens, grammarState);\n\t\tconst themeColorReplacements = themes.map((t) => resolveColorReplacements(t.theme, options));\n\t\tfg = mapThemeColors(themes, themeRegs, themeColorReplacements, cssVariablePrefix, defaultColor, \"fg\", colorsRendering);\n\t\tbg = mapThemeColors(themes, themeRegs, themeColorReplacements, cssVariablePrefix, defaultColor, \"bg\", colorsRendering);\n\t\tthemeName = `shiki-themes ${themeRegs.map((t) => t.name).join(\" \")}`;\n\t\trootStyle = defaultColor ? void 0 : [fg, bg].join(\";\");\n\t} else if (\"theme\" in options) {\n\t\tconst colorReplacements = resolveColorReplacements(options.theme, options);\n\t\ttokens = codeToTokensBase(primitive, code, options);\n\t\tconst _theme = primitive.getTheme(options.theme);\n\t\tbg = applyColorReplacements(_theme.bg, colorReplacements);\n\t\tfg = applyColorReplacements(_theme.fg, colorReplacements);\n\t\tthemeName = _theme.name;\n\t\tgrammarState = getLastGrammarStateFromMap(tokens);\n\t} else throw new ShikiError$1(\"Invalid options, either `theme` or `themes` must be provided\");\n\treturn {\n\t\ttokens,\n\t\tfg,\n\t\tbg,\n\t\tthemeName,\n\t\trootStyle,\n\t\tgrammarState\n\t};\n}\nfunction mapThemeColors(themes, themeRegs, themeColorReplacements, cssVariablePrefix, defaultColor, property, colorsRendering) {\n\treturn themes.map((t, idx) => {\n\t\tconst value = applyColorReplacements(themeRegs[idx][property], themeColorReplacements[idx]) || \"inherit\";\n\t\tconst cssVar = `${cssVariablePrefix + t.color}${property === \"bg\" ? \"-bg\" : \"\"}:${value}`;\n\t\tif (idx === 0 && defaultColor) {\n\t\t\tif (defaultColor === \"light-dark()\" && themes.length > 1) {\n\t\t\t\tconst lightIndex = themes.findIndex((t) => t.color === \"light\");\n\t\t\t\tconst darkIndex = themes.findIndex((t) => t.color === \"dark\");\n\t\t\t\tif (lightIndex === -1 || darkIndex === -1) throw new ShikiError$1(\"When using `defaultColor: \\\"light-dark()\\\"`, you must provide both `light` and `dark` themes\");\n\t\t\t\treturn `light-dark(${applyColorReplacements(themeRegs[lightIndex][property], themeColorReplacements[lightIndex]) || \"inherit\"}, ${applyColorReplacements(themeRegs[darkIndex][property], themeColorReplacements[darkIndex]) || \"inherit\"});${cssVar}`;\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t\tif (colorsRendering === \"css-vars\") return cssVar;\n\t\treturn null;\n\t}).filter((i) => !!i).join(\";\");\n}\n//#endregion\n//#region src/highlight/code-to-hast.ts\nconst RE_WHITESPACE_ONLY = /^\\s+$/;\nconst RE_LEADING_TRAILING_WHITESPACE = /^(\\s*)(.*?)(\\s*)$/;\nfunction codeToHast(primitive, code, options, transformerContext = {\n\tmeta: {},\n\toptions,\n\tcodeToHast: (_code, _options) => codeToHast(primitive, _code, _options),\n\tcodeToTokens: (_code, _options) => codeToTokens(primitive, _code, _options)\n}) {\n\tlet input = code;\n\tfor (const transformer of getTransformers(options)) input = transformer.preprocess?.call(transformerContext, input, options) || input;\n\tlet { tokens, fg, bg, themeName, rootStyle, grammarState } = codeToTokens(primitive, input, options);\n\tconst { mergeWhitespaces = true, mergeSameStyleTokens = false } = options;\n\tif (mergeWhitespaces === true) tokens = mergeWhitespaceTokens(tokens);\n\telse if (mergeWhitespaces === \"never\") tokens = splitWhitespaceTokens(tokens);\n\tif (mergeSameStyleTokens) tokens = mergeAdjacentStyledTokens(tokens);\n\tconst contextSource = {\n\t\t...transformerContext,\n\t\tget source() {\n\t\t\treturn input;\n\t\t}\n\t};\n\tfor (const transformer of getTransformers(options)) tokens = transformer.tokens?.call(contextSource, tokens) || tokens;\n\treturn tokensToHast(tokens, {\n\t\t...options,\n\t\tfg,\n\t\tbg,\n\t\tthemeName,\n\t\trootStyle: options.rootStyle === false ? false : options.rootStyle ?? rootStyle\n\t}, contextSource, grammarState);\n}\nfunction tokensToHast(tokens, options, transformerContext, grammarState = getLastGrammarStateFromMap(tokens)) {\n\tconst transformers = getTransformers(options);\n\tconst lines = [];\n\tconst root = {\n\t\ttype: \"root\",\n\t\tchildren: []\n\t};\n\tconst { structure = \"classic\", tabindex = \"0\" } = options;\n\tconst properties = { class: `shiki ${options.themeName || \"\"}` };\n\tif (options.rootStyle !== false) if (options.rootStyle != null) properties.style = options.rootStyle;\n\telse properties.style = `background-color:${options.bg};color:${options.fg}`;\n\tif (tabindex !== false && tabindex != null) properties.tabindex = tabindex.toString();\n\tfor (const [key, value] of Object.entries(options.meta || {})) if (!key.startsWith(\"_\")) properties[key] = value;\n\tlet preNode = {\n\t\ttype: \"element\",\n\t\ttagName: \"pre\",\n\t\tproperties,\n\t\tchildren: [],\n\t\tdata: options.data\n\t};\n\tlet codeNode = {\n\t\ttype: \"element\",\n\t\ttagName: \"code\",\n\t\tproperties: {},\n\t\tchildren: lines\n\t};\n\tconst lineNodes = [];\n\tconst context = {\n\t\t...transformerContext,\n\t\tstructure,\n\t\taddClassToHast,\n\t\tget source() {\n\t\t\treturn transformerContext.source;\n\t\t},\n\t\tget tokens() {\n\t\t\treturn tokens;\n\t\t},\n\t\tget options() {\n\t\t\treturn options;\n\t\t},\n\t\tget root() {\n\t\t\treturn root;\n\t\t},\n\t\tget pre() {\n\t\t\treturn preNode;\n\t\t},\n\t\tget code() {\n\t\t\treturn codeNode;\n\t\t},\n\t\tget lines() {\n\t\t\treturn lineNodes;\n\t\t}\n\t};\n\ttokens.forEach((line, idx) => {\n\t\tif (idx) {\n\t\t\tif (structure === \"inline\") root.children.push({\n\t\t\t\ttype: \"element\",\n\t\t\t\ttagName: \"br\",\n\t\t\t\tproperties: {},\n\t\t\t\tchildren: []\n\t\t\t});\n\t\t\telse if (structure === \"classic\") lines.push({\n\t\t\t\ttype: \"text\",\n\t\t\t\tvalue: \"\\n\"\n\t\t\t});\n\t\t}\n\t\tlet lineNode = {\n\t\t\ttype: \"element\",\n\t\t\ttagName: \"span\",\n\t\t\tproperties: { class: \"line\" },\n\t\t\tchildren: []\n\t\t};\n\t\tlet col = 0;\n\t\tfor (const token of line) {\n\t\t\tlet tokenNode = {\n\t\t\t\ttype: \"element\",\n\t\t\t\ttagName: \"span\",\n\t\t\t\tproperties: { ...token.htmlAttrs },\n\t\t\t\tchildren: [{\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\tvalue: token.content\n\t\t\t\t}]\n\t\t\t};\n\t\t\tconst style = stringifyTokenStyle(token.htmlStyle || getTokenStyleObject(token));\n\t\t\tif (style) tokenNode.properties.style = style;\n\t\t\tfor (const transformer of transformers) tokenNode = transformer?.span?.call(context, tokenNode, idx + 1, col, lineNode, token) || tokenNode;\n\t\t\tif (structure === \"inline\") root.children.push(tokenNode);\n\t\t\telse if (structure === \"classic\") lineNode.children.push(tokenNode);\n\t\t\tcol += token.content.length;\n\t\t}\n\t\tif (structure === \"classic\") {\n\t\t\tfor (const transformer of transformers) lineNode = transformer?.line?.call(context, lineNode, idx + 1) || lineNode;\n\t\t\tlineNodes.push(lineNode);\n\t\t\tlines.push(lineNode);\n\t\t} else if (structure === \"inline\") lineNodes.push(lineNode);\n\t});\n\tif (structure === \"classic\") {\n\t\tfor (const transformer of transformers) codeNode = transformer?.code?.call(context, codeNode) || codeNode;\n\t\tpreNode.children.push(codeNode);\n\t\tfor (const transformer of transformers) preNode = transformer?.pre?.call(context, preNode) || preNode;\n\t\troot.children.push(preNode);\n\t} else if (structure === \"inline\") {\n\t\tconst syntheticLines = [];\n\t\tlet currentLine = {\n\t\t\ttype: \"element\",\n\t\t\ttagName: \"span\",\n\t\t\tproperties: { class: \"line\" },\n\t\t\tchildren: []\n\t\t};\n\t\tfor (const child of root.children) if (child.type === \"element\" && child.tagName === \"br\") {\n\t\t\tsyntheticLines.push(currentLine);\n\t\t\tcurrentLine = {\n\t\t\t\ttype: \"element\",\n\t\t\t\ttagName: \"span\",\n\t\t\t\tproperties: { class: \"line\" },\n\t\t\t\tchildren: []\n\t\t\t};\n\t\t} else if (child.type === \"element\" || child.type === \"text\") currentLine.children.push(child);\n\t\tsyntheticLines.push(currentLine);\n\t\tlet transformedCode = {\n\t\t\ttype: \"element\",\n\t\t\ttagName: \"code\",\n\t\t\tproperties: {},\n\t\t\tchildren: syntheticLines\n\t\t};\n\t\tfor (const transformer of transformers) transformedCode = transformer?.code?.call(context, transformedCode) || transformedCode;\n\t\troot.children = [];\n\t\tfor (let i = 0; i < transformedCode.children.length; i++) {\n\t\t\tif (i > 0) root.children.push({\n\t\t\t\ttype: \"element\",\n\t\t\t\ttagName: \"br\",\n\t\t\t\tproperties: {},\n\t\t\t\tchildren: []\n\t\t\t});\n\t\t\tconst line = transformedCode.children[i];\n\t\t\tif (line.type === \"element\") root.children.push(...line.children);\n\t\t}\n\t}\n\tlet result = root;\n\tfor (const transformer of transformers) result = transformer?.root?.call(context, result) || result;\n\tif (grammarState) setLastGrammarStateToMap(result, grammarState);\n\treturn result;\n}\nfunction mergeWhitespaceTokens(tokens) {\n\treturn tokens.map((line) => {\n\t\tconst newLine = [];\n\t\tlet carryOnContent = \"\";\n\t\tlet firstOffset;\n\t\tline.forEach((token, idx) => {\n\t\t\tconst couldMerge = !(token.fontStyle && (token.fontStyle & FontStyle.Underline || token.fontStyle & FontStyle.Strikethrough));\n\t\t\tif (couldMerge && RE_WHITESPACE_ONLY.test(token.content) && line[idx + 1]) {\n\t\t\t\tif (firstOffset === void 0) firstOffset = token.offset;\n\t\t\t\tcarryOnContent += token.content;\n\t\t\t} else if (carryOnContent) {\n\t\t\t\tif (couldMerge) newLine.push({\n\t\t\t\t\t...token,\n\t\t\t\t\toffset: firstOffset,\n\t\t\t\t\tcontent: carryOnContent + token.content\n\t\t\t\t});\n\t\t\t\telse newLine.push({\n\t\t\t\t\tcontent: carryOnContent,\n\t\t\t\t\toffset: firstOffset\n\t\t\t\t}, token);\n\t\t\t\tfirstOffset = void 0;\n\t\t\t\tcarryOnContent = \"\";\n\t\t\t} else newLine.push(token);\n\t\t});\n\t\treturn newLine;\n\t});\n}\nfunction splitWhitespaceTokens(tokens) {\n\treturn tokens.map((line) => {\n\t\treturn line.flatMap((token) => {\n\t\t\tif (RE_WHITESPACE_ONLY.test(token.content)) return token;\n\t\t\tconst match = token.content.match(RE_LEADING_TRAILING_WHITESPACE);\n\t\t\tif (!match) return token;\n\t\t\tconst [, leading, content, trailing] = match;\n\t\t\tif (!leading && !trailing) return token;\n\t\t\tconst expanded = [{\n\t\t\t\t...token,\n\t\t\t\toffset: token.offset + leading.length,\n\t\t\t\tcontent\n\t\t\t}];\n\t\t\tif (leading) expanded.unshift({\n\t\t\t\tcontent: leading,\n\t\t\t\toffset: token.offset\n\t\t\t});\n\t\t\tif (trailing) expanded.push({\n\t\t\t\tcontent: trailing,\n\t\t\t\toffset: token.offset + leading.length + content.length\n\t\t\t});\n\t\t\treturn expanded;\n\t\t});\n\t});\n}\nfunction mergeAdjacentStyledTokens(tokens) {\n\treturn tokens.map((line) => {\n\t\tconst newLine = [];\n\t\tfor (const token of line) {\n\t\t\tif (newLine.length === 0) {\n\t\t\t\tnewLine.push({ ...token });\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst prevToken = newLine.at(-1);\n\t\t\tconst prevStyle = stringifyTokenStyle(prevToken.htmlStyle || getTokenStyleObject(prevToken));\n\t\t\tconst currentStyle = stringifyTokenStyle(token.htmlStyle || getTokenStyleObject(token));\n\t\t\tconst isPrevDecorated = prevToken.fontStyle && (prevToken.fontStyle & FontStyle.Underline || prevToken.fontStyle & FontStyle.Strikethrough);\n\t\t\tconst isDecorated = token.fontStyle && (token.fontStyle & FontStyle.Underline || token.fontStyle & FontStyle.Strikethrough);\n\t\t\tif (!isPrevDecorated && !isDecorated && prevStyle === currentStyle) prevToken.content += token.content;\n\t\t\telse newLine.push({ ...token });\n\t\t}\n\t\treturn newLine;\n\t});\n}\n//#endregion\n//#region src/highlight/code-to-html.ts\nconst hastToHtml = toHtml;\n/**\n* Get highlighted code in HTML.\n*/\nfunction codeToHtml(primitive, code, options) {\n\tconst context = {\n\t\tmeta: {},\n\t\toptions,\n\t\tcodeToHast: (_code, _options) => codeToHast(primitive, _code, _options),\n\t\tcodeToTokens: (_code, _options) => codeToTokens(primitive, _code, _options)\n\t};\n\tlet result = hastToHtml(codeToHast(primitive, code, options, context));\n\tfor (const transformer of getTransformers(options)) result = transformer.postprocess?.call(context, result, options) || result;\n\treturn result;\n}\n//#endregion\n//#region src/constructors/highlighter.ts\n/**\n* Create a Shiki core highlighter instance, with no languages or themes bundled.\n* Wasm and each language and theme must be loaded manually.\n*\n* @see http://shiki.style/guide/bundles#fine-grained-bundle\n*/\nasync function createHighlighterCore(options) {\n\tconst primitive = await createShikiPrimitiveAsync$1(options);\n\treturn {\n\t\tgetLastGrammarState: (...args) => getLastGrammarState(primitive, ...args),\n\t\tcodeToTokensBase: (code, options) => codeToTokensBase(primitive, code, options),\n\t\tcodeToTokensWithThemes: (code, options) => codeToTokensWithThemes$1(primitive, code, options),\n\t\tcodeToTokens: (code, options) => codeToTokens(primitive, code, options),\n\t\tcodeToHast: (code, options) => codeToHast(primitive, code, options),\n\t\tcodeToHtml: (code, options) => codeToHtml(primitive, code, options),\n\t\tgetBundledLanguages: () => ({}),\n\t\tgetBundledThemes: () => ({}),\n\t\t...primitive,\n\t\tgetInternalContext: () => primitive\n\t};\n}\n/**\n* Create a Shiki core highlighter instance, with no languages or themes bundled.\n* Wasm and each language and theme must be loaded manually.\n*\n* Synchronous version of `createHighlighterCore`, which requires to provide the engine and all themes and languages upfront.\n*\n* @see http://shiki.style/guide/bundles#fine-grained-bundle\n*/\nfunction createHighlighterCoreSync(options) {\n\tconst internal = createShikiPrimitive$1(options);\n\treturn {\n\t\tgetLastGrammarState: (...args) => getLastGrammarState(internal, ...args),\n\t\tcodeToTokensBase: (code, options) => codeToTokensBase(internal, code, options),\n\t\tcodeToTokensWithThemes: (code, options) => codeToTokensWithThemes$1(internal, code, options),\n\t\tcodeToTokens: (code, options) => codeToTokens(internal, code, options),\n\t\tcodeToHast: (code, options) => codeToHast(internal, code, options),\n\t\tcodeToHtml: (code, options) => codeToHtml(internal, code, options),\n\t\tgetBundledLanguages: () => ({}),\n\t\tgetBundledThemes: () => ({}),\n\t\t...internal,\n\t\tgetInternalContext: () => internal\n\t};\n}\nfunction makeSingletonHighlighterCore(createHighlighter) {\n\tlet _shiki;\n\tasync function getSingletonHighlighterCore(options) {\n\t\tif (!_shiki) {\n\t\t\t_shiki = createHighlighter({\n\t\t\t\t...options,\n\t\t\t\tthemes: options.themes || [],\n\t\t\t\tlangs: options.langs || []\n\t\t\t});\n\t\t\treturn _shiki;\n\t\t} else {\n\t\t\tconst s = await _shiki;\n\t\t\tawait Promise.all([s.loadTheme(...options.themes || []), s.loadLanguage(...options.langs || [])]);\n\t\t\treturn s;\n\t\t}\n\t}\n\treturn getSingletonHighlighterCore;\n}\nconst getSingletonHighlighterCore = /* @__PURE__ */ makeSingletonHighlighterCore(createHighlighterCore);\n//#endregion\n//#region src/constructors/bundle-factory.ts\nfunction createBundledHighlighter(options) {\n\tconst bundledLanguages = options.langs;\n\tconst bundledThemes = options.themes;\n\tconst engine = options.engine;\n\tasync function createHighlighter(options) {\n\t\tfunction resolveLang(lang) {\n\t\t\tif (typeof lang === \"string\") {\n\t\t\t\tlang = options.langAlias?.[lang] || lang;\n\t\t\t\tif (isSpecialLang(lang)) return [];\n\t\t\t\tconst bundle = bundledLanguages[lang];\n\t\t\t\tif (!bundle) throw new ShikiError$1(`Language \\`${lang}\\` is not included in this bundle. You may want to load it from external source.`);\n\t\t\t\treturn bundle;\n\t\t\t}\n\t\t\treturn lang;\n\t\t}\n\t\tfunction resolveTheme(theme) {\n\t\t\tif (isSpecialTheme(theme)) return \"none\";\n\t\t\tif (typeof theme === \"string\") {\n\t\t\t\tconst bundle = bundledThemes[theme];\n\t\t\t\tif (!bundle) throw new ShikiError$1(`Theme \\`${theme}\\` is not included in this bundle. You may want to load it from external source.`);\n\t\t\t\treturn bundle;\n\t\t\t}\n\t\t\treturn theme;\n\t\t}\n\t\tconst _themes = (options.themes ?? []).map((i) => resolveTheme(i));\n\t\tconst langs = (options.langs ?? []).map((i) => resolveLang(i));\n\t\tconst core = await createHighlighterCore({\n\t\t\tengine: options.engine ?? engine(),\n\t\t\t...options,\n\t\t\tthemes: _themes,\n\t\t\tlangs\n\t\t});\n\t\treturn {\n\t\t\t...core,\n\t\t\tloadLanguage(...langs) {\n\t\t\t\treturn core.loadLanguage(...langs.map(resolveLang));\n\t\t\t},\n\t\t\tloadTheme(...themes) {\n\t\t\t\treturn core.loadTheme(...themes.map(resolveTheme));\n\t\t\t},\n\t\t\tgetBundledLanguages() {\n\t\t\t\treturn bundledLanguages;\n\t\t\t},\n\t\t\tgetBundledThemes() {\n\t\t\t\treturn bundledThemes;\n\t\t\t}\n\t\t};\n\t}\n\treturn createHighlighter;\n}\nfunction makeSingletonHighlighter(createHighlighter) {\n\tlet _shiki;\n\tasync function getSingletonHighlighter(options = {}) {\n\t\tif (!_shiki) {\n\t\t\t_shiki = createHighlighter({\n\t\t\t\t...options,\n\t\t\t\tthemes: [],\n\t\t\t\tlangs: []\n\t\t\t});\n\t\t\tconst s = await _shiki;\n\t\t\tawait Promise.all([s.loadTheme(...options.themes || []), s.loadLanguage(...options.langs || [])]);\n\t\t\treturn s;\n\t\t} else {\n\t\t\tconst s = await _shiki;\n\t\t\tawait Promise.all([s.loadTheme(...options.themes || []), s.loadLanguage(...options.langs || [])]);\n\t\t\treturn s;\n\t\t}\n\t}\n\treturn getSingletonHighlighter;\n}\nfunction createSingletonShorthands(createHighlighter, config) {\n\tconst getSingletonHighlighter = makeSingletonHighlighter(createHighlighter);\n\tasync function get(code, options) {\n\t\tconst shiki = await getSingletonHighlighter({\n\t\t\tlangs: [options.lang],\n\t\t\tthemes: \"theme\" in options ? [options.theme] : Object.values(options.themes)\n\t\t});\n\t\tconst langs = await config?.guessEmbeddedLanguages?.(code, options.lang, shiki);\n\t\tif (langs) await shiki.loadLanguage(...langs);\n\t\treturn shiki;\n\t}\n\treturn {\n\t\tgetSingletonHighlighter(options) {\n\t\t\treturn getSingletonHighlighter(options);\n\t\t},\n\t\tasync codeToHtml(code, options) {\n\t\t\treturn (await get(code, options)).codeToHtml(code, options);\n\t\t},\n\t\tasync codeToHast(code, options) {\n\t\t\treturn (await get(code, options)).codeToHast(code, options);\n\t\t},\n\t\tasync codeToTokens(code, options) {\n\t\t\treturn (await get(code, options)).codeToTokens(code, options);\n\t\t},\n\t\tasync codeToTokensBase(code, options) {\n\t\t\treturn (await get(code, options)).codeToTokensBase(code, options);\n\t\t},\n\t\tasync codeToTokensWithThemes(code, options) {\n\t\t\treturn (await get(code, options)).codeToTokensWithThemes(code, options);\n\t\t},\n\t\tasync getLastGrammarState(code, options) {\n\t\t\treturn (await getSingletonHighlighter({\n\t\t\t\tlangs: [options.lang],\n\t\t\t\tthemes: [options.theme]\n\t\t\t})).getLastGrammarState(code, options);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/theme-css-variables.ts\n/**\n* A factory function to create a css-variable-based theme\n*\n* @see https://shiki.style/guide/theme-colors#css-variables-theme\n*/\nfunction createCssVariablesTheme(options = {}) {\n\tconst { name = \"css-variables\", variablePrefix = \"--shiki-\", fontStyle = true } = options;\n\tconst variable = (name) => {\n\t\tif (options.variableDefaults?.[name]) return `var(${variablePrefix}${name}, ${options.variableDefaults[name]})`;\n\t\treturn `var(${variablePrefix}${name})`;\n\t};\n\tconst theme = {\n\t\tname,\n\t\ttype: \"dark\",\n\t\tcolors: {\n\t\t\t\"editor.foreground\": variable(\"foreground\"),\n\t\t\t\"editor.background\": variable(\"background\"),\n\t\t\t\"terminal.ansiBlack\": variable(\"ansi-black\"),\n\t\t\t\"terminal.ansiRed\": variable(\"ansi-red\"),\n\t\t\t\"terminal.ansiGreen\": variable(\"ansi-green\"),\n\t\t\t\"terminal.ansiYellow\": variable(\"ansi-yellow\"),\n\t\t\t\"terminal.ansiBlue\": variable(\"ansi-blue\"),\n\t\t\t\"terminal.ansiMagenta\": variable(\"ansi-magenta\"),\n\t\t\t\"terminal.ansiCyan\": variable(\"ansi-cyan\"),\n\t\t\t\"terminal.ansiWhite\": variable(\"ansi-white\"),\n\t\t\t\"terminal.ansiBrightBlack\": variable(\"ansi-bright-black\"),\n\t\t\t\"terminal.ansiBrightRed\": variable(\"ansi-bright-red\"),\n\t\t\t\"terminal.ansiBrightGreen\": variable(\"ansi-bright-green\"),\n\t\t\t\"terminal.ansiBrightYellow\": variable(\"ansi-bright-yellow\"),\n\t\t\t\"terminal.ansiBrightBlue\": variable(\"ansi-bright-blue\"),\n\t\t\t\"terminal.ansiBrightMagenta\": variable(\"ansi-bright-magenta\"),\n\t\t\t\"terminal.ansiBrightCyan\": variable(\"ansi-bright-cyan\"),\n\t\t\t\"terminal.ansiBrightWhite\": variable(\"ansi-bright-white\")\n\t\t},\n\t\ttokenColors: [\n\t\t\t{\n\t\t\t\tscope: [\n\t\t\t\t\t\"keyword.operator.accessor\",\n\t\t\t\t\t\"meta.group.braces.round.function.arguments\",\n\t\t\t\t\t\"meta.template.expression\",\n\t\t\t\t\t\"markup.fenced_code meta.embedded.block\"\n\t\t\t\t],\n\t\t\t\tsettings: { foreground: variable(\"foreground\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: \"emphasis\",\n\t\t\t\tsettings: { fontStyle: \"italic\" }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\n\t\t\t\t\t\"strong\",\n\t\t\t\t\t\"markup.heading.markdown\",\n\t\t\t\t\t\"markup.bold.markdown\"\n\t\t\t\t],\n\t\t\t\tsettings: { fontStyle: \"bold\" }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\"markup.italic.markdown\"],\n\t\t\t\tsettings: { fontStyle: \"italic\" }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: \"meta.link.inline.markdown\",\n\t\t\t\tsettings: {\n\t\t\t\t\tfontStyle: \"underline\",\n\t\t\t\t\tforeground: variable(\"token-link\")\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\n\t\t\t\t\t\"string\",\n\t\t\t\t\t\"markup.fenced_code\",\n\t\t\t\t\t\"markup.inline\"\n\t\t\t\t],\n\t\t\t\tsettings: { foreground: variable(\"token-string\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\"comment\", \"string.quoted.docstring.multi\"],\n\t\t\t\tsettings: { foreground: variable(\"token-comment\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\n\t\t\t\t\t\"constant.numeric\",\n\t\t\t\t\t\"constant.language\",\n\t\t\t\t\t\"constant.other.placeholder\",\n\t\t\t\t\t\"constant.character.format.placeholder\",\n\t\t\t\t\t\"variable.language.this\",\n\t\t\t\t\t\"variable.other.object\",\n\t\t\t\t\t\"variable.other.class\",\n\t\t\t\t\t\"variable.other.constant\",\n\t\t\t\t\t\"meta.property-name\",\n\t\t\t\t\t\"meta.property-value\",\n\t\t\t\t\t\"support\"\n\t\t\t\t],\n\t\t\t\tsettings: { foreground: variable(\"token-constant\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\n\t\t\t\t\t\"keyword\",\n\t\t\t\t\t\"storage.modifier\",\n\t\t\t\t\t\"storage.type\",\n\t\t\t\t\t\"storage.control.clojure\",\n\t\t\t\t\t\"entity.name.function.clojure\",\n\t\t\t\t\t\"entity.name.tag.yaml\",\n\t\t\t\t\t\"support.function.node\",\n\t\t\t\t\t\"support.type.property-name.json\",\n\t\t\t\t\t\"punctuation.separator.key-value\",\n\t\t\t\t\t\"punctuation.definition.template-expression\"\n\t\t\t\t],\n\t\t\t\tsettings: { foreground: variable(\"token-keyword\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: \"variable.parameter.function\",\n\t\t\t\tsettings: { foreground: variable(\"token-parameter\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\n\t\t\t\t\t\"support.function\",\n\t\t\t\t\t\"entity.name.type\",\n\t\t\t\t\t\"entity.other.inherited-class\",\n\t\t\t\t\t\"meta.function-call\",\n\t\t\t\t\t\"meta.instance.constructor\",\n\t\t\t\t\t\"entity.other.attribute-name\",\n\t\t\t\t\t\"entity.name.function\",\n\t\t\t\t\t\"constant.keyword.clojure\"\n\t\t\t\t],\n\t\t\t\tsettings: { foreground: variable(\"token-function\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\n\t\t\t\t\t\"entity.name.tag\",\n\t\t\t\t\t\"string.quoted\",\n\t\t\t\t\t\"string.regexp\",\n\t\t\t\t\t\"string.interpolated\",\n\t\t\t\t\t\"string.template\",\n\t\t\t\t\t\"string.unquoted.plain.out.yaml\",\n\t\t\t\t\t\"keyword.other.template\"\n\t\t\t\t],\n\t\t\t\tsettings: { foreground: variable(\"token-string-expression\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\n\t\t\t\t\t\"punctuation.definition.arguments\",\n\t\t\t\t\t\"punctuation.definition.dict\",\n\t\t\t\t\t\"punctuation.separator\",\n\t\t\t\t\t\"meta.function-call.arguments\"\n\t\t\t\t],\n\t\t\t\tsettings: { foreground: variable(\"token-punctuation\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\"markup.underline.link\", \"punctuation.definition.metadata.markdown\"],\n\t\t\t\tsettings: { foreground: variable(\"token-link\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\"beginning.punctuation.definition.list.markdown\"],\n\t\t\t\tsettings: { foreground: variable(\"token-string\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\n\t\t\t\t\t\"punctuation.definition.string.begin.markdown\",\n\t\t\t\t\t\"punctuation.definition.string.end.markdown\",\n\t\t\t\t\t\"string.other.link.title.markdown\",\n\t\t\t\t\t\"string.other.link.description.markdown\"\n\t\t\t\t],\n\t\t\t\tsettings: { foreground: variable(\"token-keyword\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\n\t\t\t\t\t\"markup.inserted\",\n\t\t\t\t\t\"meta.diff.header.to-file\",\n\t\t\t\t\t\"punctuation.definition.inserted\"\n\t\t\t\t],\n\t\t\t\tsettings: { foreground: variable(\"token-inserted\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\n\t\t\t\t\t\"markup.deleted\",\n\t\t\t\t\t\"meta.diff.header.from-file\",\n\t\t\t\t\t\"punctuation.definition.deleted\"\n\t\t\t\t],\n\t\t\t\tsettings: { foreground: variable(\"token-deleted\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\"markup.changed\", \"punctuation.definition.changed\"],\n\t\t\t\tsettings: { foreground: variable(\"token-changed\") }\n\t\t\t}\n\t\t]\n\t};\n\tif (!fontStyle) theme.tokenColors = theme.tokenColors?.map((tokenColor) => {\n\t\tif (tokenColor.settings?.fontStyle) delete tokenColor.settings.fontStyle;\n\t\treturn tokenColor;\n\t});\n\treturn theme;\n}\n//#endregion\nexport { ShikiError, addClassToHast, applyColorReplacements, codeToHast, codeToHtml, codeToTokens, codeToTokensBase, codeToTokensWithThemes, createBundledHighlighter, createCssVariablesTheme, createHighlighterCore, createHighlighterCoreSync, createPositionConverter, createShikiInternal, createShikiInternalSync, createShikiPrimitive, createShikiPrimitiveAsync, createSingletonShorthands, flatTokenVariants, getLastGrammarState, getSingletonHighlighterCore, getTokenStyleObject, guessEmbeddedLanguages, hastToHtml, isNoneTheme, isPlainLang, isSpecialLang, isSpecialTheme, makeSingletonHighlighter, makeSingletonHighlighterCore, normalizeGetter, normalizeTheme, resolveColorReplacements, splitLines, splitToken, splitTokens, stringifyTokenStyle, toArray, tokenizeAnsiWithTheme, tokenizeWithTheme, tokensToHast, transformerDecorations };\n","import { t as __exportAll } from \"./rolldown-runtime-BBjsoOtd.mjs\";\nimport { t as engine_oniguruma_exports } from \"./engine-oniguruma.mjs\";\nimport { i as bundledLanguagesInfo, n as bundledLanguagesAlias, r as bundledLanguagesBase, t as bundledLanguages } from \"./langs-bundle-full-4noeO3oH.mjs\";\nimport { bundledThemes, bundledThemesInfo } from \"./themes.mjs\";\nimport { createBundledHighlighter, createSingletonShorthands, guessEmbeddedLanguages } from \"@shikijs/core\";\nexport * from \"@shikijs/core\";\n//#region src/bundle-full.ts\nvar bundle_full_exports = /* @__PURE__ */ __exportAll({\n\tbundledLanguages: () => bundledLanguages,\n\tbundledLanguagesAlias: () => bundledLanguagesAlias,\n\tbundledLanguagesBase: () => bundledLanguagesBase,\n\tbundledLanguagesInfo: () => bundledLanguagesInfo,\n\tbundledThemes: () => bundledThemes,\n\tbundledThemesInfo: () => bundledThemesInfo,\n\tcodeToHast: () => codeToHast,\n\tcodeToHtml: () => codeToHtml,\n\tcodeToTokens: () => codeToTokens,\n\tcodeToTokensBase: () => codeToTokensBase,\n\tcodeToTokensWithThemes: () => codeToTokensWithThemes,\n\tcreateHighlighter: () => createHighlighter,\n\tgetLastGrammarState: () => getLastGrammarState,\n\tgetSingletonHighlighter: () => getSingletonHighlighter\n});\n/**\n* Initiate a highlighter instance and load the specified languages and themes.\n* Later it can be used synchronously to highlight code.\n*\n* Importing this function will bundle all languages and themes.\n* @see https://shiki.style/guide/bundles#shiki-bundle-full\n*\n* For granular control over the bundle, check:\n* @see https://shiki.style/guide/bundles#fine-grained-bundle\n*/\nconst createHighlighter = /* @__PURE__ */ createBundledHighlighter({\n\tlangs: bundledLanguages,\n\tthemes: bundledThemes,\n\tengine: () => (0, engine_oniguruma_exports.createOnigurumaEngine)(import(\"shiki/wasm\"))\n});\nconst { codeToHtml, codeToHast, codeToTokens, codeToTokensBase, codeToTokensWithThemes, getSingletonHighlighter, getLastGrammarState } = /* @__PURE__ */ createSingletonShorthands(createHighlighter, { guessEmbeddedLanguages });\n//#endregion\nexport { bundledLanguages, bundledLanguagesAlias, bundledLanguagesBase, bundledLanguagesInfo, bundledThemes, bundledThemesInfo, codeToHast, codeToHtml, codeToTokens, codeToTokensBase, codeToTokensWithThemes, createHighlighter, getLastGrammarState, getSingletonHighlighter, bundle_full_exports as t };\n","//#region src/scanner.ts\nconst MAX = 4294967295;\nvar JavaScriptScanner = class {\n\tpatterns;\n\toptions;\n\tregexps;\n\tconstructor(patterns, options = {}) {\n\t\tthis.patterns = patterns;\n\t\tthis.options = options;\n\t\tconst { forgiving = false, cache, regexConstructor } = options;\n\t\tif (!regexConstructor) throw new Error(\"Option `regexConstructor` is not provided\");\n\t\tthis.regexps = patterns.map((p) => {\n\t\t\tif (typeof p !== \"string\") return p;\n\t\t\tconst cached = cache?.get(p);\n\t\t\tif (cached) {\n\t\t\t\tif (cached instanceof RegExp) return cached;\n\t\t\t\tif (forgiving) return null;\n\t\t\t\tthrow cached;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst regex = regexConstructor(p);\n\t\t\t\tcache?.set(p, regex);\n\t\t\t\treturn regex;\n\t\t\t} catch (e) {\n\t\t\t\tcache?.set(p, e);\n\t\t\t\tif (forgiving) return null;\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t});\n\t}\n\tfindNextMatchSync(string, startPosition, _options) {\n\t\tconst str = typeof string === \"string\" ? string : string.content;\n\t\tconst pending = [];\n\t\tfunction toResult(index, match, offset = 0) {\n\t\t\treturn {\n\t\t\t\tindex,\n\t\t\t\tcaptureIndices: match.indices.map((indice) => {\n\t\t\t\t\tif (indice == null) return {\n\t\t\t\t\t\tstart: MAX,\n\t\t\t\t\t\tend: MAX,\n\t\t\t\t\t\tlength: 0\n\t\t\t\t\t};\n\t\t\t\t\treturn {\n\t\t\t\t\t\tstart: indice[0] + offset,\n\t\t\t\t\t\tend: indice[1] + offset,\n\t\t\t\t\t\tlength: indice[1] - indice[0]\n\t\t\t\t\t};\n\t\t\t\t})\n\t\t\t};\n\t\t}\n\t\tfor (let i = 0; i < this.regexps.length; i++) {\n\t\t\tconst regexp = this.regexps[i];\n\t\t\tif (!regexp) continue;\n\t\t\ttry {\n\t\t\t\tregexp.lastIndex = startPosition;\n\t\t\t\tconst match = regexp.exec(str);\n\t\t\t\tif (!match) continue;\n\t\t\t\tif (match.index === startPosition) return toResult(i, match, 0);\n\t\t\t\tpending.push([\n\t\t\t\t\ti,\n\t\t\t\t\tmatch,\n\t\t\t\t\t0\n\t\t\t\t]);\n\t\t\t} catch (e) {\n\t\t\t\tif (this.options.forgiving) continue;\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t}\n\t\tif (pending.length) {\n\t\t\tconst minIndex = Math.min(...pending.map((m) => m[1].index));\n\t\t\tfor (const [i, match, offset] of pending) if (match.index === minIndex) return toResult(i, match, offset);\n\t\t}\n\t\treturn null;\n\t}\n};\n//#endregion\nexport { JavaScriptScanner as t };\n","\"use strict\";function r(e){if([...e].length!==1)throw new Error(`Expected \"${e}\" to be a single code point`);return e.codePointAt(0)}function l(e,t,n){return e.has(t)||e.set(t,n),e.get(t)}const i=new Set([\"alnum\",\"alpha\",\"ascii\",\"blank\",\"cntrl\",\"digit\",\"graph\",\"lower\",\"print\",\"punct\",\"space\",\"upper\",\"word\",\"xdigit\"]),o=String.raw;function u(e,t){if(e==null)throw new Error(t??\"Value expected\");return e}export{r as cpOf,l as getOrInsert,i as PosixClassNames,o as r,u as throwIfNullish};\n//# sourceMappingURL=utils.js.map\n","\"use strict\";import{cpOf as h,PosixClassNames as G,r as p,throwIfNullish as N}from\"../utils.js\";const m=p`\\[\\^?`,b=`c.? | C(?:-.?)?|${p`[pP]\\{(?:\\^?[-\\x20_]*[A-Za-z][-\\x20\\w]*\\})?`}|${p`x[89A-Fa-f]\\p{AHex}(?:\\\\x[89A-Fa-f]\\p{AHex})*`}|${p`u(?:\\p{AHex}{4})? | x\\{[^\\}]*\\}? | x\\p{AHex}{0,2}`}|${p`o\\{[^\\}]*\\}?`}|${p`\\d{1,3}`}`,y=/[?*+][?+]?|\\{(?:\\d+(?:,\\d*)?|,\\d+)\\}\\??/,C=new RegExp(p`\n \\\\ (?:\n ${b}\n | [gk]<[^>]*>?\n | [gk]'[^']*'?\n | .\n )\n | \\( (?:\n \\? (?:\n [:=!>({]\n | <[=!]\n | <[^>]*>\n | '[^']*'\n | ~\\|?\n | #(?:[^)\\\\]|\\\\.?)*\n | [^:)]*[:)]\n )?\n | \\*[^\\)]*\\)?\n )?\n | (?:${y.source})+\n | ${m}\n | .\n`.replace(/\\s+/g,\"\"),\"gsu\"),T=new RegExp(p`\n \\\\ (?:\n ${b}\n | .\n )\n | \\[:(?:\\^?\\p{Alpha}+|\\^):\\]\n | ${m}\n | &&\n | .\n`.replace(/\\s+/g,\"\"),\"gsu\");function M(e,n={}){const t={flags:\"\",...n,rules:{captureGroup:!1,singleline:!1,...n.rules}};if(typeof e!=\"string\")throw new Error(\"String expected as pattern\");const o=Y(t.flags),s=[o.extended],a={captureGroup:t.rules.captureGroup,getCurrentModX(){return s.at(-1)},numOpenGroups:0,popModX(){s.pop()},pushModX(u){s.push(u)},replaceCurrentModX(u){s[s.length-1]=u},singleline:t.rules.singleline};let r=[],i;for(C.lastIndex=0;i=C.exec(e);){const u=F(a,e,i[0],C.lastIndex);u.tokens?r.push(...u.tokens):u.token&&r.push(u.token),u.lastIndex!==void 0&&(C.lastIndex=u.lastIndex)}const l=[];let c=0;r.filter(u=>u.type===\"GroupOpen\").forEach(u=>{u.kind===\"capturing\"?u.number=++c:u.raw===\"(\"&&l.push(u)}),c||l.forEach((u,S)=>{u.kind=\"capturing\",u.number=S+1});const g=c||l.length;return{tokens:r.map(u=>u.type===\"EscapedNumber\"?ee(u,g):u).flat(),flags:o}}function F(e,n,t,o){const[s,a]=t;if(t===\"[\"||t===\"[^\"){const r=K(n,t,o);return{tokens:r.tokens,lastIndex:r.lastIndex}}if(s===\"\\\\\"){if(\"AbBGyYzZ\".includes(a))return{token:w(t,t)};if(/^\\\\g[<']/.test(t)){if(!/^\\\\g(?:<[^>]+>|'[^']+')$/.test(t))throw new Error(`Invalid group name \"${t}\"`);return{token:R(t)}}if(/^\\\\k[<']/.test(t)){if(!/^\\\\k(?:<[^>]+>|'[^']+')$/.test(t))throw new Error(`Invalid group name \"${t}\"`);return{token:A(t)}}if(a===\"K\")return{token:I(\"keep\",t)};if(a===\"N\"||a===\"R\")return{token:k(\"newline\",t,{negate:a===\"N\"})};if(a===\"O\")return{token:k(\"any\",t)};if(a===\"X\")return{token:k(\"text_segment\",t)};const r=x(t,{inCharClass:!1});return Array.isArray(r)?{tokens:r}:{token:r}}if(s===\"(\"){if(a===\"*\")return{token:j(t)};if(t===\"(?{\")throw new Error(`Unsupported callout \"${t}\"`);if(t.startsWith(\"(?#\")){if(n[o]!==\")\")throw new Error('Unclosed comment group \"(?#\"');return{lastIndex:o+1}}if(/^\\(\\?[-imx]+[:)]$/.test(t))return{token:L(t,e)};if(e.pushModX(e.getCurrentModX()),e.numOpenGroups++,t===\"(\"&&!e.captureGroup||t===\"(?:\")return{token:f(\"group\",t)};if(t===\"(?>\")return{token:f(\"atomic\",t)};if(t===\"(?=\"||t===\"(?!\"||t===\"(?<=\"||t===\"(?<!\")return{token:f(t[2]===\"<\"?\"lookbehind\":\"lookahead\",t,{negate:t.endsWith(\"!\")})};if(t===\"(\"&&e.captureGroup||t.startsWith(\"(?<\")&&t.endsWith(\">\")||t.startsWith(\"(?'\")&&t.endsWith(\"'\"))return{token:f(\"capturing\",t,{...t!==\"(\"&&{name:t.slice(3,-1)}})};if(t.startsWith(\"(?~\")){if(t===\"(?~|\")throw new Error(`Unsupported absence function kind \"${t}\"`);return{token:f(\"absence_repeater\",t)}}throw t===\"(?(\"?new Error(`Unsupported conditional \"${t}\"`):new Error(`Invalid or unsupported group option \"${t}\"`)}if(t===\")\"){if(e.popModX(),e.numOpenGroups--,e.numOpenGroups<0)throw new Error('Unmatched \")\"');return{token:Q(t)}}if(e.getCurrentModX()){if(t===\"#\"){const r=n.indexOf(`\n`,o);return{lastIndex:r===-1?n.length:r}}if(/^\\s$/.test(t)){const r=/\\s+/y;return r.lastIndex=o,{lastIndex:r.exec(n)?r.lastIndex:o}}}if(t===\".\")return{token:k(\"dot\",t)};if(t===\"^\"||t===\"$\"){const r=e.singleline?{\"^\":p`\\A`,$:p`\\Z`}[t]:t;return{token:w(r,t)}}return t===\"|\"?{token:P(t)}:y.test(t)?{tokens:te(t)}:{token:d(h(t),t)}}function K(e,n,t){const o=[E(n[1]===\"^\",n)];let s=1,a;for(T.lastIndex=t;a=T.exec(e);){const r=a[0];if(r[0]===\"[\"&&r[1]!==\":\")s++,o.push(E(r[1]===\"^\",r));else if(r===\"]\"){if(o.at(-1).type===\"CharacterClassOpen\")o.push(d(93,r));else if(s--,o.push(z(r)),!s)break}else{const i=X(r);Array.isArray(i)?o.push(...i):o.push(i)}}return{tokens:o,lastIndex:T.lastIndex||e.length}}function X(e){if(e[0]===\"\\\\\")return x(e,{inCharClass:!0});if(e[0]===\"[\"){const n=/\\[:(?<negate>\\^?)(?<name>[a-z]+):\\]/.exec(e);if(!n||!G.has(n.groups.name))throw new Error(`Invalid POSIX class \"${e}\"`);return k(\"posix\",e,{value:n.groups.name,negate:!!n.groups.negate})}return e===\"-\"?U(e):e===\"&&\"?H(e):d(h(e),e)}function x(e,{inCharClass:n}){const t=e[1];if(t===\"c\"||t===\"C\")return Z(e);if(\"dDhHsSwW\".includes(t))return q(e);if(e.startsWith(p`\\o{`))throw new Error(`Incomplete, invalid, or unsupported octal code point \"${e}\"`);if(/^\\\\[pP]\\{/.test(e)){if(e.length===3)throw new Error(`Incomplete or invalid Unicode property \"${e}\"`);return V(e)}if(/^\\\\x[89A-Fa-f]\\p{AHex}/u.test(e))try{const o=e.split(/\\\\x/).slice(1).map(i=>parseInt(i,16)),s=new TextDecoder(\"utf-8\",{ignoreBOM:!0,fatal:!0}).decode(new Uint8Array(o)),a=new TextEncoder;return[...s].map(i=>{const l=[...a.encode(i)].map(c=>`\\\\x${c.toString(16)}`).join(\"\");return d(h(i),l)})}catch{throw new Error(`Multibyte code \"${e}\" incomplete or invalid in Oniguruma`)}if(t===\"u\"||t===\"x\")return d(J(e),e);if($.has(t))return d($.get(t),e);if(/\\d/.test(t))return W(n,e);if(e===\"\\\\\")throw new Error(p`Incomplete escape \"\\\"`);if(t===\"M\")throw new Error(`Unsupported meta \"${e}\"`);if([...e].length===2)return d(e.codePointAt(1),e);throw new Error(`Unexpected escape \"${e}\"`)}function P(e){return{type:\"Alternator\",raw:e}}function w(e,n){return{type:\"Assertion\",kind:e,raw:n}}function A(e){return{type:\"Backreference\",raw:e}}function d(e,n){return{type:\"Character\",value:e,raw:n}}function z(e){return{type:\"CharacterClassClose\",raw:e}}function U(e){return{type:\"CharacterClassHyphen\",raw:e}}function H(e){return{type:\"CharacterClassIntersector\",raw:e}}function E(e,n){return{type:\"CharacterClassOpen\",negate:e,raw:n}}function k(e,n,t={}){return{type:\"CharacterSet\",kind:e,...t,raw:n}}function I(e,n,t={}){return e===\"keep\"?{type:\"Directive\",kind:e,raw:n}:{type:\"Directive\",kind:e,flags:N(t.flags),raw:n}}function W(e,n){return{type:\"EscapedNumber\",inCharClass:e,raw:n}}function Q(e){return{type:\"GroupClose\",raw:e}}function f(e,n,t={}){return{type:\"GroupOpen\",kind:e,...t,raw:n}}function D(e,n,t,o){return{type:\"NamedCallout\",kind:e,tag:n,arguments:t,raw:o}}function _(e,n,t,o){return{type:\"Quantifier\",kind:e,min:n,max:t,raw:o}}function R(e){return{type:\"Subroutine\",raw:e}}const B=new Set([\"COUNT\",\"CMP\",\"ERROR\",\"FAIL\",\"MAX\",\"MISMATCH\",\"SKIP\",\"TOTAL_COUNT\"]),$=new Map([[\"a\",7],[\"b\",8],[\"e\",27],[\"f\",12],[\"n\",10],[\"r\",13],[\"t\",9],[\"v\",11]]);function Z(e){const n=e[1]===\"c\"?e[2]:e[3];if(!n||!/[A-Za-z]/.test(n))throw new Error(`Unsupported control character \"${e}\"`);return d(h(n.toUpperCase())-64,e)}function L(e,n){let{on:t,off:o}=/^\\(\\?(?<on>[imx]*)(?:-(?<off>[-imx]*))?/.exec(e).groups;o??=\"\";const s=(n.getCurrentModX()||t.includes(\"x\"))&&!o.includes(\"x\"),a=v(t),r=v(o),i={};if(a&&(i.enable=a),r&&(i.disable=r),e.endsWith(\")\"))return n.replaceCurrentModX(s),I(\"flags\",e,{flags:i});if(e.endsWith(\":\"))return n.pushModX(s),n.numOpenGroups++,f(\"group\",e,{...(a||r)&&{flags:i}});throw new Error(`Unexpected flag modifier \"${e}\"`)}function j(e){const n=/\\(\\*(?<name>[A-Za-z_]\\w*)?(?:\\[(?<tag>(?:[A-Za-z_]\\w*)?)\\])?(?:\\{(?<args>[^}]*)\\})?\\)/.exec(e);if(!n)throw new Error(`Incomplete or invalid named callout \"${e}\"`);const{name:t,tag:o,args:s}=n.groups;if(!t)throw new Error(`Invalid named callout \"${e}\"`);if(o===\"\")throw new Error(`Named callout tag with empty value not allowed \"${e}\"`);const a=s?s.split(\",\").filter(g=>g!==\"\").map(g=>/^[+-]?\\d+$/.test(g)?+g:g):[],[r,i,l]=a,c=B.has(t)?t.toLowerCase():\"custom\";switch(c){case\"fail\":case\"mismatch\":case\"skip\":if(a.length>0)throw new Error(`Named callout arguments not allowed \"${a}\"`);break;case\"error\":if(a.length>1)throw new Error(`Named callout allows only one argument \"${a}\"`);if(typeof r==\"string\")throw new Error(`Named callout argument must be a number \"${r}\"`);break;case\"max\":if(!a.length||a.length>2)throw new Error(`Named callout must have one or two arguments \"${a}\"`);if(typeof r==\"string\"&&!/^[A-Za-z_]\\w*$/.test(r))throw new Error(`Named callout argument one must be a tag or number \"${r}\"`);if(a.length===2&&(typeof i==\"number\"||!/^[<>X]$/.test(i)))throw new Error(`Named callout optional argument two must be '<', '>', or 'X' \"${i}\"`);break;case\"count\":case\"total_count\":if(a.length>1)throw new Error(`Named callout allows only one argument \"${a}\"`);if(a.length===1&&(typeof r==\"number\"||!/^[<>X]$/.test(r)))throw new Error(`Named callout optional argument must be '<', '>', or 'X' \"${r}\"`);break;case\"cmp\":if(a.length!==3)throw new Error(`Named callout must have three arguments \"${a}\"`);if(typeof r==\"string\"&&!/^[A-Za-z_]\\w*$/.test(r))throw new Error(`Named callout argument one must be a tag or number \"${r}\"`);if(typeof i==\"number\"||!/^(?:[<>!=]=|[<>])$/.test(i))throw new Error(`Named callout argument two must be '==', '!=', '>', '<', '>=', or '<=' \"${i}\"`);if(typeof l==\"string\"&&!/^[A-Za-z_]\\w*$/.test(l))throw new Error(`Named callout argument three must be a tag or number \"${l}\"`);break;case\"custom\":throw new Error(`Undefined callout name \"${t}\"`);default:throw new Error(`Unexpected named callout kind \"${c}\"`)}return D(c,o??null,s?.split(\",\")??null,e)}function O(e){let n=null,t,o;if(e[0]===\"{\"){const{minStr:s,maxStr:a}=/^\\{(?<minStr>\\d*)(?:,(?<maxStr>\\d*))?/.exec(e).groups,r=1e5;if(+s>r||a&&+a>r)throw new Error(\"Quantifier value unsupported in Oniguruma\");if(t=+s,o=a===void 0?+s:a===\"\"?1/0:+a,t>o&&(n=\"possessive\",[t,o]=[o,t]),e.endsWith(\"?\")){if(n===\"possessive\")throw new Error('Unsupported possessive interval quantifier chain with \"?\"');n=\"lazy\"}else n||(n=\"greedy\")}else t=e[0]===\"+\"?1:0,o=e[0]===\"?\"?1:1/0,n=e[1]===\"+\"?\"possessive\":e[1]===\"?\"?\"lazy\":\"greedy\";return _(n,t,o,e)}function q(e){const n=e[1].toLowerCase();return k({d:\"digit\",h:\"hex\",s:\"space\",w:\"word\"}[n],e,{negate:e[1]!==n})}function V(e){const{p:n,neg:t,value:o}=/^\\\\(?<p>[pP])\\{(?<neg>\\^?)(?<value>[^}]+)/.exec(e).groups;return k(\"property\",e,{value:o,negate:n===\"P\"&&!t||n===\"p\"&&!!t})}function v(e){const n={};return e.includes(\"i\")&&(n.ignoreCase=!0),e.includes(\"m\")&&(n.dotAll=!0),e.includes(\"x\")&&(n.extended=!0),Object.keys(n).length?n:null}function Y(e){const n={ignoreCase:!1,dotAll:!1,extended:!1,digitIsAscii:!1,posixIsAscii:!1,spaceIsAscii:!1,wordIsAscii:!1,textSegmentMode:null};for(let t=0;t<e.length;t++){const o=e[t];if(!\"imxDPSWy\".includes(o))throw new Error(`Invalid flag \"${o}\"`);if(o===\"y\"){if(!/^y{[gw]}/.test(e.slice(t)))throw new Error('Invalid or unspecified flag \"y\" mode');n.textSegmentMode=e[t+2]===\"g\"?\"grapheme\":\"word\",t+=3;continue}n[{i:\"ignoreCase\",m:\"dotAll\",x:\"extended\",D:\"digitIsAscii\",P:\"posixIsAscii\",S:\"spaceIsAscii\",W:\"wordIsAscii\"}[o]]=!0}return n}function J(e){if(/^(?:\\\\u(?!\\p{AHex}{4})|\\\\x(?!\\p{AHex}{1,2}|\\{\\p{AHex}{1,8}\\}))/u.test(e))throw new Error(`Incomplete or invalid escape \"${e}\"`);const n=e[2]===\"{\"?/^\\\\x\\{\\s*(?<hex>\\p{AHex}+)/u.exec(e).groups.hex:e.slice(2);return parseInt(n,16)}function ee(e,n){const{raw:t,inCharClass:o}=e,s=t.slice(1);if(!o&&(s!==\"0\"&&s.length===1||s[0]!==\"0\"&&+s<=n))return[A(t)];const a=[],r=s.match(/^[0-7]+|\\d/g);for(let i=0;i<r.length;i++){const l=r[i];let c;if(i===0&&l!==\"8\"&&l!==\"9\"){if(c=parseInt(l,8),c>127)throw new Error(p`Octal encoded byte above 177 unsupported \"${t}\"`)}else c=h(l);a.push(d(c,(i===0?\"\\\\\":\"\")+l))}return a}function te(e){const n=[],t=new RegExp(y,\"gy\");let o;for(;o=t.exec(e);){const s=o[0];if(s[0]===\"{\"){const a=/^\\{(?<min>\\d+),(?<max>\\d+)\\}\\??$/.exec(s);if(a){const{min:r,max:i}=a.groups;if(+r>+i&&s.endsWith(\"?\")){t.lastIndex--,n.push(O(s.slice(0,-1)));continue}}}n.push(O(s))}return n}export{M as tokenize};\n//# sourceMappingURL=tokenize.js.map\n","\"use strict\";function o(e,t){if(!Array.isArray(e.body))throw new Error(\"Expected node with body array\");if(e.body.length!==1)return!1;const r=e.body[0];return!t||Object.keys(t).every(n=>t[n]===r[n])}function a(e){return!(!i.has(e.type)||e.type===\"AbsenceFunction\"&&e.kind!==\"repeater\")}const i=new Set([\"AbsenceFunction\",\"CapturingGroup\",\"Group\",\"LookaroundAssertion\",\"Regex\"]);function s(e){return y.has(e.type)}const y=new Set([\"AbsenceFunction\",\"Backreference\",\"CapturingGroup\",\"Character\",\"CharacterClass\",\"CharacterSet\",\"Group\",\"Quantifier\",\"Subroutine\"]);export{o as hasOnlyChild,a as isAlternativeContainer,s as isQuantifiable};\n//# sourceMappingURL=node-utils.js.map\n","\"use strict\";import{tokenize as q}from\"../tokenizer/tokenize.js\";import{cpOf as H,getOrInsert as Z,PosixClassNames as x,r as y,throwIfNullish as g}from\"../utils.js\";import{hasOnlyChild as Y,isAlternativeContainer as j,isQuantifiable as S}from\"./node-utils.js\";function J(e,r={}){const n={flags:\"\",normalizeUnknownPropertyNames:!1,skipBackrefValidation:!1,skipLookbehindValidation:!1,skipPropertyNameValidation:!1,unicodePropertyMap:null,...r,rules:{captureGroup:!1,singleline:!1,...r.rules}},o=q(e,{flags:n.flags,rules:{captureGroup:n.rules.captureGroup,singleline:n.rules.singleline}}),i=(p,N)=>{const u=o.tokens[t.nextIndex];switch(t.parent=p,t.nextIndex++,u.type){case\"Alternator\":return b();case\"Assertion\":return W(u);case\"Backreference\":return X(u,t);case\"Character\":return m(u.value,{useLastValid:!!N.isCheckingRangeEnd});case\"CharacterClassHyphen\":return ee(u,t,N);case\"CharacterClassOpen\":return re(u,t,N);case\"CharacterSet\":return ne(u,t);case\"Directive\":return I(u.kind,{flags:u.flags});case\"GroupOpen\":return te(u,t,N);case\"NamedCallout\":return U(u.kind,u.tag,u.arguments);case\"Quantifier\":return oe(u,t);case\"Subroutine\":return ae(u,t);default:throw new Error(`Unexpected token type \"${u.type}\"`)}},t={capturingGroups:[],hasNumberedRef:!1,namedGroupsByName:new Map,nextIndex:0,normalizeUnknownPropertyNames:n.normalizeUnknownPropertyNames,parent:null,skipBackrefValidation:n.skipBackrefValidation,skipLookbehindValidation:n.skipLookbehindValidation,skipPropertyNameValidation:n.skipPropertyNameValidation,subroutines:[],tokens:o.tokens,unicodePropertyMap:n.unicodePropertyMap,walk:i},d=B(T(o.flags));let s=d.body[0];for(;t.nextIndex<o.tokens.length;){const p=i(s,{});p.type===\"Alternative\"?(d.body.push(p),s=p):s.body.push(p)}const{capturingGroups:a,hasNumberedRef:l,namedGroupsByName:c,subroutines:f}=t;if(l&&c.size&&!n.rules.captureGroup)throw new Error(\"Numbered backref/subroutine not allowed when using named capture\");for(const{ref:p}of f)if(typeof p==\"number\"){if(p>a.length)throw new Error(\"Subroutine uses a group number that's not defined\");p&&(a[p-1].isSubroutined=!0)}else if(c.has(p)){if(c.get(p).length>1)throw new Error(y`Subroutine uses a duplicate group name \"\\g<${p}>\"`);c.get(p)[0].isSubroutined=!0}else throw new Error(y`Subroutine uses a group name that's not defined \"\\g<${p}>\"`);return d}function W({kind:e}){return F(g({\"^\":\"line_start\",$:\"line_end\",\"\\\\A\":\"string_start\",\"\\\\b\":\"word_boundary\",\"\\\\B\":\"word_boundary\",\"\\\\G\":\"search_start\",\"\\\\y\":\"text_segment_boundary\",\"\\\\Y\":\"text_segment_boundary\",\"\\\\z\":\"string_end\",\"\\\\Z\":\"string_end_newline\"}[e],`Unexpected assertion kind \"${e}\"`),{negate:e===y`\\B`||e===y`\\Y`})}function X({raw:e},r){const n=/^\\\\k[<']/.test(e),o=n?e.slice(3,-1):e.slice(1),i=(t,d=!1)=>{const s=r.capturingGroups.length;let a=!1;if(t>s)if(r.skipBackrefValidation)a=!0;else throw new Error(`Not enough capturing groups defined to the left \"${e}\"`);return r.hasNumberedRef=!0,k(d?s+1-t:t,{orphan:a})};if(n){const t=/^(?<sign>-?)0*(?<num>[1-9]\\d*)$/.exec(o);if(t)return i(+t.groups.num,!!t.groups.sign);if(/[-+]/.test(o))throw new Error(`Invalid backref name \"${e}\"`);if(!r.namedGroupsByName.has(o))throw new Error(`Group name not defined to the left \"${e}\"`);return k(o)}return i(+o)}function ee(e,r,n){const{tokens:o,walk:i}=r,t=r.parent,d=t.body.at(-1),s=o[r.nextIndex];if(!n.isCheckingRangeEnd&&d&&d.type!==\"CharacterClass\"&&d.type!==\"CharacterClassRange\"&&s&&s.type!==\"CharacterClassOpen\"&&s.type!==\"CharacterClassClose\"&&s.type!==\"CharacterClassIntersector\"){const a=i(t,{...n,isCheckingRangeEnd:!0});if(d.type===\"Character\"&&a.type===\"Character\")return t.body.pop(),L(d,a);throw new Error(\"Invalid character class range\")}return m(H(\"-\"))}function re({negate:e},r,n){const{tokens:o,walk:i}=r,t=[C()],d=o[r.nextIndex];let s=z(d);for(;s.type!==\"CharacterClassClose\";){if(s.type===\"CharacterClassIntersector\")t.push(C()),r.nextIndex++;else{const l=t.at(-1);l.body.push(i(l,n))}s=z(o[r.nextIndex],d)}const a=C({negate:e});return t.length===1?a.body=t[0].body:(a.kind=\"intersection\",a.body=t.map(l=>l.body.length===1?l.body[0]:l)),r.nextIndex++,a}function ne({kind:e,negate:r,value:n},o){const{normalizeUnknownPropertyNames:i,skipPropertyNameValidation:t,unicodePropertyMap:d}=o;if(e===\"property\"){const s=w(n);if(x.has(s)&&!d?.has(s))e=\"posix\",n=s;else return Q(n,{negate:r,normalizeUnknownPropertyNames:i,skipPropertyNameValidation:t,unicodePropertyMap:d})}return e===\"posix\"?R(n,{negate:r}):E(e,{negate:r})}function te(e,r,n){const{tokens:o,capturingGroups:i,namedGroupsByName:t,skipLookbehindValidation:d,walk:s}=r,a=ie(e),l=a.type===\"AbsenceFunction\",c=$(a),f=c&&a.negate;if(a.type===\"CapturingGroup\"&&(i.push(a),a.name&&Z(t,a.name,[]).push(a)),l&&n.isInAbsenceFunction)throw new Error(\"Nested absence function not supported by Oniguruma\");let p=D(o[r.nextIndex]);for(;p.type!==\"GroupClose\";){if(p.type===\"Alternator\")a.body.push(b()),r.nextIndex++;else{const N=a.body.at(-1),u=s(N,{...n,isInAbsenceFunction:n.isInAbsenceFunction||l,isInLookbehind:n.isInLookbehind||c,isInNegLookbehind:n.isInNegLookbehind||f});if(N.body.push(u),(c||n.isInLookbehind)&&!d){const v=\"Lookbehind includes a pattern not allowed by Oniguruma\";if(f||n.isInNegLookbehind){if(M(u)||u.type===\"CapturingGroup\")throw new Error(v)}else if(M(u)||$(u)&&u.negate)throw new Error(v)}}p=D(o[r.nextIndex])}return r.nextIndex++,a}function oe({kind:e,min:r,max:n},o){const i=o.parent,t=i.body.at(-1);if(!t||!S(t))throw new Error(\"Quantifier requires a repeatable token\");const d=_(e,r,n,t);return i.body.pop(),d}function ae({raw:e},r){const{capturingGroups:n,subroutines:o}=r;let i=e.slice(3,-1);const t=/^(?<sign>[-+]?)0*(?<num>[1-9]\\d*)$/.exec(i);if(t){const s=+t.groups.num,a=n.length;if(r.hasNumberedRef=!0,i={\"\":s,\"+\":a+s,\"-\":a+1-s}[t.groups.sign],i<1)throw new Error(\"Invalid subroutine number\")}else i===\"0\"&&(i=0);const d=O(i);return o.push(d),d}function G(e,r){if(e!==\"repeater\")throw new Error(`Unexpected absence function kind \"${e}\"`);return{type:\"AbsenceFunction\",kind:e,body:h(r?.body)}}function b(e){return{type:\"Alternative\",body:V(e?.body)}}function F(e,r){const n={type:\"Assertion\",kind:e};return(e===\"word_boundary\"||e===\"text_segment_boundary\")&&(n.negate=!!r?.negate),n}function k(e,r){const n=!!r?.orphan;return{type:\"Backreference\",ref:e,...n&&{orphan:n}}}function P(e,r){const n={name:void 0,isSubroutined:!1,...r};if(n.name!==void 0&&!se(n.name))throw new Error(`Group name \"${n.name}\" invalid in Oniguruma`);return{type:\"CapturingGroup\",number:e,...n.name&&{name:n.name},...n.isSubroutined&&{isSubroutined:n.isSubroutined},body:h(r?.body)}}function m(e,r){const n={useLastValid:!1,...r};if(e>1114111){const o=e.toString(16);if(n.useLastValid)e=1114111;else throw e>1310719?new Error(`Invalid code point out of range \"\\\\x{${o}}\"`):new Error(`Invalid code point out of range in JS \"\\\\x{${o}}\"`)}return{type:\"Character\",value:e}}function C(e){const r={kind:\"union\",negate:!1,...e};return{type:\"CharacterClass\",kind:r.kind,negate:r.negate,body:V(e?.body)}}function L(e,r){if(r.value<e.value)throw new Error(\"Character class range out of order\");return{type:\"CharacterClassRange\",min:e,max:r}}function E(e,r){const n=!!r?.negate,o={type:\"CharacterSet\",kind:e};return(e===\"digit\"||e===\"hex\"||e===\"newline\"||e===\"space\"||e===\"word\")&&(o.negate=n),(e===\"text_segment\"||e===\"newline\"&&!n)&&(o.variableLength=!0),o}function I(e,r={}){if(e===\"keep\")return{type:\"Directive\",kind:e};if(e===\"flags\")return{type:\"Directive\",kind:e,flags:g(r.flags)};throw new Error(`Unexpected directive kind \"${e}\"`)}function T(e){return{type:\"Flags\",...e}}function A(e){const r=e?.atomic,n=e?.flags;if(r&&n)throw new Error(\"Atomic group cannot have flags\");return{type:\"Group\",...r&&{atomic:r},...n&&{flags:n},body:h(e?.body)}}function K(e){const r={behind:!1,negate:!1,...e};return{type:\"LookaroundAssertion\",kind:r.behind?\"lookbehind\":\"lookahead\",negate:r.negate,body:h(e?.body)}}function U(e,r,n){return{type:\"NamedCallout\",kind:e,tag:r,arguments:n}}function R(e,r){const n=!!r?.negate;if(!x.has(e))throw new Error(`Invalid POSIX class \"${e}\"`);return{type:\"CharacterSet\",kind:\"posix\",value:e,negate:n}}function _(e,r,n,o){if(r>n)throw new Error(\"Invalid reversed quantifier range\");return{type:\"Quantifier\",kind:e,min:r,max:n,body:o}}function B(e,r){return{type:\"Regex\",body:h(r?.body),flags:e}}function O(e){return{type:\"Subroutine\",ref:e}}function Q(e,r){const n={negate:!1,normalizeUnknownPropertyNames:!1,skipPropertyNameValidation:!1,unicodePropertyMap:null,...r};let o=n.unicodePropertyMap?.get(w(e));if(!o){if(n.normalizeUnknownPropertyNames)o=de(e);else if(n.unicodePropertyMap&&!n.skipPropertyNameValidation)throw new Error(y`Invalid Unicode property \"\\p{${e}}\"`)}return{type:\"CharacterSet\",kind:\"property\",value:o??e,negate:n.negate}}function ie({flags:e,kind:r,name:n,negate:o,number:i}){switch(r){case\"absence_repeater\":return G(\"repeater\");case\"atomic\":return A({atomic:!0});case\"capturing\":return P(i,{name:n});case\"group\":return A({flags:e});case\"lookahead\":case\"lookbehind\":return K({behind:r===\"lookbehind\",negate:o});default:throw new Error(`Unexpected group kind \"${r}\"`)}}function h(e){if(e===void 0)e=[b()];else if(!Array.isArray(e)||!e.length||!e.every(r=>r.type===\"Alternative\"))throw new Error(\"Invalid body; expected array of one or more Alternative nodes\");return e}function V(e){if(e===void 0)e=[];else if(!Array.isArray(e)||!e.every(r=>!!r.type))throw new Error(\"Invalid body; expected array of nodes\");return e}function M(e){return e.type===\"LookaroundAssertion\"&&e.kind===\"lookahead\"}function $(e){return e.type===\"LookaroundAssertion\"&&e.kind===\"lookbehind\"}function se(e){return/^[\\p{Alpha}\\p{Pc}][^)]*$/u.test(e)}function de(e){return e.trim().replace(/[- _]+/g,\"_\").replace(/[A-Z][a-z]+(?=[A-Z])/g,\"$&_\").replace(/[A-Za-z]+/g,r=>r[0].toUpperCase()+r.slice(1).toLowerCase())}function w(e){return e.replace(/[- _]+/g,\"\").toLowerCase()}function z(e,r){const n=r;return g(e,`Unclosed character class${n?.type===\"Character\"&&n.value===93&&n.raw===\"]\"?' (started with \"]\")':\"\"}`)}function D(e){return g(e,\"Unclosed group\")}export{G as createAbsenceFunction,b as createAlternative,F as createAssertion,k as createBackreference,P as createCapturingGroup,m as createCharacter,C as createCharacterClass,L as createCharacterClassRange,E as createCharacterSet,I as createDirective,T as createFlags,A as createGroup,K as createLookaroundAssertion,U as createNamedCallout,R as createPosixClass,_ as createQuantifier,B as createRegex,O as createSubroutine,Q as createUnicodeProperty,Y as hasOnlyChild,j as isAlternativeContainer,S as isQuantifiable,J as parse,w as slug};\n//# sourceMappingURL=parse.js.map\n","\"use strict\";import{throwIfNullish as A}from\"../utils.js\";function S(a,v,N=null){function b(e,s){for(let t=0;t<e.length;t++){const r=n(e[t],s,t,e);t=Math.max(-1,t+r)}}function n(e,s=null,t=null,r=null){let i=0,c=!1;const d={node:e,parent:s,key:t,container:r,root:a,remove(){x(r).splice(Math.max(0,l(t)+i),1),i--,c=!0},removeAllNextSiblings(){return x(r).splice(l(t)+1)},removeAllPrevSiblings(){const o=l(t)+i;return i-=o,x(r).splice(0,Math.max(0,o))},replaceWith(o,m={}){const y=!!m.traverse;r?r[Math.max(0,l(t)+i)]=o:A(s,\"Can't replace root node\")[t]=o,y&&n(o,s,t,r),c=!0},replaceWithMultiple(o,m={}){const y=!!m.traverse;if(x(r).splice(Math.max(0,l(t)+i),1,...o),i+=o.length-1,y){let g=0;for(let p=0;p<o.length;p++)g+=n(o[p],s,l(t)+p+g,r)}c=!0},skip(){c=!0}},{type:f}=e,u=v[\"*\"],h=v[f],R=typeof u==\"function\"?u:u?.enter,P=typeof h==\"function\"?h:h?.enter;if(R?.(d,N),P?.(d,N),!c)switch(f){case\"AbsenceFunction\":case\"Alternative\":case\"CapturingGroup\":case\"CharacterClass\":case\"Group\":case\"LookaroundAssertion\":b(e.body,e);break;case\"Assertion\":case\"Backreference\":case\"Character\":case\"CharacterSet\":case\"Directive\":case\"Flags\":case\"NamedCallout\":case\"Subroutine\":break;case\"CharacterClassRange\":n(e.min,e,\"min\"),n(e.max,e,\"max\");break;case\"Quantifier\":n(e.body,e,\"body\");break;case\"Regex\":b(e.body,e),n(e.flags,e,\"flags\");break;default:throw new Error(`Unexpected node type \"${f}\"`)}return h?.exit?.(d,N),u?.exit?.(d,N),i}return n(a),a}function x(a){if(!Array.isArray(a))throw new Error(\"Container expected\");return a}function l(a){if(typeof a!=\"number\")throw new Error(\"Numeric key expected\");return a}export{S as traverse};\n//# sourceMappingURL=traverse.js.map\n","// Separating some utils for improved tree shaking of the `./internals` export\n\nconst noncapturingDelim = String.raw`\\(\\?(?:[:=!>A-Za-z\\-]|<[=!]|\\(DEFINE\\))`;\n\n/**\nUpdates the array in place by incrementing each value greater than or equal to the threshold.\n@param {Array<number>} arr\n@param {number} threshold\n*/\nfunction incrementIfAtLeast(arr, threshold) {\n for (let i = 0; i < arr.length; i++) {\n if (arr[i] >= threshold) {\n arr[i]++;\n }\n }\n}\n\n/**\n@param {string} str\n@param {number} pos\n@param {string} oldValue\n@param {string} newValue\n@returns {string}\n*/\nfunction spliceStr(str, pos, oldValue, newValue) {\n return str.slice(0, pos) + newValue + str.slice(pos + oldValue.length);\n}\n\nexport {\n incrementIfAtLeast,\n noncapturingDelim,\n spliceStr,\n};\n","// Constant properties for tracking regex syntax context\nexport const Context = Object.freeze({\n DEFAULT: 'DEFAULT',\n CHAR_CLASS: 'CHAR_CLASS',\n});\n\n/**\nReplaces all unescaped instances of a regex pattern in the given context, using a replacement\nstring or callback.\n\nDoesn't skip over complete multicharacter tokens (only `\\` plus its folowing char) so must be used\nwith knowledge of what's safe to do given regex syntax. Assumes UnicodeSets-mode syntax.\n@param {string} expression Search target\n@param {string} needle Search as a regex pattern, with flags `su` applied\n@param {string | (match: RegExpExecArray, details: {\n context: 'DEFAULT' | 'CHAR_CLASS';\n negated: boolean;\n}) => string} replacement\n@param {'DEFAULT' | 'CHAR_CLASS'} [context] All contexts if not specified\n@returns {string} Updated expression\n@example\nconst str = '.\\\\.\\\\\\\\.[[\\\\.].].';\nreplaceUnescaped(str, '\\\\.', '@');\n// → '@\\\\.\\\\\\\\@[[\\\\.]@]@'\nreplaceUnescaped(str, '\\\\.', '@', Context.DEFAULT);\n// → '@\\\\.\\\\\\\\@[[\\\\.].]@'\nreplaceUnescaped(str, '\\\\.', '@', Context.CHAR_CLASS);\n// → '.\\\\.\\\\\\\\.[[\\\\.]@].'\n*/\nexport function replaceUnescaped(expression, needle, replacement, context) {\n const re = new RegExp(String.raw`${needle}|(?<$skip>\\[\\^?|\\\\?.)`, 'gsu');\n const negated = [false];\n let numCharClassesOpen = 0;\n let result = '';\n for (const match of expression.matchAll(re)) {\n const {0: m, groups: {$skip}} = match;\n if (!$skip && (!context || (context === Context.DEFAULT) === !numCharClassesOpen)) {\n if (replacement instanceof Function) {\n result += replacement(match, {\n context: numCharClassesOpen ? Context.CHAR_CLASS : Context.DEFAULT,\n negated: negated[negated.length - 1],\n });\n } else {\n result += replacement;\n }\n continue;\n }\n if (m[0] === '[') {\n numCharClassesOpen++;\n negated.push(m[1] === '^');\n } else if (m === ']' && numCharClassesOpen) {\n numCharClassesOpen--;\n negated.pop();\n }\n result += m;\n }\n return result;\n}\n\n/**\nRuns a callback for each unescaped instance of a regex pattern in the given context.\n\nDoesn't skip over complete multicharacter tokens (only `\\` plus its folowing char) so must be used\nwith knowledge of what's safe to do given regex syntax. Assumes UnicodeSets-mode syntax.\n@param {string} expression Search target\n@param {string} needle Search as a regex pattern, with flags `su` applied\n@param {(match: RegExpExecArray, details: {\n context: 'DEFAULT' | 'CHAR_CLASS';\n negated: boolean;\n}) => void} callback\n@param {'DEFAULT' | 'CHAR_CLASS'} [context] All contexts if not specified\n*/\nexport function forEachUnescaped(expression, needle, callback, context) {\n // Do this the easy way\n replaceUnescaped(expression, needle, callback, context);\n}\n\n/**\nReturns a match object for the first unescaped instance of a regex pattern in the given context, or\n`null`.\n\nDoesn't skip over complete multicharacter tokens (only `\\` plus its folowing char) so must be used\nwith knowledge of what's safe to do given regex syntax. Assumes UnicodeSets-mode syntax.\n@param {string} expression Search target\n@param {string} needle Search as a regex pattern, with flags `su` applied\n@param {number} [pos] Offset to start the search\n@param {'DEFAULT' | 'CHAR_CLASS'} [context] All contexts if not specified\n@returns {RegExpExecArray | null}\n*/\nexport function execUnescaped(expression, needle, pos = 0, context) {\n // Quick partial test; avoid the loop if not needed\n if (!(new RegExp(needle, 'su').test(expression))) {\n return null;\n }\n const re = new RegExp(`${needle}|(?<$skip>\\\\\\\\?.)`, 'gsu');\n re.lastIndex = pos;\n let numCharClassesOpen = 0;\n let match;\n while (match = re.exec(expression)) {\n const {0: m, groups: {$skip}} = match;\n if (!$skip && (!context || (context === Context.DEFAULT) === !numCharClassesOpen)) {\n return match;\n }\n if (m === '[') {\n numCharClassesOpen++;\n } else if (m === ']' && numCharClassesOpen) {\n numCharClassesOpen--;\n }\n // Avoid an infinite loop on zero-length matches\n if (re.lastIndex == match.index) {\n re.lastIndex++;\n }\n }\n return null;\n}\n\n/**\nChecks whether an unescaped instance of a regex pattern appears in the given context.\n\nDoesn't skip over complete multicharacter tokens (only `\\` plus its folowing char) so must be used\nwith knowledge of what's safe to do given regex syntax. Assumes UnicodeSets-mode syntax.\n@param {string} expression Search target\n@param {string} needle Search as a regex pattern, with flags `su` applied\n@param {'DEFAULT' | 'CHAR_CLASS'} [context] All contexts if not specified\n@returns {boolean} Whether the pattern was found\n*/\nexport function hasUnescaped(expression, needle, context) {\n // Do this the easy way\n return !!execUnescaped(expression, needle, 0, context);\n}\n\n/**\nExtracts the full contents of a group (subpattern) from the given expression, accounting for\nescaped characters, nested groups, and character classes. The group is identified by the position\nwhere its contents start (the string index just after the group's opening delimiter). Returns the\nrest of the string if the group is unclosed.\n\nAssumes UnicodeSets-mode syntax.\n@param {string} expression Search target\n@param {number} contentsStartPos\n@returns {string}\n*/\nexport function getGroupContents(expression, contentsStartPos) {\n const token = /\\\\?./gsu;\n token.lastIndex = contentsStartPos;\n let contentsEndPos = expression.length;\n let numCharClassesOpen = 0;\n // Starting search within an open group, after the group's opening\n let numGroupsOpen = 1;\n let match;\n while (match = token.exec(expression)) {\n const [m] = match;\n if (m === '[') {\n numCharClassesOpen++;\n } else if (!numCharClassesOpen) {\n if (m === '(') {\n numGroupsOpen++;\n } else if (m === ')') {\n numGroupsOpen--;\n if (!numGroupsOpen) {\n contentsEndPos = match.index;\n break;\n }\n }\n } else if (m === ']') {\n numCharClassesOpen--;\n }\n }\n return expression.slice(contentsStartPos, contentsEndPos);\n}\n","import {incrementIfAtLeast, noncapturingDelim, spliceStr} from './utils-internals.js';\nimport {Context, replaceUnescaped} from 'regex-utilities';\n/**\n@import {PluginData, PluginResult} from './regex.js';\n*/\n\nconst atomicPluginToken = new RegExp(String.raw`(?<noncapturingStart>${noncapturingDelim})|(?<capturingStart>\\((?:\\?<[^>]+>)?)|\\\\?.`, 'gsu');\n\n/**\nApply transformations for atomic groups: `(?>…)`.\n@param {string} expression\n@param {PluginData} [data]\n@returns {Required<PluginResult>}\n*/\nfunction atomic(expression, data) {\n const hiddenCaptures = data?.hiddenCaptures ?? [];\n // Capture transfer is used by <github.com/slevithan/oniguruma-to-es>\n let captureTransfers = data?.captureTransfers ?? new Map();\n if (!/\\(\\?>/.test(expression)) {\n return {\n pattern: expression,\n captureTransfers,\n hiddenCaptures,\n };\n }\n\n const aGDelim = '(?>';\n const emulatedAGDelim = '(?:(?=(';\n const captureNumMap = [0];\n const addedHiddenCaptures = [];\n let numCapturesBeforeAG = 0;\n let numAGs = 0;\n let aGPos = NaN;\n let hasProcessedAG;\n do {\n hasProcessedAG = false;\n let numCharClassesOpen = 0;\n let numGroupsOpenInAG = 0;\n let inAG = false;\n let match;\n atomicPluginToken.lastIndex = Number.isNaN(aGPos) ? 0 : aGPos + emulatedAGDelim.length;\n while (match = atomicPluginToken.exec(expression)) {\n const {0: m, index, groups: {capturingStart, noncapturingStart}} = match;\n if (m === '[') {\n numCharClassesOpen++;\n } else if (!numCharClassesOpen) {\n\n if (m === aGDelim && !inAG) {\n aGPos = index;\n inAG = true;\n } else if (inAG && noncapturingStart) {\n numGroupsOpenInAG++;\n } else if (capturingStart) {\n if (inAG) {\n numGroupsOpenInAG++;\n } else {\n numCapturesBeforeAG++;\n captureNumMap.push(numCapturesBeforeAG + numAGs);\n }\n } else if (m === ')' && inAG) {\n if (!numGroupsOpenInAG) {\n numAGs++;\n const addedCaptureNum = numCapturesBeforeAG + numAGs;\n // Replace `expression` and use `<$$N>` as a temporary wrapper for the backref so it\n // can avoid backref renumbering afterward. Wrap the whole substitution (including the\n // lookahead and following backref) in a noncapturing group to handle following\n // quantifiers and literal digits\n expression = `${expression.slice(0, aGPos)}${emulatedAGDelim}${\n expression.slice(aGPos + aGDelim.length, index)\n }))<$$${addedCaptureNum}>)${expression.slice(index + 1)}`;\n hasProcessedAG = true;\n addedHiddenCaptures.push(addedCaptureNum);\n incrementIfAtLeast(hiddenCaptures, addedCaptureNum);\n if (captureTransfers.size) {\n const newCaptureTransfers = new Map();\n captureTransfers.forEach((from, to) => {\n newCaptureTransfers.set(\n to >= addedCaptureNum ? to + 1 : to,\n from.map(f => f >= addedCaptureNum ? f + 1 : f)\n );\n });\n captureTransfers = newCaptureTransfers;\n }\n break;\n }\n numGroupsOpenInAG--;\n }\n\n } else if (m === ']') {\n numCharClassesOpen--;\n }\n }\n // Start over from the beginning of the atomic group's contents, in case the processed group\n // contains additional atomic groups\n } while (hasProcessedAG);\n\n hiddenCaptures.push(...addedHiddenCaptures);\n\n // Second pass to adjust numbered backrefs\n expression = replaceUnescaped(\n expression,\n String.raw`\\\\(?<backrefNum>[1-9]\\d*)|<\\$\\$(?<wrappedBackrefNum>\\d+)>`,\n ({0: m, groups: {backrefNum, wrappedBackrefNum}}) => {\n if (backrefNum) {\n const bNum = +backrefNum;\n if (bNum > captureNumMap.length - 1) {\n throw new Error(`Backref \"${m}\" greater than number of captures`);\n }\n return `\\\\${captureNumMap[bNum]}`;\n }\n return `\\\\${wrappedBackrefNum}`;\n },\n Context.DEFAULT\n );\n\n return {\n pattern: expression,\n captureTransfers,\n hiddenCaptures,\n };\n}\n\nconst baseQuantifier = String.raw`(?:[?*+]|\\{\\d+(?:,\\d*)?\\})`;\n// Complete tokenizer for base syntax; doesn't (need to) know about character-class-only syntax\nconst possessivePluginToken = new RegExp(String.raw`\n\\\\(?: \\d+\n | c[A-Za-z]\n | [gk]<[^>]+>\n | [pPu]\\{[^\\}]+\\}\n | u[A-Fa-f\\d]{4}\n | x[A-Fa-f\\d]{2}\n )\n| \\((?: \\? (?: [:=!>]\n | <(?:[=!]|[^>]+>)\n | [A-Za-z\\-]+:\n | \\(DEFINE\\)\n ))?\n| (?<qBase>${baseQuantifier})(?<qMod>[?+]?)(?<invalidQ>[?*+\\{]?)\n| \\\\?.\n`.replace(/\\s+/g, ''), 'gsu');\n\n/**\nTransform posessive quantifiers into atomic groups. The posessessive quantifiers are:\n`?+`, `*+`, `++`, `{N}+`, `{N,}+`, `{N,N}+`.\nThis follows Java, PCRE, Perl, and Python.\nPossessive quantifiers in Oniguruma and Onigmo are only: `?+`, `*+`, `++`.\n@param {string} expression\n@returns {PluginResult}\n*/\nfunction possessive(expression) {\n if (!(new RegExp(`${baseQuantifier}\\\\+`).test(expression))) {\n return {\n pattern: expression,\n };\n }\n\n const openGroupIndices = [];\n let lastGroupIndex = null;\n let lastCharClassIndex = null;\n let lastToken = '';\n let numCharClassesOpen = 0;\n let match;\n possessivePluginToken.lastIndex = 0;\n while (match = possessivePluginToken.exec(expression)) {\n const {0: m, index, groups: {qBase, qMod, invalidQ}} = match;\n if (m === '[') {\n if (!numCharClassesOpen) {\n lastCharClassIndex = index;\n }\n numCharClassesOpen++;\n } else if (m === ']') {\n if (numCharClassesOpen) {\n numCharClassesOpen--;\n // Unmatched `]`\n } else {\n lastCharClassIndex = null;\n }\n } else if (!numCharClassesOpen) {\n\n if (qMod === '+' && lastToken && !lastToken.startsWith('(')) {\n // Invalid following quantifier would become valid via the wrapping group\n if (invalidQ) {\n throw new Error(`Invalid quantifier \"${m}\"`);\n }\n let charsAdded = -1; // -1 for removed trailing `+`\n // Possessivizing fixed repetition quantifiers like `{2}` does't change their behavior, so\n // avoid doing so (convert them to greedy)\n if (/^\\{\\d+\\}$/.test(qBase)) {\n expression = spliceStr(expression, index + qBase.length, qMod, '');\n } else {\n if (lastToken === ')' || lastToken === ']') {\n const nodeIndex = lastToken === ')' ? lastGroupIndex : lastCharClassIndex;\n // Unmatched `)` would break out of the wrapping group and mess with handling.\n // Unmatched `]` wouldn't be a problem, but it's unnecessary to have dedicated support\n // for unescaped `]++` since this won't work with flag u or v anyway\n if (nodeIndex === null) {\n throw new Error(`Invalid unmatched \"${lastToken}\"`);\n }\n expression = `${expression.slice(0, nodeIndex)}(?>${expression.slice(nodeIndex, index)}${qBase})${expression.slice(index + m.length)}`;\n } else {\n expression = `${expression.slice(0, index - lastToken.length)}(?>${lastToken}${qBase})${expression.slice(index + m.length)}`;\n }\n charsAdded += 4; // `(?>)`\n }\n possessivePluginToken.lastIndex += charsAdded;\n } else if (m[0] === '(') {\n openGroupIndices.push(index);\n } else if (m === ')') {\n lastGroupIndex = openGroupIndices.length ? openGroupIndices.pop() : null;\n }\n\n }\n lastToken = m;\n }\n\n return {\n pattern: expression,\n };\n}\n\nexport {\n atomic,\n possessive,\n};\n","import {Context, forEachUnescaped, getGroupContents, hasUnescaped, replaceUnescaped} from 'regex-utilities';\n\nconst r = String.raw;\nconst gRToken = r`\\\\g<(?<gRNameOrNum>[^>&]+)&R=(?<gRDepth>[^>]+)>`;\nconst recursiveToken = r`\\(\\?R=(?<rDepth>[^\\)]+)\\)|${gRToken}`;\nconst namedCaptureDelim = r`\\(\\?<(?![=!])(?<captureName>[^>]+)>`;\nconst captureDelim = r`${namedCaptureDelim}|(?<unnamed>\\()(?!\\?)`;\nconst token = new RegExp(r`${namedCaptureDelim}|${recursiveToken}|\\(\\?|\\\\?.`, 'gsu');\nconst overlappingRecursionMsg = 'Cannot use multiple overlapping recursions';\n\n/**\n@param {string} pattern\n@param {{\n flags?: string;\n captureTransfers?: Map<number, Array<number>>;\n hiddenCaptures?: Array<number>;\n mode?: 'plugin' | 'external';\n}} [data]\n@returns {{\n pattern: string;\n captureTransfers: Map<number, Array<number>>;\n hiddenCaptures: Array<number>;\n}}\n*/\nfunction recursion(pattern, data) {\n const {hiddenCaptures, mode} = {\n hiddenCaptures: [],\n mode: 'plugin',\n ...data,\n };\n // Capture transfer is used by <github.com/slevithan/oniguruma-to-es>\n let captureTransfers = data?.captureTransfers ?? new Map();\n // Keep the initial fail-check (which avoids unneeded processing) as fast as possible by testing\n // without the accuracy improvement of using `hasUnescaped` with `Context.DEFAULT`\n if (!(new RegExp(recursiveToken, 'su').test(pattern))) {\n return {\n pattern,\n captureTransfers,\n hiddenCaptures,\n };\n }\n if (mode === 'plugin' && hasUnescaped(pattern, r`\\(\\?\\(DEFINE\\)`, Context.DEFAULT)) {\n throw new Error('DEFINE groups cannot be used with recursion');\n }\n\n const addedHiddenCaptures = [];\n const hasNumberedBackref = hasUnescaped(pattern, r`\\\\[1-9]`, Context.DEFAULT);\n const groupContentsStartPos = new Map();\n const openGroups = [];\n let hasRecursed = false;\n let numCharClassesOpen = 0;\n let numCapturesPassed = 0;\n let match;\n token.lastIndex = 0;\n while ((match = token.exec(pattern))) {\n const {0: m, groups: {captureName, rDepth, gRNameOrNum, gRDepth}} = match;\n if (m === '[') {\n numCharClassesOpen++;\n } else if (!numCharClassesOpen) {\n\n // `(?R=N)`\n if (rDepth) {\n assertMaxInBounds(rDepth);\n if (hasRecursed) {\n throw new Error(overlappingRecursionMsg);\n }\n if (hasNumberedBackref) {\n // Could add support for numbered backrefs with extra effort, but it's probably not worth\n // it. To trigger this error, the regex must include recursion and one of the following:\n // - An interpolated regex that contains a numbered backref (since other numbered\n // backrefs are prevented by implicit flag n).\n // - A numbered backref, when flag n is explicitly disabled.\n // Note that Regex+'s extended syntax (atomic groups and sometimes subroutines) can also\n // add numbered backrefs, but those work fine because external plugins like this one run\n // *before* the transformation of built-in syntax extensions\n throw new Error(\n // When used in `external` mode by transpilers other than Regex+, backrefs might have\n // gone through conversion from named to numbered, so avoid a misleading error\n `${mode === 'external' ? 'Backrefs' : 'Numbered backrefs'} cannot be used with global recursion`\n );\n }\n const left = pattern.slice(0, match.index);\n const right = pattern.slice(token.lastIndex);\n if (hasUnescaped(right, recursiveToken, Context.DEFAULT)) {\n throw new Error(overlappingRecursionMsg);\n }\n const reps = +rDepth - 1;\n pattern = makeRecursive(\n left,\n right,\n reps,\n false,\n hiddenCaptures,\n addedHiddenCaptures,\n numCapturesPassed\n );\n captureTransfers = mapCaptureTransfers(\n captureTransfers,\n left,\n reps,\n addedHiddenCaptures.length,\n 0,\n numCapturesPassed\n );\n // No need to parse further\n break;\n // `\\g<name&R=N>`, `\\g<number&R=N>`\n } else if (gRNameOrNum) {\n assertMaxInBounds(gRDepth);\n let isWithinReffedGroup = false;\n for (const g of openGroups) {\n if (g.name === gRNameOrNum || g.num === +gRNameOrNum) {\n isWithinReffedGroup = true;\n if (g.hasRecursedWithin) {\n throw new Error(overlappingRecursionMsg);\n }\n break;\n }\n }\n if (!isWithinReffedGroup) {\n throw new Error(r`Recursive \\g cannot be used outside the referenced group \"${\n mode === 'external' ? gRNameOrNum : r`\\g<${gRNameOrNum}&R=${gRDepth}>`\n }\"`);\n }\n const startPos = groupContentsStartPos.get(gRNameOrNum);\n const groupContents = getGroupContents(pattern, startPos);\n if (\n hasNumberedBackref &&\n hasUnescaped(groupContents, r`${namedCaptureDelim}|\\((?!\\?)`, Context.DEFAULT)\n ) {\n throw new Error(\n // When used in `external` mode by transpilers other than Regex+, backrefs might have\n // gone through conversion from named to numbered, so avoid a misleading error\n `${mode === 'external' ? 'Backrefs' : 'Numbered backrefs'} cannot be used with recursion of capturing groups`\n );\n }\n const groupContentsLeft = pattern.slice(startPos, match.index);\n const groupContentsRight = groupContents.slice(groupContentsLeft.length + m.length);\n const numAddedHiddenCapturesPreExpansion = addedHiddenCaptures.length;\n const reps = +gRDepth - 1;\n const expansion = makeRecursive(\n groupContentsLeft,\n groupContentsRight,\n reps,\n true,\n hiddenCaptures,\n addedHiddenCaptures,\n numCapturesPassed\n );\n captureTransfers = mapCaptureTransfers(\n captureTransfers,\n groupContentsLeft,\n reps,\n addedHiddenCaptures.length - numAddedHiddenCapturesPreExpansion,\n numAddedHiddenCapturesPreExpansion,\n numCapturesPassed\n );\n const pre = pattern.slice(0, startPos);\n const post = pattern.slice(startPos + groupContents.length);\n // Modify the string we're looping over\n pattern = `${pre}${expansion}${post}`;\n // Step forward for the next loop iteration\n token.lastIndex += expansion.length - m.length - groupContentsLeft.length - groupContentsRight.length;\n openGroups.forEach(g => g.hasRecursedWithin = true);\n hasRecursed = true;\n } else if (captureName) {\n numCapturesPassed++;\n groupContentsStartPos.set(String(numCapturesPassed), token.lastIndex);\n groupContentsStartPos.set(captureName, token.lastIndex);\n openGroups.push({\n num: numCapturesPassed,\n name: captureName,\n });\n } else if (m[0] === '(') {\n const isUnnamedCapture = m === '(';\n if (isUnnamedCapture) {\n numCapturesPassed++;\n groupContentsStartPos.set(String(numCapturesPassed), token.lastIndex);\n }\n openGroups.push(isUnnamedCapture ? {num: numCapturesPassed} : {});\n } else if (m === ')') {\n openGroups.pop();\n }\n\n } else if (m === ']') {\n numCharClassesOpen--;\n }\n }\n\n hiddenCaptures.push(...addedHiddenCaptures);\n\n return {\n pattern,\n captureTransfers,\n hiddenCaptures,\n };\n}\n\n/**\n@param {string} max\n*/\nfunction assertMaxInBounds(max) {\n const errMsg = `Max depth must be integer between 2 and 100; used ${max}`;\n if (!/^[1-9]\\d*$/.test(max)) {\n throw new Error(errMsg);\n }\n max = +max;\n if (max < 2 || max > 100) {\n throw new Error(errMsg);\n }\n}\n\n/**\n@param {string} left\n@param {string} right\n@param {number} reps\n@param {boolean} isSubpattern\n@param {Array<number>} hiddenCaptures\n@param {Array<number>} addedHiddenCaptures\n@param {number} numCapturesPassed\n@returns {string}\n*/\nfunction makeRecursive(\n left,\n right,\n reps,\n isSubpattern,\n hiddenCaptures,\n addedHiddenCaptures,\n numCapturesPassed\n) {\n const namesInRecursed = new Set();\n // Can skip this work if not needed\n if (isSubpattern) {\n forEachUnescaped(left + right, namedCaptureDelim, ({groups: {captureName}}) => {\n namesInRecursed.add(captureName);\n }, Context.DEFAULT);\n }\n const rest = [\n reps,\n isSubpattern ? namesInRecursed : null,\n hiddenCaptures,\n addedHiddenCaptures,\n numCapturesPassed,\n ];\n // Depth 2: 'left(?:left(?:)right)right'\n // Depth 3: 'left(?:left(?:left(?:)right)right)right'\n // Empty group in the middle separates tokens and absorbs a following quantifier if present\n return `${left}${\n repeatWithDepth(`(?:${left}`, 'forward', ...rest)\n }(?:)${\n repeatWithDepth(`${right})`, 'backward', ...rest)\n }${right}`;\n}\n\n/**\n@param {string} pattern\n@param {'forward' | 'backward'} direction\n@param {number} reps\n@param {Set<string> | null} namesInRecursed\n@param {Array<number>} hiddenCaptures\n@param {Array<number>} addedHiddenCaptures\n@param {number} numCapturesPassed\n@returns {string}\n*/\nfunction repeatWithDepth(\n pattern,\n direction,\n reps,\n namesInRecursed,\n hiddenCaptures,\n addedHiddenCaptures,\n numCapturesPassed\n) {\n const startNum = 2;\n const getDepthNum = i => direction === 'forward' ? (i + startNum) : (reps - i + startNum - 1);\n let result = '';\n for (let i = 0; i < reps; i++) {\n const depthNum = getDepthNum(i);\n result += replaceUnescaped(\n pattern,\n r`${captureDelim}|\\\\k<(?<backref>[^>]+)>`,\n ({0: m, groups: {captureName, unnamed, backref}}) => {\n if (backref && namesInRecursed && !namesInRecursed.has(backref)) {\n // Don't alter backrefs to groups outside the recursed subpattern\n return m;\n }\n const suffix = `_$${depthNum}`;\n if (unnamed || captureName) {\n const addedCaptureNum = numCapturesPassed + addedHiddenCaptures.length + 1;\n addedHiddenCaptures.push(addedCaptureNum);\n incrementIfAtLeast(hiddenCaptures, addedCaptureNum);\n return unnamed ? m : `(?<${captureName}${suffix}>`;\n }\n return r`\\k<${backref}${suffix}>`;\n },\n Context.DEFAULT\n );\n }\n return result;\n}\n\n/**\nUpdates the array in place by incrementing each value greater than or equal to the threshold.\n@param {Array<number>} arr\n@param {number} threshold\n*/\nfunction incrementIfAtLeast(arr, threshold) {\n for (let i = 0; i < arr.length; i++) {\n if (arr[i] >= threshold) {\n arr[i]++;\n }\n }\n}\n\n/**\n@param {Map<number, Array<number>>} captureTransfers\n@param {string} left\n@param {number} reps\n@param {number} numCapturesAddedInExpansion\n@param {number} numAddedHiddenCapturesPreExpansion\n@param {number} numCapturesPassed\n@returns {Map<number, Array<number>>}\n*/\nfunction mapCaptureTransfers(captureTransfers, left, reps, numCapturesAddedInExpansion, numAddedHiddenCapturesPreExpansion, numCapturesPassed) {\n if (captureTransfers.size && numCapturesAddedInExpansion) {\n let numCapturesInLeft = 0;\n forEachUnescaped(left, captureDelim, () => numCapturesInLeft++, Context.DEFAULT);\n // Is 0 for global recursion\n const recursionDelimCaptureNum = numCapturesPassed - numCapturesInLeft + numAddedHiddenCapturesPreExpansion;\n const newCaptureTransfers = new Map();\n captureTransfers.forEach((from, to) => {\n const numCapturesInRight = (numCapturesAddedInExpansion - (numCapturesInLeft * reps)) / reps;\n const numCapturesAddedInLeft = numCapturesInLeft * reps;\n const newTo = to > (recursionDelimCaptureNum + numCapturesInLeft) ? to + numCapturesAddedInExpansion : to;\n const newFrom = [];\n for (const f of from) {\n // Before the recursed subpattern\n if (f <= recursionDelimCaptureNum) {\n newFrom.push(f);\n // After the recursed subpattern\n } else if (f > (recursionDelimCaptureNum + numCapturesInLeft + numCapturesInRight)) {\n newFrom.push(f + numCapturesAddedInExpansion);\n // Within the recursed subpattern, on the left of the recursion token\n } else if (f <= (recursionDelimCaptureNum + numCapturesInLeft)) {\n for (let i = 0; i <= reps; i++) {\n newFrom.push(f + (numCapturesInLeft * i));\n }\n // Within the recursed subpattern, on the right of the recursion token\n } else {\n for (let i = 0; i <= reps; i++) {\n newFrom.push(f + numCapturesAddedInLeft + (numCapturesInRight * i));\n }\n }\n }\n newCaptureTransfers.set(newTo, newFrom);\n });\n return newCaptureTransfers;\n }\n return captureTransfers;\n}\n\nexport {\n recursion,\n};\n","// src/utils.js\nvar cp = String.fromCodePoint;\nvar r = String.raw;\nvar envFlags = {};\nvar globalRegExp = globalThis.RegExp;\nenvFlags.flagGroups = (() => {\n try {\n new globalRegExp(\"(?i:)\");\n } catch {\n return false;\n }\n return true;\n})();\nenvFlags.unicodeSets = (() => {\n try {\n new globalRegExp(\"[[]]\", \"v\");\n } catch {\n return false;\n }\n return true;\n})();\nenvFlags.bugFlagVLiteralHyphenIsRange = envFlags.unicodeSets ? (() => {\n try {\n new globalRegExp(r`[\\d\\-a]`, \"v\");\n } catch {\n return true;\n }\n return false;\n})() : false;\nenvFlags.bugNestedClassIgnoresNegation = envFlags.unicodeSets && new globalRegExp(\"[[^a]]\", \"v\").test(\"a\");\nfunction getNewCurrentFlags(current, { enable, disable }) {\n return {\n dotAll: !disable?.dotAll && !!(enable?.dotAll || current.dotAll),\n ignoreCase: !disable?.ignoreCase && !!(enable?.ignoreCase || current.ignoreCase)\n };\n}\nfunction getOrInsert(map, key, defaultValue) {\n if (!map.has(key)) {\n map.set(key, defaultValue);\n }\n return map.get(key);\n}\nfunction isMinTarget(target, min) {\n return EsVersion[target] >= EsVersion[min];\n}\nfunction throwIfNullish(value, msg) {\n if (value == null) {\n throw new Error(msg ?? \"Value expected\");\n }\n return value;\n}\n\n// src/options.js\nvar EsVersion = {\n ES2025: 2025,\n ES2024: 2024,\n ES2018: 2018\n};\nvar Target = (\n /** @type {const} */\n {\n auto: \"auto\",\n ES2025: \"ES2025\",\n ES2024: \"ES2024\",\n ES2018: \"ES2018\"\n }\n);\nfunction getOptions(options = {}) {\n if ({}.toString.call(options) !== \"[object Object]\") {\n throw new Error(\"Unexpected options\");\n }\n if (options.target !== void 0 && !Target[options.target]) {\n throw new Error(`Unexpected target \"${options.target}\"`);\n }\n const opts = {\n // Sets the level of emulation rigor/strictness.\n accuracy: \"default\",\n // Disables advanced emulation that relies on returning a `RegExp` subclass, resulting in\n // certain patterns not being emulatable.\n avoidSubclass: false,\n // Oniguruma flags; a string with `i`, `m`, `x`, `D`, `S`, `W`, `y{g}` in any order (all\n // optional). Oniguruma's `m` is equivalent to JavaScript's `s` (`dotAll`).\n flags: \"\",\n // Include JavaScript flag `g` (`global`) in the result.\n global: false,\n // Include JavaScript flag `d` (`hasIndices`) in the result.\n hasIndices: false,\n // Delay regex construction until first use if the transpiled pattern is at least this length.\n lazyCompileLength: Infinity,\n // JavaScript version used for generated regexes. Using `auto` detects the best value based on\n // your environment. Later targets allow faster processing, simpler generated source, and\n // support for additional features.\n target: \"auto\",\n // Disables minifications that simplify the pattern without changing the meaning.\n verbose: false,\n ...options,\n // Advanced options that override standard behavior, error checking, and flags when enabled.\n rules: {\n // Useful with TextMate grammars that merge backreferences across patterns.\n allowOrphanBackrefs: false,\n // Use ASCII `\\b` and `\\B`, which increases search performance of generated regexes.\n asciiWordBoundaries: false,\n // Allow unnamed captures and numbered calls (backreferences and subroutines) when using\n // named capture. This is Oniguruma option `ONIG_OPTION_CAPTURE_GROUP`; on by default in\n // `vscode-oniguruma`.\n captureGroup: false,\n // Change the recursion depth limit from Oniguruma's `20` to an integer `2`–`20`.\n recursionLimit: 20,\n // `^` as `\\A`; `$` as`\\Z`. Improves search performance of generated regexes without changing\n // the meaning if searching line by line. This is Oniguruma option `ONIG_OPTION_SINGLELINE`.\n singleline: false,\n ...options.rules\n }\n };\n if (opts.target === \"auto\") {\n opts.target = envFlags.flagGroups ? \"ES2025\" : envFlags.unicodeSets ? \"ES2024\" : \"ES2018\";\n }\n return opts;\n}\n\n// src/unicode.js\nimport { slug } from \"oniguruma-parser/parser\";\nvar asciiSpaceChar = \"[\t-\\r ]\";\nvar CharsWithoutIgnoreCaseExpansion = /* @__PURE__ */ new Set([\n cp(304),\n // İ\n cp(305)\n // ı\n]);\nvar defaultWordChar = r`[\\p{L}\\p{M}\\p{N}\\p{Pc}]`;\nfunction getIgnoreCaseMatchChars(char) {\n if (CharsWithoutIgnoreCaseExpansion.has(char)) {\n return [char];\n }\n const set = /* @__PURE__ */ new Set();\n const lower = char.toLowerCase();\n const upper = lower.toUpperCase();\n const title = LowerToTitleCaseMap.get(lower);\n const altLower = LowerToAlternativeLowerCaseMap.get(lower);\n const altUpper = LowerToAlternativeUpperCaseMap.get(lower);\n if ([...upper].length === 1) {\n set.add(upper);\n }\n altUpper && set.add(altUpper);\n title && set.add(title);\n set.add(lower);\n altLower && set.add(altLower);\n return [...set];\n}\nvar JsUnicodePropertyMap = /* @__PURE__ */ new Map(\n `C Other\nCc Control cntrl\nCf Format\nCn Unassigned\nCo Private_Use\nCs Surrogate\nL Letter\nLC Cased_Letter\nLl Lowercase_Letter\nLm Modifier_Letter\nLo Other_Letter\nLt Titlecase_Letter\nLu Uppercase_Letter\nM Mark Combining_Mark\nMc Spacing_Mark\nMe Enclosing_Mark\nMn Nonspacing_Mark\nN Number\nNd Decimal_Number digit\nNl Letter_Number\nNo Other_Number\nP Punctuation punct\nPc Connector_Punctuation\nPd Dash_Punctuation\nPe Close_Punctuation\nPf Final_Punctuation\nPi Initial_Punctuation\nPo Other_Punctuation\nPs Open_Punctuation\nS Symbol\nSc Currency_Symbol\nSk Modifier_Symbol\nSm Math_Symbol\nSo Other_Symbol\nZ Separator\nZl Line_Separator\nZp Paragraph_Separator\nZs Space_Separator\nASCII\nASCII_Hex_Digit AHex\nAlphabetic Alpha\nAny\nAssigned\nBidi_Control Bidi_C\nBidi_Mirrored Bidi_M\nCase_Ignorable CI\nCased\nChanges_When_Casefolded CWCF\nChanges_When_Casemapped CWCM\nChanges_When_Lowercased CWL\nChanges_When_NFKC_Casefolded CWKCF\nChanges_When_Titlecased CWT\nChanges_When_Uppercased CWU\nDash\nDefault_Ignorable_Code_Point DI\nDeprecated Dep\nDiacritic Dia\nEmoji\nEmoji_Component EComp\nEmoji_Modifier EMod\nEmoji_Modifier_Base EBase\nEmoji_Presentation EPres\nExtended_Pictographic ExtPict\nExtender Ext\nGrapheme_Base Gr_Base\nGrapheme_Extend Gr_Ext\nHex_Digit Hex\nIDS_Binary_Operator IDSB\nIDS_Trinary_Operator IDST\nID_Continue IDC\nID_Start IDS\nIdeographic Ideo\nJoin_Control Join_C\nLogical_Order_Exception LOE\nLowercase Lower\nMath\nNoncharacter_Code_Point NChar\nPattern_Syntax Pat_Syn\nPattern_White_Space Pat_WS\nQuotation_Mark QMark\nRadical\nRegional_Indicator RI\nSentence_Terminal STerm\nSoft_Dotted SD\nTerminal_Punctuation Term\nUnified_Ideograph UIdeo\nUppercase Upper\nVariation_Selector VS\nWhite_Space space\nXID_Continue XIDC\nXID_Start XIDS`.split(/\\s/).map((p) => [slug(p), p])\n);\nvar LowerToAlternativeLowerCaseMap = /* @__PURE__ */ new Map([\n [\"s\", cp(383)],\n // s, ſ\n [cp(383), \"s\"]\n // ſ, s\n]);\nvar LowerToAlternativeUpperCaseMap = /* @__PURE__ */ new Map([\n [cp(223), cp(7838)],\n // ß, ẞ\n [cp(107), cp(8490)],\n // k, K (Kelvin)\n [cp(229), cp(8491)],\n // å, Å (Angstrom)\n [cp(969), cp(8486)]\n // ω, Ω (Ohm)\n]);\nvar LowerToTitleCaseMap = new Map([\n titleEntry(453),\n titleEntry(456),\n titleEntry(459),\n titleEntry(498),\n ...titleRange(8072, 8079),\n ...titleRange(8088, 8095),\n ...titleRange(8104, 8111),\n titleEntry(8124),\n titleEntry(8140),\n titleEntry(8188)\n]);\nvar PosixClassMap = /* @__PURE__ */ new Map([\n [\"alnum\", r`[\\p{Alpha}\\p{Nd}]`],\n [\"alpha\", r`\\p{Alpha}`],\n [\"ascii\", r`\\p{ASCII}`],\n [\"blank\", r`[\\p{Zs}\\t]`],\n [\"cntrl\", r`\\p{Cc}`],\n [\"digit\", r`\\p{Nd}`],\n [\"graph\", r`[\\P{space}&&\\P{Cc}&&\\P{Cn}&&\\P{Cs}]`],\n [\"lower\", r`\\p{Lower}`],\n [\"print\", r`[[\\P{space}&&\\P{Cc}&&\\P{Cn}&&\\P{Cs}]\\p{Zs}]`],\n [\"punct\", r`[\\p{P}\\p{S}]`],\n // Updated value from Onig 6.9.9; changed from Unicode `\\p{punct}`\n [\"space\", r`\\p{space}`],\n [\"upper\", r`\\p{Upper}`],\n [\"word\", r`[\\p{Alpha}\\p{M}\\p{Nd}\\p{Pc}]`],\n [\"xdigit\", r`\\p{AHex}`]\n]);\nfunction range(start, end) {\n const range2 = [];\n for (let i = start; i <= end; i++) {\n range2.push(i);\n }\n return range2;\n}\nfunction titleEntry(codePoint) {\n const char = cp(codePoint);\n return [char.toLowerCase(), char];\n}\nfunction titleRange(start, end) {\n return range(start, end).map((codePoint) => titleEntry(codePoint));\n}\nvar UnicodePropertiesWithSpecificCase = /* @__PURE__ */ new Set([\n \"Lower\",\n \"Lowercase\",\n \"Upper\",\n \"Uppercase\",\n \"Ll\",\n \"Lowercase_Letter\",\n \"Lt\",\n \"Titlecase_Letter\",\n \"Lu\",\n \"Uppercase_Letter\"\n // The `Changes_When_*` properties (and their aliases) could be included, but they're very rare.\n // Some other properties include a handful of chars with specific cases only, but these chars are\n // generally extreme edge cases and using such properties case insensitively generally produces\n // undesired behavior anyway\n]);\n\n// src/transform.js\nimport { createAlternative, createAssertion, createBackreference, createCapturingGroup, createCharacter, createCharacterClass, createCharacterSet, createGroup, createLookaroundAssertion, createQuantifier, createSubroutine, createUnicodeProperty, hasOnlyChild, parse, slug as slug2 } from \"oniguruma-parser/parser\";\nimport { traverse } from \"oniguruma-parser/traverser\";\nfunction transform(ast, options) {\n const opts = {\n // A couple edge cases exist where options `accuracy` and `bestEffortTarget` are used:\n // - `CharacterSet` kind `text_segment` (`\\X`): An exact representation would require heavy\n // Unicode data; a best-effort approximation requires knowing the target.\n // - `CharacterSet` kind `posix` with values `graph` and `print`: Their complex Unicode\n // representations would be hard to change to ASCII versions after the fact in the generator\n // based on `target`/`accuracy`, so produce the appropriate structure here.\n accuracy: \"default\",\n asciiWordBoundaries: false,\n avoidSubclass: false,\n bestEffortTarget: \"ES2025\",\n ...options\n };\n addParentProperties(ast);\n const firstPassState = {\n accuracy: opts.accuracy,\n asciiWordBoundaries: opts.asciiWordBoundaries,\n avoidSubclass: opts.avoidSubclass,\n flagDirectivesByAlt: /* @__PURE__ */ new Map(),\n jsGroupNameMap: /* @__PURE__ */ new Map(),\n minTargetEs2024: isMinTarget(opts.bestEffortTarget, \"ES2024\"),\n passedLookbehind: false,\n strategy: null,\n // Subroutines can appear before the groups they ref, so collect reffed nodes for a second pass \n subroutineRefMap: /* @__PURE__ */ new Map(),\n supportedGNodes: /* @__PURE__ */ new Set(),\n digitIsAscii: ast.flags.digitIsAscii,\n spaceIsAscii: ast.flags.spaceIsAscii,\n wordIsAscii: ast.flags.wordIsAscii\n };\n traverse(ast, FirstPassVisitor, firstPassState);\n const globalFlags = {\n dotAll: ast.flags.dotAll,\n ignoreCase: ast.flags.ignoreCase\n };\n const secondPassState = {\n currentFlags: globalFlags,\n prevFlags: null,\n globalFlags,\n groupOriginByCopy: /* @__PURE__ */ new Map(),\n groupsByName: /* @__PURE__ */ new Map(),\n multiplexCapturesToLeftByRef: /* @__PURE__ */ new Map(),\n openRefs: /* @__PURE__ */ new Map(),\n reffedNodesByReferencer: /* @__PURE__ */ new Map(),\n subroutineRefMap: firstPassState.subroutineRefMap\n };\n traverse(ast, SecondPassVisitor, secondPassState);\n const thirdPassState = {\n groupsByName: secondPassState.groupsByName,\n highestOrphanBackref: 0,\n numCapturesToLeft: 0,\n reffedNodesByReferencer: secondPassState.reffedNodesByReferencer\n };\n traverse(ast, ThirdPassVisitor, thirdPassState);\n ast._originMap = secondPassState.groupOriginByCopy;\n ast._strategy = firstPassState.strategy;\n return ast;\n}\nvar FirstPassVisitor = {\n AbsenceFunction({ node, parent, replaceWith }) {\n const { body, kind } = node;\n if (kind === \"repeater\") {\n const innerGroup = createGroup();\n innerGroup.body[0].body.push(\n // Insert own alts as `body`\n createLookaroundAssertion({ negate: true, body }),\n createUnicodeProperty(\"Any\")\n );\n const outerGroup = createGroup();\n outerGroup.body[0].body.push(\n createQuantifier(\"greedy\", 0, Infinity, innerGroup)\n );\n replaceWith(setParentDeep(outerGroup, parent), { traverse: true });\n } else {\n throw new Error(`Unsupported absence function \"(?~|\"`);\n }\n },\n Alternative: {\n enter({ node, parent, key }, { flagDirectivesByAlt }) {\n const flagDirectives = node.body.filter((el) => el.kind === \"flags\");\n for (let i = key + 1; i < parent.body.length; i++) {\n const forwardSiblingAlt = parent.body[i];\n getOrInsert(flagDirectivesByAlt, forwardSiblingAlt, []).push(...flagDirectives);\n }\n },\n exit({ node }, { flagDirectivesByAlt }) {\n if (flagDirectivesByAlt.get(node)?.length) {\n const flags = getCombinedFlagModsFromFlagNodes(flagDirectivesByAlt.get(node));\n if (flags) {\n const flagGroup = createGroup({ flags });\n flagGroup.body[0].body = node.body;\n node.body = [setParentDeep(flagGroup, node)];\n }\n }\n }\n },\n Assertion({ node, parent, key, container, root, remove, replaceWith }, state) {\n const { kind, negate } = node;\n const { asciiWordBoundaries, avoidSubclass, supportedGNodes, wordIsAscii } = state;\n if (kind === \"text_segment_boundary\") {\n throw new Error(`Unsupported text segment boundary \"\\\\${negate ? \"Y\" : \"y\"}\"`);\n } else if (kind === \"line_end\") {\n replaceWith(setParentDeep(createLookaroundAssertion({ body: [\n createAlternative({ body: [createAssertion(\"string_end\")] }),\n createAlternative({ body: [createCharacter(10)] })\n // `\\n`\n ] }), parent));\n } else if (kind === \"line_start\") {\n replaceWith(setParentDeep(parseFragment(r`(?<=\\A|\\n(?!\\z))`, { skipLookbehindValidation: true }), parent));\n } else if (kind === \"search_start\") {\n if (supportedGNodes.has(node)) {\n root.flags.sticky = true;\n remove();\n } else {\n const prev = container[key - 1];\n if (prev && isAlwaysNonZeroLength(prev)) {\n replaceWith(setParentDeep(createLookaroundAssertion({ negate: true }), parent));\n } else if (avoidSubclass) {\n throw new Error(r`Uses \"\\G\" in a way that requires a subclass`);\n } else {\n replaceWith(setParent(createAssertion(\"string_start\"), parent));\n state.strategy = \"clip_search\";\n }\n }\n } else if (kind === \"string_end\" || kind === \"string_start\") {\n } else if (kind === \"string_end_newline\") {\n replaceWith(setParentDeep(parseFragment(r`(?=\\n?\\z)`), parent));\n } else if (kind === \"word_boundary\") {\n if (!wordIsAscii && !asciiWordBoundaries) {\n const b = `(?:(?<=${defaultWordChar})(?!${defaultWordChar})|(?<!${defaultWordChar})(?=${defaultWordChar}))`;\n const B = `(?:(?<=${defaultWordChar})(?=${defaultWordChar})|(?<!${defaultWordChar})(?!${defaultWordChar}))`;\n replaceWith(setParentDeep(parseFragment(negate ? B : b), parent));\n }\n } else {\n throw new Error(`Unexpected assertion kind \"${kind}\"`);\n }\n },\n Backreference({ node }, { jsGroupNameMap }) {\n let { ref } = node;\n if (typeof ref === \"string\" && !isValidJsGroupName(ref)) {\n ref = getAndStoreJsGroupName(ref, jsGroupNameMap);\n node.ref = ref;\n }\n },\n CapturingGroup({ node }, { jsGroupNameMap, subroutineRefMap }) {\n let { name } = node;\n if (name && !isValidJsGroupName(name)) {\n name = getAndStoreJsGroupName(name, jsGroupNameMap);\n node.name = name;\n }\n subroutineRefMap.set(node.number, node);\n if (name) {\n subroutineRefMap.set(name, node);\n }\n },\n CharacterClassRange({ node, parent, replaceWith }) {\n if (parent.kind === \"intersection\") {\n const cc = createCharacterClass({ body: [node] });\n replaceWith(setParentDeep(cc, parent), { traverse: true });\n }\n },\n CharacterSet({ node, parent, replaceWith }, { accuracy, minTargetEs2024, digitIsAscii, spaceIsAscii, wordIsAscii }) {\n const { kind, negate, value } = node;\n if (digitIsAscii && (kind === \"digit\" || value === \"digit\")) {\n replaceWith(setParent(createCharacterSet(\"digit\", { negate }), parent));\n return;\n }\n if (spaceIsAscii && (kind === \"space\" || value === \"space\")) {\n replaceWith(setParentDeep(setNegate(parseFragment(asciiSpaceChar), negate), parent));\n return;\n }\n if (wordIsAscii && (kind === \"word\" || value === \"word\")) {\n replaceWith(setParent(createCharacterSet(\"word\", { negate }), parent));\n return;\n }\n if (kind === \"any\") {\n replaceWith(setParent(createUnicodeProperty(\"Any\"), parent));\n } else if (kind === \"digit\") {\n replaceWith(setParent(createUnicodeProperty(\"Nd\", { negate }), parent));\n } else if (kind === \"dot\") {\n } else if (kind === \"text_segment\") {\n if (accuracy === \"strict\") {\n throw new Error(r`Use of \"\\X\" requires non-strict accuracy`);\n }\n const eBase = \"\\\\p{Emoji}(?:\\\\p{EMod}|\\\\uFE0F\\\\u20E3?|[\\\\x{E0020}-\\\\x{E007E}]+\\\\x{E007F})?\";\n const emoji = r`\\p{RI}{2}|${eBase}(?:\\u200D${eBase})*`;\n replaceWith(setParentDeep(parseFragment(\n // Close approximation of an extended grapheme cluster; see <unicode.org/reports/tr29/>\n r`(?>\\r\\n|${minTargetEs2024 ? r`\\p{RGI_Emoji}` : emoji}|\\P{M}\\p{M}*)`,\n // Allow JS property `RGI_Emoji` through\n { skipPropertyNameValidation: true }\n ), parent));\n } else if (kind === \"hex\") {\n replaceWith(setParent(createUnicodeProperty(\"AHex\", { negate }), parent));\n } else if (kind === \"newline\") {\n replaceWith(setParentDeep(parseFragment(negate ? \"[^\\n]\" : \"(?>\\r\\n?|[\\n\\v\\f\\x85\\u2028\\u2029])\"), parent));\n } else if (kind === \"posix\") {\n if (!minTargetEs2024 && (value === \"graph\" || value === \"print\")) {\n if (accuracy === \"strict\") {\n throw new Error(`POSIX class \"${value}\" requires min target ES2024 or non-strict accuracy`);\n }\n let ascii = {\n graph: \"!-~\",\n print: \" -~\"\n }[value];\n if (negate) {\n ascii = `\\0-${cp(ascii.codePointAt(0) - 1)}${cp(ascii.codePointAt(2) + 1)}-\\u{10FFFF}`;\n }\n replaceWith(setParentDeep(parseFragment(`[${ascii}]`), parent));\n } else {\n replaceWith(setParentDeep(setNegate(parseFragment(PosixClassMap.get(value)), negate), parent));\n }\n } else if (kind === \"property\") {\n if (!JsUnicodePropertyMap.has(slug2(value))) {\n node.key = \"sc\";\n }\n } else if (kind === \"space\") {\n replaceWith(setParent(createUnicodeProperty(\"space\", { negate }), parent));\n } else if (kind === \"word\") {\n replaceWith(setParentDeep(setNegate(parseFragment(defaultWordChar), negate), parent));\n } else {\n throw new Error(`Unexpected character set kind \"${kind}\"`);\n }\n },\n Directive({ node, parent, root, remove, replaceWith, removeAllPrevSiblings, removeAllNextSiblings }) {\n const { kind, flags } = node;\n if (kind === \"flags\") {\n if (!flags.enable && !flags.disable) {\n remove();\n } else {\n const flagGroup = createGroup({ flags });\n flagGroup.body[0].body = removeAllNextSiblings();\n replaceWith(setParentDeep(flagGroup, parent), { traverse: true });\n }\n } else if (kind === \"keep\") {\n const firstAlt = root.body[0];\n const hasWrapperGroup = root.body.length === 1 && // Not emulatable if within a `CapturingGroup`\n hasOnlyChild(firstAlt, { type: \"Group\" }) && firstAlt.body[0].body.length === 1;\n const topLevel = hasWrapperGroup ? firstAlt.body[0] : root;\n if (parent.parent !== topLevel || topLevel.body.length > 1) {\n throw new Error(r`Uses \"\\K\" in a way that's unsupported`);\n }\n const lookbehind = createLookaroundAssertion({ behind: true });\n lookbehind.body[0].body = removeAllPrevSiblings();\n replaceWith(setParentDeep(lookbehind, parent));\n } else {\n throw new Error(`Unexpected directive kind \"${kind}\"`);\n }\n },\n Flags({ node, parent }) {\n if (node.posixIsAscii) {\n throw new Error('Unsupported flag \"P\"');\n }\n if (node.textSegmentMode === \"word\") {\n throw new Error('Unsupported flag \"y{w}\"');\n }\n [\n \"digitIsAscii\",\n // Flag D\n \"extended\",\n // Flag x\n \"posixIsAscii\",\n // Flag P\n \"spaceIsAscii\",\n // Flag S\n \"wordIsAscii\",\n // Flag W\n \"textSegmentMode\"\n // Flag y{g} or y{w}\n ].forEach((f) => delete node[f]);\n Object.assign(node, {\n // JS flag g; no Onig equiv\n global: false,\n // JS flag d; no Onig equiv\n hasIndices: false,\n // JS flag m; no Onig equiv but its behavior is always on in Onig. Onig's only line break\n // char is line feed, unlike JS, so this flag isn't used since it would produce inaccurate\n // results (also allows `^` and `$` to be used in the generator for string start and end)\n multiline: false,\n // JS flag y; no Onig equiv, but used for `\\G` emulation\n sticky: node.sticky ?? false\n // Note: Regex+ doesn't allow explicitly adding flags it handles implicitly, so leave out\n // properties `unicode` (JS flag u) and `unicodeSets` (JS flag v). Keep the existing values\n // for `ignoreCase` (flag i) and `dotAll` (JS flag s, but Onig flag m)\n });\n parent.options = {\n disable: {\n // Onig uses different rules for flag x than Regex+, so disable the implicit flag\n x: true,\n // Onig has no flag to control \"named capture only\" mode but contextually applies its\n // behavior when named capturing is used, so disable Regex+'s implicit flag for it\n n: true\n },\n force: {\n // Always add flag v because we're generating an AST that relies on it (it enables JS\n // support for Onig features nested classes, intersection, Unicode properties, etc.).\n // However, the generator might disable flag v based on its `target` option\n v: true\n }\n };\n },\n Group({ node }) {\n if (!node.flags) {\n return;\n }\n const { enable, disable } = node.flags;\n enable?.extended && delete enable.extended;\n disable?.extended && delete disable.extended;\n enable?.dotAll && disable?.dotAll && delete enable.dotAll;\n enable?.ignoreCase && disable?.ignoreCase && delete enable.ignoreCase;\n enable && !Object.keys(enable).length && delete node.flags.enable;\n disable && !Object.keys(disable).length && delete node.flags.disable;\n !node.flags.enable && !node.flags.disable && delete node.flags;\n },\n LookaroundAssertion({ node }, state) {\n const { kind } = node;\n if (kind === \"lookbehind\") {\n state.passedLookbehind = true;\n }\n },\n NamedCallout({ node, parent, replaceWith }) {\n const { kind } = node;\n if (kind === \"fail\") {\n replaceWith(setParentDeep(createLookaroundAssertion({ negate: true }), parent));\n } else {\n throw new Error(`Unsupported named callout \"(*${kind.toUpperCase()}\"`);\n }\n },\n Quantifier({ node }) {\n if (node.body.type === \"Quantifier\") {\n const group = createGroup();\n group.body[0].body.push(node.body);\n node.body = setParentDeep(group, node);\n }\n },\n Regex: {\n enter({ node }, { supportedGNodes }) {\n const leadingGs = [];\n let hasAltWithLeadG = false;\n let hasAltWithoutLeadG = false;\n for (const alt of node.body) {\n if (alt.body.length === 1 && alt.body[0].kind === \"search_start\") {\n alt.body.pop();\n } else {\n const leadingG = getLeadingG(alt.body);\n if (leadingG) {\n hasAltWithLeadG = true;\n Array.isArray(leadingG) ? leadingGs.push(...leadingG) : leadingGs.push(leadingG);\n } else {\n hasAltWithoutLeadG = true;\n }\n }\n }\n if (hasAltWithLeadG && !hasAltWithoutLeadG) {\n leadingGs.forEach((g) => supportedGNodes.add(g));\n }\n },\n exit(_, { accuracy, passedLookbehind, strategy }) {\n if (accuracy === \"strict\" && passedLookbehind && strategy) {\n throw new Error(r`Uses \"\\G\" in a way that requires non-strict accuracy`);\n }\n }\n },\n Subroutine({ node }, { jsGroupNameMap }) {\n let { ref } = node;\n if (typeof ref === \"string\" && !isValidJsGroupName(ref)) {\n ref = getAndStoreJsGroupName(ref, jsGroupNameMap);\n node.ref = ref;\n }\n }\n};\nvar SecondPassVisitor = {\n Backreference({ node }, { multiplexCapturesToLeftByRef, reffedNodesByReferencer }) {\n const { orphan, ref } = node;\n if (!orphan) {\n reffedNodesByReferencer.set(node, [...multiplexCapturesToLeftByRef.get(ref).map(({ node: node2 }) => node2)]);\n }\n },\n CapturingGroup: {\n enter({\n node,\n parent,\n replaceWith,\n skip\n }, {\n groupOriginByCopy,\n groupsByName,\n multiplexCapturesToLeftByRef,\n openRefs,\n reffedNodesByReferencer\n }) {\n const origin = groupOriginByCopy.get(node);\n if (origin && openRefs.has(node.number)) {\n const recursion2 = setParent(createRecursion(node.number), parent);\n reffedNodesByReferencer.set(recursion2, openRefs.get(node.number));\n replaceWith(recursion2);\n return;\n }\n openRefs.set(node.number, node);\n multiplexCapturesToLeftByRef.set(node.number, []);\n if (node.name) {\n getOrInsert(multiplexCapturesToLeftByRef, node.name, []);\n }\n const multiplexNodes = multiplexCapturesToLeftByRef.get(node.name ?? node.number);\n for (let i = 0; i < multiplexNodes.length; i++) {\n const multiplex = multiplexNodes[i];\n if (\n // This group is from subroutine expansion, and there's a multiplex value from either the\n // origin node or a prior subroutine expansion group with the same origin\n origin === multiplex.node || origin && origin === multiplex.origin || // This group is not from subroutine expansion, and it comes after a subroutine expansion\n // group that refers to this group\n node === multiplex.origin\n ) {\n multiplexNodes.splice(i, 1);\n break;\n }\n }\n multiplexCapturesToLeftByRef.get(node.number).push({ node, origin });\n if (node.name) {\n multiplexCapturesToLeftByRef.get(node.name).push({ node, origin });\n }\n if (node.name) {\n const groupsWithSameName = getOrInsert(groupsByName, node.name, /* @__PURE__ */ new Map());\n let hasDuplicateNameToRemove = false;\n if (origin) {\n hasDuplicateNameToRemove = true;\n } else {\n for (const groupInfo of groupsWithSameName.values()) {\n if (!groupInfo.hasDuplicateNameToRemove) {\n hasDuplicateNameToRemove = true;\n break;\n }\n }\n }\n groupsByName.get(node.name).set(node, { node, hasDuplicateNameToRemove });\n }\n },\n exit({ node }, { openRefs }) {\n if (openRefs.get(node.number) === node) {\n openRefs.delete(node.number);\n }\n }\n },\n Group: {\n enter({ node }, state) {\n state.prevFlags = state.currentFlags;\n if (node.flags) {\n state.currentFlags = getNewCurrentFlags(state.currentFlags, node.flags);\n }\n },\n exit(_, state) {\n state.currentFlags = state.prevFlags;\n }\n },\n Subroutine({ node, parent, replaceWith }, state) {\n const { isRecursive, ref } = node;\n if (isRecursive) {\n let reffed = parent;\n while (reffed = reffed.parent) {\n if (reffed.type === \"CapturingGroup\" && (reffed.name === ref || reffed.number === ref)) {\n break;\n }\n }\n state.reffedNodesByReferencer.set(node, reffed);\n return;\n }\n const reffedGroupNode = state.subroutineRefMap.get(ref);\n const isGlobalRecursion = ref === 0;\n const expandedSubroutine = isGlobalRecursion ? createRecursion(0) : (\n // The reffed group might itself contain subroutines, which are expanded during sub-traversal\n cloneCapturingGroup(reffedGroupNode, state.groupOriginByCopy, null)\n );\n let replacement = expandedSubroutine;\n if (!isGlobalRecursion) {\n const reffedGroupFlagMods = getCombinedFlagModsFromFlagNodes(getAllParents(\n reffedGroupNode,\n (p) => p.type === \"Group\" && !!p.flags\n ));\n const reffedGroupFlags = reffedGroupFlagMods ? getNewCurrentFlags(state.globalFlags, reffedGroupFlagMods) : state.globalFlags;\n if (!areFlagsEqual(reffedGroupFlags, state.currentFlags)) {\n replacement = createGroup({\n flags: getFlagModsFromFlags(reffedGroupFlags)\n });\n replacement.body[0].body.push(expandedSubroutine);\n }\n }\n replaceWith(setParentDeep(replacement, parent), { traverse: !isGlobalRecursion });\n }\n};\nvar ThirdPassVisitor = {\n Backreference({ node, parent, replaceWith }, state) {\n if (node.orphan) {\n state.highestOrphanBackref = Math.max(state.highestOrphanBackref, node.ref);\n return;\n }\n const reffedNodes = state.reffedNodesByReferencer.get(node);\n const participants = reffedNodes.filter((reffed) => canParticipateWithNode(reffed, node));\n if (!participants.length) {\n replaceWith(setParentDeep(createLookaroundAssertion({ negate: true }), parent));\n } else if (participants.length > 1) {\n const group = createGroup({\n atomic: true,\n body: participants.reverse().map((reffed) => createAlternative({\n body: [createBackreference(reffed.number)]\n }))\n });\n replaceWith(setParentDeep(group, parent));\n } else {\n node.ref = participants[0].number;\n }\n },\n CapturingGroup({ node }, state) {\n node.number = ++state.numCapturesToLeft;\n if (node.name) {\n if (state.groupsByName.get(node.name).get(node).hasDuplicateNameToRemove) {\n delete node.name;\n }\n }\n },\n Regex: {\n exit({ node }, state) {\n const numCapsNeeded = Math.max(state.highestOrphanBackref - state.numCapturesToLeft, 0);\n for (let i = 0; i < numCapsNeeded; i++) {\n const emptyCapture = createCapturingGroup();\n node.body.at(-1).body.push(emptyCapture);\n }\n }\n },\n Subroutine({ node }, state) {\n if (!node.isRecursive || node.ref === 0) {\n return;\n }\n node.ref = state.reffedNodesByReferencer.get(node).number;\n }\n};\nfunction addParentProperties(root) {\n traverse(root, {\n \"*\"({ node, parent }) {\n node.parent = parent;\n }\n });\n}\nfunction areFlagsEqual(a, b) {\n return a.dotAll === b.dotAll && a.ignoreCase === b.ignoreCase;\n}\nfunction canParticipateWithNode(capture, node) {\n let rightmostPoint = node;\n do {\n if (rightmostPoint.type === \"Regex\") {\n return false;\n }\n if (rightmostPoint.type === \"Alternative\") {\n continue;\n }\n if (rightmostPoint === capture) {\n return false;\n }\n const kidsOfParent = getKids(rightmostPoint.parent);\n for (const kid of kidsOfParent) {\n if (kid === rightmostPoint) {\n break;\n }\n if (kid === capture || isAncestorOf(kid, capture)) {\n return true;\n }\n }\n } while (rightmostPoint = rightmostPoint.parent);\n throw new Error(\"Unexpected path\");\n}\nfunction cloneCapturingGroup(obj, originMap, up, up2) {\n const store = Array.isArray(obj) ? [] : {};\n for (const [key, value] of Object.entries(obj)) {\n if (key === \"parent\") {\n store.parent = Array.isArray(up) ? up2 : up;\n } else if (value && typeof value === \"object\") {\n store[key] = cloneCapturingGroup(value, originMap, store, up);\n } else {\n if (key === \"type\" && value === \"CapturingGroup\") {\n originMap.set(store, originMap.get(obj) ?? obj);\n }\n store[key] = value;\n }\n }\n return store;\n}\nfunction createRecursion(ref) {\n const node = createSubroutine(ref);\n node.isRecursive = true;\n return node;\n}\nfunction getAllParents(node, filterFn) {\n const results = [];\n while (node = node.parent) {\n if (!filterFn || filterFn(node)) {\n results.push(node);\n }\n }\n return results;\n}\nfunction getAndStoreJsGroupName(name, map) {\n if (map.has(name)) {\n return map.get(name);\n }\n const jsName = `$${map.size}_${name.replace(/^[^$_\\p{IDS}]|[^$\\u200C\\u200D\\p{IDC}]/ug, \"_\")}`;\n map.set(name, jsName);\n return jsName;\n}\nfunction getCombinedFlagModsFromFlagNodes(flagNodes) {\n const flagProps = [\"dotAll\", \"ignoreCase\"];\n const combinedFlags = { enable: {}, disable: {} };\n flagNodes.forEach(({ flags }) => {\n flagProps.forEach((prop) => {\n if (flags.enable?.[prop]) {\n delete combinedFlags.disable[prop];\n combinedFlags.enable[prop] = true;\n }\n if (flags.disable?.[prop]) {\n combinedFlags.disable[prop] = true;\n }\n });\n });\n if (!Object.keys(combinedFlags.enable).length) {\n delete combinedFlags.enable;\n }\n if (!Object.keys(combinedFlags.disable).length) {\n delete combinedFlags.disable;\n }\n if (combinedFlags.enable || combinedFlags.disable) {\n return combinedFlags;\n }\n return null;\n}\nfunction getFlagModsFromFlags({ dotAll, ignoreCase }) {\n const mods = {};\n if (dotAll || ignoreCase) {\n mods.enable = {};\n dotAll && (mods.enable.dotAll = true);\n ignoreCase && (mods.enable.ignoreCase = true);\n }\n if (!dotAll || !ignoreCase) {\n mods.disable = {};\n !dotAll && (mods.disable.dotAll = true);\n !ignoreCase && (mods.disable.ignoreCase = true);\n }\n return mods;\n}\nfunction getKids(node) {\n if (!node) {\n throw new Error(\"Node expected\");\n }\n const { body } = node;\n return Array.isArray(body) ? body : body ? [body] : null;\n}\nfunction getLeadingG(els) {\n const firstToConsider = els.find((el) => el.kind === \"search_start\" || isLoneGLookaround(el, { negate: false }) || !isAlwaysZeroLength(el));\n if (!firstToConsider) {\n return null;\n }\n if (firstToConsider.kind === \"search_start\") {\n return firstToConsider;\n }\n if (firstToConsider.type === \"LookaroundAssertion\") {\n return firstToConsider.body[0].body[0];\n }\n if (firstToConsider.type === \"CapturingGroup\" || firstToConsider.type === \"Group\") {\n const gNodesForGroup = [];\n for (const alt of firstToConsider.body) {\n const leadingG = getLeadingG(alt.body);\n if (!leadingG) {\n return null;\n }\n Array.isArray(leadingG) ? gNodesForGroup.push(...leadingG) : gNodesForGroup.push(leadingG);\n }\n return gNodesForGroup;\n }\n return null;\n}\nfunction isAncestorOf(node, descendant) {\n const kids = getKids(node) ?? [];\n for (const kid of kids) {\n if (kid === descendant || isAncestorOf(kid, descendant)) {\n return true;\n }\n }\n return false;\n}\nfunction isAlwaysZeroLength({ type }) {\n return type === \"Assertion\" || type === \"Directive\" || type === \"LookaroundAssertion\";\n}\nfunction isAlwaysNonZeroLength(node) {\n const types = [\n \"Character\",\n \"CharacterClass\",\n \"CharacterSet\"\n ];\n return types.includes(node.type) || node.type === \"Quantifier\" && node.min && types.includes(node.body.type);\n}\nfunction isLoneGLookaround(node, options) {\n const opts = {\n negate: null,\n ...options\n };\n return node.type === \"LookaroundAssertion\" && (opts.negate === null || node.negate === opts.negate) && node.body.length === 1 && hasOnlyChild(node.body[0], {\n type: \"Assertion\",\n kind: \"search_start\"\n });\n}\nfunction isValidJsGroupName(name) {\n return /^[$_\\p{IDS}][$\\u200C\\u200D\\p{IDC}]*$/u.test(name);\n}\nfunction parseFragment(pattern, options) {\n const ast = parse(pattern, {\n ...options,\n // Providing a custom set of Unicode property names avoids converting some JS Unicode\n // properties (ex: `\\p{Alpha}`) to Onig POSIX classes\n unicodePropertyMap: JsUnicodePropertyMap\n });\n const alts = ast.body;\n if (alts.length > 1 || alts[0].body.length > 1) {\n return createGroup({ body: alts });\n }\n return alts[0].body[0];\n}\nfunction setNegate(node, negate) {\n node.negate = negate;\n return node;\n}\nfunction setParent(node, parent) {\n node.parent = parent;\n return node;\n}\nfunction setParentDeep(node, parent) {\n addParentProperties(node);\n node.parent = parent;\n return node;\n}\n\n// src/generate.js\nimport { createAlternative as createAlternative2, createCharacter as createCharacter2, createGroup as createGroup2 } from \"oniguruma-parser/parser\";\nimport { traverse as traverse2 } from \"oniguruma-parser/traverser\";\nfunction generate(ast, options) {\n const opts = getOptions(options);\n const minTargetEs2024 = isMinTarget(opts.target, \"ES2024\");\n const minTargetEs2025 = isMinTarget(opts.target, \"ES2025\");\n const recursionLimit = opts.rules.recursionLimit;\n if (!Number.isInteger(recursionLimit) || recursionLimit < 2 || recursionLimit > 20) {\n throw new Error(\"Invalid recursionLimit; use 2-20\");\n }\n let hasCaseInsensitiveNode = null;\n let hasCaseSensitiveNode = null;\n if (!minTargetEs2025) {\n const iStack = [ast.flags.ignoreCase];\n traverse2(ast, FlagModifierVisitor, {\n getCurrentModI: () => iStack.at(-1),\n popModI() {\n iStack.pop();\n },\n pushModI(isIOn) {\n iStack.push(isIOn);\n },\n setHasCasedChar() {\n if (iStack.at(-1)) {\n hasCaseInsensitiveNode = true;\n } else {\n hasCaseSensitiveNode = true;\n }\n }\n });\n }\n const appliedGlobalFlags = {\n dotAll: ast.flags.dotAll,\n // - Turn global flag i on if a case insensitive node was used and no case sensitive nodes were\n // used (to avoid unnecessary node expansion).\n // - Turn global flag i off if a case sensitive node was used (since case sensitivity can't be\n // forced without the use of ES2025 flag groups)\n ignoreCase: !!((ast.flags.ignoreCase || hasCaseInsensitiveNode) && !hasCaseSensitiveNode)\n };\n let lastNode = ast;\n const state = {\n accuracy: opts.accuracy,\n appliedGlobalFlags,\n captureMap: /* @__PURE__ */ new Map(),\n currentFlags: {\n dotAll: ast.flags.dotAll,\n ignoreCase: ast.flags.ignoreCase\n },\n inCharClass: false,\n lastNode,\n originMap: ast._originMap,\n recursionLimit,\n useAppliedIgnoreCase: !!(!minTargetEs2025 && hasCaseInsensitiveNode && hasCaseSensitiveNode),\n useFlagMods: minTargetEs2025,\n useFlagV: minTargetEs2024,\n verbose: opts.verbose\n };\n function gen(node) {\n state.lastNode = lastNode;\n lastNode = node;\n const fn = throwIfNullish(generator[node.type], `Unexpected node type \"${node.type}\"`);\n return fn(node, state, gen);\n }\n const result = {\n pattern: ast.body.map(gen).join(\"|\"),\n // Could reset `lastNode` at this point via `lastNode = ast`, but it isn't needed by flags\n flags: gen(ast.flags),\n options: { ...ast.options }\n };\n if (!minTargetEs2024) {\n delete result.options.force.v;\n result.options.disable.v = true;\n result.options.unicodeSetsPlugin = null;\n }\n result._captureTransfers = /* @__PURE__ */ new Map();\n result._hiddenCaptures = [];\n state.captureMap.forEach((value, key) => {\n if (value.hidden) {\n result._hiddenCaptures.push(key);\n }\n if (value.transferTo) {\n getOrInsert(result._captureTransfers, value.transferTo, []).push(key);\n }\n });\n return result;\n}\nvar FlagModifierVisitor = {\n \"*\": {\n enter({ node }, state) {\n if (isAnyGroup(node)) {\n const currentModI = state.getCurrentModI();\n state.pushModI(\n node.flags ? getNewCurrentFlags({ ignoreCase: currentModI }, node.flags).ignoreCase : currentModI\n );\n }\n },\n exit({ node }, state) {\n if (isAnyGroup(node)) {\n state.popModI();\n }\n }\n },\n Backreference(_, state) {\n state.setHasCasedChar();\n },\n Character({ node }, state) {\n if (charHasCase(cp(node.value))) {\n state.setHasCasedChar();\n }\n },\n CharacterClassRange({ node, skip }, state) {\n skip();\n if (getCasesOutsideCharClassRange(node, { firstOnly: true }).length) {\n state.setHasCasedChar();\n }\n },\n CharacterSet({ node }, state) {\n if (node.kind === \"property\" && UnicodePropertiesWithSpecificCase.has(node.value)) {\n state.setHasCasedChar();\n }\n }\n};\nvar generator = {\n /**\n @param {AlternativeNode} node\n */\n Alternative({ body }, _, gen) {\n return body.map(gen).join(\"\");\n },\n /**\n @param {AssertionNode} node\n */\n Assertion({ kind, negate }) {\n if (kind === \"string_end\") {\n return \"$\";\n }\n if (kind === \"string_start\") {\n return \"^\";\n }\n if (kind === \"word_boundary\") {\n return negate ? r`\\B` : r`\\b`;\n }\n throw new Error(`Unexpected assertion kind \"${kind}\"`);\n },\n /**\n @param {BackreferenceNode} node\n */\n Backreference({ ref }, state) {\n if (typeof ref !== \"number\") {\n throw new Error(\"Unexpected named backref in transformed AST\");\n }\n if (!state.useFlagMods && state.accuracy === \"strict\" && state.currentFlags.ignoreCase && !state.captureMap.get(ref).ignoreCase) {\n throw new Error(\"Use of case-insensitive backref to case-sensitive group requires target ES2025 or non-strict accuracy\");\n }\n return \"\\\\\" + ref;\n },\n /**\n @param {CapturingGroupNode} node\n */\n CapturingGroup(node, state, gen) {\n const { body, name, number } = node;\n const data = { ignoreCase: state.currentFlags.ignoreCase };\n const origin = state.originMap.get(node);\n if (origin) {\n data.hidden = true;\n if (number > origin.number) {\n data.transferTo = origin.number;\n }\n }\n state.captureMap.set(number, data);\n return `(${name ? `?<${name}>` : \"\"}${body.map(gen).join(\"|\")})`;\n },\n /**\n @param {CharacterNode} node\n */\n Character({ value }, state) {\n const char = cp(value);\n const escaped = getCharEscape(value, {\n escDigit: state.lastNode.type === \"Backreference\",\n inCharClass: state.inCharClass,\n useFlagV: state.useFlagV\n });\n if (escaped !== char) {\n return escaped;\n }\n if (state.useAppliedIgnoreCase && state.currentFlags.ignoreCase && charHasCase(char)) {\n const cases = getIgnoreCaseMatchChars(char);\n return state.inCharClass ? cases.join(\"\") : cases.length > 1 ? `[${cases.join(\"\")}]` : cases[0];\n }\n return char;\n },\n /**\n @param {CharacterClassNode} node\n */\n CharacterClass(node, state, gen) {\n const { kind, negate, parent } = node;\n let { body } = node;\n if (kind === \"intersection\" && !state.useFlagV) {\n throw new Error(\"Use of character class intersection requires min target ES2024\");\n }\n if (envFlags.bugFlagVLiteralHyphenIsRange && state.useFlagV && body.some(isLiteralHyphen)) {\n body = [createCharacter2(45), ...body.filter((kid) => !isLiteralHyphen(kid))];\n }\n const genClass = () => `[${negate ? \"^\" : \"\"}${body.map(gen).join(kind === \"intersection\" ? \"&&\" : \"\")}]`;\n if (!state.inCharClass) {\n if (\n // Already established `kind !== 'intersection'` if `!state.useFlagV`; don't check again\n (!state.useFlagV || envFlags.bugNestedClassIgnoresNegation) && !negate\n ) {\n const negatedChildClasses = body.filter(\n (kid) => kid.type === \"CharacterClass\" && kid.kind === \"union\" && kid.negate\n );\n if (negatedChildClasses.length) {\n const group = createGroup2();\n const groupFirstAlt = group.body[0];\n group.parent = parent;\n groupFirstAlt.parent = group;\n body = body.filter((kid) => !negatedChildClasses.includes(kid));\n node.body = body;\n if (body.length) {\n node.parent = groupFirstAlt;\n groupFirstAlt.body.push(node);\n } else {\n group.body.pop();\n }\n negatedChildClasses.forEach((cc) => {\n const newAlt = createAlternative2({ body: [cc] });\n cc.parent = newAlt;\n newAlt.parent = group;\n group.body.push(newAlt);\n });\n return gen(group);\n }\n }\n state.inCharClass = true;\n const result = genClass();\n state.inCharClass = false;\n return result;\n }\n const firstEl = body[0];\n if (\n // Already established that the parent is a char class via `inCharClass`; don't check again\n kind === \"union\" && !negate && firstEl && // Allows many nested classes to work with `target` ES2018 which doesn't support nesting\n ((!state.useFlagV || !state.verbose) && parent.kind === \"union\" && !(envFlags.bugFlagVLiteralHyphenIsRange && state.useFlagV) || !state.verbose && parent.kind === \"intersection\" && // JS doesn't allow intersection with union or ranges\n body.length === 1 && firstEl.type !== \"CharacterClassRange\")\n ) {\n return body.map(gen).join(\"\");\n }\n if (!state.useFlagV && parent.type === \"CharacterClass\") {\n throw new Error(\"Uses nested character class in a way that requires min target ES2024\");\n }\n return genClass();\n },\n /**\n @param {CharacterClassRangeNode} node\n */\n CharacterClassRange(node, state) {\n const min = node.min.value;\n const max = node.max.value;\n const escOpts = {\n escDigit: false,\n inCharClass: true,\n useFlagV: state.useFlagV\n };\n const minStr = getCharEscape(min, escOpts);\n const maxStr = getCharEscape(max, escOpts);\n const extraChars = /* @__PURE__ */ new Set();\n if (state.useAppliedIgnoreCase && state.currentFlags.ignoreCase) {\n const charsOutsideRange = getCasesOutsideCharClassRange(node);\n const ranges = getCodePointRangesFromChars(charsOutsideRange);\n ranges.forEach((value) => {\n extraChars.add(\n Array.isArray(value) ? `${getCharEscape(value[0], escOpts)}-${getCharEscape(value[1], escOpts)}` : getCharEscape(value, escOpts)\n );\n });\n }\n return `${minStr}-${maxStr}${[...extraChars].join(\"\")}`;\n },\n /**\n @param {CharacterSetNode} node\n */\n CharacterSet({ kind, negate, value, key }, state) {\n if (kind === \"dot\") {\n return state.currentFlags.dotAll ? state.appliedGlobalFlags.dotAll || state.useFlagMods ? \".\" : \"[^]\" : (\n // Onig's only line break char is line feed, unlike JS\n r`[^\\n]`\n );\n }\n if (kind === \"digit\") {\n return negate ? r`\\D` : r`\\d`;\n }\n if (kind === \"property\") {\n if (state.useAppliedIgnoreCase && state.currentFlags.ignoreCase && UnicodePropertiesWithSpecificCase.has(value)) {\n throw new Error(`Unicode property \"${value}\" can't be case-insensitive when other chars have specific case`);\n }\n return `${negate ? r`\\P` : r`\\p`}{${key ? `${key}=` : \"\"}${value}}`;\n }\n if (kind === \"word\") {\n return negate ? r`\\W` : r`\\w`;\n }\n throw new Error(`Unexpected character set kind \"${kind}\"`);\n },\n /**\n @param {FlagsNode} node\n */\n Flags(node, state) {\n return (\n // The transformer should never turn on the properties for flags d, g, m since Onig doesn't\n // have equivs. Flag m is never used since Onig uses different line break chars than JS\n // (node.hasIndices ? 'd' : '') +\n // (node.global ? 'g' : '') +\n // (node.multiline ? 'm' : '') +\n (state.appliedGlobalFlags.ignoreCase ? \"i\" : \"\") + (node.dotAll ? \"s\" : \"\") + (node.sticky ? \"y\" : \"\")\n );\n },\n /**\n @param {GroupNode} node\n */\n Group({ atomic: atomic2, body, flags, parent }, state, gen) {\n const currentFlags = state.currentFlags;\n if (flags) {\n state.currentFlags = getNewCurrentFlags(currentFlags, flags);\n }\n const contents = body.map(gen).join(\"|\");\n const result = !state.verbose && body.length === 1 && // Single alt\n parent.type !== \"Quantifier\" && !atomic2 && (!state.useFlagMods || !flags) ? contents : `(?${getGroupPrefix(atomic2, flags, state.useFlagMods)}${contents})`;\n state.currentFlags = currentFlags;\n return result;\n },\n /**\n @param {LookaroundAssertionNode} node\n */\n LookaroundAssertion({ body, kind, negate }, _, gen) {\n const prefix = `${kind === \"lookahead\" ? \"\" : \"<\"}${negate ? \"!\" : \"=\"}`;\n return `(?${prefix}${body.map(gen).join(\"|\")})`;\n },\n /**\n @param {QuantifierNode} node\n */\n Quantifier(node, _, gen) {\n return gen(node.body) + getQuantifierStr(node);\n },\n /**\n @param {SubroutineNode & {isRecursive: true}} node\n */\n Subroutine({ isRecursive, ref }, state) {\n if (!isRecursive) {\n throw new Error(\"Unexpected non-recursive subroutine in transformed AST\");\n }\n const limit = state.recursionLimit;\n return ref === 0 ? `(?R=${limit})` : r`\\g<${ref}&R=${limit}>`;\n }\n};\nvar BaseEscapeChars = /* @__PURE__ */ new Set([\n \"$\",\n \"(\",\n \")\",\n \"*\",\n \"+\",\n \".\",\n \"?\",\n \"[\",\n \"\\\\\",\n \"]\",\n \"^\",\n \"{\",\n \"|\",\n \"}\"\n]);\nvar CharClassEscapeChars = /* @__PURE__ */ new Set([\n \"-\",\n \"\\\\\",\n \"]\",\n \"^\",\n // Literal `[` doesn't require escaping with flag u, but this can help work around regex source\n // linters and regex syntax processors that expect unescaped `[` to create a nested class\n \"[\"\n]);\nvar CharClassEscapeCharsFlagV = /* @__PURE__ */ new Set([\n \"(\",\n \")\",\n \"-\",\n \"/\",\n \"[\",\n \"\\\\\",\n \"]\",\n \"^\",\n \"{\",\n \"|\",\n \"}\",\n // Double punctuators; also includes already-listed `-` and `^`\n \"!\",\n \"#\",\n \"$\",\n \"%\",\n \"&\",\n \"*\",\n \"+\",\n \",\",\n \".\",\n \":\",\n \";\",\n \"<\",\n \"=\",\n \">\",\n \"?\",\n \"@\",\n \"`\",\n \"~\"\n]);\nvar CharCodeEscapeMap = /* @__PURE__ */ new Map([\n [9, r`\\t`],\n // horizontal tab\n [10, r`\\n`],\n // line feed\n [11, r`\\v`],\n // vertical tab\n [12, r`\\f`],\n // form feed\n [13, r`\\r`],\n // carriage return\n [8232, r`\\u2028`],\n // line separator\n [8233, r`\\u2029`],\n // paragraph separator\n [65279, r`\\uFEFF`]\n // ZWNBSP/BOM\n]);\nvar casedRe = /^\\p{Cased}$/u;\nfunction charHasCase(char) {\n return casedRe.test(char);\n}\nfunction getCasesOutsideCharClassRange(node, options) {\n const firstOnly = !!options?.firstOnly;\n const min = node.min.value;\n const max = node.max.value;\n const found = [];\n if (min < 65 && (max === 65535 || max >= 131071) || min === 65536 && max >= 131071) {\n return found;\n }\n for (let i = min; i <= max; i++) {\n const char = cp(i);\n if (!charHasCase(char)) {\n continue;\n }\n const charsOutsideRange = getIgnoreCaseMatchChars(char).filter((caseOfChar) => {\n const num = caseOfChar.codePointAt(0);\n return num < min || num > max;\n });\n if (charsOutsideRange.length) {\n found.push(...charsOutsideRange);\n if (firstOnly) {\n break;\n }\n }\n }\n return found;\n}\nfunction getCharEscape(codePoint, { escDigit, inCharClass, useFlagV }) {\n if (CharCodeEscapeMap.has(codePoint)) {\n return CharCodeEscapeMap.get(codePoint);\n }\n if (\n // Control chars, etc.; condition modeled on the Chrome developer console's display for strings\n codePoint < 32 || codePoint > 126 && codePoint < 160 || // Unicode planes 4-16; unassigned, special purpose, and private use area\n codePoint > 262143 || // Avoid corrupting a preceding backref by immediately following it with a literal digit\n escDigit && isDigitCharCode(codePoint)\n ) {\n return codePoint > 255 ? `\\\\u{${codePoint.toString(16).toUpperCase()}}` : `\\\\x${codePoint.toString(16).toUpperCase().padStart(2, \"0\")}`;\n }\n const escapeChars = inCharClass ? useFlagV ? CharClassEscapeCharsFlagV : CharClassEscapeChars : BaseEscapeChars;\n const char = cp(codePoint);\n return (escapeChars.has(char) ? \"\\\\\" : \"\") + char;\n}\nfunction getCodePointRangesFromChars(chars) {\n const codePoints = chars.map((char) => char.codePointAt(0)).sort((a, b) => a - b);\n const values = [];\n let start = null;\n for (let i = 0; i < codePoints.length; i++) {\n if (codePoints[i + 1] === codePoints[i] + 1) {\n start ??= codePoints[i];\n } else if (start === null) {\n values.push(codePoints[i]);\n } else {\n values.push([start, codePoints[i]]);\n start = null;\n }\n }\n return values;\n}\nfunction getGroupPrefix(atomic2, flagMods, useFlagMods) {\n if (atomic2) {\n return \">\";\n }\n let mods = \"\";\n if (flagMods && useFlagMods) {\n const { enable, disable } = flagMods;\n mods = (enable?.ignoreCase ? \"i\" : \"\") + (enable?.dotAll ? \"s\" : \"\") + (disable ? \"-\" : \"\") + (disable?.ignoreCase ? \"i\" : \"\") + (disable?.dotAll ? \"s\" : \"\");\n }\n return `${mods}:`;\n}\nfunction getQuantifierStr({ kind, max, min }) {\n let base;\n if (!min && max === 1) {\n base = \"?\";\n } else if (!min && max === Infinity) {\n base = \"*\";\n } else if (min === 1 && max === Infinity) {\n base = \"+\";\n } else if (min === max) {\n base = `{${min}}`;\n } else {\n base = `{${min},${max === Infinity ? \"\" : max}}`;\n }\n return base + {\n greedy: \"\",\n lazy: \"?\",\n possessive: \"+\"\n }[kind];\n}\nfunction isAnyGroup({ type }) {\n return type === \"CapturingGroup\" || type === \"Group\" || type === \"LookaroundAssertion\";\n}\nfunction isDigitCharCode(value) {\n return value > 47 && value < 58;\n}\nfunction isLiteralHyphen({ type, value }) {\n return type === \"Character\" && value === 45;\n}\n\n// src/subclass.js\nvar EmulatedRegExp = class _EmulatedRegExp extends RegExp {\n /**\n @type {Map<number, {\n hidden?: true;\n transferTo?: number;\n }>}\n */\n #captureMap = /* @__PURE__ */ new Map();\n /**\n @type {RegExp | EmulatedRegExp | null}\n */\n #compiled = null;\n /**\n @type {string}\n */\n #pattern;\n /**\n @type {Map<number, string>?}\n */\n #nameMap = null;\n /**\n @type {string?}\n */\n #strategy = null;\n /**\n Can be used to serialize the instance.\n @type {EmulatedRegExpOptions}\n */\n rawOptions = {};\n // Override the getter with one that works with lazy-compiled regexes\n get source() {\n return this.#pattern || \"(?:)\";\n }\n /**\n @overload\n @param {string} pattern\n @param {string} [flags]\n @param {EmulatedRegExpOptions} [options]\n */\n /**\n @overload\n @param {EmulatedRegExp} pattern\n @param {string} [flags]\n */\n constructor(pattern, flags, options) {\n const lazyCompile = !!options?.lazyCompile;\n if (pattern instanceof RegExp) {\n if (options) {\n throw new Error(\"Cannot provide options when copying a regexp\");\n }\n const re = pattern;\n super(re, flags);\n this.#pattern = re.source;\n if (re instanceof _EmulatedRegExp) {\n this.#captureMap = re.#captureMap;\n this.#nameMap = re.#nameMap;\n this.#strategy = re.#strategy;\n this.rawOptions = re.rawOptions;\n }\n } else {\n const opts = {\n hiddenCaptures: [],\n strategy: null,\n transfers: [],\n ...options\n };\n super(lazyCompile ? \"\" : pattern, flags);\n this.#pattern = pattern;\n this.#captureMap = createCaptureMap(opts.hiddenCaptures, opts.transfers);\n this.#strategy = opts.strategy;\n this.rawOptions = options ?? {};\n }\n if (!lazyCompile) {\n this.#compiled = this;\n }\n }\n /**\n Called internally by all String/RegExp methods that use regexes.\n @override\n @param {string} str\n @returns {RegExpExecArray?}\n */\n exec(str) {\n if (!this.#compiled) {\n const { lazyCompile, ...rest } = this.rawOptions;\n this.#compiled = new _EmulatedRegExp(this.#pattern, this.flags, rest);\n }\n const useLastIndex = this.global || this.sticky;\n const pos = this.lastIndex;\n if (this.#strategy === \"clip_search\" && useLastIndex && pos) {\n this.lastIndex = 0;\n const match = this.#execCore(str.slice(pos));\n if (match) {\n adjustMatchDetailsForOffset(match, pos, str, this.hasIndices);\n this.lastIndex += pos;\n }\n return match;\n }\n return this.#execCore(str);\n }\n /**\n Adds support for hidden and transfer captures.\n @param {string} str\n @returns\n */\n #execCore(str) {\n this.#compiled.lastIndex = this.lastIndex;\n const match = super.exec.call(this.#compiled, str);\n this.lastIndex = this.#compiled.lastIndex;\n if (!match || !this.#captureMap.size) {\n return match;\n }\n const matchCopy = [...match];\n match.length = 1;\n let indicesCopy;\n if (this.hasIndices) {\n indicesCopy = [...match.indices];\n match.indices.length = 1;\n }\n const mappedNums = [0];\n for (let i = 1; i < matchCopy.length; i++) {\n const { hidden, transferTo } = this.#captureMap.get(i) ?? {};\n if (hidden) {\n mappedNums.push(null);\n } else {\n mappedNums.push(match.length);\n match.push(matchCopy[i]);\n if (this.hasIndices) {\n match.indices.push(indicesCopy[i]);\n }\n }\n if (transferTo && matchCopy[i] !== void 0) {\n const to = mappedNums[transferTo];\n if (!to) {\n throw new Error(`Invalid capture transfer to \"${to}\"`);\n }\n match[to] = matchCopy[i];\n if (this.hasIndices) {\n match.indices[to] = indicesCopy[i];\n }\n if (match.groups) {\n if (!this.#nameMap) {\n this.#nameMap = createNameMap(this.source);\n }\n const name = this.#nameMap.get(transferTo);\n if (name) {\n match.groups[name] = matchCopy[i];\n if (this.hasIndices) {\n match.indices.groups[name] = indicesCopy[i];\n }\n }\n }\n }\n }\n return match;\n }\n};\nfunction adjustMatchDetailsForOffset(match, offset, input, hasIndices) {\n match.index += offset;\n match.input = input;\n if (hasIndices) {\n const indices = match.indices;\n for (let i = 0; i < indices.length; i++) {\n const arr = indices[i];\n if (arr) {\n indices[i] = [arr[0] + offset, arr[1] + offset];\n }\n }\n const groupIndices = indices.groups;\n if (groupIndices) {\n Object.keys(groupIndices).forEach((key) => {\n const arr = groupIndices[key];\n if (arr) {\n groupIndices[key] = [arr[0] + offset, arr[1] + offset];\n }\n });\n }\n }\n}\nfunction createCaptureMap(hiddenCaptures, transfers) {\n const captureMap = /* @__PURE__ */ new Map();\n for (const num of hiddenCaptures) {\n captureMap.set(num, {\n hidden: true\n });\n }\n for (const [to, from] of transfers) {\n for (const num of from) {\n getOrInsert(captureMap, num, {}).transferTo = to;\n }\n }\n return captureMap;\n}\nfunction createNameMap(pattern) {\n const re = /(?<capture>\\((?:\\?<(?![=!])(?<name>[^>]+)>|(?!\\?)))|\\\\?./gsu;\n const map = /* @__PURE__ */ new Map();\n let numCharClassesOpen = 0;\n let numCaptures = 0;\n let match;\n while (match = re.exec(pattern)) {\n const { 0: m, groups: { capture, name } } = match;\n if (m === \"[\") {\n numCharClassesOpen++;\n } else if (!numCharClassesOpen) {\n if (capture) {\n numCaptures++;\n if (name) {\n map.set(numCaptures, name);\n }\n }\n } else if (m === \"]\") {\n numCharClassesOpen--;\n }\n }\n return map;\n}\n\n// src/index.js\nimport { parse as parse2 } from \"oniguruma-parser/parser\";\nimport { atomic, possessive } from \"regex/internals\";\nimport { recursion } from \"regex-recursion\";\nfunction toRegExp(pattern, options) {\n const d = toRegExpDetails(pattern, options);\n if (d.options) {\n return new EmulatedRegExp(d.pattern, d.flags, d.options);\n }\n return new RegExp(d.pattern, d.flags);\n}\nfunction toRegExpDetails(pattern, options) {\n const opts = getOptions(options);\n const onigurumaAst = parse2(pattern, {\n flags: opts.flags,\n normalizeUnknownPropertyNames: true,\n rules: {\n captureGroup: opts.rules.captureGroup,\n singleline: opts.rules.singleline\n },\n skipBackrefValidation: opts.rules.allowOrphanBackrefs,\n unicodePropertyMap: JsUnicodePropertyMap\n });\n const regexPlusAst = transform(onigurumaAst, {\n accuracy: opts.accuracy,\n asciiWordBoundaries: opts.rules.asciiWordBoundaries,\n avoidSubclass: opts.avoidSubclass,\n bestEffortTarget: opts.target\n });\n const generated = generate(regexPlusAst, opts);\n const recursionResult = recursion(generated.pattern, {\n captureTransfers: generated._captureTransfers,\n hiddenCaptures: generated._hiddenCaptures,\n mode: \"external\"\n });\n const possessiveResult = possessive(recursionResult.pattern);\n const atomicResult = atomic(possessiveResult.pattern, {\n captureTransfers: recursionResult.captureTransfers,\n hiddenCaptures: recursionResult.hiddenCaptures\n });\n const details = {\n pattern: atomicResult.pattern,\n flags: `${opts.hasIndices ? \"d\" : \"\"}${opts.global ? \"g\" : \"\"}${generated.flags}${generated.options.disable.v ? \"u\" : \"v\"}`\n };\n if (opts.avoidSubclass) {\n if (opts.lazyCompileLength !== Infinity) {\n throw new Error(\"Lazy compilation requires subclass\");\n }\n } else {\n const hiddenCaptures = atomicResult.hiddenCaptures.sort((a, b) => a - b);\n const transfers = Array.from(atomicResult.captureTransfers);\n const strategy = regexPlusAst._strategy;\n const lazyCompile = details.pattern.length >= opts.lazyCompileLength;\n if (hiddenCaptures.length || transfers.length || strategy || lazyCompile) {\n details.options = {\n ...hiddenCaptures.length && { hiddenCaptures },\n ...transfers.length && { transfers },\n ...strategy && { strategy },\n ...lazyCompile && { lazyCompile }\n };\n }\n }\n return details;\n}\nexport {\n EmulatedRegExp,\n toRegExp,\n toRegExpDetails\n};\n//# sourceMappingURL=index.js.map\n","import { t as JavaScriptScanner } from \"./scanner-DX8LRFGE.mjs\";\nimport { toRegExp } from \"oniguruma-to-es\";\n//#region src/engine-compile.ts\n/**\n* The default regex constructor for the JavaScript RegExp engine.\n*/\nfunction defaultJavaScriptRegexConstructor(pattern, options) {\n\treturn toRegExp(pattern, {\n\t\tglobal: true,\n\t\thasIndices: true,\n\t\tlazyCompileLength: 3e3,\n\t\trules: {\n\t\t\tallowOrphanBackrefs: true,\n\t\t\tasciiWordBoundaries: true,\n\t\t\tcaptureGroup: true,\n\t\t\trecursionLimit: 5,\n\t\t\tsingleline: true\n\t\t},\n\t\t...options\n\t});\n}\n/**\n* Use the modern JavaScript RegExp engine to implement the OnigScanner.\n*\n* As Oniguruma supports some features that can't be emulated using native JavaScript regexes, some\n* patterns are not supported. Errors will be thrown when parsing TextMate grammars with\n* unsupported patterns, and when the grammar includes patterns that use invalid Oniguruma syntax.\n* Set `forgiving` to `true` to ignore these errors and skip any unsupported or invalid patterns.\n*/\nfunction createJavaScriptRegexEngine(options = {}) {\n\tconst _options = {\n\t\ttarget: \"auto\",\n\t\tcache: /* @__PURE__ */ new Map(),\n\t\t...options\n\t};\n\t_options.regexConstructor ||= (pattern) => defaultJavaScriptRegexConstructor(pattern, { target: _options.target });\n\treturn {\n\t\tcreateScanner(patterns) {\n\t\t\treturn new JavaScriptScanner(patterns, _options);\n\t\t},\n\t\tcreateString(s) {\n\t\t\treturn { content: s };\n\t\t}\n\t};\n}\n//#endregion\nexport { createJavaScriptRegexEngine, defaultJavaScriptRegexConstructor };\n","import { RegisteredCustomLanguages, ResolvedLanguages, ResolvingLanguages } from \"./constants.js\";\nimport { isWorkerContext } from \"../../utils/isWorkerContext.js\";\nimport { bundledLanguages } from \"shiki\";\n//#region src/highlighter/languages/resolveLanguage.ts\nasync function resolveLanguage(lang) {\n\tif (isWorkerContext()) throw new Error(`resolveLanguage(\"${lang}\") cannot be called from a worker context. Languages must be pre-resolved on the main thread and passed to the worker via the resolvedLanguages parameter.`);\n\tconst resolver = ResolvingLanguages.get(lang);\n\tif (resolver != null) return resolver;\n\ttry {\n\t\tlet loader = RegisteredCustomLanguages.get(lang);\n\t\tif (loader == null && Object.prototype.hasOwnProperty.call(bundledLanguages, lang)) loader = bundledLanguages[lang];\n\t\tif (loader == null) throw new Error(`resolveLanguage: \"${lang}\" not found in bundled or custom languages`);\n\t\tconst resolver = loader().then(({ default: data }) => {\n\t\t\tconst resolvedLang = {\n\t\t\t\tname: lang,\n\t\t\t\tdata\n\t\t\t};\n\t\t\tif (!ResolvedLanguages.has(lang)) ResolvedLanguages.set(lang, resolvedLang);\n\t\t\treturn resolvedLang;\n\t\t});\n\t\tResolvingLanguages.set(lang, resolver);\n\t\treturn await resolver;\n\t} finally {\n\t\tResolvingLanguages.delete(lang);\n\t}\n}\n//#endregion\nexport { resolveLanguage };\n\n//# sourceMappingURL=resolveLanguage.js.map","import { ResolvedLanguages } from \"./constants.js\";\nimport { resolveLanguage } from \"./resolveLanguage.js\";\n//#region src/highlighter/languages/getResolvedOrResolveLanguage.ts\nfunction getResolvedOrResolveLanguage(language) {\n\treturn ResolvedLanguages.get(language) ?? resolveLanguage(language);\n}\n//#endregion\nexport { getResolvedOrResolveLanguage };\n\n//# sourceMappingURL=getResolvedOrResolveLanguage.js.map","import { unwrapDefault } from \"./unwrapDefault.js\";\nimport { normalizeTheme } from \"shiki/core\";\n//#region src/modules/createTheme.ts\nfunction createTheme({ name, load, colorScheme, collection, displayName }) {\n\treturn {\n\t\tname,\n\t\tcolorScheme,\n\t\tcollection,\n\t\tdisplayName,\n\t\tload: normalizingLoader(load)\n\t};\n}\nfunction normalizingLoader(loader) {\n\treturn async () => {\n\t\treturn normalizeTheme(unwrapDefault(await loader()));\n\t};\n}\n//#endregion\nexport { createTheme };\n\n//# sourceMappingURL=createTheme.js.map","import { createThemeCollection } from \"../modules/createThemeCollection.js\";\nimport { createTheme } from \"../modules/createTheme.js\";\n//#region src/collections/pierre.ts\nconst PIERRE_COLLECTION = \"pierre\";\nconst DARK_PIERRE_THEMES = [\n\t\"pierre-dark\",\n\t\"pierre-dark-soft\",\n\t\"pierre-dark-vibrant\",\n\t\"pierre-dark-protanopia-deuteranopia\",\n\t\"pierre-dark-tritanopia\"\n];\nconst LIGHT_PIERRE_THEMES = [\n\t\"pierre-light\",\n\t\"pierre-light-soft\",\n\t\"pierre-light-vibrant\",\n\t\"pierre-light-protanopia-deuteranopia\",\n\t\"pierre-light-tritanopia\"\n];\nconst PIERRE_THEMES = [...LIGHT_PIERRE_THEMES, ...DARK_PIERRE_THEMES];\nconst LIGHT_PIERRE_THEME_NAMES = new Set(LIGHT_PIERRE_THEMES);\nfunction pierreColorScheme(name) {\n\tif (LIGHT_PIERRE_THEME_NAMES.has(name)) return \"light\";\n\treturn \"dark\";\n}\nconst PIERRE_THEME_DISPLAY_NAMES = {\n\t\"pierre-dark\": \"Pierre Dark\",\n\t\"pierre-dark-soft\": \"Pierre Dark Soft\",\n\t\"pierre-dark-vibrant\": \"Pierre Dark Vibrant\",\n\t\"pierre-dark-protanopia-deuteranopia\": \"Pierre Dark Protanopia & Deuteranopia\",\n\t\"pierre-dark-tritanopia\": \"Pierre Dark Tritanopia\",\n\t\"pierre-light\": \"Pierre Light\",\n\t\"pierre-light-soft\": \"Pierre Light Soft\",\n\t\"pierre-light-vibrant\": \"Pierre Light Vibrant\",\n\t\"pierre-light-protanopia-deuteranopia\": \"Pierre Light Protanopia & Deuteranopia\",\n\t\"pierre-light-tritanopia\": \"Pierre Light Tritanopia\"\n};\nconst PIERRE_THEME_IMPORTS = {\n\t\"pierre-dark\": () => import(\"@pierre/theme/pierre-dark\"),\n\t\"pierre-dark-soft\": () => import(\"@pierre/theme/pierre-dark-soft\"),\n\t\"pierre-dark-vibrant\": () => import(\"@pierre/theme/pierre-dark-vibrant\"),\n\t\"pierre-dark-protanopia-deuteranopia\": () => import(\"@pierre/theme/pierre-dark-protanopia-deuteranopia\"),\n\t\"pierre-dark-tritanopia\": () => import(\"@pierre/theme/pierre-dark-tritanopia\"),\n\t\"pierre-light\": () => import(\"@pierre/theme/pierre-light\"),\n\t\"pierre-light-soft\": () => import(\"@pierre/theme/pierre-light-soft\"),\n\t\"pierre-light-vibrant\": () => import(\"@pierre/theme/pierre-light-vibrant\"),\n\t\"pierre-light-protanopia-deuteranopia\": () => import(\"@pierre/theme/pierre-light-protanopia-deuteranopia\"),\n\t\"pierre-light-tritanopia\": () => import(\"@pierre/theme/pierre-light-tritanopia\")\n};\nfunction createPierreTheme(name) {\n\treturn createTheme({\n\t\tname,\n\t\tcollection: PIERRE_COLLECTION,\n\t\tcolorScheme: pierreColorScheme(name),\n\t\tdisplayName: PIERRE_THEME_DISPLAY_NAMES[name],\n\t\tload: PIERRE_THEME_IMPORTS[name]\n\t});\n}\nconst pierreThemes = createThemeCollection({ themes: PIERRE_THEMES.map((name) => createPierreTheme(name)) });\n//#endregion\nexport { pierreThemes };\n\n//# sourceMappingURL=pierre.js.map","import { createThemeCollection } from \"../modules/createThemeCollection.js\";\nimport { createTheme } from \"../modules/createTheme.js\";\n//#region src/collections/shiki.ts\nconst SHIKI_COLLECTION = \"shiki\";\nconst LIGHT_SHIKI_THEMES = [\n\t\"ayu-light\",\n\t\"catppuccin-latte\",\n\t\"everforest-light\",\n\t\"github-light\",\n\t\"github-light-default\",\n\t\"github-light-high-contrast\",\n\t\"gruvbox-light-hard\",\n\t\"gruvbox-light-medium\",\n\t\"gruvbox-light-soft\",\n\t\"horizon-bright\",\n\t\"kanagawa-lotus\",\n\t\"light-plus\",\n\t\"material-theme-lighter\",\n\t\"min-light\",\n\t\"night-owl-light\",\n\t\"one-light\",\n\t\"rose-pine-dawn\",\n\t\"slack-ochin\",\n\t\"snazzy-light\",\n\t\"solarized-light\",\n\t\"vitesse-light\"\n];\nconst DARK_SHIKI_THEMES = [\n\t\"andromeeda\",\n\t\"aurora-x\",\n\t\"ayu-dark\",\n\t\"ayu-mirage\",\n\t\"catppuccin-frappe\",\n\t\"catppuccin-macchiato\",\n\t\"catppuccin-mocha\",\n\t\"dark-plus\",\n\t\"dracula\",\n\t\"dracula-soft\",\n\t\"everforest-dark\",\n\t\"github-dark\",\n\t\"github-dark-default\",\n\t\"github-dark-dimmed\",\n\t\"github-dark-high-contrast\",\n\t\"gruvbox-dark-hard\",\n\t\"gruvbox-dark-medium\",\n\t\"gruvbox-dark-soft\",\n\t\"horizon\",\n\t\"houston\",\n\t\"kanagawa-dragon\",\n\t\"kanagawa-wave\",\n\t\"laserwave\",\n\t\"material-theme\",\n\t\"material-theme-darker\",\n\t\"material-theme-ocean\",\n\t\"material-theme-palenight\",\n\t\"min-dark\",\n\t\"monokai\",\n\t\"night-owl\",\n\t\"nord\",\n\t\"one-dark-pro\",\n\t\"plastic\",\n\t\"poimandres\",\n\t\"red\",\n\t\"rose-pine\",\n\t\"rose-pine-moon\",\n\t\"slack-dark\",\n\t\"solarized-dark\",\n\t\"synthwave-84\",\n\t\"tokyo-night\",\n\t\"vesper\",\n\t\"vitesse-black\",\n\t\"vitesse-dark\"\n];\nconst LIGHT_SHIKI_THEME_NAMES = new Set(LIGHT_SHIKI_THEMES);\nfunction shikiColorScheme(name) {\n\tif (LIGHT_SHIKI_THEME_NAMES.has(name)) return \"light\";\n\treturn \"dark\";\n}\nconst SHIKI_THEME_IMPORTS = {\n\tandromeeda: () => import(\"@shikijs/themes/andromeeda\"),\n\t\"aurora-x\": () => import(\"@shikijs/themes/aurora-x\"),\n\t\"ayu-dark\": () => import(\"@shikijs/themes/ayu-dark\"),\n\t\"ayu-light\": () => import(\"@shikijs/themes/ayu-light\"),\n\t\"ayu-mirage\": () => import(\"@shikijs/themes/ayu-mirage\"),\n\t\"catppuccin-frappe\": () => import(\"@shikijs/themes/catppuccin-frappe\"),\n\t\"catppuccin-latte\": () => import(\"@shikijs/themes/catppuccin-latte\"),\n\t\"catppuccin-macchiato\": () => import(\"@shikijs/themes/catppuccin-macchiato\"),\n\t\"catppuccin-mocha\": () => import(\"@shikijs/themes/catppuccin-mocha\"),\n\t\"dark-plus\": () => import(\"@shikijs/themes/dark-plus\"),\n\tdracula: () => import(\"@shikijs/themes/dracula\"),\n\t\"dracula-soft\": () => import(\"@shikijs/themes/dracula-soft\"),\n\t\"everforest-dark\": () => import(\"@shikijs/themes/everforest-dark\"),\n\t\"everforest-light\": () => import(\"@shikijs/themes/everforest-light\"),\n\t\"github-dark\": () => import(\"@shikijs/themes/github-dark\"),\n\t\"github-dark-default\": () => import(\"@shikijs/themes/github-dark-default\"),\n\t\"github-dark-dimmed\": () => import(\"@shikijs/themes/github-dark-dimmed\"),\n\t\"github-dark-high-contrast\": () => import(\"@shikijs/themes/github-dark-high-contrast\"),\n\t\"github-light\": () => import(\"@shikijs/themes/github-light\"),\n\t\"github-light-default\": () => import(\"@shikijs/themes/github-light-default\"),\n\t\"github-light-high-contrast\": () => import(\"@shikijs/themes/github-light-high-contrast\"),\n\t\"gruvbox-dark-hard\": () => import(\"@shikijs/themes/gruvbox-dark-hard\"),\n\t\"gruvbox-dark-medium\": () => import(\"@shikijs/themes/gruvbox-dark-medium\"),\n\t\"gruvbox-dark-soft\": () => import(\"@shikijs/themes/gruvbox-dark-soft\"),\n\t\"gruvbox-light-hard\": () => import(\"@shikijs/themes/gruvbox-light-hard\"),\n\t\"gruvbox-light-medium\": () => import(\"@shikijs/themes/gruvbox-light-medium\"),\n\t\"gruvbox-light-soft\": () => import(\"@shikijs/themes/gruvbox-light-soft\"),\n\thorizon: () => import(\"@shikijs/themes/horizon\"),\n\t\"horizon-bright\": () => import(\"@shikijs/themes/horizon-bright\"),\n\thouston: () => import(\"@shikijs/themes/houston\"),\n\t\"kanagawa-dragon\": () => import(\"@shikijs/themes/kanagawa-dragon\"),\n\t\"kanagawa-lotus\": () => import(\"@shikijs/themes/kanagawa-lotus\"),\n\t\"kanagawa-wave\": () => import(\"@shikijs/themes/kanagawa-wave\"),\n\tlaserwave: () => import(\"@shikijs/themes/laserwave\"),\n\t\"light-plus\": () => import(\"@shikijs/themes/light-plus\"),\n\t\"material-theme\": () => import(\"@shikijs/themes/material-theme\"),\n\t\"material-theme-darker\": () => import(\"@shikijs/themes/material-theme-darker\"),\n\t\"material-theme-lighter\": () => import(\"@shikijs/themes/material-theme-lighter\"),\n\t\"material-theme-ocean\": () => import(\"@shikijs/themes/material-theme-ocean\"),\n\t\"material-theme-palenight\": () => import(\"@shikijs/themes/material-theme-palenight\"),\n\t\"min-dark\": () => import(\"@shikijs/themes/min-dark\"),\n\t\"min-light\": () => import(\"@shikijs/themes/min-light\"),\n\tmonokai: () => import(\"@shikijs/themes/monokai\"),\n\t\"night-owl\": () => import(\"@shikijs/themes/night-owl\"),\n\t\"night-owl-light\": () => import(\"@shikijs/themes/night-owl-light\"),\n\tnord: () => import(\"@shikijs/themes/nord\"),\n\t\"one-dark-pro\": () => import(\"@shikijs/themes/one-dark-pro\"),\n\t\"one-light\": () => import(\"@shikijs/themes/one-light\"),\n\tplastic: () => import(\"@shikijs/themes/plastic\"),\n\tpoimandres: () => import(\"@shikijs/themes/poimandres\"),\n\tred: () => import(\"@shikijs/themes/red\"),\n\t\"rose-pine\": () => import(\"@shikijs/themes/rose-pine\"),\n\t\"rose-pine-dawn\": () => import(\"@shikijs/themes/rose-pine-dawn\"),\n\t\"rose-pine-moon\": () => import(\"@shikijs/themes/rose-pine-moon\"),\n\t\"slack-dark\": () => import(\"@shikijs/themes/slack-dark\"),\n\t\"slack-ochin\": () => import(\"@shikijs/themes/slack-ochin\"),\n\t\"snazzy-light\": () => import(\"@shikijs/themes/snazzy-light\"),\n\t\"solarized-dark\": () => import(\"@shikijs/themes/solarized-dark\"),\n\t\"solarized-light\": () => import(\"@shikijs/themes/solarized-light\"),\n\t\"synthwave-84\": () => import(\"@shikijs/themes/synthwave-84\"),\n\t\"tokyo-night\": () => import(\"@shikijs/themes/tokyo-night\"),\n\tvesper: () => import(\"@shikijs/themes/vesper\"),\n\t\"vitesse-black\": () => import(\"@shikijs/themes/vitesse-black\"),\n\t\"vitesse-dark\": () => import(\"@shikijs/themes/vitesse-dark\"),\n\t\"vitesse-light\": () => import(\"@shikijs/themes/vitesse-light\")\n};\nfunction createShikiTheme(name) {\n\treturn createTheme({\n\t\tname,\n\t\tcollection: SHIKI_COLLECTION,\n\t\tcolorScheme: shikiColorScheme(name),\n\t\tload: SHIKI_THEME_IMPORTS[name]\n\t});\n}\nconst shikiThemes = createThemeCollection({ themes: Object.freeze([...LIGHT_SHIKI_THEMES.map((name) => createShikiTheme(name)), ...DARK_SHIKI_THEMES.map((name) => createShikiTheme(name))]) });\n//#endregion\nexport { shikiThemes };\n\n//# sourceMappingURL=shiki.js.map","import { isWorkerContext } from \"../../utils/isWorkerContext.js\";\nimport { themeResolver } from \"./themeResolver.js\";\nimport { shikiThemes } from \"@pierre/theming/themes\";\n//#region src/highlighter/themes/themeResolution.ts\nfunction prepareThemeResolution(themeName) {\n\tif (isWorkerContext()) throw new Error(`Theme \"${themeName}\" cannot be resolved from a worker context. Themes must be pre-resolved on the main thread and passed to the worker via the resolvedLanguages parameter.`);\n\tif (themeResolver.hasRegisteredTheme(themeName)) return;\n\tconst descriptor = shikiThemes.getTheme(themeName);\n\tif (descriptor != null) {\n\t\tthemeResolver.registerThemeIfAbsent(descriptor.name, descriptor.load);\n\t\treturn;\n\t}\n\tthrow new Error(`No valid theme loader registered for \"${themeName}\"`);\n}\nfunction validateResolvedThemeName(themeName, theme) {\n\tif (theme.name !== themeName) throw new Error(`resolvedTheme: themeName: ${themeName} does not match theme.name: ${theme.name}`);\n}\n//#endregion\nexport { prepareThemeResolution, validateResolvedThemeName };\n\n//# sourceMappingURL=themeResolution.js.map","import { themeResolver } from \"./themeResolver.js\";\nimport { prepareThemeResolution, validateResolvedThemeName } from \"./themeResolution.js\";\n//#region src/highlighter/themes/resolveTheme.ts\nasync function resolveTheme(themeName) {\n\tprepareThemeResolution(themeName);\n\tconst theme = await themeResolver.resolveTheme(themeName);\n\tvalidateResolvedThemeName(themeName, theme);\n\treturn theme;\n}\n//#endregion\nexport { resolveTheme };\n\n//# sourceMappingURL=resolveTheme.js.map","import { themeResolver } from \"./themeResolver.js\";\nimport { resolveTheme } from \"./resolveTheme.js\";\n//#region src/highlighter/themes/getResolvedOrResolveTheme.ts\nfunction getResolvedOrResolveTheme(themeName) {\n\treturn themeResolver.getResolvedTheme(themeName) ?? resolveTheme(themeName);\n}\n//#endregion\nexport { getResolvedOrResolveTheme };\n\n//# sourceMappingURL=getResolvedOrResolveTheme.js.map","import { attachResolvedLanguages } from \"./languages/attachResolvedLanguages.js\";\nimport { cleanUpResolvedLanguages } from \"./languages/cleanUpResolvedLanguages.js\";\nimport { getResolvedOrResolveLanguage } from \"./languages/getResolvedOrResolveLanguage.js\";\nimport { themeResolver } from \"./themes/themeResolver.js\";\nimport { attachResolvedThemes } from \"./themes/attachResolvedThemes.js\";\nimport { cleanUpResolvedThemes } from \"./themes/cleanUpResolvedThemes.js\";\nimport { getResolvedOrResolveTheme } from \"./themes/getResolvedOrResolveTheme.js\";\nimport { createHighlighter, createJavaScriptRegexEngine, createOnigurumaEngine } from \"shiki\";\nimport { pierreThemes } from \"@pierre/theming/themes\";\n//#region src/highlighter/shared_highlighter.ts\nlet highlighter;\nasync function getSharedHighlighter({ themes, langs, preferredHighlighter = \"shiki-js\" }) {\n\thighlighter ??= createHighlighter({\n\t\tthemes: [],\n\t\tlangs: [\"text\"],\n\t\tengine: preferredHighlighter === \"shiki-wasm\" ? createOnigurumaEngine(import(\"shiki/wasm\")) : createJavaScriptRegexEngine()\n\t});\n\tconst instance = isHighlighterLoading(highlighter) ? await highlighter : highlighter;\n\thighlighter = instance;\n\tconst languageLoaders = [];\n\tfor (const language of langs) {\n\t\tif (language === \"text\" || language === \"ansi\") continue;\n\t\tconst maybeResolvedLanguage = getResolvedOrResolveLanguage(language);\n\t\tif (\"then\" in maybeResolvedLanguage) languageLoaders.push(maybeResolvedLanguage);\n\t\telse attachResolvedLanguages(maybeResolvedLanguage, instance);\n\t}\n\tconst themeLoaders = [];\n\tfor (const themeName of themes) {\n\t\tconst maybeResolvedTheme = getResolvedOrResolveTheme(themeName);\n\t\tif (\"then\" in maybeResolvedTheme) themeLoaders.push(maybeResolvedTheme);\n\t\telse attachResolvedThemes(maybeResolvedTheme, highlighter);\n\t}\n\tif (languageLoaders.length > 0 || themeLoaders.length > 0) await Promise.all([Promise.all(languageLoaders).then((languages) => {\n\t\tattachResolvedLanguages(languages, instance);\n\t}), Promise.all(themeLoaders).then((themes) => {\n\t\tattachResolvedThemes(themes, instance);\n\t})]);\n\treturn instance;\n}\nfunction isHighlighterLoaded(h = highlighter) {\n\treturn h != null && !(\"then\" in h);\n}\nfunction getHighlighterIfLoaded() {\n\tif (highlighter != null && !(\"then\" in highlighter)) return highlighter;\n}\nfunction isHighlighterLoading(h = highlighter) {\n\treturn h != null && \"then\" in h;\n}\nfunction isHighlighterNull(h = highlighter) {\n\treturn h == null;\n}\nasync function preloadHighlighter(options) {\n\tawait getSharedHighlighter(options);\n}\nasync function disposeHighlighter() {\n\tif (highlighter == null) return;\n\t(await highlighter).dispose();\n\tcleanUpResolvedLanguages();\n\tcleanUpResolvedThemes();\n\thighlighter = void 0;\n}\nfor (const descriptor of pierreThemes.getThemes()) themeResolver.registerThemeIfAbsent(descriptor.name, descriptor.load);\n//#endregion\nexport { disposeHighlighter, getHighlighterIfLoaded, getSharedHighlighter, isHighlighterLoaded, isHighlighterLoading, isHighlighterNull, preloadHighlighter };\n\n//# sourceMappingURL=shared_highlighter.js.map","import { DEFAULT_THEMES } from \"../constants.js\";\n//#region src/utils/getThemes.ts\nfunction getThemes(theme = DEFAULT_THEMES) {\n\tconst themesArr = [];\n\tif (typeof theme === \"string\") themesArr.push(theme);\n\telse {\n\t\tthemesArr.push(theme.dark);\n\t\tthemesArr.push(theme.light);\n\t}\n\treturn themesArr;\n}\n//#endregion\nexport { getThemes };\n\n//# sourceMappingURL=getThemes.js.map","import { themeResolver } from \"./themeResolver.js\";\n//#region src/highlighter/themes/hasResolvedThemes.ts\nfunction hasResolvedThemes(themeNames) {\n\treturn themeResolver.hasResolvedThemes(themeNames);\n}\n//#endregion\nexport { hasResolvedThemes };\n\n//# sourceMappingURL=hasResolvedThemes.js.map","import { areThemesEqual } from \"./areThemesEqual.js\";\n//#region src/utils/areFileRenderOptionsEqual.ts\nfunction areFileRenderOptionsEqual(optionsA, optionsB) {\n\treturn areThemesEqual(optionsA.theme, optionsB.theme) && optionsA.useTokenTransformer === optionsB.useTokenTransformer && optionsA.tokenizeMaxLineLength === optionsB.tokenizeMaxLineLength;\n}\n//#endregion\nexport { areFileRenderOptionsEqual };\n\n//# sourceMappingURL=areFileRenderOptionsEqual.js.map","//#region src/utils/areFilesEqual.ts\nfunction areFilesEqual(fileA, fileB) {\n\treturn fileA?.cacheKey === fileB?.cacheKey && fileA?.contents === fileB?.contents && fileA?.name === fileB?.name && fileA?.lang === fileB?.lang;\n}\n//#endregion\nexport { areFilesEqual };\n\n//# sourceMappingURL=areFilesEqual.js.map","//#region src/utils/getFiletypeFromFileName.ts\nconst CUSTOM_EXTENSION_TO_FILE_FORMAT = /* @__PURE__ */ new Map();\nlet customExtensionsVersion = 0;\nconst EXTENSION_TO_FILE_FORMAT = {\n\t\"1c\": \"1c\",\n\tabap: \"abap\",\n\tas: \"actionscript-3\",\n\tada: \"ada\",\n\tadb: \"ada\",\n\tads: \"ada\",\n\tadoc: \"asciidoc\",\n\tasciidoc: \"asciidoc\",\n\t\"component.html\": \"angular-html\",\n\t\"component.ts\": \"angular-ts\",\n\tconf: \"nginx\",\n\thtaccess: \"apache\",\n\tcls: \"tex\",\n\ttrigger: \"apex\",\n\tapl: \"apl\",\n\tapplescript: \"applescript\",\n\tscpt: \"applescript\",\n\tara: \"ara\",\n\tasm: \"asm\",\n\ts: \"riscv\",\n\tastro: \"astro\",\n\tawk: \"awk\",\n\tbal: \"ballerina\",\n\tsh: \"zsh\",\n\tbash: \"zsh\",\n\tbat: \"cmd\",\n\tcmd: \"cmd\",\n\tbe: \"berry\",\n\tbeancount: \"beancount\",\n\tbib: \"bibtex\",\n\tbicep: \"bicep\",\n\t\"blade.php\": \"blade\",\n\tbsl: \"bsl\",\n\tc: \"c\",\n\th: \"objective-cpp\",\n\tcs: \"csharp\",\n\tcpp: \"cpp\",\n\thpp: \"cpp\",\n\tcc: \"cpp\",\n\tcxx: \"cpp\",\n\thh: \"cpp\",\n\tcdc: \"cdc\",\n\tcairo: \"cairo\",\n\tclar: \"clarity\",\n\tclj: \"clojure\",\n\tcljs: \"clojure\",\n\tcljc: \"clojure\",\n\tsoy: \"soy\",\n\tcmake: \"cmake\",\n\t\"CMakeLists.txt\": \"cmake\",\n\tcob: \"cobol\",\n\tcbl: \"cobol\",\n\tcobol: \"cobol\",\n\tCODEOWNERS: \"codeowners\",\n\tql: \"ql\",\n\tcoffee: \"coffeescript\",\n\tlisp: \"lisp\",\n\tcl: \"lisp\",\n\tlsp: \"lisp\",\n\tlog: \"log\",\n\tv: \"verilog\",\n\tcql: \"cql\",\n\tcr: \"crystal\",\n\tcss: \"css\",\n\tcsv: \"csv\",\n\tcue: \"cue\",\n\tcypher: \"cypher\",\n\tcyp: \"cypher\",\n\td: \"d\",\n\tdart: \"dart\",\n\tdax: \"dax\",\n\tdesktop: \"desktop\",\n\tdiff: \"diff\",\n\tpatch: \"diff\",\n\tDockerfile: \"dockerfile\",\n\tdockerfile: \"dockerfile\",\n\tenv: \"dotenv\",\n\tdm: \"dream-maker\",\n\tedge: \"edge\",\n\tel: \"emacs-lisp\",\n\tex: \"elixir\",\n\texs: \"elixir\",\n\telm: \"elm\",\n\terb: \"erb\",\n\terl: \"erlang\",\n\thrl: \"erlang\",\n\tf: \"fortran-fixed-form\",\n\tfor: \"fortran-fixed-form\",\n\tfs: \"fsharp\",\n\tfsi: \"fsharp\",\n\tfsx: \"fsharp\",\n\tf03: \"f03\",\n\tf08: \"f08\",\n\tf18: \"f18\",\n\tf77: \"f77\",\n\tf90: \"fortran-free-form\",\n\tf95: \"fortran-free-form\",\n\tfnl: \"fennel\",\n\tfish: \"fish\",\n\tftl: \"ftl\",\n\ttres: \"gdresource\",\n\tres: \"gdresource\",\n\tgd: \"gdscript\",\n\tgdshader: \"gdshader\",\n\tgs: \"genie\",\n\tfeature: \"gherkin\",\n\tCOMMIT_EDITMSG: \"git-commit\",\n\t\"git-rebase-todo\": \"git-rebase\",\n\tgjs: \"glimmer-js\",\n\tgleam: \"gleam\",\n\tgts: \"glimmer-ts\",\n\tglsl: \"glsl\",\n\tvert: \"glsl\",\n\tfrag: \"glsl\",\n\tshader: \"shaderlab\",\n\tgp: \"gnuplot\",\n\tplt: \"gnuplot\",\n\tgnuplot: \"gnuplot\",\n\tgo: \"go\",\n\tgraphql: \"graphql\",\n\tgql: \"graphql\",\n\tgroovy: \"groovy\",\n\tgvy: \"groovy\",\n\thack: \"hack\",\n\thaml: \"haml\",\n\thbs: \"handlebars\",\n\thandlebars: \"handlebars\",\n\ths: \"haskell\",\n\tlhs: \"haskell\",\n\thx: \"haxe\",\n\thcl: \"hcl\",\n\thjson: \"hjson\",\n\thlsl: \"hlsl\",\n\tfx: \"hlsl\",\n\thtml: \"html\",\n\thtm: \"html\",\n\thttp: \"http\",\n\trest: \"http\",\n\thxml: \"hxml\",\n\thy: \"hy\",\n\timba: \"imba\",\n\tini: \"ini\",\n\tcfg: \"ini\",\n\tjade: \"pug\",\n\tpug: \"pug\",\n\tjava: \"java\",\n\tjs: \"javascript\",\n\tmjs: \"javascript\",\n\tcjs: \"javascript\",\n\tjinja: \"jinja\",\n\tjinja2: \"jinja\",\n\tj2: \"jinja\",\n\tjison: \"jison\",\n\tjl: \"julia\",\n\tjson: \"json\",\n\tjson5: \"json5\",\n\tjsonc: \"jsonc\",\n\tjsonl: \"jsonl\",\n\tjsonnet: \"jsonnet\",\n\tlibsonnet: \"jsonnet\",\n\tjssm: \"jssm\",\n\tjsx: \"jsx\",\n\tkt: \"kotlin\",\n\tkts: \"kts\",\n\tkql: \"kusto\",\n\ttex: \"tex\",\n\tltx: \"tex\",\n\tlean: \"lean4\",\n\tless: \"less\",\n\tliquid: \"liquid\",\n\tlit: \"lit\",\n\tll: \"llvm\",\n\tlogo: \"logo\",\n\tlua: \"lua\",\n\tluau: \"luau\",\n\tMakefile: \"makefile\",\n\tmk: \"makefile\",\n\tmakefile: \"makefile\",\n\tmd: \"markdown\",\n\tmarkdown: \"markdown\",\n\tmarko: \"marko\",\n\tm: \"wolfram\",\n\tmat: \"matlab\",\n\tmdc: \"mdc\",\n\tmdx: \"mdx\",\n\twiki: \"wikitext\",\n\tmediawiki: \"wikitext\",\n\tmmd: \"mermaid\",\n\tmermaid: \"mermaid\",\n\tmips: \"mipsasm\",\n\tmojo: \"mojo\",\n\t\"🔥\": \"mojo\",\n\tmove: \"move\",\n\tnar: \"narrat\",\n\tnf: \"nextflow\",\n\tnim: \"nim\",\n\tnims: \"nim\",\n\tnimble: \"nim\",\n\tnix: \"nix\",\n\tnu: \"nushell\",\n\tmm: \"objective-cpp\",\n\tml: \"ocaml\",\n\tmli: \"ocaml\",\n\tmll: \"ocaml\",\n\tmly: \"ocaml\",\n\tpas: \"pascal\",\n\tp: \"pascal\",\n\tpl: \"prolog\",\n\tpm: \"perl\",\n\tt: \"perl\",\n\traku: \"raku\",\n\tp6: \"raku\",\n\tpl6: \"raku\",\n\tphp: \"php\",\n\tphtml: \"php\",\n\tpls: \"plsql\",\n\tsql: \"sql\",\n\tpo: \"po\",\n\tpolar: \"polar\",\n\tpcss: \"postcss\",\n\tpot: \"pot\",\n\tpotx: \"potx\",\n\tpq: \"powerquery\",\n\tpqm: \"powerquery\",\n\tps1: \"powershell\",\n\tpsm1: \"powershell\",\n\tpsd1: \"powershell\",\n\tprisma: \"prisma\",\n\tpro: \"prolog\",\n\tP: \"prolog\",\n\tproperties: \"properties\",\n\tproto: \"protobuf\",\n\tpp: \"puppet\",\n\tpurs: \"purescript\",\n\tpy: \"python\",\n\tpyw: \"python\",\n\tpyi: \"python\",\n\tqml: \"qml\",\n\tqmldir: \"qmldir\",\n\tqss: \"qss\",\n\tr: \"r\",\n\tR: \"r\",\n\trkt: \"racket\",\n\trktl: \"racket\",\n\trazor: \"razor\",\n\tcshtml: \"razor\",\n\trb: \"ruby\",\n\trbw: \"ruby\",\n\treg: \"reg\",\n\tregex: \"regexp\",\n\trel: \"rel\",\n\trs: \"rust\",\n\trst: \"rst\",\n\trake: \"ruby\",\n\tgemspec: \"ruby\",\n\tjbuilder: \"ruby\",\n\tbuilder: \"ruby\",\n\trabl: \"ruby\",\n\tarb: \"ruby\",\n\tru: \"ruby\",\n\tpodspec: \"ruby\",\n\tGemfile: \"ruby\",\n\tRakefile: \"ruby\",\n\tGuardfile: \"ruby\",\n\tCapfile: \"ruby\",\n\tBerksfile: \"ruby\",\n\tBrewfile: \"ruby\",\n\tVagrantfile: \"ruby\",\n\tThorfile: \"ruby\",\n\tAppraisals: \"ruby\",\n\tDangerfile: \"ruby\",\n\tsas: \"sas\",\n\tsass: \"sass\",\n\tscala: \"scala\",\n\tsc: \"scala\",\n\tscm: \"scheme\",\n\tss: \"scheme\",\n\tsld: \"scheme\",\n\tscss: \"scss\",\n\tsdbl: \"sdbl\",\n\tshadergraph: \"shader\",\n\tst: \"smalltalk\",\n\tsol: \"solidity\",\n\tsparql: \"sparql\",\n\trq: \"sparql\",\n\tspl: \"splunk\",\n\tconfig: \"ssh-config\",\n\tdo: \"stata\",\n\tado: \"stata\",\n\tdta: \"stata\",\n\tstyl: \"stylus\",\n\tstylus: \"stylus\",\n\tsvelte: \"svelte\",\n\tswift: \"swift\",\n\tsv: \"system-verilog\",\n\tsvh: \"system-verilog\",\n\tservice: \"systemd\",\n\tsocket: \"systemd\",\n\tdevice: \"systemd\",\n\ttimer: \"systemd\",\n\ttalon: \"talonscript\",\n\ttasl: \"tasl\",\n\ttcl: \"tcl\",\n\ttempl: \"templ\",\n\ttf: \"tf\",\n\ttfvars: \"tfvars\",\n\ttoml: \"toml\",\n\tts: \"typescript\",\n\ttsp: \"typespec\",\n\ttsv: \"tsv\",\n\ttsx: \"tsx\",\n\tttl: \"turtle\",\n\ttwig: \"twig\",\n\ttyp: \"typst\",\n\tvv: \"v\",\n\tvala: \"vala\",\n\tvapi: \"vala\",\n\tvb: \"vb\",\n\tvbs: \"vb\",\n\tbas: \"vb\",\n\tvh: \"verilog\",\n\tvhd: \"vhdl\",\n\tvhdl: \"vhdl\",\n\tvim: \"vimscript\",\n\tvue: \"vue\",\n\t\"vine.ts\": \"vue-vine\",\n\tvy: \"vyper\",\n\twasm: \"wasm\",\n\twat: \"wasm\",\n\twy: \"文言\",\n\twgsl: \"wgsl\",\n\twit: \"wit\",\n\twl: \"wolfram\",\n\tnb: \"wolfram\",\n\txml: \"xml\",\n\txsl: \"xsl\",\n\txslt: \"xsl\",\n\tyaml: \"yaml\",\n\tyml: \"yml\",\n\tzs: \"zenscript\",\n\tzig: \"zig\",\n\tzsh: \"zsh\",\n\tsty: \"tex\"\n};\nfunction getFiletypeFromFileName(fileName) {\n\tif (CUSTOM_EXTENSION_TO_FILE_FORMAT.has(fileName)) return CUSTOM_EXTENSION_TO_FILE_FORMAT.get(fileName) ?? \"text\";\n\tif (EXTENSION_TO_FILE_FORMAT[fileName] != null) return EXTENSION_TO_FILE_FORMAT[fileName];\n\tconst compoundMatch = fileName.match(/\\.([^/\\\\]+\\.[^/\\\\]+)$/);\n\tif (compoundMatch != null) {\n\t\tif (CUSTOM_EXTENSION_TO_FILE_FORMAT.has(compoundMatch[1])) return CUSTOM_EXTENSION_TO_FILE_FORMAT.get(compoundMatch[1]) ?? \"text\";\n\t\tif (EXTENSION_TO_FILE_FORMAT[compoundMatch[1]] != null) return EXTENSION_TO_FILE_FORMAT[compoundMatch[1]] ?? \"text\";\n\t}\n\tconst simpleMatch = fileName.match(/\\.([^.]+)$/)?.[1] ?? \"\";\n\tif (CUSTOM_EXTENSION_TO_FILE_FORMAT.has(simpleMatch)) return CUSTOM_EXTENSION_TO_FILE_FORMAT.get(simpleMatch) ?? \"text\";\n\treturn EXTENSION_TO_FILE_FORMAT[simpleMatch] ?? \"text\";\n}\nfunction replaceCustomExtensions(version, map) {\n\tif (version <= customExtensionsVersion) return false;\n\tCUSTOM_EXTENSION_TO_FILE_FORMAT.clear();\n\tfor (const key in map) {\n\t\tconst lang = map[key];\n\t\tif (lang != null) CUSTOM_EXTENSION_TO_FILE_FORMAT.set(key, lang);\n\t}\n\tcustomExtensionsVersion = version;\n\treturn true;\n}\nfunction getCustomExtensionsVersion() {\n\treturn customExtensionsVersion;\n}\nfunction setCustomExtension(key, lang) {\n\tconst existing = CUSTOM_EXTENSION_TO_FILE_FORMAT.get(key);\n\tif (existing === lang) return false;\n\tif (existing != null) console.warn(`setCustomExtension: overriding custom mapping for \"${key}\" from \"${existing}\" to \"${lang}\"`);\n\tCUSTOM_EXTENSION_TO_FILE_FORMAT.set(key, lang);\n\tcustomExtensionsVersion++;\n\treturn true;\n}\nfunction getCustomExtensionsMap() {\n\treturn Object.fromEntries(CUSTOM_EXTENSION_TO_FILE_FORMAT);\n}\n//#endregion\nexport { EXTENSION_TO_FILE_FORMAT, getCustomExtensionsMap, getCustomExtensionsVersion, getFiletypeFromFileName, replaceCustomExtensions, setCustomExtension };\n\n//# sourceMappingURL=getFiletypeFromFileName.js.map","import { getFiletypeFromFileName } from \"./getFiletypeFromFileName.js\";\n//#region src/utils/isFilePlainText.ts\nfunction isFilePlainText(file) {\n\treturn (file.lang ?? getFiletypeFromFileName(file.name)) === \"text\";\n}\n//#endregion\nexport { isFilePlainText };\n\n//# sourceMappingURL=isFilePlainText.js.map","//#region src/utils/iterateOverFile.ts\n/**\n* Iterates over lines in a file with optional windowing support.\n*\n* Similar to `iterateOverDiff` but simplified for linear file content.\n* Supports viewport windowing for virtualization scenarios.\n*\n* @param props - Configuration for iteration\n* @param props.lines - Pre-split array of lines (use splitFileContents() to create from string)\n* @param props.startingLine - Optional starting line index (0-based, default: 0)\n* @param props.totalLines - Optional max lines to iterate (default: Infinity)\n* @param props.callback - Callback invoked for each line in the window.\n* Return `true` to stop iteration early.\n*\n* @example\n* ```typescript\n* const lines = splitFileContents('line1\\nline2\\nline3');\n* iterateOverFile({\n* lines,\n* startingLine: 0,\n* totalLines: 10,\n* callback: ({ lineIndex, lineNumber, content, isLastLine }) => {\n* console.log(`Line ${lineNumber}: ${content}`);\n* if (content.includes('stop')) return true; // Stop iteration\n* }\n* });\n* ```\n*/\nfunction iterateOverFile({ lines, startingLine = 0, totalLines = Infinity, callback }) {\n\tconst len = Math.min(startingLine + totalLines, lines.length);\n\tconst lastLineIndex = (() => {\n\t\tconst lastLine = lines.at(-1);\n\t\tif (lastLine === \"\" || lastLine === \"\\n\" || lastLine === \"\\r\\n\" || lastLine === \"\\r\") return Math.max(0, lines.length - 2);\n\t\treturn lines.length - 1;\n\t})();\n\tfor (let lineIndex = startingLine; lineIndex < len; lineIndex++) {\n\t\tconst isLastLine = lineIndex === lastLineIndex;\n\t\tif (callback({\n\t\t\tlineIndex,\n\t\t\tlineNumber: lineIndex + 1,\n\t\t\tcontent: lines[lineIndex],\n\t\t\tisLastLine\n\t\t}) === true || isLastLine) break;\n\t}\n}\n//#endregion\nexport { iterateOverFile };\n\n//# sourceMappingURL=iterateOverFile.js.map","//#region src/utils/cleanLastNewline.ts\nfunction cleanLastNewline(contents) {\n\treturn contents.replace(/\\n$|\\r\\n$/, \"\");\n}\n//#endregion\nexport { cleanLastNewline };\n\n//# sourceMappingURL=cleanLastNewline.js.map","//#region src/utils/hast_utils.ts\nfunction createTextNodeElement(value) {\n\treturn {\n\t\ttype: \"text\",\n\t\tvalue\n\t};\n}\nfunction createHastElement({ tagName, children = [], properties = {} }) {\n\treturn {\n\t\ttype: \"element\",\n\t\ttagName,\n\t\tproperties,\n\t\tchildren\n\t};\n}\nfunction createIconElement({ name, width = 16, height = 16, properties }) {\n\treturn createHastElement({\n\t\ttagName: \"svg\",\n\t\tproperties: {\n\t\t\twidth,\n\t\t\theight,\n\t\t\tviewBox: \"0 0 16 16\",\n\t\t\t...properties\n\t\t},\n\t\tchildren: [createHastElement({\n\t\t\ttagName: \"use\",\n\t\t\tproperties: { href: `#${name.replace(/^#/, \"\")}` }\n\t\t})]\n\t});\n}\nfunction findCodeElement(nodes) {\n\tlet firstChild = nodes.children[0];\n\twhile (firstChild != null) {\n\t\tif (firstChild.type === \"element\" && firstChild.tagName === \"code\") return firstChild;\n\t\tif (\"children\" in firstChild) firstChild = firstChild.children[0];\n\t\telse firstChild = null;\n\t}\n}\nfunction createGutterWrapper(children) {\n\treturn createHastElement({\n\t\ttagName: \"div\",\n\t\tproperties: { \"data-gutter\": \"\" },\n\t\tchildren\n\t});\n}\nfunction createGutterItem(lineType, lineNumber, lineIndex, properties = {}) {\n\treturn createHastElement({\n\t\ttagName: \"div\",\n\t\tproperties: {\n\t\t\t\"data-line-type\": lineType,\n\t\t\t\"data-column-number\": lineNumber,\n\t\t\t\"data-line-index\": lineIndex,\n\t\t\t...properties\n\t\t},\n\t\tchildren: lineNumber != null ? [createHastElement({\n\t\t\ttagName: \"span\",\n\t\t\tproperties: { \"data-line-number-content\": \"\" },\n\t\t\tchildren: [createTextNodeElement(`${lineNumber}`)]\n\t\t})] : void 0\n\t});\n}\nfunction createGutterGap(type, bufferType, size) {\n\treturn createHastElement({\n\t\ttagName: \"div\",\n\t\tproperties: {\n\t\t\t\"data-gutter-buffer\": bufferType,\n\t\t\t\"data-buffer-size\": size,\n\t\t\t\"data-line-type\": bufferType === \"annotation\" ? void 0 : type,\n\t\t\tstyle: bufferType === \"annotation\" ? `grid-row: span ${size};` : `grid-row: span ${size};min-height:calc(${size} * 1lh);`\n\t\t}\n\t});\n}\n//#endregion\nexport { createGutterGap, createGutterItem, createGutterWrapper, createHastElement, createIconElement, createTextNodeElement, findCodeElement };\n\n//# sourceMappingURL=hast_utils.js.map","import { createTextNodeElement } from \"./hast_utils.js\";\n//#region src/utils/processLine.ts\nfunction processLine(node, line, state) {\n\tconst lineInfo = typeof state.lineInfo === \"function\" ? state.lineInfo(line) : state.lineInfo[line - 1];\n\tif (lineInfo == null) {\n\t\tconst errorMessage = `processLine: line ${line}, contains no state.lineInfo`;\n\t\tconsole.error(errorMessage, {\n\t\t\tnode,\n\t\t\tline,\n\t\t\tstate\n\t\t});\n\t\tthrow new Error(errorMessage);\n\t}\n\tnode.tagName = \"div\";\n\tnode.properties[\"data-line\"] = lineInfo.lineNumber;\n\tnode.properties[\"data-alt-line\"] = lineInfo.altLineNumber;\n\tnode.properties[\"data-line-type\"] = lineInfo.type;\n\tnode.properties[\"data-line-index\"] = lineInfo.lineIndex;\n\tif (node.children.length === 0) node.children.push(createTextNodeElement(\"\\n\"));\n\treturn node;\n}\n//#endregion\nexport { processLine };\n\n//# sourceMappingURL=processLine.js.map","import { createHastElement } from \"./hast_utils.js\";\n//#region src/utils/wrapTokenFragments.ts\nconst NO_TOKEN = Symbol(\"no-token\");\nconst MULTIPLE_TOKENS = Symbol(\"multiple-tokens\");\nfunction wrapTokenFragments(container) {\n\tconst ownTokenChar = getTokenChar(container);\n\tif (ownTokenChar != null) return ownTokenChar;\n\tlet containerTokenState = NO_TOKEN;\n\tconst wrappedChildren = [];\n\tlet currentTokenChildren = [];\n\tlet currentTokenChar;\n\tconst flushTokenChildren = () => {\n\t\tif (currentTokenChildren.length === 0 || currentTokenChar == null) {\n\t\t\tcurrentTokenChildren = [];\n\t\t\tcurrentTokenChar = void 0;\n\t\t\treturn;\n\t\t}\n\t\tif (currentTokenChildren.length === 1) {\n\t\t\tconst child = currentTokenChildren[0];\n\t\t\tif (child?.type === \"element\") {\n\t\t\t\tsetTokenChar(child, currentTokenChar);\n\t\t\t\tfor (const grandChild of child.children) stripTokenChar(grandChild);\n\t\t\t} else stripTokenChar(child);\n\t\t\twrappedChildren.push(child);\n\t\t\tcurrentTokenChildren = [];\n\t\t\tcurrentTokenChar = void 0;\n\t\t\treturn;\n\t\t}\n\t\tfor (const child of currentTokenChildren) stripTokenChar(child);\n\t\twrappedChildren.push(createHastElement({\n\t\t\ttagName: \"span\",\n\t\t\tproperties: { \"data-char\": currentTokenChar },\n\t\t\tchildren: currentTokenChildren\n\t\t}));\n\t\tcurrentTokenChildren = [];\n\t\tcurrentTokenChar = void 0;\n\t};\n\tconst mergeContainerTokenState = (childTokenState) => {\n\t\tif (childTokenState === NO_TOKEN) return;\n\t\tif (childTokenState === MULTIPLE_TOKENS) {\n\t\t\tcontainerTokenState = MULTIPLE_TOKENS;\n\t\t\treturn;\n\t\t}\n\t\tif (containerTokenState === NO_TOKEN) {\n\t\t\tcontainerTokenState = childTokenState;\n\t\t\treturn;\n\t\t}\n\t\tif (containerTokenState !== childTokenState) containerTokenState = MULTIPLE_TOKENS;\n\t};\n\tfor (const child of container.children) {\n\t\tconst childTokenState = child.type === \"element\" ? wrapTokenFragments(child) : NO_TOKEN;\n\t\tmergeContainerTokenState(childTokenState);\n\t\tif (typeof childTokenState !== \"number\") {\n\t\t\tflushTokenChildren();\n\t\t\twrappedChildren.push(child);\n\t\t\tcontinue;\n\t\t}\n\t\tif (currentTokenChar != null && currentTokenChar !== childTokenState) flushTokenChildren();\n\t\tcurrentTokenChar ??= childTokenState;\n\t\tcurrentTokenChildren.push(child);\n\t}\n\tflushTokenChildren();\n\tcontainer.children = wrappedChildren;\n\treturn containerTokenState;\n}\nfunction getTokenChar(node) {\n\tconst value = node.properties[\"data-char\"];\n\tif (typeof value === \"number\") return value;\n}\nfunction stripTokenChar(node) {\n\tif (node.type !== \"element\") return;\n\tnode.properties[\"data-char\"] = void 0;\n\tfor (const child of node.children) stripTokenChar(child);\n}\nfunction setTokenChar(node, char) {\n\tnode.properties[\"data-char\"] = char;\n}\n//#endregion\nexport { wrapTokenFragments };\n\n//# sourceMappingURL=wrapTokenFragments.js.map","//#region src/shared/parse-comments.ts\nconst RE_SPLIT_COMMENT = /(\\s+\\/\\/)/;\nconst RE_V1_END_COMMENT_PREFIX = /(?:\\/\\/|[\"'#]|;{1,2}|%{1,2}|--)(\\s*)$/;\nconst RE_V3_END_COMMENT_PREFIX = /(?:\\/\\/|#|;{1,2}|%{1,2}|--)(\\s*)$/;\n/**\n* some comment formats have to be located at the end of line\n* hence we can skip matching them for other tokens\n*/\nconst matchers = [\n\t[/^(<!--)(.+)(-->)$/, false],\n\t[/^(\\/\\*)(.+)(\\*\\/)$/, false],\n\t[/^(\\/\\/|[\"'#]|;{1,2}|%{1,2}|--)(.*)$/, true],\n\t[/^(\\*)(.+)$/, true]\n];\n/**\n* @param lines line tokens\n* @param jsx enable JSX parsing\n* @param matchAlgorithm matching algorithm\n*/\nfunction parseComments(lines, jsx, matchAlgorithm) {\n\tconst out = [];\n\tfor (const line of lines) {\n\t\tif (matchAlgorithm === \"v3\") {\n\t\t\tconst splittedElements = line.children.flatMap((element, idx) => {\n\t\t\t\tif (element.type !== \"element\") return element;\n\t\t\t\tconst token = element.children[0];\n\t\t\t\tif (token.type !== \"text\") return element;\n\t\t\t\tconst isLast = idx === line.children.length - 1;\n\t\t\t\tif (!matchToken(token.value, isLast)) return element;\n\t\t\t\tconst rawSplits = token.value.split(RE_SPLIT_COMMENT);\n\t\t\t\tif (rawSplits.length <= 1) return element;\n\t\t\t\tlet splits = [rawSplits[0]];\n\t\t\t\tfor (let i = 1; i < rawSplits.length; i += 2) splits.push(rawSplits[i] + (rawSplits[i + 1] || \"\"));\n\t\t\t\tsplits = splits.filter(Boolean);\n\t\t\t\tif (splits.length <= 1) return element;\n\t\t\t\treturn splits.map((split) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...element,\n\t\t\t\t\t\tchildren: [{\n\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\tvalue: split\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\tif (splittedElements.length !== line.children.length) line.children = splittedElements;\n\t\t}\n\t\tconst elements = line.children;\n\t\tlet start = elements.length - 1;\n\t\tif (matchAlgorithm === \"v1\") start = 0;\n\t\telse if (jsx) start = elements.length - 2;\n\t\tfor (let i = Math.max(start, 0); i < elements.length; i++) {\n\t\t\tconst token = elements[i];\n\t\t\tif (token.type !== \"element\") continue;\n\t\t\tconst head = token.children.at(0);\n\t\t\tif (head?.type !== \"text\") continue;\n\t\t\tconst isLast = i === elements.length - 1;\n\t\t\tlet match = matchToken(head.value, isLast);\n\t\t\tlet additionalTokens;\n\t\t\tif (!match && i > 0 && head.value.trim().startsWith(\"[!code\")) {\n\t\t\t\tconst prevToken = elements[i - 1];\n\t\t\t\tif (prevToken?.type === \"element\") {\n\t\t\t\t\tconst prevHead = prevToken.children.at(0);\n\t\t\t\t\tif (prevHead?.type === \"text\" && prevHead.value.includes(\"//\")) {\n\t\t\t\t\t\tconst combinedMatch = matchToken(prevHead.value + head.value, isLast);\n\t\t\t\t\t\tif (combinedMatch) {\n\t\t\t\t\t\t\tmatch = combinedMatch;\n\t\t\t\t\t\t\tout.push({\n\t\t\t\t\t\t\t\tinfo: combinedMatch,\n\t\t\t\t\t\t\t\tline,\n\t\t\t\t\t\t\t\ttoken: prevToken,\n\t\t\t\t\t\t\t\tisLineCommentOnly: elements.length === 2 && prevToken.children.length === 1 && token.children.length === 1,\n\t\t\t\t\t\t\t\tisJsxStyle: false,\n\t\t\t\t\t\t\t\tadditionalTokens: [token]\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tcontinue;\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\tif (!match) continue;\n\t\t\tif (jsx && !isLast && i !== 0) {\n\t\t\t\tconst isJsxStyle = isValue(elements[i - 1], \"{\") && isValue(elements[i + 1], \"}\");\n\t\t\t\tout.push({\n\t\t\t\t\tinfo: match,\n\t\t\t\t\tline,\n\t\t\t\t\ttoken,\n\t\t\t\t\tisLineCommentOnly: elements.length === 3 && token.children.length === 1,\n\t\t\t\t\tisJsxStyle,\n\t\t\t\t\tadditionalTokens\n\t\t\t\t});\n\t\t\t} else out.push({\n\t\t\t\tinfo: match,\n\t\t\t\tline,\n\t\t\t\ttoken,\n\t\t\t\tisLineCommentOnly: elements.length === 1 && token.children.length === 1,\n\t\t\t\tisJsxStyle: false,\n\t\t\t\tadditionalTokens\n\t\t\t});\n\t\t}\n\t}\n\treturn out;\n}\nfunction isValue(element, value) {\n\tif (element.type !== \"element\") return false;\n\tconst text = element.children[0];\n\tif (text.type !== \"text\") return false;\n\treturn text.value.trim() === value;\n}\n/**\n* @param text text value of comment node\n* @param isLast whether the token is located at the end of line\n*/\nfunction matchToken(text, isLast) {\n\tlet trimmed = text.trimStart();\n\tconst spaceFront = text.length - trimmed.length;\n\ttrimmed = trimmed.trimEnd();\n\tconst spaceEnd = text.length - trimmed.length - spaceFront;\n\tfor (const [matcher, endOfLine] of matchers) {\n\t\tif (endOfLine && !isLast) continue;\n\t\tconst result = matcher.exec(trimmed);\n\t\tif (!result) continue;\n\t\treturn [\n\t\t\t\" \".repeat(spaceFront) + result[1],\n\t\t\tresult[2],\n\t\t\tresult[3] ? result[3] + \" \".repeat(spaceEnd) : void 0\n\t\t];\n\t}\n}\n/**\n* Remove empty comment prefixes at line end, e.g. `// `\n*\n* For matchAlgorithm v1\n*/\nfunction v1ClearEndCommentPrefix(text) {\n\tconst match = text.match(RE_V1_END_COMMENT_PREFIX);\n\tif (match && match[1].trim().length === 0) return text.slice(0, match.index);\n\treturn text;\n}\n/**\n* Remove empty comment prefixes at line end, e.g. `// `\n*\n* For matchAlgorithm v3\n*/\nfunction v3ClearEndCommentPrefix(text) {\n\tconst match = text.match(RE_V3_END_COMMENT_PREFIX);\n\tif (match && match[1].trim().length === 0) return text.slice(0, match.index).trimEnd();\n\treturn text;\n}\n//#endregion\n//#region src/shared/notation-transformer.ts\nfunction createCommentNotationTransformer(name, regex, onMatch, matchAlgorithm) {\n\tmatchAlgorithm ??= \"v3\";\n\treturn {\n\t\tname,\n\t\tcode(code) {\n\t\t\tconst lines = code.children.filter((i) => i.type === \"element\");\n\t\t\tconst linesToRemove = [];\n\t\t\tcode.data ??= {};\n\t\t\tconst data = code.data;\n\t\t\tdata._shiki_notation ??= parseComments(lines, [\"jsx\", \"tsx\"].includes(this.options.lang), matchAlgorithm);\n\t\t\tconst parsed = data._shiki_notation;\n\t\t\tfor (const comment of parsed) {\n\t\t\t\tif (comment.info[1].length === 0) continue;\n\t\t\t\tlet lineIdx = lines.indexOf(comment.line);\n\t\t\t\tif (comment.isLineCommentOnly && matchAlgorithm !== \"v1\") lineIdx++;\n\t\t\t\tlet replaced = false;\n\t\t\t\tcomment.info[1] = comment.info[1].replace(regex, (...match) => {\n\t\t\t\t\tif (onMatch.call(this, match, comment.line, comment.token, lines, lineIdx)) {\n\t\t\t\t\t\treplaced = true;\n\t\t\t\t\t\treturn \"\";\n\t\t\t\t\t}\n\t\t\t\t\treturn match[0];\n\t\t\t\t});\n\t\t\t\tif (!replaced) continue;\n\t\t\t\tif (matchAlgorithm === \"v1\") comment.info[1] = v1ClearEndCommentPrefix(comment.info[1]);\n\t\t\t\telse if (matchAlgorithm === \"v3\") comment.info[1] = v3ClearEndCommentPrefix(comment.info[1]);\n\t\t\t\tconst isEmpty = comment.info[1].trim().length === 0;\n\t\t\t\tif (isEmpty) comment.info[1] = \"\";\n\t\t\t\tif (isEmpty && comment.isLineCommentOnly) linesToRemove.push(comment.line);\n\t\t\t\telse if (isEmpty && comment.isJsxStyle) comment.line.children.splice(comment.line.children.indexOf(comment.token) - 1, 3);\n\t\t\t\telse if (isEmpty) {\n\t\t\t\t\tif (comment.additionalTokens) for (let j = comment.additionalTokens.length - 1; j >= 0; j--) {\n\t\t\t\t\t\tconst additionalToken = comment.additionalTokens[j];\n\t\t\t\t\t\tconst tokenIndex = comment.line.children.indexOf(additionalToken);\n\t\t\t\t\t\tif (tokenIndex !== -1) comment.line.children.splice(tokenIndex, 1);\n\t\t\t\t\t}\n\t\t\t\t\tcomment.line.children.splice(comment.line.children.indexOf(comment.token), 1);\n\t\t\t\t} else {\n\t\t\t\t\tconst head = comment.token.children[0];\n\t\t\t\t\tif (head.type === \"text\") {\n\t\t\t\t\t\thead.value = comment.info.join(\"\");\n\t\t\t\t\t\tif (comment.additionalTokens) for (const additionalToken of comment.additionalTokens) {\n\t\t\t\t\t\t\tconst additionalHead = additionalToken.children[0];\n\t\t\t\t\t\t\tif (additionalHead?.type === \"text\") additionalHead.value = \"\";\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\tfor (const line of linesToRemove) {\n\t\t\t\tconst index = code.children.indexOf(line);\n\t\t\t\tconst nextLine = code.children[index + 1];\n\t\t\t\tlet removeLength = 1;\n\t\t\t\tif (nextLine?.type === \"text\" && nextLine?.value === \"\\n\") removeLength = 2;\n\t\t\t\tcode.children.splice(index, removeLength);\n\t\t\t}\n\t\t}\n\t};\n}\n//#endregion\n//#region src/transformers/compact-line-options.ts\n/**\n* Transformer for `shiki`'s legacy `lineOptions`\n*/\nfunction transformerCompactLineOptions(lineOptions = []) {\n\treturn {\n\t\tname: \"@shikijs/transformers:compact-line-options\",\n\t\tline(node, line) {\n\t\t\tconst lineOption = lineOptions.find((o) => o.line === line);\n\t\t\tif (lineOption?.classes) this.addClassToHast(node, lineOption.classes);\n\t\t\treturn node;\n\t\t}\n\t};\n}\n//#endregion\n//#region src/transformers/meta-highlight.ts\nconst RE_HIGHLIGHT_LINES = /\\{([\\d,-]+)\\}/;\nfunction parseMetaHighlightString(meta) {\n\tif (!meta) return null;\n\tconst match = meta.match(RE_HIGHLIGHT_LINES);\n\tif (!match) return null;\n\treturn match[1].split(\",\").flatMap((v) => {\n\t\tconst range = v.split(\"-\").map((n) => Number.parseInt(n, 10));\n\t\treturn range.length === 1 ? [range[0]] : Array.from({ length: range[1] - range[0] + 1 }, (_, i) => range[0] + i);\n\t});\n}\nconst symbol = Symbol(\"highlighted-lines\");\n/**\n* Allow using `{1,3-5}` in the code snippet meta to mark highlighted lines.\n*/\nfunction transformerMetaHighlight(options = {}) {\n\tconst { className = \"highlighted\", zeroIndexed = false } = options;\n\treturn {\n\t\tname: \"@shikijs/transformers:meta-highlight\",\n\t\tline(node, lineNumber) {\n\t\t\tif (!this.options.meta?.__raw) return;\n\t\t\tconst meta = this.meta;\n\t\t\tmeta[symbol] ??= parseMetaHighlightString(this.options.meta.__raw);\n\t\t\tconst highlightedLines = meta[symbol] ?? [];\n\t\t\tconst effectiveLine = zeroIndexed ? lineNumber - 1 : lineNumber;\n\t\t\tif (highlightedLines.includes(effectiveLine)) this.addClassToHast(node, className);\n\t\t\treturn node;\n\t\t}\n\t};\n}\n//#endregion\n//#region src/transformers/meta-highlight-word.ts\nconst RE_WORD_MATCH = /\\/((?:\\\\.|[^/])+)\\//g;\nconst RE_ESCAPE_BACKSLASH = /\\\\(.)/g;\nfunction parseMetaHighlightWords(meta) {\n\tif (!meta) return [];\n\treturn [...meta.matchAll(RE_WORD_MATCH)].map((v) => v[1].replace(RE_ESCAPE_BACKSLASH, \"$1\"));\n}\n/**\n* Allow using `/word/` in the code snippet meta to mark highlighted words.\n*/\nfunction transformerMetaWordHighlight(options = {}) {\n\tconst { className = \"highlighted-word\" } = options;\n\treturn {\n\t\tname: \"@shikijs/transformers:meta-word-highlight\",\n\t\tpreprocess(code, options) {\n\t\t\tif (!this.options.meta?.__raw) return;\n\t\t\tconst words = parseMetaHighlightWords(this.options.meta.__raw);\n\t\t\toptions.decorations ||= [];\n\t\t\tfor (const word of words) {\n\t\t\t\tconst indexes = findAllSubstringIndexes(code, word);\n\t\t\t\tfor (const index of indexes) options.decorations.push({\n\t\t\t\t\tstart: index,\n\t\t\t\t\tend: index + word.length,\n\t\t\t\t\tproperties: { class: className }\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n}\nfunction findAllSubstringIndexes(str, substr) {\n\tconst indexes = [];\n\tlet cursor = 0;\n\twhile (true) {\n\t\tconst index = str.indexOf(substr, cursor);\n\t\tif (index === -1 || index >= str.length) break;\n\t\tif (index < cursor) break;\n\t\tindexes.push(index);\n\t\tcursor = index + substr.length;\n\t}\n\treturn indexes;\n}\n//#endregion\n//#region src/transformers/notation-map.ts\nconst RE_ESCAPE_SPECIAL = /[.*+?^${}()|[\\]\\\\]/g;\nfunction escapeRegExp(str) {\n\treturn str.replace(RE_ESCAPE_SPECIAL, \"\\\\$&\");\n}\nfunction transformerNotationMap(options = {}, name = \"@shikijs/transformers:notation-map\") {\n\tconst { classMap = {}, classActivePre = void 0, classActiveCode = void 0 } = options;\n\treturn createCommentNotationTransformer(name, new RegExp(`#?\\\\s*\\\\[!code (${Object.keys(classMap).map(escapeRegExp).join(\"|\")})(:\\\\d+)?\\\\]`, \"gi\"), function([_, match, range = \":1\"], _line, _comment, lines, index) {\n\t\tconst lineNum = Number.parseInt(range.slice(1), 10);\n\t\tfor (let i = index; i < Math.min(index + lineNum, lines.length); i++) this.addClassToHast(lines[i], classMap[match]);\n\t\tif (classActivePre) this.addClassToHast(this.pre, classActivePre);\n\t\tif (classActiveCode) this.addClassToHast(this.code, classActiveCode);\n\t\treturn true;\n\t}, options.matchAlgorithm);\n}\n//#endregion\n//#region src/transformers/notation-diff.ts\n/**\n* Use `[!code ++]` and `[!code --]` to mark added and removed lines.\n*/\nfunction transformerNotationDiff(options = {}) {\n\tconst { classLineAdd = \"diff add\", classLineRemove = \"diff remove\", classActivePre = \"has-diff\", classActiveCode } = options;\n\treturn transformerNotationMap({\n\t\tclassMap: {\n\t\t\t\"++\": classLineAdd,\n\t\t\t\"--\": classLineRemove\n\t\t},\n\t\tclassActivePre,\n\t\tclassActiveCode,\n\t\tmatchAlgorithm: options.matchAlgorithm\n\t}, \"@shikijs/transformers:notation-diff\");\n}\n//#endregion\n//#region src/transformers/notation-error-level.ts\n/**\n* Allow using `[!code error]` `[!code warning]` notation in code to mark highlighted lines.\n*/\nfunction transformerNotationErrorLevel(options = {}) {\n\tconst { classMap = {\n\t\terror: [\"highlighted\", \"error\"],\n\t\twarning: [\"highlighted\", \"warning\"],\n\t\tinfo: [\"highlighted\", \"info\"]\n\t}, classActivePre = \"has-highlighted\", classActiveCode } = options;\n\treturn transformerNotationMap({\n\t\tclassMap,\n\t\tclassActivePre,\n\t\tclassActiveCode,\n\t\tmatchAlgorithm: options.matchAlgorithm\n\t}, \"@shikijs/transformers:notation-error-level\");\n}\n//#endregion\n//#region src/transformers/notation-focus.ts\n/**\n* Allow using `[!code focus]` notation in code to mark focused lines.\n*/\nfunction transformerNotationFocus(options = {}) {\n\tconst { classActiveLine = \"focused\", classActivePre = \"has-focused\", classActiveCode } = options;\n\treturn transformerNotationMap({\n\t\tclassMap: { focus: classActiveLine },\n\t\tclassActivePre,\n\t\tclassActiveCode,\n\t\tmatchAlgorithm: options.matchAlgorithm\n\t}, \"@shikijs/transformers:notation-focus\");\n}\n//#endregion\n//#region src/transformers/notation-highlight.ts\n/**\n* Allow using `[!code highlight]` notation in code to mark highlighted lines.\n*/\nfunction transformerNotationHighlight(options = {}) {\n\tconst { classActiveLine = \"highlighted\", classActivePre = \"has-highlighted\", classActiveCode } = options;\n\treturn transformerNotationMap({\n\t\tclassMap: {\n\t\t\thighlight: classActiveLine,\n\t\t\thl: classActiveLine\n\t\t},\n\t\tclassActivePre,\n\t\tclassActiveCode,\n\t\tmatchAlgorithm: options.matchAlgorithm\n\t}, \"@shikijs/transformers:notation-highlight\");\n}\n//#endregion\n//#region src/shared/highlight-word.ts\nfunction highlightWordInLine(line, ignoredElement, word, className) {\n\tconst content = getTextContent(line);\n\tlet index = content.indexOf(word);\n\twhile (index !== -1) {\n\t\thighlightRange.call(this, line.children, ignoredElement, index, word.length, className);\n\t\tindex = content.indexOf(word, index + 1);\n\t}\n}\nfunction getTextContent(element) {\n\tif (element.type === \"text\") return element.value;\n\tif (element.type === \"element\" && element.tagName === \"span\") return element.children.map(getTextContent).join(\"\");\n\treturn \"\";\n}\n/**\n* @param elements\n* @param ignoredElement\n* @param index highlight beginning index\n* @param len highlight length\n* @param className class name to add to highlighted nodes\n*/\nfunction highlightRange(elements, ignoredElement, index, len, className) {\n\tlet currentIdx = 0;\n\tfor (let i = 0; i < elements.length; i++) {\n\t\tconst element = elements[i];\n\t\tif (element.type !== \"element\" || element.tagName !== \"span\" || element === ignoredElement) continue;\n\t\tconst textNode = element.children[0];\n\t\tif (textNode.type !== \"text\") continue;\n\t\tif (hasOverlap([currentIdx, currentIdx + textNode.value.length - 1], [index, index + len])) {\n\t\t\tconst start = Math.max(0, index - currentIdx);\n\t\t\tconst length = len - Math.max(0, currentIdx - index);\n\t\t\tif (length === 0) continue;\n\t\t\tconst separated = separateToken(element, textNode, start, length);\n\t\t\tthis.addClassToHast(separated[1], className);\n\t\t\tconst output = separated.filter(Boolean);\n\t\t\telements.splice(i, 1, ...output);\n\t\t\ti += output.length - 1;\n\t\t}\n\t\tcurrentIdx += textNode.value.length;\n\t}\n}\nfunction hasOverlap(range1, range2) {\n\treturn range1[0] <= range2[1] && range1[1] >= range2[0];\n}\nfunction separateToken(span, textNode, index, len) {\n\tconst text = textNode.value;\n\tconst createNode = (value) => inheritElement(span, { children: [{\n\t\ttype: \"text\",\n\t\tvalue\n\t}] });\n\treturn [\n\t\tindex > 0 ? createNode(text.slice(0, index)) : void 0,\n\t\tcreateNode(text.slice(index, index + len)),\n\t\tindex + len < text.length ? createNode(text.slice(index + len)) : void 0\n\t];\n}\nfunction inheritElement(original, overrides) {\n\treturn {\n\t\t...original,\n\t\tproperties: { ...original.properties },\n\t\t...overrides\n\t};\n}\n//#endregion\n//#region src/transformers/notation-highlight-word.ts\nconst RE_CODE_WORD = /\\s*\\[!code word:((?:\\\\.|[^:\\]])+)(:\\d+)?\\]/;\nconst RE_UNESCAPE = /\\\\(.)/g;\nfunction transformerNotationWordHighlight(options = {}) {\n\tconst { classActiveWord = \"highlighted-word\", classActivePre = void 0 } = options;\n\treturn createCommentNotationTransformer(\"@shikijs/transformers:notation-highlight-word\", RE_CODE_WORD, function([_, word, range], _line, comment, lines, index) {\n\t\tconst lineNum = range ? Number.parseInt(range.slice(1), 10) : lines.length;\n\t\tword = word.replace(RE_UNESCAPE, \"$1\");\n\t\tfor (let i = index; i < Math.min(index + lineNum, lines.length); i++) highlightWordInLine.call(this, lines[i], comment, word, classActiveWord);\n\t\tif (classActivePre) this.addClassToHast(this.pre, classActivePre);\n\t\treturn true;\n\t}, options.matchAlgorithm);\n}\n//#endregion\n//#region src/transformers/remove-comments.ts\n/**\n* Remove comments from the code.\n*/\nfunction transformerRemoveComments(options = {}) {\n\tconst { removeEmptyLines = true } = options;\n\treturn {\n\t\tname: \"@shikijs/transformers:remove-comments\",\n\t\tpreprocess(_code, options) {\n\t\t\tif (options.includeExplanation !== true && options.includeExplanation !== \"scopeName\") throw new Error(\"`transformerRemoveComments` requires `includeExplanation` to be set to `true` or `'scopeName'`\");\n\t\t},\n\t\ttokens(tokens) {\n\t\t\tconst result = [];\n\t\t\tfor (const line of tokens) {\n\t\t\t\tconst filteredLine = [];\n\t\t\t\tlet hasComment = false;\n\t\t\t\tfor (const token of line) if (token.explanation?.some((exp) => exp.scopes.some((s) => s.scopeName.startsWith(\"comment\")))) hasComment = true;\n\t\t\t\telse filteredLine.push(token);\n\t\t\t\tif (removeEmptyLines && hasComment) {\n\t\t\t\t\tif (filteredLine.every((token) => !token.content.trim())) continue;\n\t\t\t\t}\n\t\t\t\tresult.push(filteredLine);\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t};\n}\n//#endregion\n//#region src/transformers/remove-line-breaks.ts\n/**\n* Remove line breaks between lines.\n* Useful when you override `display: block` to `.line` in CSS.\n*/\nfunction transformerRemoveLineBreak() {\n\treturn {\n\t\tname: \"@shikijs/transformers:remove-line-break\",\n\t\tcode(code) {\n\t\t\tcode.children = code.children.filter((line) => !(line.type === \"text\" && line.value === \"\\n\"));\n\t\t}\n\t};\n}\n//#endregion\n//#region src/transformers/remove-notation-escape.ts\n/**\n* Remove notation escapes.\n* Useful when you want to write `// [!code` in markdown.\n* If you process `// [\\!code ...]` expression, you can get `// [!code ...]` in the output.\n*/\nfunction transformerRemoveNotationEscape() {\n\treturn {\n\t\tname: \"@shikijs/transformers:remove-notation-escape\",\n\t\tcode(hast) {\n\t\t\tfunction replace(node) {\n\t\t\t\tif (node.type === \"text\") node.value = node.value.replace(\"[\\\\!code\", \"[!code\");\n\t\t\t\telse if (\"children\" in node) for (const child of node.children) replace(child);\n\t\t\t}\n\t\t\treplace(hast);\n\t\t\treturn hast;\n\t\t}\n\t};\n}\n//#endregion\n//#region src/transformers/render-indent-guides.ts\nconst RE_INDENT_META = /\\{indent:(\\d+|false)\\}/;\nconst RE_NON_BLANK = /[^ \\t]/;\n/**\n* Render indentations as separate tokens.\n* Apply with CSS, it can be used to render indent guides visually.\n*/\nfunction transformerRenderIndentGuides(options = {}) {\n\treturn {\n\t\tname: \"@shikijs/transformers:render-indent-guides\",\n\t\tcode(hast) {\n\t\t\tconst indent = Number(this.options.meta?.indent ?? this.options.meta?.__raw?.match(RE_INDENT_META)?.[1] ?? options.indent ?? 2);\n\t\t\tif (Number.isNaN(indent) || indent <= 0) return hast;\n\t\t\tconst indentRegex = new RegExp(` {${indent}}| {0,${indent - 1}}\\t| {1,}$`, \"g\");\n\t\t\tconst emptyLines = [];\n\t\t\tlet level = 0;\n\t\t\tfor (const line of hast.children) {\n\t\t\t\tif (line.type !== \"element\") continue;\n\t\t\t\tconst first = line.children[0];\n\t\t\t\tif (first?.type !== \"element\" || first?.children[0]?.type !== \"text\") {\n\t\t\t\t\temptyLines.push([line, level]);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst text = first.children[0];\n\t\t\t\tconst blanks = text.value.split(RE_NON_BLANK, 1)[0];\n\t\t\t\tconst ranges = [];\n\t\t\t\tfor (const match of blanks.matchAll(indentRegex)) {\n\t\t\t\t\tconst start = match.index;\n\t\t\t\t\tconst end = start + match[0].length;\n\t\t\t\t\tranges.push([start, end]);\n\t\t\t\t}\n\t\t\t\tfor (const [line, level] of emptyLines) line.children.unshift(...Array.from({ length: Math.min(ranges.length, level + 1) }, (_, i) => ({\n\t\t\t\t\ttype: \"element\",\n\t\t\t\t\ttagName: \"span\",\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tclass: \"indent\",\n\t\t\t\t\t\tstyle: `--indent-offset: ${i * indent}ch;`\n\t\t\t\t\t},\n\t\t\t\t\tchildren: []\n\t\t\t\t})));\n\t\t\t\temptyLines.length = 0;\n\t\t\t\tlevel = ranges.length;\n\t\t\t\tif (ranges.length) {\n\t\t\t\t\tline.children.unshift(...ranges.map(([start, end]) => ({\n\t\t\t\t\t\ttype: \"element\",\n\t\t\t\t\t\ttagName: \"span\",\n\t\t\t\t\t\tproperties: { class: \"indent\" },\n\t\t\t\t\t\tchildren: [{\n\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\tvalue: text.value.slice(start, end)\n\t\t\t\t\t\t}]\n\t\t\t\t\t})));\n\t\t\t\t\ttext.value = text.value.slice(ranges.at(-1)[1]);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn hast;\n\t\t}\n\t};\n}\n//#endregion\n//#region src/shared/utils.ts\nfunction isTab(part) {\n\treturn part === \"\t\";\n}\nfunction isSpace(part) {\n\treturn part === \" \" || part === \"\t\";\n}\nfunction separateContinuousSpaces(inputs) {\n\tconst result = [];\n\tlet current = \"\";\n\tfunction bump() {\n\t\tif (current.length) result.push(current);\n\t\tcurrent = \"\";\n\t}\n\tinputs.forEach((part, idx) => {\n\t\tif (isTab(part)) {\n\t\t\tbump();\n\t\t\tresult.push(part);\n\t\t} else if (isSpace(part) && (isSpace(inputs[idx - 1]) || isSpace(inputs[idx + 1]))) {\n\t\t\tbump();\n\t\t\tresult.push(part);\n\t\t} else current += part;\n\t});\n\tbump();\n\treturn result;\n}\nfunction splitSpaces(parts, type, renderContinuousSpaces = true) {\n\tif (type === \"all\") return parts;\n\tlet leftCount = 0;\n\tlet rightCount = 0;\n\tif (type === \"boundary\" || type === \"leading\") for (let i = 0; i < parts.length; i++) if (isSpace(parts[i])) leftCount++;\n\telse break;\n\tif (type === \"boundary\" || type === \"trailing\") for (let i = parts.length - 1; i >= 0; i--) if (isSpace(parts[i])) rightCount++;\n\telse break;\n\tconst middle = parts.slice(leftCount, parts.length - rightCount);\n\treturn [\n\t\t...parts.slice(0, leftCount),\n\t\t...renderContinuousSpaces ? separateContinuousSpaces(middle) : [middle.join(\"\")],\n\t\t...parts.slice(parts.length - rightCount)\n\t];\n}\n//#endregion\n//#region src/transformers/render-whitespace.ts\nconst RE_SPACE_OR_TAB = /([ \\t])/;\n/**\n* Render whitespaces as separate tokens.\n* Apply with CSS, it can be used to render tabs and spaces visually.\n*/\nfunction transformerRenderWhitespace(options = {}) {\n\tconst classMap = {\n\t\t\" \": options.classSpace ?? \"space\",\n\t\t\"\t\": options.classTab ?? \"tab\"\n\t};\n\tconst position = options.position ?? \"all\";\n\tconst keys = Object.keys(classMap);\n\treturn {\n\t\tname: \"@shikijs/transformers:render-whitespace\",\n\t\troot(root) {\n\t\t\tconst pre = root.children[0];\n\t\t\t(pre.tagName === \"pre\" ? pre.children[0] : { children: [root] }).children.forEach((line) => {\n\t\t\t\tif (line.type !== \"element\" && line.type !== \"root\") return;\n\t\t\t\tconst elements = line.children.filter((token) => token.type === \"element\");\n\t\t\t\tconst last = elements.length - 1;\n\t\t\t\tline.children = line.children.flatMap((token) => {\n\t\t\t\t\tif (token.type !== \"element\") return token;\n\t\t\t\t\tconst index = elements.indexOf(token);\n\t\t\t\t\tif (position === \"boundary\" && index !== 0 && index !== last) return token;\n\t\t\t\t\tif (position === \"trailing\" && index !== last) return token;\n\t\t\t\t\tif (position === \"leading\" && index !== 0) return token;\n\t\t\t\t\tconst node = token.children[0];\n\t\t\t\t\tif (node.type !== \"text\" || !node.value) return token;\n\t\t\t\t\tconst parts = splitSpaces(node.value.split(RE_SPACE_OR_TAB).filter((i) => i.length), position === \"boundary\" && index === last && last !== 0 ? \"trailing\" : position, position !== \"trailing\" && position !== \"leading\");\n\t\t\t\t\tif (parts.length <= 1) return token;\n\t\t\t\t\treturn parts.map((part) => {\n\t\t\t\t\t\tconst clone = {\n\t\t\t\t\t\t\t...token,\n\t\t\t\t\t\t\tproperties: { ...token.properties }\n\t\t\t\t\t\t};\n\t\t\t\t\t\tclone.children = [{\n\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\tvalue: part\n\t\t\t\t\t\t}];\n\t\t\t\t\t\tif (keys.includes(part)) {\n\t\t\t\t\t\t\tthis.addClassToHast(clone, classMap[part]);\n\t\t\t\t\t\t\tdelete clone.properties.style;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn clone;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t};\n}\n//#endregion\n//#region src/transformers/style-to-class.ts\n/**\n* Remove line breaks between lines.\n* Useful when you override `display: block` to `.line` in CSS.\n*/\nfunction transformerStyleToClass(options = {}) {\n\tconst { classPrefix = \"__shiki_\", classSuffix = \"\", classReplacer = (className) => className } = options;\n\tconst classToStyle = /* @__PURE__ */ new Map();\n\tfunction stringifyStyle(style) {\n\t\treturn Object.entries(style).map(([key, value]) => `${key}:${value}`).join(\";\");\n\t}\n\tfunction registerStyle(style) {\n\t\tlet className = classPrefix + cyrb53(typeof style === \"string\" ? style : stringifyStyle(style)) + classSuffix;\n\t\tclassName = classReplacer(className);\n\t\tif (!classToStyle.has(className)) classToStyle.set(className, typeof style === \"string\" ? style : { ...style });\n\t\treturn className;\n\t}\n\treturn {\n\t\tname: \"@shikijs/transformers:style-to-class\",\n\t\tpre(t) {\n\t\t\tif (!t.properties.style) return;\n\t\t\tconst className = registerStyle(t.properties.style);\n\t\t\tdelete t.properties.style;\n\t\t\tthis.addClassToHast(t, className);\n\t\t},\n\t\ttokens(lines) {\n\t\t\tfor (const line of lines) for (const token of line) {\n\t\t\t\tif (!token.htmlStyle) continue;\n\t\t\t\tconst className = registerStyle(token.htmlStyle);\n\t\t\t\ttoken.htmlStyle = {};\n\t\t\t\ttoken.htmlAttrs ||= {};\n\t\t\t\tif (!token.htmlAttrs.class) token.htmlAttrs.class = className;\n\t\t\t\telse token.htmlAttrs.class += ` ${className}`;\n\t\t\t}\n\t\t},\n\t\tgetClassRegistry() {\n\t\t\treturn classToStyle;\n\t\t},\n\t\tgetCSS() {\n\t\t\tlet css = \"\";\n\t\t\tfor (const [className, style] of classToStyle.entries()) css += `.${className}{${typeof style === \"string\" ? style : stringifyStyle(style)}}`;\n\t\t\treturn css;\n\t\t},\n\t\tclearRegistry() {\n\t\t\tclassToStyle.clear();\n\t\t}\n\t};\n}\n/**\n* A simple hash function.\n*\n* @see https://stackoverflow.com/a/52171480\n*/\nfunction cyrb53(str, seed = 0) {\n\tlet h1 = 3735928559 ^ seed;\n\tlet h2 = 1103547991 ^ seed;\n\tfor (let i = 0, ch; i < str.length; i++) {\n\t\tch = str.charCodeAt(i);\n\t\th1 = Math.imul(h1 ^ ch, 2654435761);\n\t\th2 = Math.imul(h2 ^ ch, 1597334677);\n\t}\n\th1 = Math.imul(h1 ^ h1 >>> 16, 2246822507);\n\th1 ^= Math.imul(h2 ^ h2 >>> 13, 3266489909);\n\th2 = Math.imul(h2 ^ h2 >>> 16, 2246822507);\n\th2 ^= Math.imul(h1 ^ h1 >>> 13, 3266489909);\n\treturn (4294967296 * (2097151 & h2) + (h1 >>> 0)).toString(36).slice(0, 6);\n}\n//#endregion\nexport { createCommentNotationTransformer, findAllSubstringIndexes, parseMetaHighlightString, parseMetaHighlightWords, transformerCompactLineOptions, transformerMetaHighlight, transformerMetaWordHighlight, transformerNotationDiff, transformerNotationErrorLevel, transformerNotationFocus, transformerNotationHighlight, transformerNotationMap, transformerNotationWordHighlight, transformerRemoveComments, transformerRemoveLineBreak, transformerRemoveNotationEscape, transformerRenderIndentGuides, transformerRenderWhitespace, transformerStyleToClass };\n","import { findCodeElement } from \"./hast_utils.js\";\nimport { processLine } from \"./processLine.js\";\nimport { wrapTokenFragments } from \"./wrapTokenFragments.js\";\nimport { transformerStyleToClass } from \"@shikijs/transformers\";\n//#region src/utils/createTransformerWithState.ts\nfunction createTransformerWithState(useTokenTransformer = false, useCSSClasses = false) {\n\tconst state = { lineInfo: [] };\n\tconst transformers = [{\n\t\tline(node) {\n\t\t\tdelete node.properties.class;\n\t\t\treturn node;\n\t\t},\n\t\tpre(pre) {\n\t\t\tconst code = findCodeElement(pre);\n\t\t\tconst children = [];\n\t\t\tif (code != null) {\n\t\t\t\tlet index = 1;\n\t\t\t\tfor (const node of code.children) {\n\t\t\t\t\tif (node.type !== \"element\") continue;\n\t\t\t\t\tif (useTokenTransformer) wrapTokenFragments(node);\n\t\t\t\t\tchildren.push(processLine(node, index, state));\n\t\t\t\t\tindex++;\n\t\t\t\t}\n\t\t\t\tcode.children = children;\n\t\t\t}\n\t\t\treturn pre;\n\t\t},\n\t\t...useTokenTransformer ? {\n\t\t\ttokens(lines) {\n\t\t\t\tfor (const line of lines) {\n\t\t\t\t\tlet col = 0;\n\t\t\t\t\tfor (const token of line) {\n\t\t\t\t\t\tconst tokenWithOriginalRange = token;\n\t\t\t\t\t\ttokenWithOriginalRange.__lineChar ??= col;\n\t\t\t\t\t\tcol += token.content.length;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tpreprocess(_code, options) {\n\t\t\t\toptions.mergeWhitespaces = \"never\";\n\t\t\t},\n\t\t\tspan(hast, _line, _char, _lineElement, token) {\n\t\t\t\tif (token?.offset != null && token.content != null) {\n\t\t\t\t\tconst tokenChar = token.__lineChar;\n\t\t\t\t\tif (tokenChar != null) hast.properties[\"data-char\"] = tokenChar;\n\t\t\t\t\treturn hast;\n\t\t\t\t}\n\t\t\t\treturn hast;\n\t\t\t}\n\t\t} : null\n\t}];\n\tif (useCSSClasses) transformers.push(tokenStyleNormalizer, toClass);\n\treturn {\n\t\tstate,\n\t\ttransformers,\n\t\ttoClass\n\t};\n}\nconst toClass = transformerStyleToClass({ classPrefix: \"hl-\" });\nconst tokenStyleNormalizer = {\n\tname: \"token-style-normalizer\",\n\ttokens(lines) {\n\t\tfor (const line of lines) for (const token of line) {\n\t\t\tif (token.htmlStyle != null) continue;\n\t\t\tconst style = {};\n\t\t\tif (token.color != null) style.color = token.color;\n\t\t\tif (token.bgColor != null) style[\"background-color\"] = token.bgColor;\n\t\t\tif (token.fontStyle != null && token.fontStyle !== 0) {\n\t\t\t\tif ((token.fontStyle & 1) !== 0) style[\"font-style\"] = \"italic\";\n\t\t\t\tif ((token.fontStyle & 2) !== 0) style[\"font-weight\"] = \"bold\";\n\t\t\t\tif ((token.fontStyle & 4) !== 0) style[\"text-decoration\"] = \"underline\";\n\t\t\t}\n\t\t\tif (Object.keys(style).length > 0) token.htmlStyle = style;\n\t\t}\n\t}\n};\n//#endregion\nexport { createTransformerWithState };\n\n//# sourceMappingURL=createTransformerWithState.js.map","//#region src/utils/formatCSSVariablePrefix.ts\nfunction formatCSSVariablePrefix(type) {\n\treturn `--${type === \"token\" ? \"diffs-token\" : \"diffs\"}-`;\n}\n//#endregion\nexport { formatCSSVariablePrefix };\n\n//# sourceMappingURL=formatCSSVariablePrefix.js.map","//#region src/modules/color.ts\n/**\n* Canonical color/contrast primitives\n*/\nconst MIN_READABLE_RATIO = 3;\nconst MIN_MUTED_RATIO = 4.5;\nconst HEX_TRANSPARENT_RE = /^#(?:[0-9a-f]{3}0|[0-9a-f]{6}00)$/i;\nconst ALPHA_ZERO_RE = /^0(?:\\.0+)?%?$/;\nfunction getFunctionalAlpha(color) {\n\tconst openParen = color.indexOf(\"(\");\n\tif (openParen <= 0 || !color.endsWith(\")\")) return;\n\tconst fn = color.slice(0, openParen).trim();\n\tif (!/^(?:rgb|rgba|hsl|hsla|hwb|lab|lch|oklab|oklch|color)$/i.test(fn)) return;\n\tconst inner = color.slice(openParen + 1, -1).trim();\n\tif (inner.length === 0) return;\n\tconst slashIndex = inner.lastIndexOf(\"/\");\n\tif (slashIndex !== -1) return inner.slice(slashIndex + 1).trim();\n\tif (/^(?:rgba|hsla)$/i.test(fn)) {\n\t\tconst parts = inner.split(\",\");\n\t\tif (parts.length === 4) return parts[3]?.trim();\n\t}\n}\nfunction parseHexRgba(color) {\n\tconst match = /^#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})\\b/i.exec(color.trim());\n\tif (match == null) return null;\n\tconst hex = match[1];\n\tlet expanded;\n\tlet alpha = 1;\n\tif (hex.length === 3) expanded = hex.split(\"\").map((c) => c + c).join(\"\");\n\telse if (hex.length === 6) expanded = hex;\n\telse {\n\t\texpanded = hex.slice(0, 6);\n\t\talpha = parseInt(hex.slice(6, 8), 16) / 255;\n\t}\n\treturn [\n\t\tparseInt(expanded.slice(0, 2), 16),\n\t\tparseInt(expanded.slice(2, 4), 16),\n\t\tparseInt(expanded.slice(4, 6), 16),\n\t\talpha\n\t];\n}\nfunction relativeLuminance(color) {\n\tif (color == null) return null;\n\tconst rgba = parseHexRgba(color);\n\tif (rgba == null) return null;\n\tconst r = rgba[0] / 255;\n\tconst g = rgba[1] / 255;\n\tconst b = rgba[2] / 255;\n\tconst channel = (v) => v <= .03928 ? v / 12.92 : ((v + .055) / 1.055) ** 2.4;\n\treturn .2126 * channel(r) + .7152 * channel(g) + .0722 * channel(b);\n}\nfunction contrastRatio(a, b) {\n\tconst [hi, lo] = a > b ? [a, b] : [b, a];\n\treturn (hi + .05) / (lo + .05);\n}\nfunction compositeOverBg(fgColor, bgColor) {\n\tif (bgColor == null) return void 0;\n\tconst fgParts = parseHexRgba(fgColor);\n\tconst bgParts = parseHexRgba(bgColor);\n\tif (fgParts == null || bgParts == null) return void 0;\n\tconst [fr, fg, fb, fa] = fgParts;\n\tconst [br, bg, bb] = bgParts;\n\treturn \"#\" + [\n\t\tMath.round(fr * fa + br * (1 - fa)),\n\t\tMath.round(fg * fa + bg * (1 - fa)),\n\t\tMath.round(fb * fa + bb * (1 - fa))\n\t].map((v) => v.toString(16).padStart(2, \"0\")).join(\"\");\n}\nfunction isFullyTransparent(color) {\n\tif (color == null) return false;\n\tconst normalized = color.trim().toLowerCase();\n\tif (normalized === \"transparent\") return true;\n\tif (HEX_TRANSPARENT_RE.test(normalized)) return true;\n\tconst alpha = getFunctionalAlpha(normalized);\n\treturn alpha != null && ALPHA_ZERO_RE.test(alpha);\n}\nfunction isDarkSurface(bg, fgHint) {\n\tconst fromBg = relativeLuminance(bg);\n\tif (fromBg != null) return fromBg < .4;\n\tconst fromFg = relativeLuminance(fgHint);\n\treturn fromFg != null ? fromFg > .6 : false;\n}\nfunction surfacesMatch(a, b) {\n\tif (a == null || b == null) return false;\n\tif (a.trim().toLowerCase() === b.trim().toLowerCase()) return true;\n\tconst la = relativeLuminance(a);\n\tconst lb = relativeLuminance(b);\n\tif (la == null || lb == null) return false;\n\treturn Math.abs(la - lb) < .06;\n}\nfunction hoverWouldEraseText(hover, bg, fg) {\n\tif (bg == null || fg == null) return false;\n\tconst hoverL = relativeLuminance(hover);\n\tconst bgL = relativeLuminance(bg);\n\tconst fgL = relativeLuminance(fg);\n\tif (hoverL == null || bgL == null || fgL == null) return false;\n\treturn Math.abs(hoverL - fgL) < Math.abs(hoverL - bgL);\n}\nfunction pickReadableForeground(bg, candidates) {\n\tconst bgL = relativeLuminance(bg);\n\tconst firstDefined = candidates.find((candidate) => candidate != null && candidate !== \"\");\n\tif (bgL == null) return firstDefined;\n\tlet best;\n\tlet bestRatio = -1;\n\tfor (const candidate of candidates) {\n\t\tif (candidate == null || candidate === \"\") continue;\n\t\tconst candidateL = relativeLuminance(candidate);\n\t\tif (candidateL == null) continue;\n\t\tconst ratio = contrastRatio(bgL, candidateL);\n\t\tif (ratio >= 3) return candidate;\n\t\tif (ratio > bestRatio) {\n\t\t\tbest = candidate;\n\t\t\tbestRatio = ratio;\n\t\t}\n\t}\n\treturn best ?? firstDefined;\n}\nfunction deriveMutedFg(primaryFg, bg) {\n\tif (bg == null) return primaryFg;\n\tconst fgParts = parseHexRgba(primaryFg);\n\tconst bgParts = parseHexRgba(bg);\n\tconst bgL = relativeLuminance(bg);\n\tif (fgParts == null || bgParts == null || bgL == null) return `color-mix(in srgb, ${primaryFg} 70%, ${bg})`;\n\tconst [fr, fg2, fb] = fgParts;\n\tconst [br, bg3, bb] = bgParts;\n\tfor (const weight of [\n\t\t.6,\n\t\t.7,\n\t\t.8,\n\t\t.9\n\t]) {\n\t\tconst hex = \"#\" + [\n\t\t\tMath.round(fr * weight + br * (1 - weight)),\n\t\t\tMath.round(fg2 * weight + bg3 * (1 - weight)),\n\t\t\tMath.round(fb * weight + bb * (1 - weight))\n\t\t].map((v) => v.toString(16).padStart(2, \"0\")).join(\"\");\n\t\tconst L = relativeLuminance(hex);\n\t\tif (L != null && contrastRatio(bgL, L) >= 4.5) return hex;\n\t}\n\treturn primaryFg;\n}\n//#endregion\nexport { MIN_MUTED_RATIO, MIN_READABLE_RATIO, compositeOverBg, contrastRatio, deriveMutedFg, hoverWouldEraseText, isDarkSurface, isFullyTransparent, parseHexRgba, pickReadableForeground, relativeLuminance, surfacesMatch };\n\n//# sourceMappingURL=color.js.map","import { hoverWouldEraseText, isFullyTransparent } from \"./color.js\";\n//#region src/modules/normalizeThemeColors.ts\n/**\n* normalizeThemeColors is the public front door for reading the colors a\n* Shiki/VS Code theme defines. It returns a SAME-SHAPE theme (same top-level\n* fields, same `colors` key vocabulary) whose `colors` map has the standard\n* fallback chains applied and a few universal repairs done, so every consumer\n* reads one resolved set of workbench keys instead of re-deriving the chains.\n*\n* It does NOT touch syntax/editor token colors or the base fg/bg/type — those\n* are owned by Shiki's normalizeTheme upstream, and this function assumes a\n* theme that has already passed through it. Do not confuse the two:\n* `normalizeTheme` (Shiki) normalizes the whole theme; `normalizeThemeColors`\n* (here) only resolves the workbench `colors` map.\n*\n* What it fills (mechanical fallback, no opinion):\n* - surfaces: editor/sideBar background+foreground, input.background,\n* sideBarSectionHeader.foreground, list.activeSelectionForeground — via the\n* editor→base and sideBar→editor→base precedence.\n* - git status: gitDecoration.{added,modified,deleted}ResourceForeground via\n* the gitDecoration → terminal.ansi* → editorGutter.* chain.\n* - focus ring: list.focusOutline set to the first NON-transparent of\n* [list.focusOutline, focusBorder].\n*\n* What it repairs (universal correctness, the ceiling of what it adds):\n* - drops list.hoverBackground when it exactly equals the sidebar surface or\n* would land on top of the row text (hoverWouldEraseText) — a hover that\n* erases legibility is broken for any consumer.\n*\n* What it deliberately leaves alone (consumer presentation opinion):\n* - the selection lookup (list.activeSelectionBackground vs the same-surface\n* swap to list.focusBackground) stays a consumer recipe; the raw keys pass\n* through untouched so a consumer can apply its own choice.\n*\n* The result is pure, frozen, and WeakMap-memoized per input theme, and the\n* function is idempotent: normalizeThemeColors(normalizeThemeColors(t)) yields\n* an equal result. That idempotency is what lets it run lazily at read time\n* (the default) OR be pre-applied at load time and seeded — without a consumer\n* ever getting a different answer.\n*\n* The fallback chains are small and used only here, so they are inlined rather\n* than split into a separate resolver module.\n*/\nconst cache = /* @__PURE__ */ new WeakMap();\nfunction normalizeThemeColors(theme) {\n\tconst cached = cache.get(theme);\n\tif (cached != null) return cached;\n\tconst originalColors = theme.colors ?? {};\n\tconst colors = { ...originalColors };\n\tconst editorBackground = originalColors[\"editor.background\"] ?? theme.bg;\n\tconst editorForeground = originalColors[\"editor.foreground\"] ?? theme.fg;\n\tconst sidebarBackground = originalColors[\"sideBar.background\"] ?? editorBackground;\n\tconst sidebarForeground = originalColors[\"sideBar.foreground\"] ?? editorForeground;\n\tfill(colors, \"editor.background\", editorBackground);\n\tfill(colors, \"editor.foreground\", editorForeground);\n\tfill(colors, \"sideBar.background\", sidebarBackground);\n\tfill(colors, \"sideBar.foreground\", sidebarForeground);\n\tfill(colors, \"input.background\", originalColors[\"input.background\"] ?? sidebarBackground);\n\tfill(colors, \"sideBarSectionHeader.foreground\", originalColors[\"sideBarSectionHeader.foreground\"] ?? sidebarForeground);\n\tfill(colors, \"list.activeSelectionForeground\", originalColors[\"list.activeSelectionForeground\"] ?? sidebarForeground);\n\tfill(colors, \"gitDecoration.addedResourceForeground\", firstColor(originalColors[\"gitDecoration.addedResourceForeground\"], originalColors[\"terminal.ansiGreen\"], originalColors[\"editorGutter.addedBackground\"]));\n\tfill(colors, \"gitDecoration.modifiedResourceForeground\", firstColor(originalColors[\"gitDecoration.modifiedResourceForeground\"], originalColors[\"terminal.ansiBlue\"], originalColors[\"editorGutter.modifiedBackground\"]));\n\tfill(colors, \"gitDecoration.deletedResourceForeground\", firstColor(originalColors[\"gitDecoration.deletedResourceForeground\"], originalColors[\"terminal.ansiRed\"], originalColors[\"editorGutter.deletedBackground\"]));\n\tconst focusRing = (isFullyTransparent(originalColors[\"list.focusOutline\"]) ? void 0 : originalColors[\"list.focusOutline\"]) ?? (isFullyTransparent(originalColors[\"focusBorder\"]) ? void 0 : originalColors[\"focusBorder\"]);\n\tif (focusRing != null) colors[\"list.focusOutline\"] = focusRing;\n\telse delete colors[\"list.focusOutline\"];\n\tconst hover = originalColors[\"list.hoverBackground\"];\n\tif (hover != null && (matchesSurface(hover, sidebarBackground) || hoverWouldEraseText(hover, sidebarBackground, sidebarForeground))) delete colors[\"list.hoverBackground\"];\n\tconst result = Object.freeze({\n\t\t...theme,\n\t\tcolors: Object.freeze(colors)\n\t});\n\tcache.set(theme, result);\n\treturn result;\n}\nfunction fill(colors, key, value) {\n\tif (value != null && value !== \"\") colors[key] = value;\n}\nfunction firstColor(...candidates) {\n\tfor (const candidate of candidates) if (candidate != null && candidate !== \"\") return candidate;\n}\nfunction matchesSurface(color, surface) {\n\treturn surface != null && color.toLowerCase() === surface.toLowerCase();\n}\n//#endregion\nexport { normalizeThemeColors };\n\n//# sourceMappingURL=normalizeThemeColors.js.map","import { DEFAULT_THEMES } from \"../constants.js\";\nimport { formatCSSVariablePrefix } from \"./formatCSSVariablePrefix.js\";\nimport { normalizeThemeColors } from \"@pierre/theming/color\";\n//#region src/utils/getHighlighterThemeStyles.ts\nfunction getHighlighterThemeStyles({ theme = DEFAULT_THEMES, highlighter, prefix }) {\n\tlet styles = \"\";\n\tif (typeof theme === \"string\") {\n\t\tconst themeData = highlighter.getTheme(theme);\n\t\tconst normalized = normalizeThemeColors(themeData);\n\t\tstyles += `color:${normalized.fg};`;\n\t\tstyles += `background-color:${normalized.bg};`;\n\t\tstyles += `${formatCSSVariablePrefix(\"global\")}fg:${normalized.fg};`;\n\t\tstyles += `${formatCSSVariablePrefix(\"global\")}bg:${normalized.bg};`;\n\t\tstyles += getGitVariables(themeData, prefix);\n\t} else {\n\t\tlet themeData = highlighter.getTheme(theme.dark);\n\t\tlet normalized = normalizeThemeColors(themeData);\n\t\tstyles += `${formatCSSVariablePrefix(\"global\")}dark:${normalized.fg};`;\n\t\tstyles += `${formatCSSVariablePrefix(\"global\")}dark-bg:${normalized.bg};`;\n\t\tstyles += getGitVariables(themeData, \"dark\");\n\t\tthemeData = highlighter.getTheme(theme.light);\n\t\tnormalized = normalizeThemeColors(themeData);\n\t\tstyles += `${formatCSSVariablePrefix(\"global\")}light:${normalized.fg};`;\n\t\tstyles += `${formatCSSVariablePrefix(\"global\")}light-bg:${normalized.bg};`;\n\t\tstyles += getGitVariables(themeData, \"light\");\n\t}\n\treturn styles;\n}\nfunction getGitVariables(themeData, modePrefix) {\n\tmodePrefix = modePrefix != null ? `${modePrefix}-` : \"\";\n\tlet styles = \"\";\n\tconst additionGreen = themeData.colors?.[\"gitDecoration.addedResourceForeground\"] ?? themeData.colors?.[\"terminal.ansiGreen\"];\n\tif (additionGreen != null) styles += `${formatCSSVariablePrefix(\"global\")}${modePrefix}addition-color:${additionGreen};`;\n\tconst deletionRed = themeData.colors?.[\"gitDecoration.deletedResourceForeground\"] ?? themeData.colors?.[\"terminal.ansiRed\"];\n\tif (deletionRed != null) styles += `${formatCSSVariablePrefix(\"global\")}${modePrefix}deletion-color:${deletionRed};`;\n\tconst modifiedBlue = themeData.colors?.[\"gitDecoration.modifiedResourceForeground\"] ?? themeData.colors?.[\"terminal.ansiBlue\"];\n\tif (modifiedBlue != null) styles += `${formatCSSVariablePrefix(\"global\")}${modePrefix}modified-color:${modifiedBlue};`;\n\treturn styles;\n}\n//#endregion\nexport { getHighlighterThemeStyles };\n\n//# sourceMappingURL=getHighlighterThemeStyles.js.map","//#region src/utils/getLineNodes.ts\nfunction getLineNodes(nodes) {\n\tlet firstChild = nodes.children[0];\n\twhile (firstChild != null) {\n\t\tif (firstChild.type === \"element\" && firstChild.tagName === \"code\") return firstChild.children;\n\t\tif (\"children\" in firstChild) firstChild = firstChild.children[0];\n\t\telse firstChild = null;\n\t}\n\tconsole.error(nodes);\n\tthrow new Error(\"getLineNodes: Unable to find children\");\n}\n//#endregion\nexport { getLineNodes };\n\n//# sourceMappingURL=getLineNodes.js.map","import { SPLIT_WITH_NEWLINES } from \"../constants.js\";\n//#region src/utils/splitFileContents.ts\n/**\n* Splits file contents into lines using the same logic as diff parsing.\n* - Preserves trailing newlines on each line\n*\n* @param contents - The raw file contents string\n* @returns Array of lines with newlines preserved\n*/\nfunction splitFileContents(contents) {\n\treturn contents !== \"\" ? contents.split(SPLIT_WITH_NEWLINES) : [];\n}\n//#endregion\nexport { splitFileContents };\n\n//# sourceMappingURL=splitFileContents.js.map","import { DEFAULT_THEMES } from \"../constants.js\";\nimport { iterateOverFile } from \"./iterateOverFile.js\";\nimport { getFiletypeFromFileName } from \"./getFiletypeFromFileName.js\";\nimport { cleanLastNewline } from \"./cleanLastNewline.js\";\nimport { createTransformerWithState } from \"./createTransformerWithState.js\";\nimport { formatCSSVariablePrefix } from \"./formatCSSVariablePrefix.js\";\nimport { getHighlighterThemeStyles } from \"./getHighlighterThemeStyles.js\";\nimport { getLineNodes } from \"./getLineNodes.js\";\nimport { splitFileContents } from \"./splitFileContents.js\";\n//#region src/utils/renderFileWithHighlighter.ts\nconst DEFAULT_PLAIN_TEXT_OPTIONS = { forcePlainText: false };\nfunction renderFileWithHighlighter(file, highlighter, { theme = DEFAULT_THEMES, tokenizeMaxLineLength, useTokenTransformer }, { forcePlainText, startingLine, totalLines, lines } = DEFAULT_PLAIN_TEXT_OPTIONS) {\n\tif (forcePlainText) {\n\t\tstartingLine ??= 0;\n\t\ttotalLines ??= Infinity;\n\t} else {\n\t\tstartingLine = 0;\n\t\ttotalLines = Infinity;\n\t}\n\tconst isWindowedHighlight = startingLine > 0 || totalLines < Infinity;\n\tconst { state, transformers } = createTransformerWithState(useTokenTransformer);\n\tconst lang = forcePlainText ? \"text\" : file.lang ?? getFiletypeFromFileName(file.name);\n\tconst baseThemeType = typeof theme === \"string\" ? highlighter.getTheme(theme).type : void 0;\n\tconst themeStyles = getHighlighterThemeStyles({\n\t\ttheme,\n\t\thighlighter\n\t});\n\tstate.lineInfo = (shikiLineNumber) => ({\n\t\ttype: \"context\",\n\t\tlineIndex: shikiLineNumber - 1 + startingLine,\n\t\tlineNumber: shikiLineNumber + startingLine\n\t});\n\tconst hastConfig = (() => {\n\t\tif (typeof theme === \"string\") return {\n\t\t\tlang,\n\t\t\ttheme,\n\t\t\ttransformers,\n\t\t\tdefaultColor: false,\n\t\t\tcssVariablePrefix: formatCSSVariablePrefix(\"token\"),\n\t\t\ttokenizeMaxLineLength,\n\t\t\ttokenizeTimeLimit: 0\n\t\t};\n\t\treturn {\n\t\t\tlang,\n\t\t\tthemes: theme,\n\t\t\ttransformers,\n\t\t\tdefaultColor: false,\n\t\t\tcssVariablePrefix: formatCSSVariablePrefix(\"token\"),\n\t\t\ttokenizeMaxLineLength,\n\t\t\ttokenizeTimeLimit: 0\n\t\t};\n\t})();\n\tconst highlightedLines = getLineNodes(highlighter.codeToHast(isWindowedHighlight ? extractWindowedFileContent(lines ?? splitFileContents(file.contents), startingLine, totalLines) : cleanLastNewline(file.contents), hastConfig));\n\tconst code = isWindowedHighlight ? new Array(startingLine) : highlightedLines;\n\tif (isWindowedHighlight) code.push(...highlightedLines);\n\treturn {\n\t\tcode,\n\t\tthemeStyles,\n\t\tbaseThemeType\n\t};\n}\nfunction extractWindowedFileContent(lines, startingLine, totalLines) {\n\tlet windowContent = \"\";\n\titerateOverFile({\n\t\tlines,\n\t\tstartingLine,\n\t\ttotalLines,\n\t\tcallback({ content }) {\n\t\t\twindowContent += content;\n\t\t}\n\t});\n\treturn windowContent;\n}\n//#endregion\nexport { renderFileWithHighlighter };\n\n//# sourceMappingURL=renderFileWithHighlighter.js.map","//#region src/utils/areDiffTargetsEqual.ts\nfunction areDiffTargetsEqual(diffA, diffB) {\n\treturn diffA === diffB || diffA?.cacheKey != null && diffA.cacheKey === diffB?.cacheKey;\n}\n//#endregion\nexport { areDiffTargetsEqual };\n\n//# sourceMappingURL=areDiffTargetsEqual.js.map","import { areThemesEqual } from \"./areThemesEqual.js\";\n//#region src/utils/areDiffRenderOptionsEqual.ts\nfunction areDiffRenderOptionsEqual(optionsA, optionsB) {\n\treturn areThemesEqual(optionsA.theme, optionsB.theme) && optionsA.useTokenTransformer === optionsB.useTokenTransformer && optionsA.tokenizeMaxLineLength === optionsB.tokenizeMaxLineLength && optionsA.lineDiffType === optionsB.lineDiffType && optionsA.maxLineDiffLength === optionsB.maxLineDiffLength;\n}\n//#endregion\nexport { areDiffRenderOptionsEqual };\n\n//# sourceMappingURL=areDiffRenderOptionsEqual.js.map","import { getFiletypeFromFileName } from \"./getFiletypeFromFileName.js\";\n//#region src/utils/isDiffPlainText.ts\nfunction isDiffPlainText(diff) {\n\tconst computedLang = diff.lang ?? getFiletypeFromFileName(diff.name);\n\tconst computedPreviousLang = diff.lang ?? (diff.prevName != null ? getFiletypeFromFileName(diff.prevName) : \"text\");\n\treturn computedLang === \"text\" && computedPreviousLang === \"text\";\n}\n//#endregion\nexport { isDiffPlainText };\n\n//# sourceMappingURL=isDiffPlainText.js.map","import { DEFAULT_VIRTUAL_FILE_METRICS } from \"../constants.js\";\n//#region src/utils/computeVirtualFileMetrics.ts\nfunction computeVirtualFileMetrics(metrics) {\n\treturn {\n\t\t...DEFAULT_VIRTUAL_FILE_METRICS,\n\t\t...metrics\n\t};\n}\nfunction getVirtualFileHeaderRegion(metrics, disableFileHeader) {\n\tconst paddingTop = getVirtualFilePaddingTop(metrics, disableFileHeader);\n\treturn disableFileHeader ? paddingTop : metrics.diffHeaderHeight + paddingTop;\n}\nfunction getVirtualFilePaddingTop(metrics, disableFileHeader) {\n\treturn metrics.paddingTop ?? (disableFileHeader ? metrics.spacing : 0);\n}\nfunction getVirtualFilePaddingBottom(metrics) {\n\treturn metrics.paddingBottom ?? metrics.spacing;\n}\nfunction getDefaultHunkSeparatorHeight(type) {\n\tswitch (type) {\n\t\tcase \"simple\": return 4;\n\t\tcase \"metadata\":\n\t\tcase \"line-info\":\n\t\tcase \"line-info-basic\":\n\t\tcase \"custom\": return 32;\n\t}\n}\n//#endregion\nexport { computeVirtualFileMetrics, getDefaultHunkSeparatorHeight, getVirtualFileHeaderRegion, getVirtualFilePaddingBottom, getVirtualFilePaddingTop };\n\n//# sourceMappingURL=computeVirtualFileMetrics.js.map","import { getDefaultHunkSeparatorHeight } from \"./computeVirtualFileMetrics.js\";\n//#region src/utils/virtualDiffLayout.ts\nfunction getExpandedRegion({ isPartial, rangeSize, expandedHunks, hunkIndex, collapsedContextThreshold }) {\n\tconst normalizedRangeSize = Math.max(rangeSize, 0);\n\tif (normalizedRangeSize === 0 || isPartial) return {\n\t\tfromStart: 0,\n\t\tfromEnd: 0,\n\t\trangeSize: normalizedRangeSize,\n\t\tcollapsedLines: normalizedRangeSize,\n\t\trenderAll: false\n\t};\n\tif (expandedHunks === true || normalizedRangeSize <= collapsedContextThreshold) return {\n\t\tfromStart: normalizedRangeSize,\n\t\tfromEnd: 0,\n\t\trangeSize: normalizedRangeSize,\n\t\tcollapsedLines: 0,\n\t\trenderAll: true\n\t};\n\tconst region = expandedHunks?.get(hunkIndex);\n\tconst fromStart = Math.min(Math.max(region?.fromStart ?? 0, 0), normalizedRangeSize);\n\tconst fromEnd = Math.min(Math.max(region?.fromEnd ?? 0, 0), normalizedRangeSize);\n\tconst expandedCount = fromStart + fromEnd;\n\tconst renderAll = expandedCount >= normalizedRangeSize;\n\treturn {\n\t\tfromStart: renderAll ? normalizedRangeSize : fromStart,\n\t\tfromEnd: renderAll ? 0 : fromEnd,\n\t\trangeSize: normalizedRangeSize,\n\t\tcollapsedLines: Math.max(normalizedRangeSize - expandedCount, 0),\n\t\trenderAll\n\t};\n}\nfunction hasTrailingContext(fileDiff) {\n\tconst lastHunk = fileDiff.hunks[fileDiff.hunks.length - 1];\n\tif (lastHunk == null || fileDiff.isPartial || fileDiff.additionLines.length === 0 || fileDiff.deletionLines.length === 0) return false;\n\tconst additionRemaining = fileDiff.additionLines.length - (lastHunk.additionLineIndex + lastHunk.additionCount);\n\tconst deletionRemaining = fileDiff.deletionLines.length - (lastHunk.deletionLineIndex + lastHunk.deletionCount);\n\treturn additionRemaining > 0 || deletionRemaining > 0;\n}\nfunction getTrailingContextRangeSize({ fileDiff, errorPrefix }) {\n\tconst lastHunk = fileDiff.hunks[fileDiff.hunks.length - 1];\n\tif (lastHunk == null || fileDiff.isPartial || fileDiff.additionLines.length === 0 || fileDiff.deletionLines.length === 0) return 0;\n\tconst additionRemaining = fileDiff.additionLines.length - (lastHunk.additionLineIndex + lastHunk.additionCount);\n\tconst deletionRemaining = fileDiff.deletionLines.length - (lastHunk.deletionLineIndex + lastHunk.deletionCount);\n\tif (additionRemaining <= 0 && deletionRemaining <= 0) return 0;\n\tif (additionRemaining !== deletionRemaining) throw new Error(`${errorPrefix}: trailing context mismatch (additions=${additionRemaining}, deletions=${deletionRemaining}) for ${fileDiff.name}`);\n\treturn Math.min(additionRemaining, deletionRemaining);\n}\nfunction getTrailingExpandedRegion({ fileDiff, hunkIndex, expandedHunks, collapsedContextThreshold, errorPrefix }) {\n\tif (hunkIndex !== fileDiff.hunks.length - 1) return;\n\tconst trailingRangeSize = getTrailingContextRangeSize({\n\t\tfileDiff,\n\t\terrorPrefix\n\t});\n\tif (trailingRangeSize <= 0) return;\n\tif (expandedHunks === true || trailingRangeSize <= collapsedContextThreshold) return {\n\t\tfromStart: trailingRangeSize,\n\t\tfromEnd: 0,\n\t\trangeSize: trailingRangeSize,\n\t\tcollapsedLines: 0,\n\t\trenderAll: true\n\t};\n\tconst region = expandedHunks?.get(fileDiff.hunks.length);\n\tconst fromStart = Math.min(Math.max(region?.fromStart ?? 0, 0), trailingRangeSize);\n\treturn {\n\t\tfromStart,\n\t\tfromEnd: 0,\n\t\trangeSize: trailingRangeSize,\n\t\tcollapsedLines: trailingRangeSize - fromStart,\n\t\trenderAll: fromStart >= trailingRangeSize\n\t};\n}\nfunction getHunkSeparatorHeight({ type, metrics }) {\n\treturn metrics.hunkSeparatorHeight ?? getDefaultHunkSeparatorHeight(type);\n}\nfunction getHunkSeparatorGap({ type, metrics }) {\n\treturn type === \"simple\" || type === \"metadata\" || type === \"line-info-basic\" ? 0 : metrics.spacing;\n}\nfunction hasLeadingHunkSeparator({ type, hunkIndex, hunkSpecs }) {\n\tswitch (type) {\n\t\tcase \"simple\": return hunkIndex > 0;\n\t\tcase \"metadata\": return hunkSpecs != null;\n\t\tcase \"line-info\":\n\t\tcase \"line-info-basic\":\n\t\tcase \"custom\": return true;\n\t}\n}\nfunction hasTrailingHunkSeparator(type) {\n\treturn type !== \"simple\" && type !== \"metadata\";\n}\nfunction getLeadingHunkSeparatorLayout({ type, metrics, hunkIndex, hunkSpecs }) {\n\tif (!hasLeadingHunkSeparator({\n\t\ttype,\n\t\thunkIndex,\n\t\thunkSpecs\n\t})) return;\n\tconst height = getHunkSeparatorHeight({\n\t\ttype,\n\t\tmetrics\n\t});\n\tconst gap = getHunkSeparatorGap({\n\t\ttype,\n\t\tmetrics\n\t});\n\tconst gapBefore = hunkIndex > 0 ? gap : 0;\n\tconst gapAfter = gap;\n\treturn {\n\t\theight,\n\t\tgapBefore,\n\t\tgapAfter,\n\t\ttotalHeight: gapBefore + height + gapAfter\n\t};\n}\nfunction getTrailingHunkSeparatorLayout({ type, metrics }) {\n\tif (!hasTrailingHunkSeparator(type)) return;\n\tconst height = getHunkSeparatorHeight({\n\t\ttype,\n\t\tmetrics\n\t});\n\tconst gapBefore = getHunkSeparatorGap({\n\t\ttype,\n\t\tmetrics\n\t});\n\treturn {\n\t\theight,\n\t\tgapBefore,\n\t\tgapAfter: 0,\n\t\ttotalHeight: gapBefore + height\n\t};\n}\n//#endregion\nexport { getExpandedRegion, getHunkSeparatorGap, getHunkSeparatorHeight, getLeadingHunkSeparatorLayout, getTrailingContextRangeSize, getTrailingExpandedRegion, getTrailingHunkSeparatorLayout, hasLeadingHunkSeparator, hasTrailingContext, hasTrailingHunkSeparator };\n\n//# sourceMappingURL=virtualDiffLayout.js.map","import \"../constants.js\";\nimport { getExpandedRegion, getTrailingExpandedRegion } from \"./virtualDiffLayout.js\";\n//#region src/utils/iterateOverDiff.ts\nfunction iterateOverDiff({ diff, diffStyle, startingLine = 0, totalLines = Infinity, expandedHunks, collapsedContextThreshold = 1, callback }) {\n\tconst iterationStart = getIterationStartState({\n\t\tdiff,\n\t\tdiffStyle,\n\t\tstartingLine,\n\t\texpandedHunks,\n\t\tcollapsedContextThreshold\n\t});\n\tconst state = {\n\t\tviewportStart: startingLine,\n\t\tviewportEnd: startingLine + totalLines,\n\t\tisWindowedHighlight: startingLine > 0 || totalLines < Infinity,\n\t\tsplitCount: iterationStart.splitCount,\n\t\tunifiedCount: iterationStart.unifiedCount,\n\t\tfinalHunkIndex: diff.hunks.length - 1,\n\t\tshouldBreak() {\n\t\t\tif (!state.isWindowedHighlight) return false;\n\t\t\tconst breakUnified = state.unifiedCount >= startingLine + totalLines;\n\t\t\tconst breakSplit = state.splitCount >= startingLine + totalLines;\n\t\t\tif (diffStyle === \"unified\") return breakUnified;\n\t\t\telse if (diffStyle === \"split\") return breakSplit;\n\t\t\telse return breakUnified && breakSplit;\n\t\t},\n\t\tshouldSkip(unifiedHeight, splitHeight) {\n\t\t\tif (!state.isWindowedHighlight) return false;\n\t\t\tconst skipUnified = state.unifiedCount + unifiedHeight < startingLine;\n\t\t\tconst skipSplit = state.splitCount + splitHeight < startingLine;\n\t\t\tif (diffStyle === \"unified\") return skipUnified;\n\t\t\telse if (diffStyle === \"split\") return skipSplit;\n\t\t\telse return skipUnified && skipSplit;\n\t\t},\n\t\tincrementCounts(unifiedValue, splitValue) {\n\t\t\tif (diffStyle === \"unified\" || diffStyle === \"both\") state.unifiedCount += unifiedValue;\n\t\t\tif (diffStyle === \"split\" || diffStyle === \"both\") state.splitCount += splitValue;\n\t\t},\n\t\tisInWindow(unifiedHeight, splitHeight) {\n\t\t\tif (!state.isWindowedHighlight) return true;\n\t\t\tconst unifiedInWindow = state.isInUnifiedWindow(unifiedHeight);\n\t\t\tconst splitInWindow = state.isInSplitWindow(splitHeight);\n\t\t\tif (diffStyle === \"unified\") return unifiedInWindow;\n\t\t\telse if (diffStyle === \"split\") return splitInWindow;\n\t\t\telse return unifiedInWindow || splitInWindow;\n\t\t},\n\t\tisInUnifiedWindow(unifiedHeight) {\n\t\t\treturn !state.isWindowedHighlight || state.unifiedCount >= startingLine - unifiedHeight && state.unifiedCount < startingLine + totalLines;\n\t\t},\n\t\tisInSplitWindow(splitHeight) {\n\t\t\treturn !state.isWindowedHighlight || state.splitCount >= startingLine - splitHeight && state.splitCount < startingLine + totalLines;\n\t\t},\n\t\temit(props, silent = false) {\n\t\t\tif (!silent) if (diffStyle === \"unified\") state.incrementCounts(1, 0);\n\t\t\telse if (diffStyle === \"split\") state.incrementCounts(0, 1);\n\t\t\telse state.incrementCounts(1, 1);\n\t\t\treturn callback(props) ?? false;\n\t\t}\n\t};\n\thunkIterator: for (let hunkIndex = iterationStart.hunkIndex; hunkIndex < diff.hunks.length; hunkIndex++) {\n\t\tconst hunk = diff.hunks[hunkIndex];\n\t\tif (hunk == null) throw new Error(\"iterateOverDiff: invalid hunk index\");\n\t\tif (state.shouldBreak()) break;\n\t\tconst leadingRegion = getExpandedRegion({\n\t\t\tisPartial: diff.isPartial,\n\t\t\trangeSize: hunk.collapsedBefore,\n\t\t\texpandedHunks,\n\t\t\thunkIndex,\n\t\t\tcollapsedContextThreshold\n\t\t});\n\t\tconst trailingRegion = hunkIndex === state.finalHunkIndex ? getTrailingExpandedRegion({\n\t\t\tfileDiff: diff,\n\t\t\thunkIndex,\n\t\t\texpandedHunks,\n\t\t\tcollapsedContextThreshold,\n\t\t\terrorPrefix: \"iterateOverDiff\"\n\t\t}) : void 0;\n\t\tconst expandedLineCount = leadingRegion.fromStart + leadingRegion.fromEnd;\n\t\tfunction getTrailingCollapsedAfter(unifiedLineIndex, splitLineIndex) {\n\t\t\tif (trailingRegion == null || trailingRegion.collapsedLines <= 0 || trailingRegion.fromStart + trailingRegion.fromEnd > 0) return 0;\n\t\t\tif (diffStyle === \"unified\") return unifiedLineIndex === hunk.unifiedLineStart + hunk.unifiedLineCount - 1 ? trailingRegion.collapsedLines : 0;\n\t\t\treturn splitLineIndex === hunk.splitLineStart + hunk.splitLineCount - 1 ? trailingRegion.collapsedLines : 0;\n\t\t}\n\t\tlet consumedCollapsed = leadingRegion.collapsedLines === 0;\n\t\tfunction consumePendingCollapsed() {\n\t\t\tif (consumedCollapsed) return 0;\n\t\t\tconsumedCollapsed = true;\n\t\t\treturn leadingRegion.collapsedLines;\n\t\t}\n\t\tif (!state.shouldSkip(expandedLineCount, expandedLineCount)) {\n\t\t\tlet unifiedLineIndex = hunk.unifiedLineStart - leadingRegion.rangeSize;\n\t\t\tlet splitLineIndex = hunk.splitLineStart - leadingRegion.rangeSize;\n\t\t\tlet deletionLineIndex = hunk.deletionLineIndex - leadingRegion.rangeSize;\n\t\t\tlet additionLineIndex = hunk.additionLineIndex - leadingRegion.rangeSize;\n\t\t\tlet deletionLineNumber = hunk.deletionStart - leadingRegion.rangeSize;\n\t\t\tlet additionLineNumber = hunk.additionStart - leadingRegion.rangeSize;\n\t\t\tif (walkContextLines(state, leadingRegion.fromStart, diffStyle, (index) => {\n\t\t\t\treturn state.emit({\n\t\t\t\t\thunkIndex,\n\t\t\t\t\thunk,\n\t\t\t\t\tcollapsedBefore: 0,\n\t\t\t\t\tcollapsedAfter: 0,\n\t\t\t\t\ttype: \"context-expanded\",\n\t\t\t\t\tdeletionLine: {\n\t\t\t\t\t\tlineNumber: deletionLineNumber + index,\n\t\t\t\t\t\tlineIndex: deletionLineIndex + index,\n\t\t\t\t\t\tnoEOFCR: false,\n\t\t\t\t\t\tunifiedLineIndex: unifiedLineIndex + index,\n\t\t\t\t\t\tsplitLineIndex: splitLineIndex + index\n\t\t\t\t\t},\n\t\t\t\t\tadditionLine: {\n\t\t\t\t\t\tunifiedLineIndex: unifiedLineIndex + index,\n\t\t\t\t\t\tsplitLineIndex: splitLineIndex + index,\n\t\t\t\t\t\tlineIndex: additionLineIndex + index,\n\t\t\t\t\t\tlineNumber: additionLineNumber + index,\n\t\t\t\t\t\tnoEOFCR: false\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t})) break hunkIterator;\n\t\t\tunifiedLineIndex = hunk.unifiedLineStart - leadingRegion.fromEnd;\n\t\t\tsplitLineIndex = hunk.splitLineStart - leadingRegion.fromEnd;\n\t\t\tdeletionLineIndex = hunk.deletionLineIndex - leadingRegion.fromEnd;\n\t\t\tadditionLineIndex = hunk.additionLineIndex - leadingRegion.fromEnd;\n\t\t\tdeletionLineNumber = hunk.deletionStart - leadingRegion.fromEnd;\n\t\t\tadditionLineNumber = hunk.additionStart - leadingRegion.fromEnd;\n\t\t\tif (walkContextLines(state, leadingRegion.fromEnd, diffStyle, (index) => {\n\t\t\t\treturn state.emit({\n\t\t\t\t\thunkIndex,\n\t\t\t\t\thunk,\n\t\t\t\t\tcollapsedBefore: consumePendingCollapsed(),\n\t\t\t\t\tcollapsedAfter: 0,\n\t\t\t\t\ttype: \"context-expanded\",\n\t\t\t\t\tdeletionLine: {\n\t\t\t\t\t\tlineNumber: deletionLineNumber + index,\n\t\t\t\t\t\tlineIndex: deletionLineIndex + index,\n\t\t\t\t\t\tnoEOFCR: false,\n\t\t\t\t\t\tunifiedLineIndex: unifiedLineIndex + index,\n\t\t\t\t\t\tsplitLineIndex: splitLineIndex + index\n\t\t\t\t\t},\n\t\t\t\t\tadditionLine: {\n\t\t\t\t\t\tunifiedLineIndex: unifiedLineIndex + index,\n\t\t\t\t\t\tsplitLineIndex: splitLineIndex + index,\n\t\t\t\t\t\tlineIndex: additionLineIndex + index,\n\t\t\t\t\t\tlineNumber: additionLineNumber + index,\n\t\t\t\t\t\tnoEOFCR: false\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}, () => {\n\t\t\t\tconsumePendingCollapsed();\n\t\t\t})) break hunkIterator;\n\t\t} else {\n\t\t\tstate.incrementCounts(expandedLineCount, expandedLineCount);\n\t\t\tconsumePendingCollapsed();\n\t\t}\n\t\tlet unifiedLineIndex = hunk.unifiedLineStart;\n\t\tlet splitLineIndex = hunk.splitLineStart;\n\t\tlet deletionLineIndex = hunk.deletionLineIndex;\n\t\tlet additionLineIndex = hunk.additionLineIndex;\n\t\tlet deletionLineNumber = hunk.deletionStart;\n\t\tlet additionLineNumber = hunk.additionStart;\n\t\tconst lastContent = hunk.hunkContent.at(-1);\n\t\tfor (const content of hunk.hunkContent) {\n\t\t\tif (state.shouldBreak()) break hunkIterator;\n\t\t\tconst isLastContent = content === lastContent;\n\t\t\tif (content.type === \"context\") {\n\t\t\t\tif (!state.shouldSkip(content.lines, content.lines)) {\n\t\t\t\t\tif (walkContextLines(state, content.lines, diffStyle, (index) => {\n\t\t\t\t\t\tconst isLastLine = isLastContent && index === content.lines - 1;\n\t\t\t\t\t\tconst unifiedRowIndex = unifiedLineIndex + index;\n\t\t\t\t\t\tconst splitRowIndex = splitLineIndex + index;\n\t\t\t\t\t\treturn state.emit({\n\t\t\t\t\t\t\thunkIndex,\n\t\t\t\t\t\t\thunk,\n\t\t\t\t\t\t\tcollapsedBefore: consumePendingCollapsed(),\n\t\t\t\t\t\t\tcollapsedAfter: getTrailingCollapsedAfter(unifiedRowIndex, splitRowIndex),\n\t\t\t\t\t\t\ttype: \"context\",\n\t\t\t\t\t\t\tdeletionLine: {\n\t\t\t\t\t\t\t\tlineNumber: deletionLineNumber + index,\n\t\t\t\t\t\t\t\tlineIndex: deletionLineIndex + index,\n\t\t\t\t\t\t\t\tnoEOFCR: isLastLine && hunk.noEOFCRDeletions,\n\t\t\t\t\t\t\t\tunifiedLineIndex: unifiedRowIndex,\n\t\t\t\t\t\t\t\tsplitLineIndex: splitRowIndex\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tadditionLine: {\n\t\t\t\t\t\t\t\tunifiedLineIndex: unifiedRowIndex,\n\t\t\t\t\t\t\t\tsplitLineIndex: splitRowIndex,\n\t\t\t\t\t\t\t\tlineIndex: additionLineIndex + index,\n\t\t\t\t\t\t\t\tlineNumber: additionLineNumber + index,\n\t\t\t\t\t\t\t\tnoEOFCR: isLastLine && hunk.noEOFCRAdditions\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}, () => {\n\t\t\t\t\t\tconsumePendingCollapsed();\n\t\t\t\t\t})) break hunkIterator;\n\t\t\t\t} else {\n\t\t\t\t\tstate.incrementCounts(content.lines, content.lines);\n\t\t\t\t\tconsumePendingCollapsed();\n\t\t\t\t}\n\t\t\t\tunifiedLineIndex += content.lines;\n\t\t\t\tsplitLineIndex += content.lines;\n\t\t\t\tdeletionLineIndex += content.lines;\n\t\t\t\tadditionLineIndex += content.lines;\n\t\t\t\tdeletionLineNumber += content.lines;\n\t\t\t\tadditionLineNumber += content.lines;\n\t\t\t} else {\n\t\t\t\tconst splitCount = Math.max(content.deletions, content.additions);\n\t\t\t\tconst unifiedCount = content.deletions + content.additions;\n\t\t\t\tif (!state.shouldSkip(unifiedCount, splitCount)) {\n\t\t\t\t\tconst iterationRanges = getChangeIterationRanges(state, content, diffStyle);\n\t\t\t\t\tif ((iterationRanges[0]?.[0] ?? 0) > 0) consumePendingCollapsed();\n\t\t\t\t\tfor (const [rangeStart, rangeEnd] of iterationRanges) for (let index = rangeStart; index < rangeEnd; index++) {\n\t\t\t\t\t\tconst collapsedAfter = getTrailingCollapsedAfter(unifiedLineIndex + index, diffStyle === \"unified\" ? splitLineIndex + (index < content.deletions ? index : index - content.deletions) : splitLineIndex + index);\n\t\t\t\t\t\tif (state.emit(getChangeLineData({\n\t\t\t\t\t\t\thunkIndex,\n\t\t\t\t\t\t\thunk,\n\t\t\t\t\t\t\tcollapsedBefore: consumePendingCollapsed(),\n\t\t\t\t\t\t\tcollapsedAfter,\n\t\t\t\t\t\t\tdiffStyle,\n\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\tunifiedLineIndex,\n\t\t\t\t\t\t\tsplitLineIndex,\n\t\t\t\t\t\t\tadditionLineIndex,\n\t\t\t\t\t\t\tdeletionLineIndex,\n\t\t\t\t\t\t\tadditionLineNumber,\n\t\t\t\t\t\t\tdeletionLineNumber,\n\t\t\t\t\t\t\tcontent,\n\t\t\t\t\t\t\tisLastContent,\n\t\t\t\t\t\t\tunifiedCount,\n\t\t\t\t\t\t\tsplitCount\n\t\t\t\t\t\t}), true)) break hunkIterator;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconsumePendingCollapsed();\n\t\t\t\tstate.incrementCounts(unifiedCount, splitCount);\n\t\t\t\tunifiedLineIndex += unifiedCount;\n\t\t\t\tsplitLineIndex += splitCount;\n\t\t\t\tdeletionLineIndex += content.deletions;\n\t\t\t\tadditionLineIndex += content.additions;\n\t\t\t\tdeletionLineNumber += content.deletions;\n\t\t\t\tadditionLineNumber += content.additions;\n\t\t\t}\n\t\t}\n\t\tif (trailingRegion != null) {\n\t\t\tconst { collapsedLines, fromStart, fromEnd } = trailingRegion;\n\t\t\tconst len = fromStart + fromEnd;\n\t\t\tif (walkContextLines(state, len, diffStyle, (index) => {\n\t\t\t\tconst isLastLine = index === len - 1;\n\t\t\t\treturn state.emit({\n\t\t\t\t\thunkIndex: diff.hunks.length,\n\t\t\t\t\thunk: void 0,\n\t\t\t\t\tcollapsedBefore: 0,\n\t\t\t\t\tcollapsedAfter: isLastLine ? collapsedLines : 0,\n\t\t\t\t\ttype: \"context-expanded\",\n\t\t\t\t\tdeletionLine: {\n\t\t\t\t\t\tlineNumber: deletionLineNumber + index,\n\t\t\t\t\t\tlineIndex: deletionLineIndex + index,\n\t\t\t\t\t\tnoEOFCR: false,\n\t\t\t\t\t\tunifiedLineIndex: unifiedLineIndex + index,\n\t\t\t\t\t\tsplitLineIndex: splitLineIndex + index\n\t\t\t\t\t},\n\t\t\t\t\tadditionLine: {\n\t\t\t\t\t\tunifiedLineIndex: unifiedLineIndex + index,\n\t\t\t\t\t\tsplitLineIndex: splitLineIndex + index,\n\t\t\t\t\t\tlineIndex: additionLineIndex + index,\n\t\t\t\t\t\tlineNumber: additionLineNumber + index,\n\t\t\t\t\t\tnoEOFCR: false\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}, void 0, () => state.shouldBreak())) break hunkIterator;\n\t\t}\n\t}\n}\nfunction getIterationStartState({ diff, diffStyle, startingLine, expandedHunks, collapsedContextThreshold }) {\n\tif (startingLine <= 0 || diffStyle === \"both\") return {\n\t\thunkIndex: 0,\n\t\tsplitCount: 0,\n\t\tunifiedCount: 0\n\t};\n\tconst prefixCounts = getHunkPrefixCounts({\n\t\tdiff,\n\t\texpandedHunks,\n\t\tcollapsedContextThreshold\n\t});\n\tlet low = 0;\n\tlet high = diff.hunks.length - 1;\n\tlet result = diff.hunks.length;\n\twhile (low <= high) {\n\t\tconst mid = low + high >> 1;\n\t\tconst counts = prefixCounts[mid + 1];\n\t\tif (counts == null) throw new Error(\"iterateOverDiff: invalid hunk prefix index\");\n\t\tif ((diffStyle === \"unified\" ? counts.unifiedCount : counts.splitCount) > startingLine) {\n\t\t\tresult = mid;\n\t\t\thigh = mid - 1;\n\t\t} else low = mid + 1;\n\t}\n\tif (result >= diff.hunks.length) {\n\t\tconst counts = prefixCounts[diff.hunks.length];\n\t\tif (counts == null) throw new Error(\"iterateOverDiff: invalid terminal hunk prefix index\");\n\t\treturn {\n\t\t\thunkIndex: diff.hunks.length,\n\t\t\tsplitCount: counts.splitCount,\n\t\t\tunifiedCount: counts.unifiedCount\n\t\t};\n\t}\n\tconst counts = prefixCounts[result];\n\tif (counts == null) throw new Error(\"iterateOverDiff: invalid selected hunk prefix index\");\n\treturn {\n\t\thunkIndex: result,\n\t\tsplitCount: counts.splitCount,\n\t\tunifiedCount: counts.unifiedCount\n\t};\n}\nfunction getHunkPrefixCounts({ diff, expandedHunks, collapsedContextThreshold }) {\n\tlet splitCount = 0;\n\tlet unifiedCount = 0;\n\tconst finalHunkIndex = diff.hunks.length - 1;\n\tconst prefixCounts = [{\n\t\tsplitCount: 0,\n\t\tunifiedCount: 0\n\t}];\n\tfor (let index = 0; index < diff.hunks.length; index++) {\n\t\tconst hunk = diff.hunks[index];\n\t\tif (hunk == null) throw new Error(\"iterateOverDiff: invalid hunk summary index\");\n\t\tconst leadingRegion = getExpandedRegion({\n\t\t\tisPartial: diff.isPartial,\n\t\t\trangeSize: hunk.collapsedBefore,\n\t\t\texpandedHunks,\n\t\t\thunkIndex: index,\n\t\t\tcollapsedContextThreshold\n\t\t});\n\t\tconst leadingCount = leadingRegion.fromStart + leadingRegion.fromEnd;\n\t\tsplitCount += leadingCount + hunk.splitLineCount;\n\t\tunifiedCount += leadingCount + hunk.unifiedLineCount;\n\t\tconst trailingRegion = index === finalHunkIndex ? getTrailingExpandedRegion({\n\t\t\tfileDiff: diff,\n\t\t\thunkIndex: index,\n\t\t\texpandedHunks,\n\t\t\tcollapsedContextThreshold,\n\t\t\terrorPrefix: \"iterateOverDiff\"\n\t\t}) : void 0;\n\t\tif (trailingRegion != null) {\n\t\t\tconst trailingCount = trailingRegion.fromStart + trailingRegion.fromEnd;\n\t\t\tsplitCount += trailingCount;\n\t\t\tunifiedCount += trailingCount;\n\t\t}\n\t\tprefixCounts.push({\n\t\t\tsplitCount,\n\t\t\tunifiedCount\n\t\t});\n\t}\n\treturn prefixCounts;\n}\nfunction getContextLineIterationBounds(state, count, diffStyle) {\n\tif (!state.isWindowedHighlight || count <= 0) return [0, count];\n\tconst ranges = [];\n\tfunction pushRange(currentCount) {\n\t\tconst start = Math.max(0, state.viewportStart - currentCount);\n\t\tconst end = Math.min(count, state.viewportEnd - currentCount);\n\t\tif (end > start) ranges.push([start, end]);\n\t}\n\tif (diffStyle !== \"split\") pushRange(state.unifiedCount);\n\tif (diffStyle !== \"unified\") pushRange(state.splitCount);\n\tif (ranges.length === 0) return [0, 0];\n\tlet start = ranges[0][0];\n\tlet end = ranges[0][1];\n\tfor (let index = 1; index < ranges.length; index++) {\n\t\tconst range = ranges[index];\n\t\tstart = Math.min(start, range[0]);\n\t\tend = Math.max(end, range[1]);\n\t}\n\treturn [start, end];\n}\nfunction walkContextLines(state, count, diffStyle, callback, onSkippedStart, shouldBreak) {\n\tconst [startIndex, endIndex] = getContextLineIterationBounds(state, count, diffStyle);\n\tif (startIndex > 0) {\n\t\tstate.incrementCounts(startIndex, startIndex);\n\t\tonSkippedStart?.();\n\t}\n\tlet index = startIndex;\n\twhile (index < count) {\n\t\tif (shouldBreak?.() === true) return true;\n\t\tif (index >= endIndex) {\n\t\t\tstate.incrementCounts(count - index, count - index);\n\t\t\tbreak;\n\t\t}\n\t\tif (state.isInWindow(0, 0)) {\n\t\t\tif (callback(index) === true) return true;\n\t\t} else state.incrementCounts(1, 1);\n\t\tindex++;\n\t}\n\treturn false;\n}\nfunction getChangeIterationRanges(state, content, diffStyle) {\n\tif (!state.isWindowedHighlight) return [[0, diffStyle === \"unified\" ? content.deletions + content.additions : Math.max(content.deletions, content.additions)]];\n\tconst useUnified = diffStyle !== \"split\";\n\tconst useSplit = diffStyle !== \"unified\";\n\tconst iterationSpace = diffStyle === \"unified\" ? \"unified\" : \"split\";\n\tconst iterationRanges = [];\n\tfunction getVisibleRange(start, count) {\n\t\tif (start + count <= state.viewportStart || start >= state.viewportEnd) return;\n\t\tconst visibleStart = Math.max(0, state.viewportStart - start);\n\t\tconst visibleEnd = Math.min(count, state.viewportEnd - start);\n\t\treturn visibleEnd > visibleStart ? [visibleStart, visibleEnd] : void 0;\n\t}\n\tfunction mapRangeToIteration(range, kind) {\n\t\tif (iterationSpace === \"split\") return range;\n\t\treturn kind === \"additions\" ? [range[0] + content.deletions, range[1] + content.deletions] : range;\n\t}\n\tfunction pushRange(range, kind) {\n\t\tif (range == null) return;\n\t\tconst [start, end] = mapRangeToIteration(range, kind);\n\t\tif (end > start) iterationRanges.push([start, end]);\n\t}\n\tif (useUnified) {\n\t\tpushRange(getVisibleRange(state.unifiedCount, content.deletions), \"deletions\");\n\t\tpushRange(getVisibleRange(state.unifiedCount + content.deletions, content.additions), \"additions\");\n\t}\n\tif (useSplit) {\n\t\tpushRange(getVisibleRange(state.splitCount, content.deletions), \"deletions\");\n\t\tpushRange(getVisibleRange(state.splitCount, content.additions), \"additions\");\n\t}\n\tif (iterationRanges.length === 0) return iterationRanges;\n\titerationRanges.sort((a, b) => a[0] - b[0]);\n\tconst merged = [iterationRanges[0]];\n\tfor (const [start, end] of iterationRanges.slice(1)) {\n\t\tconst last = merged[merged.length - 1];\n\t\tif (start <= last[1]) last[1] = Math.max(last[1], end);\n\t\telse merged.push([start, end]);\n\t}\n\treturn merged;\n}\nfunction getChangeLineData({ hunkIndex, hunk, collapsedAfter, collapsedBefore, diffStyle, index, unifiedLineIndex, splitLineIndex, additionLineIndex, deletionLineIndex, additionLineNumber, deletionLineNumber, content, isLastContent, unifiedCount, splitCount }) {\n\tconst unifiedDeletionLineIndex = index < content.deletions ? unifiedLineIndex + index : void 0;\n\tconst unifiedAdditionLineIndex = diffStyle === \"unified\" ? index >= content.deletions ? unifiedLineIndex + index : void 0 : index < content.additions ? unifiedLineIndex + content.deletions + index : void 0;\n\tconst resolvedSplitLineIndex = diffStyle === \"unified\" ? splitLineIndex + (index < content.deletions ? index : index - content.deletions) : splitLineIndex + index;\n\tconst deletionLineIndexValue = index < content.deletions ? deletionLineIndex + index : void 0;\n\tconst deletionLineNumberValue = index < content.deletions ? deletionLineNumber + index : void 0;\n\tconst additionLineIndexValue = diffStyle === \"unified\" ? index >= content.deletions ? additionLineIndex + (index - content.deletions) : void 0 : index < content.additions ? additionLineIndex + index : void 0;\n\tconst additionLineNumberValue = diffStyle === \"unified\" ? index >= content.deletions ? additionLineNumber + (index - content.deletions) : void 0 : index < content.additions ? additionLineNumber + index : void 0;\n\tconst noEOFCRDeletion = diffStyle === \"unified\" ? isLastContent && index === content.deletions - 1 && hunk.noEOFCRDeletions : isLastContent && index === splitCount - 1 && hunk.noEOFCRDeletions;\n\tconst noEOFCRAddition = diffStyle === \"unified\" ? isLastContent && index === unifiedCount - 1 && hunk.noEOFCRAdditions : isLastContent && index === splitCount - 1 && hunk.noEOFCRAdditions;\n\tconst deletionLine = deletionLineIndexValue != null && deletionLineNumberValue != null && unifiedDeletionLineIndex != null ? {\n\t\tlineNumber: deletionLineNumberValue,\n\t\tlineIndex: deletionLineIndexValue,\n\t\tnoEOFCR: noEOFCRDeletion,\n\t\tunifiedLineIndex: unifiedDeletionLineIndex,\n\t\tsplitLineIndex: resolvedSplitLineIndex\n\t} : void 0;\n\tconst additionLine = additionLineIndexValue != null && additionLineNumberValue != null && unifiedAdditionLineIndex != null ? {\n\t\tunifiedLineIndex: unifiedAdditionLineIndex,\n\t\tsplitLineIndex: resolvedSplitLineIndex,\n\t\tlineIndex: additionLineIndexValue,\n\t\tlineNumber: additionLineNumberValue,\n\t\tnoEOFCR: noEOFCRAddition\n\t} : void 0;\n\tif (deletionLine == null && additionLine != null) return {\n\t\ttype: \"change\",\n\t\thunkIndex,\n\t\thunk,\n\t\tcollapsedAfter,\n\t\tcollapsedBefore,\n\t\tdeletionLine: void 0,\n\t\tadditionLine\n\t};\n\telse if (deletionLine != null && additionLine == null) return {\n\t\ttype: \"change\",\n\t\thunkIndex,\n\t\thunk,\n\t\tcollapsedAfter,\n\t\tcollapsedBefore,\n\t\tdeletionLine,\n\t\tadditionLine: void 0\n\t};\n\tif (deletionLine == null || additionLine == null) throw new Error(\"iterateOverDiff: missing change line data\");\n\treturn {\n\t\ttype: \"change\",\n\t\thunkIndex,\n\t\thunk,\n\t\tcollapsedAfter,\n\t\tcollapsedBefore,\n\t\tdeletionLine,\n\t\tadditionLine\n\t};\n}\n//#endregion\nexport { iterateOverDiff };\n\n//# sourceMappingURL=iterateOverDiff.js.map","export default class Diff {\n diff(oldStr, newStr, \n // Type below is not accurate/complete - see above for full possibilities - but it compiles\n options = {}) {\n let callback;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n else if ('callback' in options) {\n callback = options.callback;\n }\n // Allow subclasses to massage the input prior to running\n const oldString = this.castInput(oldStr, options);\n const newString = this.castInput(newStr, options);\n const oldTokens = this.removeEmpty(this.tokenize(oldString, options));\n const newTokens = this.removeEmpty(this.tokenize(newString, options));\n return this.diffWithOptionsObj(oldTokens, newTokens, options, callback);\n }\n diffWithOptionsObj(oldTokens, newTokens, options, callback) {\n var _a;\n const done = (value) => {\n value = this.postProcess(value, options);\n if (callback) {\n setTimeout(function () { callback(value); }, 0);\n return undefined;\n }\n else {\n return value;\n }\n };\n const newLen = newTokens.length, oldLen = oldTokens.length;\n let editLength = 1;\n let maxEditLength = newLen + oldLen;\n if (options.maxEditLength != null) {\n maxEditLength = Math.min(maxEditLength, options.maxEditLength);\n }\n const maxExecutionTime = (_a = options.timeout) !== null && _a !== void 0 ? _a : Infinity;\n const abortAfterTimestamp = Date.now() + maxExecutionTime;\n const bestPath = [{ oldPos: -1, lastComponent: undefined }];\n // Seed editLength = 0, i.e. the content starts with the same values\n let newPos = this.extractCommon(bestPath[0], newTokens, oldTokens, 0, options);\n if (bestPath[0].oldPos + 1 >= oldLen && newPos + 1 >= newLen) {\n // Identity per the equality and tokenizer\n return done(this.buildValues(bestPath[0].lastComponent, newTokens, oldTokens));\n }\n // Once we hit the right edge of the edit graph on some diagonal k, we can\n // definitely reach the end of the edit graph in no more than k edits, so\n // there's no point in considering any moves to diagonal k+1 any more (from\n // which we're guaranteed to need at least k+1 more edits).\n // Similarly, once we've reached the bottom of the edit graph, there's no\n // point considering moves to lower diagonals.\n // We record this fact by setting minDiagonalToConsider and\n // maxDiagonalToConsider to some finite value once we've hit the edge of\n // the edit graph.\n // This optimization is not faithful to the original algorithm presented in\n // Myers's paper, which instead pointlessly extends D-paths off the end of\n // the edit graph - see page 7 of Myers's paper which notes this point\n // explicitly and illustrates it with a diagram. This has major performance\n // implications for some common scenarios. For instance, to compute a diff\n // where the new text simply appends d characters on the end of the\n // original text of length n, the true Myers algorithm will take O(n+d^2)\n // time while this optimization needs only O(n+d) time.\n let minDiagonalToConsider = -Infinity, maxDiagonalToConsider = Infinity;\n // Main worker method. checks all permutations of a given edit length for acceptance.\n const execEditLength = () => {\n for (let diagonalPath = Math.max(minDiagonalToConsider, -editLength); diagonalPath <= Math.min(maxDiagonalToConsider, editLength); diagonalPath += 2) {\n let basePath;\n const removePath = bestPath[diagonalPath - 1], addPath = bestPath[diagonalPath + 1];\n if (removePath) {\n // No one else is going to attempt to use this value, clear it\n // @ts-expect-error - perf optimisation. This type-violating value will never be read.\n bestPath[diagonalPath - 1] = undefined;\n }\n let canAdd = false;\n if (addPath) {\n // what newPos will be after we do an insertion:\n const addPathNewPos = addPath.oldPos - diagonalPath;\n canAdd = addPath && 0 <= addPathNewPos && addPathNewPos < newLen;\n }\n const canRemove = removePath && removePath.oldPos + 1 < oldLen;\n if (!canAdd && !canRemove) {\n // If this path is a terminal then prune\n // @ts-expect-error - perf optimisation. This type-violating value will never be read.\n bestPath[diagonalPath] = undefined;\n continue;\n }\n // Select the diagonal that we want to branch from. We select the prior\n // path whose position in the old string is the farthest from the origin\n // and does not pass the bounds of the diff graph\n if (!canRemove || (canAdd && removePath.oldPos < addPath.oldPos)) {\n basePath = this.addToPath(addPath, true, false, 0, options);\n }\n else {\n basePath = this.addToPath(removePath, false, true, 1, options);\n }\n newPos = this.extractCommon(basePath, newTokens, oldTokens, diagonalPath, options);\n if (basePath.oldPos + 1 >= oldLen && newPos + 1 >= newLen) {\n // If we have hit the end of both strings, then we are done\n return done(this.buildValues(basePath.lastComponent, newTokens, oldTokens)) || true;\n }\n else {\n bestPath[diagonalPath] = basePath;\n if (basePath.oldPos + 1 >= oldLen) {\n maxDiagonalToConsider = Math.min(maxDiagonalToConsider, diagonalPath - 1);\n }\n if (newPos + 1 >= newLen) {\n minDiagonalToConsider = Math.max(minDiagonalToConsider, diagonalPath + 1);\n }\n }\n }\n editLength++;\n };\n // Performs the length of edit iteration. Is a bit fugly as this has to support the\n // sync and async mode which is never fun. Loops over execEditLength until a value\n // is produced, or until the edit length exceeds options.maxEditLength (if given),\n // in which case it will return undefined.\n if (callback) {\n (function exec() {\n setTimeout(function () {\n if (editLength > maxEditLength || Date.now() > abortAfterTimestamp) {\n return callback(undefined);\n }\n if (!execEditLength()) {\n exec();\n }\n }, 0);\n }());\n }\n else {\n while (editLength <= maxEditLength && Date.now() <= abortAfterTimestamp) {\n const ret = execEditLength();\n if (ret) {\n return ret;\n }\n }\n }\n }\n addToPath(path, added, removed, oldPosInc, options) {\n const last = path.lastComponent;\n if (last && !options.oneChangePerToken && last.added === added && last.removed === removed) {\n return {\n oldPos: path.oldPos + oldPosInc,\n lastComponent: { count: last.count + 1, added: added, removed: removed, previousComponent: last.previousComponent }\n };\n }\n else {\n return {\n oldPos: path.oldPos + oldPosInc,\n lastComponent: { count: 1, added: added, removed: removed, previousComponent: last }\n };\n }\n }\n extractCommon(basePath, newTokens, oldTokens, diagonalPath, options) {\n const newLen = newTokens.length, oldLen = oldTokens.length;\n let oldPos = basePath.oldPos, newPos = oldPos - diagonalPath, commonCount = 0;\n while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(oldTokens[oldPos + 1], newTokens[newPos + 1], options)) {\n newPos++;\n oldPos++;\n commonCount++;\n if (options.oneChangePerToken) {\n basePath.lastComponent = { count: 1, previousComponent: basePath.lastComponent, added: false, removed: false };\n }\n }\n if (commonCount && !options.oneChangePerToken) {\n basePath.lastComponent = { count: commonCount, previousComponent: basePath.lastComponent, added: false, removed: false };\n }\n basePath.oldPos = oldPos;\n return newPos;\n }\n equals(left, right, options) {\n if (options.comparator) {\n return options.comparator(left, right);\n }\n else {\n return left === right\n || (!!options.ignoreCase && left.toLowerCase() === right.toLowerCase());\n }\n }\n removeEmpty(array) {\n const ret = [];\n for (let i = 0; i < array.length; i++) {\n if (array[i]) {\n ret.push(array[i]);\n }\n }\n return ret;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n castInput(value, options) {\n return value;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n tokenize(value, options) {\n return Array.from(value);\n }\n join(chars) {\n // Assumes ValueT is string, which is the case for most subclasses.\n // When it's false, e.g. in diffArrays, this method needs to be overridden (e.g. with a no-op)\n // Yes, the casts are verbose and ugly, because this pattern - of having the base class SORT OF\n // assume tokens and values are strings, but not completely - is weird and janky.\n return chars.join('');\n }\n postProcess(changeObjects, \n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n options) {\n return changeObjects;\n }\n get useLongestToken() {\n return false;\n }\n buildValues(lastComponent, newTokens, oldTokens) {\n // First we convert our linked list of components in reverse order to an\n // array in the right order:\n const components = [];\n let nextComponent;\n while (lastComponent) {\n components.push(lastComponent);\n nextComponent = lastComponent.previousComponent;\n delete lastComponent.previousComponent;\n lastComponent = nextComponent;\n }\n components.reverse();\n const componentLen = components.length;\n let componentPos = 0, newPos = 0, oldPos = 0;\n for (; componentPos < componentLen; componentPos++) {\n const component = components[componentPos];\n if (!component.removed) {\n if (!component.added && this.useLongestToken) {\n let value = newTokens.slice(newPos, newPos + component.count);\n value = value.map(function (value, i) {\n const oldValue = oldTokens[oldPos + i];\n return oldValue.length > value.length ? oldValue : value;\n });\n component.value = this.join(value);\n }\n else {\n component.value = this.join(newTokens.slice(newPos, newPos + component.count));\n }\n newPos += component.count;\n // Common case\n if (!component.added) {\n oldPos += component.count;\n }\n }\n else {\n component.value = this.join(oldTokens.slice(oldPos, oldPos + component.count));\n oldPos += component.count;\n }\n }\n return components;\n }\n}\n","import Diff from './base.js';\nclass CharacterDiff extends Diff {\n}\nexport const characterDiff = new CharacterDiff();\nexport function diffChars(oldStr, newStr, options) {\n return characterDiff.diff(oldStr, newStr, options);\n}\n","export function longestCommonPrefix(str1, str2) {\n let i;\n for (i = 0; i < str1.length && i < str2.length; i++) {\n if (str1[i] != str2[i]) {\n return str1.slice(0, i);\n }\n }\n return str1.slice(0, i);\n}\nexport function longestCommonSuffix(str1, str2) {\n let i;\n // Unlike longestCommonPrefix, we need a special case to handle all scenarios\n // where we return the empty string since str1.slice(-0) will return the\n // entire string.\n if (!str1 || !str2 || str1[str1.length - 1] != str2[str2.length - 1]) {\n return '';\n }\n for (i = 0; i < str1.length && i < str2.length; i++) {\n if (str1[str1.length - (i + 1)] != str2[str2.length - (i + 1)]) {\n return str1.slice(-i);\n }\n }\n return str1.slice(-i);\n}\nexport function replacePrefix(string, oldPrefix, newPrefix) {\n if (string.slice(0, oldPrefix.length) != oldPrefix) {\n throw Error(`string ${JSON.stringify(string)} doesn't start with prefix ${JSON.stringify(oldPrefix)}; this is a bug`);\n }\n return newPrefix + string.slice(oldPrefix.length);\n}\nexport function replaceSuffix(string, oldSuffix, newSuffix) {\n if (!oldSuffix) {\n return string + newSuffix;\n }\n if (string.slice(-oldSuffix.length) != oldSuffix) {\n throw Error(`string ${JSON.stringify(string)} doesn't end with suffix ${JSON.stringify(oldSuffix)}; this is a bug`);\n }\n return string.slice(0, -oldSuffix.length) + newSuffix;\n}\nexport function removePrefix(string, oldPrefix) {\n return replacePrefix(string, oldPrefix, '');\n}\nexport function removeSuffix(string, oldSuffix) {\n return replaceSuffix(string, oldSuffix, '');\n}\nexport function maximumOverlap(string1, string2) {\n return string2.slice(0, overlapCount(string1, string2));\n}\n// Nicked from https://stackoverflow.com/a/60422853/1709587\nfunction overlapCount(a, b) {\n // Deal with cases where the strings differ in length\n let startA = 0;\n if (a.length > b.length) {\n startA = a.length - b.length;\n }\n let endB = b.length;\n if (a.length < b.length) {\n endB = a.length;\n }\n // Create a back-reference for each index\n // that should be followed in case of a mismatch.\n // We only need B to make these references:\n const map = Array(endB);\n let k = 0; // Index that lags behind j\n map[0] = 0;\n for (let j = 1; j < endB; j++) {\n if (b[j] == b[k]) {\n map[j] = map[k]; // skip over the same character (optional optimisation)\n }\n else {\n map[j] = k;\n }\n while (k > 0 && b[j] != b[k]) {\n k = map[k];\n }\n if (b[j] == b[k]) {\n k++;\n }\n }\n // Phase 2: use these references while iterating over A\n k = 0;\n for (let i = startA; i < a.length; i++) {\n while (k > 0 && a[i] != b[k]) {\n k = map[k];\n }\n if (a[i] == b[k]) {\n k++;\n }\n }\n return k;\n}\n/**\n * Returns true if the string consistently uses Windows line endings.\n */\nexport function hasOnlyWinLineEndings(string) {\n return string.includes('\\r\\n') && !string.startsWith('\\n') && !string.match(/[^\\r]\\n/);\n}\n/**\n * Returns true if the string consistently uses Unix line endings.\n */\nexport function hasOnlyUnixLineEndings(string) {\n return !string.includes('\\r\\n') && string.includes('\\n');\n}\n/**\n * Split a string into segments using a word segmenter, merging consecutive\n * segments if they are both whitespace segments. Whitespace segments can\n * appear adjacent to one another for two reasons:\n * - newlines always get their own segment\n * - where a diacritic is attached to a whitespace character in the text, the\n * segment ends after the diacritic, so e.g. \" \\u0300 \" becomes two segments.\n * This function therefore runs the segmenter's .segment() method and then\n * merges consecutive segments of whitespace into a single part.\n */\nexport function segment(string, segmenter) {\n const parts = [];\n for (const segmentObj of Array.from(segmenter.segment(string))) {\n const segment = segmentObj.segment;\n if (parts.length && (/\\s/).test(parts[parts.length - 1]) && (/\\s/).test(segment)) {\n parts[parts.length - 1] += segment;\n }\n else {\n parts.push(segment);\n }\n }\n return parts;\n}\n// The functions below take a `segmenter` argument so that, when called from\n// diffWords when it is using a segmenter, they can use a notion of what\n// constitutes \"whitespace\" that is consistent with the segmenter.\n//\n// USUALLY this will be identical to the result of the non-segmenter-based\n// logic, but it differs in at least one case: when whitespace characters are\n// modified by diacritics. A word segmenter considers these diacritics to be\n// part of the whitespace, whereas our non-segmenter-based logic does not.\n//\n// Because the segmenter-based approach necessarily requires segmenting the\n// entire string, we offer a leadingAndTrailingWs function to allow getting the\n// whitespace prefix AND whitespace suffix with a single call to the segmenter,\n// for efficiency's sake.\nexport function trailingWs(string, segmenter) {\n if (segmenter) {\n return leadingAndTrailingWs(string, segmenter)[1];\n }\n // Yes, this looks overcomplicated and dumb - why not replace the whole function with\n // return string.match(/\\s*$/)[0]\n // you ask? Because:\n // 1. the trap described at https://markamery.com/blog/quadratic-time-regexes/ would mean doing\n // this would cause this function to take O(n²) time in the worst case (specifically when\n // there is a massive run of NON-TRAILING whitespace in `string`), and\n // 2. the fix proposed in the same blog post, of using a negative lookbehind, is incompatible\n // with old Safari versions that we'd like to not break if possible (see\n // https://github.com/kpdecker/jsdiff/pull/550)\n // It feels absurd to do this with an explicit loop instead of a regex, but I really can't see a\n // better way that doesn't result in broken behaviour.\n let i;\n for (i = string.length - 1; i >= 0; i--) {\n if (!string[i].match(/\\s/)) {\n break;\n }\n }\n return string.substring(i + 1);\n}\nexport function leadingWs(string, segmenter) {\n if (segmenter) {\n return leadingAndTrailingWs(string, segmenter)[0];\n }\n // Thankfully the annoying considerations described in trailingWs don't apply here:\n const match = string.match(/^\\s*/);\n return match ? match[0] : '';\n}\nexport function leadingAndTrailingWs(string, segmenter) {\n if (!segmenter) {\n return [leadingWs(string), trailingWs(string)];\n }\n if (segmenter.resolvedOptions().granularity != 'word') {\n throw new Error('The segmenter passed must have a granularity of \"word\"');\n }\n const segments = segment(string, segmenter);\n const firstSeg = segments[0];\n const lastSeg = segments[segments.length - 1];\n const head = (/\\s/).test(firstSeg) ? firstSeg : '';\n const tail = (/\\s/).test(lastSeg) ? lastSeg : '';\n return [head, tail];\n}\n","import Diff from './base.js';\nimport { longestCommonPrefix, longestCommonSuffix, replacePrefix, replaceSuffix, removePrefix, removeSuffix, maximumOverlap, leadingWs, trailingWs, leadingAndTrailingWs, segment } from '../util/string.js';\n// Based on https://en.wikipedia.org/wiki/Latin_script_in_Unicode\n//\n// Chars/ranges counted as \"word\" characters by this regex are as follows:\n//\n// + U+00AD Soft hyphen\n// + 00C0–00FF (letters with diacritics from the Latin-1 Supplement), except:\n// - U+00D7 × Multiplication sign\n// - U+00F7 ÷ Division sign\n// + Latin Extended-A, 0100–017F\n// + Latin Extended-B, 0180–024F\n// + IPA Extensions, 0250–02AF\n// + Spacing Modifier Letters, 02B0–02FF, except:\n// - U+02C7 ˇ &#711; Caron\n// - U+02D8 ˘ &#728; Breve\n// - U+02D9 ˙ &#729; Dot Above\n// - U+02DA ˚ &#730; Ring Above\n// - U+02DB ˛ &#731; Ogonek\n// - U+02DC ˜ &#732; Small Tilde\n// - U+02DD ˝ &#733; Double Acute Accent\n// + Latin Extended Additional, 1E00–1EFF\nconst extendedWordChars = 'a-zA-Z0-9_\\\\u{AD}\\\\u{C0}-\\\\u{D6}\\\\u{D8}-\\\\u{F6}\\\\u{F8}-\\\\u{2C6}\\\\u{2C8}-\\\\u{2D7}\\\\u{2DE}-\\\\u{2FF}\\\\u{1E00}-\\\\u{1EFF}';\n// Each token is one of the following:\n// - A punctuation mark plus the surrounding whitespace\n// - A word plus the surrounding whitespace\n// - Pure whitespace (but only in the special case where the entire text\n// is just whitespace)\n//\n// We have to include surrounding whitespace in the tokens because the two\n// alternative approaches produce horribly broken results:\n// * If we just discard the whitespace, we can't fully reproduce the original\n// text from the sequence of tokens and any attempt to render the diff will\n// get the whitespace wrong.\n// * If we have separate tokens for whitespace, then in a typical text every\n// second token will be a single space character. But this often results in\n// the optimal diff between two texts being a perverse one that preserves\n// the spaces between words but deletes and reinserts actual common words.\n// See https://github.com/kpdecker/jsdiff/issues/160#issuecomment-1866099640\n// for an example.\n//\n// Keeping the surrounding whitespace of course has implications for .equals\n// and .join, not just .tokenize.\n// This regex does NOT fully implement the tokenization rules described above.\n// Instead, it gives runs of whitespace their own \"token\". The tokenize method\n// then handles stitching whitespace tokens onto adjacent word or punctuation\n// tokens.\nconst tokenizeIncludingWhitespace = new RegExp(`[${extendedWordChars}]+|\\\\s+|[^${extendedWordChars}]`, 'ug');\nclass WordDiff extends Diff {\n equals(left, right, options) {\n if (options.ignoreCase) {\n left = left.toLowerCase();\n right = right.toLowerCase();\n }\n return left.trim() === right.trim();\n }\n tokenize(value, options = {}) {\n let parts;\n if (options.intlSegmenter) {\n const segmenter = options.intlSegmenter;\n if (segmenter.resolvedOptions().granularity != 'word') {\n throw new Error('The segmenter passed must have a granularity of \"word\"');\n }\n // We want `parts` to be an array whose elements alternate between being\n // pure whitespace and being pure non-whitespace. This is ALMOST what the\n // segments returned by a word-based Intl.Segmenter already look like,\n // but not quite - see explanation in the docs of our custom segment()\n // function.\n parts = segment(value, segmenter);\n }\n else {\n parts = value.match(tokenizeIncludingWhitespace) || [];\n }\n const tokens = [];\n let prevPart = null;\n parts.forEach(part => {\n if ((/\\s/).test(part)) {\n if (prevPart == null) {\n tokens.push(part);\n }\n else {\n tokens.push(tokens.pop() + part);\n }\n }\n else if (prevPart != null && (/\\s/).test(prevPart)) {\n if (tokens[tokens.length - 1] == prevPart) {\n tokens.push(tokens.pop() + part);\n }\n else {\n tokens.push(prevPart + part);\n }\n }\n else {\n tokens.push(part);\n }\n prevPart = part;\n });\n return tokens;\n }\n join(tokens) {\n // Tokens being joined here will always have appeared consecutively in the\n // same text, so we can simply strip off the leading whitespace from all the\n // tokens except the first (and except any whitespace-only tokens - but such\n // a token will always be the first and only token anyway) and then join them\n // and the whitespace around words and punctuation will end up correct.\n return tokens.map((token, i) => {\n if (i == 0) {\n return token;\n }\n else {\n return token.replace((/^\\s+/), '');\n }\n }).join('');\n }\n postProcess(changes, options) {\n if (!changes || options.oneChangePerToken) {\n return changes;\n }\n let lastKeep = null;\n // Change objects representing any insertion or deletion since the last\n // \"keep\" change object. There can be at most one of each.\n let insertion = null;\n let deletion = null;\n changes.forEach(change => {\n if (change.added) {\n insertion = change;\n }\n else if (change.removed) {\n deletion = change;\n }\n else {\n if (insertion || deletion) { // May be false at start of text\n dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, change, options.intlSegmenter);\n }\n lastKeep = change;\n insertion = null;\n deletion = null;\n }\n });\n if (insertion || deletion) {\n dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, null, options.intlSegmenter);\n }\n return changes;\n }\n}\nexport const wordDiff = new WordDiff();\nexport function diffWords(oldStr, newStr, options) {\n // This option has never been documented and never will be (it's clearer to\n // just call `diffWordsWithSpace` directly if you need that behavior), but\n // has existed in jsdiff for a long time, so we retain support for it here\n // for the sake of backwards compatibility.\n if ((options === null || options === void 0 ? void 0 : options.ignoreWhitespace) != null && !options.ignoreWhitespace) {\n return diffWordsWithSpace(oldStr, newStr, options);\n }\n return wordDiff.diff(oldStr, newStr, options);\n}\nfunction dedupeWhitespaceInChangeObjects(startKeep, deletion, insertion, endKeep, segmenter) {\n // Before returning, we tidy up the leading and trailing whitespace of the\n // change objects to eliminate cases where trailing whitespace in one object\n // is repeated as leading whitespace in the next.\n // Below are examples of the outcomes we want here to explain the code.\n // I=insert, K=keep, D=delete\n // 1. diffing 'foo bar baz' vs 'foo baz'\n // Prior to cleanup, we have K:'foo ' D:' bar ' K:' baz'\n // After cleanup, we want: K:'foo ' D:'bar ' K:'baz'\n //\n // 2. Diffing 'foo bar baz' vs 'foo qux baz'\n // Prior to cleanup, we have K:'foo ' D:' bar ' I:' qux ' K:' baz'\n // After cleanup, we want K:'foo ' D:'bar' I:'qux' K:' baz'\n //\n // 3. Diffing 'foo\\nbar baz' vs 'foo baz'\n // Prior to cleanup, we have K:'foo ' D:'\\nbar ' K:' baz'\n // After cleanup, we want K'foo' D:'\\nbar' K:' baz'\n //\n // 4. Diffing 'foo baz' vs 'foo\\nbar baz'\n // Prior to cleanup, we have K:'foo\\n' I:'\\nbar ' K:' baz'\n // After cleanup, we ideally want K'foo' I:'\\nbar' K:' baz'\n // but don't actually manage this currently (the pre-cleanup change\n // objects don't contain enough information to make it possible).\n //\n // 5. Diffing 'foo bar baz' vs 'foo baz'\n // Prior to cleanup, we have K:'foo ' D:' bar ' K:' baz'\n // After cleanup, we want K:'foo ' D:' bar ' K:'baz'\n //\n // Our handling is unavoidably imperfect in the case where there's a single\n // indel between keeps and the whitespace has changed. For instance, consider\n // diffing 'foo\\tbar\\nbaz' vs 'foo baz'. Unless we create an extra change\n // object to represent the insertion of the space character (which isn't even\n // a token), we have no way to avoid losing information about the texts'\n // original whitespace in the result we return. Still, we do our best to\n // output something that will look sensible if we e.g. print it with\n // insertions in green and deletions in red.\n // Between two \"keep\" change objects (or before the first or after the last\n // change object), we can have either:\n // * A \"delete\" followed by an \"insert\"\n // * Just an \"insert\"\n // * Just a \"delete\"\n // We handle the three cases separately.\n if (deletion && insertion) {\n const [oldWsPrefix, oldWsSuffix] = leadingAndTrailingWs(deletion.value, segmenter);\n const [newWsPrefix, newWsSuffix] = leadingAndTrailingWs(insertion.value, segmenter);\n if (startKeep) {\n const commonWsPrefix = longestCommonPrefix(oldWsPrefix, newWsPrefix);\n startKeep.value = replaceSuffix(startKeep.value, newWsPrefix, commonWsPrefix);\n deletion.value = removePrefix(deletion.value, commonWsPrefix);\n insertion.value = removePrefix(insertion.value, commonWsPrefix);\n }\n if (endKeep) {\n const commonWsSuffix = longestCommonSuffix(oldWsSuffix, newWsSuffix);\n endKeep.value = replacePrefix(endKeep.value, newWsSuffix, commonWsSuffix);\n deletion.value = removeSuffix(deletion.value, commonWsSuffix);\n insertion.value = removeSuffix(insertion.value, commonWsSuffix);\n }\n }\n else if (insertion) {\n // The whitespaces all reflect what was in the new text rather than\n // the old, so we essentially have no information about whitespace\n // insertion or deletion. We just want to dedupe the whitespace.\n // We do that by having each change object keep its trailing\n // whitespace and deleting duplicate leading whitespace where\n // present.\n if (startKeep) {\n const ws = leadingWs(insertion.value, segmenter);\n insertion.value = insertion.value.substring(ws.length);\n }\n if (endKeep) {\n const ws = leadingWs(endKeep.value, segmenter);\n endKeep.value = endKeep.value.substring(ws.length);\n }\n // otherwise we've got a deletion and no insertion\n }\n else if (startKeep && endKeep) {\n const newWsFull = leadingWs(endKeep.value, segmenter), [delWsStart, delWsEnd] = leadingAndTrailingWs(deletion.value, segmenter);\n // Any whitespace that comes straight after startKeep in both the old and\n // new texts, assign to startKeep and remove from the deletion.\n const newWsStart = longestCommonPrefix(newWsFull, delWsStart);\n deletion.value = removePrefix(deletion.value, newWsStart);\n // Any whitespace that comes straight before endKeep in both the old and\n // new texts, and hasn't already been assigned to startKeep, assign to\n // endKeep and remove from the deletion.\n const newWsEnd = longestCommonSuffix(removePrefix(newWsFull, newWsStart), delWsEnd);\n deletion.value = removeSuffix(deletion.value, newWsEnd);\n endKeep.value = replacePrefix(endKeep.value, newWsFull, newWsEnd);\n // If there's any whitespace from the new text that HASN'T already been\n // assigned, assign it to the start:\n startKeep.value = replaceSuffix(startKeep.value, newWsFull, newWsFull.slice(0, newWsFull.length - newWsEnd.length));\n }\n else if (endKeep) {\n // We are at the start of the text. Preserve all the whitespace on\n // endKeep, and just remove whitespace from the end of deletion to the\n // extent that it overlaps with the start of endKeep.\n const endKeepWsPrefix = leadingWs(endKeep.value, segmenter);\n const deletionWsSuffix = trailingWs(deletion.value, segmenter);\n const overlap = maximumOverlap(deletionWsSuffix, endKeepWsPrefix);\n deletion.value = removeSuffix(deletion.value, overlap);\n }\n else if (startKeep) {\n // We are at the END of the text. Preserve all the whitespace on\n // startKeep, and just remove whitespace from the start of deletion to\n // the extent that it overlaps with the end of startKeep.\n const startKeepWsSuffix = trailingWs(startKeep.value, segmenter);\n const deletionWsPrefix = leadingWs(deletion.value, segmenter);\n const overlap = maximumOverlap(startKeepWsSuffix, deletionWsPrefix);\n deletion.value = removePrefix(deletion.value, overlap);\n }\n}\nclass WordsWithSpaceDiff extends Diff {\n tokenize(value) {\n // Slightly different to the tokenizeIncludingWhitespace regex used above in\n // that this one treats each individual newline as a distinct token, rather\n // than merging them into other surrounding whitespace. This was requested\n // in https://github.com/kpdecker/jsdiff/issues/180 &\n // https://github.com/kpdecker/jsdiff/issues/211\n const regex = new RegExp(`(\\\\r?\\\\n)|[${extendedWordChars}]+|[^\\\\S\\\\n\\\\r]+|[^${extendedWordChars}]`, 'ug');\n return value.match(regex) || [];\n }\n}\nexport const wordsWithSpaceDiff = new WordsWithSpaceDiff();\nexport function diffWordsWithSpace(oldStr, newStr, options) {\n return wordsWithSpaceDiff.diff(oldStr, newStr, options);\n}\n","import Diff from './base.js';\nimport { generateOptions } from '../util/params.js';\nclass LineDiff extends Diff {\n constructor() {\n super(...arguments);\n this.tokenize = tokenize;\n }\n equals(left, right, options) {\n // If we're ignoring whitespace, we need to normalise lines by stripping\n // whitespace before checking equality. (This has an annoying interaction\n // with newlineIsToken that requires special handling: if newlines get their\n // own token, then we DON'T want to trim the *newline* tokens down to empty\n // strings, since this would cause us to treat whitespace-only line content\n // as equal to a separator between lines, which would be weird and\n // inconsistent with the documented behavior of the options.)\n if (options.ignoreWhitespace) {\n if (!options.newlineIsToken || !left.includes('\\n')) {\n left = left.trim();\n }\n if (!options.newlineIsToken || !right.includes('\\n')) {\n right = right.trim();\n }\n }\n else if (options.ignoreNewlineAtEof && !options.newlineIsToken) {\n if (left.endsWith('\\n')) {\n left = left.slice(0, -1);\n }\n if (right.endsWith('\\n')) {\n right = right.slice(0, -1);\n }\n }\n return super.equals(left, right, options);\n }\n}\nexport const lineDiff = new LineDiff();\nexport function diffLines(oldStr, newStr, options) {\n return lineDiff.diff(oldStr, newStr, options);\n}\nexport function diffTrimmedLines(oldStr, newStr, options) {\n options = generateOptions(options, { ignoreWhitespace: true });\n return lineDiff.diff(oldStr, newStr, options);\n}\n// Exported standalone so it can be used from jsonDiff too.\nexport function tokenize(value, options) {\n if (options.stripTrailingCr) {\n // remove one \\r before \\n to match GNU diff's --strip-trailing-cr behavior\n value = value.replace(/\\r\\n/g, '\\n');\n }\n const retLines = [], linesAndNewlines = value.split(/(\\n|\\r\\n)/);\n // Ignore the final empty token that occurs if the string ends with a new line\n if (!linesAndNewlines[linesAndNewlines.length - 1]) {\n linesAndNewlines.pop();\n }\n // Merge the content and line separators into single tokens\n for (let i = 0; i < linesAndNewlines.length; i++) {\n const line = linesAndNewlines[i];\n if (i % 2 && !options.newlineIsToken) {\n retLines[retLines.length - 1] += line;\n }\n else {\n retLines.push(line);\n }\n }\n return retLines;\n}\n","import Diff from './base.js';\nfunction isSentenceEndPunct(char) {\n return char == '.' || char == '!' || char == '?';\n}\nclass SentenceDiff extends Diff {\n tokenize(value) {\n var _a;\n // If in future we drop support for environments that don't support lookbehinds, we can replace\n // this entire function with:\n // return value.split(/(?<=[.!?])(\\s+|$)/);\n // but until then, for similar reasons to the trailingWs function in string.ts, we are forced\n // to do this verbosely \"by hand\" instead of using a regex.\n const result = [];\n let tokenStartI = 0;\n for (let i = 0; i < value.length; i++) {\n if (i == value.length - 1) {\n result.push(value.slice(tokenStartI));\n break;\n }\n if (isSentenceEndPunct(value[i]) && value[i + 1].match(/\\s/)) {\n // We've hit a sentence break - i.e. a punctuation mark followed by whitespace.\n // We now want to push TWO tokens to the result:\n // 1. the sentence\n result.push(value.slice(tokenStartI, i + 1));\n // 2. the whitespace\n i = tokenStartI = i + 1;\n while ((_a = value[i + 1]) === null || _a === void 0 ? void 0 : _a.match(/\\s/)) {\n i++;\n }\n result.push(value.slice(tokenStartI, i + 1));\n // Then the next token (a sentence) starts on the character after the whitespace.\n // (It's okay if this is off the end of the string - then the outer loop will terminate\n // here anyway.)\n tokenStartI = i + 1;\n }\n }\n return result;\n }\n}\nexport const sentenceDiff = new SentenceDiff();\nexport function diffSentences(oldStr, newStr, options) {\n return sentenceDiff.diff(oldStr, newStr, options);\n}\n","import Diff from './base.js';\nclass CssDiff extends Diff {\n tokenize(value) {\n return value.split(/([{}:;,]|\\s+)/);\n }\n}\nexport const cssDiff = new CssDiff();\nexport function diffCss(oldStr, newStr, options) {\n return cssDiff.diff(oldStr, newStr, options);\n}\n","import Diff from './base.js';\nimport { tokenize } from './line.js';\nclass JsonDiff extends Diff {\n constructor() {\n super(...arguments);\n this.tokenize = tokenize;\n }\n get useLongestToken() {\n // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a\n // dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:\n return true;\n }\n castInput(value, options) {\n const { undefinedReplacement, stringifyReplacer = (k, v) => typeof v === 'undefined' ? undefinedReplacement : v } = options;\n return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), null, ' ');\n }\n equals(left, right, options) {\n return super.equals(left.replace(/,([\\r\\n])/g, '$1'), right.replace(/,([\\r\\n])/g, '$1'), options);\n }\n}\nexport const jsonDiff = new JsonDiff();\nexport function diffJson(oldStr, newStr, options) {\n return jsonDiff.diff(oldStr, newStr, options);\n}\n// This function handles the presence of circular references by bailing out when encountering an\n// object that is already on the \"stack\" of items being processed. Accepts an optional replacer\nexport function canonicalize(obj, stack, replacementStack, replacer, key) {\n stack = stack || [];\n replacementStack = replacementStack || [];\n if (replacer) {\n obj = replacer(key === undefined ? '' : key, obj);\n }\n let i;\n for (i = 0; i < stack.length; i += 1) {\n if (stack[i] === obj) {\n return replacementStack[i];\n }\n }\n let canonicalizedObj;\n if ('[object Array]' === Object.prototype.toString.call(obj)) {\n stack.push(obj);\n canonicalizedObj = new Array(obj.length);\n replacementStack.push(canonicalizedObj);\n for (i = 0; i < obj.length; i += 1) {\n canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, String(i));\n }\n stack.pop();\n replacementStack.pop();\n return canonicalizedObj;\n }\n if (obj && obj.toJSON) {\n obj = obj.toJSON();\n }\n if (typeof obj === 'object' && obj !== null) {\n stack.push(obj);\n canonicalizedObj = {};\n replacementStack.push(canonicalizedObj);\n const sortedKeys = [];\n let key;\n for (key in obj) {\n /* istanbul ignore else */\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n sortedKeys.push(key);\n }\n }\n sortedKeys.sort();\n for (i = 0; i < sortedKeys.length; i += 1) {\n key = sortedKeys[i];\n canonicalizedObj[key] = canonicalize(obj[key], stack, replacementStack, replacer, key);\n }\n stack.pop();\n replacementStack.pop();\n }\n else {\n canonicalizedObj = obj;\n }\n return canonicalizedObj;\n}\n","import Diff from './base.js';\nclass ArrayDiff extends Diff {\n tokenize(value) {\n return value.slice();\n }\n join(value) {\n return value;\n }\n removeEmpty(value) {\n return value;\n }\n}\nexport const arrayDiff = new ArrayDiff();\nexport function diffArrays(oldArr, newArr, options) {\n return arrayDiff.diff(oldArr, newArr, options);\n}\n","import { diffLines } from '../diff/line.js';\n/**\n * Returns true if the filename contains characters that require C-style\n * quoting (as used by Git and GNU diffutils in diff output).\n */\nfunction needsQuoting(s) {\n for (let i = 0; i < s.length; i++) {\n if (s[i] < '\\x20' || s[i] > '\\x7e' || s[i] === '\"' || s[i] === '\\\\') {\n return true;\n }\n }\n return false;\n}\n/**\n * C-style quotes a filename, encoding special characters as escape sequences\n * and non-ASCII bytes as octal escapes. This is the inverse of\n * `parseQuotedFileName` in parse.ts.\n *\n * Non-ASCII bytes are encoded as UTF-8 before being emitted as octal escapes.\n * This matches the behaviour of both Git and GNU diffutils, which always emit\n * UTF-8 octal escapes regardless of the underlying filesystem encoding (e.g.\n * Git for Windows converts from NTFS's UTF-16 to UTF-8 internally).\n *\n * If the filename doesn't need quoting, returns it as-is.\n */\nfunction quoteFileNameIfNeeded(s) {\n if (!needsQuoting(s)) {\n return s;\n }\n let result = '\"';\n const bytes = new TextEncoder().encode(s);\n let i = 0;\n while (i < bytes.length) {\n const b = bytes[i];\n // See https://en.wikipedia.org/wiki/Escape_sequences_in_C#Escape_sequences\n if (b === 0x07) {\n result += '\\\\a';\n }\n else if (b === 0x08) {\n result += '\\\\b';\n }\n else if (b === 0x09) {\n result += '\\\\t';\n }\n else if (b === 0x0a) {\n result += '\\\\n';\n }\n else if (b === 0x0b) {\n result += '\\\\v';\n }\n else if (b === 0x0c) {\n result += '\\\\f';\n }\n else if (b === 0x0d) {\n result += '\\\\r';\n }\n else if (b === 0x22) {\n result += '\\\\\"';\n }\n else if (b === 0x5c) {\n result += '\\\\\\\\';\n }\n else if (b >= 0x20 && b <= 0x7e) {\n // Just a printable ASCII character that is neither a double quote nor a\n // backslash; no need to escape it.\n result += String.fromCharCode(b);\n }\n else {\n // Either part of a non-ASCII character or a control character without a\n // special escape sequence; needs escaping as a 3-digit octal escape\n result += '\\\\' + b.toString(8).padStart(3, '0');\n }\n i++;\n }\n result += '\"';\n return result;\n}\nexport const INCLUDE_HEADERS = {\n includeIndex: true,\n includeUnderline: true,\n includeFileHeaders: true\n};\nexport const FILE_HEADERS_ONLY = {\n includeIndex: false,\n includeUnderline: false,\n includeFileHeaders: true\n};\nexport const OMIT_HEADERS = {\n includeIndex: false,\n includeUnderline: false,\n includeFileHeaders: false\n};\nexport function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n let optionsObj;\n if (!options) {\n optionsObj = {};\n }\n else if (typeof options === 'function') {\n optionsObj = { callback: options };\n }\n else {\n optionsObj = options;\n }\n if (typeof optionsObj.context === 'undefined') {\n optionsObj.context = 4;\n }\n // We copy this into its own variable to placate TypeScript, which thinks\n // optionsObj.context might be undefined in the callbacks below.\n const context = optionsObj.context;\n // @ts-expect-error (runtime check for something that is correctly a static type error)\n if (optionsObj.newlineIsToken) {\n throw new Error('newlineIsToken may not be used with patch-generation functions, only with diffing functions');\n }\n if (!optionsObj.callback) {\n return diffLinesResultToPatch(diffLines(oldStr, newStr, optionsObj));\n }\n else {\n const { callback } = optionsObj;\n diffLines(oldStr, newStr, Object.assign(Object.assign({}, optionsObj), { callback: (diff) => {\n const patch = diffLinesResultToPatch(diff);\n // TypeScript is unhappy without the cast because it does not understand that `patch` may\n // be undefined here only if `callback` is StructuredPatchCallbackAbortable:\n callback(patch);\n } }));\n }\n function diffLinesResultToPatch(diff) {\n // STEP 1: Build up the patch with no \"\\" lines and with the arrays\n // of lines containing trailing newline characters. We'll tidy up later...\n if (!diff) {\n return;\n }\n diff.push({ value: '', lines: [] }); // Append an empty value to make cleanup easier\n function contextLines(lines) {\n return lines.map(function (entry) { return ' ' + entry; });\n }\n const hunks = [];\n let oldRangeStart = 0, newRangeStart = 0, curRange = [], oldLine = 1, newLine = 1;\n for (let i = 0; i < diff.length; i++) {\n const current = diff[i], lines = current.lines || splitLines(current.value);\n current.lines = lines;\n if (current.added || current.removed) {\n // If we have previous context, start with that\n if (!oldRangeStart) {\n const prev = diff[i - 1];\n oldRangeStart = oldLine;\n newRangeStart = newLine;\n if (prev) {\n curRange = context > 0 ? contextLines(prev.lines.slice(-context)) : [];\n oldRangeStart -= curRange.length;\n newRangeStart -= curRange.length;\n }\n }\n // Output our changes\n for (const line of lines) {\n curRange.push((current.added ? '+' : '-') + line);\n }\n // Track the updated file position\n if (current.added) {\n newLine += lines.length;\n }\n else {\n oldLine += lines.length;\n }\n }\n else {\n // Identical context lines. Track line changes\n if (oldRangeStart) {\n // Close out any changes that have been output (or join overlapping)\n if (lines.length <= context * 2 && i < diff.length - 2) {\n // Overlapping\n for (const line of contextLines(lines)) {\n curRange.push(line);\n }\n }\n else {\n // end the range and output\n const contextSize = Math.min(lines.length, context);\n for (const line of contextLines(lines.slice(0, contextSize))) {\n curRange.push(line);\n }\n const hunk = {\n oldStart: oldRangeStart,\n oldLines: (oldLine - oldRangeStart + contextSize),\n newStart: newRangeStart,\n newLines: (newLine - newRangeStart + contextSize),\n lines: curRange\n };\n hunks.push(hunk);\n oldRangeStart = 0;\n newRangeStart = 0;\n curRange = [];\n }\n }\n oldLine += lines.length;\n newLine += lines.length;\n }\n }\n // Step 2: eliminate the trailing `\\n` from each line of each hunk, and, where needed, add\n // \"\\".\n for (const hunk of hunks) {\n for (let i = 0; i < hunk.lines.length; i++) {\n if (hunk.lines[i].endsWith('\\n')) {\n hunk.lines[i] = hunk.lines[i].slice(0, -1);\n }\n else {\n hunk.lines.splice(i + 1, 0, '\\\');\n i++; // Skip the line we just added, then continue iterating\n }\n }\n }\n return {\n oldFileName: oldFileName, newFileName: newFileName,\n oldHeader: oldHeader, newHeader: newHeader,\n hunks: hunks\n };\n }\n}\n/**\n * creates a unified diff patch.\n *\n * @param patch either a single structured patch object (as returned by `structuredPatch`) or an\n * array of them (as returned by `parsePatch`).\n * @param headerOptions behaves the same as the `headerOptions` option of `createTwoFilesPatch`.\n * Ignored for patches where `isGit` is `true`.\n *\n * When a patch has `isGit: true`, `formatPatch` output is changed to more closely match Git's\n * output: it emits a `diff --git` header, emits Git extended headers as appropriate based on\n * properties like `isRename`, `isCreate`, `newMode`, etc, and will omit `---`/`+++` file\n * headers for patches with no hunks (e.g. renames without content changes).\n */\nexport function formatPatch(patch, headerOptions) {\n var _a, _b, _c, _d, _e, _f;\n if (!headerOptions) {\n headerOptions = INCLUDE_HEADERS;\n }\n if (Array.isArray(patch)) {\n if (patch.length > 1 && !headerOptions.includeFileHeaders && !patch.every(p => p.isGit)) {\n throw new Error('Cannot omit file headers on a multi-file patch. '\n + '(The result would be unparseable; how would a tool trying to apply '\n + 'the patch know which changes are to which file?)');\n }\n return patch.map(p => formatPatch(p, headerOptions)).join('\\n');\n }\n const ret = [];\n // Git patches have a fixed header format (diff --git, extended headers,\n // and ---/+++ when hunks are present), so headerOptions is ignored.\n if (patch.isGit) {\n headerOptions = INCLUDE_HEADERS;\n // Emit Git-style diff --git header and extended headers.\n // Git never puts /dev/null in the \"diff --git\" line; for file\n // creations/deletions it uses the real filename on both sides.\n if (!patch.oldFileName) {\n throw new Error('oldFileName must be specified for Git patches');\n }\n if (!patch.newFileName) {\n throw new Error('newFileName must be specified for Git patches');\n }\n let gitOldName = patch.oldFileName;\n let gitNewName = patch.newFileName;\n if (patch.isCreate && gitOldName === '/dev/null') {\n gitOldName = gitNewName.replace(/^b\\//, 'a/');\n }\n else if (patch.isDelete && gitNewName === '/dev/null') {\n gitNewName = gitOldName.replace(/^a\\//, 'b/');\n }\n ret.push('diff --git ' + quoteFileNameIfNeeded(gitOldName) + ' ' + quoteFileNameIfNeeded(gitNewName));\n if (patch.isDelete) {\n ret.push('deleted file mode ' + ((_a = patch.oldMode) !== null && _a !== void 0 ? _a : '100644'));\n }\n if (patch.isCreate) {\n ret.push('new file mode ' + ((_b = patch.newMode) !== null && _b !== void 0 ? _b : '100644'));\n }\n if (patch.oldMode && patch.newMode && !patch.isDelete && !patch.isCreate) {\n ret.push('old mode ' + patch.oldMode);\n ret.push('new mode ' + patch.newMode);\n }\n if (patch.isRename) {\n ret.push('rename from ' + quoteFileNameIfNeeded(((_c = patch.oldFileName) !== null && _c !== void 0 ? _c : '').replace(/^a\\//, '')));\n ret.push('rename to ' + quoteFileNameIfNeeded(((_d = patch.newFileName) !== null && _d !== void 0 ? _d : '').replace(/^b\\//, '')));\n }\n if (patch.isCopy) {\n ret.push('copy from ' + quoteFileNameIfNeeded(((_e = patch.oldFileName) !== null && _e !== void 0 ? _e : '').replace(/^a\\//, '')));\n ret.push('copy to ' + quoteFileNameIfNeeded(((_f = patch.newFileName) !== null && _f !== void 0 ? _f : '').replace(/^b\\//, '')));\n }\n }\n else {\n if (headerOptions.includeIndex && patch.oldFileName == patch.newFileName && patch.oldFileName !== undefined) {\n ret.push('Index: ' + patch.oldFileName);\n }\n if (headerOptions.includeUnderline) {\n ret.push('===================================================================');\n }\n }\n // Emit --- / +++ file headers. For Git patches with no hunks (e.g.\n // pure renames, mode-only changes), Git omits these, so we do too.\n const hasHunks = patch.hunks.length > 0;\n if (headerOptions.includeFileHeaders && patch.oldFileName !== undefined && patch.newFileName !== undefined\n && (!patch.isGit || hasHunks)) {\n ret.push('--- ' + quoteFileNameIfNeeded(patch.oldFileName) + (patch.oldHeader ? '\\t' + patch.oldHeader : ''));\n ret.push('+++ ' + quoteFileNameIfNeeded(patch.newFileName) + (patch.newHeader ? '\\t' + patch.newHeader : ''));\n }\n for (let i = 0; i < patch.hunks.length; i++) {\n const hunk = patch.hunks[i];\n // Unified Diff Format quirk: If the chunk size is 0,\n // the first number is one lower than one would expect.\n // https://www.artima.com/weblogs/viewpost.jsp?thread=164293\n const oldStart = hunk.oldLines === 0 ? hunk.oldStart - 1 : hunk.oldStart;\n const newStart = hunk.newLines === 0 ? hunk.newStart - 1 : hunk.newStart;\n ret.push('@@ -' + oldStart + ',' + hunk.oldLines\n + ' +' + newStart + ',' + hunk.newLines\n + ' @@');\n for (const line of hunk.lines) {\n ret.push(line);\n }\n }\n return ret.join('\\n') + '\\n';\n}\nexport function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n if (typeof options === 'function') {\n options = { callback: options };\n }\n if (!(options === null || options === void 0 ? void 0 : options.callback)) {\n const patchObj = structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options);\n if (!patchObj) {\n return;\n }\n return formatPatch(patchObj, options === null || options === void 0 ? void 0 : options.headerOptions);\n }\n else {\n const { callback } = options;\n structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, Object.assign(Object.assign({}, options), { callback: patchObj => {\n if (!patchObj) {\n callback(undefined);\n }\n else {\n callback(formatPatch(patchObj, options.headerOptions));\n }\n } }));\n }\n}\nexport function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {\n return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);\n}\n/**\n * Split `text` into an array of lines, including the trailing newline character (where present)\n */\nfunction splitLines(text) {\n const hasTrailingNl = text.endsWith('\\n');\n const result = text.split('\\n').map(line => line + '\\n');\n if (hasTrailingNl) {\n result.pop();\n }\n else {\n result.push(result.pop().slice(0, -1));\n }\n return result;\n}\n","import \"diff\";\n//#region src/utils/parseDiffDecorations.ts\nfunction createDiffSpanDecoration({ line, spanStart, spanLength }) {\n\treturn {\n\t\tstart: {\n\t\t\tline,\n\t\t\tcharacter: spanStart\n\t\t},\n\t\tend: {\n\t\t\tline,\n\t\t\tcharacter: spanStart + spanLength\n\t\t},\n\t\tproperties: { \"data-diff-span\": \"\" },\n\t\talwaysWrap: true\n\t};\n}\nfunction pushOrJoinSpan({ item, arr, enableJoin, isNeutral = false, isLastItem = false }) {\n\tconst lastItem = arr[arr.length - 1];\n\tif (lastItem == null || isLastItem || !enableJoin) {\n\t\tarr.push([isNeutral ? 0 : 1, item.value]);\n\t\treturn;\n\t}\n\tconst isLastItemNeutral = lastItem[0] === 0;\n\tif (isNeutral === isLastItemNeutral || isNeutral && item.value.length === 1 && !isLastItemNeutral) {\n\t\tlastItem[1] += item.value;\n\t\treturn;\n\t}\n\tarr.push([isNeutral ? 0 : 1, item.value]);\n}\n//#endregion\nexport { createDiffSpanDecoration, pushOrJoinSpan };\n\n//# sourceMappingURL=parseDiffDecorations.js.map","import { DEFAULT_THEMES } from \"../constants.js\";\nimport { getFiletypeFromFileName } from \"./getFiletypeFromFileName.js\";\nimport { cleanLastNewline } from \"./cleanLastNewline.js\";\nimport { createTransformerWithState } from \"./createTransformerWithState.js\";\nimport { formatCSSVariablePrefix } from \"./formatCSSVariablePrefix.js\";\nimport { getHighlighterThemeStyles } from \"./getHighlighterThemeStyles.js\";\nimport { getLineNodes } from \"./getLineNodes.js\";\nimport { iterateOverDiff } from \"./iterateOverDiff.js\";\nimport { createDiffSpanDecoration, pushOrJoinSpan } from \"./parseDiffDecorations.js\";\nimport { diffChars, diffWordsWithSpace } from \"diff\";\n//#region src/utils/renderDiffWithHighlighter.ts\nconst DEFAULT_PLAIN_TEXT_OPTIONS = { forcePlainText: false };\nfunction renderDiffWithHighlighter(diff, highlighter, options, { forcePlainText, startingLine, totalLines, expandedHunks, collapsedContextThreshold = 1 } = DEFAULT_PLAIN_TEXT_OPTIONS) {\n\tif (forcePlainText) {\n\t\tstartingLine ??= 0;\n\t\ttotalLines ??= Infinity;\n\t} else {\n\t\tstartingLine = 0;\n\t\ttotalLines = Infinity;\n\t}\n\tconst isWindowedHighlight = startingLine > 0 || totalLines < Infinity;\n\tconst baseThemeType = typeof options.theme === \"string\" ? highlighter.getTheme(options.theme).type : void 0;\n\tconst themeStyles = getHighlighterThemeStyles({\n\t\ttheme: options.theme,\n\t\thighlighter\n\t});\n\tconst lineDiffType = forcePlainText && !isWindowedHighlight && (diff.unifiedLineCount > 1e3 || diff.splitLineCount > 1e3) ? \"none\" : options.lineDiffType;\n\tconst code = {\n\t\tdeletionLines: [],\n\t\tadditionLines: []\n\t};\n\tconst { maxLineDiffLength } = options;\n\tconst shouldGroupAll = !forcePlainText && !diff.isPartial;\n\tconst expandedHunksForIteration = forcePlainText ? expandedHunks : void 0;\n\tconst buckets = /* @__PURE__ */ new Map();\n\tfunction getBucketForHunk(hunkIndex) {\n\t\tconst index = shouldGroupAll ? 0 : hunkIndex;\n\t\tconst bucket = buckets.get(index) ?? createBucket();\n\t\tbuckets.set(index, bucket);\n\t\treturn bucket;\n\t}\n\tfunction appendContent(lineContent, lineIndex, segments, contentWrapper) {\n\t\tif (isWindowedHighlight) {\n\t\t\tlet segment = segments.at(-1);\n\t\t\tif (segment == null || segment.targetIndex + segment.count !== lineIndex) {\n\t\t\t\tsegment = {\n\t\t\t\t\ttargetIndex: lineIndex,\n\t\t\t\t\toriginalOffset: contentWrapper.length,\n\t\t\t\t\tcount: 0\n\t\t\t\t};\n\t\t\t\tsegments.push(segment);\n\t\t\t}\n\t\t\tsegment.count++;\n\t\t}\n\t\tcontentWrapper.push(lineContent);\n\t}\n\titerateOverDiff({\n\t\tdiff,\n\t\tdiffStyle: \"both\",\n\t\tstartingLine,\n\t\ttotalLines,\n\t\texpandedHunks: isWindowedHighlight ? expandedHunksForIteration : true,\n\t\tcollapsedContextThreshold,\n\t\tcallback: ({ hunkIndex, additionLine, deletionLine, type }) => {\n\t\t\tconst bucket = getBucketForHunk(hunkIndex);\n\t\t\tconst splitLineIndex = additionLine != null ? additionLine.splitLineIndex : deletionLine.splitLineIndex;\n\t\t\tif (type === \"change\" && additionLine != null && deletionLine != null) computeLineDiffDecorations({\n\t\t\t\tadditionLine: diff.additionLines[additionLine.lineIndex],\n\t\t\t\tdeletionLine: diff.deletionLines[deletionLine.lineIndex],\n\t\t\t\tdeletionLineIndex: bucket.deletionContent.length,\n\t\t\t\tadditionLineIndex: bucket.additionContent.length,\n\t\t\t\tdeletionDecorations: bucket.deletionDecorations,\n\t\t\t\tadditionDecorations: bucket.additionDecorations,\n\t\t\t\tlineDiffType,\n\t\t\t\tmaxLineDiffLength\n\t\t\t});\n\t\t\tif (deletionLine != null) {\n\t\t\t\tappendContent(diff.deletionLines[deletionLine.lineIndex], deletionLine.lineIndex, bucket.deletionSegments, bucket.deletionContent);\n\t\t\t\tbucket.deletionInfo.push({\n\t\t\t\t\ttype: type === \"change\" ? \"change-deletion\" : type,\n\t\t\t\t\tlineNumber: deletionLine.lineNumber,\n\t\t\t\t\taltLineNumber: type === \"change\" ? void 0 : additionLine.lineNumber ?? void 0,\n\t\t\t\t\tlineIndex: `${deletionLine.unifiedLineIndex},${splitLineIndex}`\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (additionLine != null) {\n\t\t\t\tappendContent(diff.additionLines[additionLine.lineIndex], additionLine.lineIndex, bucket.additionSegments, bucket.additionContent);\n\t\t\t\tbucket.additionInfo.push({\n\t\t\t\t\ttype: type === \"change\" ? \"change-addition\" : type,\n\t\t\t\t\tlineNumber: additionLine.lineNumber,\n\t\t\t\t\taltLineNumber: type === \"change\" ? void 0 : deletionLine.lineNumber ?? void 0,\n\t\t\t\t\tlineIndex: `${additionLine.unifiedLineIndex},${splitLineIndex}`\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n\tfor (const bucket of buckets.values()) {\n\t\tif (bucket.deletionContent.length === 0 && bucket.additionContent.length === 0) continue;\n\t\tconst deletionFile = {\n\t\t\tname: diff.prevName ?? diff.name,\n\t\t\tcontents: bucket.deletionContent.value\n\t\t};\n\t\tconst additionFile = {\n\t\t\tname: diff.name,\n\t\t\tcontents: bucket.additionContent.value\n\t\t};\n\t\tconst { deletionLines, additionLines } = renderTwoFiles({\n\t\t\tdeletionFile,\n\t\t\tdeletionInfo: bucket.deletionInfo,\n\t\t\tdeletionDecorations: bucket.deletionDecorations,\n\t\t\tadditionFile,\n\t\t\tadditionInfo: bucket.additionInfo,\n\t\t\tadditionDecorations: bucket.additionDecorations,\n\t\t\thighlighter,\n\t\t\toptions,\n\t\t\tlanguageOverride: forcePlainText ? \"text\" : diff.lang\n\t\t});\n\t\tif (shouldGroupAll) {\n\t\t\tcode.deletionLines = deletionLines;\n\t\t\tcode.additionLines = additionLines;\n\t\t\tcontinue;\n\t\t}\n\t\tif (bucket.deletionSegments.length > 0) for (const seg of bucket.deletionSegments) for (let i = 0; i < seg.count; i++) code.deletionLines[seg.targetIndex + i] = deletionLines[seg.originalOffset + i];\n\t\telse code.deletionLines.push(...deletionLines);\n\t\tif (bucket.additionSegments.length > 0) for (const seg of bucket.additionSegments) for (let i = 0; i < seg.count; i++) code.additionLines[seg.targetIndex + i] = additionLines[seg.originalOffset + i];\n\t\telse code.additionLines.push(...additionLines);\n\t}\n\treturn {\n\t\tcode,\n\t\tthemeStyles,\n\t\tbaseThemeType\n\t};\n}\nfunction computeLineDiffDecorations({ deletionLine, additionLine, deletionLineIndex, additionLineIndex, deletionDecorations, additionDecorations, lineDiffType, maxLineDiffLength }) {\n\tif (deletionLine == null || additionLine == null || lineDiffType === \"none\") return;\n\tdeletionLine = cleanLastNewline(deletionLine);\n\tadditionLine = cleanLastNewline(additionLine);\n\tif (deletionLine.length > maxLineDiffLength || additionLine.length > maxLineDiffLength) return;\n\tconst lineDiff = lineDiffType === \"char\" ? diffChars(deletionLine, additionLine) : diffWordsWithSpace(deletionLine, additionLine);\n\tconst deletionSpans = [];\n\tconst additionSpans = [];\n\tconst enableJoin = lineDiffType === \"word-alt\";\n\tconst lastItem = lineDiff.at(-1);\n\tfor (const item of lineDiff) {\n\t\tconst isLastItem = item === lastItem;\n\t\tif (!item.added && !item.removed) {\n\t\t\tpushOrJoinSpan({\n\t\t\t\titem,\n\t\t\t\tarr: deletionSpans,\n\t\t\t\tenableJoin,\n\t\t\t\tisNeutral: true,\n\t\t\t\tisLastItem\n\t\t\t});\n\t\t\tpushOrJoinSpan({\n\t\t\t\titem,\n\t\t\t\tarr: additionSpans,\n\t\t\t\tenableJoin,\n\t\t\t\tisNeutral: true,\n\t\t\t\tisLastItem\n\t\t\t});\n\t\t} else if (item.removed) pushOrJoinSpan({\n\t\t\titem,\n\t\t\tarr: deletionSpans,\n\t\t\tenableJoin,\n\t\t\tisLastItem\n\t\t});\n\t\telse pushOrJoinSpan({\n\t\t\titem,\n\t\t\tarr: additionSpans,\n\t\t\tenableJoin,\n\t\t\tisLastItem\n\t\t});\n\t}\n\tlet spanIndex = 0;\n\tfor (const span of deletionSpans) {\n\t\tif (span[0] === 1) deletionDecorations.push(createDiffSpanDecoration({\n\t\t\tline: deletionLineIndex,\n\t\t\tspanStart: spanIndex,\n\t\t\tspanLength: span[1].length\n\t\t}));\n\t\tspanIndex += span[1].length;\n\t}\n\tspanIndex = 0;\n\tfor (const span of additionSpans) {\n\t\tif (span[0] === 1) additionDecorations.push(createDiffSpanDecoration({\n\t\t\tline: additionLineIndex,\n\t\t\tspanStart: spanIndex,\n\t\t\tspanLength: span[1].length\n\t\t}));\n\t\tspanIndex += span[1].length;\n\t}\n}\nfunction createBucket() {\n\treturn {\n\t\tdeletionContent: {\n\t\t\tpush(value) {\n\t\t\t\tthis.value += value;\n\t\t\t\tthis.length++;\n\t\t\t},\n\t\t\tvalue: \"\",\n\t\t\tlength: 0\n\t\t},\n\t\tadditionContent: {\n\t\t\tpush(value) {\n\t\t\t\tthis.value += value;\n\t\t\t\tthis.length++;\n\t\t\t},\n\t\t\tvalue: \"\",\n\t\t\tlength: 0\n\t\t},\n\t\tdeletionInfo: [],\n\t\tadditionInfo: [],\n\t\tdeletionDecorations: [],\n\t\tadditionDecorations: [],\n\t\tdeletionSegments: [],\n\t\tadditionSegments: []\n\t};\n}\nfunction renderTwoFiles({ deletionFile, additionFile, deletionInfo, additionInfo, highlighter, deletionDecorations, additionDecorations, languageOverride, options: { theme: themeOrThemes = DEFAULT_THEMES, ...options } }) {\n\tconst deletionLang = languageOverride ?? getFiletypeFromFileName(deletionFile.name);\n\tconst additionLang = languageOverride ?? getFiletypeFromFileName(additionFile.name);\n\tconst { state, transformers } = createTransformerWithState(options.useTokenTransformer);\n\tconst hastConfig = (() => {\n\t\treturn typeof themeOrThemes === \"string\" ? {\n\t\t\t...options,\n\t\t\tlang: \"text\",\n\t\t\ttheme: themeOrThemes,\n\t\t\ttransformers,\n\t\t\tdecorations: void 0,\n\t\t\tdefaultColor: false,\n\t\t\tcssVariablePrefix: formatCSSVariablePrefix(\"token\"),\n\t\t\ttokenizeTimeLimit: 0\n\t\t} : {\n\t\t\t...options,\n\t\t\tlang: \"text\",\n\t\t\tthemes: themeOrThemes,\n\t\t\ttransformers,\n\t\t\tdecorations: void 0,\n\t\t\tdefaultColor: false,\n\t\t\tcssVariablePrefix: formatCSSVariablePrefix(\"token\"),\n\t\t\ttokenizeTimeLimit: 0\n\t\t};\n\t})();\n\treturn {\n\t\tdeletionLines: (() => {\n\t\t\tif (deletionFile.contents === \"\") return [];\n\t\t\thastConfig.lang = deletionLang;\n\t\t\tstate.lineInfo = deletionInfo;\n\t\t\thastConfig.decorations = deletionDecorations;\n\t\t\treturn getLineNodes(highlighter.codeToHast(cleanLastNewline(deletionFile.contents), hastConfig));\n\t\t})(),\n\t\tadditionLines: (() => {\n\t\t\tif (additionFile.contents === \"\") return [];\n\t\t\thastConfig.lang = additionLang;\n\t\t\thastConfig.decorations = additionDecorations;\n\t\t\tstate.lineInfo = additionInfo;\n\t\t\treturn getLineNodes(highlighter.codeToHast(cleanLastNewline(additionFile.contents), hastConfig));\n\t\t})()\n\t};\n}\n//#endregion\nexport { renderDiffWithHighlighter };\n\n//# sourceMappingURL=renderDiffWithHighlighter.js.map","import { ResolvedLanguages } from \"./constants.js\";\n//#region src/highlighter/languages/getResolvedLanguages.ts\nfunction getResolvedLanguages(languages) {\n\tconst resolvedLanguages = [];\n\tfor (const language of languages) {\n\t\tconst resolvedLanguage = ResolvedLanguages.get(language);\n\t\tif (resolvedLanguage == null) throw new Error(`getResolvedLanguages: ${language} is not resolved. Please resolve languages before calling getResolvedLanguages`);\n\t\tresolvedLanguages.push(resolvedLanguage);\n\t}\n\treturn resolvedLanguages;\n}\n//#endregion\nexport { getResolvedLanguages };\n\n//# sourceMappingURL=getResolvedLanguages.js.map","import { ResolvedLanguages } from \"./constants.js\";\n//#region src/highlighter/languages/hasResolvedLanguages.ts\nfunction hasResolvedLanguages(languages) {\n\tfor (const language of Array.isArray(languages) ? languages : [languages]) if (!ResolvedLanguages.has(language)) return false;\n\treturn true;\n}\n//#endregion\nexport { hasResolvedLanguages };\n\n//# sourceMappingURL=hasResolvedLanguages.js.map","import { resolveLanguage } from \"./resolveLanguage.js\";\nimport { getResolvedOrResolveLanguage } from \"./getResolvedOrResolveLanguage.js\";\n//#region src/highlighter/languages/resolveLanguages.ts\nasync function resolveLanguages(languages) {\n\tconst resolvedLanguages = [];\n\tconst languagesToResolve = [];\n\tfor (const language of languages) {\n\t\tif (language === \"text\" || language === \"ansi\") continue;\n\t\tconst maybeResolvedLanguage = getResolvedOrResolveLanguage(language) ?? resolveLanguage(language);\n\t\tif (\"then\" in maybeResolvedLanguage) languagesToResolve.push(maybeResolvedLanguage);\n\t\telse resolvedLanguages.push(maybeResolvedLanguage);\n\t}\n\tif (languagesToResolve.length > 0) await Promise.all(languagesToResolve).then((_resolvedLanguages) => {\n\t\tfor (const resolvedLanguage of _resolvedLanguages) {\n\t\t\tif (resolvedLanguage == null) throw new Error(\"resolvedLanguages: unable to resolve language\");\n\t\t\tresolvedLanguages.push(resolvedLanguage);\n\t\t}\n\t});\n\treturn resolvedLanguages;\n}\n//#endregion\nexport { resolveLanguages };\n\n//# sourceMappingURL=resolveLanguages.js.map","import { themeResolver } from \"./themeResolver.js\";\n//#region src/highlighter/themes/getResolvedThemes.ts\nfunction getResolvedThemes(themeNames) {\n\treturn themeResolver.getResolvedThemes(themeNames);\n}\n//#endregion\nexport { getResolvedThemes };\n\n//# sourceMappingURL=getResolvedThemes.js.map","import { themeResolver } from \"./themeResolver.js\";\nimport { prepareThemeResolution, validateResolvedThemeName } from \"./themeResolution.js\";\n//#region src/highlighter/themes/resolveThemes.ts\nasync function resolveThemes(themes) {\n\tfor (const themeName of themes) prepareThemeResolution(themeName);\n\tconst resolvedThemes = await themeResolver.resolveThemes(themes);\n\tfor (let i = 0; i < themes.length; i++) validateResolvedThemeName(themes[i], resolvedThemes[i]);\n\treturn resolvedThemes;\n}\n//#endregion\nexport { resolveThemes };\n\n//# sourceMappingURL=resolveThemes.js.map","!function(g,c){typeof exports==\"object\"&&typeof module!=\"undefined\"?c(exports):typeof define==\"function\"&&define.amd?define([\"exports\"],c):c((g=g||self).lru_map=g.lru_map||{})}(this,function(g){const c=Symbol(\"newer\"),e=Symbol(\"older\");class n{constructor(a,b){typeof a!==\"number\"&&(b=a,a=0),this.size=0,this.limit=a,this.oldest=this.newest=void 0,this._keymap=new Map(),b&&(this.assign(b),a<1&&(this.limit=this.size))}_markEntryAsUsed(a){if(a===this.newest)return;a[c]&&(a===this.oldest&&(this.oldest=a[c]),a[c][e]=a[e]),a[e]&&(a[e][c]=a[c]),a[c]=void 0,a[e]=this.newest,this.newest&&(this.newest[c]=a),this.newest=a}assign(a){let b,d=this.limit||Number.MAX_VALUE;this._keymap.clear();let m=a[Symbol.iterator]();for(let h=m.next();!h.done;h=m.next()){let f=new l(h.value[0],h.value[1]);this._keymap.set(f.key,f),b?(b[c]=f,f[e]=b):this.oldest=f,b=f;if(d--==0)throw new Error(\"overflow\")}this.newest=b,this.size=this._keymap.size}get(a){var b=this._keymap.get(a);return b?(this._markEntryAsUsed(b),b.value):void 0}set(a,b){var d=this._keymap.get(a);return d?(d.value=b,this._markEntryAsUsed(d),this):(this._keymap.set(a,d=new l(a,b)),this.newest?(this.newest[c]=d,d[e]=this.newest):this.oldest=d,this.newest=d,++this.size,this.size>this.limit&&this.shift(),this)}shift(){var a=this.oldest;if(a)return this.oldest[c]?(this.oldest=this.oldest[c],this.oldest[e]=void 0):(this.oldest=void 0,this.newest=void 0),a[c]=a[e]=void 0,this._keymap.delete(a.key),--this.size,[a.key,a.value]}find(a){let b=this._keymap.get(a);return b?b.value:void 0}has(a){return this._keymap.has(a)}delete(a){var b=this._keymap.get(a);return b?(this._keymap.delete(b.key),b[c]&&b[e]?(b[e][c]=b[c],b[c][e]=b[e]):b[c]?(b[c][e]=void 0,this.oldest=b[c]):b[e]?(b[e][c]=void 0,this.newest=b[e]):this.oldest=this.newest=void 0,this.size--,b.value):void 0}clear(){this.oldest=this.newest=void 0,this.size=0,this._keymap.clear()}keys(){return new j(this.oldest)}values(){return new k(this.oldest)}entries(){return this}[Symbol.iterator](){return new i(this.oldest)}forEach(a,b){typeof b!==\"object\"&&(b=this);let d=this.oldest;for(;d;)a.call(b,d.value,d.key,this),d=d[c]}toJSON(){for(var a=new Array(this.size),b=0,d=this.oldest;d;)a[b++]={key:d.key,value:d.value},d=d[c];return a}toString(){for(var a=\"\",b=this.oldest;b;)a+=String(b.key)+\":\"+b.value,b=b[c],b&&(a+=\" < \");return a}}g.LRUMap=n;function l(a,b){this.key=a,this.value=b,this[c]=void 0,this[e]=void 0}function i(a){this.entry=a}i.prototype[Symbol.iterator]=function(){return this},i.prototype.next=function(){let a=this.entry;return a?(this.entry=a[c],{done:!1,value:[a.key,a.value]}):{done:!0,value:void 0}};function j(a){this.entry=a}j.prototype[Symbol.iterator]=function(){return this},j.prototype.next=function(){let a=this.entry;return a?(this.entry=a[c],{done:!1,value:a.key}):{done:!0,value:void 0}};function k(a){this.entry=a}k.prototype[Symbol.iterator]=function(){return this},k.prototype.next=function(){let a=this.entry;return a?(this.entry=a[c],{done:!1,value:a.value}):{done:!0,value:void 0}}});\n//# sourceMappingURL=lru.js.map\n","import { DEFAULT_THEMES } from \"../constants.js\";\nimport { areThemesEqual } from \"../utils/areThemesEqual.js\";\nimport { attachResolvedThemes } from \"../highlighter/themes/attachResolvedThemes.js\";\nimport { getSharedHighlighter } from \"../highlighter/shared_highlighter.js\";\nimport { getThemes } from \"../utils/getThemes.js\";\nimport { hasResolvedThemes } from \"../highlighter/themes/hasResolvedThemes.js\";\nimport { areFileRenderOptionsEqual } from \"../utils/areFileRenderOptionsEqual.js\";\nimport { areFilesEqual } from \"../utils/areFilesEqual.js\";\nimport { getCustomExtensionsMap, getCustomExtensionsVersion, getFiletypeFromFileName } from \"../utils/getFiletypeFromFileName.js\";\nimport { isFilePlainText } from \"../utils/isFilePlainText.js\";\nimport { renderFileWithHighlighter } from \"../utils/renderFileWithHighlighter.js\";\nimport { areDiffTargetsEqual } from \"../utils/areDiffTargetsEqual.js\";\nimport { areDiffRenderOptionsEqual } from \"../utils/areDiffRenderOptionsEqual.js\";\nimport { isDiffPlainText } from \"../utils/isDiffPlainText.js\";\nimport { renderDiffWithHighlighter } from \"../utils/renderDiffWithHighlighter.js\";\nimport { getResolvedLanguages } from \"../highlighter/languages/getResolvedLanguages.js\";\nimport { hasResolvedLanguages } from \"../highlighter/languages/hasResolvedLanguages.js\";\nimport { resolveLanguages } from \"../highlighter/languages/resolveLanguages.js\";\nimport { getResolvedThemes } from \"../highlighter/themes/getResolvedThemes.js\";\nimport { resolveThemes } from \"../highlighter/themes/resolveThemes.js\";\nimport LRUMapPkg from \"lru_map\";\n//#region src/worker/WorkerPoolManager.ts\nconst IGNORE_RESPONSE = Symbol(\"IGNORE_RESPONSE\");\nvar WorkerPoolTerminatedError = class extends Error {\n\tconstructor() {\n\t\tsuper(\"WorkerPoolManager: operation canceled because the pool terminated\");\n\t}\n};\nvar WorkerPoolManager = class {\n\toptions;\n\thighlighter;\n\tpreferredHighlighter;\n\trenderOptions;\n\trenderOptionsRequestVersion = 0;\n\trenderOptionsVersion = 0;\n\tinitialized = false;\n\tworkers = [];\n\tqueuedTasks = [];\n\tqueuedTaskByInstance = /* @__PURE__ */ new Map();\n\ttaskByHighlightKey = /* @__PURE__ */ new Map();\n\tactiveTaskById = /* @__PURE__ */ new Map();\n\tactiveRequestByInstance = /* @__PURE__ */ new Map();\n\tnextRequestId = 0;\n\tthemeSubscribers = /* @__PURE__ */ new Set();\n\tworkersFailed = false;\n\tstatSubscribers = /* @__PURE__ */ new Set();\n\tfileCache;\n\tdiffCache;\n\t_queuedBroadcast;\n\tlifecycleGeneration = 0;\n\tconstructor(options, { langs, theme = DEFAULT_THEMES, useTokenTransformer = false, lineDiffType = \"word-alt\", maxLineDiffLength = 1e3, tokenizeMaxLineLength = 1e3, preferredHighlighter = \"shiki-js\" }) {\n\t\tthis.options = options;\n\t\tthis.preferredHighlighter = preferredHighlighter;\n\t\tthis.renderOptions = {\n\t\t\ttheme,\n\t\t\tuseTokenTransformer,\n\t\t\tlineDiffType,\n\t\t\tmaxLineDiffLength,\n\t\t\ttokenizeMaxLineLength\n\t\t};\n\t\tthis.fileCache = new LRUMapPkg.LRUMap(options.totalASTLRUCacheSize ?? 100);\n\t\tthis.diffCache = new LRUMapPkg.LRUMap(options.totalASTLRUCacheSize ?? 100);\n\t\tthis.queueInitialization(langs);\n\t}\n\tisWorkingPool() {\n\t\treturn !this.workersFailed;\n\t}\n\tgetFileResultCache(file) {\n\t\treturn file.cacheKey != null ? this.fileCache.get(file.cacheKey) : void 0;\n\t}\n\tgetDiffResultCache(diff) {\n\t\treturn diff.cacheKey != null ? this.diffCache.get(diff.cacheKey) : void 0;\n\t}\n\tinspectCaches() {\n\t\tconst { fileCache, diffCache } = this;\n\t\treturn {\n\t\t\tfileCache,\n\t\t\tdiffCache\n\t\t};\n\t}\n\tevictFileFromCache(cacheKey) {\n\t\ttry {\n\t\t\treturn this.fileCache.delete(cacheKey) !== void 0;\n\t\t} finally {\n\t\t\tthis.queueBroadcastStateChanges();\n\t\t}\n\t}\n\tevictDiffFromCache(cacheKey) {\n\t\ttry {\n\t\t\treturn this.diffCache.delete(cacheKey) !== void 0;\n\t\t} finally {\n\t\t\tthis.queueBroadcastStateChanges();\n\t\t}\n\t}\n\tasync setRenderOptions({ theme = this.renderOptions.theme ?? DEFAULT_THEMES, useTokenTransformer = this.renderOptions.useTokenTransformer ?? false, lineDiffType = this.renderOptions.lineDiffType ?? \"word-alt\", maxLineDiffLength = this.renderOptions.maxLineDiffLength ?? 1e3, tokenizeMaxLineLength = this.renderOptions.tokenizeMaxLineLength ?? 1e3 }) {\n\t\tconst { lifecycleGeneration } = this;\n\t\tconst renderOptionsRequestVersion = ++this.renderOptionsRequestVersion;\n\t\tconst isCurrentRequest = () => this.isCurrentLifecycle(lifecycleGeneration) && this.renderOptionsRequestVersion === renderOptionsRequestVersion;\n\t\ttry {\n\t\t\tconst newRenderOptions = {\n\t\t\t\ttheme,\n\t\t\t\tuseTokenTransformer,\n\t\t\t\tlineDiffType,\n\t\t\t\tmaxLineDiffLength,\n\t\t\t\ttokenizeMaxLineLength\n\t\t\t};\n\t\t\tif (!this.isInitialized()) await this.initialize();\n\t\t\tif (!isCurrentRequest() || areDiffRenderOptionsEqual(newRenderOptions, this.renderOptions)) return;\n\t\t\tconst themeNames = getThemes(theme);\n\t\t\tlet resolvedThemes = [];\n\t\t\tif (!areThemesEqual(newRenderOptions.theme, this.renderOptions.theme)) if (hasResolvedThemes(themeNames)) resolvedThemes = getResolvedThemes(themeNames);\n\t\t\telse resolvedThemes = await resolveThemes(themeNames);\n\t\t\tif (!isCurrentRequest()) return;\n\t\t\tif (this.highlighter != null) attachResolvedThemes(resolvedThemes, this.highlighter);\n\t\t\telse {\n\t\t\t\tconst highlighter = await getSharedHighlighter({\n\t\t\t\t\tthemes: themeNames,\n\t\t\t\t\tlangs: [\"text\"],\n\t\t\t\t\tpreferredHighlighter: this.preferredHighlighter\n\t\t\t\t});\n\t\t\t\tif (!isCurrentRequest()) return;\n\t\t\t\tthis.highlighter = highlighter;\n\t\t\t}\n\t\t\tconst workerSetup = this.setRenderOptionsOnWorkers(newRenderOptions, resolvedThemes);\n\t\t\tthis.renderOptions = newRenderOptions;\n\t\t\tthis.renderOptionsVersion++;\n\t\t\tthis.diffCache.clear();\n\t\t\tthis.fileCache.clear();\n\t\t\tthis.invalidateRenderTasks();\n\t\t\tfor (const instance of this.themeSubscribers) instance.onThemeChange();\n\t\t\tawait workerSetup;\n\t\t} catch (error) {\n\t\t\tif (error instanceof WorkerPoolTerminatedError || !isCurrentRequest()) return;\n\t\t\tthrow error;\n\t\t}\n\t}\n\tgetFileRenderOptions() {\n\t\tconst { tokenizeMaxLineLength, theme, useTokenTransformer } = this.renderOptions;\n\t\treturn {\n\t\t\ttheme,\n\t\t\tuseTokenTransformer,\n\t\t\ttokenizeMaxLineLength\n\t\t};\n\t}\n\tgetDiffRenderOptions() {\n\t\treturn { ...this.renderOptions };\n\t}\n\tasync setRenderOptionsOnWorkers(renderOptions, resolvedThemes) {\n\t\tif (this.workersFailed) return;\n\t\tif (!this.isInitialized()) await this.initialize();\n\t\tconst taskPromises = [];\n\t\tfor (const managedWorker of this.workers) {\n\t\t\tif (!managedWorker.initialized) {\n\t\t\t\tconsole.log({ managedWorker });\n\t\t\t\tthrow new Error(\"setRenderOptionsOnWorkers: Somehow we have an uninitialized worker\");\n\t\t\t}\n\t\t\ttaskPromises.push(new Promise((resolve, reject) => {\n\t\t\t\tconst id = this.generateRequestId();\n\t\t\t\tconst task = {\n\t\t\t\t\ttype: \"set-render-options\",\n\t\t\t\t\tid,\n\t\t\t\t\trequest: {\n\t\t\t\t\t\ttype: \"set-render-options\",\n\t\t\t\t\t\tid,\n\t\t\t\t\t\trenderOptions,\n\t\t\t\t\t\tresolvedThemes\n\t\t\t\t\t},\n\t\t\t\t\tresolve,\n\t\t\t\t\treject,\n\t\t\t\t\trequestStart: Date.now()\n\t\t\t\t};\n\t\t\t\tthis.activeTaskById.set(id, task);\n\t\t\t\tmanagedWorker.pendingSetupRequestId = id;\n\t\t\t\tmanagedWorker.worker.postMessage(task.request);\n\t\t\t}));\n\t\t}\n\t\tawait Promise.all(taskPromises);\n\t}\n\tsubscribeToThemeChanges(instance) {\n\t\tthis.themeSubscribers.add(instance);\n\t\tthis.queueBroadcastStateChanges();\n\t\treturn () => {\n\t\t\tthis.unsubscribeToThemeChanges(instance);\n\t\t\tthis.queueBroadcastStateChanges();\n\t\t};\n\t}\n\tunsubscribeToThemeChanges(instance) {\n\t\tthis.themeSubscribers.delete(instance);\n\t\tthis.queueBroadcastStateChanges();\n\t}\n\tsubscribeToStatChanges(callback) {\n\t\tthis.statSubscribers.add(callback);\n\t\tcallback(this.getStats());\n\t\treturn () => {\n\t\t\tthis.statSubscribers.delete(callback);\n\t\t};\n\t}\n\tqueueBroadcastStateChanges() {\n\t\tif (this._queuedBroadcast != null) return;\n\t\tthis._queuedBroadcast = requestAnimationFrame(this._broadcastStateChanges);\n\t}\n\t_broadcastStateChanges = () => {\n\t\tif (this._queuedBroadcast != null) {\n\t\t\tcancelAnimationFrame(this._queuedBroadcast);\n\t\t\tthis._queuedBroadcast = void 0;\n\t\t}\n\t\tconst stats = this.getStats();\n\t\tfor (const callback of this.statSubscribers) callback(stats);\n\t};\n\tcleanUpTasks(instance) {\n\t\tthis.detachInstanceFromQueuedTasks(instance);\n\t\tconst requestId = this.activeRequestByInstance.get(instance);\n\t\tif (requestId != null) {\n\t\t\tconst task = this.activeTaskById.get(requestId);\n\t\t\tif (isRenderTask(task)) {\n\t\t\t\tthis.detachInstanceFromRenderTask(task, instance);\n\t\t\t\tif (!task.primeCache && task.instances.size === 0) this.removeActiveTask(task);\n\t\t\t} else this.activeTaskById.delete(requestId);\n\t\t}\n\t\tthis.activeRequestByInstance.delete(instance);\n\t\tthis.queueBroadcastStateChanges();\n\t}\n\tisInitialized() {\n\t\treturn this.initialized === true;\n\t}\n\tasync initialize(languages = []) {\n\t\tif (this.initialized === true) return;\n\t\telse if (this.initialized === false) {\n\t\t\tconst { lifecycleGeneration } = this;\n\t\t\tthis.initialized = new Promise((resolve, reject) => {\n\t\t\t\t(async () => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst themes = getThemes(this.renderOptions.theme);\n\t\t\t\t\t\tlet resolvedThemes = [];\n\t\t\t\t\t\tif (hasResolvedThemes(themes)) resolvedThemes = getResolvedThemes(themes);\n\t\t\t\t\t\telse resolvedThemes = await resolveThemes(themes);\n\t\t\t\t\t\tif (!this.isCurrentLifecycle(lifecycleGeneration)) {\n\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet resolvedLanguages = [];\n\t\t\t\t\t\tif (hasResolvedLanguages(languages)) resolvedLanguages = getResolvedLanguages(languages);\n\t\t\t\t\t\telse resolvedLanguages = await resolveLanguages(languages);\n\t\t\t\t\t\tif (!this.isCurrentLifecycle(lifecycleGeneration)) {\n\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst [highlighter] = await Promise.all([getSharedHighlighter({\n\t\t\t\t\t\t\tthemes,\n\t\t\t\t\t\t\tlangs: [\"text\", ...languages],\n\t\t\t\t\t\t\tpreferredHighlighter: this.preferredHighlighter\n\t\t\t\t\t\t}), this.initializeWorkers(resolvedThemes, resolvedLanguages)]);\n\t\t\t\t\t\tif (!this.isCurrentLifecycle(lifecycleGeneration)) {\n\t\t\t\t\t\t\tthis.terminateWorkers();\n\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.highlighter = highlighter;\n\t\t\t\t\t\tthis.initialized = true;\n\t\t\t\t\t\tthis.diffCache.clear();\n\t\t\t\t\t\tthis.fileCache.clear();\n\t\t\t\t\t\tthis.drainQueue();\n\t\t\t\t\t\tthis.queueBroadcastStateChanges();\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tif (e instanceof WorkerPoolTerminatedError || !this.isCurrentLifecycle(lifecycleGeneration)) {\n\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.initialized = false;\n\t\t\t\t\t\tthis.workersFailed = true;\n\t\t\t\t\t\tthis.queueBroadcastStateChanges();\n\t\t\t\t\t\treject(e);\n\t\t\t\t\t}\n\t\t\t\t})();\n\t\t\t});\n\t\t\tthis.queueBroadcastStateChanges();\n\t\t} else return this.initialized;\n\t}\n\tasync initializeWorkers(resolvedThemes, resolvedLanguages) {\n\t\tthis.workersFailed = false;\n\t\tconst initPromises = [];\n\t\tconst customExtensionVersion = getCustomExtensionsVersion();\n\t\tconst customExtensionMap = customExtensionVersion > 0 ? getCustomExtensionsMap() : void 0;\n\t\tif (this.workers.length > 0) this.terminateWorkers();\n\t\tfor (let i = 0; i < (this.options.poolSize ?? 8); i++) {\n\t\t\tconst worker = this.options.workerFactory();\n\t\t\tconst managedWorker = {\n\t\t\t\tworker,\n\t\t\t\trequestId: void 0,\n\t\t\t\tpendingSetupRequestId: void 0,\n\t\t\t\tinitialized: false,\n\t\t\t\tlangs: /* @__PURE__ */ new Set([\"text\", ...resolvedLanguages.map(({ name }) => name)]),\n\t\t\t\tcustomExtensionsVersion: 0\n\t\t\t};\n\t\t\tworker.addEventListener(\"message\", (event) => {\n\t\t\t\tthis.handleWorkerMessage(managedWorker, event.data);\n\t\t\t});\n\t\t\tworker.addEventListener(\"error\", (error) => console.error(\"Worker error:\", error, managedWorker));\n\t\t\tthis.workers.push(managedWorker);\n\t\t\tinitPromises.push(new Promise((resolve, reject) => {\n\t\t\t\tconst id = this.generateRequestId();\n\t\t\t\tconst task = {\n\t\t\t\t\ttype: \"initialize\",\n\t\t\t\t\tid,\n\t\t\t\t\trequest: {\n\t\t\t\t\t\ttype: \"initialize\",\n\t\t\t\t\t\tid,\n\t\t\t\t\t\trenderOptions: this.renderOptions,\n\t\t\t\t\t\tpreferredHighlighter: this.preferredHighlighter,\n\t\t\t\t\t\tresolvedThemes,\n\t\t\t\t\t\tresolvedLanguages,\n\t\t\t\t\t\tcustomExtensionsVersion: customExtensionMap != null ? customExtensionVersion : void 0,\n\t\t\t\t\t\tcustomExtensionMap\n\t\t\t\t\t},\n\t\t\t\t\tresolve() {\n\t\t\t\t\t\tmanagedWorker.initialized = true;\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t},\n\t\t\t\t\treject,\n\t\t\t\t\trequestStart: Date.now()\n\t\t\t\t};\n\t\t\t\tthis.activeTaskById.set(id, task);\n\t\t\t\tthis.executeTask(managedWorker, task);\n\t\t\t}));\n\t\t}\n\t\tawait Promise.all(initPromises);\n\t}\n\tdrainQueue = () => {\n\t\tthis._queuedDrain = void 0;\n\t\tif (this.initialized !== true || this.queuedTasks.length === 0) return;\n\t\tfor (let i = 0; i < this.queuedTasks.length;) {\n\t\t\tconst task = this.queuedTasks[i];\n\t\t\tif (this.hasActiveRequest(task)) {\n\t\t\t\ti++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst langs = getLangsFromTask(task);\n\t\t\tconst availableWorker = this.getAvailableWorker(langs);\n\t\t\tif (availableWorker == null) break;\n\t\t\tthis.queuedTasks.splice(i, 1);\n\t\t\tthis.assignWorkerToTask(task, availableWorker);\n\t\t\tthis.resolveLanguagesAndExecuteTask(availableWorker, task, langs);\n\t\t}\n\t\tthis.queueBroadcastStateChanges();\n\t};\n\thighlightFileAST(instance, file) {\n\t\tconst cachedResult = this.getFileResultCache(file);\n\t\tif (isFilePlainText(file) || cachedResult != null && areFileRenderOptionsEqual(cachedResult.options, this.getFileRenderOptions())) return;\n\t\tif (!this.hasMatchingFileInstanceTask(instance, file)) this.submitTask(instance, {\n\t\t\ttype: \"file\",\n\t\t\tfile\n\t\t});\n\t}\n\tprimeFileHighlightCache(file) {\n\t\tif (file.cacheKey == null) {\n\t\t\tconsole.warn(`WorkerPoolManager.primeFileHighlightCache: priming highlight cache requires file.cacheKey; skipping \"${file.name}\".`);\n\t\t\treturn;\n\t\t}\n\t\tconst cachedResult = this.getFileResultCache(file);\n\t\tconst highlightKey = this.getFileHighlightKey(file);\n\t\tif (highlightKey == null || isFilePlainText(file) || cachedResult != null && areFileRenderOptionsEqual(cachedResult.options, this.getFileRenderOptions())) return;\n\t\tconst existingTask = this.getTaskByHighlightKey(highlightKey);\n\t\tif (existingTask != null) existingTask.primeCache = true;\n\t\telse this.submitCacheTask({\n\t\t\ttype: \"file\",\n\t\t\tfile\n\t\t}, highlightKey);\n\t}\n\tgetPlainFileAST(file, startingLine, totalLines, lines) {\n\t\tif (this.highlighter == null) {\n\t\t\tthis.queueInitialization();\n\t\t\treturn;\n\t\t}\n\t\treturn renderFileWithHighlighter(file, this.highlighter, this.renderOptions, {\n\t\t\tforcePlainText: true,\n\t\t\tstartingLine,\n\t\t\ttotalLines,\n\t\t\tlines\n\t\t});\n\t}\n\thighlightDiffAST(instance, diff) {\n\t\tconst cachedResult = this.getDiffResultCache(diff);\n\t\tif (isDiffPlainText(diff) || cachedResult != null && areDiffRenderOptionsEqual(cachedResult.options, this.getDiffRenderOptions())) return;\n\t\tif (!this.hasMatchingDiffInstanceTask(instance, diff)) this.submitTask(instance, {\n\t\t\ttype: \"diff\",\n\t\t\tdiff\n\t\t});\n\t}\n\tprimeDiffHighlightCache(diff) {\n\t\tif (diff.cacheKey == null) {\n\t\t\tconsole.warn(`WorkerPoolManager.primeDiffHighlightCache: priming highlight cache requires diff.cacheKey; skipping \"${diff.prevName ?? diff.name}\" -> \"${diff.name}\".`);\n\t\t\treturn;\n\t\t}\n\t\tconst cachedResult = this.getDiffResultCache(diff);\n\t\tconst highlightKey = this.getDiffHighlightKey(diff);\n\t\tif (highlightKey == null || isDiffPlainText(diff) || cachedResult != null && areDiffRenderOptionsEqual(cachedResult.options, this.getDiffRenderOptions())) return;\n\t\tconst existingTask = this.getTaskByHighlightKey(highlightKey);\n\t\tif (existingTask != null) existingTask.primeCache = true;\n\t\telse this.submitCacheTask({\n\t\t\ttype: \"diff\",\n\t\t\tdiff\n\t\t}, highlightKey);\n\t}\n\tgetPlainDiffAST(diff, startingLine, totalLines, expandedHunks, collapsedContextThreshold) {\n\t\treturn this.highlighter != null ? renderDiffWithHighlighter(diff, this.highlighter, this.renderOptions, {\n\t\t\tforcePlainText: true,\n\t\t\tstartingLine,\n\t\t\ttotalLines,\n\t\t\texpandedHunks,\n\t\t\tcollapsedContextThreshold\n\t\t}) : void 0;\n\t}\n\tterminate() {\n\t\tthis.lifecycleGeneration++;\n\t\tthis.cancelActiveWorkerTasks();\n\t\tthis.terminateWorkers();\n\t\tthis.fileCache.clear();\n\t\tthis.diffCache.clear();\n\t\tthis.activeRequestByInstance.clear();\n\t\tthis.queuedTasks.length = 0;\n\t\tthis.queuedTaskByInstance.clear();\n\t\tthis.taskByHighlightKey.clear();\n\t\tthis.activeTaskById.clear();\n\t\tthis.highlighter = void 0;\n\t\tthis.initialized = false;\n\t\tthis.workersFailed = false;\n\t\tthis.queueBroadcastStateChanges();\n\t}\n\tisCurrentLifecycle(lifecycleGeneration) {\n\t\treturn this.lifecycleGeneration === lifecycleGeneration;\n\t}\n\tqueueInitialization(languages) {\n\t\tthis.initialize(languages).catch((error) => {\n\t\t\tconsole.error(error);\n\t\t});\n\t}\n\tcancelActiveWorkerTasks() {\n\t\tconst error = new WorkerPoolTerminatedError();\n\t\tfor (const task of this.activeTaskById.values()) if (\"reject\" in task) task.reject(error);\n\t}\n\tterminateWorkers() {\n\t\tfor (const managedWorker of this.workers) managedWorker.worker.terminate();\n\t\tthis.workers.length = 0;\n\t}\n\tgetStats() {\n\t\treturn {\n\t\t\tmanagerState: (() => {\n\t\t\t\tif (this.initialized === false) return \"waiting\";\n\t\t\t\tif (this.initialized !== true) return \"initializing\";\n\t\t\t\treturn \"initialized\";\n\t\t\t})(),\n\t\t\ttotalWorkers: this.workers.length,\n\t\t\tworkersFailed: this.workersFailed,\n\t\t\tbusyWorkers: this.workers.filter((w) => w.requestId != null || w.pendingSetupRequestId != null).length,\n\t\t\tqueuedTasks: this.queuedTasks.length,\n\t\t\tactiveTasks: this.activeTaskById.size,\n\t\t\tthemeSubscribers: this.themeSubscribers.size,\n\t\t\tfileCacheSize: this.fileCache.size,\n\t\t\tdiffCacheSize: this.diffCache.size\n\t\t};\n\t}\n\tsubmitTask(instance, request) {\n\t\tif (this.initialized === false) this.queueInitialization();\n\t\tconst highlightKey = this.getHighlightKeyForRequest(request);\n\t\tconst existingTask = highlightKey != null ? this.getTaskByHighlightKey(highlightKey) : void 0;\n\t\tif (existingTask != null) {\n\t\t\tthis.detachInstanceFromQueuedTasks(instance, existingTask);\n\t\t\tthis.addInstanceToTask(existingTask, instance);\n\t\t\tthis.queueBroadcastStateChanges();\n\t\t\treturn;\n\t\t}\n\t\tthis.detachInstanceFromQueuedTasks(instance);\n\t\tconst id = this.generateRequestId();\n\t\tconst requestStart = Date.now();\n\t\tconst { renderOptionsVersion } = this;\n\t\tconst task = (() => {\n\t\t\tswitch (request.type) {\n\t\t\t\tcase \"file\": return {\n\t\t\t\t\ttype: \"file\",\n\t\t\t\t\tid,\n\t\t\t\t\trequest: {\n\t\t\t\t\t\t...request,\n\t\t\t\t\t\tid\n\t\t\t\t\t},\n\t\t\t\t\tinstances: /* @__PURE__ */ new Set([instance]),\n\t\t\t\t\tprimeCache: false,\n\t\t\t\t\thighlightKey,\n\t\t\t\t\trenderOptionsVersion,\n\t\t\t\t\trequestStart\n\t\t\t\t};\n\t\t\t\tcase \"diff\": return {\n\t\t\t\t\ttype: \"diff\",\n\t\t\t\t\tid,\n\t\t\t\t\trequest: {\n\t\t\t\t\t\t...request,\n\t\t\t\t\t\tid\n\t\t\t\t\t},\n\t\t\t\t\tinstances: /* @__PURE__ */ new Set([instance]),\n\t\t\t\t\tprimeCache: false,\n\t\t\t\t\thighlightKey,\n\t\t\t\t\trenderOptionsVersion,\n\t\t\t\t\trequestStart\n\t\t\t\t};\n\t\t\t}\n\t\t})();\n\t\tthis.enqueueRenderTask(task, instance);\n\t}\n\tsubmitCacheTask(request, highlightKey) {\n\t\tif (this.initialized === false) this.queueInitialization();\n\t\tconst id = this.generateRequestId();\n\t\tconst requestStart = Date.now();\n\t\tconst { renderOptionsVersion } = this;\n\t\tconst task = (() => {\n\t\t\tswitch (request.type) {\n\t\t\t\tcase \"file\": return {\n\t\t\t\t\ttype: \"file\",\n\t\t\t\t\tid,\n\t\t\t\t\trequest: {\n\t\t\t\t\t\t...request,\n\t\t\t\t\t\tid\n\t\t\t\t\t},\n\t\t\t\t\tinstances: /* @__PURE__ */ new Set(),\n\t\t\t\t\tprimeCache: true,\n\t\t\t\t\thighlightKey,\n\t\t\t\t\trenderOptionsVersion,\n\t\t\t\t\trequestStart\n\t\t\t\t};\n\t\t\t\tcase \"diff\": return {\n\t\t\t\t\ttype: \"diff\",\n\t\t\t\t\tid,\n\t\t\t\t\trequest: {\n\t\t\t\t\t\t...request,\n\t\t\t\t\t\tid\n\t\t\t\t\t},\n\t\t\t\t\tinstances: /* @__PURE__ */ new Set(),\n\t\t\t\t\tprimeCache: true,\n\t\t\t\t\thighlightKey,\n\t\t\t\t\trenderOptionsVersion,\n\t\t\t\t\trequestStart\n\t\t\t\t};\n\t\t\t}\n\t\t})();\n\t\tthis.enqueueRenderTask(task);\n\t}\n\tenqueueRenderTask(task, instance) {\n\t\tthis.queuedTasks.push(task);\n\t\tif (instance != null) this.queuedTaskByInstance.set(instance, task);\n\t\tif (task.highlightKey != null) this.taskByHighlightKey.set(task.highlightKey, task);\n\t\tthis.queueDrain();\n\t}\n\tasync resolveLanguagesAndExecuteTask(availableWorker, task, langs) {\n\t\ttry {\n\t\t\tconst workerMissingLangs = langs.filter((lang) => !availableWorker.langs.has(lang));\n\t\t\tif (workerMissingLangs.length > 0) if (hasResolvedLanguages(workerMissingLangs)) task.request.resolvedLanguages = getResolvedLanguages(workerMissingLangs);\n\t\t\telse task.request.resolvedLanguages = await resolveLanguages(workerMissingLangs);\n\t\t\tif (!this.activeTaskById.has(task.id)) {\n\t\t\t\tif (availableWorker.requestId === task.id) {\n\t\t\t\t\tthis.cleanWorkerAndTask(availableWorker, task);\n\t\t\t\t\tthis.queueBroadcastStateChanges();\n\t\t\t\t\tif (this.queuedTasks.length > 0) this.queueDrain();\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.executeTask(availableWorker, task);\n\t\t} catch {\n\t\t\tthis.cleanWorkerAndTask(availableWorker, task);\n\t\t\tthis.queueBroadcastStateChanges();\n\t\t\tif (this.queuedTasks.length > 0) this.queueDrain();\n\t\t}\n\t}\n\thandleWorkerMessage(managedWorker, response) {\n\t\tconst task = this.activeTaskById.get(response.id);\n\t\ttry {\n\t\t\tif (task == null) throw IGNORE_RESPONSE;\n\t\t\telse if (response.type === \"error\") {\n\t\t\t\tconst error = new Error(response.error);\n\t\t\t\tif (response.stack) error.stack = response.stack;\n\t\t\t\tif (\"reject\" in task) task.reject(error);\n\t\t\t\telse if (isRenderTask(task)) this.notifyHighlightError(task, error);\n\t\t\t\telse throw new Error(\"handleWorkerMessage: unknown task type\");\n\t\t\t\tthrow error;\n\t\t\t} else switch (response.requestType) {\n\t\t\t\tcase \"initialize\":\n\t\t\t\t\tif (task.type !== \"initialize\") throw new Error(\"handleWorkerMessage: task/response dont match\");\n\t\t\t\t\tthis.syncCustomExtensionVersion(managedWorker, task.request);\n\t\t\t\t\ttask.resolve();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"set-render-options\":\n\t\t\t\t\tif (task.type !== \"set-render-options\") throw new Error(\"handleWorkerMessage: task/response dont match\");\n\t\t\t\t\ttask.resolve();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"file\": {\n\t\t\t\t\tif (task.type !== \"file\") throw new Error(\"handleWorkerMessage: task/response dont match\");\n\t\t\t\t\tconst { result, options } = response;\n\t\t\t\t\tif (!this.isCurrentRenderTask(task) || !areFileRenderOptionsEqual(options, this.getFileRenderOptions())) throw IGNORE_RESPONSE;\n\t\t\t\t\tconst { request } = task;\n\t\t\t\t\tthis.syncCustomExtensionVersion(managedWorker, request);\n\t\t\t\t\tif (request.file.cacheKey != null) this.fileCache.set(request.file.cacheKey, {\n\t\t\t\t\t\tresult,\n\t\t\t\t\t\toptions\n\t\t\t\t\t});\n\t\t\t\t\tthis.notifyFileInstances(task, result, options);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"diff\": {\n\t\t\t\t\tif (task.type !== \"diff\") throw new Error(\"handleWorkerMessage: task/response dont match\");\n\t\t\t\t\tconst { result, options } = response;\n\t\t\t\t\tif (!this.isCurrentRenderTask(task) || !areDiffRenderOptionsEqual(options, this.getDiffRenderOptions())) throw IGNORE_RESPONSE;\n\t\t\t\t\tconst { request } = task;\n\t\t\t\t\tthis.syncCustomExtensionVersion(managedWorker, request);\n\t\t\t\t\tif (request.diff.cacheKey != null) this.diffCache.set(request.diff.cacheKey, {\n\t\t\t\t\t\tresult,\n\t\t\t\t\t\toptions\n\t\t\t\t\t});\n\t\t\t\t\tthis.notifyDiffInstances(task, result, options);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (error !== IGNORE_RESPONSE) console.error(error, task, response);\n\t\t}\n\t\tthis.cleanWorkerAndTask(managedWorker, task, response.id);\n\t\tthis.queueBroadcastStateChanges();\n\t\tif (this.queuedTasks.length > 0) this.queueDrain();\n\t}\n\t_queuedDrain;\n\tqueueDrain() {\n\t\tif (this._queuedDrain != null) return;\n\t\tthis._queuedDrain = Promise.resolve().then(this.drainQueue);\n\t\tthis.queueBroadcastStateChanges();\n\t}\n\tassignWorkerToTask(task, managedWorker) {\n\t\tmanagedWorker.requestId = task.id;\n\t\tif (isRenderTask(task)) {\n\t\t\tthis.clearQueuedInstanceRequests(task);\n\t\t\tthis.trackInstanceRequests(task);\n\t\t}\n\t\tthis.activeTaskById.set(task.id, task);\n\t}\n\tcleanWorkerAndTask(managedWorker, task, requestId = task?.id) {\n\t\tif (managedWorker.requestId === requestId) managedWorker.requestId = void 0;\n\t\tif (managedWorker.pendingSetupRequestId === requestId) managedWorker.pendingSetupRequestId = void 0;\n\t\tif (task != null) {\n\t\t\tif (isRenderTask(task)) {\n\t\t\t\tthis.clearInstanceRequests(task);\n\t\t\t\tthis.clearHighlightKey(task);\n\t\t\t}\n\t\t\tthis.activeTaskById.delete(task.id);\n\t\t}\n\t}\n\texecuteTask(managedWorker, task) {\n\t\tif (shouldSyncCustomExtensions(task.request)) this.maybeAttachCustomExtensions(managedWorker, task.request);\n\t\tif (!this.activeTaskById.has(task.id)) this.assignWorkerToTask(task, managedWorker);\n\t\tfor (const lang of getLangsFromTask(task)) managedWorker.langs.add(lang);\n\t\ttry {\n\t\t\tmanagedWorker.worker.postMessage(task.request);\n\t\t} catch (error) {\n\t\t\tconsole.error(\"Failed to post message to worker:\", error);\n\t\t\tif (isRenderTask(task)) this.notifyHighlightError(task, error);\n\t\t\telse if (\"reject\" in task) task.reject(error);\n\t\t\tthis.cleanWorkerAndTask(managedWorker, task);\n\t\t\tif (this.queuedTasks.length > 0) this.queueDrain();\n\t\t}\n\t\tthis.queueBroadcastStateChanges();\n\t}\n\tmaybeAttachCustomExtensions(managedWorker, request) {\n\t\tif (request.customExtensionsVersion != null) return;\n\t\tconst version = getCustomExtensionsVersion();\n\t\tif (managedWorker.customExtensionsVersion >= version) return;\n\t\trequest.customExtensionsVersion = version;\n\t\trequest.customExtensionMap = getCustomExtensionsMap();\n\t}\n\tsyncCustomExtensionVersion(managedWorker, request) {\n\t\tif (request.customExtensionsVersion == null) return;\n\t\tmanagedWorker.customExtensionsVersion = request.customExtensionsVersion;\n\t}\n\tgetAvailableWorker(langs) {\n\t\tlet worker;\n\t\tfor (const managedWorker of this.workers) {\n\t\t\tif (managedWorker.requestId != null || managedWorker.pendingSetupRequestId != null || !managedWorker.initialized) continue;\n\t\t\tworker = managedWorker;\n\t\t\tif (langs.length === 0) break;\n\t\t\tlet hasEveryLang = true;\n\t\t\tfor (const lang of langs) if (!managedWorker.langs.has(lang)) {\n\t\t\t\thasEveryLang = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (hasEveryLang) break;\n\t\t}\n\t\treturn worker;\n\t}\n\tgetFileHighlightKey(file) {\n\t\tif (file.cacheKey == null) return;\n\t\treturn `file:${file.cacheKey}:${this.renderOptionsVersion}`;\n\t}\n\tgetDiffHighlightKey(diff) {\n\t\tif (diff.cacheKey == null) return;\n\t\treturn `diff:${diff.cacheKey}:${this.renderOptionsVersion}`;\n\t}\n\tgetHighlightKeyForRequest(request) {\n\t\tswitch (request.type) {\n\t\t\tcase \"file\": return this.getFileHighlightKey(request.file);\n\t\t\tcase \"diff\": return this.getDiffHighlightKey(request.diff);\n\t\t}\n\t}\n\thasActiveRequest(task) {\n\t\tfor (const instance of getInstances(task)) if (this.activeRequestByInstance.has(instance)) return true;\n\t\treturn false;\n\t}\n\taddInstanceToTask(task, instance) {\n\t\tif (task.type === \"file\") task.instances.add(instance);\n\t\telse task.instances.add(instance);\n\t\tif (this.activeTaskById.has(task.id)) this.activeRequestByInstance.set(instance, task.id);\n\t\telse this.queuedTaskByInstance.set(instance, task);\n\t}\n\tdetachInstanceFromQueuedTasks(instance, exceptTask) {\n\t\tconst task = this.queuedTaskByInstance.get(instance);\n\t\tif (task == null || task === exceptTask) return;\n\t\tthis.queuedTaskByInstance.delete(instance);\n\t\tthis.detachInstanceFromRenderTask(task, instance);\n\t\tif (!task.primeCache && task.instances.size === 0) this.removeQueuedTask(task);\n\t}\n\tdetachInstanceFromRenderTask(task, instance) {\n\t\tif (task.type === \"file\") task.instances.delete(instance);\n\t\telse task.instances.delete(instance);\n\t}\n\tremoveQueuedTask(task) {\n\t\tconst index = this.queuedTasks.indexOf(task);\n\t\tif (index !== -1) this.queuedTasks.splice(index, 1);\n\t\tthis.clearQueuedInstanceRequests(task);\n\t\tthis.clearHighlightKey(task);\n\t}\n\tremoveActiveTask(task) {\n\t\tthis.clearInstanceRequests(task);\n\t\tthis.clearHighlightKey(task);\n\t\tthis.activeTaskById.delete(task.id);\n\t}\n\tinvalidateRenderTasks() {\n\t\tfor (let index = this.queuedTasks.length - 1; index >= 0; index--) {\n\t\t\tconst task = this.queuedTasks[index];\n\t\t\tif (task.renderOptionsVersion !== this.renderOptionsVersion) this.removeQueuedTask(task);\n\t\t}\n\t\tfor (const task of Array.from(this.activeTaskById.values())) if (isRenderTask(task) && task.renderOptionsVersion !== this.renderOptionsVersion) this.removeActiveTask(task);\n\t}\n\tclearQueuedInstanceRequests(task) {\n\t\tfor (const instance of getInstances(task)) if (this.queuedTaskByInstance.get(instance) === task) this.queuedTaskByInstance.delete(instance);\n\t}\n\tclearHighlightKey(task) {\n\t\tif (task.highlightKey != null && this.taskByHighlightKey.get(task.highlightKey) === task) this.taskByHighlightKey.delete(task.highlightKey);\n\t}\n\ttrackInstanceRequests(task) {\n\t\tfor (const instance of getInstances(task)) this.activeRequestByInstance.set(instance, task.id);\n\t}\n\tclearInstanceRequests(task) {\n\t\tfor (const instance of getInstances(task)) if (this.activeRequestByInstance.get(instance) === task.id) this.activeRequestByInstance.delete(instance);\n\t}\n\tnotifyFileInstances(task, result, options) {\n\t\tfor (const instance of task.instances) if (this.activeRequestByInstance.get(instance) === task.id) instance.onHighlightSuccess(task.request.file, result, options);\n\t}\n\tnotifyDiffInstances(task, result, options) {\n\t\tfor (const instance of task.instances) if (this.activeRequestByInstance.get(instance) === task.id) instance.onHighlightSuccess(task.request.diff, result, options);\n\t}\n\tnotifyHighlightError(task, error) {\n\t\tfor (const instance of getInstances(task)) if (this.activeRequestByInstance.get(instance) === task.id) instance.onHighlightError(error);\n\t}\n\thasMatchingFileInstanceTask(instance, file) {\n\t\tfor (const task of this.iterateRenderTasks()) if (task.type === \"file\" && this.isCurrentRenderTask(task) && task.instances.has(instance) && areFilesEqual(file, task.request.file)) return true;\n\t\treturn false;\n\t}\n\thasMatchingDiffInstanceTask(instance, diff) {\n\t\tfor (const task of this.iterateRenderTasks()) if (task.type === \"diff\" && this.isCurrentRenderTask(task) && task.instances.has(instance) && areDiffTargetsEqual(task.request.diff, diff)) return true;\n\t\treturn false;\n\t}\n\tgetTaskByHighlightKey(highlightKey) {\n\t\tconst task = this.taskByHighlightKey.get(highlightKey);\n\t\treturn task != null && this.isCurrentRenderTask(task) ? task : void 0;\n\t}\n\tisCurrentRenderTask(task) {\n\t\treturn task.renderOptionsVersion === this.renderOptionsVersion;\n\t}\n\t*iterateRenderTasks() {\n\t\tfor (const task of this.queuedTasks) yield task;\n\t\tfor (const task of this.activeTaskById.values()) if (isRenderTask(task)) yield task;\n\t}\n\tgenerateRequestId() {\n\t\treturn `req_${++this.nextRequestId}`;\n\t}\n};\nfunction shouldSyncCustomExtensions(request) {\n\treturn request.type === \"initialize\" || request.type === \"file\" || request.type === \"diff\";\n}\nfunction getLangsFromTask(task) {\n\tconst langs = /* @__PURE__ */ new Set();\n\tif (task.type === \"initialize\" || task.type === \"set-render-options\") return [];\n\tswitch (task.type) {\n\t\tcase \"file\":\n\t\t\tlangs.add(task.request.file.lang ?? getFiletypeFromFileName(task.request.file.name));\n\t\t\tbreak;\n\t\tcase \"diff\":\n\t\t\tlangs.add(task.request.diff.lang ?? getFiletypeFromFileName(task.request.diff.name));\n\t\t\tlangs.add(task.request.diff.lang ?? getFiletypeFromFileName(task.request.diff.prevName ?? \"-\"));\n\t\t\tbreak;\n\t}\n\tlangs.delete(\"text\");\n\treturn Array.from(langs);\n}\nfunction isRenderTask(task) {\n\treturn task?.type === \"file\" || task?.type === \"diff\";\n}\nfunction getInstances(task) {\n\treturn task.instances;\n}\n//#endregion\nexport { WorkerPoolManager };\n\n//# sourceMappingURL=WorkerPoolManager.js.map","\"use client\";\nimport { getOrCreateWorkerPoolSingleton, terminateWorkerPoolSingleton } from \"../worker/getOrCreateWorkerPoolSingleton.js\";\nimport { createContext, useContext, useEffect, useInsertionEffect, useState } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/react/WorkerPoolContext.tsx\nconst WorkerPoolContext = createContext(void 0);\nlet instanceCount = 0;\nfunction WorkerPoolContextProvider({ children, poolOptions, highlighterOptions }) {\n\tconst [poolManager] = useState(() => {\n\t\tif (typeof window === \"undefined\") return;\n\t\treturn getOrCreateWorkerPoolSingleton({\n\t\t\tpoolOptions,\n\t\t\thighlighterOptions\n\t\t});\n\t});\n\tuseInsertionEffect(() => {\n\t\tif (poolManager != null) {\n\t\t\tinstanceCount++;\n\t\t\treturn () => {\n\t\t\t\tinstanceCount--;\n\t\t\t};\n\t\t}\n\t}, [poolManager]);\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\tif (instanceCount === 0) terminateWorkerPoolSingleton();\n\t\t};\n\t}, []);\n\treturn /* @__PURE__ */ jsx(WorkerPoolContext.Provider, {\n\t\tvalue: poolManager,\n\t\tchildren\n\t});\n}\nfunction useWorkerPool() {\n\treturn useContext(WorkerPoolContext);\n}\n//#endregion\nexport { WorkerPoolContext, WorkerPoolContextProvider, useWorkerPool };\n\n//# sourceMappingURL=WorkerPoolContext.js.map","//#region src/utils/areObjectsEqual.ts\nfunction areObjectsEqual(objA, objB, omitKeys) {\n\tif (objA === objB || objA == null || objB == null) return objA === objB;\n\tconst omitSet = new Set(omitKeys);\n\tconst keysA = Object.keys(objA);\n\tconst keysBSet = new Set(Object.keys(objB));\n\tfor (const key of keysA) {\n\t\tkeysBSet.delete(key);\n\t\tif (omitSet.has(key)) continue;\n\t\tif (!(key in objB) || objA[key] !== objB[key]) return false;\n\t}\n\tfor (const key of Array.from(keysBSet)) if (!omitSet.has(key)) return false;\n\treturn true;\n}\n//#endregion\nexport { areObjectsEqual };\n\n//# sourceMappingURL=areObjectsEqual.js.map","import { DEFAULT_THEMES } from \"../constants.js\";\nimport { areObjectsEqual } from \"./areObjectsEqual.js\";\nimport { areThemesEqual } from \"./areThemesEqual.js\";\n//#region src/utils/areOptionsEqual.ts\nfunction areOptionsEqual(optionsA, optionsB) {\n\tconst themeA = optionsA?.theme ?? DEFAULT_THEMES;\n\tconst themeB = optionsB?.theme ?? DEFAULT_THEMES;\n\tconst diffOptsA = getParseDiffOptions(optionsA);\n\tconst diffOptsB = getParseDiffOptions(optionsB);\n\treturn areThemesEqual(themeA, themeB) && areObjectsEqual(optionsA, optionsB, [\"theme\", \"parseDiffOptions\"]) && areObjectsEqual(diffOptsA, diffOptsB);\n}\nfunction getParseDiffOptions(options) {\n\tif (options != null && \"parseDiffOptions\" in options) return options.parseDiffOptions;\n}\n//#endregion\nexport { areOptionsEqual };\n\n//# sourceMappingURL=areOptionsEqual.js.map","//#region src/managers/UniversalRenderingManager.ts\nconst callbacks = /* @__PURE__ */ new Set();\nlet frameId = null;\nfunction queueRender(callback) {\n\tcallbacks.add(callback);\n\tframeId ??= requestAnimationFrame(render);\n}\nfunction dequeueRender(callback) {\n\tcallbacks.delete(callback);\n\tif (callbacks.size === 0 && frameId != null) {\n\t\tcancelAnimationFrame(frameId);\n\t\tframeId = null;\n\t}\n}\nfunction render(time) {\n\tconst toIterate = new Set(callbacks);\n\tcallbacks.clear();\n\tfor (const callback of toIterate) try {\n\t\tcallback(time);\n\t} catch (error) {\n\t\tconsole.error(error);\n\t}\n\tif (callbacks.size > 0) frameId = requestAnimationFrame(render);\n\telse frameId = null;\n}\n//#endregion\nexport { dequeueRender, queueRender };\n\n//# sourceMappingURL=UniversalRenderingManager.js.map","//#region src/utils/areSelectionsEqual.ts\nfunction areSelectionsEqual(selectionA, selectionB) {\n\treturn selectionA?.start === selectionB?.start && selectionA?.end === selectionB?.end && selectionA?.side === selectionB?.side && selectionA?.endSide === selectionB?.endSide;\n}\n//#endregion\nexport { areSelectionsEqual };\n\n//# sourceMappingURL=areSelectionsEqual.js.map","//#region src/utils/createWindowFromScrollPosition.ts\nfunction createWindowFromScrollPosition({ scrollTop, scrollHeight, height, fitPerfectly = false, fitPerfectlyOverscroll = 0, overscrollSize }) {\n\tconst windowHeight = height + overscrollSize * 2;\n\tconst effectiveHeight = fitPerfectly ? height + fitPerfectlyOverscroll * 2 : windowHeight;\n\tscrollHeight = Math.max(scrollHeight, effectiveHeight);\n\tif (windowHeight >= scrollHeight || fitPerfectly) {\n\t\tconst top = Math.max(scrollTop - fitPerfectlyOverscroll, 0);\n\t\tconst bottom = Math.min(scrollTop + effectiveHeight, scrollHeight);\n\t\treturn {\n\t\t\ttop,\n\t\t\tbottom: Math.max(bottom, top)\n\t\t};\n\t}\n\tlet top = scrollTop + height / 2 - windowHeight / 2;\n\tlet bottom = top + windowHeight;\n\tif (top < 0) top = 0;\n\tif (bottom > scrollHeight) bottom = scrollHeight;\n\ttop = Math.floor(Math.max(top, 0));\n\treturn {\n\t\ttop,\n\t\tbottom: Math.ceil(Math.max(Math.min(bottom, scrollHeight), top))\n\t};\n}\n//#endregion\nexport { createWindowFromScrollPosition };\n\n//# sourceMappingURL=createWindowFromScrollPosition.js.map","//#region src/utils/isStyleNode.ts\nfunction isStyleNode(element) {\n\tif (typeof HTMLStyleElement !== \"undefined\" && element instanceof HTMLStyleElement) return true;\n\tconst tagName = element.tagName ?? element.nodeName;\n\treturn typeof tagName === \"string\" && tagName.toLowerCase() === \"style\";\n}\n//#endregion\nexport { isStyleNode };\n\n//# sourceMappingURL=isStyleNode.js.map","//#region src/utils/prefersReducedMotion.ts\nfunction prefersReducedMotion() {\n\tif (typeof window === \"undefined\" || typeof window.matchMedia !== \"function\") return false;\n\treturn window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n}\n//#endregion\nexport { prefersReducedMotion };\n\n//# sourceMappingURL=prefersReducedMotion.js.map","//#region src/utils/roundToDevicePixel.ts\n/**\n* Snap a CSS-pixel value to the nearest device-pixel boundary. Browsers store\n* scrollTop on the device-pixel grid on fractional-DPR displays (1.25x, 1.5x,\n* etc.), so rounding computed scroll targets against that grid keeps delta\n* math settling cleanly instead of hovering around fractional residuals.\n*\n* Reads window.devicePixelRatio fresh on each call so monitor-switching and\n* zoom changes are picked up without needing to flush any cached value.\n*/\nfunction roundToDevicePixel(value) {\n\tconst dpr = window.devicePixelRatio ?? 1;\n\treturn Math.round(value * dpr) / dpr;\n}\n//#endregion\nexport { roundToDevicePixel };\n\n//# sourceMappingURL=roundToDevicePixel.js.map","//#region src/utils/includesFileAnnotations.ts\nconst FILE_ANNOTATION_LINE_NUMBER = 0;\nconst FILE_ANNOTATION_HUNK_INDEX = -1;\nconst FILE_ANNOTATION_LINE_INDEX = -1;\nconst FILE_ANNOTATION_DOM_KEY = `-1,-1`;\nfunction includesFileAnnotations(annotations) {\n\treturn annotations?.some((annotation) => annotation.lineNumber === 0) ?? false;\n}\nfunction getFileAnnotations(annotations) {\n\tconst fileAnnotations = annotations[0];\n\treturn fileAnnotations != null && fileAnnotations.length > 0 ? fileAnnotations : void 0;\n}\nfunction shouldRenderFileAnnotations(renderRange) {\n\treturn renderRange.startingLine === 0 && renderRange.totalLines > 0;\n}\n//#endregion\nexport { FILE_ANNOTATION_DOM_KEY, FILE_ANNOTATION_HUNK_INDEX, FILE_ANNOTATION_LINE_INDEX, FILE_ANNOTATION_LINE_NUMBER, getFileAnnotations, includesFileAnnotations, shouldRenderFileAnnotations };\n\n//# sourceMappingURL=includesFileAnnotations.js.map","//#region src/utils/areSelectionPointsEqual.ts\nfunction areSelectionPointsEqual(a, b) {\n\treturn a.lineNumber === b.lineNumber && a.side === b.side;\n}\n//#endregion\nexport { areSelectionPointsEqual };\n\n//# sourceMappingURL=areSelectionPointsEqual.js.map","import { createHastElement, createIconElement } from \"./hast_utils.js\";\n//#region src/utils/createGutterUtilityElement.ts\nfunction createGutterUtilityElement() {\n\treturn createHastElement({\n\t\ttagName: \"button\",\n\t\tproperties: {\n\t\t\t\"data-utility-button\": \"\",\n\t\t\ttype: \"button\"\n\t\t},\n\t\tchildren: [createIconElement({\n\t\t\tname: \"diffs-icon-plus\",\n\t\t\tproperties: { \"data-icon\": \"\" }\n\t\t})]\n\t});\n}\n//#endregion\nexport { createGutterUtilityElement };\n\n//# sourceMappingURL=createGutterUtilityElement.js.map","import { areSelectionsEqual } from \"../utils/areSelectionsEqual.js\";\nimport { areSelectionPointsEqual } from \"../utils/areSelectionPointsEqual.js\";\nimport { createGutterUtilityElement } from \"../utils/createGutterUtilityElement.js\";\nimport { toHtml } from \"hast-util-to-html\";\n//#region src/managers/InteractionManager.ts\nvar InteractionManager = class {\n\tmode;\n\toptions;\n\thoveredLine;\n\thoveredToken;\n\tpre;\n\tgutterUtilityLine;\n\tgutterUtilityContainer;\n\tgutterUtilityButton;\n\tgutterUtilitySlot;\n\tinteractiveLinesAttr = false;\n\tinteractiveLineNumbersAttr = false;\n\thasPointerListeners = false;\n\thasDocumentPointerListeners = false;\n\tselectedRange = null;\n\tproposedSelectedRange;\n\trenderedSelectionRange;\n\tselectionAnchor;\n\tqueuedSelectionRender;\n\tpointerSession = { mode: \"idle\" };\n\tconstructor(mode, options) {\n\t\tthis.mode = mode;\n\t\tthis.options = options;\n\t}\n\tsetOptions(options) {\n\t\tthis.options = options;\n\t}\n\tcleanUp() {\n\t\tthis.pre?.removeEventListener(\"click\", this.handlePointerClick);\n\t\tthis.pre?.removeEventListener(\"pointerdown\", this.handlePointerDown);\n\t\tthis.pre?.removeEventListener(\"pointermove\", this.handlePointerMove);\n\t\tthis.pre?.removeEventListener(\"pointerleave\", this.handlePointerLeave);\n\t\tthis.pre?.removeAttribute(\"data-interactive-lines\");\n\t\tthis.pre?.removeAttribute(\"data-interactive-line-numbers\");\n\t\tthis.pre = void 0;\n\t\tthis.gutterUtilityContainer?.remove();\n\t\tthis.gutterUtilityLine = void 0;\n\t\tthis.gutterUtilityContainer = void 0;\n\t\tthis.gutterUtilityButton = void 0;\n\t\tthis.gutterUtilitySlot = void 0;\n\t\tthis.clearHoveredLine();\n\t\tthis.clearHoveredToken();\n\t\tthis.detachDocumentPointerListeners();\n\t\tthis.clearPointerSession();\n\t\tif (this.queuedSelectionRender != null) {\n\t\t\tcancelAnimationFrame(this.queuedSelectionRender);\n\t\t\tthis.queuedSelectionRender = void 0;\n\t\t}\n\t\tthis.interactiveLinesAttr = false;\n\t\tthis.interactiveLineNumbersAttr = false;\n\t\tthis.hasPointerListeners = false;\n\t}\n\tsetup(pre) {\n\t\tthis.setSelectionDirty();\n\t\tconst { usesCustomGutterUtility = false, enableGutterUtility = false } = this.options;\n\t\tif (this.pre !== pre) {\n\t\t\tthis.cleanUp();\n\t\t\tthis.pre = pre;\n\t\t}\n\t\tif (enableGutterUtility) this.ensureGutterUtilityNode(usesCustomGutterUtility);\n\t\telse if (this.gutterUtilityContainer != null) {\n\t\t\tthis.gutterUtilityContainer.remove();\n\t\t\tthis.gutterUtilityLine = void 0;\n\t\t\tthis.gutterUtilityContainer = void 0;\n\t\t\tthis.gutterUtilityButton = void 0;\n\t\t\tthis.gutterUtilitySlot = void 0;\n\t\t\tif (this.pointerSession.mode === \"gutterSelecting\") {\n\t\t\t\tthis.clearPointerSession();\n\t\t\t\tthis.detachDocumentPointerListeners();\n\t\t\t}\n\t\t}\n\t\tthis.syncPointerListeners(pre);\n\t\tthis.updateInteractiveLineAttributes();\n\t\tthis.renderSelection();\n\t\tthis.placeUtility();\n\t}\n\tsetSelectionDirty() {\n\t\tthis.renderedSelectionRange = void 0;\n\t}\n\tisSelectionDirty() {\n\t\treturn this.renderedSelectionRange === null;\n\t}\n\tsetSelection(range, options) {\n\t\tconst isRangeChange = !(range === this.selectedRange || areSelectionsEqual(range ?? void 0, this.selectedRange ?? void 0));\n\t\tif (!this.isSelectionDirty() && !isRangeChange) return;\n\t\tthis.proposedSelectedRange = void 0;\n\t\tthis.selectedRange = range;\n\t\tthis.renderSelection();\n\t\tthis.placeUtility();\n\t\tif (isRangeChange && options?.notify !== false) this.notifySelectionCommitted();\n\t}\n\tgetSelection() {\n\t\treturn this.selectedRange;\n\t}\n\tgetHoveredLine = () => {\n\t\tconst gutterUtilityLine = this.gutterUtilityLine ?? this.hoveredLine;\n\t\tif (gutterUtilityLine != null) {\n\t\t\tif (this.mode === \"diff\" && gutterUtilityLine.type === \"diff-line\") return {\n\t\t\t\tlineNumber: gutterUtilityLine.lineNumber,\n\t\t\t\tside: gutterUtilityLine.annotationSide\n\t\t\t};\n\t\t\tif (this.mode === \"file\" && gutterUtilityLine.type === \"line\") return { lineNumber: gutterUtilityLine.lineNumber };\n\t\t}\n\t};\n\thandlePointerClick = (event) => {\n\t\tconst { onHunkExpand, onLineClick, onLineNumberClick, onTokenClick, onMergeConflictActionClick } = this.options;\n\t\tif (onHunkExpand == null && onLineClick == null && onLineNumberClick == null && onMergeConflictActionClick == null && onTokenClick == null) return;\n\t\tif (this.options.onGutterUtilityClick != null && isGutterUtilityPath(event.composedPath())) return;\n\t\tdebugLogIfEnabled(this.options.__debugPointerEvents, \"click\", \"FileDiff.DEBUG.handlePointerClick:\", event);\n\t\tthis.handlePointerEvent({\n\t\t\teventType: \"click\",\n\t\t\tevent\n\t\t});\n\t};\n\thandlePointerMove = (event) => {\n\t\tif (event.pointerType !== \"mouse\") return;\n\t\tconst { lineHoverHighlight = \"disabled\", onLineEnter, onLineLeave, onTokenEnter, onTokenLeave, enableGutterUtility = false } = this.options;\n\t\tif (lineHoverHighlight === \"disabled\" && !enableGutterUtility && onLineEnter == null && onLineLeave == null && onTokenEnter == null && onTokenLeave == null) return;\n\t\tdebugLogIfEnabled(this.options.__debugPointerEvents, \"move\", \"FileDiff.DEBUG.handlePointerMove:\", event);\n\t\tthis.handlePointerEvent({\n\t\t\teventType: \"move\",\n\t\t\tevent\n\t\t});\n\t};\n\thandlePointerLeave = (event) => {\n\t\tconst { __debugPointerEvents } = this.options;\n\t\tdebugLogIfEnabled(__debugPointerEvents, \"move\", \"FileDiff.DEBUG.handlePointerLeave: no event\");\n\t\tif (this.hoveredLine == null && this.hoveredToken == null) {\n\t\t\tdebugLogIfEnabled(__debugPointerEvents, \"move\", \"FileDiff.DEBUG.handlePointerLeave: returned early, no hovered line or token\");\n\t\t\treturn;\n\t\t}\n\t\tif (this.hoveredToken != null) {\n\t\t\tthis.options.onTokenLeave?.(this.hoveredToken, event);\n\t\t\tthis.clearHoveredToken();\n\t\t}\n\t\tif (this.hoveredLine != null) {\n\t\t\tthis.options.onLineLeave?.({\n\t\t\t\t...this.hoveredLine,\n\t\t\t\tevent\n\t\t\t});\n\t\t\tthis.clearHoveredLine();\n\t\t}\n\t\tthis.placeUtility();\n\t};\n\thandlePointerEvent({ eventType, event }) {\n\t\tconst { __debugPointerEvents } = this.options;\n\t\tconst composedPath = event.composedPath();\n\t\tdebugLogIfEnabled(__debugPointerEvents, eventType, \"FileDiff.DEBUG.handlePointerEvent:\", {\n\t\t\teventType,\n\t\t\tcomposedPath\n\t\t});\n\t\tconst target = this.resolvePointerTarget(composedPath);\n\t\tdebugLogIfEnabled(__debugPointerEvents, eventType, \"FileDiff.DEBUG.handlePointerEvent: resolvePointerTarget result:\", target);\n\t\tconst { onLineClick, onLineNumberClick, onLineEnter, onLineLeave, onTokenClick, onTokenEnter, onTokenLeave, onHunkExpand, onMergeConflictActionClick } = this.options;\n\t\tswitch (eventType) {\n\t\t\tcase \"move\": {\n\t\t\t\tconst sameLine = isHoverableLinePointerTarget(target) && this.hoveredLine?.lineElement === target.lineElement;\n\t\t\t\tif (!(isTokenPointerTarget(target) && this.hoveredToken?.tokenElement === target.tokenElement)) {\n\t\t\t\t\tif (this.hoveredToken != null) {\n\t\t\t\t\t\tonTokenLeave?.(this.hoveredToken, event);\n\t\t\t\t\t\tthis.clearHoveredToken();\n\t\t\t\t\t}\n\t\t\t\t\tif (isTokenPointerTarget(target)) {\n\t\t\t\t\t\tthis.setHoveredToken(this.toTokenEventBaseProps(target));\n\t\t\t\t\t\tonTokenEnter?.(this.hoveredToken, event);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!sameLine) {\n\t\t\t\t\tif (this.hoveredLine != null) {\n\t\t\t\t\t\tonLineLeave?.({\n\t\t\t\t\t\t\t...this.hoveredLine,\n\t\t\t\t\t\t\tevent\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.clearHoveredLine();\n\t\t\t\t\t}\n\t\t\t\t\tif (isHoverableLinePointerTarget(target)) {\n\t\t\t\t\t\tthis.setHoveredLine(this.toEventBaseProps(target));\n\t\t\t\t\t\tthis.placeUtility();\n\t\t\t\t\t\tonLineEnter?.({\n\t\t\t\t\t\t\t...this.hoveredLine,\n\t\t\t\t\t\t\tevent\n\t\t\t\t\t\t});\n\t\t\t\t\t} else this.placeUtility();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"click\": {\n\t\t\t\tif (target == null) break;\n\t\t\t\tif (isMergeConflictActionPointerTarget(target) && onMergeConflictActionClick != null) {\n\t\t\t\t\tonMergeConflictActionClick(target);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (isExpandoPointerTarget(target) && onHunkExpand != null) {\n\t\t\t\t\tonHunkExpand(target.hunkIndex, target.all || event.shiftKey ? \"both\" : target.direction, target.all || event.shiftKey ? Number.POSITIVE_INFINITY : void 0);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (!isHoverableLinePointerTarget(target)) break;\n\t\t\t\tif (isTokenPointerTarget(target) && onTokenClick != null) onTokenClick(this.toTokenEventBaseProps(target), event);\n\t\t\t\tconst eventBase = this.toEventBaseProps(target);\n\t\t\t\tif (onLineNumberClick != null && target.numberColumn) onLineNumberClick({\n\t\t\t\t\t...eventBase,\n\t\t\t\t\tevent\n\t\t\t\t});\n\t\t\t\telse if (onLineClick != null) onLineClick({\n\t\t\t\t\t...eventBase,\n\t\t\t\t\tevent\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tsyncPointerListeners(pre) {\n\t\tconst { __debugPointerEvents, lineHoverHighlight = \"disabled\", onLineClick, onLineNumberClick, onLineEnter, onLineLeave, onTokenClick, onTokenEnter, onTokenLeave, onHunkExpand, onMergeConflictActionClick, enableGutterUtility = false, enableLineSelection = false, onGutterUtilityClick } = this.options;\n\t\tconst enableGutterSelection = onGutterUtilityClick != null;\n\t\tconst shouldAttachPointerListeners = lineHoverHighlight !== \"disabled\" || onLineClick != null || onLineNumberClick != null || onLineEnter != null || onLineLeave != null || onTokenClick != null || onTokenEnter != null || onTokenLeave != null || onHunkExpand != null || onMergeConflictActionClick != null || enableGutterUtility || enableLineSelection || enableGutterSelection;\n\t\tif (shouldAttachPointerListeners && !this.hasPointerListeners) {\n\t\t\tpre.addEventListener(\"click\", this.handlePointerClick);\n\t\t\tpre.addEventListener(\"pointerdown\", this.handlePointerDown);\n\t\t\tpre.addEventListener(\"pointermove\", this.handlePointerMove);\n\t\t\tpre.addEventListener(\"pointerleave\", this.handlePointerLeave);\n\t\t\tthis.hasPointerListeners = true;\n\t\t\tdebugLogIfEnabled(__debugPointerEvents, \"click\", \"FileDiff.DEBUG.attachEventListeners: Attaching click events for:\", (() => {\n\t\t\t\tconst reasons = [];\n\t\t\t\tif (__debugPointerEvents === \"both\" || __debugPointerEvents === \"click\") {\n\t\t\t\t\tif (onLineClick != null) reasons.push(\"onLineClick\");\n\t\t\t\t\tif (onLineNumberClick != null) reasons.push(\"onLineNumberClick\");\n\t\t\t\t\tif (onHunkExpand != null) reasons.push(\"expandable hunk separators\");\n\t\t\t\t\tif (onMergeConflictActionClick != null) reasons.push(\"merge conflict actions\");\n\t\t\t\t}\n\t\t\t\treturn reasons;\n\t\t\t})());\n\t\t\tdebugLogIfEnabled(__debugPointerEvents, \"move\", \"FileDiff.DEBUG.attachEventListeners: Attaching pointer move event\");\n\t\t\tdebugLogIfEnabled(__debugPointerEvents, \"move\", \"FileDiff.DEBUG.attachEventListeners: Attaching pointer leave event\");\n\t\t} else if (!shouldAttachPointerListeners && this.hasPointerListeners) {\n\t\t\tpre.removeEventListener(\"click\", this.handlePointerClick);\n\t\t\tpre.removeEventListener(\"pointerdown\", this.handlePointerDown);\n\t\t\tpre.removeEventListener(\"pointermove\", this.handlePointerMove);\n\t\t\tpre.removeEventListener(\"pointerleave\", this.handlePointerLeave);\n\t\t\tthis.hasPointerListeners = false;\n\t\t}\n\t\tconst hasActiveLineSelectionSession = this.pointerSession.mode === \"selecting\" || this.pointerSession.mode === \"pendingSingleLineUnselect\";\n\t\tconst hasActiveGutterSelectionSession = this.pointerSession.mode === \"gutterSelecting\";\n\t\tif (!enableLineSelection && hasActiveLineSelectionSession || !enableGutterSelection && hasActiveGutterSelectionSession) {\n\t\t\tthis.clearPointerSession();\n\t\t\tthis.detachDocumentPointerListeners();\n\t\t\tthis.selectionAnchor = void 0;\n\t\t\tthis.clearPendingSingleLineState();\n\t\t}\n\t}\n\tupdateInteractiveLineAttributes() {\n\t\tif (this.pre == null) return;\n\t\tconst { onLineClick, onLineNumberClick, enableLineSelection = false } = this.options;\n\t\tconst shouldHaveInteractiveLines = onLineClick != null;\n\t\tconst shouldHaveInteractiveLineNumbers = onLineNumberClick != null || enableLineSelection;\n\t\tif (shouldHaveInteractiveLines && !this.interactiveLinesAttr) {\n\t\t\tthis.pre.setAttribute(\"data-interactive-lines\", \"\");\n\t\t\tthis.interactiveLinesAttr = true;\n\t\t} else if (!shouldHaveInteractiveLines && this.interactiveLinesAttr) {\n\t\t\tthis.pre.removeAttribute(\"data-interactive-lines\");\n\t\t\tthis.interactiveLinesAttr = false;\n\t\t}\n\t\tif (shouldHaveInteractiveLineNumbers && !this.interactiveLineNumbersAttr) {\n\t\t\tthis.pre.setAttribute(\"data-interactive-line-numbers\", \"\");\n\t\t\tthis.interactiveLineNumbersAttr = true;\n\t\t} else if (!shouldHaveInteractiveLineNumbers && this.interactiveLineNumbersAttr) {\n\t\t\tthis.pre.removeAttribute(\"data-interactive-line-numbers\");\n\t\t\tthis.interactiveLineNumbersAttr = false;\n\t\t}\n\t}\n\thandlePointerDown = (event) => {\n\t\tif (event.pointerType === \"mouse\" && event.button !== 0 || this.pre == null || this.pointerSession.mode !== \"idle\") return;\n\t\tconst path = event.composedPath();\n\t\tif (isGutterUtilityPath(path) && this.options.onGutterUtilityClick != null) this.startGutterSelectionFromPointerDown(event);\n\t\telse {\n\t\t\tif (event.pointerType !== \"mouse\") this.revealUtilityFromGutterPath(path);\n\t\t\tthis.startLineSelectionFromPointerDown(event);\n\t\t}\n\t};\n\tstartLineSelectionFromPointerDown(event) {\n\t\tconst { enableLineSelection = false } = this.options;\n\t\tif (!enableLineSelection) return;\n\t\tconst pointerInfo = this.resolveSelectionInfo(event, {\n\t\t\tsource: \"event-path\",\n\t\t\trequireNumberColumn: true\n\t\t});\n\t\tif (pointerInfo == null) return;\n\t\tconst { pre } = this;\n\t\tif (pre == null) return;\n\t\tconst { lineNumber, eventSide, lineIndex } = pointerInfo;\n\t\tif (event.shiftKey && this.selectedRange != null) {\n\t\t\tconst rowRange = this.getIndexesFromSelection(this.selectedRange, pre.getAttribute(\"data-diff-type\") === \"split\");\n\t\t\tif (rowRange == null) return;\n\t\t\tconst useStart = rowRange.start <= rowRange.end ? lineIndex >= rowRange.start : lineIndex <= rowRange.end;\n\t\t\tthis.selectionAnchor = {\n\t\t\t\tlineNumber: useStart ? this.selectedRange.start : this.selectedRange.end,\n\t\t\t\tside: useStart ? this.selectedRange.side : this.selectedRange.endSide ?? this.selectedRange.side\n\t\t\t};\n\t\t\tthis.updateSelection(lineNumber, eventSide, false);\n\t\t\tthis.notifySelectionStart(this.getCurrentSelectionRange());\n\t\t\tthis.pointerSession = {\n\t\t\t\tmode: \"selecting\",\n\t\t\t\tpointerId: event.pointerId\n\t\t\t};\n\t\t\tthis.attachDocumentPointerListeners();\n\t\t\treturn;\n\t\t}\n\t\tif (this.selectedRange?.start === lineNumber && this.selectedRange?.end === lineNumber) {\n\t\t\tconst point = {\n\t\t\t\tlineNumber,\n\t\t\t\tside: eventSide\n\t\t\t};\n\t\t\tthis.selectionAnchor = point;\n\t\t\tthis.pointerSession = {\n\t\t\t\tmode: \"pendingSingleLineUnselect\",\n\t\t\t\tpointerId: event.pointerId,\n\t\t\t\tanchor: point,\n\t\t\t\tpending: point\n\t\t\t};\n\t\t\tthis.attachDocumentPointerListeners();\n\t\t\treturn;\n\t\t}\n\t\tif (this.options.controlledSelection === true) this.proposedSelectedRange = null;\n\t\telse this.selectedRange = null;\n\t\tthis.placeUtility();\n\t\tthis.selectionAnchor = {\n\t\t\tlineNumber,\n\t\t\tside: eventSide\n\t\t};\n\t\tthis.updateSelection(lineNumber, eventSide, false);\n\t\tthis.notifySelectionStart(this.getCurrentSelectionRange());\n\t\tthis.pointerSession = {\n\t\t\tmode: \"selecting\",\n\t\t\tpointerId: event.pointerId\n\t\t};\n\t\tthis.attachDocumentPointerListeners();\n\t}\n\tstartGutterSelectionFromPointerDown(event) {\n\t\tconst { enableLineSelection = false, onGutterUtilityClick } = this.options;\n\t\tif (onGutterUtilityClick == null) return;\n\t\tconst selectedEndpoints = this.currentSelectionEnds();\n\t\tconst point = selectedEndpoints?.bottom ?? this.resolveSelectionPoint(event, {\n\t\t\tsource: \"event-path\",\n\t\t\texcludeUtility: false\n\t\t});\n\t\tconst anchor = selectedEndpoints?.top ?? point;\n\t\tif (point == null || anchor == null) return;\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tthis.pointerSession = {\n\t\t\tmode: \"gutterSelecting\",\n\t\t\tpointerId: event.pointerId,\n\t\t\tanchor,\n\t\t\tcurrent: point\n\t\t};\n\t\tif (enableLineSelection) {\n\t\t\tthis.selectionAnchor = {\n\t\t\t\tlineNumber: anchor.lineNumber,\n\t\t\t\tside: anchor.side\n\t\t\t};\n\t\t\tthis.updateSelection(point.lineNumber, point.side, false);\n\t\t\tthis.notifySelectionStart(this.getCurrentSelectionRange());\n\t\t}\n\t\tthis.attachDocumentPointerListeners();\n\t}\n\thandleDocumentPointerMove = (event) => {\n\t\tconst { enableLineSelection = false } = this.options;\n\t\tswitch (this.pointerSession.mode) {\n\t\t\tcase \"idle\": return;\n\t\t\tcase \"gutterSelecting\": {\n\t\t\t\tif (event.pointerId !== this.pointerSession.pointerId) return;\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst point = this.resolveSelectionPoint(event, { source: \"coordinates-first\" });\n\t\t\t\tif (point == null) return;\n\t\t\t\tthis.pointerSession.current = point;\n\t\t\t\tif (enableLineSelection === true) this.updateSelection(point.lineNumber, point.side);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase \"selecting\": {\n\t\t\t\tif (event.pointerId !== this.pointerSession.pointerId) return;\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst pointerInfo = this.resolveSelectionInfo(event, {\n\t\t\t\t\tsource: \"coordinates-first\",\n\t\t\t\t\trequireNumberColumn: false\n\t\t\t\t});\n\t\t\t\tif (pointerInfo == null || this.selectionAnchor == null) return;\n\t\t\t\tthis.updateSelection(pointerInfo.lineNumber, pointerInfo.eventSide);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase \"pendingSingleLineUnselect\": {\n\t\t\t\tif (event.pointerId !== this.pointerSession.pointerId) return;\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst pointerInfo = this.resolveSelectionInfo(event, {\n\t\t\t\t\tsource: \"coordinates-first\",\n\t\t\t\t\trequireNumberColumn: false\n\t\t\t\t});\n\t\t\t\tif (pointerInfo == null || this.selectionAnchor == null) return;\n\t\t\t\tconst point = {\n\t\t\t\t\tlineNumber: pointerInfo.lineNumber,\n\t\t\t\t\tside: pointerInfo.eventSide\n\t\t\t\t};\n\t\t\t\tif (areSelectionPointsEqual(this.pointerSession.pending, point)) return;\n\t\t\t\tthis.updateSelection(pointerInfo.lineNumber, pointerInfo.eventSide, false);\n\t\t\t\tthis.notifySelectionStart(this.getCurrentSelectionRange());\n\t\t\t\tthis.notifySelectionChangeDelta();\n\t\t\t\tthis.pointerSession = {\n\t\t\t\t\tmode: \"selecting\",\n\t\t\t\t\tpointerId: event.pointerId\n\t\t\t\t};\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t};\n\thandleDocumentPointerUp = (event) => {\n\t\tconst { enableLineSelection = false, onGutterUtilityClick } = this.options;\n\t\tswitch (this.pointerSession.mode) {\n\t\t\tcase \"idle\": return;\n\t\t\tcase \"gutterSelecting\": {\n\t\t\t\tif (event.pointerId !== this.pointerSession.pointerId) return;\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst point = this.resolveSelectionPoint(event, { source: \"coordinates-first\" });\n\t\t\t\tif (point != null) {\n\t\t\t\t\tthis.pointerSession.current = point;\n\t\t\t\t\tif (enableLineSelection) this.updateSelection(point.lineNumber, point.side);\n\t\t\t\t}\n\t\t\t\tonGutterUtilityClick?.(this.buildSelectedLineRange(this.pointerSession.anchor, this.pointerSession.current));\n\t\t\t\tthis.selectionAnchor = void 0;\n\t\t\t\tif (enableLineSelection) {\n\t\t\t\t\tthis.notifySelectionEnd(this.getCurrentSelectionRange());\n\t\t\t\t\tthis.notifySelectionCommitted();\n\t\t\t\t\tthis.clearProposedSelection();\n\t\t\t\t}\n\t\t\t\tthis.clearPointerSession();\n\t\t\t\tthis.detachDocumentPointerListeners();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase \"pendingSingleLineUnselect\":\n\t\t\t\tif (event.pointerId !== this.pointerSession.pointerId) return;\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis.updateSelection(null, void 0, false);\n\t\t\t\tthis.selectionAnchor = void 0;\n\t\t\t\tthis.clearPendingSingleLineState();\n\t\t\t\tthis.detachDocumentPointerListeners();\n\t\t\t\tthis.notifySelectionEnd(this.getCurrentSelectionRange());\n\t\t\t\tthis.notifySelectionCommitted();\n\t\t\t\tthis.clearProposedSelection();\n\t\t\t\treturn;\n\t\t\tcase \"selecting\":\n\t\t\t\tif (event.pointerId !== this.pointerSession.pointerId) return;\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis.selectionAnchor = void 0;\n\t\t\t\tthis.detachDocumentPointerListeners();\n\t\t\t\tthis.clearPointerSession();\n\t\t\t\tthis.notifySelectionEnd(this.getCurrentSelectionRange());\n\t\t\t\tthis.notifySelectionCommitted();\n\t\t\t\tthis.clearProposedSelection();\n\t\t}\n\t};\n\thandleDocumentPointerCancel = (event) => {\n\t\tswitch (this.pointerSession.mode) {\n\t\t\tcase \"idle\": return;\n\t\t\tcase \"gutterSelecting\":\n\t\t\tcase \"selecting\":\n\t\t\tcase \"pendingSingleLineUnselect\":\n\t\t\t\tif (\"pointerId\" in this.pointerSession) {\n\t\t\t\t\tif (event.pointerId !== this.pointerSession.pointerId) return;\n\t\t\t\t}\n\t\t\t\tthis.selectionAnchor = void 0;\n\t\t\t\tthis.clearProposedSelection();\n\t\t\t\tthis.clearPendingSingleLineState();\n\t\t\t\tthis.clearPointerSession();\n\t\t\t\tthis.detachDocumentPointerListeners();\n\t\t}\n\t};\n\tclearHoveredLine() {\n\t\tif (this.hoveredLine == null) return;\n\t\tthis.hoveredLine.lineElement.removeAttribute(\"data-hovered\");\n\t\tthis.hoveredLine.numberElement.removeAttribute(\"data-hovered\");\n\t\tthis.hoveredLine = void 0;\n\t}\n\tsetHoveredLine(hoveredLine) {\n\t\tconst { lineHoverHighlight = \"disabled\" } = this.options;\n\t\tif (this.hoveredLine != null) this.clearHoveredLine();\n\t\tthis.hoveredLine = hoveredLine;\n\t\tif (lineHoverHighlight !== \"disabled\") {\n\t\t\tif (lineHoverHighlight === \"both\" || lineHoverHighlight === \"line\") this.hoveredLine.lineElement.setAttribute(\"data-hovered\", \"\");\n\t\t\tif (lineHoverHighlight === \"both\" || lineHoverHighlight === \"number\") this.hoveredLine.numberElement.setAttribute(\"data-hovered\", \"\");\n\t\t}\n\t}\n\tclearHoveredToken() {\n\t\tif (this.hoveredToken == null) return;\n\t\tthis.hoveredToken = void 0;\n\t}\n\tsetHoveredToken(hoveredToken) {\n\t\tif (this.hoveredToken != null) this.clearHoveredToken();\n\t\tthis.hoveredToken = hoveredToken;\n\t}\n\tensureGutterUtilityNode(useCustomGutterUtility) {\n\t\tif (this.gutterUtilityContainer == null) {\n\t\t\tthis.gutterUtilityContainer = document.createElement(\"div\");\n\t\t\tthis.gutterUtilityContainer.setAttribute(\"data-gutter-utility-slot\", \"\");\n\t\t}\n\t\tif (useCustomGutterUtility) {\n\t\t\tif (this.gutterUtilityButton != null) {\n\t\t\t\tthis.gutterUtilityButton.remove();\n\t\t\t\tthis.gutterUtilityButton = void 0;\n\t\t\t}\n\t\t\tif (this.gutterUtilitySlot == null) {\n\t\t\t\tthis.gutterUtilitySlot = document.createElement(\"slot\");\n\t\t\t\tthis.gutterUtilitySlot.name = \"gutter-utility-slot\";\n\t\t\t}\n\t\t\tif (this.gutterUtilitySlot.parentNode !== this.gutterUtilityContainer) this.gutterUtilityContainer.replaceChildren(this.gutterUtilitySlot);\n\t\t} else {\n\t\t\tthis.gutterUtilitySlot?.remove();\n\t\t\tthis.gutterUtilitySlot = void 0;\n\t\t\tif (this.gutterUtilityButton == null) {\n\t\t\t\tconst tempDiv = document.createElement(\"div\");\n\t\t\t\ttempDiv.innerHTML = toHtml(createGutterUtilityElement());\n\t\t\t\tconst utilityButton = tempDiv.firstElementChild;\n\t\t\t\tif (!(utilityButton instanceof HTMLButtonElement)) throw new Error(\"InteractionManager.ensureGutterUtilityNode: Node element should be a button\");\n\t\t\t\tutilityButton.remove();\n\t\t\t\tthis.gutterUtilityButton = utilityButton;\n\t\t\t}\n\t\t\tif (this.gutterUtilityButton.parentNode !== this.gutterUtilityContainer) this.gutterUtilityContainer.replaceChildren(this.gutterUtilityButton);\n\t\t}\n\t}\n\trevealUtilityFromGutterPath(path) {\n\t\tif (this.placeUtilityFromSelection()) return;\n\t\tconst target = this.resolvePointerTarget(path);\n\t\tif (isLinePointerTarget(target) && target.numberColumn) this.showUtilityOnLine(this.toEventBaseProps(target));\n\t}\n\tplaceUtility() {\n\t\tif (this.placeUtilityFromSelection()) return;\n\t\tif (this.hoveredLine != null) {\n\t\t\tthis.showUtilityOnLine(this.hoveredLine);\n\t\t\treturn;\n\t\t}\n\t\tthis.hideUtility();\n\t}\n\tplaceUtilityFromSelection() {\n\t\tconst endpoints = this.currentSelectionEnds();\n\t\tif (endpoints == null) return false;\n\t\tconst target = this.targetForSelectionPoint(endpoints.bottom);\n\t\tif (target == null) this.hideUtility();\n\t\telse this.showUtilityOnLine(this.toEventBaseProps(target));\n\t\treturn true;\n\t}\n\tshowUtilityOnLine(line) {\n\t\tif (this.gutterUtilityContainer == null) return;\n\t\tthis.gutterUtilityLine = line;\n\t\tline.numberElement.appendChild(this.gutterUtilityContainer);\n\t}\n\thideUtility() {\n\t\tthis.gutterUtilityContainer?.remove();\n\t\tthis.gutterUtilityLine = void 0;\n\t}\n\tcurrentSelectionEnds() {\n\t\tconst range = this.getCurrentSelectionRange();\n\t\treturn range == null ? void 0 : this.selectionEnds(range);\n\t}\n\tselectionEnds(range) {\n\t\tconst start = {\n\t\t\tlineNumber: range.start,\n\t\t\tside: range.side\n\t\t};\n\t\tconst end = {\n\t\t\tlineNumber: range.end,\n\t\t\tside: range.endSide ?? range.side\n\t\t};\n\t\tconst startIndex = this.selectionPointRowIndex(start);\n\t\tconst endIndex = this.selectionPointRowIndex(end);\n\t\tif (startIndex == null || endIndex == null) return;\n\t\treturn startIndex > endIndex ? {\n\t\t\ttop: end,\n\t\t\tbottom: start\n\t\t} : {\n\t\t\ttop: start,\n\t\t\tbottom: end\n\t\t};\n\t}\n\tselectionPointRowIndex(point) {\n\t\tconst indexes = this.getLineIndex(point.lineNumber, point.side);\n\t\tif (indexes == null) return;\n\t\treturn this.isSplitDiff() ? indexes[1] : indexes[0];\n\t}\n\ttargetForSelectionPoint(point) {\n\t\tif (this.pre == null) return;\n\t\tconst indexes = this.getLineIndex(point.lineNumber, point.side);\n\t\tif (indexes == null) return;\n\t\tconst lineIndex = this.mode === \"diff\" ? `${indexes[0]},${indexes[1]}` : `${indexes[0]}`;\n\t\tconst candidates = this.pre.querySelectorAll(`[data-column-number=\"${point.lineNumber}\"][data-line-index=\"${lineIndex}\"]`);\n\t\tfor (const element of candidates) {\n\t\t\tif (!(element instanceof HTMLElement)) continue;\n\t\t\tconst target = this.resolvePointerTarget(getElementPath(element));\n\t\t\tif (!isLinePointerTarget(target)) continue;\n\t\t\tif (this.mode === \"diff\" && point.side != null && target.side !== point.side) continue;\n\t\t\treturn target;\n\t\t}\n\t}\n\tattachDocumentPointerListeners() {\n\t\tif (this.hasDocumentPointerListeners) return;\n\t\tdocument.addEventListener(\"pointermove\", this.handleDocumentPointerMove);\n\t\tdocument.addEventListener(\"pointerup\", this.handleDocumentPointerUp);\n\t\tdocument.addEventListener(\"pointercancel\", this.handleDocumentPointerCancel);\n\t\tthis.hasDocumentPointerListeners = true;\n\t}\n\tdetachDocumentPointerListeners() {\n\t\tif (!this.hasDocumentPointerListeners) return;\n\t\tdocument.removeEventListener(\"pointermove\", this.handleDocumentPointerMove);\n\t\tdocument.removeEventListener(\"pointerup\", this.handleDocumentPointerUp);\n\t\tdocument.removeEventListener(\"pointercancel\", this.handleDocumentPointerCancel);\n\t\tthis.hasDocumentPointerListeners = false;\n\t}\n\tclearPointerSession() {\n\t\tthis.pointerSession = { mode: \"idle\" };\n\t}\n\tclearPendingSingleLineState() {\n\t\tif (this.pointerSession.mode === \"pendingSingleLineUnselect\") this.pointerSession = { mode: \"idle\" };\n\t}\n\tselectionInfoFromPath(path, requireNumberColumn) {\n\t\tconst target = this.resolvePointerTarget(path);\n\t\tif (!isLinePointerTarget(target)) return;\n\t\tif (requireNumberColumn && !target.numberColumn) return;\n\t\tif (target.splitLineIndex == null) return;\n\t\treturn {\n\t\t\tlineIndex: target.splitLineIndex,\n\t\t\tlineNumber: target.lineNumber,\n\t\t\teventSide: this.mode === \"diff\" ? target.side : void 0\n\t\t};\n\t}\n\tresolveSelectionInfo(event, options) {\n\t\tconst path = this.resolveSelectionPath(event, options);\n\t\treturn path != null ? this.selectionInfoFromPath(path, options.requireNumberColumn) : void 0;\n\t}\n\tselectionPointFromPath(path) {\n\t\tconst target = this.resolvePointerTarget(path);\n\t\tif (!isLinePointerTarget(target)) return;\n\t\treturn {\n\t\t\tlineNumber: target.lineNumber,\n\t\t\tside: this.mode === \"diff\" ? target.side : void 0\n\t\t};\n\t}\n\tresolveSelectionPoint(event, options) {\n\t\tconst path = this.resolveSelectionPath(event, options);\n\t\treturn path != null ? this.selectionPointFromPath(path) : void 0;\n\t}\n\tresolveSelectionPath(event, options) {\n\t\tconst excludeUtility = options.excludeUtility !== false;\n\t\tswitch (options.source) {\n\t\t\tcase \"event-path\": return this.pathFromEventPath(event.composedPath(), excludeUtility);\n\t\t\tcase \"coordinates-first\": {\n\t\t\t\tconst coordinatePath = this.pathFromCoordinates(event, excludeUtility);\n\t\t\t\tif (coordinatePath !== void 0) return coordinatePath ?? void 0;\n\t\t\t\treturn this.pathFromEventPath(event.composedPath(), excludeUtility);\n\t\t\t}\n\t\t}\n\t}\n\tpathFromCoordinates(event, excludeUtility) {\n\t\tconst coordinateTarget = this.hitTest(event);\n\t\tif (coordinateTarget === void 0) return;\n\t\tif (coordinateTarget === null) return null;\n\t\treturn this.pathFromElement(coordinateTarget, excludeUtility) ?? null;\n\t}\n\tpathFromEventPath(path, excludeUtility) {\n\t\tif (excludeUtility && isGutterUtilityPath(path)) return;\n\t\tfor (const element of path) if (element instanceof Element) return this.pathFromElement(element, excludeUtility);\n\t}\n\tpathFromElement(element, excludeUtility) {\n\t\tconst path = getElementPath(element);\n\t\tif (excludeUtility && isGutterUtilityPath(path)) return;\n\t\tconst row = closestSelectableRow(element);\n\t\tif (row != null) return getElementPath(row);\n\t\treturn this.pathFromAnnotationSlot(element);\n\t}\n\tpathFromAnnotationSlot(element) {\n\t\tconst point = selectionPointFromAnnotationSlotName(getAnnotationSlotName(element));\n\t\tif (point == null) return;\n\t\tconst target = this.targetForSelectionPoint(point);\n\t\treturn target != null ? getElementPath(target.lineElement) : void 0;\n\t}\n\thitTest(event) {\n\t\tif (!Number.isFinite(event.clientX) || !Number.isFinite(event.clientY)) return;\n\t\tconst root = this.pre?.getRootNode();\n\t\tconst elementFromPointRoot = hasElementFromPoint(root) ? root : hasElementFromPoint(document) ? document : void 0;\n\t\tif (elementFromPointRoot == null) return;\n\t\treturn elementFromPointRoot.elementFromPoint(event.clientX, event.clientY);\n\t}\n\tgetLineIndex(lineNumber, side) {\n\t\tconst { getLineIndex } = this.options;\n\t\treturn getLineIndex != null ? getLineIndex(lineNumber, side) : [lineNumber - 1, lineNumber - 1];\n\t}\n\tgetCurrentSelectionRange() {\n\t\treturn this.proposedSelectedRange !== void 0 ? this.proposedSelectedRange : this.selectedRange;\n\t}\n\tclearProposedSelection() {\n\t\tthis.proposedSelectedRange = void 0;\n\t}\n\tupdateSelection(currentLine, side, emitChange = true) {\n\t\tconst previousRange = this.getCurrentSelectionRange();\n\t\tlet nextRange;\n\t\tif (currentLine == null) nextRange = null;\n\t\telse {\n\t\t\tconst anchorSide = this.selectionAnchor?.side ?? side;\n\t\t\tconst anchorLine = this.selectionAnchor?.lineNumber ?? currentLine;\n\t\t\tnextRange = this.buildSelectionRange(anchorLine, currentLine, anchorSide, side);\n\t\t}\n\t\tif (areSelectionsEqual(previousRange ?? void 0, nextRange ?? void 0)) return;\n\t\tif (this.options.controlledSelection === true) this.proposedSelectedRange = nextRange;\n\t\telse {\n\t\t\tthis.selectedRange = nextRange;\n\t\t\tthis.queuedSelectionRender ??= requestAnimationFrame(this.renderSelection);\n\t\t}\n\t\tthis.placeUtility();\n\t\tif (emitChange) this.notifySelectionChangeDelta();\n\t}\n\tgetIndexesFromSelection(selectedRange, split) {\n\t\tif (this.pre == null) return;\n\t\tconst startIndexes = this.getLineIndex(selectedRange.start, selectedRange.side);\n\t\tconst finalIndexes = this.getLineIndex(selectedRange.end, selectedRange.endSide ?? selectedRange.side);\n\t\treturn startIndexes != null && finalIndexes != null ? {\n\t\t\tstart: split ? startIndexes[1] : startIndexes[0],\n\t\t\tend: split ? finalIndexes[1] : finalIndexes[0]\n\t\t} : void 0;\n\t}\n\trenderSelection = () => {\n\t\tif (this.queuedSelectionRender != null) {\n\t\t\tcancelAnimationFrame(this.queuedSelectionRender);\n\t\t\tthis.queuedSelectionRender = void 0;\n\t\t}\n\t\tif (this.pre == null || this.renderedSelectionRange === this.selectedRange) return;\n\t\tconst allSelected = this.pre.querySelectorAll(\"[data-selected-line]\");\n\t\tfor (const element of allSelected) element.removeAttribute(\"data-selected-line\");\n\t\tthis.renderedSelectionRange = this.selectedRange;\n\t\tif (this.selectedRange == null) return;\n\t\tconst { children: codeElements } = this.pre;\n\t\tif (codeElements.length === 0) return;\n\t\tif (codeElements.length > 2) {\n\t\t\tconsole.error(codeElements);\n\t\t\tthrow new Error(\"InteractionManager.renderSelection: Somehow there are more than 2 code elements...\");\n\t\t}\n\t\tconst split = this.pre.getAttribute(\"data-diff-type\") === \"split\";\n\t\tconst rowRange = this.getIndexesFromSelection(this.selectedRange, split);\n\t\tif (rowRange == null) {\n\t\t\tconsole.error({\n\t\t\t\trowRange,\n\t\t\t\tselectedRange: this.selectedRange\n\t\t\t});\n\t\t\tthrow new Error(\"InteractionManager.renderSelection: No valid rowRange\");\n\t\t}\n\t\tconst isSingle = rowRange.start === rowRange.end;\n\t\tconst first = Math.min(rowRange.start, rowRange.end);\n\t\tconst last = Math.max(rowRange.start, rowRange.end);\n\t\tfor (const code of codeElements) {\n\t\t\tconst [gutter, content] = code.children;\n\t\t\tconst len = content.children.length;\n\t\t\tif (len !== gutter.children.length) throw new Error(\"InteractionManager.renderSelection: gutter and content children dont match, something is wrong\");\n\t\t\tfor (let i = 0; i < len; i++) {\n\t\t\t\tconst contentElement = content.children[i];\n\t\t\t\tconst gutterElement = gutter.children[i];\n\t\t\t\tif (!(contentElement instanceof HTMLElement) || !(gutterElement instanceof HTMLElement)) continue;\n\t\t\t\tconst lineIndex = this.parseLineIndex(contentElement, split);\n\t\t\t\tif ((lineIndex ?? 0) > last) break;\n\t\t\t\tif (lineIndex == null || lineIndex < first) continue;\n\t\t\t\tlet attributeValue = isSingle ? \"single\" : lineIndex === first ? \"first\" : lineIndex === last ? \"last\" : \"\";\n\t\t\t\tcontentElement.setAttribute(\"data-selected-line\", attributeValue);\n\t\t\t\tgutterElement.setAttribute(\"data-selected-line\", attributeValue);\n\t\t\t\tif (gutterElement.nextSibling instanceof HTMLElement && contentElement.nextSibling instanceof HTMLElement && (contentElement.nextSibling.hasAttribute(\"data-line-annotation\") || contentElement.nextSibling.hasAttribute(\"data-merge-conflict-actions\"))) {\n\t\t\t\t\tif (isSingle) {\n\t\t\t\t\t\tattributeValue = \"last\";\n\t\t\t\t\t\tcontentElement.setAttribute(\"data-selected-line\", \"first\");\n\t\t\t\t\t} else if (lineIndex === first) attributeValue = \"\";\n\t\t\t\t\telse if (lineIndex === last) contentElement.setAttribute(\"data-selected-line\", \"\");\n\t\t\t\t\tcontentElement.nextSibling.setAttribute(\"data-selected-line\", attributeValue);\n\t\t\t\t\tgutterElement.nextSibling.setAttribute(\"data-selected-line\", attributeValue);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\tnotifySelectionCommitted() {\n\t\tthis.options.onLineSelected?.(this.getCurrentSelectionRange() ?? null);\n\t}\n\tnotifySelectionChangeDelta() {\n\t\tthis.options.onLineSelectionChange?.(this.getCurrentSelectionRange() ?? null);\n\t}\n\tnotifySelectionStart(range) {\n\t\tthis.options.onLineSelectionStart?.(range);\n\t}\n\tnotifySelectionEnd(range) {\n\t\tthis.options.onLineSelectionEnd?.(range);\n\t}\n\ttoEventBaseProps(target) {\n\t\tif (this.mode === \"file\") return {\n\t\t\ttype: \"line\",\n\t\t\tlineElement: target.lineElement,\n\t\t\tlineNumber: target.lineNumber,\n\t\t\tnumberColumn: target.numberColumn,\n\t\t\tnumberElement: target.numberElement\n\t\t};\n\t\treturn {\n\t\t\ttype: \"diff-line\",\n\t\t\tannotationSide: target.side,\n\t\t\tlineType: target.lineType,\n\t\t\tlineElement: target.lineElement,\n\t\t\tnumberElement: target.numberElement,\n\t\t\tlineNumber: target.lineNumber,\n\t\t\tnumberColumn: target.numberColumn\n\t\t};\n\t}\n\ttoTokenEventBaseProps({ lineCharEnd, lineCharStart, lineNumber, side, tokenElement, tokenText }) {\n\t\tif (this.mode === \"file\") return {\n\t\t\ttype: \"token\",\n\t\t\tlineCharEnd,\n\t\t\tlineCharStart,\n\t\t\tlineNumber,\n\t\t\ttokenElement,\n\t\t\ttokenText\n\t\t};\n\t\treturn {\n\t\t\ttype: \"token\",\n\t\t\tlineCharEnd,\n\t\t\tlineCharStart,\n\t\t\tlineNumber,\n\t\t\tside,\n\t\t\ttokenElement,\n\t\t\ttokenText\n\t\t};\n\t}\n\tbuildSelectedLineRange(anchor, current) {\n\t\treturn this.buildSelectionRange(anchor.lineNumber, current.lineNumber, anchor.side, current.side);\n\t}\n\tbuildSelectionRange(start, end, side, endSide) {\n\t\treturn {\n\t\t\tstart,\n\t\t\tend,\n\t\t\t...side != null ? { side } : {},\n\t\t\t...side !== endSide && endSide != null ? { endSide } : {}\n\t\t};\n\t}\n\tresolvePointerTarget(path) {\n\t\tlet numberColumn = false;\n\t\tlet lineType;\n\t\tlet codeElement;\n\t\tlet lineElement;\n\t\tlet lineIndexValue;\n\t\tlet numberElement;\n\t\tlet tokenElement;\n\t\tlet tokenInfo;\n\t\tlet expandInfo;\n\t\tlet lineNumber;\n\t\tlet mergeConflictActionTarget;\n\t\tfor (const element of path) {\n\t\t\tif (!(element instanceof HTMLElement)) continue;\n\t\t\tif (mergeConflictActionTarget == null && element.hasAttribute(\"data-merge-conflict-action\")) {\n\t\t\t\tconst resolutionValue = element.getAttribute(\"data-merge-conflict-action\") ?? void 0;\n\t\t\t\tconst conflictIndexValue = element.getAttribute(\"data-merge-conflict-conflict-index\") ?? void 0;\n\t\t\t\tconst conflictIndex = conflictIndexValue != null ? Number.parseInt(conflictIndexValue, 10) : NaN;\n\t\t\t\tif (isMergeConflictResolution(resolutionValue) && Number.isFinite(conflictIndex)) mergeConflictActionTarget = {\n\t\t\t\t\tkind: \"merge-conflict-action\",\n\t\t\t\t\tresolution: resolutionValue,\n\t\t\t\t\tconflictIndex\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (tokenElement == null && element.hasAttribute(\"data-char\")) {\n\t\t\t\ttokenElement = element;\n\t\t\t\tconst startAttr = element.getAttribute(\"data-char\");\n\t\t\t\tif (startAttr != null) {\n\t\t\t\t\tconst lineCharStart = Number.parseInt(startAttr, 10);\n\t\t\t\t\tif (!Number.isNaN(lineCharStart)) {\n\t\t\t\t\t\tconst tokenText = element.textContent ?? \"\";\n\t\t\t\t\t\tconst lineCharEnd = lineCharStart + tokenText.length;\n\t\t\t\t\t\tif (tokenText.trim() !== \"\" || this.options.enableTokenInteractionsOnWhitespace === true) tokenInfo = {\n\t\t\t\t\t\t\ttokenElement,\n\t\t\t\t\t\t\tlineCharStart,\n\t\t\t\t\t\t\tlineCharEnd,\n\t\t\t\t\t\t\ttokenText\n\t\t\t\t\t\t};\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst columnNumber = numberElement == null ? element.getAttribute(\"data-column-number\") ?? void 0 : void 0;\n\t\t\tif (columnNumber != null) {\n\t\t\t\tnumberElement = element;\n\t\t\t\tlineNumber = Number.parseInt(columnNumber, 10);\n\t\t\t\tnumberColumn = true;\n\t\t\t\tlineType = getLineTypeFromElement(element);\n\t\t\t\tlineIndexValue = element.getAttribute(\"data-line-index\") ?? void 0;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst lineAttr = lineElement == null ? element.getAttribute(\"data-line\") ?? void 0 : void 0;\n\t\t\tif (lineAttr != null) {\n\t\t\t\tlineElement = element;\n\t\t\t\tlineNumber = Number.parseInt(lineAttr, 10);\n\t\t\t\tlineType = getLineTypeFromElement(element);\n\t\t\t\tlineIndexValue = element.getAttribute(\"data-line-index\") ?? void 0;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (expandInfo == null && (element.hasAttribute(\"data-expand-button\") || element.hasAttribute(\"data-unmodified-lines\"))) {\n\t\t\t\texpandInfo = {\n\t\t\t\t\thunkIndex: void 0,\n\t\t\t\t\tdirection: (() => {\n\t\t\t\t\t\tif (element.hasAttribute(\"data-expand-up\")) return \"up\";\n\t\t\t\t\t\tif (element.hasAttribute(\"data-expand-down\")) return \"down\";\n\t\t\t\t\t\treturn \"both\";\n\t\t\t\t\t})(),\n\t\t\t\t\tall: element.hasAttribute(\"data-expand-all-button\")\n\t\t\t\t};\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst expandIndexValue = expandInfo != null ? element.getAttribute(\"data-expand-index\") ?? void 0 : void 0;\n\t\t\tif (expandInfo != null && expandIndexValue != null) {\n\t\t\t\tconst expandIndex = Number.parseInt(expandIndexValue, 10);\n\t\t\t\tif (!Number.isNaN(expandIndex)) expandInfo.hunkIndex = expandIndex;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (codeElement == null && element.hasAttribute(\"data-code\")) {\n\t\t\t\tcodeElement = element;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (mergeConflictActionTarget != null) return mergeConflictActionTarget;\n\t\tif (expandInfo?.hunkIndex != null) return {\n\t\t\ttype: \"line-info\",\n\t\t\thunkIndex: expandInfo.hunkIndex,\n\t\t\tdirection: expandInfo.direction,\n\t\t\tall: expandInfo.all\n\t\t};\n\t\tlineElement ??= lineIndexValue != null ? queryHTMLElement(codeElement, `[data-line][data-line-index=\"${lineIndexValue}\"]`) : void 0;\n\t\tnumberElement ??= lineIndexValue != null ? queryHTMLElement(codeElement, `[data-column-number][data-line-index=\"${lineIndexValue}\"]`) : void 0;\n\t\tif (codeElement == null || lineElement == null || numberElement == null || lineType == null || lineNumber == null || Number.isNaN(lineNumber)) return;\n\t\tconst splitLineIndex = this.parseLineIndex(lineElement, this.isSplitDiff());\n\t\tif (tokenInfo != null) {\n\t\t\tif (this.mode === \"file\") return {\n\t\t\t\tkind: \"token\",\n\t\t\t\tlineType,\n\t\t\t\tlineElement,\n\t\t\t\tlineNumber,\n\t\t\t\tnumberColumn,\n\t\t\t\tnumberElement,\n\t\t\t\tside: void 0,\n\t\t\t\tsplitLineIndex,\n\t\t\t\t...tokenInfo\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tkind: \"token\",\n\t\t\t\tlineType,\n\t\t\t\tlineElement,\n\t\t\t\tlineNumber,\n\t\t\t\tnumberColumn,\n\t\t\t\tnumberElement,\n\t\t\t\tside: getAnnotationSide(lineType, codeElement),\n\t\t\t\tsplitLineIndex,\n\t\t\t\t...tokenInfo\n\t\t\t};\n\t\t}\n\t\tif (this.mode === \"file\") return {\n\t\t\tkind: \"line\",\n\t\t\tlineType,\n\t\t\tlineElement,\n\t\t\tlineNumber,\n\t\t\tnumberColumn,\n\t\t\tnumberElement,\n\t\t\tside: void 0,\n\t\t\tsplitLineIndex\n\t\t};\n\t\treturn {\n\t\t\tkind: \"line\",\n\t\t\tlineType,\n\t\t\tlineElement,\n\t\t\tlineNumber,\n\t\t\tnumberColumn,\n\t\t\tnumberElement,\n\t\t\tside: getAnnotationSide(lineType, codeElement),\n\t\t\tsplitLineIndex\n\t\t};\n\t}\n\tisSplitDiff() {\n\t\treturn this.pre?.getAttribute(\"data-diff-type\") === \"split\";\n\t}\n\tparseLineIndex(element, split) {\n\t\tconst lineIndexes = (element.getAttribute(\"data-line-index\") ?? \"\").split(\",\").map((value) => Number.parseInt(value, 10)).filter((value) => !Number.isNaN(value));\n\t\tif (split && lineIndexes.length === 2) return lineIndexes[1];\n\t\tif (!split) return lineIndexes[0];\n\t}\n};\nfunction pluckInteractionOptions({ enableTokenInteractionsOnWhitespace, enableGutterUtility, lineHoverHighlight, onGutterUtilityClick, onLineClick, onLineEnter, onLineLeave, onLineNumberClick, onTokenClick, onTokenEnter, onTokenLeave, renderGutterUtility, __debugPointerEvents, enableLineSelection, controlledSelection, onLineSelected, onLineSelectionStart, onLineSelectionChange, onLineSelectionEnd }, onHunkExpand, getLineIndex, onMergeConflictActionClick) {\n\treturn {\n\t\tenableTokenInteractionsOnWhitespace,\n\t\tenableGutterUtility: resolveEnableGutterUtilityOption({\n\t\t\tenableGutterUtility,\n\t\t\trenderGutterUtility,\n\t\t\tonGutterUtilityClick\n\t\t}),\n\t\tusesCustomGutterUtility: renderGutterUtility != null,\n\t\tlineHoverHighlight,\n\t\tonGutterUtilityClick,\n\t\tonHunkExpand,\n\t\tonMergeConflictActionClick,\n\t\tonLineClick,\n\t\tonLineEnter,\n\t\tonLineLeave,\n\t\tonLineNumberClick,\n\t\tonTokenClick,\n\t\tonTokenEnter,\n\t\tonTokenLeave,\n\t\t__debugPointerEvents,\n\t\tenableLineSelection,\n\t\tcontrolledSelection,\n\t\tonLineSelected,\n\t\tonLineSelectionStart,\n\t\tonLineSelectionChange,\n\t\tonLineSelectionEnd,\n\t\tgetLineIndex\n\t};\n}\nfunction resolveEnableGutterUtilityOption({ enableGutterUtility, renderGutterUtility, onGutterUtilityClick }) {\n\tif (onGutterUtilityClick != null && renderGutterUtility != null) throw new Error(\"Cannot use both 'onGutterUtilityClick' and 'renderGutterUtility'. Use only one gutter utility API.\");\n\treturn enableGutterUtility ?? false;\n}\nfunction isLinePointerTarget(target) {\n\treturn target != null && \"kind\" in target && target.kind === \"line\";\n}\nfunction isTokenPointerTarget(target) {\n\treturn target != null && \"kind\" in target && target.kind === \"token\";\n}\nfunction isHoverableLinePointerTarget(target) {\n\treturn isLinePointerTarget(target) || isTokenPointerTarget(target);\n}\nfunction isExpandoPointerTarget(target) {\n\treturn \"type\" in target && target.type === \"line-info\";\n}\nfunction isMergeConflictActionPointerTarget(target) {\n\treturn \"kind\" in target && target.kind === \"merge-conflict-action\";\n}\nfunction isMergeConflictResolution(value) {\n\treturn value === \"current\" || value === \"incoming\" || value === \"both\";\n}\nfunction queryHTMLElement(parent, query) {\n\tconst element = parent?.querySelector(query);\n\treturn element instanceof HTMLElement ? element : void 0;\n}\nfunction getElementPath(element) {\n\tconst path = [];\n\tlet current = element;\n\twhile (current != null) {\n\t\tpath.push(current);\n\t\tcurrent = current.parentNode;\n\t}\n\treturn path;\n}\nfunction closestSelectableRow(element) {\n\tconst row = element.closest(\"[data-line], [data-column-number]\");\n\tif (row instanceof HTMLElement) return row;\n\tconst annotationRow = element.closest(\"[data-line-annotation], [data-gutter-buffer=\\\"annotation\\\"]\");\n\tif (!(annotationRow instanceof HTMLElement)) return;\n\tconst previousRow = annotationRow.previousElementSibling;\n\treturn previousRow instanceof HTMLElement && (previousRow.hasAttribute(\"data-line\") || previousRow.hasAttribute(\"data-column-number\")) ? previousRow : void 0;\n}\nfunction getAnnotationSlotName(element) {\n\tconst slottedElement = element.closest(\"[slot^=\\\"annotation-\\\"]\");\n\tif (slottedElement instanceof HTMLElement) return slottedElement.getAttribute(\"slot\") ?? void 0;\n\tif (element instanceof HTMLElement) {\n\t\tconst slotName = element.getAttribute(\"name\") ?? void 0;\n\t\treturn slotName != null && slotName.startsWith(\"annotation-\") ? slotName : void 0;\n\t}\n}\nfunction selectionPointFromAnnotationSlotName(slotName) {\n\tif (slotName == null) return;\n\tconst match = /^annotation-(?:(additions|deletions)-)?(\\d+)$/.exec(slotName);\n\tif (match == null) return;\n\tconst lineNumber = Number.parseInt(match[2], 10);\n\tif (!Number.isFinite(lineNumber) || lineNumber <= 0) return;\n\treturn {\n\t\tlineNumber,\n\t\tside: match[1]\n\t};\n}\nfunction hasElementFromPoint(value) {\n\treturn value != null && typeof value.elementFromPoint === \"function\";\n}\nfunction getAnnotationSide(lineType, codeElement) {\n\tswitch (lineType) {\n\t\tcase \"change-deletion\": return \"deletions\";\n\t\tcase \"change-addition\": return \"additions\";\n\t\tdefault: return codeElement.hasAttribute(\"data-deletions\") ? \"deletions\" : \"additions\";\n\t}\n}\nfunction getLineTypeFromElement(element) {\n\tconst lineType = element.getAttribute(\"data-line-type\");\n\tif (lineType == null) return;\n\tswitch (lineType) {\n\t\tcase \"change-deletion\":\n\t\tcase \"change-addition\":\n\t\tcase \"context\":\n\t\tcase \"context-expanded\": return lineType;\n\t\tdefault: return;\n\t}\n}\nfunction isGutterUtilityPath(path) {\n\tfor (const element of path) {\n\t\tif (!(element instanceof HTMLElement)) continue;\n\t\tif (element.hasAttribute(\"data-utility-button\") || element.hasAttribute(\"data-gutter-utility-slot\") || element.getAttribute(\"slot\") === \"gutter-utility-slot\" || element.getAttribute(\"name\") === \"gutter-utility-slot\") return true;\n\t}\n\treturn false;\n}\nfunction debugLogIfEnabled(debugLogType = \"none\", logIfType, ...args) {\n\tswitch (debugLogType) {\n\t\tcase \"none\": return;\n\t\tcase \"both\": break;\n\t\tcase \"click\":\n\t\t\tif (logIfType !== \"click\") return;\n\t\t\tbreak;\n\t\tcase \"move\":\n\t\t\tif (logIfType !== \"move\") return;\n\t\t\tbreak;\n\t}\n\tconsole.log(...args);\n}\n//#endregion\nexport { InteractionManager, pluckInteractionOptions };\n\n//# sourceMappingURL=InteractionManager.js.map","//#region src/managers/ResizeManager.ts\nvar ResizeManager = class ResizeManager {\n\tstatic resizeObserver;\n\tstatic managersByElement = /* @__PURE__ */ new Map();\n\tstatic getResizeObserver() {\n\t\tconst resizeObserver = ResizeManager.resizeObserver ?? new ResizeObserver(ResizeManager.handleSharedResizeEntries);\n\t\tResizeManager.resizeObserver = resizeObserver;\n\t\treturn resizeObserver;\n\t}\n\tstatic handleSharedResizeEntries(entries) {\n\t\tconst entriesByManager = /* @__PURE__ */ new Map();\n\t\tfor (const entry of entries) {\n\t\t\tconst manager = ResizeManager.managersByElement.get(entry.target);\n\t\t\tif (manager == null) continue;\n\t\t\tconst managerEntries = entriesByManager.get(manager);\n\t\t\tif (managerEntries == null) entriesByManager.set(manager, [entry]);\n\t\t\telse managerEntries.push(entry);\n\t\t}\n\t\tfor (const [manager, managerEntries] of entriesByManager) manager.handleResizeEntries(managerEntries);\n\t}\n\tobservedNodes = /* @__PURE__ */ new Map();\n\tsetup(pre, disableAnnotations) {\n\t\tconst annotationUpdates = /* @__PURE__ */ new Set();\n\t\tlet columnCount = 0;\n\t\tconst observedNodes = new Map(this.observedNodes);\n\t\tthis.observedNodes.clear();\n\t\tfor (const element of pre.children) {\n\t\t\tif (columnCount === 2) break;\n\t\t\tconst codeElement = (() => {\n\t\t\t\tif (element instanceof HTMLElement && element.tagName === \"CODE\") return element;\n\t\t\t})();\n\t\t\tif (codeElement == null) continue;\n\t\t\tcolumnCount++;\n\t\t\tlet item = observedNodes.get(codeElement);\n\t\t\tif (item != null && item.type !== \"code\") throw new Error(\"ResizeManager.setup: somehow a code node is being used for an annotation, should be impossible\");\n\t\t\tlet numberElement = codeElement.firstElementChild;\n\t\t\tif (!(numberElement instanceof HTMLElement)) numberElement = null;\n\t\t\tif (item != null) {\n\t\t\t\tthis.observedNodes.set(codeElement, item);\n\t\t\t\tobservedNodes.delete(codeElement);\n\t\t\t\tif (item.numberElement !== numberElement) {\n\t\t\t\t\tif (item.numberElement != null) {\n\t\t\t\t\t\tthis.unobserve(item.numberElement);\n\t\t\t\t\t\tobservedNodes.delete(item.numberElement);\n\t\t\t\t\t}\n\t\t\t\t\tif (numberElement != null) {\n\t\t\t\t\t\tthis.observe(numberElement);\n\t\t\t\t\t\tobservedNodes.delete(numberElement);\n\t\t\t\t\t\tthis.observedNodes.set(numberElement, item);\n\t\t\t\t\t}\n\t\t\t\t\titem.numberElement = numberElement;\n\t\t\t\t\titem.numberWidth = 0;\n\t\t\t\t} else if (item.numberElement != null) {\n\t\t\t\t\tobservedNodes.delete(item.numberElement);\n\t\t\t\t\tthis.observedNodes.set(item.numberElement, item);\n\t\t\t\t} else item.numberWidth = 0;\n\t\t\t} else {\n\t\t\t\titem = {\n\t\t\t\t\ttype: \"code\",\n\t\t\t\t\tcodeElement,\n\t\t\t\t\tnumberElement,\n\t\t\t\t\tcodeWidth: \"auto\",\n\t\t\t\t\tnumberWidth: 0\n\t\t\t\t};\n\t\t\t\tthis.observedNodes.set(codeElement, item);\n\t\t\t\tthis.observe(codeElement);\n\t\t\t\tif (numberElement != null) {\n\t\t\t\t\tthis.observedNodes.set(numberElement, item);\n\t\t\t\t\tthis.observe(numberElement);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (columnCount > 1 && !disableAnnotations) {\n\t\t\tconst annotationElements = pre.querySelectorAll(\"[data-line-annotation*=\\\",\\\"]\");\n\t\t\tconst elementMap = /* @__PURE__ */ new Map();\n\t\t\tfor (const element of annotationElements) {\n\t\t\t\tif (!(element instanceof HTMLElement)) continue;\n\t\t\t\tconst lineAnnotation = element.getAttribute(\"data-line-annotation\") ?? \"\";\n\t\t\t\tif (!/^-?\\d+,-?\\d+$/.test(lineAnnotation)) {\n\t\t\t\t\tconsole.error(\"DiffFileRenderer.setupResizeObserver: Invalid element or annotation\", {\n\t\t\t\t\t\tlineAnnotation,\n\t\t\t\t\t\telement\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tlet pairs = elementMap.get(lineAnnotation);\n\t\t\t\tif (pairs == null) {\n\t\t\t\t\tpairs = [];\n\t\t\t\t\telementMap.set(lineAnnotation, pairs);\n\t\t\t\t}\n\t\t\t\tpairs.push(element);\n\t\t\t}\n\t\t\tfor (const [key, pair] of elementMap) {\n\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\tconsole.error(\"DiffFileRenderer.setupResizeObserver: Bad Pair\", key, pair);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst [container1, container2] = pair;\n\t\t\t\tconst child1 = container1.firstElementChild;\n\t\t\t\tconst child2 = container2.firstElementChild;\n\t\t\t\tif (!(container1 instanceof HTMLElement) || !(container2 instanceof HTMLElement) || !(child1 instanceof HTMLElement) || !(child2 instanceof HTMLElement)) continue;\n\t\t\t\tlet item = observedNodes.get(child1);\n\t\t\t\tif (item != null) {\n\t\t\t\t\tthis.observedNodes.set(child1, item);\n\t\t\t\t\tthis.observedNodes.set(child2, item);\n\t\t\t\t\tobservedNodes.delete(child1);\n\t\t\t\t\tobservedNodes.delete(child2);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst child1Height = child1.getBoundingClientRect().height;\n\t\t\t\tconst child2Height = child2.getBoundingClientRect().height;\n\t\t\t\titem = {\n\t\t\t\t\ttype: \"annotations\",\n\t\t\t\t\tcolumn1: {\n\t\t\t\t\t\tcontainer: container1,\n\t\t\t\t\t\tchild: child1,\n\t\t\t\t\t\tchildHeight: child1Height\n\t\t\t\t\t},\n\t\t\t\t\tcolumn2: {\n\t\t\t\t\t\tcontainer: container2,\n\t\t\t\t\t\tchild: child2,\n\t\t\t\t\t\tchildHeight: child2Height\n\t\t\t\t\t},\n\t\t\t\t\tcurrentHeight: \"auto\"\n\t\t\t\t};\n\t\t\t\tannotationUpdates.add({\n\t\t\t\t\tchild1,\n\t\t\t\t\tchild2,\n\t\t\t\t\titem,\n\t\t\t\t\tnewHeight: Math.max(child1Height, child2Height)\n\t\t\t\t});\n\t\t\t}\n\t\t\tfor (const pendingUpdate of annotationUpdates) {\n\t\t\t\tthis.applyNewHeight(pendingUpdate.item, pendingUpdate.newHeight);\n\t\t\t\tthis.observedNodes.set(pendingUpdate.child1, pendingUpdate.item);\n\t\t\t\tthis.observedNodes.set(pendingUpdate.child2, pendingUpdate.item);\n\t\t\t\tthis.observe(pendingUpdate.child1);\n\t\t\t\tthis.observe(pendingUpdate.child2);\n\t\t\t}\n\t\t\tannotationUpdates.clear();\n\t\t}\n\t\tfor (const [element, item] of observedNodes) {\n\t\t\tthis.unobserve(element);\n\t\t\tif (item.type === \"code\") cleanupStaleCodeItem(item);\n\t\t\telse cleanupStaleAnnotationItem(item);\n\t\t}\n\t\tobservedNodes.clear();\n\t}\n\tcleanUp() {\n\t\tfor (const element of this.observedNodes.keys()) this.unobserve(element);\n\t\tthis.observedNodes.clear();\n\t}\n\tobserve(element) {\n\t\tconst { managersByElement } = ResizeManager;\n\t\tconst owner = managersByElement.get(element);\n\t\tif (owner === this) return;\n\t\telse if (owner != null && owner !== this) throw new Error(\"ResizeManager.observe: element is already owned by another ResizeManager\");\n\t\tmanagersByElement.set(element, this);\n\t\tResizeManager.getResizeObserver().observe(element);\n\t}\n\tunobserve(element) {\n\t\tconst { managersByElement, resizeObserver } = ResizeManager;\n\t\tconst owner = managersByElement.get(element);\n\t\tif (owner == null) return;\n\t\telse if (owner !== this) throw new Error(\"ResizeManager.unobserve: element is owned by another ResizeManager\");\n\t\tmanagersByElement.delete(element);\n\t\tresizeObserver?.unobserve(element);\n\t\tif (resizeObserver != null && managersByElement.size === 0) {\n\t\t\tresizeObserver.disconnect();\n\t\t\tResizeManager.resizeObserver = void 0;\n\t\t}\n\t}\n\thandleResizeEntries(entries) {\n\t\tconst codeUpdates = /* @__PURE__ */ new Map();\n\t\tconst annotationUpdates = /* @__PURE__ */ new Set();\n\t\tfor (const entry of entries) {\n\t\t\tconst { target, borderBoxSize, contentBoxSize } = entry;\n\t\t\tif (!(target instanceof HTMLElement)) {\n\t\t\t\tconsole.error(\"ResizeManager.handleResizeEntries: Invalid element for ResizeObserver\", entry);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst item = this.observedNodes.get(target);\n\t\t\tif (item == null) {\n\t\t\t\tconsole.error(\"ResizeManager.handleResizeEntries: Not a valid observed node\", entry);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (item.type === \"annotations\") {\n\t\t\t\tconst column = (() => {\n\t\t\t\t\tif (target === item.column1.child) return item.column1;\n\t\t\t\t\tif (target === item.column2.child) return item.column2;\n\t\t\t\t})();\n\t\t\t\tif (column == null) {\n\t\t\t\t\tconsole.error(`ResizeManager.handleResizeEntries: Couldn't find a column for`, {\n\t\t\t\t\t\titem,\n\t\t\t\t\t\ttarget\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tcolumn.childHeight = borderBoxSize[0].blockSize;\n\t\t\t\tannotationUpdates.add(item);\n\t\t\t} else if (item.type === \"code\") {\n\t\t\t\tconst update = codeUpdates.get(item) ?? {};\n\t\t\t\tconst inlineSize = contentBoxSize[0].inlineSize;\n\t\t\t\tif (target === item.codeElement) update.codeInlineSize = inlineSize;\n\t\t\t\telse if (target === item.numberElement) update.numberInlineSize = inlineSize;\n\t\t\t\tcodeUpdates.set(item, update);\n\t\t\t}\n\t\t}\n\t\tthis.applyAnnotationUpdates(annotationUpdates);\n\t\tannotationUpdates.clear();\n\t\tthis.applyColumnUpdates(codeUpdates);\n\t\tcodeUpdates.clear();\n\t}\n\tapplyAnnotationUpdates(annotationUpdates) {\n\t\tfor (const item of annotationUpdates) this.applyNewHeight(item, Math.max(item.column1.childHeight, item.column2.childHeight));\n\t}\n\tapplyColumnUpdates = (queuedUpdates) => {\n\t\tfor (const [item, update] of queuedUpdates) {\n\t\t\tconst nextCodeWidth = update.codeInlineSize != null ? resolveCodeWidth(update.codeInlineSize) : item.codeWidth;\n\t\t\tconst nextNumberWidth = update.numberInlineSize != null ? resolveNumberWidth(update.numberInlineSize) : item.numberWidth;\n\t\t\tconst codeWidthChanged = nextCodeWidth !== item.codeWidth;\n\t\t\tconst numberWidthChanged = nextNumberWidth !== item.numberWidth;\n\t\t\tif (!codeWidthChanged && !numberWidthChanged) continue;\n\t\t\titem.codeWidth = nextCodeWidth;\n\t\t\titem.numberWidth = nextNumberWidth;\n\t\t\tif (codeWidthChanged) item.codeElement.style.setProperty(\"--diffs-column-width\", `${typeof nextCodeWidth === \"number\" ? `${nextCodeWidth}px` : \"auto\"}`);\n\t\t\tif (numberWidthChanged) item.codeElement.style.setProperty(\"--diffs-column-number-width\", `${nextNumberWidth === 0 ? \"auto\" : `${nextNumberWidth}px`}`);\n\t\t\tif (codeWidthChanged || numberWidthChanged && nextCodeWidth !== \"auto\") {\n\t\t\t\tconst targetWidth = typeof nextCodeWidth === \"number\" ? Math.max(nextCodeWidth - nextNumberWidth, 0) : 0;\n\t\t\t\titem.codeElement.style.setProperty(\"--diffs-column-content-width\", `${targetWidth > 0 ? `${targetWidth}px` : \"auto\"}`);\n\t\t\t}\n\t\t}\n\t};\n\tapplyNewHeight(item, newHeight) {\n\t\tif (newHeight !== item.currentHeight) {\n\t\t\titem.currentHeight = Math.max(newHeight, 0);\n\t\t\titem.column1.container.style.setProperty(\"--diffs-annotation-min-height\", `${item.currentHeight}px`);\n\t\t\titem.column2.container.style.setProperty(\"--diffs-annotation-min-height\", `${item.currentHeight}px`);\n\t\t}\n\t}\n};\nfunction resolveCodeWidth(inlineSize) {\n\tconst width = Math.max(Math.floor(inlineSize), 0);\n\treturn width === 0 ? \"auto\" : width;\n}\nfunction resolveNumberWidth(inlineSize) {\n\treturn Math.max(Math.ceil(inlineSize), 0);\n}\nfunction cleanupStaleCodeItem(item) {\n\tif (item.codeElement.isConnected) {\n\t\titem.codeElement.style.removeProperty(\"--diffs-column-content-width\");\n\t\titem.codeElement.style.removeProperty(\"--diffs-column-number-width\");\n\t\titem.codeElement.style.removeProperty(\"--diffs-column-width\");\n\t}\n}\nfunction cleanupStaleAnnotationItem(item) {\n\tif (item.column1.container.isConnected) item.column1.container.style.removeProperty(\"--diffs-annotation-min-height\");\n\tif (item.column2.container.isConnected) item.column2.container.style.removeProperty(\"--diffs-annotation-min-height\");\n}\n//#endregion\nexport { ResizeManager };\n\n//# sourceMappingURL=ResizeManager.js.map","//#region src/utils/areRenderRangesEqual.ts\nfunction areRenderRangesEqual(renderRangeA, renderRangeB) {\n\tif (renderRangeA == null || renderRangeB == null) return renderRangeA === renderRangeB;\n\treturn renderRangeA.startingLine === renderRangeB.startingLine && renderRangeA.totalLines === renderRangeB.totalLines && renderRangeA.bufferBefore === renderRangeB.bufferBefore && renderRangeA.bufferAfter === renderRangeB.bufferAfter;\n}\n//#endregion\nexport { areRenderRangesEqual };\n\n//# sourceMappingURL=areRenderRangesEqual.js.map","import { AttachedLanguages } from \"./constants.js\";\n//#region src/highlighter/languages/areLanguagesAttached.ts\nfunction areLanguagesAttached(languages) {\n\tfor (const language of Array.isArray(languages) ? languages : [languages]) {\n\t\tif (language === \"text\" || language === \"ansi\") continue;\n\t\tif (!AttachedLanguages.has(language)) return false;\n\t}\n\treturn true;\n}\n//#endregion\nexport { areLanguagesAttached };\n\n//# sourceMappingURL=areLanguagesAttached.js.map","import { AttachedThemes } from \"./constants.js\";\nimport { getThemes } from \"../../utils/getThemes.js\";\n//#region src/highlighter/themes/areThemesAttached.ts\nfunction areThemesAttached(themes) {\n\tfor (const theme of getThemes(themes)) if (!AttachedThemes.has(theme)) return false;\n\treturn true;\n}\n//#endregion\nexport { areThemesAttached };\n\n//# sourceMappingURL=areThemesAttached.js.map","import { createHastElement } from \"./hast_utils.js\";\n//#region src/utils/createAnnotationElement.ts\nfunction createAnnotationElement(span) {\n\treturn createHastElement({\n\t\ttagName: \"div\",\n\t\tchildren: [createHastElement({\n\t\t\ttagName: \"div\",\n\t\t\tchildren: span.annotations?.map((slotId) => createHastElement({\n\t\t\t\ttagName: \"slot\",\n\t\t\t\tproperties: { name: slotId }\n\t\t\t})),\n\t\t\tproperties: { \"data-annotation-content\": \"\" }\n\t\t})],\n\t\tproperties: { \"data-line-annotation\": `${span.hunkIndex},${span.lineIndex}` }\n\t});\n}\n//#endregion\nexport { createAnnotationElement };\n\n//# sourceMappingURL=createAnnotationElement.js.map","import { createHastElement } from \"./hast_utils.js\";\n//#region src/utils/createContentColumn.ts\nfunction createContentColumn(children, rowCount) {\n\treturn createHastElement({\n\t\ttagName: \"div\",\n\t\tchildren,\n\t\tproperties: {\n\t\t\t\"data-content\": \"\",\n\t\t\tstyle: `grid-row: span ${rowCount}`\n\t\t}\n\t});\n}\n//#endregion\nexport { createContentColumn };\n\n//# sourceMappingURL=createContentColumn.js.map","//#region src/utils/getIconForType.ts\nfunction getIconForType(type) {\n\tswitch (type) {\n\t\tcase \"file\": return \"diffs-icon-file-code\";\n\t\tcase \"change\": return \"diffs-icon-symbol-modified\";\n\t\tcase \"new\": return \"diffs-icon-symbol-added\";\n\t\tcase \"deleted\": return \"diffs-icon-symbol-deleted\";\n\t\tcase \"rename-pure\":\n\t\tcase \"rename-changed\": return \"diffs-icon-symbol-moved\";\n\t}\n}\n//#endregion\nexport { getIconForType };\n\n//# sourceMappingURL=getIconForType.js.map","import { CUSTOM_HEADER_SLOT_ID, HEADER_METADATA_SLOT_ID, HEADER_PREFIX_SLOT_ID } from \"../constants.js\";\nimport { createHastElement, createIconElement, createTextNodeElement } from \"./hast_utils.js\";\nimport { getIconForType } from \"./getIconForType.js\";\n//#region src/utils/createFileHeaderElement.ts\nfunction createFileHeaderElement({ fileOrDiff, mode, stickyHeader }) {\n\tconst fileDiff = \"type\" in fileOrDiff ? fileOrDiff : void 0;\n\tconst properties = {\n\t\t\"data-diffs-header\": mode,\n\t\t\"data-change-type\": fileDiff?.type,\n\t\t\"data-sticky\": stickyHeader ? \"\" : void 0\n\t};\n\treturn createHastElement({\n\t\ttagName: \"div\",\n\t\tchildren: [mode === \"custom\" ? createHastElement({\n\t\t\ttagName: \"slot\",\n\t\t\tproperties: { name: CUSTOM_HEADER_SLOT_ID }\n\t\t}) : createHeaderElement({\n\t\t\tname: fileOrDiff.name,\n\t\t\tprevName: \"prevName\" in fileOrDiff ? fileOrDiff.prevName : void 0,\n\t\t\ticonType: fileDiff?.type ?? \"file\"\n\t\t}), ...mode === \"custom\" ? [] : [createMetadataElement(fileDiff)]],\n\t\tproperties\n\t});\n}\nfunction createHeaderElement({ name, prevName, iconType }) {\n\tconst children = [createHastElement({\n\t\ttagName: \"slot\",\n\t\tproperties: { name: HEADER_PREFIX_SLOT_ID }\n\t}), createIconElement({\n\t\tname: getIconForType(iconType),\n\t\tproperties: { \"data-change-icon\": iconType }\n\t})];\n\tif (prevName != null) {\n\t\tchildren.push(createHastElement({\n\t\t\ttagName: \"div\",\n\t\t\tchildren: [createHastElement({\n\t\t\t\ttagName: \"bdi\",\n\t\t\t\tchildren: [createTextNodeElement(prevName)]\n\t\t\t})],\n\t\t\tproperties: { \"data-prev-name\": \"\" }\n\t\t}));\n\t\tchildren.push(createIconElement({\n\t\t\tname: \"diffs-icon-arrow-right-short\",\n\t\t\tproperties: { \"data-rename-icon\": \"\" }\n\t\t}));\n\t}\n\tchildren.push(createHastElement({\n\t\ttagName: \"div\",\n\t\tchildren: [createHastElement({\n\t\t\ttagName: \"bdi\",\n\t\t\tchildren: [createTextNodeElement(name)]\n\t\t})],\n\t\tproperties: { \"data-title\": \"\" }\n\t}));\n\treturn createHastElement({\n\t\ttagName: \"div\",\n\t\tchildren,\n\t\tproperties: { \"data-header-content\": \"\" }\n\t});\n}\nfunction createMetadataElement(fileDiff) {\n\tconst children = [];\n\tif (fileDiff != null) {\n\t\tlet additions = 0;\n\t\tlet deletions = 0;\n\t\tfor (const hunk of fileDiff.hunks) {\n\t\t\tadditions += hunk.additionLines;\n\t\t\tdeletions += hunk.deletionLines;\n\t\t}\n\t\tif (deletions > 0 || additions === 0) children.push(createHastElement({\n\t\t\ttagName: \"span\",\n\t\t\tchildren: [createTextNodeElement(`-${deletions}`)],\n\t\t\tproperties: { \"data-deletions-count\": \"\" }\n\t\t}));\n\t\tif (additions > 0 || deletions === 0) children.push(createHastElement({\n\t\t\ttagName: \"span\",\n\t\t\tchildren: [createTextNodeElement(`+${additions}`)],\n\t\t\tproperties: { \"data-additions-count\": \"\" }\n\t\t}));\n\t}\n\tchildren.push(createHastElement({\n\t\ttagName: \"slot\",\n\t\tproperties: { name: HEADER_METADATA_SLOT_ID }\n\t}));\n\treturn createHastElement({\n\t\ttagName: \"div\",\n\t\tchildren,\n\t\tproperties: { \"data-metadata\": \"\" }\n\t});\n}\n//#endregion\nexport { createFileHeaderElement };\n\n//# sourceMappingURL=createFileHeaderElement.js.map","import { createHastElement } from \"./hast_utils.js\";\n//#region src/utils/createPreElement.ts\nfunction createPreElement(options) {\n\treturn createHastElement({\n\t\ttagName: \"pre\",\n\t\tproperties: createPreWrapperProperties(options)\n\t});\n}\nfunction createPreWrapperProperties({ diffIndicators, disableBackground, disableLineNumbers, overflow, split, totalLines, type, customProperties }) {\n\treturn {\n\t\t...customProperties,\n\t\t\"data-diff\": type === \"diff\" ? \"\" : void 0,\n\t\t\"data-file\": type === \"file\" ? \"\" : void 0,\n\t\t\"data-diff-type\": type === \"diff\" ? split ? \"split\" : \"single\" : void 0,\n\t\t\"data-overflow\": overflow,\n\t\t\"data-disable-line-numbers\": disableLineNumbers ? \"\" : void 0,\n\t\t\"data-background\": !disableBackground ? \"\" : void 0,\n\t\t\"data-indicators\": diffIndicators === \"bars\" || diffIndicators === \"classic\" ? diffIndicators : void 0,\n\t\tstyle: `--diffs-min-number-column-width-default:${`${totalLines}`.length}ch;`\n\t};\n}\n//#endregion\nexport { createPreElement, createPreWrapperProperties };\n\n//# sourceMappingURL=createPreElement.js.map","import { getThemes } from \"./getThemes.js\";\n//#region src/utils/getHighlighterOptions.ts\nfunction getHighlighterOptions(lang, { theme, preferredHighlighter = \"shiki-js\" }) {\n\treturn {\n\t\tlangs: [lang ?? \"text\"],\n\t\tthemes: getThemes(theme),\n\t\tpreferredHighlighter\n\t};\n}\n//#endregion\nexport { getHighlighterOptions };\n\n//# sourceMappingURL=getHighlighterOptions.js.map","//#region src/utils/shouldUseTokenTransformer.ts\nfunction shouldUseTokenTransformer(options) {\n\treturn options.useTokenTransformer === true || options.onTokenClick != null || options.onTokenEnter != null || options.onTokenLeave != null;\n}\n//#endregion\nexport { shouldUseTokenTransformer };\n\n//# sourceMappingURL=shouldUseTokenTransformer.js.map","import { DEFAULT_RENDER_RANGE, DEFAULT_THEMES } from \"../constants.js\";\nimport { getFileAnnotations, shouldRenderFileAnnotations } from \"../utils/includesFileAnnotations.js\";\nimport { iterateOverFile } from \"../utils/iterateOverFile.js\";\nimport { createGutterGap, createGutterItem, createGutterWrapper, createHastElement } from \"../utils/hast_utils.js\";\nimport { areLanguagesAttached } from \"../highlighter/languages/areLanguagesAttached.js\";\nimport { getHighlighterIfLoaded, getSharedHighlighter } from \"../highlighter/shared_highlighter.js\";\nimport { getThemes } from \"../utils/getThemes.js\";\nimport { areThemesAttached } from \"../highlighter/themes/areThemesAttached.js\";\nimport { hasResolvedThemes } from \"../highlighter/themes/hasResolvedThemes.js\";\nimport { areFileRenderOptionsEqual } from \"../utils/areFileRenderOptionsEqual.js\";\nimport { areFilesEqual } from \"../utils/areFilesEqual.js\";\nimport { areRenderRangesEqual } from \"../utils/areRenderRangesEqual.js\";\nimport { createAnnotationElement } from \"../utils/createAnnotationElement.js\";\nimport { createContentColumn } from \"../utils/createContentColumn.js\";\nimport { createFileHeaderElement } from \"../utils/createFileHeaderElement.js\";\nimport { createPreElement } from \"../utils/createPreElement.js\";\nimport { getFiletypeFromFileName } from \"../utils/getFiletypeFromFileName.js\";\nimport { getHighlighterOptions } from \"../utils/getHighlighterOptions.js\";\nimport { getLineAnnotationName } from \"../utils/getLineAnnotationName.js\";\nimport { isFilePlainText } from \"../utils/isFilePlainText.js\";\nimport { splitFileContents } from \"../utils/splitFileContents.js\";\nimport { renderFileWithHighlighter } from \"../utils/renderFileWithHighlighter.js\";\nimport { shouldUseTokenTransformer } from \"../utils/shouldUseTokenTransformer.js\";\nimport { toHtml } from \"hast-util-to-html\";\n//#region src/renderers/FileRenderer.ts\nlet instanceId = -1;\nvar FileRenderer = class {\n\toptions;\n\tonRenderUpdate;\n\tworkerManager;\n\t__id = `file-renderer:${++instanceId}`;\n\thighlighter;\n\trenderCache;\n\tcomputedLang = \"text\";\n\tlineAnnotations = {};\n\tlineCache;\n\tconstructor(options = { theme: DEFAULT_THEMES }, onRenderUpdate, workerManager) {\n\t\tthis.options = options;\n\t\tthis.onRenderUpdate = onRenderUpdate;\n\t\tthis.workerManager = workerManager;\n\t\tif (workerManager?.isWorkingPool() !== true) this.highlighter = areThemesAttached(options.theme ?? DEFAULT_THEMES) ? getHighlighterIfLoaded() : void 0;\n\t}\n\tsetOptions(options) {\n\t\tthis.options = options;\n\t}\n\tmergeOptions(options) {\n\t\tthis.options = {\n\t\t\t...this.options,\n\t\t\t...options\n\t\t};\n\t}\n\tsetLineAnnotations(lineAnnotations) {\n\t\tthis.lineAnnotations = {};\n\t\tfor (const annotation of lineAnnotations) {\n\t\t\tconst arr = this.lineAnnotations[annotation.lineNumber] ?? [];\n\t\t\tthis.lineAnnotations[annotation.lineNumber] = arr;\n\t\t\tarr.push(annotation);\n\t\t}\n\t}\n\tcleanUp() {\n\t\tthis.recycle();\n\t\tthis.workerManager = void 0;\n\t\tthis.onRenderUpdate = void 0;\n\t}\n\trecycle() {\n\t\tthis.clearRenderCache();\n\t\tthis.highlighter = void 0;\n\t\tthis.workerManager?.cleanUpTasks(this);\n\t\tthis.lineCache = void 0;\n\t}\n\tclearRenderCache() {\n\t\tthis.renderCache = void 0;\n\t}\n\thydrate(file) {\n\t\tconst { options } = this.getRenderOptions(file);\n\t\tconst massiveFile = isFileMassive(this.getOrCreateLineCache(file).length, this.getTokenizeMaxLength());\n\t\tlet cache = this.workerManager?.getFileResultCache(file);\n\t\tif (cache != null && !areFileRenderOptionsEqual(options, cache.options)) cache = void 0;\n\t\tthis.renderCache ??= {\n\t\t\tfile,\n\t\t\toptions,\n\t\t\thighlighted: !massiveFile && !isFilePlainText(file),\n\t\t\tresult: massiveFile ? void 0 : cache?.result,\n\t\t\trenderRange: void 0\n\t\t};\n\t\tif (this.workerManager?.isWorkingPool() === true) {\n\t\t\tif (this.renderCache.result == null && !massiveFile) this.workerManager.highlightFileAST(this, file);\n\t\t} else if (this.highlighter == null) {\n\t\t\tthis.computedLang = file.lang ?? getFiletypeFromFileName(file.name);\n\t\t\tthis.initializeHighlighter();\n\t\t}\n\t}\n\tgetRenderOptions(file) {\n\t\tconst options = (() => {\n\t\t\tif (this.workerManager?.isWorkingPool() === true) return this.workerManager.getFileRenderOptions();\n\t\t\tconst { theme = DEFAULT_THEMES, tokenizeMaxLineLength = 1e3 } = this.options;\n\t\t\treturn {\n\t\t\t\ttheme,\n\t\t\t\tuseTokenTransformer: shouldUseTokenTransformer(this.options),\n\t\t\t\ttokenizeMaxLineLength\n\t\t\t};\n\t\t})();\n\t\tconst { renderCache } = this;\n\t\tif (renderCache?.result == null) return {\n\t\t\toptions,\n\t\t\tforceHighlight: true\n\t\t};\n\t\tif (!areFilesEqual(file, renderCache.file) || !areFileRenderOptionsEqual(options, renderCache.options)) return {\n\t\t\toptions,\n\t\t\tforceHighlight: true\n\t\t};\n\t\treturn {\n\t\t\toptions,\n\t\t\tforceHighlight: false\n\t\t};\n\t}\n\tgetOrCreateLineCache(file) {\n\t\tif (file.cacheKey == null) {\n\t\t\tthis.lineCache = void 0;\n\t\t\treturn splitFileContents(file.contents);\n\t\t}\n\t\tlet { lineCache } = this;\n\t\tif (lineCache == null || lineCache.cacheKey !== file.cacheKey) lineCache = {\n\t\t\tcacheKey: file.cacheKey,\n\t\t\tlines: splitFileContents(file.contents)\n\t\t};\n\t\tthis.lineCache = lineCache;\n\t\treturn lineCache.lines;\n\t}\n\trenderFile(file = this.renderCache?.file, renderRange = DEFAULT_RENDER_RANGE) {\n\t\tif (file == null) return;\n\t\tlet { options, forceHighlight } = this.getRenderOptions(file);\n\t\tconst cache = this.getMatchingWorkerResultCache(file, options);\n\t\tif (cache != null && !this.hasHighlightedRenderCache(file, options)) {\n\t\t\tthis.renderCache = {\n\t\t\t\tfile,\n\t\t\t\thighlighted: true,\n\t\t\t\trenderRange: void 0,\n\t\t\t\t...cache\n\t\t\t};\n\t\t\tforceHighlight = false;\n\t\t}\n\t\tthis.renderCache ??= {\n\t\t\tfile,\n\t\t\thighlighted: false,\n\t\t\toptions,\n\t\t\tresult: void 0,\n\t\t\trenderRange: void 0\n\t\t};\n\t\tconst lines = this.getOrCreateLineCache(file);\n\t\tconst hasContent = file.contents.length > 0;\n\t\tconst forcePlainText = !hasContent || isFilePlainText(file) || isFileMassive(lines.length, this.getTokenizeMaxLength());\n\t\tconst newContent = !areFilesEqual(file, this.renderCache.file);\n\t\tconst newRenderRange = !areRenderRangesEqual(this.renderCache.renderRange, renderRange);\n\t\tif (this.workerManager?.isWorkingPool() === true) {\n\t\t\tif (forcePlainText || this.renderCache.result == null || !this.renderCache.highlighted && (newContent || newRenderRange)) {\n\t\t\t\tthis.renderCache.file = file;\n\t\t\t\tthis.renderCache.options = options;\n\t\t\t\tthis.renderCache.highlighted = false;\n\t\t\t\tif (this.renderCache.result == null || newContent || newRenderRange || forceHighlight) this.renderCache.result = this.workerManager.getPlainFileAST(file, renderRange.startingLine, renderRange.totalLines, lines);\n\t\t\t\tthis.renderCache.renderRange = renderRange;\n\t\t\t}\n\t\t\tif (!forcePlainText && hasContent && (!this.renderCache.highlighted || forceHighlight)) this.workerManager.highlightFileAST(this, file);\n\t\t} else {\n\t\t\tthis.computedLang = file.lang ?? getFiletypeFromFileName(file.name);\n\t\t\tconst hasThemes = this.highlighter != null && areThemesAttached(options.theme);\n\t\t\tconst hasLangs = this.highlighter != null && areLanguagesAttached(this.computedLang);\n\t\t\tconst canHighlight = !forcePlainText && hasLangs;\n\t\t\tif (this.highlighter != null && hasThemes && (forceHighlight || forcePlainText || !this.renderCache.highlighted && canHighlight || this.renderCache.result == null)) {\n\t\t\t\tconst { result, options } = this.renderFileWithHighlighter(file, this.highlighter, forcePlainText || !hasLangs);\n\t\t\t\tthis.renderCache = {\n\t\t\t\t\tfile,\n\t\t\t\t\toptions,\n\t\t\t\t\thighlighted: canHighlight,\n\t\t\t\t\tresult,\n\t\t\t\t\trenderRange: void 0\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (!hasThemes || !forcePlainText && !hasLangs) this.asyncHighlight(file).then(({ result, options }) => {\n\t\t\t\tif (this.renderCache != null) this.renderCache.highlighted = false;\n\t\t\t\tthis.onHighlightSuccess(file, result, options, !forcePlainText);\n\t\t\t});\n\t\t}\n\t\treturn this.renderCache.result != null ? this.processFileResult(this.renderCache.file, renderRange, this.renderCache.result) : void 0;\n\t}\n\tasync asyncRender(file, renderRange = DEFAULT_RENDER_RANGE) {\n\t\tconst { result } = await this.asyncHighlight(file);\n\t\treturn this.processFileResult(file, renderRange, result);\n\t}\n\tasync asyncHighlight(file) {\n\t\tconst forcePlainText = isFileMassive(this.getOrCreateLineCache(file).length, this.getTokenizeMaxLength());\n\t\tthis.computedLang = forcePlainText ? \"text\" : file.lang ?? getFiletypeFromFileName(file.name);\n\t\tconst hasThemes = this.highlighter != null && hasResolvedThemes(getThemes(this.options.theme));\n\t\tconst hasLangs = forcePlainText || this.highlighter != null && areLanguagesAttached(this.computedLang);\n\t\tif (this.highlighter == null || !hasThemes || !hasLangs) this.highlighter = await this.initializeHighlighter();\n\t\treturn this.renderFileWithHighlighter(file, this.highlighter, forcePlainText);\n\t}\n\trenderFileWithHighlighter(file, highlighter, forcePlainText = false) {\n\t\tconst { options } = this.getRenderOptions(file);\n\t\treturn {\n\t\t\tresult: renderFileWithHighlighter(file, highlighter, options, { forcePlainText }),\n\t\t\toptions\n\t\t};\n\t}\n\tprocessFileResult(file, renderRange, { code, themeStyles, baseThemeType }) {\n\t\tconst { disableFileHeader = false } = this.options;\n\t\tconst contentArray = [];\n\t\tconst gutter = createGutterWrapper();\n\t\tconst lines = this.getOrCreateLineCache(file);\n\t\tlet rowCount = 0;\n\t\tconst fileLevelAnnotations = shouldRenderFileAnnotations(renderRange) ? getFileAnnotations(this.lineAnnotations) : void 0;\n\t\tif (fileLevelAnnotations != null) {\n\t\t\tgutter.children.push(createGutterGap(\"context\", \"annotation\", 1));\n\t\t\tcontentArray.push(createAnnotationElement({\n\t\t\t\ttype: \"annotation\",\n\t\t\t\thunkIndex: -1,\n\t\t\t\tlineIndex: -1,\n\t\t\t\tannotations: fileLevelAnnotations.map((annotation) => getLineAnnotationName(annotation))\n\t\t\t}));\n\t\t\trowCount++;\n\t\t}\n\t\titerateOverFile({\n\t\t\tlines,\n\t\t\tstartingLine: renderRange.startingLine,\n\t\t\ttotalLines: renderRange.totalLines,\n\t\t\tcallback: ({ lineIndex, lineNumber }) => {\n\t\t\t\tconst line = code[lineIndex];\n\t\t\t\tif (line == null) {\n\t\t\t\t\tconst message = \"FileRenderer.processFileResult: Line doesnt exist\";\n\t\t\t\t\tconsole.error(message, {\n\t\t\t\t\t\tname: file.name,\n\t\t\t\t\t\tlineIndex,\n\t\t\t\t\t\tlineNumber,\n\t\t\t\t\t\tlines\n\t\t\t\t\t});\n\t\t\t\t\tthrow new Error(message);\n\t\t\t\t}\n\t\t\t\tif (line != null) {\n\t\t\t\t\tgutter.children.push(createGutterItem(\"context\", lineNumber, `${lineIndex}`));\n\t\t\t\t\tcontentArray.push(line);\n\t\t\t\t\trowCount++;\n\t\t\t\t\tconst annotations = this.lineAnnotations[lineNumber];\n\t\t\t\t\tif (annotations != null) {\n\t\t\t\t\t\tgutter.children.push(createGutterGap(\"context\", \"annotation\", 1));\n\t\t\t\t\t\tcontentArray.push(createAnnotationElement({\n\t\t\t\t\t\t\ttype: \"annotation\",\n\t\t\t\t\t\t\thunkIndex: 0,\n\t\t\t\t\t\t\tlineIndex: lineNumber,\n\t\t\t\t\t\t\tannotations: annotations.map((annotation) => getLineAnnotationName(annotation))\n\t\t\t\t\t\t}));\n\t\t\t\t\t\trowCount++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tgutter.properties.style = `grid-row: span ${rowCount}`;\n\t\treturn {\n\t\t\tgutterAST: gutter.children ?? [],\n\t\t\tcontentAST: contentArray,\n\t\t\tpreAST: this.createPreElement(lines.length),\n\t\t\theaderAST: !disableFileHeader ? this.renderHeader(file) : void 0,\n\t\t\ttotalLines: lines.length,\n\t\t\trowCount,\n\t\t\tthemeStyles,\n\t\t\tbaseThemeType,\n\t\t\tbufferBefore: renderRange.bufferBefore,\n\t\t\tbufferAfter: renderRange.bufferAfter,\n\t\t\tcss: \"\"\n\t\t};\n\t}\n\trenderHeader(file) {\n\t\tconst { headerRenderMode = \"default\", stickyHeader = false } = this.options;\n\t\treturn createFileHeaderElement({\n\t\t\tfileOrDiff: file,\n\t\t\tmode: headerRenderMode,\n\t\t\tstickyHeader\n\t\t});\n\t}\n\trenderFullHTML(result) {\n\t\treturn toHtml(this.renderFullAST(result));\n\t}\n\trenderFullAST(result, children = []) {\n\t\tchildren.push(createHastElement({\n\t\t\ttagName: \"code\",\n\t\t\tchildren: this.renderCodeAST(result),\n\t\t\tproperties: { \"data-code\": \"\" }\n\t\t}));\n\t\treturn {\n\t\t\t...result.preAST,\n\t\t\tchildren\n\t\t};\n\t}\n\trenderCodeAST(result) {\n\t\tconst gutter = createGutterWrapper();\n\t\tgutter.children = result.gutterAST;\n\t\tgutter.properties.style = `grid-row: span ${result.rowCount}`;\n\t\treturn [gutter, createContentColumn(result.contentAST, result.rowCount)];\n\t}\n\trenderPartialHTML(children, includeCodeNode = false) {\n\t\tif (!includeCodeNode) return toHtml(children);\n\t\treturn toHtml(createHastElement({\n\t\t\ttagName: \"code\",\n\t\t\tchildren,\n\t\t\tproperties: { \"data-code\": \"\" }\n\t\t}));\n\t}\n\tasync initializeHighlighter() {\n\t\tthis.highlighter = await getSharedHighlighter(getHighlighterOptions(this.computedLang, this.options));\n\t\treturn this.highlighter;\n\t}\n\tonHighlightSuccess(file, result, options, highlighted = true) {\n\t\tif (this.renderCache == null) return;\n\t\tconst triggerRenderUpdate = !areFilesEqual(file, this.renderCache.file) || !this.renderCache.highlighted || !areFileRenderOptionsEqual(options, this.renderCache.options);\n\t\tthis.renderCache = {\n\t\t\tfile,\n\t\t\toptions,\n\t\t\thighlighted,\n\t\t\tresult,\n\t\t\trenderRange: void 0\n\t\t};\n\t\tif (triggerRenderUpdate) this.onRenderUpdate?.();\n\t}\n\tgetMatchingWorkerResultCache(file, options) {\n\t\tconst cache = this.workerManager?.getFileResultCache(file);\n\t\tif (cache == null || !areFileRenderOptionsEqual(options, cache.options)) return;\n\t\treturn cache;\n\t}\n\thasHighlightedRenderCache(file, options) {\n\t\tconst { renderCache } = this;\n\t\treturn renderCache?.result != null && renderCache.highlighted && areFilesEqual(file, renderCache.file) && areFileRenderOptionsEqual(options, renderCache.options);\n\t}\n\tonHighlightError(error) {\n\t\tconsole.error(error);\n\t}\n\tgetTokenizeMaxLength() {\n\t\treturn this.options.tokenizeMaxLength ?? 1e5;\n\t}\n\tcreatePreElement(totalLines) {\n\t\tconst { disableLineNumbers = false, overflow = \"scroll\" } = this.options;\n\t\treturn createPreElement({\n\t\t\ttype: \"file\",\n\t\t\tdiffIndicators: \"none\",\n\t\t\tdisableBackground: true,\n\t\t\tdisableLineNumbers,\n\t\t\toverflow,\n\t\t\tsplit: false,\n\t\t\ttotalLines\n\t\t});\n\t}\n};\nfunction isFileMassive(lineCount, tokenizeMaxLength) {\n\treturn lineCount > tokenizeMaxLength;\n}\n//#endregion\nexport { FileRenderer };\n\n//# sourceMappingURL=FileRenderer.js.map","//#region src/sprite.ts\nconst SVGSpriteSheet = `<svg data-icon-sprite aria-hidden=\"true\" width=\"0\" height=\"0\">\n <symbol id=\"diffs-icon-arrow-right-short\" viewBox=\"0 0 16 16\">\n <path d=\"M8.47 4.22a.75.75 0 0 0 0 1.06l1.97 1.97H3.75a.75.75 0 0 0 0 1.5h6.69l-1.97 1.97a.75.75 0 1 0 1.06 1.06l3.25-3.25a.75.75 0 0 0 0-1.06L9.53 4.22a.75.75 0 0 0-1.06 0\"/>\n </symbol>\n <symbol id=\"diffs-icon-brand-github\" viewBox=\"0 0 16 16\">\n <path d=\"M8 0c4.42 0 8 3.58 8 8a8.01 8.01 0 0 1-5.45 7.59c-.4.08-.55-.17-.55-.38 0-.27.01-1.13.01-2.2 0-.75-.25-1.23-.54-1.48 1.78-.2 3.65-.88 3.65-3.95 0-.88-.31-1.59-.82-2.15.08-.2.36-1.02-.08-2.12 0 0-.67-.22-2.2.82-.64-.18-1.32-.27-2-.27s-1.36.09-2 .27c-1.53-1.03-2.2-.82-2.2-.82-.44 1.1-.16 1.92-.08 2.12-.51.56-.82 1.28-.82 2.15 0 3.06 1.86 3.75 3.64 3.95-.23.2-.44.55-.51 1.07-.46.21-1.61.55-2.33-.66-.15-.24-.6-.83-1.23-.82-.67.01-.27.38.01.53.34.19.73.9.82 1.13.16.45.68 1.31 2.69.94 0 .67.01 1.3.01 1.49 0 .21-.15.45-.55.38A7.995 7.995 0 0 1 0 8c0-4.42 3.58-8 8-8\"/>\n </symbol>\n <symbol id=\"diffs-icon-chevron\" viewBox=\"0 0 16 16\">\n <path d=\"M1.47 4.47a.75.75 0 0 1 1.06 0L8 9.94l5.47-5.47a.75.75 0 1 1 1.06 1.06l-6 6a.75.75 0 0 1-1.06 0l-6-6a.75.75 0 0 1 0-1.06\"/>\n </symbol>\n <symbol id=\"diffs-icon-chevrons-narrow\" viewBox=\"0 0 10 16\">\n <path d=\"M4.47 2.22a.75.75 0 0 1 1.06 0l3.25 3.25a.75.75 0 0 1-1.06 1.06L5 3.81 2.28 6.53a.75.75 0 0 1-1.06-1.06zM1.22 9.47a.75.75 0 0 1 1.06 0L5 12.19l2.72-2.72a.75.75 0 0 1 1.06 1.06l-3.25 3.25a.75.75 0 0 1-1.06 0l-3.25-3.25a.75.75 0 0 1 0-1.06\"/>\n </symbol>\n <symbol id=\"diffs-icon-diff-split\" viewBox=\"0 0 16 16\">\n <path d=\"M14 0H8.5v16H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2m-1.5 6.5v1h1a.5.5 0 0 1 0 1h-1v1a.5.5 0 0 1-1 0v-1h-1a.5.5 0 0 1 0-1h1v-1a.5.5 0 0 1 1 0\"/><path d=\"M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h5.5V0zm.5 7.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1 0-1\" opacity=\".3\"/>\n </symbol>\n <symbol id=\"diffs-icon-diff-unified\" viewBox=\"0 0 16 16\">\n <path fill-rule=\"evenodd\" d=\"M16 14a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V8.5h16zm-8-4a.5.5 0 0 0-.5.5v1h-1a.5.5 0 0 0 0 1h1v1a.5.5 0 0 0 1 0v-1h1a.5.5 0 0 0 0-1h-1v-1A.5.5 0 0 0 8 10\" clip-rule=\"evenodd\"/><path fill-rule=\"evenodd\" d=\"M14 0a2 2 0 0 1 2 2v5.5H0V2a2 2 0 0 1 2-2zM6.5 3.5a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1z\" clip-rule=\"evenodd\" opacity=\".4\"/>\n </symbol>\n <symbol id=\"diffs-icon-expand\" viewBox=\"0 0 16 16\">\n <path d=\"M3.47 5.47a.75.75 0 0 1 1.06 0L8 8.94l3.47-3.47a.75.75 0 1 1 1.06 1.06l-4 4a.75.75 0 0 1-1.06 0l-4-4a.75.75 0 0 1 0-1.06\"/>\n </symbol>\n <symbol id=\"diffs-icon-expand-all\" viewBox=\"0 0 16 16\">\n <path d=\"M11.47 9.47a.75.75 0 1 1 1.06 1.06l-4 4a.75.75 0 0 1-1.06 0l-4-4a.75.75 0 1 1 1.06-1.06L8 12.94zM7.526 1.418a.75.75 0 0 1 1.004.052l4 4a.75.75 0 1 1-1.06 1.06L8 3.06 4.53 6.53a.75.75 0 1 1-1.06-1.06l4-4z\"/>\n </symbol>\n <symbol id=\"diffs-icon-file-code\" viewBox=\"0 0 16 16\">\n <path d=\"M10.75 0c.199 0 .39.08.53.22l3.5 3.5c.14.14.22.331.22.53v9A2.75 2.75 0 0 1 12.25 16h-8.5A2.75 2.75 0 0 1 1 13.25V2.75A2.75 2.75 0 0 1 3.75 0zm-7 1.5c-.69 0-1.25.56-1.25 1.25v10.5c0 .69.56 1.25 1.25 1.25h8.5c.69 0 1.25-.56 1.25-1.25V5h-1.25A2.25 2.25 0 0 1 10 2.75V1.5z\"/><path d=\"M7.248 6.19a.75.75 0 0 1 .063 1.058L5.753 9l1.558 1.752a.75.75 0 0 1-1.122.996l-2-2.25a.75.75 0 0 1 0-.996l2-2.25a.75.75 0 0 1 1.06-.063M8.69 7.248a.75.75 0 1 1 1.12-.996l2 2.25a.75.75 0 0 1 0 .996l-2 2.25a.75.75 0 1 1-1.12-.996L10.245 9z\"/>\n </symbol>\n <symbol id=\"diffs-icon-plus\" viewBox=\"0 0 16 16\">\n <path d=\"M8 3a.75.75 0 0 1 .75.75v3.5h3.5a.75.75 0 0 1 0 1.5h-3.5v3.5a.75.75 0 0 1-1.5 0v-3.5h-3.5a.75.75 0 0 1 0-1.5h3.5v-3.5A.75.75 0 0 1 8 3\"/>\n </symbol>\n <symbol id=\"diffs-icon-symbol-added\" viewBox=\"0 0 16 16\">\n <path d=\"M8 4a.75.75 0 0 1 .75.75v2.5h2.5a.75.75 0 0 1 0 1.5h-2.5v2.5a.75.75 0 0 1-1.5 0v-2.5h-2.5a.75.75 0 0 1 0-1.5h2.5v-2.5A.75.75 0 0 1 8 4\"/><path d=\"M1.788 4.296c.196-.88.478-1.381.802-1.706s.826-.606 1.706-.802C5.194 1.588 6.387 1.5 8 1.5s2.806.088 3.704.288c.88.196 1.381.478 1.706.802s.607.826.802 1.706c.2.898.288 2.091.288 3.704s-.088 2.806-.288 3.704c-.195.88-.478 1.381-.802 1.706s-.826.607-1.706.802c-.898.2-2.091.288-3.704.288s-2.806-.088-3.704-.288c-.88-.195-1.381-.478-1.706-.802s-.606-.826-.802-1.706C1.588 10.806 1.5 9.613 1.5 8s.088-2.806.288-3.704M8 0C1.412 0 0 1.412 0 8s1.412 8 8 8 8-1.412 8-8-1.412-8-8-8\"/>\n </symbol>\n <symbol id=\"diffs-icon-symbol-deleted\" viewBox=\"0 0 16 16\">\n <path d=\"M4 8a.75.75 0 0 1 .75-.75h6.5a.75.75 0 0 1 0 1.5h-6.5A.75.75 0 0 1 4 8\"/><path d=\"M1.788 4.296c.196-.88.478-1.381.802-1.706s.826-.606 1.706-.802C5.194 1.588 6.387 1.5 8 1.5s2.806.088 3.704.288c.88.196 1.381.478 1.706.802s.607.826.802 1.706c.2.898.288 2.091.288 3.704s-.088 2.806-.288 3.704c-.195.88-.478 1.381-.802 1.706s-.826.607-1.706.802c-.898.2-2.091.288-3.704.288s-2.806-.088-3.704-.288c-.88-.195-1.381-.478-1.706-.802s-.606-.826-.802-1.706C1.588 10.806 1.5 9.613 1.5 8s.088-2.806.288-3.704M8 0C1.412 0 0 1.412 0 8s1.412 8 8 8 8-1.412 8-8-1.412-8-8-8\"/>\n </symbol>\n <symbol id=\"diffs-icon-symbol-diffstat\" viewBox=\"0 0 16 16\">\n <path d=\"M1.788 4.296c.196-.88.478-1.381.802-1.706s.826-.606 1.706-.802C5.194 1.588 6.387 1.5 8 1.5s2.806.088 3.704.288c.88.196 1.381.478 1.706.802s.607.826.802 1.706c.2.898.288 2.091.288 3.704s-.088 2.806-.288 3.704c-.195.88-.478 1.381-.802 1.706s-.826.607-1.706.802c-.898.2-2.091.288-3.704.288s-2.806-.088-3.704-.288c-.88-.195-1.381-.478-1.706-.802s-.606-.826-.802-1.706C1.588 10.806 1.5 9.613 1.5 8s.088-2.806.288-3.704M8 0C1.412 0 0 1.412 0 8s1.412 8 8 8 8-1.412 8-8-1.412-8-8-8\"/><path d=\"M8.75 4.296a.75.75 0 0 0-1.5 0V6.25h-2a.75.75 0 0 0 0 1.5h2v1.5h1.5v-1.5h2a.75.75 0 0 0 0-1.5h-2zM5.25 10a.75.75 0 0 0 0 1.5h5.5a.75.75 0 0 0 0-1.5z\"/>\n </symbol>\n <symbol id=\"diffs-icon-symbol-ignored\" viewBox=\"0 0 16 16\">\n <path d=\"M1.5 8c0 1.613.088 2.806.288 3.704.196.88.478 1.381.802 1.706s.826.607 1.706.802c.898.2 2.091.288 3.704.288s2.806-.088 3.704-.288c.88-.195 1.381-.478 1.706-.802s.607-.826.802-1.706c.2-.898.288-2.091.288-3.704s-.088-2.806-.288-3.704c-.195-.88-.478-1.381-.802-1.706s-.826-.606-1.706-.802C10.806 1.588 9.613 1.5 8 1.5s-2.806.088-3.704.288c-.88.196-1.381.478-1.706.802s-.606.826-.802 1.706C1.588 5.194 1.5 6.387 1.5 8M0 8c0-6.588 1.412-8 8-8s8 1.412 8 8-1.412 8-8 8-8-1.412-8-8m11.53-2.47a.75.75 0 0 0-1.06-1.06l-6 6a.75.75 0 1 0 1.06 1.06z\"/>\n </symbol>\n <symbol id=\"diffs-icon-symbol-modified\" viewBox=\"0 0 16 16\">\n <path d=\"M1.5 8c0 1.613.088 2.806.288 3.704.196.88.478 1.381.802 1.706s.826.607 1.706.802c.898.2 2.091.288 3.704.288s2.806-.088 3.704-.288c.88-.195 1.381-.478 1.706-.802s.607-.826.802-1.706c.2-.898.288-2.091.288-3.704s-.088-2.806-.288-3.704c-.195-.88-.478-1.381-.802-1.706s-.826-.606-1.706-.802C10.806 1.588 9.613 1.5 8 1.5s-2.806.088-3.704.288c-.88.196-1.381.478-1.706.802s-.606.826-.802 1.706C1.588 5.194 1.5 6.387 1.5 8M0 8c0-6.588 1.412-8 8-8s8 1.412 8 8-1.412 8-8 8-8-1.412-8-8m8 3a3 3 0 1 0 0-6 3 3 0 0 0 0 6\"/>\n </symbol>\n <symbol id=\"diffs-icon-symbol-moved\" viewBox=\"0 0 16 16\">\n <path d=\"M1.788 4.296c.196-.88.478-1.381.802-1.706s.826-.606 1.706-.802C5.194 1.588 6.387 1.5 8 1.5s2.806.088 3.704.288c.88.196 1.381.478 1.706.802s.607.826.802 1.706c.2.898.288 2.091.288 3.704s-.088 2.806-.288 3.704c-.195.88-.478 1.381-.802 1.706s-.826.607-1.706.802c-.898.2-2.091.288-3.704.288s-2.806-.088-3.704-.288c-.88-.195-1.381-.478-1.706-.802s-.606-.826-.802-1.706C1.588 10.806 1.5 9.613 1.5 8s.088-2.806.288-3.704M8 0C1.412 0 0 1.412 0 8s1.412 8 8 8 8-1.412 8-8-1.412-8-8-8\"/><path d=\"M8.495 4.695a.75.75 0 0 0-.05 1.06L10.486 8l-2.041 2.246a.75.75 0 0 0 1.11 1.008l2.5-2.75a.75.75 0 0 0 0-1.008l-2.5-2.75a.75.75 0 0 0-1.06-.051m-4 0a.75.75 0 0 0-.05 1.06l2.044 2.248-1.796 1.995a.75.75 0 0 0 1.114 1.004l2.25-2.5a.75.75 0 0 0-.002-1.007l-2.5-2.75a.75.75 0 0 0-1.06-.05\"/>\n </symbol>\n <symbol id=\"diffs-icon-symbol-ref\" viewBox=\"0 0 16 16\">\n <path d=\"M1.5 8c0 1.613.088 2.806.288 3.704.196.88.478 1.381.802 1.706.286.286.71.54 1.41.73V1.86c-.7.19-1.124.444-1.41.73-.324.325-.606.826-.802 1.706C1.588 5.194 1.5 6.387 1.5 8m4 6.397c.697.07 1.522.103 2.5.103 1.613 0 2.806-.088 3.704-.288.88-.195 1.381-.478 1.706-.802s.607-.826.802-1.706c.2-.898.288-2.091.288-3.704s-.088-2.806-.288-3.704c-.195-.88-.478-1.381-.802-1.706s-.826-.606-1.706-.802C10.806 1.588 9.613 1.5 8 1.5c-.978 0-1.803.033-2.5.103zM0 8c0-6.588 1.412-8 8-8s8 1.412 8 8-1.412 8-8 8-8-1.412-8-8m7-2a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1z\"/>\n </symbol>\n</svg>`;\n//#endregion\nexport { SVGSpriteSheet };\n\n//# sourceMappingURL=sprite.js.map","//#region src/utils/areLineAnnotationsEqual.ts\nfunction areLineAnnotationsEqual(annotationA, annotationB) {\n\treturn annotationA.lineNumber === annotationB.lineNumber && annotationA.metadata === annotationB.metadata;\n}\n//#endregion\nexport { areLineAnnotationsEqual };\n\n//# sourceMappingURL=areLineAnnotationsEqual.js.map","//#region src/utils/arePrePropertiesEqual.ts\nfunction arePrePropertiesEqual(propsA, propsB) {\n\tif (propsA == null || propsB == null) return propsA === propsB;\n\treturn areCustomPropertiesEqual(propsA.customProperties, propsB.customProperties) && propsA.type === propsB.type && propsA.diffIndicators === propsB.diffIndicators && propsA.disableBackground === propsB.disableBackground && propsA.disableLineNumbers === propsB.disableLineNumbers && propsA.overflow === propsB.overflow && propsA.split === propsB.split && propsA.totalLines === propsB.totalLines;\n}\nconst EMPTY_CUSTOM_PROPERTIES = {};\nfunction areCustomPropertiesEqual(customPropertiesA = EMPTY_CUSTOM_PROPERTIES, customPropertiesB = EMPTY_CUSTOM_PROPERTIES) {\n\tif (customPropertiesA === customPropertiesB) return true;\n\tconst keysA = Object.keys(customPropertiesA);\n\tconst keysB = Object.keys(customPropertiesB);\n\tif (keysA.length !== keysB.length) return false;\n\tfor (const key of keysA) if (customPropertiesA[key] !== customPropertiesB[key]) return false;\n\treturn true;\n}\n//#endregion\nexport { arePrePropertiesEqual };\n\n//# sourceMappingURL=arePrePropertiesEqual.js.map","//#region src/utils/createAnnotationWrapperNode.ts\nfunction createAnnotationWrapperNode(slot) {\n\tconst wrapper = document.createElement(\"div\");\n\twrapper.dataset.annotationSlot = \"\";\n\twrapper.slot = slot;\n\twrapper.style.whiteSpace = \"normal\";\n\treturn wrapper;\n}\n//#endregion\nexport { createAnnotationWrapperNode };\n\n//# sourceMappingURL=createAnnotationWrapperNode.js.map","//#region src/utils/createGutterUtilityContentNode.ts\nfunction createGutterUtilityContentNode() {\n\tconst gutterUtilityContent = document.createElement(\"div\");\n\tgutterUtilityContent.slot = \"gutter-utility-slot\";\n\tgutterUtilityContent.style.position = \"absolute\";\n\tgutterUtilityContent.style.top = \"0\";\n\tgutterUtilityContent.style.bottom = \"0\";\n\tgutterUtilityContent.style.textAlign = \"center\";\n\tgutterUtilityContent.style.whiteSpace = \"normal\";\n\tgutterUtilityContent.style.touchAction = \"none\";\n\treturn gutterUtilityContent;\n}\n//#endregion\nexport { createGutterUtilityContentNode };\n\n//# sourceMappingURL=createGutterUtilityContentNode.js.map","import { UNSAFE_CSS_ATTRIBUTE } from \"../constants.js\";\n//#region src/utils/createUnsafeCSSStyleNode.ts\nfunction createUnsafeCSSStyleNode() {\n\tconst node = document.createElement(\"style\");\n\tnode.setAttribute(UNSAFE_CSS_ATTRIBUTE, \"\");\n\treturn node;\n}\n//#endregion\nexport { createUnsafeCSSStyleNode };\n\n//# sourceMappingURL=createUnsafeCSSStyleNode.js.map","import { DIFFS_SCROLLBAR_GUTTER_MEASURED_PROPERTY, DIFFS_SCROLLBAR_MEASURE_ATTRIBUTE } from \"../constants.js\";\n//#region src/utils/scrollbarGutter.ts\nlet measuredScrollbarGutter;\nfunction getMeasuredScrollbarGutter(shadowRoot) {\n\tif (measuredScrollbarGutter != null) return measuredScrollbarGutter;\n\tconst host = shadowRoot.host;\n\tif (typeof HTMLElement !== \"undefined\" && host instanceof HTMLElement && !host.isConnected) return;\n\tconst wrapper = document.createElement(\"div\");\n\twrapper.setAttribute(\"data-code\", \"\");\n\twrapper.setAttribute(DIFFS_SCROLLBAR_MEASURE_ATTRIBUTE, \"true\");\n\tconst child = document.createElement(\"div\");\n\tchild.style.position = \"relative\";\n\tchild.style.width = \"200%\";\n\tchild.style.height = \"200%\";\n\twrapper.appendChild(child);\n\tshadowRoot.appendChild(wrapper);\n\tmeasuredScrollbarGutter = Math.max(wrapper.offsetHeight - wrapper.clientHeight, 0);\n\twrapper.remove();\n\treturn measuredScrollbarGutter;\n}\nfunction createMeasuredScrollbarGutterDeclaration(scrollbarGutter) {\n\treturn `${DIFFS_SCROLLBAR_GUTTER_MEASURED_PROPERTY}: ${scrollbarGutter == null ? \"var(--diffs-scrollbar-gutter-fallback)\" : `${scrollbarGutter}px`};`;\n}\n//#endregion\nexport { createMeasuredScrollbarGutterDeclaration, getMeasuredScrollbarGutter };\n\n//# sourceMappingURL=scrollbarGutter.js.map","//#region src/style.css?inline\nvar style_default = \"@layer base {\\n :host {\\n --diffs-font-fallback: \\\"SF Mono\\\", Monaco, Consolas, \\\"Ubuntu Mono\\\", \\\"Liberation Mono\\\",\\n \\\"Courier New\\\", monospace;\\n --diffs-header-font-fallback: system-ui, -apple-system, \\\"Segoe UI\\\", Roboto, \\\"Helvetica Neue\\\",\\n \\\"Noto Sans\\\", \\\"Liberation Sans\\\", Arial, sans-serif;\\n --diffs-mixer: light-dark(#000, #fff);\\n --diffs-gap-fallback: 8px;\\n --diffs-scrollbar-gutter-fallback: 6px;\\n --diffs-scrollbar-gutter: var(--diffs-scrollbar-gutter-override, var(--diffs-scrollbar-gutter-measured, var(--diffs-scrollbar-gutter-fallback)));\\n --diffs-added-light: #0dbe4e;\\n --diffs-added-dark: #5ecc71;\\n --diffs-modified-light: #009fff;\\n --diffs-modified-dark: #69b1ff;\\n --diffs-deleted-light: #ff2e3f;\\n --diffs-deleted-dark: #ff6762;\\n color-scheme: light dark;\\n font-family: var(--diffs-header-font-family, var(--diffs-header-font-fallback));\\n font-size: var(--diffs-font-size, 13px);\\n line-height: var(--diffs-line-height, 20px);\\n font-feature-settings: var(--diffs-font-features);\\n --diffs-bg: light-dark(var(--diffs-light-bg, #fff), var(--diffs-dark-bg, #000));\\n --diffs-bg-buffer: var(--diffs-bg-buffer-override, light-dark(color-mix(in lab, var(--diffs-bg) 92%, var(--diffs-mixer)), color-mix(in lab, var(--diffs-bg) 92%, var(--diffs-mixer))));\\n --diffs-bg-context: var(--diffs-bg-context-override, light-dark(color-mix(in lab, var(--diffs-bg) 98.5%, var(--diffs-mixer)), color-mix(in lab, var(--diffs-bg) 92.5%, var(--diffs-mixer))));\\n --diffs-bg-context-gutter: var(--diffs-bg-context-gutter-override, light-dark(color-mix(in lab, var(--diffs-bg-context) 90%, var(--diffs-bg)), color-mix(in lab, var(--diffs-bg-context) 45%, var(--diffs-bg))));\\n --diffs-bg-separator: var(--diffs-bg-separator-override, light-dark(color-mix(in lab, var(--diffs-bg) 96%, var(--diffs-mixer)), color-mix(in lab, var(--diffs-bg) 85%, var(--diffs-mixer))));\\n --diffs-fg: light-dark(var(--diffs-light, #000), var(--diffs-dark, #fff));\\n --diffs-fg-number: var(--diffs-fg-number-override, light-dark(color-mix(in lab, var(--diffs-fg) 65%, var(--diffs-bg)), color-mix(in lab, var(--diffs-fg) 65%, var(--diffs-bg))));\\n --diffs-fg-conflict-marker: var(--diffs-fg-conflict-marker-override, var(--diffs-fg-number));\\n --diffs-deletion-base: var(--diffs-deletion-color-override, light-dark(var(--diffs-light-deletion-color, var(--diffs-deletion-color, var(--diffs-deleted-light))), var(--diffs-dark-deletion-color, var(--diffs-deletion-color, var(--diffs-deleted-dark)))));\\n --diffs-addition-base: var(--diffs-addition-color-override, light-dark(var(--diffs-light-addition-color, var(--diffs-addition-color, var(--diffs-added-light))), var(--diffs-dark-addition-color, var(--diffs-addition-color, var(--diffs-added-dark)))));\\n --diffs-modified-base: var(--diffs-modified-color-override, light-dark(var(--diffs-light-modified-color, var(--diffs-modified-color, var(--diffs-modified-light))), var(--diffs-dark-modified-color, var(--diffs-modified-color, var(--diffs-modified-dark)))));\\n --diffs-bg-deletion: var(--diffs-bg-deletion-override, light-dark(color-mix(in lab, var(--diffs-bg) 88%, var(--diffs-deletion-base)), color-mix(in lab, var(--diffs-bg) 80%, var(--diffs-deletion-base))));\\n --diffs-bg-deletion-emphasis: var(--diffs-bg-deletion-emphasis-override, light-dark(rgb(from var(--diffs-deletion-base) r g b / .15), rgb(from var(--diffs-deletion-base) r g b / .2)));\\n --diffs-bg-addition: var(--diffs-bg-addition-override, light-dark(color-mix(in lab, var(--diffs-bg) 88%, var(--diffs-addition-base)), color-mix(in lab, var(--diffs-bg) 80%, var(--diffs-addition-base))));\\n --diffs-bg-addition-emphasis: var(--diffs-bg-addition-emphasis-override, light-dark(rgb(from var(--diffs-addition-base) r g b / .15), rgb(from var(--diffs-addition-base) r g b / .2)));\\n --diffs-selection-base: var(--diffs-modified-base);\\n --diffs-selection-number-fg: light-dark(color-mix(in lab, var(--diffs-selection-base) 65%, var(--diffs-mixer)), color-mix(in lab, var(--diffs-selection-base) 75%, var(--diffs-mixer)));\\n background-color: var(--diffs-bg);\\n color: var(--diffs-fg);\\n display: block;\\n }\\n\\n pre, code, [data-error-wrapper] {\\n isolation: isolate;\\n font-family: var(--diffs-font-family, var(--diffs-font-fallback));\\n outline: none;\\n margin: 0;\\n padding: 0;\\n display: block;\\n }\\n\\n pre, code {\\n background-color: var(--diffs-bg);\\n }\\n\\n code {\\n contain: content;\\n }\\n\\n *, :before, :after {\\n box-sizing: border-box;\\n }\\n\\n [data-icon-sprite] {\\n display: none;\\n }\\n\\n [data-diffs-header], [data-separator] {\\n font-family: var(--diffs-header-font-family, var(--diffs-header-font-fallback));\\n }\\n\\n [data-diffs-header][data-sticky] {\\n z-index: 1;\\n background-color: var(--diffs-bg);\\n position: sticky;\\n top: 0;\\n }\\n\\n [data-file-info] {\\n color: var(--fg);\\n background-color: color-mix(in lab, var(--bg) 98%, var(--fg));\\n border-block: 1px solid color-mix(in lab, var(--bg) 95%, var(--fg));\\n padding: 10px;\\n font-weight: 700;\\n }\\n\\n [data-diff], [data-file] {\\n --diffs-grid-number-column-width: minmax(min-content, max-content);\\n --diffs-code-grid: var(--diffs-grid-number-column-width) 1fr;\\n\\n &[data-dehydrated] {\\n --diffs-code-grid: var(--diffs-grid-number-column-width) minmax(0, 1fr);\\n }\\n\\n &:hover [data-code]::-webkit-scrollbar-thumb {\\n background-color: var(--diffs-bg-context);\\n }\\n }\\n\\n @supports (-webkit-touch-callout: none) {\\n :host {\\n --diffs-scrollbar-gutter-fallback: 0px;\\n }\\n }\\n\\n [data-line] span {\\n color: light-dark(var(--diffs-token-light, var(--diffs-light)), var(--diffs-token-dark, var(--diffs-dark)));\\n background-color: light-dark(var(--diffs-token-light-bg, inherit), var(--diffs-token-dark-bg, inherit));\\n font-weight: light-dark(var(--diffs-token-light-font-weight, inherit), var(--diffs-token-dark-font-weight, inherit));\\n font-style: light-dark(var(--diffs-token-light-font-style, inherit), var(--diffs-token-dark-font-style, inherit));\\n text-decoration: light-dark(var(--diffs-token-light-text-decoration, inherit), var(--diffs-token-dark-text-decoration, inherit));\\n }\\n\\n [data-line], [data-gutter-buffer], [data-column-number], [data-line-annotation], [data-no-newline], [data-merge-conflict], [data-merge-conflict-actions] {\\n --diffs-computed-decoration-bg: var(--diffs-bg);\\n --diffs-computed-diff-line-bg: var(--diffs-bg);\\n --diffs-computed-selected-line-bg: var(--diffs-bg);\\n color: var(--diffs-fg);\\n background-color: var(--diffs-line-bg, var(--diffs-bg));\\n\\n @media (pointer: fine) {\\n &:where([data-hovered]) {\\n --diffs-computed-hovered-line-bg: light-dark(color-mix(in lab,\\n var(--diffs-computed-selected-line-bg) 97%,\\n var(--diffs-bg-hover-override, var(--diffs-mixer))), color-mix(in lab,\\n var(--diffs-computed-selected-line-bg) 91%,\\n var(--diffs-bg-hover-override, var(--diffs-mixer))));\\n --diffs-line-bg: var(--diffs-computed-hovered-line-bg, inherit);\\n }\\n }\\n }\\n\\n [data-line], [data-no-newline] {\\n &[data-decoration-bg] {\\n --mix-deco-light: 92%;\\n --mix-deco-dark: 85%;\\n\\n &[data-decoration-bg-depth=\\\"2\\\"] {\\n --mix-deco-light: 88%;\\n --mix-deco-dark: 80%;\\n }\\n\\n &[data-decoration-bg-depth=\\\"3\\\"] {\\n --mix-deco-light: 85%;\\n --mix-deco-dark: 78%;\\n }\\n\\n @media (pointer: fine) {\\n &[data-hovered]:not([data-selected-line]) {\\n --mix-deco-light: 85%;\\n --mix-deco-dark: 85%;\\n }\\n\\n &[data-hovered]:not([data-selected-line])[data-decoration-bg-depth=\\\"2\\\"] {\\n --mix-deco-light: 83%;\\n --mix-deco-dark: 83%;\\n }\\n\\n &[data-hovered]:not([data-selected-line])[data-decoration-bg-depth=\\\"3\\\"] {\\n --mix-deco-light: 81%;\\n --mix-deco-dark: 81%;\\n }\\n }\\n\\n --diffs-computed-decoration-bg: light-dark(color-mix(in lab,\\n var(--diffs-bg) var(--mix-deco-light),\\n var(--diffs-decoration-bg)), color-mix(in lab,\\n var(--diffs-bg) var(--mix-deco-dark),\\n var(--diffs-decoration-bg)));\\n --diffs-computed-diff-line-bg: var(--diffs-computed-decoration-bg);\\n --diffs-computed-selected-line-bg: var(--diffs-computed-decoration-bg);\\n --diffs-line-bg: var(--diffs-computed-decoration-bg);\\n }\\n }\\n\\n [data-line-annotation], [data-gutter-buffer=\\\"annotation\\\"] {\\n --diffs-annotation-bg: var(--diffs-bg-context);\\n --diffs-computed-decoration-bg: var(--diffs-annotation-bg);\\n --diffs-computed-diff-line-bg: var(--diffs-annotation-bg);\\n --diffs-computed-selected-line-bg: var(--diffs-annotation-bg);\\n --diffs-line-bg: var(--diffs-annotation-bg);\\n }\\n\\n [data-merge-conflict-actions], [data-gutter-buffer=\\\"merge-conflict-action\\\"], [data-gutter-buffer=\\\"merge-conflict-marker-base\\\"], [data-gutter-buffer=\\\"merge-conflict-marker-separator\\\"], [data-merge-conflict=\\\"marker-base\\\"], [data-merge-conflict=\\\"marker-separator\\\"] {\\n --diffs-computed-decoration-bg: var(--diffs-bg-context);\\n --diffs-computed-diff-line-bg: var(--diffs-bg-context);\\n --diffs-computed-selected-line-bg: var(--diffs-bg-context);\\n --diffs-line-bg: var(--diffs-bg-context);\\n }\\n\\n [data-gutter-buffer=\\\"merge-conflict-marker-start\\\"], [data-merge-conflict=\\\"marker-start\\\"] {\\n --diffs-computed-decoration-bg: light-dark(color-mix(in lab,\\n var(--diffs-bg) 78%,\\n var(--conflict-bg-current-header-override, var(--diffs-addition-base))), color-mix(in lab,\\n var(--diffs-bg) 68%,\\n var(--conflict-bg-current-header-override, var(--diffs-addition-base))));\\n --diffs-computed-diff-line-bg: var(--diffs-computed-decoration-bg);\\n --diffs-computed-selected-line-bg: var(--diffs-computed-decoration-bg);\\n --diffs-line-bg: var(--diffs-computed-decoration-bg);\\n }\\n\\n [data-gutter-buffer=\\\"merge-conflict-marker-end\\\"], [data-merge-conflict=\\\"marker-end\\\"] {\\n --diffs-computed-decoration-bg: light-dark(color-mix(in lab,\\n var(--diffs-bg) 78%,\\n var(--conflict-bg-incoming-header-override, var(--diffs-modified-base))), color-mix(in lab,\\n var(--diffs-bg) 68%,\\n var(--conflict-bg-incoming-header-override, var(--diffs-modified-base))));\\n --diffs-computed-diff-line-bg: var(--diffs-computed-decoration-bg);\\n --diffs-computed-selected-line-bg: var(--diffs-computed-decoration-bg);\\n --diffs-line-bg: var(--diffs-computed-decoration-bg);\\n }\\n\\n [data-has-merge-conflict] [data-line-annotation], [data-has-merge-conflict] [data-gutter-buffer=\\\"annotation\\\"] {\\n --diffs-computed-decoration-bg: var(--diffs-bg);\\n --diffs-computed-diff-line-bg: var(--diffs-bg);\\n --diffs-computed-selected-line-bg: var(--diffs-bg);\\n --diffs-line-bg: var(--diffs-bg);\\n }\\n\\n :where([data-background]) {\\n & [data-gutter-buffer], & [data-column-number] {\\n --mix-light: 91%;\\n --mix-dark: 85%;\\n }\\n\\n & [data-line], & [data-no-newline] {\\n --mix-light: 88%;\\n --mix-dark: 80%;\\n }\\n\\n & [data-gutter-buffer], & [data-column-number], & [data-line], & [data-no-newline] {\\n --diffs-diff-line-mix-target: var(--diffs-bg);\\n\\n &[data-line-type=\\\"change-deletion\\\"] {\\n --diffs-diff-line-mix-target: var(--diffs-bg-deletion-override, var(--diffs-deletion-base));\\n\\n @media (pointer: fine) {\\n &[data-hovered] {\\n --mix-light: 80%;\\n --mix-dark: 75%;\\n }\\n }\\n\\n &:where([data-gutter-buffer], [data-column-number]) {\\n color: var(--diffs-fg-number-deletion-override, var(--diffs-deletion-base));\\n --diffs-diff-line-mix-target: var(--diffs-bg-deletion-number-override, var(--diffs-deletion-base));\\n }\\n\\n --diffs-computed-diff-line-bg: light-dark(color-mix(in lab,\\n var(--diffs-computed-decoration-bg) var(--mix-light),\\n var(--diffs-diff-line-mix-target)), color-mix(in lab,\\n var(--diffs-computed-decoration-bg) var(--mix-dark),\\n var(--diffs-diff-line-mix-target)));\\n --diffs-computed-selected-line-bg: var(--diffs-computed-diff-line-bg);\\n --diffs-line-bg: var(--diffs-computed-diff-line-bg, inherit);\\n }\\n\\n &[data-line-type=\\\"change-addition\\\"] {\\n --diffs-diff-line-mix-target: var(--diffs-bg-addition-override, var(--diffs-addition-base));\\n\\n @media (pointer: fine) {\\n &[data-hovered] {\\n --mix-light: 80%;\\n --mix-dark: 70%;\\n }\\n }\\n\\n &:where([data-gutter-buffer], [data-column-number]) {\\n color: var(--diffs-fg-number-addition-override, var(--diffs-addition-base));\\n --diffs-diff-line-mix-target: var(--diffs-bg-addition-number-override, var(--diffs-addition-base));\\n }\\n\\n --diffs-computed-diff-line-bg: light-dark(color-mix(in lab,\\n var(--diffs-computed-decoration-bg) var(--mix-light),\\n var(--diffs-diff-line-mix-target)), color-mix(in lab,\\n var(--diffs-computed-decoration-bg) var(--mix-dark),\\n var(--diffs-diff-line-mix-target)));\\n --diffs-computed-selected-line-bg: var(--diffs-computed-diff-line-bg);\\n --diffs-line-bg: var(--diffs-computed-diff-line-bg, inherit);\\n }\\n\\n &[data-merge-conflict=\\\"current\\\"] {\\n --diffs-diff-line-mix-target: var(--conflict-bg-current-override, var(--diffs-addition-base));\\n\\n &:where([data-gutter-buffer], [data-column-number]) {\\n color: var(--diffs-fg-number-addition-override, var(--diffs-addition-base));\\n --diffs-diff-line-mix-target: var(--conflict-bg-current-number-override, var(--diffs-addition-base));\\n }\\n\\n @media (pointer: fine) {\\n &[data-hovered] {\\n --mix-light: 80%;\\n --mix-dark: 70%;\\n }\\n }\\n\\n --diffs-computed-diff-line-bg: light-dark(color-mix(in lab,\\n var(--diffs-computed-decoration-bg) var(--mix-light),\\n var(--diffs-diff-line-mix-target)), color-mix(in lab,\\n var(--diffs-computed-decoration-bg) var(--mix-dark),\\n var(--diffs-diff-line-mix-target)));\\n --diffs-computed-selected-line-bg: var(--diffs-computed-diff-line-bg);\\n --diffs-line-bg: var(--diffs-computed-diff-line-bg, inherit);\\n }\\n\\n &[data-merge-conflict=\\\"incoming\\\"] {\\n --diffs-diff-line-mix-target: var(--conflict-bg-incoming-override, var(--diffs-modified-base));\\n\\n &:where([data-gutter-buffer], [data-column-number]) {\\n color: var(--diffs-modified-base);\\n --diffs-diff-line-mix-target: var(--conflict-bg-incoming-number-override, var(--diffs-modified-base));\\n }\\n\\n @media (pointer: fine) {\\n &[data-hovered] {\\n --mix-light: 80%;\\n --mix-dark: 70%;\\n }\\n }\\n\\n --diffs-computed-diff-line-bg: light-dark(color-mix(in lab,\\n var(--diffs-computed-decoration-bg) var(--mix-light),\\n var(--diffs-diff-line-mix-target)), color-mix(in lab,\\n var(--diffs-computed-decoration-bg) var(--mix-dark),\\n var(--diffs-diff-line-mix-target)));\\n --diffs-computed-selected-line-bg: var(--diffs-computed-diff-line-bg);\\n --diffs-line-bg: var(--diffs-computed-diff-line-bg, inherit);\\n }\\n }\\n }\\n\\n [data-gutter-buffer], [data-column-number], [data-line], [data-line-annotation], [data-merge-conflict], [data-merge-conflict-actions], [data-no-newline] {\\n --diffs-selection-mix-target: var(--diffs-bg-selection-override, var(--diffs-selection-base));\\n\\n &:where([data-line], [data-line-annotation], [data-merge-conflict], [data-merge-conflict-actions], [data-no-newline])[data-selected-line] {\\n --mix-selection-light: 82%;\\n --mix-selection-dark: 75%;\\n\\n @media (pointer: fine) {\\n &[data-hovered]:not([data-merge-conflict], [data-line-type=\\\"change-addition\\\"], [data-line-type=\\\"change-deletion\\\"]) {\\n --mix-selection-light: 75%;\\n --mix-selection-dark: 70%;\\n }\\n }\\n }\\n\\n &:where([data-gutter-buffer], [data-column-number])[data-selected-line] {\\n --mix-selection-light: 75%;\\n --mix-selection-dark: 60%;\\n --diffs-selection-mix-target: var(--diffs-bg-selection-number-override, var(--diffs-selection-base));\\n\\n @media (pointer: fine) {\\n &[data-hovered]:not([data-merge-conflict], [data-line-type=\\\"change-addition\\\"], [data-line-type=\\\"change-deletion\\\"]) {\\n --mix-selection-light: 70%;\\n --mix-selection-dark: 55%;\\n }\\n }\\n }\\n\\n &[data-selected-line] {\\n --diffs-computed-selected-line-bg: light-dark(color-mix(in lab,\\n var(--diffs-computed-diff-line-bg) var(--mix-selection-light),\\n var(--diffs-selection-mix-target)), color-mix(in lab,\\n var(--diffs-computed-diff-line-bg) var(--mix-selection-dark),\\n var(--diffs-selection-mix-target)));\\n --diffs-line-bg: var(--diffs-computed-selected-line-bg, inherit);\\n }\\n }\\n\\n [data-gutter-buffer], [data-column-number] {\\n &[data-selected-line] {\\n color: var(--diffs-selection-number-fg);\\n }\\n }\\n\\n [data-no-newline] {\\n user-select: none;\\n\\n & span {\\n opacity: .6;\\n }\\n }\\n\\n [data-diff-type=\\\"split\\\"][data-overflow=\\\"scroll\\\"] {\\n grid-template-columns: 1fr 1fr;\\n display: grid;\\n\\n & [data-additions] {\\n border-left: 1px solid var(--diffs-bg);\\n }\\n\\n & [data-deletions] {\\n border-right: 1px solid var(--diffs-bg);\\n }\\n }\\n\\n [data-code] {\\n grid-auto-flow: dense;\\n grid-template-columns: var(--diffs-code-grid);\\n overflow: var(--diffs-overflow-override, scroll) clip;\\n overscroll-behavior-x: none;\\n tab-size: var(--diffs-tab-size, 2);\\n padding-top: var(--diffs-gap-block, var(--diffs-gap-fallback));\\n padding-bottom: max(0px,\\n calc(var(--diffs-gap-block, var(--diffs-gap-fallback)) -\\n var(--diffs-scrollbar-gutter)));\\n scrollbar-gutter: stable;\\n align-self: flex-start;\\n display: grid;\\n }\\n\\n [data-diffs-scrollbar-measure] {\\n opacity: 0;\\n pointer-events: none;\\n scrollbar-gutter: auto;\\n grid-template-columns: none;\\n width: 100px;\\n height: 100px;\\n padding: 0;\\n position: absolute;\\n top: -200px;\\n left: -200px;\\n }\\n\\n [data-container-size] {\\n container-type: inline-size;\\n }\\n\\n [data-code]::-webkit-scrollbar {\\n width: 0;\\n height: var(--diffs-scrollbar-gutter);\\n }\\n\\n [data-code]::-webkit-scrollbar-track {\\n background: none;\\n }\\n\\n [data-code]::-webkit-scrollbar-thumb {\\n background-color: #0000;\\n background-clip: content-box;\\n border: 1px solid #0000;\\n border-radius: 3px;\\n }\\n\\n [data-code]::-webkit-scrollbar-corner {\\n background-color: #0000;\\n }\\n\\n @supports ((-moz-appearance: none)) {\\n [data-code] {\\n scrollbar-width: thin;\\n scrollbar-color: var(--diffs-bg-context) transparent;\\n padding-bottom: var(--diffs-gap-block, var(--diffs-gap-fallback));\\n }\\n }\\n\\n [data-diffs-header] ~ [data-diff], [data-diffs-header] ~ [data-file] {\\n & [data-code], &[data-overflow=\\\"wrap\\\"] {\\n padding-top: 0;\\n }\\n }\\n\\n [data-gutter] {\\n grid-template-rows: subgrid;\\n grid-template-columns: subgrid;\\n z-index: 3;\\n background-color: var(--diffs-bg);\\n grid-column: 1;\\n display: grid;\\n position: relative;\\n\\n & [data-gutter-buffer], & [data-column-number] {\\n border-right: var(--diffs-gap-style, 2px solid var(--diffs-bg));\\n }\\n }\\n\\n [data-content] {\\n grid-template-rows: subgrid;\\n grid-template-columns: subgrid;\\n background-color: var(--diffs-bg);\\n grid-column: 2;\\n min-width: 0;\\n display: grid;\\n }\\n\\n [data-diff-type=\\\"split\\\"][data-overflow=\\\"wrap\\\"] {\\n grid-auto-flow: dense;\\n grid-template-columns: repeat(2, var(--diffs-code-grid));\\n padding-block: var(--diffs-gap-block, var(--diffs-gap-fallback));\\n display: grid;\\n\\n & [data-deletions] {\\n display: contents;\\n\\n & [data-gutter] {\\n grid-column: 1;\\n }\\n\\n & [data-content] {\\n border-right: 1px solid var(--diffs-bg);\\n grid-column: 2;\\n }\\n }\\n\\n & [data-additions] {\\n display: contents;\\n\\n & [data-gutter] {\\n border-left: 1px solid var(--diffs-bg);\\n grid-column: 3;\\n }\\n\\n & [data-content] {\\n grid-column: 4;\\n }\\n }\\n }\\n\\n [data-overflow=\\\"scroll\\\"] [data-gutter] {\\n position: sticky;\\n left: 0;\\n }\\n\\n [data-interactive-lines] [data-line] {\\n cursor: pointer;\\n }\\n\\n [data-interactive-line-numbers] [data-column-number] {\\n cursor: pointer;\\n touch-action: none;\\n }\\n\\n [data-content-buffer], [data-gutter-buffer] {\\n user-select: none;\\n min-height: 1lh;\\n position: relative;\\n }\\n\\n [data-gutter-buffer] {\\n padding-left: 2ch;\\n padding-right: 1ch;\\n\\n &:before {\\n content: \\\"\\\";\\n min-width: var(--diffs-min-number-column-width, var(--diffs-min-number-column-width-default, 3ch));\\n display: block;\\n }\\n }\\n\\n [data-gutter-buffer=\\\"annotation\\\"] {\\n --diffs-annotation-bg: var(--diffs-bg-context-gutter);\\n min-height: 0;\\n }\\n\\n [data-gutter-buffer=\\\"buffer\\\"] {\\n --diffs-line-bg: var(--diffs-bg-context-gutter);\\n }\\n\\n [data-content-buffer] {\\n background-position: 5px 0;\\n background-size: 8px 8px;\\n background-origin: border-box;\\n background-image: repeating-linear-gradient(-45deg,\\n transparent,\\n transparent calc(3px * 1.414),\\n var(--diffs-bg-buffer) calc(3px * 1.414),\\n var(--diffs-bg-buffer) calc(4px * 1.414));\\n grid-column: 1;\\n }\\n\\n [data-separator] {\\n box-sizing: content-box;\\n background-color: var(--diffs-bg);\\n }\\n\\n [data-separator=\\\"simple\\\"] {\\n min-height: 4px;\\n }\\n\\n [data-separator=\\\"line-info\\\"], [data-separator=\\\"line-info-basic\\\"], [data-separator=\\\"metadata\\\"], [data-separator=\\\"simple\\\"] {\\n background-color: var(--diffs-bg-separator);\\n }\\n\\n [data-separator=\\\"line-info\\\"], [data-separator=\\\"line-info-basic\\\"], [data-separator=\\\"metadata\\\"] {\\n height: 32px;\\n position: relative;\\n }\\n\\n [data-separator-wrapper] {\\n user-select: none;\\n fill: currentColor;\\n background-color: var(--diffs-bg);\\n align-items: center;\\n height: 100%;\\n display: flex;\\n position: absolute;\\n inset-inline: 0;\\n }\\n\\n [data-content] [data-separator-wrapper] {\\n display: none;\\n }\\n\\n [data-separator=\\\"metadata\\\"] [data-separator-wrapper] {\\n background-color: var(--diffs-bg-separator);\\n height: 100%;\\n color: var(--diffs-fg-number);\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n min-width: min-content;\\n padding-inline: 1ch;\\n inset-inline: 100% auto;\\n overflow: hidden;\\n }\\n\\n [data-separator=\\\"line-info\\\"] {\\n margin-block: var(--diffs-gap-block, var(--diffs-gap-fallback));\\n\\n & [data-separator-wrapper] {\\n min-width: 16px;\\n }\\n }\\n\\n [data-separator=\\\"line-info-basic\\\"], [data-separator=\\\"metadata\\\"] {\\n margin-block: 0;\\n }\\n\\n [data-separator=\\\"line-info\\\"][data-separator-first] {\\n margin-top: 0;\\n }\\n\\n [data-separator=\\\"line-info\\\"][data-separator-last] {\\n margin-bottom: 0;\\n }\\n\\n [data-expand-index] [data-separator-wrapper] {\\n grid-template-columns: 32px auto;\\n display: grid;\\n }\\n\\n [data-expand-index] [data-separator-wrapper][data-separator-multi-button] {\\n grid-template-columns: 32px 32px auto;\\n }\\n\\n [data-expand-button], [data-separator-content] {\\n background-color: var(--diffs-bg-separator);\\n flex: none;\\n align-items: center;\\n display: flex;\\n }\\n\\n [data-expand-index] [data-separator-content]:hover {\\n cursor: pointer;\\n text-decoration: underline;\\n }\\n\\n [data-expand-button] {\\n cursor: pointer;\\n min-width: 32px;\\n color: var(--diffs-fg-number);\\n border-right: 2px solid var(--diffs-bg);\\n flex-shrink: 0;\\n justify-content: center;\\n align-self: stretch;\\n\\n &:hover {\\n color: var(--diffs-fg);\\n }\\n\\n &[data-expand-all-button] {\\n display: none;\\n }\\n }\\n\\n [data-expand-down] [data-icon] {\\n transform: scaleY(-1);\\n }\\n\\n [data-separator-content] {\\n height: 100%;\\n color: var(--diffs-fg-number);\\n flex: auto;\\n justify-content: flex-start;\\n padding: 0 1ch;\\n overflow: hidden;\\n }\\n\\n [data-separator=\\\"line-info\\\"], [data-separator=\\\"line-info-basic\\\"] {\\n & [data-separator-content] {\\n user-select: none;\\n height: 100%;\\n overflow: clip;\\n }\\n }\\n\\n [data-unmodified-lines] {\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n flex: 0 auto;\\n min-width: 0;\\n display: block;\\n overflow: hidden;\\n }\\n\\n @supports (width: 1cqi) {\\n [data-unified] {\\n & [data-separator=\\\"line-info\\\"] [data-separator-wrapper] {\\n padding-inline: var(--diffs-gap-inline, var(--diffs-gap-fallback));\\n width: 100cqi;\\n\\n & [data-separator-content] {\\n border-radius: 6px;\\n }\\n }\\n\\n & [data-separator=\\\"line-info\\\"][data-expand-index] [data-separator-wrapper] [data-separator-content] {\\n border-top-left-radius: unset;\\n border-bottom-left-radius: unset;\\n }\\n }\\n\\n [data-gutter] {\\n & [data-separator=\\\"line-info\\\"] [data-separator-wrapper] {\\n padding-left: var(--diffs-gap-inline, var(--diffs-gap-fallback));\\n }\\n\\n & [data-separator=\\\"line-info\\\"] [data-separator-content] {\\n border-top-left-radius: 6px;\\n border-bottom-left-radius: 6px;\\n }\\n\\n & [data-separator=\\\"line-info\\\"][data-expand-index] [data-separator-content] {\\n border-top-left-radius: unset;\\n border-bottom-left-radius: unset;\\n }\\n }\\n\\n [data-additions] {\\n & [data-content] [data-separator=\\\"line-info\\\"] {\\n background-color: var(--diffs-bg);\\n\\n & [data-separator-wrapper] {\\n display: none;\\n }\\n }\\n\\n & [data-gutter] [data-separator=\\\"line-info\\\"] [data-separator-wrapper] {\\n background-color: var(--diffs-bg-separator);\\n border-top-right-radius: 6px;\\n border-bottom-right-radius: 6px;\\n height: 100%;\\n display: block;\\n\\n & [data-separator-content], & [data-expand-button] {\\n display: none;\\n }\\n }\\n }\\n\\n [data-overflow=\\\"scroll\\\"] [data-additions] [data-gutter] [data-separator=\\\"line-info\\\"] [data-separator-wrapper] {\\n width: calc(100cqi - var(--diffs-gap-inline, var(--diffs-gap-fallback)));\\n }\\n\\n [data-overflow=\\\"wrap\\\"] [data-additions] [data-content] [data-separator=\\\"line-info\\\"] [data-separator-wrapper] {\\n background-color: var(--diffs-bg-separator);\\n height: 100%;\\n margin-right: var(--diffs-gap-inline, var(--diffs-gap-fallback));\\n border-top-right-radius: 6px;\\n border-bottom-right-radius: 6px;\\n display: block;\\n\\n & [data-separator-content], & [data-expand-button] {\\n display: none;\\n }\\n }\\n\\n [data-separator=\\\"line-info\\\"] [data-separator-wrapper] {\\n & [data-expand-both], & [data-expand-down], & [data-expand-up] {\\n border-top-left-radius: 6px;\\n border-bottom-left-radius: 6px;\\n }\\n }\\n\\n @media (pointer: fine) {\\n [data-separator=\\\"line-info\\\"] [data-separator-wrapper] {\\n &[data-separator-multi-button] {\\n & [data-expand-up] {\\n border-top-left-radius: 6px;\\n border-bottom-left-radius: unset;\\n }\\n\\n & [data-expand-down] {\\n border-bottom-left-radius: 6px;\\n border-top-left-radius: unset;\\n }\\n }\\n }\\n }\\n }\\n\\n @media (pointer: coarse) {\\n [data-separator=\\\"line-info-basic\\\"] [data-separator-wrapper][data-separator-multi-button] {\\n grid-template-columns: 34px 34px auto;\\n\\n & [data-separator-content] {\\n grid-column: unset;\\n grid-row: unset;\\n }\\n }\\n\\n @supports (width: 1cqi) {\\n [data-separator=\\\"line-info\\\"] [data-separator-wrapper] {\\n & [data-expand-both], & [data-expand-down], & [data-expand-up] {\\n border-top-left-radius: 6px;\\n border-bottom-left-radius: 6px;\\n }\\n\\n &[data-separator-multi-button] {\\n & [data-expand-up] {\\n border-top-left-radius: 6px;\\n border-bottom-left-radius: 6px;\\n }\\n\\n & [data-expand-down] {\\n border-bottom-left-radius: unset;\\n border-top-left-radius: unset;\\n }\\n }\\n }\\n }\\n }\\n\\n @media (pointer: fine) {\\n [data-separator-wrapper][data-separator-multi-button] {\\n grid-template-rows: 50% 50%;\\n display: grid;\\n\\n & [data-separator-content] {\\n grid-area: 1 / 2 / -1;\\n min-width: min-content;\\n }\\n\\n & [data-expand-button] {\\n grid-column: 1;\\n }\\n }\\n\\n [data-separator=\\\"line-info\\\"] [data-separator-wrapper], [data-separator=\\\"line-info\\\"] [data-separator-wrapper][data-separator-multi-button] {\\n grid-template-columns: 34px auto;\\n }\\n\\n [data-separator=\\\"line-info-basic\\\"][data-expand-index] [data-separator-wrapper] {\\n grid-template-columns: 100% auto;\\n }\\n\\n [data-separator=\\\"line-info\\\"], [data-separator=\\\"line-info-basic\\\"] {\\n & [data-separator-multi-button] {\\n & [data-expand-up] {\\n border-bottom: 1px solid var(--diffs-bg);\\n border-right: 2px solid var(--diffs-bg);\\n }\\n\\n & [data-expand-down] {\\n border-top: 1px solid var(--diffs-bg);\\n border-right: 2px solid var(--diffs-bg);\\n }\\n }\\n }\\n }\\n\\n [data-additions] [data-gutter] [data-separator-wrapper], [data-additions] [data-separator=\\\"line-info-basic\\\"] [data-separator-wrapper], [data-content] [data-separator-wrapper] {\\n display: none;\\n }\\n\\n [data-line-annotation] {\\n min-height: var(--diffs-annotation-min-height, 0);\\n z-index: 2;\\n }\\n\\n [data-merge-conflict-actions] {\\n z-index: 2;\\n }\\n\\n [data-separator=\\\"custom\\\"] {\\n grid-template-columns: subgrid;\\n display: grid;\\n }\\n\\n [data-line], [data-column-number], [data-no-newline] {\\n padding-inline: 1ch;\\n position: relative;\\n }\\n\\n [data-indicators=\\\"classic\\\"] [data-line] {\\n padding-inline-start: 2ch;\\n }\\n\\n [data-indicators=\\\"classic\\\"] {\\n & [data-line-type=\\\"change-addition\\\"], & [data-line-type=\\\"change-deletion\\\"] {\\n &[data-no-newline], &[data-line] {\\n &:before {\\n user-select: none;\\n width: 1ch;\\n height: 1lh;\\n display: inline-block;\\n position: absolute;\\n top: 0;\\n left: 0;\\n }\\n }\\n }\\n\\n & [data-line-type=\\\"change-addition\\\"] {\\n &[data-line], &[data-no-newline] {\\n &:before {\\n content: \\\"+\\\";\\n color: var(--diffs-addition-base);\\n }\\n }\\n }\\n\\n & [data-line-type=\\\"change-deletion\\\"] {\\n &[data-line], &[data-no-newline] {\\n &:before {\\n content: \\\"-\\\";\\n color: var(--diffs-deletion-base);\\n }\\n }\\n }\\n }\\n\\n [data-indicators=\\\"bars\\\"] {\\n & [data-line-type=\\\"change-deletion\\\"], & [data-line-type=\\\"change-addition\\\"] {\\n &[data-column-number] {\\n &:before {\\n content: \\\"\\\";\\n user-select: none;\\n contain: strict;\\n width: 4px;\\n height: 100%;\\n display: block;\\n position: absolute;\\n top: 0;\\n left: 0;\\n }\\n }\\n }\\n\\n & [data-line-type=\\\"change-deletion\\\"] {\\n &[data-column-number] {\\n &:before {\\n background-image: linear-gradient(0deg,\\n var(--diffs-bg-deletion) 50%,\\n var(--diffs-deletion-base) 50%);\\n background-repeat: repeat;\\n background-size: 2px 2px;\\n background-size: calc(1lh / round(1lh / 2px))\\n calc(1lh / round(1lh / 2px));\\n }\\n }\\n }\\n\\n & [data-line-type=\\\"change-addition\\\"] {\\n &[data-column-number] {\\n &:before {\\n background-color: var(--diffs-addition-base);\\n }\\n }\\n }\\n }\\n\\n [data-overflow=\\\"wrap\\\"] {\\n & [data-line], & [data-annotation-content] {\\n white-space: pre-wrap;\\n word-break: break-word;\\n }\\n }\\n\\n [data-overflow=\\\"scroll\\\"] [data-line] {\\n white-space: pre;\\n min-height: 1lh;\\n }\\n\\n [data-column-number] {\\n box-sizing: content-box;\\n text-align: right;\\n user-select: none;\\n color: var(--diffs-fg-number);\\n padding-left: 2ch;\\n }\\n\\n [data-line-number-content] {\\n min-width: var(--diffs-min-number-column-width, var(--diffs-min-number-column-width-default, 3ch));\\n z-index: 1;\\n display: inline-block;\\n position: relative;\\n }\\n\\n [data-disable-line-numbers] {\\n & [data-gutter-buffer], & [data-column-number] {\\n min-width: 4px;\\n padding: 0;\\n\\n &:before {\\n min-width: 0;\\n }\\n }\\n\\n & [data-line-number-content] {\\n display: none;\\n }\\n\\n & [data-gutter-utility-slot] {\\n right: unset;\\n justify-content: flex-start;\\n left: 0;\\n }\\n\\n &[data-indicators=\\\"bars\\\"] [data-gutter-utility-slot] {\\n left: 6px;\\n }\\n }\\n\\n [data-file][data-disable-line-numbers] {\\n & [data-gutter-buffer], & [data-column-number] {\\n border-right: 0;\\n min-width: 0;\\n }\\n }\\n\\n [data-diff-span] {\\n box-decoration-break: clone;\\n border-radius: 3px;\\n }\\n\\n [data-line-type=\\\"change-addition\\\"] [data-diff-span] {\\n background-color: var(--diffs-bg-addition-emphasis);\\n }\\n\\n [data-line-type=\\\"change-deletion\\\"] [data-diff-span] {\\n background-color: var(--diffs-bg-deletion-emphasis);\\n }\\n\\n [data-merge-conflict=\\\"marker-start\\\"], [data-merge-conflict=\\\"marker-base\\\"], [data-merge-conflict=\\\"marker-separator\\\"], [data-merge-conflict=\\\"marker-end\\\"] {\\n color: var(--diffs-fg);\\n padding-left: 1ch;\\n }\\n\\n [data-merge-conflict=\\\"marker-start\\\"], [data-merge-conflict=\\\"marker-end\\\"] {\\n align-items: center;\\n display: flex;\\n\\n &:after {\\n color: var(--diffs-fg-conflict-marker);\\n font-size: .75rem;\\n font-style: normal;\\n line-height: 1.25rem;\\n font-family: var(--diffs-header-font-family, var(--diffs-header-font-fallback));\\n padding-left: 1ch;\\n }\\n }\\n\\n [data-merge-conflict=\\\"marker-start\\\"]:after {\\n content: \\\"(Current Change)\\\";\\n }\\n\\n [data-merge-conflict=\\\"marker-end\\\"]:after {\\n content: \\\"(Incoming Change)\\\";\\n }\\n\\n [data-merge-conflict-actions-content] {\\n min-height: 1.75rem;\\n font-family: var(--diffs-header-font-family, var(--diffs-header-font-fallback));\\n color: var(--diffs-fg);\\n align-items: center;\\n gap: .25rem;\\n padding-inline: .5rem;\\n font-size: .75rem;\\n line-height: 1.2;\\n display: flex;\\n }\\n\\n [data-merge-conflict-action] {\\n appearance: none;\\n color: var(--diffs-fg-number);\\n font: inherit;\\n cursor: pointer;\\n background: none;\\n border: 0;\\n padding: 0;\\n font-style: normal;\\n }\\n\\n [data-merge-conflict-action]:hover {\\n color: var(--diffs-fg);\\n }\\n\\n [data-merge-conflict-action=\\\"current\\\"]:hover {\\n color: var(--diffs-addition-base);\\n }\\n\\n [data-merge-conflict-action=\\\"incoming\\\"]:hover {\\n color: var(--diffs-modified-base);\\n }\\n\\n [data-merge-conflict-action-separator] {\\n color: var(--diffs-fg-number);\\n opacity: .6;\\n user-select: none;\\n }\\n\\n [data-diffs-header=\\\"default\\\"] {\\n background-color: var(--diffs-bg);\\n justify-content: space-between;\\n align-items: center;\\n gap: var(--diffs-gap-inline, var(--diffs-gap-fallback));\\n min-height: calc(1lh + (var(--diffs-gap-block, var(--diffs-gap-fallback)) * 3));\\n z-index: 2;\\n flex-direction: row;\\n padding-inline: 16px;\\n display: flex;\\n position: relative;\\n top: 0;\\n }\\n\\n [data-header-content] {\\n align-items: center;\\n gap: var(--diffs-gap-inline, var(--diffs-gap-fallback));\\n white-space: nowrap;\\n flex-direction: row;\\n min-width: 0;\\n display: flex;\\n }\\n\\n [data-header-content] [data-prev-name], [data-header-content] [data-title] {\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n direction: rtl;\\n min-width: 0;\\n overflow: hidden;\\n }\\n\\n [data-prev-name] {\\n opacity: .7;\\n }\\n\\n [data-rename-icon] {\\n fill: currentColor;\\n flex-grow: 0;\\n flex-shrink: 0;\\n }\\n\\n [data-diffs-header=\\\"default\\\"] [data-metadata] {\\n white-space: nowrap;\\n align-items: center;\\n gap: 1ch;\\n display: flex;\\n }\\n\\n [data-diffs-header=\\\"default\\\"] [data-additions-count] {\\n font-family: var(--diffs-font-family, var(--diffs-font-fallback));\\n color: var(--diffs-addition-base);\\n }\\n\\n [data-diffs-header=\\\"default\\\"] [data-deletions-count] {\\n font-family: var(--diffs-font-family, var(--diffs-font-fallback));\\n color: var(--diffs-deletion-base);\\n }\\n\\n [data-change-icon] {\\n fill: currentColor;\\n flex-shrink: 0;\\n }\\n\\n [data-change-icon=\\\"change\\\"], [data-change-icon=\\\"rename-pure\\\"], [data-change-icon=\\\"rename-changed\\\"] {\\n color: var(--diffs-modified-base);\\n }\\n\\n [data-change-icon=\\\"new\\\"] {\\n color: var(--diffs-addition-base);\\n }\\n\\n [data-change-icon=\\\"deleted\\\"] {\\n color: var(--diffs-deletion-base);\\n }\\n\\n [data-change-icon=\\\"file\\\"] {\\n opacity: .6;\\n }\\n\\n [data-annotation-content] {\\n z-index: 2;\\n isolation: isolate;\\n align-self: flex-start;\\n min-width: 0;\\n display: flow-root;\\n position: relative;\\n }\\n\\n [data-overflow=\\\"scroll\\\"] [data-annotation-content], [data-overflow=\\\"scroll\\\"] [data-merge-conflict-actions-content] {\\n width: var(--diffs-column-content-width, auto);\\n left: var(--diffs-column-number-width, 0);\\n position: sticky;\\n }\\n\\n [data-annotation-slot] {\\n text-wrap-mode: wrap;\\n word-break: normal;\\n white-space-collapse: collapse;\\n }\\n\\n [data-gutter-utility-slot] {\\n touch-action: none;\\n justify-content: flex-end;\\n display: flex;\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n right: 0;\\n }\\n\\n [data-utility-button] {\\n appearance: none;\\n cursor: pointer;\\n width: 1lh;\\n height: 1lh;\\n font-size: var(--diffs-font-size, 13px);\\n line-height: var(--diffs-line-height, 20px);\\n background-color: var(--diffs-modified-base);\\n color: var(--diffs-bg);\\n fill: currentColor;\\n z-index: 4;\\n touch-action: none;\\n border: none;\\n border-radius: 4px;\\n justify-content: center;\\n align-items: center;\\n margin-right: calc(-1lh + 1ch);\\n padding: 0;\\n display: flex;\\n position: relative;\\n\\n &:before {\\n content: \\\"\\\";\\n display: block;\\n position: absolute;\\n inset: 0 0 0 -4px;\\n }\\n }\\n\\n [data-decoration-bar-stack] {\\n pointer-events: none;\\n isolation: isolate;\\n z-index: 1;\\n background-color: var(--diffs-decoration-bar-color, transparent);\\n box-sizing: content-box;\\n border-left: 2px solid var(--diffs-bg);\\n border-right: 2px solid var(--diffs-bg);\\n width: 6px;\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n right: -2px;\\n\\n [data-decoration-bar-depth=\\\"1\\\"] & {\\n background-color: color-mix(in lab,\\n var(--diffs-bg) 20%,\\n var(--diffs-decoration-bar-color, transparent));\\n }\\n\\n [data-decoration-bar-depth=\\\"2\\\"] & {\\n background-color: color-mix(in lab,\\n var(--diffs-bg) 45%,\\n var(--diffs-decoration-bar-color, transparent));\\n }\\n\\n [data-decoration-bar-depth=\\\"3\\\"] & {\\n background-color: color-mix(in lab,\\n var(--diffs-bg) 65%,\\n var(--diffs-decoration-bar-color, transparent));\\n }\\n\\n [data-decoration-bar-start] & {\\n border-top-left-radius: 5px;\\n border-top-right-radius: 5px;\\n }\\n\\n [data-decoration-bar-end] & {\\n z-index: 3;\\n border-bottom-right-radius: 5px;\\n border-bottom-left-radius: 5px;\\n }\\n }\\n\\n [data-placeholder] {\\n contain: strict;\\n }\\n\\n [data-error-wrapper] {\\n padding: var(--diffs-gap-block, var(--diffs-gap-fallback))\\n var(--diffs-gap-inline, var(--diffs-gap-fallback));\\n scrollbar-width: none;\\n max-height: 400px;\\n overflow: auto;\\n\\n & [data-error-message] {\\n color: var(--diffs-deletion-base);\\n font-size: 18px;\\n font-weight: bold;\\n }\\n\\n & [data-error-stack] {\\n color: var(--diffs-fg-number);\\n }\\n }\\n}\\n\\n@layer theme, rendered, unsafe;\\n\";\n//#endregion\nexport { style_default as default };\n\n//# sourceMappingURL=style.js.map","import { DIFFS_SCROLLBAR_GUTTER_MEASURED_PROPERTY } from \"../constants.js\";\nimport style_default from \"../style.js\";\nimport { createMeasuredScrollbarGutterDeclaration } from \"./scrollbarGutter.js\";\n//#region src/utils/cssWrappers.ts\nconst LAYER_ORDER = `@layer base, theme, rendered, unsafe;`;\nconst SCROLLBAR_GUTTER_DECLARATION_PATTERN = new RegExp(`${escapeRegExp(DIFFS_SCROLLBAR_GUTTER_MEASURED_PROPERTY)}\\\\s*:\\\\s*[^;]+;`);\nfunction wrapCoreCSS(mainCSS) {\n\treturn `${LAYER_ORDER}\n${style_default}\n@layer theme {\n ${mainCSS}\n}`;\n}\nfunction wrapUnsafeCSS(unsafeCSS) {\n\treturn `${LAYER_ORDER}\n@layer unsafe {\n ${unsafeCSS}\n}`;\n}\nfunction wrapThemeCSS(themeCSS, themeType = \"system\", scrollbarGutter) {\n\treturn `${LAYER_ORDER}\n@layer rendered {\n :host {${themeType === \"system\" ? \"\" : `\n color-scheme: ${themeType};`}\n ${createMeasuredScrollbarGutterDeclaration(scrollbarGutter)}\n ${themeCSS}\n }\n}`;\n}\nfunction patchScrollbarGutterSize(themeCSS, scrollbarGutter) {\n\tconst scrollbarGutterRule = createMeasuredScrollbarGutterDeclaration(scrollbarGutter);\n\treturn themeCSS.replace(SCROLLBAR_GUTTER_DECLARATION_PATTERN, scrollbarGutterRule);\n}\nfunction escapeRegExp(value) {\n\treturn value.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n//#endregion\nexport { patchScrollbarGutterSize, wrapCoreCSS, wrapThemeCSS, wrapUnsafeCSS };\n\n//# sourceMappingURL=cssWrappers.js.map","//#region src/utils/getFileRendererOptions.ts\nfunction getFileRendererOptions(options) {\n\treturn {\n\t\ttheme: options?.theme,\n\t\tdisableLineNumbers: options?.disableLineNumbers,\n\t\toverflow: options?.overflow,\n\t\tthemeType: options?.themeType,\n\t\tcollapsed: options?.collapsed,\n\t\tdisableFileHeader: options?.disableFileHeader,\n\t\tdisableVirtualizationBuffers: options?.disableVirtualizationBuffers,\n\t\tstickyHeader: options?.stickyHeader,\n\t\tpreferredHighlighter: options?.preferredHighlighter,\n\t\tuseCSSClasses: options?.useCSSClasses,\n\t\tuseTokenTransformer: options?.useTokenTransformer,\n\t\ttokenizeMaxLineLength: options?.tokenizeMaxLineLength,\n\t\ttokenizeMaxLength: options?.tokenizeMaxLength,\n\t\tunsafeCSS: options?.unsafeCSS,\n\t\theaderRenderMode: options?.renderCustomHeader != null ? \"custom\" : \"default\"\n\t};\n}\n//#endregion\nexport { getFileRendererOptions };\n\n//# sourceMappingURL=getFileRendererOptions.js.map","//#region src/utils/getOrCreateCodeNode.ts\nfunction getOrCreateCodeNode({ code, pre, columnType, rowSpan, containerSize = false } = {}) {\n\tif (code == null) {\n\t\tcode = document.createElement(\"code\");\n\t\tcode.setAttribute(\"data-code\", \"\");\n\t\tif (columnType != null) code.setAttribute(`data-${columnType}`, \"\");\n\t\tpre?.appendChild(code);\n\t}\n\tif (rowSpan != null) code.style.setProperty(\"grid-row\", `span ${rowSpan}`);\n\telse code.style.removeProperty(\"grid-row\");\n\tif (containerSize) code.setAttribute(\"data-container-size\", \"\");\n\telse code.removeAttribute(\"data-container-size\");\n\treturn code;\n}\n//#endregion\nexport { getOrCreateCodeNode };\n\n//# sourceMappingURL=getOrCreateCodeNode.js.map","import { THEME_CSS_ATTRIBUTE } from \"../constants.js\";\n//#region src/utils/hostTheme.ts\nfunction upsertHostThemeStyle({ shadowRoot, currentNode, themeCSS }) {\n\tif (themeCSS.trim() === \"\") {\n\t\tcurrentNode?.remove();\n\t\treturn;\n\t}\n\tcurrentNode ??= createHostThemeStyleNode();\n\tcurrentNode.textContent = themeCSS;\n\tif (currentNode.parentNode !== shadowRoot) shadowRoot.appendChild(currentNode);\n\treturn currentNode;\n}\nfunction createHostThemeStyleNode() {\n\tconst node = document.createElement(\"style\");\n\tnode.setAttribute(THEME_CSS_ATTRIBUTE, \"\");\n\treturn node;\n}\n//#endregion\nexport { createHostThemeStyleNode, upsertHostThemeStyle };\n\n//# sourceMappingURL=hostTheme.js.map","//#region src/utils/prerenderHTMLIfNecessary.ts\nfunction prerenderHTMLIfNecessary(element, html) {\n\tif (html == null) return;\n\tconst shadowRoot = element.shadowRoot ?? element.attachShadow({ mode: \"open\" });\n\tif (shadowRoot.innerHTML === \"\") shadowRoot.innerHTML = html;\n}\n//#endregion\nexport { prerenderHTMLIfNecessary };\n\n//# sourceMappingURL=prerenderHTMLIfNecessary.js.map","//#region src/utils/setWrapperNodeProps.ts\nfunction setPreNodeProperties(pre, { type, diffIndicators, disableBackground, disableLineNumbers, overflow, split, totalLines, customProperties }) {\n\tif (customProperties != null) for (const key in customProperties) {\n\t\tconst value = customProperties[key];\n\t\tif (value != null) pre.setAttribute(key, `${value}`);\n\t}\n\tif (type === \"diff\") {\n\t\tpre.setAttribute(\"data-diff\", \"\");\n\t\tpre.removeAttribute(\"data-file\");\n\t} else {\n\t\tpre.setAttribute(\"data-file\", \"\");\n\t\tpre.removeAttribute(\"data-diff\");\n\t}\n\tswitch (diffIndicators) {\n\t\tcase \"bars\":\n\t\tcase \"classic\":\n\t\t\tpre.setAttribute(\"data-indicators\", diffIndicators);\n\t\t\tbreak;\n\t\tcase \"none\":\n\t\t\tpre.removeAttribute(\"data-indicators\");\n\t\t\tbreak;\n\t}\n\tif (disableLineNumbers) pre.setAttribute(\"data-disable-line-numbers\", \"\");\n\telse pre.removeAttribute(\"data-disable-line-numbers\");\n\tif (disableBackground) pre.removeAttribute(\"data-background\");\n\telse pre.setAttribute(\"data-background\", \"\");\n\tif (type === \"diff\") pre.setAttribute(\"data-diff-type\", split ? \"split\" : \"single\");\n\telse pre.removeAttribute(\"data-diff-type\");\n\tpre.setAttribute(\"data-overflow\", overflow);\n\tpre.style.setProperty(\"--diffs-min-number-column-width-default\", `${`${totalLines}`.length}ch`);\n\treturn pre;\n}\n//#endregion\nexport { setPreNodeProperties };\n\n//# sourceMappingURL=setWrapperNodeProps.js.map","import { DIFFS_TAG_NAME } from \"../constants.js\";\nimport style_default from \"../style.js\";\nimport { getMeasuredScrollbarGutter } from \"../utils/scrollbarGutter.js\";\n//#region src/components/web-components.ts\nif (typeof HTMLElement !== \"undefined\" && customElements.get(\"diffs-container\") == null) {\n\tlet sheet;\n\tclass FileDiffContainer extends HTMLElement {\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tif (this.shadowRoot != null) return;\n\t\t\tconst shadowRoot = this.attachShadow({ mode: \"open\" });\n\t\t\tif (sheet == null) {\n\t\t\t\tsheet = new CSSStyleSheet();\n\t\t\t\tsheet.replaceSync(style_default);\n\t\t\t}\n\t\t\tshadowRoot.adoptedStyleSheets = [sheet];\n\t\t}\n\t\tconnectedCallback() {\n\t\t\tgetMeasuredScrollbarGutter(this.shadowRoot ?? this.attachShadow({ mode: \"open\" }));\n\t\t}\n\t}\n\tcustomElements.define(DIFFS_TAG_NAME, FileDiffContainer);\n}\nconst DiffsContainerLoaded = true;\n//#endregion\nexport { DiffsContainerLoaded };\n\n//# sourceMappingURL=web-components.js.map","import { CUSTOM_HEADER_SLOT_ID, DEFAULT_THEMES, EMPTY_RENDER_RANGE, HEADER_METADATA_SLOT_ID, HEADER_PREFIX_SLOT_ID } from \"../constants.js\";\nimport { areThemesEqual } from \"../utils/areThemesEqual.js\";\nimport { isStyleNode } from \"../utils/isStyleNode.js\";\nimport { InteractionManager, pluckInteractionOptions } from \"../managers/InteractionManager.js\";\nimport { ResizeManager } from \"../managers/ResizeManager.js\";\nimport { areFilesEqual } from \"../utils/areFilesEqual.js\";\nimport { areRenderRangesEqual } from \"../utils/areRenderRangesEqual.js\";\nimport { getLineAnnotationName } from \"../utils/getLineAnnotationName.js\";\nimport { isFilePlainText } from \"../utils/isFilePlainText.js\";\nimport { FileRenderer } from \"../renderers/FileRenderer.js\";\nimport { SVGSpriteSheet } from \"../sprite.js\";\nimport { areLineAnnotationsEqual } from \"../utils/areLineAnnotationsEqual.js\";\nimport { arePrePropertiesEqual } from \"../utils/arePrePropertiesEqual.js\";\nimport { createAnnotationWrapperNode } from \"../utils/createAnnotationWrapperNode.js\";\nimport { createGutterUtilityContentNode } from \"../utils/createGutterUtilityContentNode.js\";\nimport { createUnsafeCSSStyleNode } from \"../utils/createUnsafeCSSStyleNode.js\";\nimport { getMeasuredScrollbarGutter } from \"../utils/scrollbarGutter.js\";\nimport { patchScrollbarGutterSize, wrapThemeCSS, wrapUnsafeCSS } from \"../utils/cssWrappers.js\";\nimport { getFileRendererOptions } from \"../utils/getFileRendererOptions.js\";\nimport { getOrCreateCodeNode } from \"../utils/getOrCreateCodeNode.js\";\nimport { upsertHostThemeStyle } from \"../utils/hostTheme.js\";\nimport { prerenderHTMLIfNecessary } from \"../utils/prerenderHTMLIfNecessary.js\";\nimport { setPreNodeProperties } from \"../utils/setWrapperNodeProps.js\";\nimport \"./web-components.js\";\nimport { toHtml } from \"hast-util-to-html\";\n//#region src/components/File.ts\nconst EMPTY_STRINGS = [];\nlet instanceId = -1;\nvar File = class {\n\toptions;\n\tworkerManager;\n\tisContainerManaged;\n\tstatic LoadedCustomComponent = true;\n\t__id = `file:${++instanceId}`;\n\ttype = \"file\";\n\tfileContainer;\n\tspriteSVG;\n\tpre;\n\tcode;\n\tbufferBefore;\n\tbufferAfter;\n\tthemeCSSStyle;\n\tappliedThemeCSS;\n\thasAdoptedThemeCSS = false;\n\tunsafeCSSStyle;\n\tappliedUnsafeCSS;\n\tgutterUtilityContent;\n\terrorWrapper;\n\tplaceHolder;\n\tlastRenderedHeaderHTML;\n\tcachedHeaderHTML;\n\tappliedPreAttributes;\n\tlastRowCount;\n\tmounted = false;\n\theaderElement;\n\theaderCustom;\n\theaderPrefix;\n\theaderMetadata;\n\tfileRenderer;\n\tresizeManager;\n\tinteractionManager;\n\tannotationCache = /* @__PURE__ */ new Map();\n\tlineAnnotations = [];\n\tmanagersDirty = false;\n\tfile;\n\trenderRange;\n\tenabled = true;\n\tconstructor(options = { theme: DEFAULT_THEMES }, workerManager, isContainerManaged = false) {\n\t\tthis.options = options;\n\t\tthis.workerManager = workerManager;\n\t\tthis.isContainerManaged = isContainerManaged;\n\t\tthis.fileRenderer = new FileRenderer(options, this.handleHighlightRender, this.workerManager);\n\t\tthis.resizeManager = new ResizeManager();\n\t\tthis.interactionManager = new InteractionManager(\"file\", pluckInteractionOptions(options));\n\t\tthis.workerManager?.subscribeToThemeChanges(this);\n\t}\n\thandleHighlightRender = () => {\n\t\tthis.rerender();\n\t};\n\trerender() {\n\t\tif (!this.enabled || this.file == null) return;\n\t\tthis.render({\n\t\t\tfile: this.file,\n\t\t\tforceRender: true,\n\t\t\trenderRange: this.renderRange\n\t\t});\n\t}\n\tonThemeChange() {\n\t\tthis.fileRenderer.clearRenderCache();\n\t\tthis.rerender();\n\t}\n\tsetOptions(options) {\n\t\tif (options == null) return;\n\t\tthis.options = options;\n\t\tthis.cachedHeaderHTML = void 0;\n\t\tthis.syncInteractionOptions();\n\t}\n\tsyncInteractionOptions() {\n\t\tthis.interactionManager.setOptions(pluckInteractionOptions(this.options));\n\t}\n\tmergeOptions(options) {\n\t\tthis.options = {\n\t\t\t...this.options,\n\t\t\t...options\n\t\t};\n\t}\n\tsetThemeType(themeType) {\n\t\tif ((this.options.themeType ?? \"system\") === themeType) return;\n\t\tthis.mergeOptions({ themeType });\n\t\tthis.applyCachedThemeState(themeType);\n\t}\n\tapplyCachedThemeState(themeType) {\n\t\tif (typeof this.options.theme === \"string\" || this.fileContainer == null || this.appliedThemeCSS == null) return false;\n\t\tconst effectiveThemeType = this.appliedThemeCSS.baseThemeType ?? themeType;\n\t\tif (this.appliedThemeCSS.themeType === effectiveThemeType) return false;\n\t\tthis.applyThemeState(this.fileContainer, this.appliedThemeCSS.themeStyles, themeType, this.appliedThemeCSS.baseThemeType);\n\t\treturn true;\n\t}\n\thasThemeChanged() {\n\t\treturn this.appliedThemeCSS != null && !areThemesEqual(this.appliedThemeCSS.theme, this.options.theme ?? DEFAULT_THEMES);\n\t}\n\tgetHoveredLine = () => {\n\t\treturn this.interactionManager.getHoveredLine();\n\t};\n\tsetLineAnnotations(lineAnnotations) {\n\t\tthis.lineAnnotations = lineAnnotations;\n\t}\n\tsetSelectedLines(range, options) {\n\t\tthis.interactionManager.setSelection(range, options);\n\t}\n\tflushManagers() {\n\t\tif (!this.managersDirty || this.pre == null) {\n\t\t\tthis.managersDirty = false;\n\t\t\treturn;\n\t\t}\n\t\tconst { overflow = \"scroll\" } = this.options;\n\t\tthis.interactionManager.setup(this.pre);\n\t\tthis.resizeManager.setup(this.pre, overflow === \"wrap\");\n\t\tthis.managersDirty = false;\n\t}\n\tcleanUp(recycle = false) {\n\t\tthis.emitPostRender(true);\n\t\tthis.resizeManager.cleanUp();\n\t\tthis.interactionManager.cleanUp();\n\t\tthis.managersDirty = false;\n\t\tthis.workerManager?.unsubscribeToThemeChanges(this);\n\t\tthis.renderRange = void 0;\n\t\tif (!this.isContainerManaged) this.fileContainer?.remove();\n\t\tthis.fileContainer = void 0;\n\t\tthis.mounted = false;\n\t\tif (!recycle) this.lineAnnotations = [];\n\t\tthis.annotationCache.clear();\n\t\tthis.pre = void 0;\n\t\tthis.bufferBefore = void 0;\n\t\tthis.bufferAfter = void 0;\n\t\tthis.appliedPreAttributes = void 0;\n\t\tthis.lastRowCount = void 0;\n\t\tthis.headerElement = void 0;\n\t\tthis.headerPrefix = void 0;\n\t\tthis.headerMetadata = void 0;\n\t\tthis.headerCustom = void 0;\n\t\tthis.lastRenderedHeaderHTML = void 0;\n\t\tif (!recycle) this.cachedHeaderHTML = void 0;\n\t\tthis.errorWrapper = void 0;\n\t\tthis.themeCSSStyle = void 0;\n\t\tthis.appliedThemeCSS = void 0;\n\t\tthis.hasAdoptedThemeCSS = false;\n\t\tthis.unsafeCSSStyle = void 0;\n\t\tthis.appliedUnsafeCSS = void 0;\n\t\tthis.placeHolder = void 0;\n\t\tthis.unsafeCSSStyle = void 0;\n\t\tif (recycle) this.fileRenderer.recycle();\n\t\telse {\n\t\t\tthis.fileRenderer.cleanUp();\n\t\t\tthis.workerManager = void 0;\n\t\t\tthis.file = void 0;\n\t\t}\n\t\tthis.enabled = false;\n\t}\n\tvirtualizedSetup() {\n\t\tthis.enabled = true;\n\t\tthis.workerManager?.subscribeToThemeChanges(this);\n\t}\n\thydrate(props) {\n\t\tconst { fileContainer, prerenderedHTML, preventEmit = false, file, lineAnnotations } = props;\n\t\tthis.hydrateElements(fileContainer, prerenderedHTML);\n\t\tif (shouldRenderCode(this.pre, file, this.options.collapsed) || shouldRenderHeader(this.headerElement, file, this.options.disableFileHeader)) this.render({\n\t\t\t...props,\n\t\t\tpreventEmit: true\n\t\t});\n\t\telse this.hydrationSetup({\n\t\t\tfile,\n\t\t\tlineAnnotations\n\t\t});\n\t\tif (!preventEmit) this.emitPostRender();\n\t}\n\thydrateElements(fileContainer, prerenderedHTML) {\n\t\tif (this.fileContainer !== fileContainer) this.emitPostRender(true);\n\t\tprerenderHTMLIfNecessary(fileContainer, prerenderedHTML);\n\t\tfor (const element of Array.from(fileContainer.shadowRoot?.children ?? [])) {\n\t\t\tif (element instanceof SVGElement) {\n\t\t\t\tthis.spriteSVG = element;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!(element instanceof HTMLElement)) continue;\n\t\t\tif (element instanceof HTMLPreElement) {\n\t\t\t\tthis.pre = element;\n\t\t\t\tthis.appliedPreAttributes = void 0;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (element instanceof HTMLStyleElement && element.hasAttribute(\"data-theme-css\")) {\n\t\t\t\tthis.themeCSSStyle = element;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (element instanceof HTMLStyleElement && element.hasAttribute(\"data-unsafe-css\")) {\n\t\t\t\tthis.unsafeCSSStyle = element;\n\t\t\t\tthis.appliedUnsafeCSS = element.textContent;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (\"diffsHeader\" in element.dataset) {\n\t\t\t\tthis.headerElement = element;\n\t\t\t\tthis.lastRenderedHeaderHTML = void 0;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\tif (this.pre != null) {\n\t\t\tthis.syncCodeNodeFromPre(this.pre);\n\t\t\tthis.pre.removeAttribute(\"data-dehydrated\");\n\t\t}\n\t\tthis.fileContainer = fileContainer;\n\t\tthis.hydrateMeasuredScrollbar();\n\t}\n\thydrationSetup({ file, lineAnnotations }) {\n\t\tthis.lineAnnotations = lineAnnotations ?? this.lineAnnotations;\n\t\tthis.file = file;\n\t\tthis.fileRenderer.setOptions(getFileRendererOptions(this.options));\n\t\tthis.syncInteractionOptions();\n\t\tif (this.pre == null) return;\n\t\tthis.fileRenderer.hydrate(file);\n\t\tthis.renderAnnotations();\n\t\tthis.renderGutterUtility();\n\t\tthis.injectUnsafeCSS();\n\t\tthis.managersDirty = true;\n\t\tthis.flushManagers();\n\t}\n\tgetOrCreateLineCache(file = this.file) {\n\t\treturn file != null ? this.fileRenderer.getOrCreateLineCache(file) : EMPTY_STRINGS;\n\t}\n\trender({ file, fileContainer, forceRender = false, preventEmit = false, containerWrapper, deferManagers = false, lineAnnotations, renderRange }) {\n\t\tconst { collapsed = false, themeType = \"system\" } = this.options;\n\t\tif (!this.enabled) throw new Error(\"File.render: attempting to call render after cleaned up\");\n\t\tconst nextRenderRange = collapsed ? void 0 : renderRange;\n\t\tconst previousRenderRange = this.renderRange;\n\t\tconst themeChanged = this.hasThemeChanged();\n\t\tconst annotationsChanged = lineAnnotations != null && (lineAnnotations.length > 0 || this.lineAnnotations.length > 0) ? lineAnnotations !== this.lineAnnotations : false;\n\t\tconst didFileChange = !areFilesEqual(this.file, file);\n\t\tif (!collapsed && !forceRender && areRenderRangesEqual(nextRenderRange, this.renderRange) && !didFileChange && !annotationsChanged && !themeChanged) return this.applyCachedThemeState(themeType);\n\t\tthis.renderRange = nextRenderRange;\n\t\tif (didFileChange) this.cachedHeaderHTML = void 0;\n\t\tthis.file = file;\n\t\tthis.fileRenderer.setOptions(getFileRendererOptions(this.options));\n\t\tthis.syncInteractionOptions();\n\t\tif (lineAnnotations != null) this.setLineAnnotations(lineAnnotations);\n\t\tthis.fileRenderer.setLineAnnotations(this.lineAnnotations);\n\t\tconst { disableErrorHandling = false, disableFileHeader = false } = this.options;\n\t\tif (disableFileHeader) {\n\t\t\tif (this.headerElement != null) {\n\t\t\t\tthis.headerElement.remove();\n\t\t\t\tthis.headerElement = void 0;\n\t\t\t\tthis.lastRenderedHeaderHTML = void 0;\n\t\t\t}\n\t\t\tthis.clearHeaderSlots();\n\t\t}\n\t\tfileContainer = this.getOrCreateFileContainerNode(fileContainer, containerWrapper);\n\t\tthis.applyCachedThemeState(themeType);\n\t\tif (collapsed) {\n\t\t\tthis.removeRenderedCode();\n\t\t\tthis.clearAuxiliaryNodes();\n\t\t\ttry {\n\t\t\t\tconst fileResult = this.fileRenderer.renderFile(file, EMPTY_RENDER_RANGE);\n\t\t\t\tif (fileResult != null) this.applyThemeState(fileContainer, fileResult.themeStyles, themeType, fileResult.baseThemeType);\n\t\t\t\tif (fileResult?.headerAST != null) this.applyHeaderToDOM(fileResult.headerAST, fileContainer);\n\t\t\t\tthis.injectUnsafeCSS();\n\t\t\t} catch (error) {\n\t\t\t\tif (disableErrorHandling) throw error;\n\t\t\t\tconsole.error(error);\n\t\t\t\tif (error instanceof Error) this.applyErrorToDOM(error, fileContainer);\n\t\t\t}\n\t\t\tif (!preventEmit) this.emitPostRender();\n\t\t\treturn true;\n\t\t}\n\t\ttry {\n\t\t\tconst pre = this.getOrCreatePreNode(fileContainer);\n\t\t\tif (!this.canPartiallyRender(forceRender, annotationsChanged, didFileChange || themeChanged) || !this.applyPartialRender(previousRenderRange, nextRenderRange)) {\n\t\t\t\tconst fileResult = this.fileRenderer.renderFile(file, nextRenderRange);\n\t\t\t\tif (fileResult == null) {\n\t\t\t\t\tif (this.workerManager?.isInitialized() === false) this.workerManager.initialize().then(() => this.rerender());\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tthis.applyThemeState(fileContainer, fileResult.themeStyles, themeType, fileResult.baseThemeType);\n\t\t\t\tif (fileResult.headerAST != null) this.applyHeaderToDOM(fileResult.headerAST, fileContainer);\n\t\t\t\tthis.applyFullRender(fileResult, pre);\n\t\t\t}\n\t\t\tthis.applyBuffers(pre, nextRenderRange);\n\t\t\tthis.injectUnsafeCSS();\n\t\t\tthis.managersDirty = true;\n\t\t\tif (!deferManagers) this.flushManagers();\n\t\t\tthis.renderAnnotations();\n\t\t\tthis.renderGutterUtility();\n\t\t} catch (error) {\n\t\t\tif (disableErrorHandling) throw error;\n\t\t\tconsole.error(error);\n\t\t\tif (error instanceof Error) this.applyErrorToDOM(error, fileContainer);\n\t\t}\n\t\tif (!preventEmit) this.emitPostRender();\n\t\treturn true;\n\t}\n\temitPostRender(unmount = false) {\n\t\tconst { fileContainer, options: { onPostRender } } = this;\n\t\tif (unmount) {\n\t\t\tif (!this.mounted) return;\n\t\t\tthis.mounted = false;\n\t\t\tif (fileContainer == null) return;\n\t\t\tonPostRender?.(fileContainer, this, \"unmount\");\n\t\t\treturn;\n\t\t}\n\t\tif (fileContainer == null) return;\n\t\tconst phase = this.mounted ? \"update\" : \"mount\";\n\t\tthis.mounted = true;\n\t\tonPostRender?.(fileContainer, this, phase);\n\t}\n\tremoveRenderedCode() {\n\t\tthis.resizeManager.cleanUp();\n\t\tthis.interactionManager.cleanUp();\n\t\tthis.bufferBefore?.remove();\n\t\tthis.bufferBefore = void 0;\n\t\tthis.bufferAfter?.remove();\n\t\tthis.bufferAfter = void 0;\n\t\tthis.code?.remove();\n\t\tthis.code = void 0;\n\t\tthis.pre?.remove();\n\t\tthis.pre = void 0;\n\t\tthis.appliedPreAttributes = void 0;\n\t\tthis.lastRowCount = void 0;\n\t}\n\tclearAuxiliaryNodes() {\n\t\tfor (const { element } of this.annotationCache.values()) element.remove();\n\t\tthis.annotationCache.clear();\n\t\tthis.gutterUtilityContent?.remove();\n\t\tthis.gutterUtilityContent = void 0;\n\t}\n\tcanPartiallyRender(forceRender, annotationsChanged, didContentChange) {\n\t\tif (forceRender || annotationsChanged || didContentChange) return false;\n\t\treturn true;\n\t}\n\trenderPlaceholder(height) {\n\t\tif (this.fileContainer == null) return false;\n\t\tthis.emitPostRender(true);\n\t\tthis.cleanChildNodes();\n\t\tif (this.placeHolder == null) {\n\t\t\tconst shadowRoot = this.fileContainer.shadowRoot ?? this.fileContainer.attachShadow({ mode: \"open\" });\n\t\t\tthis.placeHolder = document.createElement(\"div\");\n\t\t\tthis.placeHolder.dataset.placeholder = \"\";\n\t\t\tshadowRoot.appendChild(this.placeHolder);\n\t\t}\n\t\tthis.placeHolder.style.setProperty(\"height\", `${height}px`);\n\t\treturn true;\n\t}\n\tprimeHighlightCache() {\n\t\tconst { file, workerManager } = this;\n\t\tif (file == null || file.cacheKey == null || workerManager == null || isFilePlainText(file)) return;\n\t\tif (this.fileRenderer.getOrCreateLineCache(file).length > (this.options.tokenizeMaxLength ?? 1e5)) return;\n\t\tworkerManager.primeFileHighlightCache(file);\n\t}\n\tcleanChildNodes() {\n\t\tthis.resizeManager.cleanUp();\n\t\tthis.interactionManager.cleanUp();\n\t\tthis.bufferAfter?.remove();\n\t\tthis.bufferBefore?.remove();\n\t\tthis.code?.remove();\n\t\tthis.errorWrapper?.remove();\n\t\tthis.headerElement?.remove();\n\t\tthis.gutterUtilityContent?.remove();\n\t\tthis.headerPrefix?.remove();\n\t\tthis.headerMetadata?.remove();\n\t\tthis.headerCustom?.remove();\n\t\tthis.pre?.remove();\n\t\tthis.spriteSVG?.remove();\n\t\tthis.themeCSSStyle?.remove();\n\t\tthis.unsafeCSSStyle?.remove();\n\t\tthis.bufferAfter = void 0;\n\t\tthis.bufferBefore = void 0;\n\t\tthis.code = void 0;\n\t\tthis.errorWrapper = void 0;\n\t\tthis.headerElement = void 0;\n\t\tthis.gutterUtilityContent = void 0;\n\t\tthis.headerPrefix = void 0;\n\t\tthis.headerMetadata = void 0;\n\t\tthis.headerCustom = void 0;\n\t\tthis.pre = void 0;\n\t\tthis.spriteSVG = void 0;\n\t\tthis.themeCSSStyle = void 0;\n\t\tthis.appliedThemeCSS = void 0;\n\t\tthis.hasAdoptedThemeCSS = false;\n\t\tthis.unsafeCSSStyle = void 0;\n\t\tthis.appliedUnsafeCSS = void 0;\n\t\tthis.lastRenderedHeaderHTML = void 0;\n\t\tthis.lastRowCount = void 0;\n\t\tthis.mounted = false;\n\t}\n\trenderAnnotations() {\n\t\tif (this.isContainerManaged || this.fileContainer == null) {\n\t\t\tfor (const { element } of this.annotationCache.values()) element.remove();\n\t\t\tthis.annotationCache.clear();\n\t\t\treturn;\n\t\t}\n\t\tconst staleAnnotations = new Map(this.annotationCache);\n\t\tconst { renderAnnotation } = this.options;\n\t\tif (renderAnnotation != null && this.lineAnnotations.length > 0) for (const [index, annotation] of this.lineAnnotations.entries()) {\n\t\t\tconst id = `${index}-${getLineAnnotationName(annotation)}`;\n\t\t\tlet cache = this.annotationCache.get(id);\n\t\t\tif (cache == null || !areLineAnnotationsEqual(annotation, cache.annotation)) {\n\t\t\t\tcache?.element.remove();\n\t\t\t\tconst content = renderAnnotation(annotation);\n\t\t\t\tif (content == null) continue;\n\t\t\t\tcache = {\n\t\t\t\t\telement: createAnnotationWrapperNode(getLineAnnotationName(annotation)),\n\t\t\t\t\tannotation\n\t\t\t\t};\n\t\t\t\tcache.element.appendChild(content);\n\t\t\t\tthis.fileContainer.appendChild(cache.element);\n\t\t\t\tthis.annotationCache.set(id, cache);\n\t\t\t}\n\t\t\tstaleAnnotations.delete(id);\n\t\t}\n\t\tfor (const [id, { element }] of staleAnnotations.entries()) {\n\t\t\tthis.annotationCache.delete(id);\n\t\t\telement.remove();\n\t\t}\n\t}\n\trenderGutterUtility() {\n\t\tconst { renderGutterUtility } = this.options;\n\t\tif (this.fileContainer == null || renderGutterUtility == null) {\n\t\t\tthis.gutterUtilityContent?.remove();\n\t\t\tthis.gutterUtilityContent = void 0;\n\t\t\treturn;\n\t\t}\n\t\tconst element = renderGutterUtility(this.interactionManager.getHoveredLine);\n\t\tif (element != null && this.gutterUtilityContent != null) return;\n\t\telse if (element == null) {\n\t\t\tthis.gutterUtilityContent?.remove();\n\t\t\tthis.gutterUtilityContent = void 0;\n\t\t\treturn;\n\t\t}\n\t\tconst gutterUtilityContent = createGutterUtilityContentNode();\n\t\tgutterUtilityContent.appendChild(element);\n\t\tthis.fileContainer.appendChild(gutterUtilityContent);\n\t\tthis.gutterUtilityContent = gutterUtilityContent;\n\t}\n\tinjectUnsafeCSS() {\n\t\tconst { unsafeCSS } = this.options;\n\t\tconst shadowRoot = this.fileContainer?.shadowRoot;\n\t\tif (shadowRoot == null) return;\n\t\tif (unsafeCSS == null || unsafeCSS === \"\") {\n\t\t\tif (this.unsafeCSSStyle != null) {\n\t\t\t\tthis.unsafeCSSStyle.remove();\n\t\t\t\tthis.unsafeCSSStyle = void 0;\n\t\t\t}\n\t\t\tthis.appliedUnsafeCSS = void 0;\n\t\t\treturn;\n\t\t}\n\t\tif (this.unsafeCSSStyle?.parentNode === shadowRoot && this.appliedUnsafeCSS === unsafeCSS) return;\n\t\tthis.unsafeCSSStyle ??= createUnsafeCSSStyleNode();\n\t\tif (this.unsafeCSSStyle.parentNode !== shadowRoot) shadowRoot.appendChild(this.unsafeCSSStyle);\n\t\tthis.unsafeCSSStyle.textContent = wrapUnsafeCSS(unsafeCSS);\n\t\tthis.appliedUnsafeCSS = unsafeCSS;\n\t}\n\tapplyThemeState(container, themeStyles, themeType, baseThemeType) {\n\t\tconst shadowRoot = container.shadowRoot ?? container.attachShadow({ mode: \"open\" });\n\t\tconst effectiveThemeType = baseThemeType ?? themeType;\n\t\tconst currentTheme = this.options.theme ?? DEFAULT_THEMES;\n\t\tconst theme = typeof currentTheme === \"string\" ? currentTheme : { ...currentTheme };\n\t\tconst scrollbarGutter = getMeasuredScrollbarGutter(shadowRoot);\n\t\tif (this.themeCSSStyle?.parentNode === shadowRoot && this.appliedThemeCSS?.themeStyles === themeStyles && this.appliedThemeCSS.themeType === effectiveThemeType && this.appliedThemeCSS.scrollbarGutter === scrollbarGutter) {\n\t\t\tthis.appliedThemeCSS.theme = theme;\n\t\t\treturn;\n\t\t}\n\t\tif (this.hasAdoptedThemeCSS && this.themeCSSStyle?.parentNode === shadowRoot) {\n\t\t\tthis.hasAdoptedThemeCSS = false;\n\t\t\tthis.appliedThemeCSS = {\n\t\t\t\ttheme,\n\t\t\t\tthemeStyles,\n\t\t\t\tthemeType: effectiveThemeType,\n\t\t\t\tbaseThemeType,\n\t\t\t\tscrollbarGutter\n\t\t\t};\n\t\t\treturn;\n\t\t}\n\t\tthis.themeCSSStyle = upsertHostThemeStyle({\n\t\t\tshadowRoot,\n\t\t\tcurrentNode: this.themeCSSStyle,\n\t\t\tthemeCSS: wrapThemeCSS(themeStyles, effectiveThemeType, scrollbarGutter)\n\t\t});\n\t\tthis.appliedThemeCSS = this.themeCSSStyle != null ? {\n\t\t\ttheme,\n\t\t\tthemeStyles,\n\t\t\tthemeType: effectiveThemeType,\n\t\t\tbaseThemeType,\n\t\t\tscrollbarGutter\n\t\t} : void 0;\n\t}\n\thydrateMeasuredScrollbar() {\n\t\tconst shadowRoot = this.fileContainer?.shadowRoot;\n\t\tif (shadowRoot == null || this.themeCSSStyle == null) return;\n\t\tthis.themeCSSStyle.textContent = patchScrollbarGutterSize(this.themeCSSStyle.textContent ?? \"\", getMeasuredScrollbarGutter(shadowRoot));\n\t}\n\tapplyFullRender(result, pre) {\n\t\tthis.cleanupErrorWrapper();\n\t\tthis.applyPreNodeAttributes(pre, result);\n\t\tthis.code = getOrCreateCodeNode({ code: this.code });\n\t\tthis.code.innerHTML = this.fileRenderer.renderPartialHTML(this.fileRenderer.renderCodeAST(result));\n\t\tpre.replaceChildren(this.code);\n\t\tthis.lastRowCount = result.rowCount;\n\t}\n\tapplyPartialRender(previousRenderRange, renderRange) {\n\t\tif (previousRenderRange == null || renderRange == null) return false;\n\t\tconst { file, code } = this;\n\t\tconst columns = code != null ? this.getColumns(code) : void 0;\n\t\tif (file == null || code == null || columns == null) return false;\n\t\tconst previousStart = previousRenderRange.startingLine;\n\t\tconst nextStart = renderRange.startingLine;\n\t\tconst previousEnd = previousRenderRange.totalLines === Infinity ? Number.POSITIVE_INFINITY : previousStart + previousRenderRange.totalLines;\n\t\tconst nextEnd = renderRange.totalLines === Infinity ? Number.POSITIVE_INFINITY : nextStart + renderRange.totalLines;\n\t\tconst overlapStart = Math.max(previousStart, nextStart);\n\t\tconst overlapEnd = Math.min(previousEnd, nextEnd);\n\t\tif (overlapEnd <= overlapStart) return false;\n\t\tif (!this.trimDOMToOverlap(columns.gutter, overlapStart, overlapEnd) || !this.trimDOMToOverlap(columns.content, overlapStart, overlapEnd)) return false;\n\t\tlet { length: rowCount } = columns.content.children;\n\t\tconst renderChunk = (startingLine, totalLines) => {\n\t\t\tif (totalLines <= 0) return;\n\t\t\treturn this.fileRenderer.renderFile(file, {\n\t\t\t\tstartingLine,\n\t\t\t\ttotalLines,\n\t\t\t\tbufferBefore: 0,\n\t\t\t\tbufferAfter: 0\n\t\t\t});\n\t\t};\n\t\tconst prependResult = nextStart < overlapStart ? renderChunk(nextStart, overlapStart - nextStart) : void 0;\n\t\tif (prependResult === void 0 && nextStart < overlapStart) return false;\n\t\tconst appendTotalLines = nextEnd === Number.POSITIVE_INFINITY ? Number.POSITIVE_INFINITY : Math.max(0, nextEnd - overlapEnd);\n\t\tconst appendResult = nextEnd > overlapEnd ? renderChunk(overlapEnd, appendTotalLines) : void 0;\n\t\tif (appendResult === void 0 && nextEnd > overlapEnd) return false;\n\t\tthis.cleanupErrorWrapper();\n\t\tif (prependResult != null) {\n\t\t\tcolumns.gutter.insertAdjacentHTML(\"afterbegin\", this.fileRenderer.renderPartialHTML(prependResult.gutterAST));\n\t\t\tcolumns.content.insertAdjacentHTML(\"afterbegin\", this.fileRenderer.renderPartialHTML(prependResult.contentAST));\n\t\t\trowCount += prependResult.rowCount;\n\t\t}\n\t\tif (appendResult != null) {\n\t\t\tcolumns.gutter.insertAdjacentHTML(\"beforeend\", this.fileRenderer.renderPartialHTML(appendResult.gutterAST));\n\t\t\tcolumns.content.insertAdjacentHTML(\"beforeend\", this.fileRenderer.renderPartialHTML(appendResult.contentAST));\n\t\t\trowCount += appendResult.rowCount;\n\t\t}\n\t\tif (this.lastRowCount !== rowCount) {\n\t\t\tcolumns.gutter.style.setProperty(\"grid-row\", `span ${rowCount}`);\n\t\t\tcolumns.content.style.setProperty(\"grid-row\", `span ${rowCount}`);\n\t\t\tthis.lastRowCount = rowCount;\n\t\t}\n\t\treturn true;\n\t}\n\tgetColumns(code) {\n\t\tconst gutter = code.children[0];\n\t\tconst content = code.children[1];\n\t\tif (!(gutter instanceof HTMLElement) || !(content instanceof HTMLElement) || gutter.dataset.gutter == null || content.dataset.content == null) return;\n\t\treturn {\n\t\t\tgutter,\n\t\t\tcontent\n\t\t};\n\t}\n\ttrimDOMToOverlap(container, overlapStart, overlapEnd) {\n\t\tconst boundaryIndices = this.getDOMBoundaryIndices(container, [overlapStart, overlapEnd]);\n\t\tconst startIndex = boundaryIndices.get(overlapStart) ?? container.children.length;\n\t\tconst endIndex = boundaryIndices.get(overlapEnd) ?? container.children.length;\n\t\tif (startIndex > endIndex) return false;\n\t\tfor (let i = container.children.length - 1; i >= endIndex; i -= 1) container.children[i]?.remove();\n\t\tfor (let i = startIndex - 1; i >= 0; i -= 1) container.children[i]?.remove();\n\t\treturn true;\n\t}\n\tgetDOMBoundaryIndices(container, boundaries) {\n\t\tconst sortedBoundaries = [...new Set(boundaries)].sort((a, b) => a - b);\n\t\tconst boundaryIndices = /* @__PURE__ */ new Map();\n\t\tif (sortedBoundaries.length === 0) return boundaryIndices;\n\t\tlet boundaryIndex = 0;\n\t\tlet nextBoundary = sortedBoundaries[boundaryIndex];\n\t\tconst { children } = container;\n\t\tif (nextBoundary === 0) {\n\t\t\tboundaryIndices.set(0, 0);\n\t\t\tboundaryIndex += 1;\n\t\t\tnextBoundary = sortedBoundaries[boundaryIndex];\n\t\t}\n\t\tfor (let i = 0; i < children.length; i += 1) {\n\t\t\tconst child = children[i];\n\t\t\tif (!(child instanceof HTMLElement)) continue;\n\t\t\tconst lineIndex = this.getLineIndexFromDOMNode(child);\n\t\t\tif (lineIndex == null) continue;\n\t\t\twhile (nextBoundary != null && lineIndex >= nextBoundary) {\n\t\t\t\tboundaryIndices.set(nextBoundary, i);\n\t\t\t\tboundaryIndex += 1;\n\t\t\t\tnextBoundary = sortedBoundaries[boundaryIndex];\n\t\t\t}\n\t\t\tif (boundaryIndex >= sortedBoundaries.length) break;\n\t\t}\n\t\tfor (const boundary of sortedBoundaries) if (!boundaryIndices.has(boundary)) boundaryIndices.set(boundary, children.length);\n\t\treturn boundaryIndices;\n\t}\n\tgetLineIndexFromDOMNode(node) {\n\t\tconst lineIndexAttr = node.dataset.lineIndex;\n\t\tif (lineIndexAttr == null) return;\n\t\tconst parsed = Number(lineIndexAttr);\n\t\treturn Number.isNaN(parsed) ? void 0 : parsed;\n\t}\n\tapplyBuffers(pre, renderRange) {\n\t\tif (renderRange == null || this.shouldDisableVirtualizationBuffers()) {\n\t\t\tif (this.bufferBefore != null) {\n\t\t\t\tthis.bufferBefore.remove();\n\t\t\t\tthis.bufferBefore = void 0;\n\t\t\t}\n\t\t\tif (this.bufferAfter != null) {\n\t\t\t\tthis.bufferAfter.remove();\n\t\t\t\tthis.bufferAfter = void 0;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (renderRange.bufferBefore > 0) {\n\t\t\tif (this.bufferBefore == null) {\n\t\t\t\tthis.bufferBefore = document.createElement(\"div\");\n\t\t\t\tthis.bufferBefore.dataset.virtualizerBuffer = \"before\";\n\t\t\t\tpre.before(this.bufferBefore);\n\t\t\t}\n\t\t\tthis.bufferBefore.style.setProperty(\"height\", `${renderRange.bufferBefore}px`);\n\t\t\tthis.bufferBefore.style.setProperty(\"contain\", \"strict\");\n\t\t} else if (this.bufferBefore != null) {\n\t\t\tthis.bufferBefore.remove();\n\t\t\tthis.bufferBefore = void 0;\n\t\t}\n\t\tif (renderRange.bufferAfter > 0) {\n\t\t\tif (this.bufferAfter == null) {\n\t\t\t\tthis.bufferAfter = document.createElement(\"div\");\n\t\t\t\tthis.bufferAfter.dataset.virtualizerBuffer = \"after\";\n\t\t\t\tpre.after(this.bufferAfter);\n\t\t\t}\n\t\t\tthis.bufferAfter.style.setProperty(\"height\", `${renderRange.bufferAfter}px`);\n\t\t\tthis.bufferAfter.style.setProperty(\"contain\", \"strict\");\n\t\t} else if (this.bufferAfter != null) {\n\t\t\tthis.bufferAfter.remove();\n\t\t\tthis.bufferAfter = void 0;\n\t\t}\n\t}\n\tshouldDisableVirtualizationBuffers() {\n\t\treturn this.options.disableVirtualizationBuffers ?? false;\n\t}\n\tapplyHeaderToDOM(headerAST, container) {\n\t\tconst { file } = this;\n\t\tif (file == null) return;\n\t\tthis.cleanupErrorWrapper();\n\t\tthis.placeHolder?.remove();\n\t\tthis.placeHolder = void 0;\n\t\tconst headerHTML = this.cachedHeaderHTML ?? toHtml(headerAST);\n\t\tthis.cachedHeaderHTML = headerHTML;\n\t\tif (headerHTML !== this.lastRenderedHeaderHTML) {\n\t\t\tconst tempDiv = document.createElement(\"div\");\n\t\t\ttempDiv.innerHTML = headerHTML;\n\t\t\tconst newHeader = tempDiv.firstElementChild;\n\t\t\tif (!(newHeader instanceof HTMLElement)) return;\n\t\t\tif (this.headerElement != null) container.shadowRoot?.replaceChild(newHeader, this.headerElement);\n\t\t\telse container.shadowRoot?.prepend(newHeader);\n\t\t\tthis.headerElement = newHeader;\n\t\t\tthis.lastRenderedHeaderHTML = headerHTML;\n\t\t}\n\t\tif (this.isContainerManaged) return;\n\t\tconst { renderHeaderPrefix, renderCustomHeader, renderHeaderMetadata } = this.options;\n\t\tif (renderCustomHeader != null) {\n\t\t\tconst content = renderCustomHeader(file) ?? void 0;\n\t\t\tthis.headerCustom = this.upsertHeaderSlotElement(container, this.headerCustom, CUSTOM_HEADER_SLOT_ID, content);\n\t\t\tthis.headerPrefix?.remove();\n\t\t\tthis.headerMetadata?.remove();\n\t\t\tthis.headerPrefix = void 0;\n\t\t\tthis.headerMetadata = void 0;\n\t\t} else {\n\t\t\tconst prefix = renderHeaderPrefix?.(file) ?? void 0;\n\t\t\tconst content = renderHeaderMetadata?.(file) ?? void 0;\n\t\t\tthis.headerPrefix = this.upsertHeaderSlotElement(container, this.headerPrefix, HEADER_PREFIX_SLOT_ID, prefix);\n\t\t\tthis.headerMetadata = this.upsertHeaderSlotElement(container, this.headerMetadata, HEADER_METADATA_SLOT_ID, content);\n\t\t\tthis.headerCustom?.remove();\n\t\t\tthis.headerCustom = void 0;\n\t\t}\n\t}\n\tclearHeaderSlots() {\n\t\tthis.headerPrefix?.remove();\n\t\tthis.headerMetadata?.remove();\n\t\tthis.headerCustom?.remove();\n\t\tthis.headerPrefix = void 0;\n\t\tthis.headerMetadata = void 0;\n\t\tthis.headerCustom = void 0;\n\t}\n\tupsertHeaderSlotElement(container, current, slot, content) {\n\t\tif (content == null) {\n\t\t\tcurrent?.remove();\n\t\t\treturn;\n\t\t}\n\t\tconst element = current ?? this.createHeaderSlotElement(slot);\n\t\tif (current == null) container.appendChild(element);\n\t\tthis.replaceHeaderSlotContent(element, content);\n\t\treturn element;\n\t}\n\treplaceHeaderSlotContent(element, content) {\n\t\telement.replaceChildren();\n\t\tif (content instanceof Element) element.appendChild(content);\n\t\telse element.innerText = `${content}`;\n\t}\n\tcreateHeaderSlotElement(slot) {\n\t\tconst element = document.createElement(\"div\");\n\t\telement.slot = slot;\n\t\treturn element;\n\t}\n\tgetOrCreateFileContainerNode(fileContainer, parentNode) {\n\t\tconst { fileContainer: previousContainer } = this;\n\t\tconst nextContainer = fileContainer ?? previousContainer ?? document.createElement(\"diffs-container\");\n\t\tconst containerChanged = previousContainer !== nextContainer;\n\t\tif (containerChanged) this.emitPostRender(true);\n\t\tthis.fileContainer = nextContainer;\n\t\tif (previousContainer != null && containerChanged) {\n\t\t\tthis.lastRenderedHeaderHTML = void 0;\n\t\t\tthis.headerElement = void 0;\n\t\t}\n\t\tif (parentNode != null && this.fileContainer.parentNode !== parentNode) parentNode.appendChild(this.fileContainer);\n\t\tif (containerChanged) this.adoptReusableShellElements(this.fileContainer);\n\t\tthis.ensureSpriteSVG(this.fileContainer);\n\t\treturn this.fileContainer;\n\t}\n\tadoptReusableShellElements(fileContainer) {\n\t\tconst { shadowRoot } = fileContainer;\n\t\tif (shadowRoot == null) return;\n\t\tfor (const element of shadowRoot.children) if (element instanceof SVGElement) this.spriteSVG ??= element;\n\t\telse if (isStyleNode(element) && element.hasAttribute(\"data-theme-css\")) {\n\t\t\tthis.themeCSSStyle ??= element;\n\t\t\tthis.hasAdoptedThemeCSS = true;\n\t\t} else if (isStyleNode(element) && element.hasAttribute(\"data-unsafe-css\")) {\n\t\t\tthis.unsafeCSSStyle ??= element;\n\t\t\tthis.appliedUnsafeCSS ??= this.options.unsafeCSS ?? void 0;\n\t\t}\n\t}\n\tensureSpriteSVG(fileContainer) {\n\t\tconst shadowRoot = fileContainer.shadowRoot ?? fileContainer.attachShadow({ mode: \"open\" });\n\t\tif (this.spriteSVG == null) {\n\t\t\tconst fragment = document.createElement(\"div\");\n\t\t\tfragment.innerHTML = SVGSpriteSheet;\n\t\t\tconst firstChild = fragment.firstChild;\n\t\t\tif (firstChild instanceof SVGElement) this.spriteSVG = firstChild;\n\t\t}\n\t\tif (this.spriteSVG != null && this.spriteSVG.parentNode !== shadowRoot) shadowRoot.appendChild(this.spriteSVG);\n\t}\n\tgetOrCreatePreNode(container) {\n\t\tconst shadowRoot = container.shadowRoot ?? container.attachShadow({ mode: \"open\" });\n\t\tif (this.pre == null) {\n\t\t\tthis.pre = document.createElement(\"pre\");\n\t\t\tthis.appliedPreAttributes = void 0;\n\t\t\tthis.code = void 0;\n\t\t\tshadowRoot.appendChild(this.pre);\n\t\t} else if (this.pre.parentNode !== shadowRoot) {\n\t\t\tcontainer.shadowRoot?.appendChild(this.pre);\n\t\t\tthis.appliedPreAttributes = void 0;\n\t\t}\n\t\tthis.placeHolder?.remove();\n\t\tthis.placeHolder = void 0;\n\t\treturn this.pre;\n\t}\n\tsyncCodeNodeFromPre(pre) {\n\t\tthis.code = void 0;\n\t\tfor (const child of Array.from(pre.children)) {\n\t\t\tif (!(child instanceof HTMLElement)) continue;\n\t\t\tif (child.hasAttribute(\"data-code\")) {\n\t\t\t\tthis.code = child;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\tapplyPreNodeAttributes(pre, { totalLines }) {\n\t\tconst { overflow = \"scroll\", disableLineNumbers = false } = this.options;\n\t\tconst preProperties = {\n\t\t\ttype: \"file\",\n\t\t\tsplit: false,\n\t\t\toverflow,\n\t\t\tdisableLineNumbers,\n\t\t\tdiffIndicators: \"none\",\n\t\t\tdisableBackground: true,\n\t\t\ttotalLines\n\t\t};\n\t\tif (arePrePropertiesEqual(preProperties, this.appliedPreAttributes)) return;\n\t\tsetPreNodeProperties(pre, preProperties);\n\t\tthis.appliedPreAttributes = preProperties;\n\t}\n\tapplyErrorToDOM(error, container) {\n\t\tthis.cleanupErrorWrapper();\n\t\tthis.pre?.remove();\n\t\tthis.pre = void 0;\n\t\tthis.appliedPreAttributes = void 0;\n\t\tconst shadowRoot = container.shadowRoot ?? container.attachShadow({ mode: \"open\" });\n\t\tthis.errorWrapper ??= document.createElement(\"div\");\n\t\tthis.errorWrapper.dataset.errorWrapper = \"\";\n\t\tthis.errorWrapper.textContent = \"\";\n\t\tshadowRoot.appendChild(this.errorWrapper);\n\t\tconst errorMessage = document.createElement(\"div\");\n\t\terrorMessage.dataset.errorMessage = \"\";\n\t\terrorMessage.innerText = error.message;\n\t\tthis.errorWrapper.appendChild(errorMessage);\n\t\tconst errorStack = document.createElement(\"pre\");\n\t\terrorStack.dataset.errorStack = \"\";\n\t\terrorStack.innerText = error.stack ?? \"No Error Stack\";\n\t\tthis.errorWrapper.appendChild(errorStack);\n\t}\n\tcleanupErrorWrapper() {\n\t\tthis.errorWrapper?.remove();\n\t\tthis.errorWrapper = void 0;\n\t}\n};\nfunction shouldRenderCode(pre, file, collapsed = false) {\n\treturn !collapsed && pre == null && file != null;\n}\nfunction shouldRenderHeader(headerElement, file, disableFileHeader = false) {\n\treturn headerElement == null && file != null && !disableFileHeader;\n}\n//#endregion\nexport { File };\n\n//# sourceMappingURL=File.js.map","import { DEFAULT_VIRTUAL_FILE_METRICS } from \"../constants.js\";\nimport { areObjectsEqual } from \"../utils/areObjectsEqual.js\";\nimport { areOptionsEqual } from \"../utils/areOptionsEqual.js\";\nimport { getVirtualFileHeaderRegion, getVirtualFilePaddingBottom } from \"../utils/computeVirtualFileMetrics.js\";\nimport { FILE_ANNOTATION_DOM_KEY, includesFileAnnotations, shouldRenderFileAnnotations } from \"../utils/includesFileAnnotations.js\";\nimport { iterateOverFile } from \"../utils/iterateOverFile.js\";\nimport { File } from \"./File.js\";\n//#region src/components/VirtualizedFile.ts\nconst LAYOUT_CHECKPOINT_INTERVAL = 5e3;\nlet instanceId = -1;\nfunction hasFileLayoutOptionChanged(previousOptions, nextOptions) {\n\treturn (previousOptions.overflow ?? \"scroll\") !== (nextOptions.overflow ?? \"scroll\") || (previousOptions.collapsed ?? false) !== (nextOptions.collapsed ?? false) || (previousOptions.disableLineNumbers ?? false) !== (nextOptions.disableLineNumbers ?? false) || (previousOptions.disableFileHeader ?? false) !== (nextOptions.disableFileHeader ?? false) || previousOptions.unsafeCSS !== nextOptions.unsafeCSS;\n}\nvar VirtualizedFile = class extends File {\n\tvirtualizer;\n\tmetrics;\n\t__id = `virtualized-file:${++instanceId}`;\n\ttop;\n\theight = 0;\n\tcache = {\n\t\theights: /* @__PURE__ */ new Map(),\n\t\tcheckpoints: [],\n\t\tfileAnnotationHeight: 0\n\t};\n\tisVisible = false;\n\tisSetup = false;\n\tlayoutDirty = true;\n\tforceRenderOverride;\n\tcurrentCollapsed;\n\tconstructor(options, virtualizer, metrics = DEFAULT_VIRTUAL_FILE_METRICS, workerManager, isContainerManaged = false) {\n\t\tsuper(options, workerManager, isContainerManaged);\n\t\tthis.virtualizer = virtualizer;\n\t\tthis.metrics = metrics;\n\t}\n\tsetMetrics(metrics, force = false) {\n\t\tif (!force && areObjectsEqual(this.metrics, metrics)) return;\n\t\tthis.metrics = metrics;\n\t\tthis.resetLayoutCache();\n\t}\n\tsetLineAnnotations(lineAnnotations) {\n\t\tif (this.syncLineAnnotations(lineAnnotations)) this.resetLayoutCache();\n\t}\n\tsyncLineAnnotations(lineAnnotations) {\n\t\tif (lineAnnotations == null || lineAnnotations === this.lineAnnotations) return false;\n\t\tif (lineAnnotations.length === 0 && this.lineAnnotations.length === 0) return false;\n\t\tsuper.setLineAnnotations(lineAnnotations);\n\t\treturn true;\n\t}\n\thasLineAnnotations() {\n\t\treturn this.lineAnnotations.some((annotation) => annotation.lineNumber > 0);\n\t}\n\tgetLineHeight(lineIndex, hasMetadataLine = false) {\n\t\tconst cached = this.cache.heights.get(lineIndex);\n\t\tif (cached != null) return cached;\n\t\tconst multiplier = hasMetadataLine ? 2 : 1;\n\t\treturn this.metrics.lineHeight * multiplier;\n\t}\n\tsetOptions(options) {\n\t\tif (this.isAdvancedMode()) throw new Error(\"VirtualizedFile.setOptions cannot be used inside CodeView. Update CodeView options instead.\");\n\t\tif (options == null) return;\n\t\tconst { options: previousOptions } = this;\n\t\tconst optionsChanged = !areOptionsEqual(previousOptions, options);\n\t\tconst layoutChanged = hasFileLayoutOptionChanged(previousOptions, options);\n\t\tsuper.setOptions(options);\n\t\tif (layoutChanged) this.resetLayoutCache(true);\n\t\tif (optionsChanged) this.forceRenderOverride = true;\n\t\tif (optionsChanged) this.virtualizer.instanceChanged(this, layoutChanged);\n\t}\n\tsetThemeType(themeType) {\n\t\tif (this.isAdvancedMode()) throw new Error(\"VirtualizedFile.setThemeType cannot be used inside CodeView. Update CodeView options instead.\");\n\t\tsuper.setThemeType(themeType);\n\t}\n\tresetLayoutCache(recompute = false) {\n\t\tthis.layoutDirty = true;\n\t\tthis.cache.fileAnnotationHeight = 0;\n\t\tif (this.cache.heights.size > 0) this.cache.heights.clear();\n\t\tif (this.cache.checkpoints.length > 0) this.cache.checkpoints.length = 0;\n\t\tif (this.renderRange != null) this.renderRange = void 0;\n\t\tif (recompute && this.isSimpleMode()) this.computeApproximateSize();\n\t}\n\treconcileHeights() {\n\t\tlet hasHeightChange = false;\n\t\tif (this.fileContainer == null || this.file == null) {\n\t\t\tif (this.height !== 0) hasHeightChange = true;\n\t\t\tthis.height = 0;\n\t\t\treturn hasHeightChange;\n\t\t}\n\t\tconst { overflow = \"scroll\" } = this.options;\n\t\tthis.top = this.getVirtualizedTop();\n\t\tif (overflow === \"scroll\" && this.lineAnnotations.length === 0 && !this.isResizeDebuggingEnabled()) return hasHeightChange;\n\t\tif (this.code == null) return hasHeightChange;\n\t\tconst content = this.code.children[1];\n\t\tif (!(content instanceof HTMLElement)) return hasHeightChange;\n\t\tconst hasFileAnnotations = includesFileAnnotations(this.lineAnnotations);\n\t\tif (this.renderRange != null && hasFileAnnotations && shouldRenderFileAnnotations(this.renderRange)) {\n\t\t\tconst nextFileAnnotationHeight = measureFileAnnotationHeight(content) ?? 0;\n\t\t\tif (nextFileAnnotationHeight !== this.cache.fileAnnotationHeight) {\n\t\t\t\tthis.cache.fileAnnotationHeight = nextFileAnnotationHeight;\n\t\t\t\thasHeightChange = true;\n\t\t\t}\n\t\t} else if (!hasFileAnnotations && this.cache.fileAnnotationHeight !== 0) {\n\t\t\tthis.cache.fileAnnotationHeight = 0;\n\t\t\thasHeightChange = true;\n\t\t}\n\t\tfor (const line of content.children) {\n\t\t\tif (!(line instanceof HTMLElement)) continue;\n\t\t\tconst lineIndexAttr = line.dataset.lineIndex;\n\t\t\tif (lineIndexAttr == null) continue;\n\t\t\tconst lineIndex = Number(lineIndexAttr);\n\t\t\tlet measuredHeight = line.getBoundingClientRect().height;\n\t\t\tlet hasMetadata = false;\n\t\t\tif (line.nextElementSibling instanceof HTMLElement && (\"lineAnnotation\" in line.nextElementSibling.dataset || \"noNewline\" in line.nextElementSibling.dataset)) {\n\t\t\t\tif (\"noNewline\" in line.nextElementSibling.dataset) hasMetadata = true;\n\t\t\t\tmeasuredHeight += line.nextElementSibling.getBoundingClientRect().height;\n\t\t\t}\n\t\t\tconst expectedHeight = this.getLineHeight(lineIndex, hasMetadata);\n\t\t\tif (measuredHeight === expectedHeight) continue;\n\t\t\thasHeightChange = true;\n\t\t\tif (measuredHeight === this.metrics.lineHeight * (hasMetadata ? 2 : 1)) this.cache.heights.delete(lineIndex);\n\t\t\telse this.cache.heights.set(lineIndex, measuredHeight);\n\t\t}\n\t\tif (hasHeightChange || this.isResizeDebuggingEnabled()) this.computeApproximateSize(true);\n\t\treturn hasHeightChange;\n\t}\n\tonRender = (dirty) => {\n\t\tif (this.fileContainer == null || this.file == null) return false;\n\t\tif (dirty) this.top = this.getVirtualizedTop();\n\t\treturn this.render({ file: this.file });\n\t};\n\tprepareCodeViewItem(file, top, reset, lineAnnotations) {\n\t\tconst annotationsChanged = this.syncLineAnnotations(lineAnnotations);\n\t\tlet shouldResetLayoutCache = reset?.resetFileLayoutCache === true || annotationsChanged;\n\t\tif (reset?.metrics != null) {\n\t\t\tthis.metrics = reset.metrics;\n\t\t\tshouldResetLayoutCache = true;\n\t\t}\n\t\tconst { collapsed = false } = this.options;\n\t\tif (this.currentCollapsed !== collapsed) {\n\t\t\tthis.currentCollapsed = collapsed;\n\t\t\tshouldResetLayoutCache = true;\n\t\t}\n\t\tif (shouldResetLayoutCache) this.resetLayoutCache();\n\t\tif (this.file !== file) this.layoutDirty = true;\n\t\tthis.file = file;\n\t\tthis.top = top;\n\t\tthis.computeApproximateSize();\n\t\treturn this.height;\n\t}\n\tgetLinePosition(lineNumber) {\n\t\tif (this.file == null || lineNumber < 1) return;\n\t\tconst { disableFileHeader = false, collapsed = false } = this.options;\n\t\tconst lastLineIndex = getLastVisibleLineIndex(this.getOrCreateLineCache(this.file));\n\t\tlet top = getVirtualFileHeaderRegion(this.metrics, disableFileHeader);\n\t\tif (collapsed || lastLineIndex < 0) return {\n\t\t\ttop,\n\t\t\theight: 0\n\t\t};\n\t\tconst clampedLineIndex = Math.min(Math.max(lineNumber - 1, 0), lastLineIndex);\n\t\tconst { overflow = \"scroll\" } = this.options;\n\t\tconst { lineHeight } = this.metrics;\n\t\ttop += this.cache.fileAnnotationHeight;\n\t\tif (overflow === \"scroll\" && !this.hasLineAnnotations()) return {\n\t\t\ttop: top + clampedLineIndex * lineHeight,\n\t\t\theight: lineHeight\n\t\t};\n\t\tconst checkpoint = this.getLayoutCheckpointBeforeLineIndex(clampedLineIndex);\n\t\ttop = checkpoint?.top ?? top;\n\t\tfor (let lineIndex = checkpoint?.lineIndex ?? 0; lineIndex < clampedLineIndex; lineIndex++) top += this.getLineHeight(lineIndex, false);\n\t\treturn {\n\t\t\ttop,\n\t\t\theight: this.getLineHeight(clampedLineIndex, false)\n\t\t};\n\t}\n\tgetNumericScrollAnchor(localViewportTop) {\n\t\tif (this.file == null || this.renderRange == null) return;\n\t\tconst { disableFileHeader = false, collapsed = false, overflow = \"scroll\" } = this.options;\n\t\tif (collapsed || this.renderRange.totalLines <= 0) return;\n\t\tconst lastLineIndex = getLastVisibleLineIndex(this.getOrCreateLineCache(this.file));\n\t\tif (lastLineIndex < 0) return;\n\t\tconst headerRegion = getVirtualFileHeaderRegion(this.metrics, disableFileHeader);\n\t\tconst firstRenderedLineIndex = Math.min(this.renderRange.startingLine, lastLineIndex);\n\t\tconst lastRenderedLineIndex = Math.min(firstRenderedLineIndex + this.renderRange.totalLines - 1, lastLineIndex);\n\t\tif (lastRenderedLineIndex < firstRenderedLineIndex) return;\n\t\tconst { fileAnnotationHeight } = this.cache;\n\t\tif (overflow === \"scroll\" && !this.hasLineAnnotations()) {\n\t\t\tconst { lineHeight } = this.metrics;\n\t\t\tconst firstRenderedLineTop = headerRegion + (firstRenderedLineIndex === 0 ? fileAnnotationHeight : this.renderRange.bufferBefore);\n\t\t\tconst lineIndex = firstRenderedLineIndex + Math.max(Math.ceil((localViewportTop - firstRenderedLineTop) / lineHeight), 0);\n\t\t\tif (lineIndex > lastRenderedLineIndex) return;\n\t\t\treturn {\n\t\t\t\tlineNumber: lineIndex + 1,\n\t\t\t\ttop: headerRegion + fileAnnotationHeight + lineIndex * lineHeight\n\t\t\t};\n\t\t}\n\t\tlet top = headerRegion + (firstRenderedLineIndex === 0 ? fileAnnotationHeight : this.renderRange.bufferBefore);\n\t\tfor (let lineIndex = firstRenderedLineIndex; lineIndex <= lastRenderedLineIndex; lineIndex++) {\n\t\t\tif (top >= localViewportTop) return {\n\t\t\t\tlineNumber: lineIndex + 1,\n\t\t\t\ttop\n\t\t\t};\n\t\t\ttop += this.getLineHeight(lineIndex);\n\t\t}\n\t}\n\tgetVirtualizedHeight() {\n\t\treturn this.height;\n\t}\n\tgetAdvancedStickySpecs(windowSpecs) {\n\t\tif (this.top == null || this.file == null) return;\n\t\tif (this.options.collapsed === true) return {\n\t\t\ttopOffset: this.top,\n\t\t\theight: this.height\n\t\t};\n\t\tconst renderRange = windowSpecs != null ? this.computeRenderRangeFromWindow(this.file, this.top, windowSpecs) : this.renderRange;\n\t\tif (renderRange == null) return;\n\t\tconst { bufferBefore, bufferAfter, totalLines } = renderRange;\n\t\tlet headerOnlyOffset = 0;\n\t\tif (totalLines === 0) {\n\t\t\tconst activeWindow = windowSpecs ?? this.virtualizer.getWindowSpecs();\n\t\t\tif (this.top < activeWindow.top) headerOnlyOffset = bufferAfter;\n\t\t}\n\t\treturn {\n\t\t\ttopOffset: this.top + bufferBefore + headerOnlyOffset,\n\t\t\theight: this.height - (bufferBefore + bufferAfter)\n\t\t};\n\t}\n\tcleanUp(recycle = false) {\n\t\tif (this.fileContainer != null && this.isSimpleMode()) this.getSimpleVirtualizer()?.disconnect(this.fileContainer);\n\t\tif (!recycle) this.resetLayoutCache();\n\t\tthis.isSetup = false;\n\t\tsuper.cleanUp(recycle);\n\t}\n\tcomputeApproximateSize(force = false) {\n\t\tconst shouldValidateSize = this.isResizeDebuggingEnabled();\n\t\tif (!force && !this.layoutDirty && !shouldValidateSize) return;\n\t\tconst isFirstCompute = this.height === 0;\n\t\tthis.height = 0;\n\t\tthis.cache.checkpoints = [];\n\t\tif (this.file == null) {\n\t\t\tthis.layoutDirty = false;\n\t\t\treturn;\n\t\t}\n\t\tconst { disableFileHeader = false, collapsed = false, overflow = \"scroll\" } = this.options;\n\t\tconst { lineHeight } = this.metrics;\n\t\tconst lines = this.getOrCreateLineCache(this.file);\n\t\tconst headerRegion = getVirtualFileHeaderRegion(this.metrics, disableFileHeader);\n\t\tconst paddingBottom = getVirtualFilePaddingBottom(this.metrics);\n\t\tthis.height += headerRegion;\n\t\tif (collapsed) {\n\t\t\tthis.layoutDirty = false;\n\t\t\treturn;\n\t\t}\n\t\tthis.height += this.cache.fileAnnotationHeight;\n\t\tif (overflow === \"scroll\" && !this.hasLineAnnotations()) this.height += this.getOrCreateLineCache(this.file).length * lineHeight;\n\t\telse iterateOverFile({\n\t\t\tlines,\n\t\t\tcallback: ({ lineIndex }) => {\n\t\t\t\tthis.addLayoutCheckpoint(lineIndex, this.height);\n\t\t\t\tthis.height += this.getLineHeight(lineIndex, false);\n\t\t\t}\n\t\t});\n\t\tif (lines.length > 0) this.height += paddingBottom;\n\t\tif (this.fileContainer != null && shouldValidateSize && !isFirstCompute) {\n\t\t\tconst rect = this.fileContainer.getBoundingClientRect();\n\t\t\tif (rect.height !== this.height) console.log(\"VirtualizedFile.computeApproximateSize: computed height doesnt match\", {\n\t\t\t\tname: this.file.name,\n\t\t\t\telementHeight: rect.height,\n\t\t\t\tcomputedHeight: this.height\n\t\t\t});\n\t\t\telse console.log(\"VirtualizedFile.computeApproximateSize: computed height IS CORRECT\");\n\t\t}\n\t\tthis.layoutDirty = false;\n\t}\n\tsetVisibility(visible) {\n\t\tif (this.isAdvancedMode() || this.fileContainer == null) return;\n\t\tif (visible && !this.isVisible) {\n\t\t\tthis.top = this.getVirtualizedTop();\n\t\t\tthis.isVisible = true;\n\t\t} else if (!visible && this.isVisible) {\n\t\t\tthis.isVisible = false;\n\t\t\tthis.rerender();\n\t\t}\n\t}\n\trerender() {\n\t\tif (!this.enabled || this.file == null) return;\n\t\tthis.forceRenderOverride = true;\n\t\tthis.virtualizer.instanceChanged(this, false);\n\t}\n\trender({ fileContainer, file, forceRender = false, lineAnnotations, ...props }) {\n\t\tconst { forceRenderOverride, isSetup } = this;\n\t\tthis.forceRenderOverride = void 0;\n\t\tconst annotationsChanged = this.syncLineAnnotations(lineAnnotations);\n\t\tif (annotationsChanged) this.resetLayoutCache();\n\t\tthis.file ??= file;\n\t\tfileContainer = this.getOrCreateFileContainerNode(fileContainer);\n\t\tif (this.file == null) {\n\t\t\tconsole.error(\"VirtualizedFile.render: attempting to virtually render when we dont have file\");\n\t\t\treturn false;\n\t\t}\n\t\tif (!isSetup) {\n\t\t\tthis.computeApproximateSize();\n\t\t\tconst virtualizer = this.getSimpleVirtualizer();\n\t\t\tthis.top ??= this.getVirtualizedTop();\n\t\t\tif (this.isAdvancedMode()) this.isVisible = true;\n\t\t\telse {\n\t\t\t\tif (virtualizer == null) throw new Error(\"VirtualizedFile.render: simple virtualizer is not available\");\n\t\t\t\tvirtualizer.connect(fileContainer, this);\n\t\t\t\tthis.isVisible = virtualizer.isInstanceVisible(this.top ?? 0, this.height);\n\t\t\t}\n\t\t\tthis.isSetup = true;\n\t\t} else this.top ??= this.getVirtualizedTop();\n\t\tif (!this.isVisible && this.isSimpleMode()) return this.renderPlaceholder(this.height);\n\t\tconst windowSpecs = this.virtualizer.getWindowSpecs();\n\t\tconst fileTop = this.top ?? 0;\n\t\tconst renderRange = this.computeRenderRangeFromWindow(this.file, fileTop, windowSpecs);\n\t\treturn super.render({\n\t\t\tfile: this.file,\n\t\t\tfileContainer,\n\t\t\trenderRange,\n\t\t\tlineAnnotations,\n\t\t\tforceRender: (forceRenderOverride ?? forceRender) || annotationsChanged,\n\t\t\t...props\n\t\t});\n\t}\n\tsyncVirtualizedTop() {\n\t\tthis.top = this.getVirtualizedTop();\n\t}\n\tshouldDisableVirtualizationBuffers() {\n\t\treturn this.isAdvancedMode() || super.shouldDisableVirtualizationBuffers();\n\t}\n\tisSimpleMode() {\n\t\treturn this.virtualizer.type === \"simple\";\n\t}\n\tisAdvancedMode() {\n\t\treturn this.virtualizer.type === \"advanced\";\n\t}\n\taddLayoutCheckpoint(lineIndex, top) {\n\t\tif (lineIndex % LAYOUT_CHECKPOINT_INTERVAL !== 0) return;\n\t\tthis.cache.checkpoints.push({\n\t\t\tlineIndex,\n\t\t\ttop\n\t\t});\n\t}\n\tgetLayoutCheckpointBeforeLineIndex(lineIndex) {\n\t\tif (lineIndex <= 0 || this.cache.checkpoints.length === 0) return;\n\t\tlet low = 0;\n\t\tlet high = this.cache.checkpoints.length - 1;\n\t\tlet result;\n\t\twhile (low <= high) {\n\t\t\tconst mid = low + high >> 1;\n\t\t\tconst checkpoint = this.cache.checkpoints[mid];\n\t\t\tif (checkpoint == null) throw new Error(\"VirtualizedFile: invalid checkpoint index\");\n\t\t\tif (checkpoint.lineIndex <= lineIndex) {\n\t\t\t\tresult = checkpoint;\n\t\t\t\tlow = mid + 1;\n\t\t\t} else high = mid - 1;\n\t\t}\n\t\treturn result;\n\t}\n\tgetLayoutCheckpointBeforeTop(top, hunkLineCount) {\n\t\tlet low = 0;\n\t\tlet high = this.cache.checkpoints.length - 1;\n\t\tlet resultIndex = -1;\n\t\twhile (low <= high) {\n\t\t\tconst mid = low + high >> 1;\n\t\t\tconst checkpoint = this.cache.checkpoints[mid];\n\t\t\tif (checkpoint == null) throw new Error(\"VirtualizedFile: invalid checkpoint index\");\n\t\t\tif (checkpoint.top <= top) {\n\t\t\t\tresultIndex = mid;\n\t\t\t\tlow = mid + 1;\n\t\t\t} else high = mid - 1;\n\t\t}\n\t\tif (hunkLineCount == null) return resultIndex >= 0 ? this.cache.checkpoints[resultIndex] : void 0;\n\t\tfor (let index = resultIndex; index >= 0; index--) {\n\t\t\tconst checkpoint = this.cache.checkpoints[index];\n\t\t\tif (checkpoint == null) throw new Error(\"VirtualizedFile: invalid checkpoint index\");\n\t\t\tif (checkpoint.lineIndex % hunkLineCount === 0) return checkpoint;\n\t\t}\n\t}\n\tgetVirtualizedTop() {\n\t\tif (this.virtualizer.type === \"advanced\") return this.virtualizer.getLocalTopForInstance(this);\n\t\treturn this.fileContainer != null ? this.virtualizer.getOffsetInScrollContainer(this.fileContainer) : 0;\n\t}\n\tgetSimpleVirtualizer() {\n\t\treturn this.virtualizer.type === \"simple\" ? this.virtualizer : void 0;\n\t}\n\tisResizeDebuggingEnabled() {\n\t\treturn this.getSimpleVirtualizer()?.config.resizeDebugging ?? false;\n\t}\n\tcomputeRenderRangeFromWindow(file, fileTop, { top, bottom }) {\n\t\tconst { disableFileHeader = false, overflow = \"scroll\" } = this.options;\n\t\tconst { hunkLineCount, lineHeight } = this.metrics;\n\t\tconst lines = this.getOrCreateLineCache(file);\n\t\tconst lineCount = lines.length;\n\t\tconst fileHeight = this.height;\n\t\tconst headerRegion = getVirtualFileHeaderRegion(this.metrics, disableFileHeader);\n\t\tconst paddingBottom = lineCount > 0 ? getVirtualFilePaddingBottom(this.metrics) : 0;\n\t\tconst { fileAnnotationHeight } = this.cache;\n\t\tconst codeRegionTop = headerRegion + fileAnnotationHeight;\n\t\tconst codeRowsHeight = Math.max(0, fileHeight - headerRegion - fileAnnotationHeight - paddingBottom);\n\t\tconst hasFileAnnotations = includesFileAnnotations(this.lineAnnotations);\n\t\tconst fileAnnotationTop = fileTop + headerRegion;\n\t\tconst measuredFileAnnotationVisible = fileAnnotationHeight > 0 && hasFileAnnotations && fileAnnotationTop < bottom && fileAnnotationTop + fileAnnotationHeight > top;\n\t\tif (fileTop < top - fileHeight || fileTop > bottom) return {\n\t\t\tstartingLine: 0,\n\t\t\ttotalLines: 0,\n\t\t\tbufferBefore: 0,\n\t\t\tbufferAfter: fileHeight - headerRegion - paddingBottom\n\t\t};\n\t\tif (lineCount <= hunkLineCount) return {\n\t\t\tstartingLine: 0,\n\t\t\ttotalLines: hunkLineCount,\n\t\t\tbufferBefore: 0,\n\t\t\tbufferAfter: 0\n\t\t};\n\t\tconst estimatedTargetLines = Math.ceil(Math.max(bottom - top, 0) / lineHeight);\n\t\tconst totalLines = Math.ceil(estimatedTargetLines / hunkLineCount) * hunkLineCount + hunkLineCount * 2;\n\t\tconst totalHunks = totalLines / hunkLineCount;\n\t\tconst viewportCenter = (top + bottom) / 2;\n\t\tif (overflow === \"scroll\" && !this.hasLineAnnotations()) {\n\t\t\tconst sourceRowsTop = fileTop + codeRegionTop;\n\t\t\tconst sourceRowsBottom = sourceRowsTop + codeRowsHeight;\n\t\t\tif (!measuredFileAnnotationVisible && !(sourceRowsTop < bottom && sourceRowsBottom > top)) return {\n\t\t\t\tstartingLine: 0,\n\t\t\t\ttotalLines: 0,\n\t\t\t\tbufferBefore: 0,\n\t\t\t\tbufferAfter: fileHeight - headerRegion - paddingBottom\n\t\t\t};\n\t\t\tconst centerLine = Math.floor(measuredFileAnnotationVisible && viewportCenter < fileTop + codeRegionTop ? 0 : (viewportCenter - (fileTop + codeRegionTop)) / lineHeight);\n\t\t\tconst idealStartHunk = Math.floor(centerLine / hunkLineCount) - Math.floor(totalHunks / 2);\n\t\t\tconst totalHunksInFile = Math.ceil(lineCount / hunkLineCount);\n\t\t\tconst startingLine = Math.max(0, Math.min(idealStartHunk, totalHunksInFile)) * hunkLineCount;\n\t\t\tconst clampedTotalLines = idealStartHunk < 0 ? totalLines + idealStartHunk * hunkLineCount : totalLines;\n\t\t\tconst bufferBefore = startingLine === 0 ? 0 : fileAnnotationHeight + startingLine * lineHeight;\n\t\t\tconst renderedLines = Math.min(clampedTotalLines, lineCount - startingLine);\n\t\t\treturn {\n\t\t\t\tstartingLine,\n\t\t\t\ttotalLines: clampedTotalLines,\n\t\t\t\tbufferBefore,\n\t\t\t\tbufferAfter: Math.max(0, (lineCount - startingLine - renderedLines) * lineHeight)\n\t\t\t};\n\t\t}\n\t\tconst overflowHunks = totalHunks;\n\t\tconst hunkOffsets = [];\n\t\tconst checkpoint = this.getLayoutCheckpointBeforeTop(Math.max(0, top - fileTop - totalLines * lineHeight * 2), hunkLineCount);\n\t\tlet absoluteLineTop = fileTop + (checkpoint?.top ?? codeRegionTop);\n\t\tlet currentLine = checkpoint?.lineIndex ?? 0;\n\t\tlet firstVisibleHunk;\n\t\tlet centerHunk;\n\t\tlet overflowCounter;\n\t\titerateOverFile({\n\t\t\tlines,\n\t\t\tstartingLine: checkpoint?.lineIndex ?? 0,\n\t\t\tcallback: ({ lineIndex }) => {\n\t\t\t\tconst isAtHunkBoundary = currentLine % hunkLineCount === 0;\n\t\t\t\tconst currentHunk = Math.floor(currentLine / hunkLineCount);\n\t\t\t\tif (isAtHunkBoundary) {\n\t\t\t\t\thunkOffsets[currentHunk] = absoluteLineTop - (fileTop + codeRegionTop);\n\t\t\t\t\tif (overflowCounter != null) {\n\t\t\t\t\t\tif (overflowCounter <= 0) return true;\n\t\t\t\t\t\toverflowCounter--;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst lineHeight = this.getLineHeight(lineIndex, false);\n\t\t\t\tif (absoluteLineTop > top - lineHeight && absoluteLineTop < bottom) firstVisibleHunk ??= currentHunk;\n\t\t\t\tif (absoluteLineTop + lineHeight > viewportCenter) centerHunk ??= currentHunk;\n\t\t\t\tif (overflowCounter == null && absoluteLineTop >= bottom && isAtHunkBoundary) overflowCounter = overflowHunks;\n\t\t\t\tcurrentLine++;\n\t\t\t\tabsoluteLineTop += lineHeight;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif (firstVisibleHunk == null) if (measuredFileAnnotationVisible) {\n\t\t\tfirstVisibleHunk = 0;\n\t\t\tcenterHunk = 0;\n\t\t} else return {\n\t\t\tstartingLine: 0,\n\t\t\ttotalLines: 0,\n\t\t\tbufferBefore: 0,\n\t\t\tbufferAfter: fileHeight - headerRegion - paddingBottom\n\t\t};\n\t\tcenterHunk ??= firstVisibleHunk;\n\t\tconst idealStartHunk = Math.round(centerHunk - totalHunks / 2);\n\t\tconst maxStartHunk = Math.max(0, Math.ceil(lineCount / hunkLineCount) - totalHunks);\n\t\tconst startHunk = Math.max(0, Math.min(idealStartHunk, maxStartHunk));\n\t\tconst startingLine = startHunk * hunkLineCount;\n\t\tconst clampedTotalLines = idealStartHunk < 0 ? totalLines + idealStartHunk * hunkLineCount : totalLines;\n\t\tconst codeBufferBefore = hunkOffsets[startHunk] ?? 0;\n\t\tconst bufferBefore = startingLine === 0 ? 0 : fileAnnotationHeight + codeBufferBefore;\n\t\tconst finalHunkIndex = startHunk + clampedTotalLines / hunkLineCount;\n\t\tconst bufferAfter = finalHunkIndex < hunkOffsets.length ? codeRowsHeight - hunkOffsets[finalHunkIndex] : codeRowsHeight - (absoluteLineTop - fileTop - codeRegionTop);\n\t\treturn {\n\t\t\tstartingLine,\n\t\t\ttotalLines: clampedTotalLines,\n\t\t\tbufferBefore,\n\t\t\tbufferAfter: Math.max(0, bufferAfter)\n\t\t};\n\t}\n};\nfunction measureFileAnnotationHeight(content) {\n\tlet height;\n\tfor (const child of content.children) {\n\t\tif (!(child instanceof HTMLElement)) continue;\n\t\tif (child.dataset.lineAnnotation !== FILE_ANNOTATION_DOM_KEY) continue;\n\t\theight = Math.max(height ?? 0, child.getBoundingClientRect().height);\n\t}\n\treturn height;\n}\nfunction getLastVisibleLineIndex(lines) {\n\tconst lastLine = lines.at(-1);\n\tif (lastLine == null || lastLine === \"\" || lastLine === \"\\n\" || lastLine === \"\\r\\n\" || lastLine === \"\\r\") return lines.length - 2;\n\treturn lines.length - 1;\n}\n//#endregion\nexport { VirtualizedFile };\n\n//# sourceMappingURL=VirtualizedFile.js.map","import { getVirtualFileHeaderRegion, getVirtualFilePaddingBottom } from \"./computeVirtualFileMetrics.js\";\nimport { getExpandedRegion, getLeadingHunkSeparatorLayout, getTrailingExpandedRegion, getTrailingHunkSeparatorLayout } from \"./virtualDiffLayout.js\";\n//#region src/utils/computeEstimatedDiffHeights.ts\nfunction computeEstimatedDiffHeights({ fileDiff, metrics, disableFileHeader, hunkSeparators, expandUnchanged, expandedHunks: configuredExpandedHunks, collapsedContextThreshold }) {\n\tlet splitHeight = getVirtualFileHeaderRegion(metrics, disableFileHeader);\n\tlet unifiedHeight = splitHeight;\n\tconst expandedHunks = expandUnchanged ? true : configuredExpandedHunks;\n\tconst finalHunkIndex = fileDiff.hunks.length - 1;\n\tfor (let hunkIndex = 0; hunkIndex < fileDiff.hunks.length; hunkIndex++) {\n\t\tconst hunk = fileDiff.hunks[hunkIndex];\n\t\tif (hunk == null) throw new Error(\"computeEstimatedDiffHeights: invalid hunk index\");\n\t\tconst leadingRegion = getExpandedRegion({\n\t\t\tisPartial: fileDiff.isPartial,\n\t\t\trangeSize: hunk.collapsedBefore,\n\t\t\texpandedHunks,\n\t\t\thunkIndex,\n\t\t\tcollapsedContextThreshold\n\t\t});\n\t\tconst leadingExpandedHeight = (leadingRegion.fromStart + leadingRegion.fromEnd) * metrics.lineHeight;\n\t\tsplitHeight += leadingExpandedHeight;\n\t\tunifiedHeight += leadingExpandedHeight;\n\t\tif (leadingRegion.collapsedLines > 0) {\n\t\t\tconst separatorHeight = getLeadingHunkSeparatorLayout({\n\t\t\t\ttype: hunkSeparators,\n\t\t\t\tmetrics,\n\t\t\t\thunkIndex,\n\t\t\t\thunkSpecs: hunk.hunkSpecs\n\t\t\t})?.totalHeight ?? 0;\n\t\t\tsplitHeight += separatorHeight;\n\t\t\tunifiedHeight += separatorHeight;\n\t\t}\n\t\tsplitHeight += hunk.splitLineCount * metrics.lineHeight;\n\t\tunifiedHeight += hunk.unifiedLineCount * metrics.lineHeight;\n\t\tconst metadataLineCounts = getNoNewlineMetadataLineCounts(hunk);\n\t\tsplitHeight += metadataLineCounts.split * metrics.lineHeight;\n\t\tunifiedHeight += metadataLineCounts.unified * metrics.lineHeight;\n\t\tconst trailingRegion = hunkIndex === finalHunkIndex ? getTrailingExpandedRegion({\n\t\t\tfileDiff,\n\t\t\thunkIndex,\n\t\t\texpandedHunks,\n\t\t\tcollapsedContextThreshold,\n\t\t\terrorPrefix: \"computeEstimatedDiffHeights\"\n\t\t}) : void 0;\n\t\tif (trailingRegion != null) {\n\t\t\tconst trailingExpandedHeight = (trailingRegion.fromStart + trailingRegion.fromEnd) * metrics.lineHeight;\n\t\t\tsplitHeight += trailingExpandedHeight;\n\t\t\tunifiedHeight += trailingExpandedHeight;\n\t\t\tif (trailingRegion.collapsedLines > 0) {\n\t\t\t\tconst separatorHeight = getTrailingHunkSeparatorLayout({\n\t\t\t\t\ttype: hunkSeparators,\n\t\t\t\t\tmetrics\n\t\t\t\t})?.totalHeight ?? 0;\n\t\t\t\tsplitHeight += separatorHeight;\n\t\t\t\tunifiedHeight += separatorHeight;\n\t\t\t}\n\t\t}\n\t}\n\tif (fileDiff.hunks.length > 0) {\n\t\tconst paddingBottom = getVirtualFilePaddingBottom(metrics);\n\t\tsplitHeight += paddingBottom;\n\t\tunifiedHeight += paddingBottom;\n\t}\n\treturn {\n\t\tsplitHeight,\n\t\tunifiedHeight\n\t};\n}\nfunction getNoNewlineMetadataLineCounts(hunk) {\n\tif (!hunk.noEOFCRAdditions && !hunk.noEOFCRDeletions) return {\n\t\tsplit: 0,\n\t\tunified: 0\n\t};\n\tconst lastContent = hunk.hunkContent.at(-1);\n\tif (lastContent == null) return {\n\t\tsplit: 0,\n\t\tunified: 0\n\t};\n\tif (lastContent.type === \"context\") {\n\t\tconst metadataRows = lastContent.lines > 0 ? 1 : 0;\n\t\treturn {\n\t\t\tsplit: metadataRows,\n\t\t\tunified: metadataRows\n\t\t};\n\t}\n\treturn getChangeNoNewlineMetadataLineCounts(hunk, lastContent);\n}\nfunction getChangeNoNewlineMetadataLineCounts(hunk, content) {\n\tconst unified = (content.deletions > 0 && hunk.noEOFCRDeletions ? 1 : 0) + (content.additions > 0 && hunk.noEOFCRAdditions ? 1 : 0);\n\tconst splitDeletionHasMetadata = content.deletions > 0 && hunk.noEOFCRDeletions;\n\tconst splitAdditionHasMetadata = content.additions > 0 && hunk.noEOFCRAdditions;\n\treturn {\n\t\tsplit: splitDeletionHasMetadata || splitAdditionHasMetadata ? 1 : 0,\n\t\tunified\n\t};\n}\n//#endregion\nexport { computeEstimatedDiffHeights };\n\n//# sourceMappingURL=computeEstimatedDiffHeights.js.map","//#region src/utils/detachString.ts\nconst stringDetachEncoder = new TextEncoder();\nconst stringDetachDecoder = new TextDecoder(\"utf-8\", { ignoreBOM: true });\nconst SURROGATE_CODE_UNIT_PATTERN = /[\\uD800-\\uDFFF]/;\nconst STRING_DETACH_INITIAL_BUFFER_SIZE = 1024;\nlet stringDetachBuffer = new Uint8Array(STRING_DETACH_INITIAL_BUFFER_SIZE);\nfunction releaseStringDetachBuffer() {\n\tif (stringDetachBuffer.length !== STRING_DETACH_INITIAL_BUFFER_SIZE) stringDetachBuffer = new Uint8Array(STRING_DETACH_INITIAL_BUFFER_SIZE);\n}\nfunction detachString(value) {\n\tif (value.length === 0) return value;\n\tif (SURROGATE_CODE_UNIT_PATTERN.test(value)) return JSON.parse(JSON.stringify(value));\n\tconst requiredByteLength = value.length * 3;\n\tif (stringDetachBuffer.length < requiredByteLength) stringDetachBuffer = new Uint8Array(requiredByteLength);\n\tconst { written } = stringDetachEncoder.encodeInto(value, stringDetachBuffer);\n\treturn stringDetachDecoder.decode(stringDetachBuffer.subarray(0, written));\n}\n//#endregion\nexport { detachString, releaseStringDetachBuffer };\n\n//# sourceMappingURL=detachString.js.map","import { ALTERNATE_FILE_NAMES_GIT, COMMIT_METADATA_SPLIT, FILENAME_HEADER_REGEX, FILENAME_HEADER_REGEX_GIT, GIT_DIFF_FILE_BREAK_REGEX, INDEX_LINE_METADATA } from \"../constants.js\";\nimport { cleanLastNewline } from \"./cleanLastNewline.js\";\nimport { detachString, releaseStringDetachBuffer } from \"./detachString.js\";\n//#region src/utils/parsePatchFiles.ts\nfunction processPatch(data, cacheKeyPrefix, throwOnError) {\n\ttry {\n\t\treturn _processPatch(data, cacheKeyPrefix, throwOnError);\n\t} finally {\n\t\treleaseStringDetachBuffer();\n\t}\n}\nfunction _processPatch(data, cacheKeyPrefix, throwOnError = false) {\n\tconst isGitDiff = isGitDiffPatch(data);\n\tconst rawFiles = isGitDiff ? splitGitDiffFiles(data) : splitUnifiedDiffFiles(data);\n\tlet patchMetadata;\n\tconst files = [];\n\tfor (const fileOrPatchMetadata of rawFiles) {\n\t\tif (isGitDiff && !GIT_DIFF_FILE_BREAK_REGEX.test(fileOrPatchMetadata)) {\n\t\t\tif (patchMetadata == null) patchMetadata = detachString(fileOrPatchMetadata);\n\t\t\telse if (throwOnError) throw Error(\"parsePatchContent: unknown file blob\");\n\t\t\telse console.error(\"parsePatchContent: unknown file blob:\", fileOrPatchMetadata);\n\t\t\tcontinue;\n\t\t} else if (!isGitDiff && !startsWithUnifiedDiffFileHeader(fileOrPatchMetadata)) {\n\t\t\tif (patchMetadata == null) patchMetadata = detachString(fileOrPatchMetadata);\n\t\t\telse if (throwOnError) throw Error(\"parsePatchContent: unknown file blob\");\n\t\t\telse console.error(\"parsePatchContent: unknown file blob:\", fileOrPatchMetadata);\n\t\t\tcontinue;\n\t\t}\n\t\tconst currentFile = _processFile(fileOrPatchMetadata, {\n\t\t\tcacheKey: cacheKeyPrefix != null ? `${cacheKeyPrefix}-${files.length}` : void 0,\n\t\t\tisGitDiff,\n\t\t\tthrowOnError\n\t\t});\n\t\tif (currentFile != null) files.push(currentFile);\n\t}\n\treturn {\n\t\tpatchMetadata,\n\t\tfiles\n\t};\n}\nfunction processFile(fileDiffString, options) {\n\ttry {\n\t\treturn _processFile(fileDiffString, options);\n\t} finally {\n\t\treleaseStringDetachBuffer();\n\t}\n}\nfunction _processFile(fileDiffString, { cacheKey, isGitDiff = GIT_DIFF_FILE_BREAK_REGEX.test(fileDiffString), oldFile, newFile, throwOnError = false } = {}) {\n\tlet lastHunkEnd = 0;\n\tconst hunks = splitAtLinePrefix(fileDiffString, \"@@ \");\n\tlet currentFile;\n\tconst isPartial = oldFile == null || newFile == null;\n\tlet deletionLineIndex = 0;\n\tlet additionLineIndex = 0;\n\tfor (const hunk of hunks) {\n\t\tconst lines = splitWithNewlines(hunk);\n\t\tconst firstLine = lines[0];\n\t\tif (firstLine == null) {\n\t\t\tif (throwOnError) throw Error(\"parsePatchContent: invalid hunk\");\n\t\t\telse console.error(\"parsePatchContent: invalid hunk\", hunk);\n\t\t\tcontinue;\n\t\t}\n\t\tconst fileHeader = parseHunkHeader(firstLine);\n\t\tlet additionLines = 0;\n\t\tlet deletionLines = 0;\n\t\tif (fileHeader == null || currentFile == null) {\n\t\t\tif (currentFile != null) {\n\t\t\t\tif (throwOnError) throw Error(\"parsePatchContent: Invalid hunk\");\n\t\t\t\telse console.error(\"parsePatchContent: Invalid hunk\", hunk);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tcurrentFile = {\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"change\",\n\t\t\t\thunks: [],\n\t\t\t\tsplitLineCount: 0,\n\t\t\t\tunifiedLineCount: 0,\n\t\t\t\tisPartial,\n\t\t\t\tadditionLines: !isPartial && oldFile != null && newFile != null ? splitFileContents(newFile.contents) : [],\n\t\t\t\tdeletionLines: !isPartial && oldFile != null && newFile != null ? splitFileContents(oldFile.contents) : [],\n\t\t\t\tcacheKey: maybeDetachOptionalString(cacheKey)\n\t\t\t};\n\t\t\tif (currentFile.additionLines.length === 1 && newFile?.contents === \"\") currentFile.additionLines.length = 0;\n\t\t\tif (currentFile.deletionLines.length === 1 && oldFile?.contents === \"\") currentFile.deletionLines.length = 0;\n\t\t\tfor (const line of lines) {\n\t\t\t\tif (line.startsWith(\"diff --git\")) {\n\t\t\t\t\tconst filenameMatch = line.trim().match(ALTERNATE_FILE_NAMES_GIT);\n\t\t\t\t\tconst prevName = filenameMatch?.[1] ?? filenameMatch?.[2];\n\t\t\t\t\tconst name = filenameMatch?.[3] ?? filenameMatch?.[4];\n\t\t\t\t\tif (prevName == null || name == null) {\n\t\t\t\t\t\tif (throwOnError) throw Error(\"parsePatchContent: invalid git diff header\");\n\t\t\t\t\t\telse console.error(\"parsePatchContent: invalid git diff header\", line);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tcurrentFile.name = detachString(name.trim());\n\t\t\t\t\tif (prevName !== name) currentFile.prevName = detachString(prevName.trim());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst filenameMatch = line.startsWith(\"---\") || line.startsWith(\"+++\") ? line.match(isGitDiff ? FILENAME_HEADER_REGEX_GIT : FILENAME_HEADER_REGEX) : null;\n\t\t\t\tif (filenameMatch != null) {\n\t\t\t\t\tconst [, type, fileName] = filenameMatch;\n\t\t\t\t\tif (type === \"---\" && fileName !== \"/dev/null\") {\n\t\t\t\t\t\tconst detachedFileName = detachString(fileName.trim());\n\t\t\t\t\t\tcurrentFile.prevName = detachedFileName;\n\t\t\t\t\t\tcurrentFile.name = detachedFileName;\n\t\t\t\t\t} else if (type === \"+++\" && fileName !== \"/dev/null\") currentFile.name = detachString(fileName.trim());\n\t\t\t\t} else if (isGitDiff) {\n\t\t\t\t\tif (line.startsWith(\"new mode \")) currentFile.mode = detachString(line.slice(8).trim());\n\t\t\t\t\tif (line.startsWith(\"old mode \")) currentFile.prevMode = detachString(line.slice(8).trim());\n\t\t\t\t\tif (line.startsWith(\"new file mode\")) {\n\t\t\t\t\t\tcurrentFile.type = \"new\";\n\t\t\t\t\t\tcurrentFile.mode = detachString(line.slice(13).trim());\n\t\t\t\t\t}\n\t\t\t\t\tif (line.startsWith(\"deleted file mode\")) {\n\t\t\t\t\t\tcurrentFile.type = \"deleted\";\n\t\t\t\t\t\tcurrentFile.mode = detachString(line.slice(17).trim());\n\t\t\t\t\t}\n\t\t\t\t\tif (line.startsWith(\"similarity index\")) if (line.startsWith(\"similarity index 100%\")) currentFile.type = \"rename-pure\";\n\t\t\t\t\telse currentFile.type = \"rename-changed\";\n\t\t\t\t\tif (line.startsWith(\"index \")) {\n\t\t\t\t\t\tconst [, prevObjectId, newObjectId, mode] = line.trim().match(INDEX_LINE_METADATA) ?? [];\n\t\t\t\t\t\tif (prevObjectId != null) currentFile.prevObjectId = detachString(prevObjectId);\n\t\t\t\t\t\tif (newObjectId != null) currentFile.newObjectId = detachString(newObjectId);\n\t\t\t\t\t\tif (mode != null) currentFile.mode = detachString(mode);\n\t\t\t\t\t}\n\t\t\t\t\tif (line.startsWith(\"rename from \")) currentFile.prevName = detachString(line.slice(12).trim());\n\t\t\t\t\tif (line.startsWith(\"rename to \")) currentFile.name = detachString(line.slice(10).trim());\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tlet currentContent;\n\t\tlet lastLineType;\n\t\twhile (lines.length > 0 && (lines[lines.length - 1] === \"\\n\" || lines[lines.length - 1] === \"\\r\" || lines[lines.length - 1] === \"\\r\\n\" || lines[lines.length - 1] === \"\")) lines.pop();\n\t\tconst { additionStart, deletionStart } = fileHeader;\n\t\tdeletionLineIndex = isPartial ? deletionLineIndex : deletionStart - 1;\n\t\tadditionLineIndex = isPartial ? additionLineIndex : additionStart - 1;\n\t\tconst hunkData = {\n\t\t\tcollapsedBefore: 0,\n\t\t\tsplitLineCount: 0,\n\t\t\tsplitLineStart: 0,\n\t\t\tunifiedLineCount: 0,\n\t\t\tunifiedLineStart: 0,\n\t\t\tadditionCount: fileHeader.additionCount,\n\t\t\tadditionStart,\n\t\t\tadditionLines,\n\t\t\tdeletionCount: fileHeader.deletionCount,\n\t\t\tdeletionStart,\n\t\t\tdeletionLines,\n\t\t\tdeletionLineIndex,\n\t\t\tadditionLineIndex,\n\t\t\thunkContent: [],\n\t\t\thunkContext: maybeDetachOptionalString(fileHeader.hunkContext),\n\t\t\thunkSpecs: detachString(firstLine),\n\t\t\tnoEOFCRAdditions: false,\n\t\t\tnoEOFCRDeletions: false\n\t\t};\n\t\tlet parsedAdditionLines = 0;\n\t\tlet parsedDeletionLines = 0;\n\t\tfor (let lineIndex = 1; lineIndex < lines.length; lineIndex++) {\n\t\t\tconst rawLine = lines[lineIndex];\n\t\t\tif (parsedAdditionLines >= hunkData.additionCount && parsedDeletionLines >= hunkData.deletionCount && !rawLine.startsWith(\"\\\\\")) {\n\t\t\t\tif (throwOnError && isHunkBodyLine(rawLine) && !isFormatPatchVersionSeparator(rawLine)) throw Error(\"parsePatchContent: hunk has more lines than expected\");\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst firstChar = rawLine[0];\n\t\t\tif (firstChar !== \"+\" && firstChar !== \"-\" && firstChar !== \" \" && firstChar !== \"\\\\\") {\n\t\t\t\tif (throwOnError) throw Error(\"parsePatchContent: invalid hunk line\");\n\t\t\t\tconsole.error(`parseLineType: Invalid firstChar: \"${firstChar}\", full line: \"${rawLine}\"`);\n\t\t\t\tconsole.error(\"processFile: invalid rawLine:\", rawLine);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst type = parseRawLineType(firstChar);\n\t\t\tif (type === \"addition\") {\n\t\t\t\tif (throwOnError && parsedAdditionLines >= hunkData.additionCount) throw Error(\"parsePatchContent: hunk has too many addition lines\");\n\t\t\t\tconst line = getParsedLineContent(rawLine);\n\t\t\t\tif (currentContent == null || currentContent.type !== \"change\") {\n\t\t\t\t\tcurrentContent = createContentGroup(\"change\", deletionLineIndex, additionLineIndex);\n\t\t\t\t\thunkData.hunkContent.push(currentContent);\n\t\t\t\t}\n\t\t\t\tadditionLineIndex++;\n\t\t\t\tparsedAdditionLines++;\n\t\t\t\tif (isPartial) currentFile.additionLines.push(line);\n\t\t\t\tcurrentContent.additions++;\n\t\t\t\tadditionLines++;\n\t\t\t\tlastLineType = \"addition\";\n\t\t\t} else if (type === \"deletion\") {\n\t\t\t\tif (throwOnError && parsedDeletionLines >= hunkData.deletionCount) throw Error(\"parsePatchContent: hunk has too many deletion lines\");\n\t\t\t\tconst line = getParsedLineContent(rawLine);\n\t\t\t\tif (currentContent == null || currentContent.type !== \"change\") {\n\t\t\t\t\tcurrentContent = createContentGroup(\"change\", deletionLineIndex, additionLineIndex);\n\t\t\t\t\thunkData.hunkContent.push(currentContent);\n\t\t\t\t}\n\t\t\t\tdeletionLineIndex++;\n\t\t\t\tparsedDeletionLines++;\n\t\t\t\tif (isPartial) currentFile.deletionLines.push(line);\n\t\t\t\tcurrentContent.deletions++;\n\t\t\t\tdeletionLines++;\n\t\t\t\tlastLineType = \"deletion\";\n\t\t\t} else if (type === \"context\") {\n\t\t\t\tif (throwOnError && (parsedDeletionLines >= hunkData.deletionCount || parsedAdditionLines >= hunkData.additionCount)) throw Error(\"parsePatchContent: hunk has too many context lines\");\n\t\t\t\tconst line = getParsedLineContent(rawLine);\n\t\t\t\tif (currentContent == null || currentContent.type !== \"context\") {\n\t\t\t\t\tcurrentContent = createContentGroup(\"context\", deletionLineIndex, additionLineIndex);\n\t\t\t\t\thunkData.hunkContent.push(currentContent);\n\t\t\t\t}\n\t\t\t\tadditionLineIndex++;\n\t\t\t\tdeletionLineIndex++;\n\t\t\t\tparsedAdditionLines++;\n\t\t\t\tparsedDeletionLines++;\n\t\t\t\tif (isPartial) {\n\t\t\t\t\tcurrentFile.deletionLines.push(line);\n\t\t\t\t\tcurrentFile.additionLines.push(line);\n\t\t\t\t}\n\t\t\t\tcurrentContent.lines++;\n\t\t\t\tlastLineType = \"context\";\n\t\t\t} else if (type === \"metadata\" && currentContent != null) {\n\t\t\t\tif (currentContent.type === \"context\") {\n\t\t\t\t\thunkData.noEOFCRAdditions = true;\n\t\t\t\t\thunkData.noEOFCRDeletions = true;\n\t\t\t\t} else if (lastLineType === \"deletion\") hunkData.noEOFCRDeletions = true;\n\t\t\t\telse if (lastLineType === \"addition\") hunkData.noEOFCRAdditions = true;\n\t\t\t\tif (isPartial && (lastLineType === \"addition\" || lastLineType === \"context\")) {\n\t\t\t\t\tconst lastIndex = currentFile.additionLines.length - 1;\n\t\t\t\t\tif (lastIndex >= 0) currentFile.additionLines[lastIndex] = cleanLastNewline(currentFile.additionLines[lastIndex]);\n\t\t\t\t}\n\t\t\t\tif (isPartial && (lastLineType === \"deletion\" || lastLineType === \"context\")) {\n\t\t\t\t\tconst lastIndex = currentFile.deletionLines.length - 1;\n\t\t\t\t\tif (lastIndex >= 0) currentFile.deletionLines[lastIndex] = cleanLastNewline(currentFile.deletionLines[lastIndex]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (throwOnError && (parsedAdditionLines !== hunkData.additionCount || parsedDeletionLines !== hunkData.deletionCount)) throw Error(\"parsePatchContent: hunk line count mismatch\");\n\t\thunkData.additionLines = additionLines;\n\t\thunkData.deletionLines = deletionLines;\n\t\thunkData.collapsedBefore = Math.max(hunkData.additionStart - 1 - lastHunkEnd, 0);\n\t\tcurrentFile.hunks.push(hunkData);\n\t\tlastHunkEnd = hunkData.additionStart + hunkData.additionCount - 1;\n\t\tfor (const content of hunkData.hunkContent) if (content.type === \"context\") {\n\t\t\thunkData.splitLineCount += content.lines;\n\t\t\thunkData.unifiedLineCount += content.lines;\n\t\t} else {\n\t\t\thunkData.splitLineCount += Math.max(content.additions, content.deletions);\n\t\t\thunkData.unifiedLineCount += content.deletions + content.additions;\n\t\t}\n\t\thunkData.splitLineStart = currentFile.splitLineCount + hunkData.collapsedBefore;\n\t\thunkData.unifiedLineStart = currentFile.unifiedLineCount + hunkData.collapsedBefore;\n\t\tcurrentFile.splitLineCount += hunkData.collapsedBefore + hunkData.splitLineCount;\n\t\tcurrentFile.unifiedLineCount += hunkData.collapsedBefore + hunkData.unifiedLineCount;\n\t}\n\tif (currentFile == null) return;\n\tif (throwOnError && isPartial && !isGitDiff && currentFile.hunks.length === 0) throw Error(\"parsePatchContent: unified file has no hunks\");\n\tif (currentFile.hunks.length > 0 && !isPartial && currentFile.additionLines.length > 0 && currentFile.deletionLines.length > 0) {\n\t\tconst lastHunk = currentFile.hunks[currentFile.hunks.length - 1];\n\t\tconst lastHunkEnd = lastHunk.additionStart + lastHunk.additionCount - 1;\n\t\tconst totalFileLines = currentFile.additionLines.length;\n\t\tconst collapsedAfter = Math.max(totalFileLines - lastHunkEnd, 0);\n\t\tcurrentFile.splitLineCount += collapsedAfter;\n\t\tcurrentFile.unifiedLineCount += collapsedAfter;\n\t}\n\tif (!isGitDiff) {\n\t\tif (currentFile.prevName != null && currentFile.name !== currentFile.prevName) if (currentFile.hunks.length > 0) currentFile.type = \"rename-changed\";\n\t\telse currentFile.type = \"rename-pure\";\n\t\telse if ((oldFile == null || oldFile.contents === \"\") && newFile != null && newFile.contents !== \"\") currentFile.type = \"new\";\n\t\telse if (oldFile != null && oldFile.contents !== \"\" && (newFile == null || newFile.contents === \"\")) currentFile.type = \"deleted\";\n\t}\n\tif (currentFile.type !== \"rename-pure\" && currentFile.type !== \"rename-changed\") currentFile.prevName = void 0;\n\treturn currentFile;\n}\n/**\n* Parses a patch file string into an array of parsed patches.\n*\n* @param data - The raw patch file content (supports multi-commit patches)\n* @param cacheKeyPrefix - Optional prefix for generating cache keys. When provided,\n* each file in the patch will get a cache key in the format `prefix-patchIndex-fileIndex`.\n* This enables caching of rendered diff results in the worker pool.\n*/\nfunction parsePatchFiles(data, cacheKeyPrefix, throwOnError = false) {\n\tconst patches = [];\n\tconst rawPatches = hasCommitMetadataBoundary(data) ? data.split(COMMIT_METADATA_SPLIT) : [data];\n\tfor (const patch of rawPatches) try {\n\t\tpatches.push(processPatch(patch, cacheKeyPrefix != null ? `${cacheKeyPrefix}-${patches.length}` : void 0, throwOnError));\n\t} catch (error) {\n\t\tif (throwOnError) throw error;\n\t\telse console.error(error);\n\t}\n\treturn patches;\n}\nfunction hasCommitMetadataBoundary(data) {\n\treturn data.startsWith(\"From \") || data.includes(\"\\nFrom \");\n}\nfunction splitFileContents(contents) {\n\tconst lines = splitWithNewlines(contents);\n\tfor (let index = 0; index < lines.length; index++) lines[index] = detachString(lines[index]);\n\treturn lines;\n}\nfunction splitWithNewlines(contents) {\n\tif (contents.length === 0) return [\"\"];\n\tconst lines = [];\n\tlet startIndex = 0;\n\tfor (;;) {\n\t\tconst newlineIndex = contents.indexOf(\"\\n\", startIndex);\n\t\tif (newlineIndex === -1) break;\n\t\tlines.push(contents.slice(startIndex, newlineIndex + 1));\n\t\tstartIndex = newlineIndex + 1;\n\t}\n\tif (startIndex < contents.length) lines.push(contents.slice(startIndex));\n\treturn lines;\n}\nfunction splitGitDiffFiles(contents) {\n\treturn splitAtLinePrefix(contents, \"diff --git\");\n}\nfunction splitUnifiedDiffFiles(contents) {\n\tif (contents.length === 0) return [\"\"];\n\tconst parts = [];\n\tlet partStartIndex = 0;\n\tlet lineStartIndex = 0;\n\tlet remainingDeletionLines = 0;\n\tlet remainingAdditionLines = 0;\n\tlet hasOpenedUnifiedFile = false;\n\twhile (lineStartIndex < contents.length) {\n\t\tconst nextLineStartIndex = getNextLineStartIndex(contents, lineStartIndex);\n\t\tif (remainingDeletionLines <= 0 && remainingAdditionLines <= 0) {\n\t\t\tif (isUnifiedDiffFileHeaderAt(contents, lineStartIndex)) {\n\t\t\t\tif (lineStartIndex > partStartIndex) parts.push(contents.slice(partStartIndex, lineStartIndex));\n\t\t\t\tpartStartIndex = lineStartIndex;\n\t\t\t\thasOpenedUnifiedFile = true;\n\t\t\t\tlineStartIndex = getNextLineStartIndex(contents, nextLineStartIndex);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (hasOpenedUnifiedFile && contents.startsWith(\"@@ -\", lineStartIndex)) {\n\t\t\t\tconst fileHeader = parseHunkHeader(contents.slice(lineStartIndex, nextLineStartIndex));\n\t\t\t\tif (fileHeader != null) {\n\t\t\t\t\tremainingDeletionLines = fileHeader.deletionCount;\n\t\t\t\t\tremainingAdditionLines = fileHeader.additionCount;\n\t\t\t\t}\n\t\t\t}\n\t\t\tlineStartIndex = nextLineStartIndex;\n\t\t\tcontinue;\n\t\t}\n\t\tconst firstChar = contents[lineStartIndex];\n\t\tif (firstChar === \"\\\\\") {\n\t\t\tlineStartIndex = nextLineStartIndex;\n\t\t\tcontinue;\n\t\t}\n\t\tif (firstChar === \" \") {\n\t\t\tremainingDeletionLines = Math.max(remainingDeletionLines - 1, 0);\n\t\t\tremainingAdditionLines = Math.max(remainingAdditionLines - 1, 0);\n\t\t} else if (firstChar === \"-\") remainingDeletionLines = Math.max(remainingDeletionLines - 1, 0);\n\t\telse if (firstChar === \"+\") remainingAdditionLines = Math.max(remainingAdditionLines - 1, 0);\n\t\tlineStartIndex = nextLineStartIndex;\n\t}\n\tparts.push(contents.slice(partStartIndex));\n\treturn parts;\n}\nfunction startsWithUnifiedDiffFileHeader(contents) {\n\treturn isUnifiedDiffFileHeaderAt(contents, 0);\n}\nfunction isUnifiedDiffFileHeaderAt(contents, lineStartIndex) {\n\tconst nextLineStartIndex = getNextLineStartIndex(contents, lineStartIndex);\n\treturn isUnifiedDiffHeaderLineAt(contents, lineStartIndex, \"---\") && isUnifiedDiffHeaderLineAt(contents, nextLineStartIndex, \"+++\");\n}\nfunction isUnifiedDiffHeaderLineAt(contents, lineStartIndex, prefix) {\n\tif (!contents.startsWith(prefix, lineStartIndex)) return false;\n\tconst separator = contents[lineStartIndex + prefix.length];\n\tif (separator !== \" \" && separator !== \"\t\") return false;\n\tfor (let index = lineStartIndex + prefix.length + 1; index < contents.length; index++) {\n\t\tconst char = contents[index];\n\t\tif (char === \"\\n\" || char === \"\\r\") break;\n\t\tif (char !== \" \" && char !== \"\t\") return true;\n\t}\n\treturn false;\n}\nfunction getNextLineStartIndex(contents, lineStartIndex) {\n\tconst newlineIndex = contents.indexOf(\"\\n\", lineStartIndex);\n\treturn newlineIndex === -1 ? contents.length : newlineIndex + 1;\n}\nfunction isHunkBodyLine(line) {\n\tconst firstChar = line[0];\n\treturn firstChar === \"+\" || firstChar === \"-\" || firstChar === \" \";\n}\nfunction isFormatPatchVersionSeparator(line) {\n\tif (!line.startsWith(\"--\")) return false;\n\tfor (let index = 2; index < line.length; index++) {\n\t\tconst char = line[index];\n\t\tif (char !== \" \" && char !== \"\t\" && char !== \"\\n\" && char !== \"\\r\") return false;\n\t}\n\treturn true;\n}\nfunction parseHunkHeader(line) {\n\tif (!line.startsWith(\"@@ -\")) return;\n\tlet index = 4;\n\tconst deletionStartResult = readPositiveInteger(line, index);\n\tif (deletionStartResult == null) return;\n\tconst deletionStart = deletionStartResult.value;\n\tindex = deletionStartResult.endIndex;\n\tlet deletionCount = 1;\n\tif (line[index] === \",\") {\n\t\tconst deletionCountResult = readPositiveInteger(line, index + 1);\n\t\tif (deletionCountResult == null) return;\n\t\tdeletionCount = deletionCountResult.value;\n\t\tindex = deletionCountResult.endIndex;\n\t}\n\tif (line[index] !== \" \" || line[index + 1] !== \"+\") return;\n\tindex += 2;\n\tconst additionStartResult = readPositiveInteger(line, index);\n\tif (additionStartResult == null) return;\n\tconst additionStart = additionStartResult.value;\n\tindex = additionStartResult.endIndex;\n\tlet additionCount = 1;\n\tif (line[index] === \",\") {\n\t\tconst additionCountResult = readPositiveInteger(line, index + 1);\n\t\tif (additionCountResult == null) return;\n\t\tadditionCount = additionCountResult.value;\n\t\tindex = additionCountResult.endIndex;\n\t}\n\tif (line[index] !== \" \" || line[index + 1] !== \"@\" || line[index + 2] !== \"@\") return;\n\tlet hunkContext;\n\tconst contextStartIndex = index + 3;\n\tif (line[contextStartIndex] === \" \") hunkContext = trimLineEnd(line.slice(contextStartIndex + 1));\n\treturn {\n\t\tadditionCount,\n\t\tadditionStart,\n\t\tdeletionCount,\n\t\tdeletionStart,\n\t\thunkContext\n\t};\n}\nfunction readPositiveInteger(value, startIndex) {\n\tlet index = startIndex;\n\tlet parsedValue = 0;\n\tfor (; index < value.length; index++) {\n\t\tconst digit = value.charCodeAt(index) - 48;\n\t\tif (digit < 0 || digit > 9) break;\n\t\tparsedValue = parsedValue * 10 + digit;\n\t}\n\tif (index === startIndex) return;\n\treturn {\n\t\tvalue: parsedValue,\n\t\tendIndex: index\n\t};\n}\nfunction trimLineEnd(value) {\n\tif (value.endsWith(\"\\r\\n\")) return value.slice(0, -2);\n\tif (value.endsWith(\"\\n\")) return value.slice(0, -1);\n\treturn value;\n}\nfunction isGitDiffPatch(data) {\n\treturn data.startsWith(\"diff --git\") || data.includes(\"\\ndiff --git\");\n}\nfunction splitAtLinePrefix(contents, prefix) {\n\tif (contents.length === 0) return [\"\"];\n\tconst newlinePrefix = `\\n${prefix}`;\n\tconst firstBoundaryIndex = contents.startsWith(prefix) ? 0 : findLinePrefixIndex(contents, newlinePrefix, 0);\n\tif (firstBoundaryIndex === -1) return [contents];\n\tconst parts = [];\n\tif (firstBoundaryIndex > 0) parts.push(contents.slice(0, firstBoundaryIndex));\n\tlet startIndex = firstBoundaryIndex;\n\tfor (;;) {\n\t\tconst nextBoundaryIndex = findLinePrefixIndex(contents, newlinePrefix, startIndex + 1);\n\t\tif (nextBoundaryIndex === -1) break;\n\t\tparts.push(contents.slice(startIndex, nextBoundaryIndex));\n\t\tstartIndex = nextBoundaryIndex;\n\t}\n\tparts.push(contents.slice(startIndex));\n\treturn parts;\n}\nfunction findLinePrefixIndex(contents, newlinePrefix, fromIndex) {\n\tconst index = contents.indexOf(newlinePrefix, fromIndex);\n\treturn index === -1 ? -1 : index + 1;\n}\nfunction maybeDetachOptionalString(value) {\n\treturn value == null ? value : detachString(value);\n}\nfunction parseRawLineType(firstChar) {\n\treturn firstChar === \" \" ? \"context\" : firstChar === \"\\\\\" ? \"metadata\" : firstChar === \"+\" ? \"addition\" : \"deletion\";\n}\nfunction getParsedLineContent(rawLine) {\n\tconst processedLine = rawLine.slice(1);\n\treturn detachString(processedLine === \"\" ? \"\\n\" : processedLine);\n}\nfunction createContentGroup(type, deletionLineIndex, additionLineIndex) {\n\tif (type === \"change\") return {\n\t\ttype: \"change\",\n\t\tadditions: 0,\n\t\tdeletions: 0,\n\t\tadditionLineIndex,\n\t\tdeletionLineIndex\n\t};\n\treturn {\n\t\ttype: \"context\",\n\t\tlines: 0,\n\t\tadditionLineIndex,\n\t\tdeletionLineIndex\n\t};\n}\n//#endregion\nexport { parsePatchFiles, processFile, processPatch };\n\n//# sourceMappingURL=parsePatchFiles.js.map","import { processFile } from \"./parsePatchFiles.js\";\nimport { createTwoFilesPatch } from \"diff\";\n//#region src/utils/parseDiffFromFile.ts\n/**\n* Parses a diff from two file contents objects.\n*\n* If both `oldFile` and `newFile` have a `cacheKey`, the resulting diff will\n* automatically get a combined cache key in the format `oldKey:newKey`.\n*/\nfunction parseDiffFromFile(oldFile, newFile, options, throwOnError = false) {\n\tconst fileData = processFile(createTwoFilesPatch(oldFile.name, newFile.name, oldFile.contents, newFile.contents, oldFile.header, newFile.header, options), {\n\t\tcacheKey: (() => {\n\t\t\tif (oldFile.cacheKey != null && newFile.cacheKey != null) return `${oldFile.cacheKey}:${newFile.cacheKey}`;\n\t\t})(),\n\t\toldFile,\n\t\tnewFile,\n\t\tthrowOnError\n\t});\n\tif (fileData == null) throw new Error(\"parseDiffFrom: FileInvalid diff -- probably need to fix something -- if the files are the same maybe?\");\n\tif (newFile.lang != null) fileData.lang = newFile.lang;\n\treturn fileData;\n}\n//#endregion\nexport { parseDiffFromFile };\n\n//# sourceMappingURL=parseDiffFromFile.js.map","//#region src/managers/ScrollSyncManager.ts\nvar ScrollSyncManager = class {\n\tisDeletionsScrolling = false;\n\tisAdditionsScrolling = false;\n\ttimeoutId = -1;\n\tcodeDeletions;\n\tcodeAdditions;\n\tenabled = false;\n\tcleanUp() {\n\t\tif (!this.enabled) return;\n\t\tthis.codeDeletions?.removeEventListener(\"scroll\", this.handleDeletionsScroll);\n\t\tthis.codeAdditions?.removeEventListener(\"scroll\", this.handleAdditionsScroll);\n\t\tclearTimeout(this.timeoutId);\n\t\tthis.codeDeletions = void 0;\n\t\tthis.codeAdditions = void 0;\n\t\tthis.enabled = false;\n\t}\n\tsetup(pre, codeDeletions, codeAdditions) {\n\t\tif (codeDeletions == null || codeAdditions == null) for (const element of pre.children ?? []) {\n\t\t\tif (!(element instanceof HTMLElement)) continue;\n\t\t\tif (\"deletions\" in element.dataset) codeDeletions = element;\n\t\t\telse if (\"additions\" in element.dataset) codeAdditions = element;\n\t\t}\n\t\tif (codeAdditions == null || codeDeletions == null) {\n\t\t\tthis.cleanUp();\n\t\t\treturn;\n\t\t}\n\t\tif (this.codeDeletions !== codeDeletions) {\n\t\t\tthis.codeDeletions?.removeEventListener(\"scroll\", this.handleDeletionsScroll);\n\t\t\tthis.codeDeletions = codeDeletions;\n\t\t\tcodeDeletions.addEventListener(\"scroll\", this.handleDeletionsScroll, { passive: true });\n\t\t}\n\t\tif (this.codeAdditions !== codeAdditions) {\n\t\t\tthis.codeAdditions?.removeEventListener(\"scroll\", this.handleAdditionsScroll);\n\t\t\tthis.codeAdditions = codeAdditions;\n\t\t\tcodeAdditions.addEventListener(\"scroll\", this.handleAdditionsScroll, { passive: true });\n\t\t}\n\t\tthis.enabled = true;\n\t}\n\thandleDeletionsScroll = () => {\n\t\tif (this.isAdditionsScrolling) return;\n\t\tthis.isDeletionsScrolling = true;\n\t\tclearTimeout(this.timeoutId);\n\t\tthis.timeoutId = setTimeout(() => {\n\t\t\tthis.isDeletionsScrolling = false;\n\t\t}, 300);\n\t\tthis.codeAdditions?.scrollTo({ left: this.codeDeletions?.scrollLeft });\n\t};\n\thandleAdditionsScroll = () => {\n\t\tif (this.isDeletionsScrolling) return;\n\t\tthis.isAdditionsScrolling = true;\n\t\tclearTimeout(this.timeoutId);\n\t\tthis.timeoutId = setTimeout(() => {\n\t\t\tthis.isAdditionsScrolling = false;\n\t\t}, 300);\n\t\tthis.codeDeletions?.scrollTo({ left: this.codeAdditions?.scrollLeft });\n\t};\n};\n//#endregion\nexport { ScrollSyncManager };\n\n//# sourceMappingURL=ScrollSyncManager.js.map","import { createHastElement } from \"./hast_utils.js\";\n//#region src/utils/createEmptyRowBuffer.ts\nfunction createEmptyRowBuffer(size) {\n\treturn createHastElement({\n\t\ttagName: \"div\",\n\t\tproperties: {\n\t\t\t\"data-content-buffer\": \"\",\n\t\t\t\"data-buffer-size\": size,\n\t\t\tstyle: `grid-row: span ${size};min-height:calc(${size} * 1lh)`\n\t\t}\n\t});\n}\n//#endregion\nexport { createEmptyRowBuffer };\n\n//# sourceMappingURL=createEmptyRowBuffer.js.map","import { createHastElement, createTextNodeElement } from \"./hast_utils.js\";\n//#region src/utils/createNoNewlineElement.ts\nfunction createNoNewlineElement(type) {\n\treturn createHastElement({\n\t\ttagName: \"div\",\n\t\tchildren: [createHastElement({\n\t\t\ttagName: \"span\",\n\t\t\tchildren: [createTextNodeElement(\"No newline at end of file\")]\n\t\t})],\n\t\tproperties: {\n\t\t\t\"data-no-newline\": \"\",\n\t\t\t\"data-line-type\": type,\n\t\t\t\"data-column-content\": \"\"\n\t\t}\n\t});\n}\n//#endregion\nexport { createNoNewlineElement };\n\n//# sourceMappingURL=createNoNewlineElement.js.map","import { createHastElement, createIconElement, createTextNodeElement } from \"./hast_utils.js\";\n//#region src/utils/createSeparator.ts\nfunction createExpandButton(type) {\n\treturn createHastElement({\n\t\ttagName: \"div\",\n\t\tchildren: [createIconElement({\n\t\t\tname: type === \"both\" ? \"diffs-icon-expand-all\" : \"diffs-icon-expand\",\n\t\t\tproperties: { \"data-icon\": \"\" }\n\t\t})],\n\t\tproperties: {\n\t\t\trole: \"button\",\n\t\t\t\"data-expand-button\": \"\",\n\t\t\t\"data-expand-both\": type === \"both\" ? \"\" : void 0,\n\t\t\t\"data-expand-up\": type === \"up\" ? \"\" : void 0,\n\t\t\t\"data-expand-down\": type === \"down\" ? \"\" : void 0\n\t\t}\n\t});\n}\nfunction createSeparator({ type, content, expandIndex, chunked = false, slotName, isFirstHunk, isLastHunk }) {\n\tlet buttonCount = 0;\n\tconst children = [];\n\tif (type === \"metadata\" && content != null) children.push(createHastElement({\n\t\ttagName: \"div\",\n\t\tchildren: [createTextNodeElement(content)],\n\t\tproperties: { \"data-separator-wrapper\": \"\" }\n\t}));\n\tif ((type === \"line-info\" || type === \"line-info-basic\") && content != null) {\n\t\tconst contentChildren = [];\n\t\tif (expandIndex != null) if (!chunked) {\n\t\t\tcontentChildren.push(createExpandButton(!isFirstHunk && !isLastHunk ? \"both\" : isFirstHunk ? \"down\" : \"up\"));\n\t\t\tbuttonCount++;\n\t\t} else {\n\t\t\tif (!isFirstHunk) {\n\t\t\t\tcontentChildren.push(createExpandButton(\"up\"));\n\t\t\t\tbuttonCount++;\n\t\t\t}\n\t\t\tif (!isLastHunk) {\n\t\t\t\tcontentChildren.push(createExpandButton(\"down\"));\n\t\t\t\tbuttonCount++;\n\t\t\t}\n\t\t}\n\t\tcontentChildren.push(createHastElement({\n\t\t\ttagName: \"div\",\n\t\t\tchildren: [createHastElement({\n\t\t\t\ttagName: \"span\",\n\t\t\t\tchildren: [createTextNodeElement(content)],\n\t\t\t\tproperties: { \"data-unmodified-lines\": \"\" }\n\t\t\t})],\n\t\t\tproperties: { \"data-separator-content\": \"\" }\n\t\t}));\n\t\tif (chunked && expandIndex != null) contentChildren.push(createHastElement({\n\t\t\ttagName: \"div\",\n\t\t\tchildren: [createTextNodeElement(\"Expand all\")],\n\t\t\tproperties: {\n\t\t\t\trole: \"button\",\n\t\t\t\t\"data-expand-button\": \"\",\n\t\t\t\t\"data-expand-all-button\": \"\"\n\t\t\t}\n\t\t}));\n\t\tchildren.push(createHastElement({\n\t\t\ttagName: \"div\",\n\t\t\tchildren: contentChildren,\n\t\t\tproperties: {\n\t\t\t\t\"data-separator-wrapper\": \"\",\n\t\t\t\t\"data-separator-multi-button\": buttonCount > 1 ? \"\" : void 0\n\t\t\t}\n\t\t}));\n\t}\n\tif (type === \"custom\" && slotName != null) children.push(createHastElement({\n\t\ttagName: \"slot\",\n\t\tproperties: { name: slotName }\n\t}));\n\treturn createHastElement({\n\t\ttagName: \"div\",\n\t\tchildren,\n\t\tproperties: {\n\t\t\t\"data-separator\": children.length === 0 ? \"simple\" : type,\n\t\t\t\"data-expand-index\": expandIndex,\n\t\t\t\"data-separator-first\": isFirstHunk ? \"\" : void 0,\n\t\t\t\"data-separator-last\": isLastHunk ? \"\" : void 0\n\t\t}\n\t});\n}\n//#endregion\nexport { createSeparator };\n\n//# sourceMappingURL=createSeparator.js.map","//#region src/utils/getHunkSeparatorSlotName.ts\nfunction getHunkSeparatorSlotName(type, hunkIndex) {\n\treturn `hunk-separator-${type}-${hunkIndex}`;\n}\n//#endregion\nexport { getHunkSeparatorSlotName };\n\n//# sourceMappingURL=getHunkSeparatorSlotName.js.map","//#region src/utils/getTotalLineCountFromHunks.ts\nfunction getTotalLineCountFromHunks(hunks) {\n\tconst lastHunk = hunks.at(-1);\n\tif (lastHunk == null) return 0;\n\treturn Math.max(lastHunk.additionStart + lastHunk.additionCount, lastHunk.deletionStart + lastHunk.deletionCount);\n}\n//#endregion\nexport { getTotalLineCountFromHunks };\n\n//# sourceMappingURL=getTotalLineCountFromHunks.js.map","//#region src/utils/isDefaultRenderRange.ts\nfunction isDefaultRenderRange(renderRange) {\n\treturn renderRange.startingLine === 0 && renderRange.totalLines === Infinity && renderRange.bufferBefore === 0 && renderRange.bufferAfter === 0;\n}\n//#endregion\nexport { isDefaultRenderRange };\n\n//# sourceMappingURL=isDefaultRenderRange.js.map","import { DEFAULT_EXPANDED_REGION, DEFAULT_RENDER_RANGE, DEFAULT_THEMES, DEFAULT_TOKENIZE_MAX_LENGTH } from \"../constants.js\";\nimport { getFileAnnotations, shouldRenderFileAnnotations } from \"../utils/includesFileAnnotations.js\";\nimport { createGutterGap, createGutterItem, createGutterWrapper, createHastElement } from \"../utils/hast_utils.js\";\nimport { areLanguagesAttached } from \"../highlighter/languages/areLanguagesAttached.js\";\nimport { getHighlighterIfLoaded, getSharedHighlighter } from \"../highlighter/shared_highlighter.js\";\nimport { areThemesAttached } from \"../highlighter/themes/areThemesAttached.js\";\nimport { areRenderRangesEqual } from \"../utils/areRenderRangesEqual.js\";\nimport { createAnnotationElement } from \"../utils/createAnnotationElement.js\";\nimport { createContentColumn } from \"../utils/createContentColumn.js\";\nimport { createFileHeaderElement } from \"../utils/createFileHeaderElement.js\";\nimport { createPreElement } from \"../utils/createPreElement.js\";\nimport { getFiletypeFromFileName } from \"../utils/getFiletypeFromFileName.js\";\nimport { getHighlighterOptions } from \"../utils/getHighlighterOptions.js\";\nimport { getLineAnnotationName } from \"../utils/getLineAnnotationName.js\";\nimport { shouldUseTokenTransformer } from \"../utils/shouldUseTokenTransformer.js\";\nimport { areDiffTargetsEqual } from \"../utils/areDiffTargetsEqual.js\";\nimport { getTrailingContextRangeSize } from \"../utils/virtualDiffLayout.js\";\nimport { iterateOverDiff } from \"../utils/iterateOverDiff.js\";\nimport { areDiffRenderOptionsEqual } from \"../utils/areDiffRenderOptionsEqual.js\";\nimport { createEmptyRowBuffer } from \"../utils/createEmptyRowBuffer.js\";\nimport { createNoNewlineElement } from \"../utils/createNoNewlineElement.js\";\nimport { createSeparator } from \"../utils/createSeparator.js\";\nimport { getHunkSeparatorSlotName } from \"../utils/getHunkSeparatorSlotName.js\";\nimport { getTotalLineCountFromHunks } from \"../utils/getTotalLineCountFromHunks.js\";\nimport { isDefaultRenderRange } from \"../utils/isDefaultRenderRange.js\";\nimport { isDiffPlainText } from \"../utils/isDiffPlainText.js\";\nimport { renderDiffWithHighlighter } from \"../utils/renderDiffWithHighlighter.js\";\nimport { toHtml } from \"hast-util-to-html\";\n//#region src/renderers/DiffHunksRenderer.ts\nlet instanceId = -1;\nvar DiffHunksRenderer = class {\n\toptions;\n\tonRenderUpdate;\n\tworkerManager;\n\t__id = `diff-hunks-renderer:${++instanceId}`;\n\thighlighter;\n\tdiff;\n\texpandedHunks = /* @__PURE__ */ new Map();\n\tdeletionAnnotations = {};\n\tadditionAnnotations = {};\n\tcomputedLang = \"text\";\n\trenderCache;\n\tconstructor(options = { theme: DEFAULT_THEMES }, onRenderUpdate, workerManager) {\n\t\tthis.options = options;\n\t\tthis.onRenderUpdate = onRenderUpdate;\n\t\tthis.workerManager = workerManager;\n\t\tif (workerManager?.isWorkingPool() !== true) this.highlighter = areThemesAttached(options.theme ?? DEFAULT_THEMES) ? getHighlighterIfLoaded() : void 0;\n\t}\n\tcleanUp() {\n\t\tthis.recycle();\n\t\tthis.expandedHunks.clear();\n\t\tthis.workerManager = void 0;\n\t\tthis.onRenderUpdate = void 0;\n\t}\n\trecycle() {\n\t\tthis.highlighter = void 0;\n\t\tthis.diff = void 0;\n\t\tthis.clearRenderCache();\n\t\tthis.additionAnnotations = {};\n\t\tthis.deletionAnnotations = {};\n\t\tthis.workerManager?.cleanUpTasks(this);\n\t}\n\tclearRenderCache() {\n\t\tthis.renderCache = void 0;\n\t}\n\tsetOptions(options) {\n\t\tthis.options = options;\n\t}\n\tmergeOptions(options) {\n\t\tthis.options = {\n\t\t\t...this.options,\n\t\t\t...options\n\t\t};\n\t}\n\texpandHunk(index, direction, expansionLineCount = this.getOptionsWithDefaults().expansionLineCount) {\n\t\tconst region = { ...this.expandedHunks.get(index) ?? {\n\t\t\tfromStart: 0,\n\t\t\tfromEnd: 0\n\t\t} };\n\t\tif (direction === \"up\" || direction === \"both\") region.fromStart += expansionLineCount;\n\t\tif (direction === \"down\" || direction === \"both\") region.fromEnd += expansionLineCount;\n\t\tif (this.renderCache?.highlighted !== true) this.clearRenderCache();\n\t\tthis.expandedHunks.set(index, region);\n\t}\n\tgetExpandedHunk(hunkIndex) {\n\t\treturn this.expandedHunks.get(hunkIndex) ?? DEFAULT_EXPANDED_REGION;\n\t}\n\tgetExpandedHunksMap() {\n\t\treturn this.expandedHunks;\n\t}\n\tsetLineAnnotations(lineAnnotations) {\n\t\tthis.additionAnnotations = {};\n\t\tthis.deletionAnnotations = {};\n\t\tfor (const annotation of lineAnnotations) {\n\t\t\tconst map = (() => {\n\t\t\t\tswitch (annotation.side) {\n\t\t\t\t\tcase \"deletions\": return this.deletionAnnotations;\n\t\t\t\t\tcase \"additions\": return this.additionAnnotations;\n\t\t\t\t}\n\t\t\t})();\n\t\t\tconst arr = map[annotation.lineNumber] ?? [];\n\t\t\tmap[annotation.lineNumber] = arr;\n\t\t\tarr.push(annotation);\n\t\t}\n\t}\n\tgetUnifiedLineDecoration({ lineType }) {\n\t\treturn { gutterLineType: lineType };\n\t}\n\tgetSplitLineDecoration({ side, type }) {\n\t\tif (type !== \"change\") return { gutterLineType: type };\n\t\treturn { gutterLineType: side === \"deletions\" ? \"change-deletion\" : \"change-addition\" };\n\t}\n\tcreateAnnotationElement = (span) => {\n\t\treturn createAnnotationElement(span);\n\t};\n\tgetOptionsWithDefaults() {\n\t\tconst { diffIndicators = \"bars\", diffStyle = \"split\", disableBackground = false, disableFileHeader = false, disableLineNumbers = false, disableVirtualizationBuffers = false, collapsed = false, expandUnchanged = false, collapsedContextThreshold = 1, expansionLineCount = 100, hunkSeparators = \"line-info\", lineDiffType = \"word-alt\", maxLineDiffLength = 1e3, overflow = \"scroll\", stickyHeader = false, theme = DEFAULT_THEMES, headerRenderMode = \"default\", tokenizeMaxLineLength = 1e3, tokenizeMaxLength = DEFAULT_TOKENIZE_MAX_LENGTH, useTokenTransformer = false, useCSSClasses = false } = this.options;\n\t\treturn {\n\t\t\tdiffIndicators,\n\t\t\tdiffStyle,\n\t\t\tdisableBackground,\n\t\t\tdisableFileHeader,\n\t\t\tdisableLineNumbers,\n\t\t\tdisableVirtualizationBuffers,\n\t\t\tcollapsed,\n\t\t\texpandUnchanged,\n\t\t\tcollapsedContextThreshold,\n\t\t\texpansionLineCount,\n\t\t\thunkSeparators,\n\t\t\tlineDiffType,\n\t\t\tmaxLineDiffLength,\n\t\t\toverflow,\n\t\t\tstickyHeader,\n\t\t\ttheme: this.workerManager?.getDiffRenderOptions().theme ?? theme,\n\t\t\theaderRenderMode,\n\t\t\ttokenizeMaxLineLength,\n\t\t\ttokenizeMaxLength,\n\t\t\tuseTokenTransformer,\n\t\t\tuseCSSClasses\n\t\t};\n\t}\n\tasync initializeHighlighter() {\n\t\tthis.highlighter = await getSharedHighlighter(getHighlighterOptions(this.computedLang, this.options));\n\t\treturn this.highlighter;\n\t}\n\thydrate(diff) {\n\t\tif (diff == null) return;\n\t\tthis.diff = diff;\n\t\tconst { options } = this.getRenderOptions(diff);\n\t\tconst massiveDiff = isDiffMassive(diff, this.getTokenizeMaxLength());\n\t\tlet cache = this.workerManager?.getDiffResultCache(diff);\n\t\tif (cache != null && !areDiffRenderOptionsEqual(options, cache.options)) cache = void 0;\n\t\tthis.renderCache ??= {\n\t\t\tdiff,\n\t\t\thighlighted: !massiveDiff && !isDiffPlainText(diff),\n\t\t\toptions,\n\t\t\tresult: massiveDiff ? void 0 : cache?.result,\n\t\t\trenderRange: void 0\n\t\t};\n\t\tif (this.workerManager?.isWorkingPool() === true) {\n\t\t\tif (this.renderCache.result == null && !massiveDiff) this.workerManager.highlightDiffAST(this, this.diff);\n\t\t} else if (this.highlighter == null) {\n\t\t\tthis.computedLang = diff.lang ?? getFiletypeFromFileName(diff.name);\n\t\t\tthis.initializeHighlighter();\n\t\t}\n\t}\n\tgetRenderOptions(diff) {\n\t\tconst options = (() => {\n\t\t\tif (this.workerManager?.isWorkingPool() === true) return this.workerManager.getDiffRenderOptions();\n\t\t\tconst { theme, tokenizeMaxLineLength, lineDiffType, maxLineDiffLength } = this.getOptionsWithDefaults();\n\t\t\treturn {\n\t\t\t\ttheme,\n\t\t\t\tuseTokenTransformer: shouldUseTokenTransformer(this.options),\n\t\t\t\ttokenizeMaxLineLength,\n\t\t\t\tlineDiffType,\n\t\t\t\tmaxLineDiffLength\n\t\t\t};\n\t\t})();\n\t\tthis.getOptionsWithDefaults();\n\t\tconst { renderCache } = this;\n\t\tif (renderCache?.result == null) return {\n\t\t\toptions,\n\t\t\tforceHighlight: true\n\t\t};\n\t\tif (!areDiffTargetsEqual(diff, renderCache.diff) || !areDiffRenderOptionsEqual(options, renderCache.options)) return {\n\t\t\toptions,\n\t\t\tforceHighlight: true\n\t\t};\n\t\treturn {\n\t\t\toptions,\n\t\t\tforceHighlight: false\n\t\t};\n\t}\n\trenderDiff(diff = this.renderCache?.diff, renderRange = DEFAULT_RENDER_RANGE) {\n\t\tif (diff == null) return;\n\t\tconst { expandUnchanged = false, collapsedContextThreshold } = this.getOptionsWithDefaults();\n\t\tlet { options, forceHighlight } = this.getRenderOptions(diff);\n\t\tconst cache = this.getMatchingWorkerResultCache(diff, options);\n\t\tif (cache != null && !this.hasHighlightedRenderCache(diff, options)) {\n\t\t\tthis.renderCache = {\n\t\t\t\tdiff,\n\t\t\t\thighlighted: true,\n\t\t\t\trenderRange: void 0,\n\t\t\t\t...cache\n\t\t\t};\n\t\t\tforceHighlight = false;\n\t\t}\n\t\tthis.renderCache ??= {\n\t\t\tdiff,\n\t\t\thighlighted: false,\n\t\t\toptions,\n\t\t\tresult: void 0,\n\t\t\trenderRange: void 0\n\t\t};\n\t\tconst hasContent = diff.additionLines.length > 0 || diff.deletionLines.length > 0;\n\t\tconst forcePlainText = !hasContent || isDiffPlainText(diff) || isDiffMassive(diff, this.getTokenizeMaxLength());\n\t\tconst newContent = !areDiffTargetsEqual(diff, this.renderCache.diff);\n\t\tconst newRenderRange = !areRenderRangesEqual(this.renderCache.renderRange, renderRange);\n\t\tif (this.workerManager?.isWorkingPool() === true) {\n\t\t\tif (forcePlainText || this.renderCache.result == null || !this.renderCache.highlighted && (newContent || newRenderRange)) {\n\t\t\t\tthis.renderCache.diff = diff;\n\t\t\t\tthis.renderCache.options = options;\n\t\t\t\tthis.renderCache.highlighted = false;\n\t\t\t\tif (this.renderCache.result == null || newContent || newRenderRange || forceHighlight) this.renderCache.result = this.workerManager.getPlainDiffAST(diff, renderRange.startingLine, renderRange.totalLines, isDefaultRenderRange(renderRange) ? true : expandUnchanged ? true : this.expandedHunks, collapsedContextThreshold);\n\t\t\t\tthis.renderCache.renderRange = renderRange;\n\t\t\t}\n\t\t\tif (!forcePlainText && hasContent && (!this.renderCache.highlighted || forceHighlight)) this.workerManager.highlightDiffAST(this, diff);\n\t\t} else {\n\t\t\tthis.computedLang = diff.lang ?? getFiletypeFromFileName(diff.name);\n\t\t\tconst hasThemes = this.highlighter != null && areThemesAttached(options.theme);\n\t\t\tconst hasLangs = this.highlighter != null && areLanguagesAttached(this.computedLang);\n\t\t\tconst canHighlight = !forcePlainText && hasLangs;\n\t\t\tif (this.highlighter != null && hasThemes && (forceHighlight || forcePlainText || !this.renderCache.highlighted && canHighlight || this.renderCache.result == null)) {\n\t\t\t\tconst { result, options } = this.renderDiffWithHighlighter(diff, this.highlighter, forcePlainText || !hasLangs);\n\t\t\t\tthis.renderCache = {\n\t\t\t\t\tdiff,\n\t\t\t\t\toptions,\n\t\t\t\t\thighlighted: canHighlight,\n\t\t\t\t\tresult,\n\t\t\t\t\trenderRange: void 0\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (!hasThemes || !forcePlainText && !hasLangs) this.asyncHighlight(diff).then(({ result, options }) => {\n\t\t\t\tif (this.renderCache != null) this.renderCache.highlighted = false;\n\t\t\t\tthis.onHighlightSuccess(diff, result, options, !forcePlainText);\n\t\t\t});\n\t\t}\n\t\treturn this.renderCache.result != null ? this.processDiffResult(this.renderCache.diff, renderRange, this.renderCache.result) : void 0;\n\t}\n\tasync asyncRender(diff, renderRange = DEFAULT_RENDER_RANGE) {\n\t\tconst { result } = await this.asyncHighlight(diff);\n\t\treturn this.processDiffResult(diff, renderRange, result);\n\t}\n\tcreatePreElement(split, totalLines, customProperties) {\n\t\tconst { diffIndicators, disableBackground, disableLineNumbers, overflow } = this.getOptionsWithDefaults();\n\t\treturn createPreElement({\n\t\t\ttype: \"diff\",\n\t\t\tdiffIndicators,\n\t\t\tdisableBackground,\n\t\t\tdisableLineNumbers,\n\t\t\toverflow,\n\t\t\tsplit,\n\t\t\ttotalLines,\n\t\t\tcustomProperties\n\t\t});\n\t}\n\tasync asyncHighlight(diff) {\n\t\tconst forcePlainText = isDiffMassive(diff, this.getTokenizeMaxLength());\n\t\tthis.computedLang = forcePlainText ? \"text\" : diff.lang ?? getFiletypeFromFileName(diff.name);\n\t\tconst hasThemes = this.highlighter != null && areThemesAttached(this.options.theme ?? DEFAULT_THEMES);\n\t\tconst hasLangs = forcePlainText || this.highlighter != null && areLanguagesAttached(this.computedLang);\n\t\tif (this.highlighter == null || !hasThemes || !hasLangs) this.highlighter = await this.initializeHighlighter();\n\t\treturn this.renderDiffWithHighlighter(diff, this.highlighter, forcePlainText);\n\t}\n\trenderDiffWithHighlighter(diff, highlighter, forcePlainText = false) {\n\t\tconst { options } = this.getRenderOptions(diff);\n\t\tconst { collapsedContextThreshold } = this.getOptionsWithDefaults();\n\t\treturn {\n\t\t\tresult: renderDiffWithHighlighter(diff, highlighter, options, {\n\t\t\t\tforcePlainText,\n\t\t\t\texpandedHunks: forcePlainText ? true : void 0,\n\t\t\t\tcollapsedContextThreshold\n\t\t\t}),\n\t\t\toptions\n\t\t};\n\t}\n\tonHighlightSuccess(diff, result, options, highlighted = true) {\n\t\tif (this.renderCache == null) return;\n\t\tconst triggerRenderUpdate = !this.renderCache.highlighted || !areDiffRenderOptionsEqual(this.renderCache.options, options) || !areDiffTargetsEqual(this.renderCache.diff, diff);\n\t\tthis.renderCache = {\n\t\t\tdiff,\n\t\t\toptions,\n\t\t\thighlighted,\n\t\t\tresult,\n\t\t\trenderRange: void 0\n\t\t};\n\t\tif (triggerRenderUpdate) this.onRenderUpdate?.();\n\t}\n\tgetMatchingWorkerResultCache(diff, options) {\n\t\tconst cache = this.workerManager?.getDiffResultCache(diff);\n\t\tif (cache == null || !areDiffRenderOptionsEqual(options, cache.options)) return;\n\t\treturn cache;\n\t}\n\thasHighlightedRenderCache(diff, options) {\n\t\tconst { renderCache } = this;\n\t\treturn renderCache?.result != null && renderCache.highlighted && areDiffTargetsEqual(diff, renderCache.diff) && areDiffRenderOptionsEqual(options, renderCache.options);\n\t}\n\tonHighlightError(error) {\n\t\tconsole.error(error);\n\t}\n\tgetTokenizeMaxLength() {\n\t\treturn this.options.tokenizeMaxLength ?? 1e5;\n\t}\n\tprocessDiffResult(fileDiff, renderRange, { code, themeStyles, baseThemeType }) {\n\t\tconst { diffStyle, disableFileHeader, expandUnchanged, expansionLineCount, collapsedContextThreshold, hunkSeparators } = this.getOptionsWithDefaults();\n\t\tthis.diff = fileDiff;\n\t\tconst unified = diffStyle === \"unified\";\n\t\tlet additionsContentAST = [];\n\t\tlet deletionsContentAST = [];\n\t\tlet unifiedContentAST = [];\n\t\tconst hunkData = [];\n\t\tconst { additionLines, deletionLines } = code;\n\t\tconst context = {\n\t\t\trowCount: 0,\n\t\t\thunkSeparators,\n\t\t\tadditionsContentAST,\n\t\t\tdeletionsContentAST,\n\t\t\tunifiedContentAST,\n\t\t\tunifiedGutterAST: createGutterWrapper(),\n\t\t\tdeletionsGutterAST: createGutterWrapper(),\n\t\t\tadditionsGutterAST: createGutterWrapper(),\n\t\t\texpansionLineCount,\n\t\t\thunkData,\n\t\t\tincrementRowCount(count = 1) {\n\t\t\t\tcontext.rowCount += count;\n\t\t\t},\n\t\t\tpushToGutter(type, element) {\n\t\t\t\tswitch (type) {\n\t\t\t\t\tcase \"unified\":\n\t\t\t\t\t\tcontext.unifiedGutterAST.children.push(element);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"deletions\":\n\t\t\t\t\t\tcontext.deletionsGutterAST.children.push(element);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"additions\":\n\t\t\t\t\t\tcontext.additionsGutterAST.children.push(element);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tconst trailingRangeSize = getTrailingContextRangeSize({\n\t\t\tfileDiff,\n\t\t\terrorPrefix: \"DiffHunksRenderer.processDiffResult\"\n\t\t});\n\t\tconst pendingSplitContext = {\n\t\t\tsize: 0,\n\t\t\tside: void 0,\n\t\t\tincrement() {\n\t\t\t\tthis.size += 1;\n\t\t\t},\n\t\t\tflush() {\n\t\t\t\tif (diffStyle === \"unified\") return;\n\t\t\t\tif (this.size <= 0 || this.side == null) {\n\t\t\t\t\tthis.side = void 0;\n\t\t\t\t\tthis.size = 0;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this.side === \"additions\") {\n\t\t\t\t\tcontext.pushToGutter(\"additions\", createGutterGap(void 0, \"buffer\", this.size));\n\t\t\t\t\tadditionsContentAST?.push(createEmptyRowBuffer(this.size));\n\t\t\t\t} else {\n\t\t\t\t\tcontext.pushToGutter(\"deletions\", createGutterGap(void 0, \"buffer\", this.size));\n\t\t\t\t\tdeletionsContentAST?.push(createEmptyRowBuffer(this.size));\n\t\t\t\t}\n\t\t\t\tthis.size = 0;\n\t\t\t\tthis.side = void 0;\n\t\t\t}\n\t\t};\n\t\tconst pushGutterLineNumber = (type, lineType, lineNumber, lineIndex, gutterProperties) => {\n\t\t\tcontext.pushToGutter(type, createGutterItem(lineType, lineNumber, lineIndex, gutterProperties));\n\t\t};\n\t\tfunction pushSeparators(props) {\n\t\t\tpendingSplitContext.flush();\n\t\t\tif (diffStyle === \"unified\") pushSeparator(\"unified\", props, context);\n\t\t\telse {\n\t\t\t\tpushSeparator(\"deletions\", props, context);\n\t\t\t\tpushSeparator(\"additions\", props, context);\n\t\t\t}\n\t\t}\n\t\tthis.pushFileLevelAnnotations(fileDiff, diffStyle, renderRange, context);\n\t\titerateOverDiff({\n\t\t\tdiff: fileDiff,\n\t\t\tdiffStyle,\n\t\t\tstartingLine: renderRange.startingLine,\n\t\t\ttotalLines: renderRange.totalLines,\n\t\t\texpandedHunks: expandUnchanged ? true : this.expandedHunks,\n\t\t\tcollapsedContextThreshold,\n\t\t\tcallback: ({ hunkIndex, hunk, collapsedBefore, collapsedAfter, additionLine, deletionLine, type }) => {\n\t\t\t\tconst splitLineIndex = deletionLine != null ? deletionLine.splitLineIndex : additionLine.splitLineIndex;\n\t\t\t\tconst unifiedLineIndex = additionLine != null ? additionLine.unifiedLineIndex : deletionLine.unifiedLineIndex;\n\t\t\t\tif (diffStyle === \"split\" && type !== \"change\") pendingSplitContext.flush();\n\t\t\t\tif (collapsedBefore > 0) pushSeparators({\n\t\t\t\t\thunkIndex,\n\t\t\t\t\tcollapsedLines: collapsedBefore,\n\t\t\t\t\trangeSize: Math.max(hunk?.collapsedBefore ?? 0, 0),\n\t\t\t\t\thunkSpecs: hunk?.hunkSpecs,\n\t\t\t\t\tisFirstHunk: hunkIndex === 0,\n\t\t\t\t\tisLastHunk: false,\n\t\t\t\t\tisExpandable: !fileDiff.isPartial\n\t\t\t\t});\n\t\t\t\tconst lineIndex = diffStyle === \"unified\" ? unifiedLineIndex : splitLineIndex;\n\t\t\t\tconst renderedLineContext = {\n\t\t\t\t\ttype,\n\t\t\t\t\thunkIndex,\n\t\t\t\t\tlineIndex,\n\t\t\t\t\tunifiedLineIndex,\n\t\t\t\t\tsplitLineIndex,\n\t\t\t\t\tdeletionLine,\n\t\t\t\t\tadditionLine\n\t\t\t\t};\n\t\t\t\tif (diffStyle === \"unified\") {\n\t\t\t\t\tconst injectedRows = this.getUnifiedInjectedRowsForLine?.(renderedLineContext);\n\t\t\t\t\tif (injectedRows?.before != null) pushUnifiedInjectedRows(injectedRows.before, context);\n\t\t\t\t\tlet deletionLineContent = deletionLine != null ? deletionLines[deletionLine.lineIndex] : void 0;\n\t\t\t\t\tlet additionLineContent = additionLine != null ? additionLines[additionLine.lineIndex] : void 0;\n\t\t\t\t\tif (deletionLineContent == null && additionLineContent == null) {\n\t\t\t\t\t\tconst errorMessage = \"DiffHunksRenderer.processDiffResult: deletionLine and additionLine are null, something is wrong\";\n\t\t\t\t\t\tconsole.error(errorMessage, { file: fileDiff.name });\n\t\t\t\t\t\tthrow new Error(errorMessage);\n\t\t\t\t\t}\n\t\t\t\t\tconst lineType = type === \"change\" ? additionLine != null ? \"change-addition\" : \"change-deletion\" : type;\n\t\t\t\t\tconst lineDecoration = this.getUnifiedLineDecoration({\n\t\t\t\t\t\ttype,\n\t\t\t\t\t\tlineType,\n\t\t\t\t\t\tadditionLineIndex: additionLine?.lineIndex,\n\t\t\t\t\t\tdeletionLineIndex: deletionLine?.lineIndex\n\t\t\t\t\t});\n\t\t\t\t\tpushGutterLineNumber(\"unified\", lineDecoration.gutterLineType, additionLine != null ? additionLine.lineNumber : deletionLine.lineNumber, `${unifiedLineIndex},${splitLineIndex}`, lineDecoration.gutterProperties);\n\t\t\t\t\tif (additionLineContent != null) additionLineContent = withContentProperties(additionLineContent, lineDecoration.contentProperties);\n\t\t\t\t\telse if (deletionLineContent != null) deletionLineContent = withContentProperties(deletionLineContent, lineDecoration.contentProperties);\n\t\t\t\t\tpushLineWithAnnotation({\n\t\t\t\t\t\tdiffStyle: \"unified\",\n\t\t\t\t\t\ttype,\n\t\t\t\t\t\tdeletionLine: deletionLineContent,\n\t\t\t\t\t\tadditionLine: additionLineContent,\n\t\t\t\t\t\tunifiedSpan: this.getAnnotations(\"unified\", deletionLine?.lineNumber, additionLine?.lineNumber, hunkIndex, lineIndex),\n\t\t\t\t\t\tcreateAnnotationElement: (span) => this.createAnnotationElement(span),\n\t\t\t\t\t\tcontext\n\t\t\t\t\t});\n\t\t\t\t\tif (injectedRows?.after != null) pushUnifiedInjectedRows(injectedRows.after, context);\n\t\t\t\t} else {\n\t\t\t\t\tconst injectedRows = this.getSplitInjectedRowsForLine?.(renderedLineContext);\n\t\t\t\t\tif (injectedRows?.before != null) pushSplitInjectedRows(injectedRows.before, context, pendingSplitContext);\n\t\t\t\t\tlet deletionLineContent = deletionLine != null ? deletionLines[deletionLine.lineIndex] : void 0;\n\t\t\t\t\tlet additionLineContent = additionLine != null ? additionLines[additionLine.lineIndex] : void 0;\n\t\t\t\t\tconst deletionLineDecoration = this.getSplitLineDecoration({\n\t\t\t\t\t\tside: \"deletions\",\n\t\t\t\t\t\ttype,\n\t\t\t\t\t\tlineIndex: deletionLine?.lineIndex\n\t\t\t\t\t});\n\t\t\t\t\tconst additionLineDecoration = this.getSplitLineDecoration({\n\t\t\t\t\t\tside: \"additions\",\n\t\t\t\t\t\ttype,\n\t\t\t\t\t\tlineIndex: additionLine?.lineIndex\n\t\t\t\t\t});\n\t\t\t\t\tif (deletionLineContent == null && additionLineContent == null) {\n\t\t\t\t\t\tconst errorMessage = \"DiffHunksRenderer.processDiffResult: deletionLine and additionLine are null, something is wrong\";\n\t\t\t\t\t\tconsole.error(errorMessage, { file: fileDiff.name });\n\t\t\t\t\t\tthrow new Error(errorMessage);\n\t\t\t\t\t}\n\t\t\t\t\tconst missingSide = (() => {\n\t\t\t\t\t\tif (type === \"change\") {\n\t\t\t\t\t\t\tif (additionLineContent == null) return \"additions\";\n\t\t\t\t\t\t\telse if (deletionLineContent == null) return \"deletions\";\n\t\t\t\t\t\t}\n\t\t\t\t\t})();\n\t\t\t\t\tif (missingSide != null) {\n\t\t\t\t\t\tif (pendingSplitContext.side != null && pendingSplitContext.side !== missingSide) throw new Error(\"DiffHunksRenderer.processDiffResult: iterateOverDiff, invalid pending splits\");\n\t\t\t\t\t\tpendingSplitContext.side = missingSide;\n\t\t\t\t\t\tpendingSplitContext.increment();\n\t\t\t\t\t}\n\t\t\t\t\tconst annotationSpans = this.getAnnotations(\"split\", deletionLine?.lineNumber, additionLine?.lineNumber, hunkIndex, lineIndex);\n\t\t\t\t\tif (annotationSpans != null && pendingSplitContext.size > 0) pendingSplitContext.flush();\n\t\t\t\t\tif (deletionLine != null) {\n\t\t\t\t\t\tconst deletionLineDecorated = withContentProperties(deletionLineContent, deletionLineDecoration.contentProperties);\n\t\t\t\t\t\tpushGutterLineNumber(\"deletions\", deletionLineDecoration.gutterLineType, deletionLine.lineNumber, `${deletionLine.unifiedLineIndex},${splitLineIndex}`, deletionLineDecoration.gutterProperties);\n\t\t\t\t\t\tif (deletionLineDecorated != null) deletionLineContent = deletionLineDecorated;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionLine != null) {\n\t\t\t\t\t\tconst additionLineDecorated = withContentProperties(additionLineContent, additionLineDecoration.contentProperties);\n\t\t\t\t\t\tpushGutterLineNumber(\"additions\", additionLineDecoration.gutterLineType, additionLine.lineNumber, `${additionLine.unifiedLineIndex},${splitLineIndex}`, additionLineDecoration.gutterProperties);\n\t\t\t\t\t\tif (additionLineDecorated != null) additionLineContent = additionLineDecorated;\n\t\t\t\t\t}\n\t\t\t\t\tpushLineWithAnnotation({\n\t\t\t\t\t\tdiffStyle: \"split\",\n\t\t\t\t\t\ttype,\n\t\t\t\t\t\tadditionLine: additionLineContent,\n\t\t\t\t\t\tdeletionLine: deletionLineContent,\n\t\t\t\t\t\t...annotationSpans,\n\t\t\t\t\t\tcreateAnnotationElement: (span) => this.createAnnotationElement(span),\n\t\t\t\t\t\tcontext\n\t\t\t\t\t});\n\t\t\t\t\tif (injectedRows?.after != null) pushSplitInjectedRows(injectedRows.after, context, pendingSplitContext);\n\t\t\t\t}\n\t\t\t\tconst isFinalSplitHunkRow = diffStyle === \"split\" && hunk != null && splitLineIndex === hunk.splitLineStart + hunk.splitLineCount - 1;\n\t\t\t\tconst splitNoEOFCRDeletion = isFinalSplitHunkRow ? hunk.noEOFCRDeletions : false;\n\t\t\t\tconst splitNoEOFCRAddition = isFinalSplitHunkRow ? hunk.noEOFCRAdditions : false;\n\t\t\t\tconst noEOFCRDeletion = (deletionLine?.noEOFCR ?? false) || splitNoEOFCRDeletion;\n\t\t\t\tconst noEOFCRAddition = (additionLine?.noEOFCR ?? false) || splitNoEOFCRAddition;\n\t\t\t\tif (noEOFCRAddition || noEOFCRDeletion) {\n\t\t\t\t\tif (diffStyle === \"split\") pendingSplitContext.flush();\n\t\t\t\t\tif (noEOFCRDeletion) {\n\t\t\t\t\t\tconst noEOFType = type === \"context\" || type === \"context-expanded\" ? type : \"change-deletion\";\n\t\t\t\t\t\tif (diffStyle === \"unified\") {\n\t\t\t\t\t\t\tcontext.unifiedContentAST.push(createNoNewlineElement(noEOFType));\n\t\t\t\t\t\t\tcontext.pushToGutter(\"unified\", createGutterGap(noEOFType, \"metadata\", 1));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.deletionsContentAST.push(createNoNewlineElement(noEOFType));\n\t\t\t\t\t\t\tcontext.pushToGutter(\"deletions\", createGutterGap(noEOFType, \"metadata\", 1));\n\t\t\t\t\t\t\tif (!noEOFCRAddition) {\n\t\t\t\t\t\t\t\tcontext.pushToGutter(\"additions\", createGutterGap(void 0, \"buffer\", 1));\n\t\t\t\t\t\t\t\tcontext.additionsContentAST.push(createEmptyRowBuffer(1));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (noEOFCRAddition) {\n\t\t\t\t\t\tconst noEOFType = type === \"context\" || type === \"context-expanded\" ? type : \"change-addition\";\n\t\t\t\t\t\tif (diffStyle === \"unified\") {\n\t\t\t\t\t\t\tcontext.unifiedContentAST.push(createNoNewlineElement(noEOFType));\n\t\t\t\t\t\t\tcontext.pushToGutter(\"unified\", createGutterGap(noEOFType, \"metadata\", 1));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.additionsContentAST.push(createNoNewlineElement(noEOFType));\n\t\t\t\t\t\t\tcontext.pushToGutter(\"additions\", createGutterGap(noEOFType, \"metadata\", 1));\n\t\t\t\t\t\t\tif (!noEOFCRDeletion) {\n\t\t\t\t\t\t\t\tcontext.pushToGutter(\"deletions\", createGutterGap(void 0, \"buffer\", 1));\n\t\t\t\t\t\t\t\tcontext.deletionsContentAST.push(createEmptyRowBuffer(1));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcontext.incrementRowCount(1);\n\t\t\t\t}\n\t\t\t\tif (collapsedAfter > 0 && hunkSeparators !== \"simple\") pushSeparators({\n\t\t\t\t\thunkIndex: type === \"context-expanded\" ? hunkIndex : hunkIndex + 1,\n\t\t\t\t\tcollapsedLines: collapsedAfter,\n\t\t\t\t\trangeSize: trailingRangeSize,\n\t\t\t\t\thunkSpecs: void 0,\n\t\t\t\t\tisFirstHunk: false,\n\t\t\t\t\tisLastHunk: true,\n\t\t\t\t\tisExpandable: !fileDiff.isPartial\n\t\t\t\t});\n\t\t\t\tcontext.incrementRowCount(1);\n\t\t\t}\n\t\t});\n\t\tif (diffStyle === \"split\") pendingSplitContext.flush();\n\t\tconst totalLines = Math.max(getTotalLineCountFromHunks(fileDiff.hunks), fileDiff.additionLines.length ?? 0, fileDiff.deletionLines.length ?? 0);\n\t\tconst hasBuffer = renderRange.bufferBefore > 0 || renderRange.bufferAfter > 0;\n\t\tconst shouldIncludeAdditions = !unified && fileDiff.type !== \"deleted\";\n\t\tconst shouldIncludeDeletions = !unified && fileDiff.type !== \"new\";\n\t\tconst hasContent = context.rowCount > 0 || hasBuffer;\n\t\tadditionsContentAST = shouldIncludeAdditions && hasContent ? additionsContentAST : void 0;\n\t\tdeletionsContentAST = shouldIncludeDeletions && hasContent ? deletionsContentAST : void 0;\n\t\tunifiedContentAST = unified && hasContent ? unifiedContentAST : void 0;\n\t\tconst preNode = this.createPreElement(deletionsContentAST != null && additionsContentAST != null, totalLines);\n\t\treturn {\n\t\t\tunifiedGutterAST: unified && hasContent ? context.unifiedGutterAST.children : void 0,\n\t\t\tunifiedContentAST,\n\t\t\tdeletionsGutterAST: shouldIncludeDeletions && hasContent ? context.deletionsGutterAST.children : void 0,\n\t\t\tdeletionsContentAST,\n\t\t\tadditionsGutterAST: shouldIncludeAdditions && hasContent ? context.additionsGutterAST.children : void 0,\n\t\t\tadditionsContentAST,\n\t\t\thunkData,\n\t\t\tpreNode,\n\t\t\tthemeStyles,\n\t\t\tbaseThemeType,\n\t\t\theaderElement: !disableFileHeader ? this.renderHeader(this.diff) : void 0,\n\t\t\ttotalLines,\n\t\t\trowCount: context.rowCount,\n\t\t\tbufferBefore: renderRange.bufferBefore,\n\t\t\tbufferAfter: renderRange.bufferAfter,\n\t\t\tcss: \"\"\n\t\t};\n\t}\n\trenderCodeAST(type, result) {\n\t\tconst gutterAST = type === \"unified\" ? result.unifiedGutterAST : type === \"deletions\" ? result.deletionsGutterAST : result.additionsGutterAST;\n\t\tconst contentAST = type === \"unified\" ? result.unifiedContentAST : type === \"deletions\" ? result.deletionsContentAST : result.additionsContentAST;\n\t\tif (gutterAST == null || contentAST == null) return;\n\t\tconst gutter = createGutterWrapper(gutterAST);\n\t\tgutter.properties.style = `grid-row: span ${result.rowCount}`;\n\t\treturn [gutter, createContentColumn(contentAST, result.rowCount)];\n\t}\n\trenderFullAST(result, children = []) {\n\t\tconst containerSize = this.getOptionsWithDefaults().hunkSeparators === \"line-info\";\n\t\tconst unifiedAST = this.renderCodeAST(\"unified\", result);\n\t\tif (unifiedAST != null) {\n\t\t\tchildren.push(createHastElement({\n\t\t\t\ttagName: \"code\",\n\t\t\t\tchildren: unifiedAST,\n\t\t\t\tproperties: {\n\t\t\t\t\t\"data-code\": \"\",\n\t\t\t\t\t\"data-container-size\": containerSize ? \"\" : void 0,\n\t\t\t\t\t\"data-unified\": \"\"\n\t\t\t\t}\n\t\t\t}));\n\t\t\treturn {\n\t\t\t\t...result.preNode,\n\t\t\t\tchildren\n\t\t\t};\n\t\t}\n\t\tconst deletionsAST = this.renderCodeAST(\"deletions\", result);\n\t\tif (deletionsAST != null) children.push(createHastElement({\n\t\t\ttagName: \"code\",\n\t\t\tchildren: deletionsAST,\n\t\t\tproperties: {\n\t\t\t\t\"data-code\": \"\",\n\t\t\t\t\"data-container-size\": containerSize ? \"\" : void 0,\n\t\t\t\t\"data-deletions\": \"\"\n\t\t\t}\n\t\t}));\n\t\tconst additionsAST = this.renderCodeAST(\"additions\", result);\n\t\tif (additionsAST != null) children.push(createHastElement({\n\t\t\ttagName: \"code\",\n\t\t\tchildren: additionsAST,\n\t\t\tproperties: {\n\t\t\t\t\"data-code\": \"\",\n\t\t\t\t\"data-container-size\": containerSize ? \"\" : void 0,\n\t\t\t\t\"data-additions\": \"\"\n\t\t\t}\n\t\t}));\n\t\treturn {\n\t\t\t...result.preNode,\n\t\t\tchildren\n\t\t};\n\t}\n\trenderFullHTML(result, tempChildren = []) {\n\t\treturn toHtml(this.renderFullAST(result, tempChildren));\n\t}\n\trenderPartialHTML(children, columnType) {\n\t\tif (columnType == null) return toHtml(children);\n\t\treturn toHtml(createHastElement({\n\t\t\ttagName: \"code\",\n\t\t\tchildren,\n\t\t\tproperties: {\n\t\t\t\t\"data-code\": \"\",\n\t\t\t\t\"data-container-size\": this.getOptionsWithDefaults().hunkSeparators === \"line-info\" ? \"\" : void 0,\n\t\t\t\t[`data-${columnType}`]: \"\"\n\t\t\t}\n\t\t}));\n\t}\n\tpushFileLevelAnnotations(fileDiff, diffStyle, renderRange, context) {\n\t\tif (!shouldRenderFileAnnotations(renderRange)) return;\n\t\tconst deletionAnnotationNames = fileDiff.type !== \"new\" ? getAnnotationNames(getFileAnnotations(this.deletionAnnotations)) : [];\n\t\tconst additionAnnotationNames = fileDiff.type !== \"deleted\" ? getAnnotationNames(getFileAnnotations(this.additionAnnotations)) : [];\n\t\tif (deletionAnnotationNames.length === 0 && additionAnnotationNames.length === 0) return;\n\t\tconst hunkIndex = -1;\n\t\tconst lineIndex = -1;\n\t\tconst { createAnnotationElement } = this;\n\t\tif (diffStyle === \"unified\") {\n\t\t\tpushLineWithAnnotation({\n\t\t\t\tdiffStyle,\n\t\t\t\ttype: \"context\",\n\t\t\t\tunifiedSpan: {\n\t\t\t\t\ttype: \"annotation\",\n\t\t\t\t\thunkIndex,\n\t\t\t\t\tlineIndex,\n\t\t\t\t\tannotations: deletionAnnotationNames.concat(additionAnnotationNames)\n\t\t\t\t},\n\t\t\t\tcreateAnnotationElement,\n\t\t\t\tcontext\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tpushLineWithAnnotation({\n\t\t\tdiffStyle,\n\t\t\ttype: \"context\",\n\t\t\tdeletionSpan: {\n\t\t\t\ttype: \"annotation\",\n\t\t\t\thunkIndex,\n\t\t\t\tlineIndex,\n\t\t\t\tannotations: deletionAnnotationNames\n\t\t\t},\n\t\t\tadditionSpan: {\n\t\t\t\ttype: \"annotation\",\n\t\t\t\thunkIndex,\n\t\t\t\tlineIndex,\n\t\t\t\tannotations: additionAnnotationNames\n\t\t\t},\n\t\t\tcreateAnnotationElement,\n\t\t\tcontext\n\t\t});\n\t}\n\tgetAnnotations(type, deletionLineNumber, additionLineNumber, hunkIndex, lineIndex) {\n\t\tconst deletionSpan = {\n\t\t\ttype: \"annotation\",\n\t\t\thunkIndex,\n\t\t\tlineIndex,\n\t\t\tannotations: []\n\t\t};\n\t\tif (deletionLineNumber != null) for (const anno of this.deletionAnnotations[deletionLineNumber] ?? []) deletionSpan.annotations.push(getLineAnnotationName(anno));\n\t\tconst additionSpan = {\n\t\t\ttype: \"annotation\",\n\t\t\thunkIndex,\n\t\t\tlineIndex,\n\t\t\tannotations: []\n\t\t};\n\t\tif (additionLineNumber != null) for (const anno of this.additionAnnotations[additionLineNumber] ?? []) (type === \"unified\" ? deletionSpan : additionSpan).annotations.push(getLineAnnotationName(anno));\n\t\tif (type === \"unified\") {\n\t\t\tif (deletionSpan.annotations.length > 0) return deletionSpan;\n\t\t\treturn;\n\t\t}\n\t\tif (additionSpan.annotations.length === 0 && deletionSpan.annotations.length === 0) return;\n\t\treturn {\n\t\t\tdeletionSpan,\n\t\t\tadditionSpan\n\t\t};\n\t}\n\trenderHeader(diff) {\n\t\tconst { headerRenderMode, stickyHeader } = this.getOptionsWithDefaults();\n\t\treturn createFileHeaderElement({\n\t\t\tfileOrDiff: diff,\n\t\t\tmode: headerRenderMode,\n\t\t\tstickyHeader\n\t\t});\n\t}\n};\nfunction getAnnotationNames(annotations) {\n\treturn annotations?.map((annotation) => getLineAnnotationName(annotation)) ?? [];\n}\nconst EN_PLURAL_RULES = new Intl.PluralRules(\"en-US\");\nfunction getModifiedLinesString(lines) {\n\treturn `${lines} unmodified line${EN_PLURAL_RULES.select(lines) === \"one\" ? \"\" : \"s\"}`;\n}\nfunction pushUnifiedInjectedRows(rows, context) {\n\tfor (const row of rows) {\n\t\tcontext.unifiedContentAST.push(row.content);\n\t\tcontext.pushToGutter(\"unified\", row.gutter);\n\t\tcontext.incrementRowCount(1);\n\t}\n}\nfunction pushSplitInjectedRows(rows, context, pendingSplitContext) {\n\tfor (const { deletion, addition } of rows) {\n\t\tif (deletion == null && addition == null) continue;\n\t\tconst missingSide = deletion != null && addition != null ? void 0 : deletion == null ? \"deletions\" : \"additions\";\n\t\tif (missingSide == null || pendingSplitContext.side !== missingSide) pendingSplitContext.flush();\n\t\tif (deletion != null) {\n\t\t\tcontext.deletionsContentAST.push(deletion.content);\n\t\t\tcontext.pushToGutter(\"deletions\", deletion.gutter);\n\t\t}\n\t\tif (addition != null) {\n\t\t\tcontext.additionsContentAST.push(addition.content);\n\t\t\tcontext.pushToGutter(\"additions\", addition.gutter);\n\t\t}\n\t\tif (missingSide != null) {\n\t\t\tpendingSplitContext.side = missingSide;\n\t\t\tpendingSplitContext.increment();\n\t\t}\n\t\tcontext.incrementRowCount(1);\n\t}\n}\nfunction pushLineWithAnnotation({ diffStyle, type, deletionLine, additionLine, unifiedSpan, deletionSpan, additionSpan, createAnnotationElement, context }) {\n\tlet hasAnnotationRow = false;\n\tif (diffStyle === \"unified\") {\n\t\tif (additionLine != null) context.unifiedContentAST.push(additionLine);\n\t\telse if (deletionLine != null) context.unifiedContentAST.push(deletionLine);\n\t\tif (unifiedSpan != null) {\n\t\t\tconst lineType = type === \"change\" ? deletionLine != null ? \"change-deletion\" : \"change-addition\" : type;\n\t\t\tcontext.unifiedContentAST.push(createAnnotationElement(unifiedSpan));\n\t\t\tcontext.pushToGutter(\"unified\", createGutterGap(lineType, \"annotation\", 1));\n\t\t\thasAnnotationRow = true;\n\t\t}\n\t} else if (diffStyle === \"split\") {\n\t\tif (deletionLine != null) context.deletionsContentAST.push(deletionLine);\n\t\tif (additionLine != null) context.additionsContentAST.push(additionLine);\n\t\tif (deletionSpan != null) {\n\t\t\tconst lineType = type === \"change\" ? deletionLine != null ? \"change-deletion\" : \"context\" : type;\n\t\t\tcontext.deletionsContentAST.push(createAnnotationElement(deletionSpan));\n\t\t\tcontext.pushToGutter(\"deletions\", createGutterGap(lineType, \"annotation\", 1));\n\t\t\thasAnnotationRow = true;\n\t\t}\n\t\tif (additionSpan != null) {\n\t\t\tconst lineType = type === \"change\" ? additionLine != null ? \"change-addition\" : \"context\" : type;\n\t\t\tcontext.additionsContentAST.push(createAnnotationElement(additionSpan));\n\t\t\tcontext.pushToGutter(\"additions\", createGutterGap(lineType, \"annotation\", 1));\n\t\t\thasAnnotationRow = true;\n\t\t}\n\t}\n\tif (hasAnnotationRow) context.incrementRowCount(1);\n}\nfunction pushSeparator(type, { hunkIndex, collapsedLines, rangeSize, hunkSpecs, isFirstHunk, isLastHunk, isExpandable }, context) {\n\tif (collapsedLines <= 0) return;\n\tconst linesAST = type === \"unified\" ? context.unifiedContentAST : type === \"deletions\" ? context.deletionsContentAST : context.additionsContentAST;\n\tif (context.hunkSeparators === \"metadata\") {\n\t\tif (hunkSpecs != null) {\n\t\t\tcontext.pushToGutter(type, createSeparator({\n\t\t\t\ttype: \"metadata\",\n\t\t\t\tcontent: hunkSpecs,\n\t\t\t\tisFirstHunk,\n\t\t\t\tisLastHunk\n\t\t\t}));\n\t\t\tlinesAST.push(createSeparator({\n\t\t\t\ttype: \"metadata\",\n\t\t\t\tcontent: hunkSpecs,\n\t\t\t\tisFirstHunk,\n\t\t\t\tisLastHunk\n\t\t\t}));\n\t\t\tif (type !== \"additions\") context.incrementRowCount(1);\n\t\t}\n\t\treturn;\n\t}\n\tif (context.hunkSeparators === \"simple\") {\n\t\tif (hunkIndex > 0) {\n\t\t\tcontext.pushToGutter(type, createSeparator({\n\t\t\t\ttype: \"simple\",\n\t\t\t\tisFirstHunk,\n\t\t\t\tisLastHunk: false\n\t\t\t}));\n\t\t\tlinesAST.push(createSeparator({\n\t\t\t\ttype: \"simple\",\n\t\t\t\tisFirstHunk,\n\t\t\t\tisLastHunk: false\n\t\t\t}));\n\t\t\tif (type !== \"additions\") context.incrementRowCount(1);\n\t\t}\n\t\treturn;\n\t}\n\tconst slotName = getHunkSeparatorSlotName(type, hunkIndex);\n\tconst chunked = rangeSize > context.expansionLineCount;\n\tconst expandIndex = isExpandable ? hunkIndex : void 0;\n\tcontext.pushToGutter(type, createSeparator({\n\t\ttype: context.hunkSeparators,\n\t\tcontent: getModifiedLinesString(collapsedLines),\n\t\texpandIndex,\n\t\tchunked,\n\t\tslotName,\n\t\tisFirstHunk,\n\t\tisLastHunk\n\t}));\n\tlinesAST.push(createSeparator({\n\t\ttype: context.hunkSeparators,\n\t\tcontent: getModifiedLinesString(collapsedLines),\n\t\texpandIndex,\n\t\tchunked,\n\t\tslotName,\n\t\tisFirstHunk,\n\t\tisLastHunk\n\t}));\n\tif (type !== \"additions\") context.incrementRowCount(1);\n\tcontext.hunkData.push({\n\t\tslotName,\n\t\thunkIndex,\n\t\tlines: collapsedLines,\n\t\ttype,\n\t\texpandable: isExpandable ? {\n\t\t\tup: !isFirstHunk,\n\t\t\tdown: !isLastHunk,\n\t\t\tchunked\n\t\t} : void 0\n\t});\n}\nfunction withContentProperties(lineNode, contentProperties) {\n\tif (lineNode == null || lineNode.type !== \"element\" || contentProperties == null) return lineNode;\n\treturn {\n\t\t...lineNode,\n\t\tproperties: {\n\t\t\t...lineNode.properties,\n\t\t\t...contentProperties\n\t\t}\n\t};\n}\nfunction isDiffMassive(diff, tokenizeMaxLength) {\n\treturn Math.max(diff.additionLines.length, diff.deletionLines.length) > tokenizeMaxLength;\n}\n//#endregion\nexport { DiffHunksRenderer };\n\n//# sourceMappingURL=DiffHunksRenderer.js.map","//#region src/utils/areDiffLineAnnotationsEqual.ts\nfunction areDiffLineAnnotationsEqual(annotationA, annotationB) {\n\treturn annotationA.lineNumber === annotationB.lineNumber && annotationA.side === annotationB.side && annotationA.metadata === annotationB.metadata;\n}\n//#endregion\nexport { areDiffLineAnnotationsEqual };\n\n//# sourceMappingURL=areDiffLineAnnotationsEqual.js.map","//#region src/utils/areHunkDataEqual.ts\nfunction areHunkDataEqual(hunkA, hunkB) {\n\treturn hunkA.slotName === hunkB.slotName && hunkA.hunkIndex === hunkB.hunkIndex && hunkA.lines === hunkB.lines && hunkA.type === hunkB.type && hunkA.expandable?.chunked === hunkB.expandable?.chunked && hunkA.expandable?.up === hunkB.expandable?.up && hunkA.expandable?.down === hunkB.expandable?.down;\n}\n//#endregion\nexport { areHunkDataEqual };\n\n//# sourceMappingURL=areHunkDataEqual.js.map","//#region src/utils/getDiffHunksRendererOptions.ts\nfunction getDiffHunksRendererOptions(options) {\n\treturn {\n\t\ttheme: options?.theme,\n\t\tdisableLineNumbers: options?.disableLineNumbers,\n\t\toverflow: options?.overflow,\n\t\tcollapsed: options?.collapsed,\n\t\tdisableFileHeader: options?.disableFileHeader,\n\t\tdisableVirtualizationBuffers: options?.disableVirtualizationBuffers,\n\t\tstickyHeader: options?.stickyHeader,\n\t\tpreferredHighlighter: options?.preferredHighlighter,\n\t\tuseCSSClasses: options?.useCSSClasses,\n\t\tuseTokenTransformer: options?.useTokenTransformer,\n\t\ttokenizeMaxLineLength: options?.tokenizeMaxLineLength,\n\t\ttokenizeMaxLength: options?.tokenizeMaxLength,\n\t\tdiffStyle: options?.diffStyle,\n\t\tdiffIndicators: options?.diffIndicators,\n\t\tdisableBackground: options?.disableBackground,\n\t\thunkSeparators: typeof options?.hunkSeparators === \"function\" ? \"custom\" : options?.hunkSeparators,\n\t\texpandUnchanged: options?.expandUnchanged,\n\t\tcollapsedContextThreshold: options?.collapsedContextThreshold,\n\t\tlineDiffType: options?.lineDiffType,\n\t\tmaxLineDiffLength: options?.maxLineDiffLength,\n\t\texpansionLineCount: options?.expansionLineCount,\n\t\theaderRenderMode: options?.renderCustomHeader != null ? \"custom\" : \"default\"\n\t};\n}\n//#endregion\nexport { getDiffHunksRendererOptions };\n\n//# sourceMappingURL=getDiffHunksRendererOptions.js.map","import { CUSTOM_HEADER_SLOT_ID, DEFAULT_THEMES, EMPTY_RENDER_RANGE, HEADER_METADATA_SLOT_ID, HEADER_PREFIX_SLOT_ID } from \"../constants.js\";\nimport { areThemesEqual } from \"../utils/areThemesEqual.js\";\nimport { isStyleNode } from \"../utils/isStyleNode.js\";\nimport { InteractionManager, pluckInteractionOptions } from \"../managers/InteractionManager.js\";\nimport { ResizeManager } from \"../managers/ResizeManager.js\";\nimport { areFilesEqual } from \"../utils/areFilesEqual.js\";\nimport { areRenderRangesEqual } from \"../utils/areRenderRangesEqual.js\";\nimport { getLineAnnotationName } from \"../utils/getLineAnnotationName.js\";\nimport { SVGSpriteSheet } from \"../sprite.js\";\nimport { arePrePropertiesEqual } from \"../utils/arePrePropertiesEqual.js\";\nimport { createAnnotationWrapperNode } from \"../utils/createAnnotationWrapperNode.js\";\nimport { createGutterUtilityContentNode } from \"../utils/createGutterUtilityContentNode.js\";\nimport { createUnsafeCSSStyleNode } from \"../utils/createUnsafeCSSStyleNode.js\";\nimport { getMeasuredScrollbarGutter } from \"../utils/scrollbarGutter.js\";\nimport { patchScrollbarGutterSize, wrapThemeCSS, wrapUnsafeCSS } from \"../utils/cssWrappers.js\";\nimport { getOrCreateCodeNode } from \"../utils/getOrCreateCodeNode.js\";\nimport { upsertHostThemeStyle } from \"../utils/hostTheme.js\";\nimport { prerenderHTMLIfNecessary } from \"../utils/prerenderHTMLIfNecessary.js\";\nimport { setPreNodeProperties } from \"../utils/setWrapperNodeProps.js\";\nimport \"./web-components.js\";\nimport { parseDiffFromFile } from \"../utils/parseDiffFromFile.js\";\nimport { ScrollSyncManager } from \"../managers/ScrollSyncManager.js\";\nimport { isDiffPlainText } from \"../utils/isDiffPlainText.js\";\nimport { DiffHunksRenderer } from \"../renderers/DiffHunksRenderer.js\";\nimport { areDiffLineAnnotationsEqual } from \"../utils/areDiffLineAnnotationsEqual.js\";\nimport { areHunkDataEqual } from \"../utils/areHunkDataEqual.js\";\nimport { getDiffHunksRendererOptions } from \"../utils/getDiffHunksRendererOptions.js\";\nimport { toHtml } from \"hast-util-to-html\";\n//#region src/components/FileDiff.ts\nlet instanceId = -1;\nvar FileDiff = class {\n\toptions;\n\tworkerManager;\n\tisContainerManaged;\n\tstatic LoadedCustomComponent = true;\n\t__id = `file-diff:${++instanceId}`;\n\ttype = \"file-diff\";\n\tfileContainer;\n\tspriteSVG;\n\tpre;\n\tcodeUnified;\n\tcodeDeletions;\n\tcodeAdditions;\n\tbufferBefore;\n\tbufferAfter;\n\tthemeCSSStyle;\n\tappliedThemeCSS;\n\thasAdoptedThemeCSS = false;\n\tunsafeCSSStyle;\n\tappliedUnsafeCSS;\n\tgutterUtilityContent;\n\theaderElement;\n\theaderPrefix;\n\theaderMetadata;\n\theaderCustom;\n\tseparatorCache = /* @__PURE__ */ new Map();\n\terrorWrapper;\n\tplaceHolder;\n\thunksRenderer;\n\tresizeManager;\n\tscrollSyncManager;\n\tinteractionManager;\n\tannotationCache = /* @__PURE__ */ new Map();\n\tlineAnnotations = [];\n\tmanagersDirty = false;\n\tdeletionFile;\n\tadditionFile;\n\tfileDiff;\n\trenderRange;\n\tappliedPreAttributes;\n\tlastRenderedHeaderHTML;\n\tcachedHeaderHTML;\n\tlastRowCount;\n\tmounted = false;\n\tenabled = true;\n\tconstructor(options = { theme: DEFAULT_THEMES }, workerManager, isContainerManaged = false) {\n\t\tthis.options = options;\n\t\tthis.workerManager = workerManager;\n\t\tthis.isContainerManaged = isContainerManaged;\n\t\tthis.hunksRenderer = this.createHunksRenderer(options);\n\t\tthis.resizeManager = new ResizeManager();\n\t\tthis.scrollSyncManager = new ScrollSyncManager();\n\t\tthis.interactionManager = new InteractionManager(\"diff\", pluckInteractionOptions(options, typeof options.hunkSeparators === \"function\" || (options.hunkSeparators ?? \"line-info\") === \"line-info\" || options.hunkSeparators === \"line-info-basic\" ? this.handleExpandHunk : void 0, this.getLineIndex));\n\t\tthis.workerManager?.subscribeToThemeChanges(this);\n\t\tthis.enabled = true;\n\t}\n\thandleHighlightRender = () => {\n\t\tthis.rerender();\n\t};\n\tgetHunksRendererOptions(options) {\n\t\treturn getDiffHunksRendererOptions(options);\n\t}\n\tcreateHunksRenderer(options) {\n\t\treturn new DiffHunksRenderer(this.getHunksRendererOptions(options), this.handleHighlightRender, this.workerManager);\n\t}\n\tgetLineIndex = (lineNumber, side = \"additions\") => {\n\t\tif (this.fileDiff == null) return;\n\t\tconst lastHunk = this.fileDiff.hunks.at(-1);\n\t\tlet targetUnifiedIndex;\n\t\tlet targetSplitIndex;\n\t\thunkIterator: for (const hunk of this.fileDiff.hunks) {\n\t\t\tlet currentLineNumber = side === \"deletions\" ? hunk.deletionStart : hunk.additionStart;\n\t\t\tconst hunkCount = side === \"deletions\" ? hunk.deletionCount : hunk.additionCount;\n\t\t\tlet splitIndex = hunk.splitLineStart;\n\t\t\tlet unifiedIndex = hunk.unifiedLineStart;\n\t\t\tif (lineNumber < currentLineNumber) {\n\t\t\t\tconst difference = currentLineNumber - lineNumber;\n\t\t\t\ttargetUnifiedIndex = Math.max(unifiedIndex - difference, 0);\n\t\t\t\ttargetSplitIndex = Math.max(splitIndex - difference, 0);\n\t\t\t\tbreak hunkIterator;\n\t\t\t}\n\t\t\tif (lineNumber >= currentLineNumber + hunkCount) {\n\t\t\t\tif (hunk === lastHunk) {\n\t\t\t\t\tconst difference = lineNumber - (currentLineNumber + hunkCount);\n\t\t\t\t\ttargetUnifiedIndex = unifiedIndex + hunk.unifiedLineCount + difference;\n\t\t\t\t\ttargetSplitIndex = splitIndex + hunk.splitLineCount + difference;\n\t\t\t\t\tbreak hunkIterator;\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tfor (const content of hunk.hunkContent) if (content.type === \"context\") if (lineNumber < currentLineNumber + content.lines) {\n\t\t\t\tconst difference = lineNumber - currentLineNumber;\n\t\t\t\ttargetSplitIndex = splitIndex + difference;\n\t\t\t\ttargetUnifiedIndex = unifiedIndex + difference;\n\t\t\t\tbreak hunkIterator;\n\t\t\t} else {\n\t\t\t\tcurrentLineNumber += content.lines;\n\t\t\t\tsplitIndex += content.lines;\n\t\t\t\tunifiedIndex += content.lines;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconst sideCount = side === \"deletions\" ? content.deletions : content.additions;\n\t\t\t\tif (lineNumber < currentLineNumber + sideCount) {\n\t\t\t\t\tconst indexDifference = lineNumber - currentLineNumber;\n\t\t\t\t\ttargetUnifiedIndex = unifiedIndex + (side === \"additions\" ? content.deletions : 0) + indexDifference;\n\t\t\t\t\ttargetSplitIndex = splitIndex + indexDifference;\n\t\t\t\t\tbreak hunkIterator;\n\t\t\t\t} else {\n\t\t\t\t\tcurrentLineNumber += sideCount;\n\t\t\t\t\tsplitIndex += Math.max(content.deletions, content.additions);\n\t\t\t\t\tunifiedIndex += content.deletions + content.additions;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak hunkIterator;\n\t\t}\n\t\tif (targetUnifiedIndex == null || targetSplitIndex == null) return;\n\t\treturn [targetUnifiedIndex, targetSplitIndex];\n\t};\n\tsetOptions(options) {\n\t\tif (options == null) return;\n\t\tthis.options = options;\n\t\tthis.cachedHeaderHTML = void 0;\n\t\tthis.hunksRenderer.setOptions(this.getHunksRendererOptions(options));\n\t\tthis.syncInteractionOptions();\n\t}\n\tsyncInteractionOptions() {\n\t\tthis.interactionManager.setOptions(pluckInteractionOptions(this.options, typeof this.options.hunkSeparators === \"function\" || (this.options.hunkSeparators ?? \"line-info\") === \"line-info\" || this.options.hunkSeparators === \"line-info-basic\" ? this.handleExpandHunk : void 0, this.getLineIndex));\n\t}\n\tmergeOptions(options) {\n\t\tthis.options = {\n\t\t\t...this.options,\n\t\t\t...options\n\t\t};\n\t}\n\tsetThemeType(themeType) {\n\t\tif ((this.options.themeType ?? \"system\") === themeType) return;\n\t\tthis.mergeOptions({ themeType });\n\t\tthis.applyCachedThemeState(themeType);\n\t}\n\tapplyCachedThemeState(themeType) {\n\t\tif (typeof this.options.theme === \"string\" || this.fileContainer == null || this.appliedThemeCSS == null) return false;\n\t\tconst effectiveThemeType = this.appliedThemeCSS.baseThemeType ?? themeType;\n\t\tif (this.appliedThemeCSS.themeType === effectiveThemeType) return false;\n\t\tthis.applyThemeState(this.fileContainer, this.appliedThemeCSS.themeStyles, themeType, this.appliedThemeCSS.baseThemeType);\n\t\treturn true;\n\t}\n\thasThemeChanged() {\n\t\treturn this.appliedThemeCSS != null && !areThemesEqual(this.appliedThemeCSS.theme, this.options.theme ?? DEFAULT_THEMES);\n\t}\n\tgetHoveredLine = () => {\n\t\treturn this.interactionManager.getHoveredLine();\n\t};\n\tsetLineAnnotations(lineAnnotations) {\n\t\tthis.lineAnnotations = lineAnnotations;\n\t}\n\tcanPartiallyRender(forceRender, annotationsChanged, didContentChange) {\n\t\tif (forceRender || annotationsChanged || didContentChange || typeof this.options.hunkSeparators === \"function\") return false;\n\t\treturn true;\n\t}\n\tsetSelectedLines(range, options) {\n\t\tthis.interactionManager.setSelection(range, options);\n\t}\n\tflushManagers() {\n\t\tif (!this.managersDirty || this.pre == null) {\n\t\t\tthis.managersDirty = false;\n\t\t\treturn;\n\t\t}\n\t\tconst { diffStyle = \"split\", overflow = \"scroll\" } = this.options;\n\t\tthis.interactionManager.setup(this.pre);\n\t\tthis.resizeManager.setup(this.pre, overflow === \"wrap\");\n\t\tif (overflow === \"scroll\" && diffStyle === \"split\") this.scrollSyncManager.setup(this.pre, this.codeDeletions, this.codeAdditions);\n\t\telse this.scrollSyncManager.cleanUp();\n\t\tthis.managersDirty = false;\n\t}\n\tcleanUp(recycle = false) {\n\t\tthis.emitPostRender(true);\n\t\tthis.resizeManager.cleanUp();\n\t\tthis.interactionManager.cleanUp();\n\t\tthis.scrollSyncManager.cleanUp();\n\t\tthis.managersDirty = false;\n\t\tthis.workerManager?.unsubscribeToThemeChanges(this);\n\t\tthis.renderRange = void 0;\n\t\tif (!this.isContainerManaged) this.fileContainer?.remove();\n\t\tthis.fileContainer = void 0;\n\t\tthis.mounted = false;\n\t\tif (!recycle) this.lineAnnotations = [];\n\t\tthis.clearAuxiliaryNodes();\n\t\tthis.annotationCache.clear();\n\t\tthis.pre = void 0;\n\t\tthis.codeUnified = void 0;\n\t\tthis.codeDeletions = void 0;\n\t\tthis.codeAdditions = void 0;\n\t\tthis.bufferBefore = void 0;\n\t\tthis.bufferAfter = void 0;\n\t\tthis.appliedPreAttributes = void 0;\n\t\tthis.headerElement = void 0;\n\t\tthis.headerPrefix = void 0;\n\t\tthis.headerMetadata = void 0;\n\t\tthis.headerCustom = void 0;\n\t\tthis.placeHolder = void 0;\n\t\tthis.lastRenderedHeaderHTML = void 0;\n\t\tif (!recycle) this.cachedHeaderHTML = void 0;\n\t\tthis.errorWrapper = void 0;\n\t\tthis.spriteSVG = void 0;\n\t\tthis.lastRowCount = void 0;\n\t\tthis.themeCSSStyle = void 0;\n\t\tthis.appliedThemeCSS = void 0;\n\t\tthis.hasAdoptedThemeCSS = false;\n\t\tthis.unsafeCSSStyle = void 0;\n\t\tthis.appliedUnsafeCSS = void 0;\n\t\tif (recycle) this.hunksRenderer.recycle();\n\t\telse {\n\t\t\tthis.hunksRenderer.cleanUp();\n\t\t\tthis.workerManager = void 0;\n\t\t\tthis.fileDiff = void 0;\n\t\t\tthis.deletionFile = void 0;\n\t\t\tthis.additionFile = void 0;\n\t\t}\n\t\tthis.enabled = false;\n\t}\n\tvirtualizedSetup() {\n\t\tthis.enabled = true;\n\t\tthis.workerManager?.subscribeToThemeChanges(this);\n\t}\n\thydrate(props) {\n\t\tconst { fileContainer, prerenderedHTML, preventEmit = false, lineAnnotations, oldFile, newFile, fileDiff } = props;\n\t\tthis.hydrateElements(fileContainer, prerenderedHTML);\n\t\tif (shouldRenderCode(this.pre, hasDiffContent({\n\t\t\tfileDiff,\n\t\t\toldFile,\n\t\t\tnewFile\n\t\t}), this.options.collapsed) || shouldRenderHeader(this.headerElement, hasDiffHeaderContent({\n\t\t\tfileDiff,\n\t\t\toldFile,\n\t\t\tnewFile\n\t\t}), this.options.disableFileHeader)) this.render({\n\t\t\t...props,\n\t\t\tpreventEmit: true\n\t\t});\n\t\telse this.hydrationSetup({\n\t\t\tfileDiff,\n\t\t\toldFile,\n\t\t\tnewFile,\n\t\t\tlineAnnotations\n\t\t});\n\t\tif (!preventEmit) this.emitPostRender();\n\t}\n\thydrateElements(fileContainer, prerenderedHTML) {\n\t\tif (this.fileContainer !== fileContainer) this.emitPostRender(true);\n\t\tprerenderHTMLIfNecessary(fileContainer, prerenderedHTML);\n\t\tfor (const element of fileContainer.shadowRoot?.children ?? []) {\n\t\t\tif (element instanceof SVGElement) {\n\t\t\t\tthis.spriteSVG = element;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!(element instanceof HTMLElement)) continue;\n\t\t\tif (element instanceof HTMLPreElement) {\n\t\t\t\tthis.pre = element;\n\t\t\t\tfor (const code of element.children) {\n\t\t\t\t\tif (!(code instanceof HTMLElement) || code.tagName.toLowerCase() !== \"code\") continue;\n\t\t\t\t\tif (\"deletions\" in code.dataset) this.codeDeletions = code;\n\t\t\t\t\tif (\"additions\" in code.dataset) this.codeAdditions = code;\n\t\t\t\t\tif (\"unified\" in code.dataset) this.codeUnified = code;\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (\"diffsHeader\" in element.dataset) {\n\t\t\t\tthis.headerElement = element;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (element instanceof HTMLStyleElement && element.hasAttribute(\"data-theme-css\")) {\n\t\t\t\tthis.themeCSSStyle = element;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (element instanceof HTMLStyleElement && element.hasAttribute(\"data-unsafe-css\")) {\n\t\t\t\tthis.unsafeCSSStyle = element;\n\t\t\t\tthis.appliedUnsafeCSS = element.textContent;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\tif (this.pre != null) {\n\t\t\tthis.syncCodeNodesFromPre(this.pre);\n\t\t\tthis.pre.removeAttribute(\"data-dehydrated\");\n\t\t}\n\t\tthis.fileContainer = fileContainer;\n\t\tthis.hydrateMeasuredScrollbar();\n\t}\n\thydrationSetup({ fileDiff, oldFile, newFile, lineAnnotations }) {\n\t\tthis.lineAnnotations = lineAnnotations ?? this.lineAnnotations;\n\t\tthis.additionFile = newFile;\n\t\tthis.deletionFile = oldFile;\n\t\tthis.fileDiff = fileDiff ?? (oldFile != null && newFile != null ? parseDiffFromFile(oldFile, newFile, this.options.parseDiffOptions) : void 0);\n\t\tif (this.pre == null) return;\n\t\tthis.syncInteractionOptions();\n\t\tthis.hunksRenderer.hydrate(this.fileDiff);\n\t\tthis.renderAnnotations();\n\t\tthis.renderGutterUtility();\n\t\tthis.injectUnsafeCSS();\n\t\tthis.managersDirty = true;\n\t\tthis.flushManagers();\n\t}\n\trerender() {\n\t\tif (!this.enabled || this.fileDiff == null && this.additionFile == null && this.deletionFile == null) return;\n\t\tthis.render({\n\t\t\tforceRender: true,\n\t\t\trenderRange: this.renderRange\n\t\t});\n\t}\n\tonThemeChange() {\n\t\tthis.hunksRenderer.clearRenderCache();\n\t\tthis.rerender();\n\t}\n\thandleExpandHunk = (hunkIndex, direction, expansionLineCountOverride) => {\n\t\tthis.expandHunk(hunkIndex, direction, expansionLineCountOverride);\n\t};\n\texpandHunk = (hunkIndex, direction, expansionLineCountOverride) => {\n\t\tthis.hunksRenderer.expandHunk(hunkIndex, direction, expansionLineCountOverride);\n\t\tthis.rerender();\n\t};\n\trender({ oldFile, newFile, fileDiff, deferManagers = false, forceRender = false, preventEmit = false, lineAnnotations, fileContainer, containerWrapper, renderRange }) {\n\t\tif (!this.enabled) throw new Error(\"FileDiff.render: attempting to call render after cleaned up\");\n\t\tconst { collapsed = false, themeType = \"system\" } = this.options;\n\t\tconst nextRenderRange = collapsed ? void 0 : renderRange;\n\t\tconst themeChanged = this.hasThemeChanged();\n\t\tconst filesDidChange = oldFile != null && newFile != null && (!areFilesEqual(oldFile, this.deletionFile) || !areFilesEqual(newFile, this.additionFile));\n\t\tlet diffDidChange = fileDiff != null && fileDiff !== this.fileDiff;\n\t\tconst annotationsChanged = lineAnnotations != null && (lineAnnotations.length > 0 || this.lineAnnotations.length > 0) ? lineAnnotations !== this.lineAnnotations : false;\n\t\tif (!collapsed && areRenderRangesEqual(nextRenderRange, this.renderRange) && !forceRender && !annotationsChanged && !themeChanged && (fileDiff != null && fileDiff === this.fileDiff || fileDiff == null && !filesDidChange)) return this.applyCachedThemeState(themeType);\n\t\tconst { renderRange: previousRenderRange } = this;\n\t\tthis.renderRange = nextRenderRange;\n\t\tthis.deletionFile = oldFile;\n\t\tthis.additionFile = newFile;\n\t\tif (fileDiff != null) this.fileDiff = fileDiff;\n\t\telse if (oldFile != null && newFile != null && filesDidChange) {\n\t\t\tdiffDidChange = true;\n\t\t\tthis.fileDiff = parseDiffFromFile(oldFile, newFile, this.options.parseDiffOptions);\n\t\t}\n\t\tif (diffDidChange) this.cachedHeaderHTML = void 0;\n\t\tif (lineAnnotations != null) this.setLineAnnotations(lineAnnotations);\n\t\tif (this.fileDiff == null) return false;\n\t\tthis.hunksRenderer.setOptions(this.getHunksRendererOptions(this.options));\n\t\tthis.syncInteractionOptions();\n\t\tthis.hunksRenderer.setLineAnnotations(this.lineAnnotations);\n\t\tconst { disableErrorHandling = false, disableFileHeader = false } = this.options;\n\t\tif (disableFileHeader) {\n\t\t\tif (this.headerElement != null) {\n\t\t\t\tthis.headerElement.remove();\n\t\t\t\tthis.headerElement = void 0;\n\t\t\t\tthis.lastRenderedHeaderHTML = void 0;\n\t\t\t}\n\t\t\tthis.clearHeaderSlots();\n\t\t}\n\t\tfileContainer = this.getOrCreateFileContainer(fileContainer, containerWrapper);\n\t\tthis.applyCachedThemeState(themeType);\n\t\tif (collapsed) {\n\t\t\tthis.removeRenderedCode();\n\t\t\tthis.clearAuxiliaryNodes();\n\t\t\ttry {\n\t\t\t\tconst hunksResult = this.hunksRenderer.renderDiff(this.fileDiff, EMPTY_RENDER_RANGE);\n\t\t\t\tif (hunksResult != null) this.applyThemeState(fileContainer, hunksResult.themeStyles, themeType, hunksResult.baseThemeType);\n\t\t\t\tif (hunksResult?.headerElement != null) this.applyHeaderToDOM(hunksResult.headerElement, fileContainer);\n\t\t\t\tthis.renderSeparators([]);\n\t\t\t\tthis.injectUnsafeCSS();\n\t\t\t} catch (error) {\n\t\t\t\tif (disableErrorHandling) throw error;\n\t\t\t\tconsole.error(error);\n\t\t\t\tif (error instanceof Error) this.applyErrorToDOM(error, fileContainer);\n\t\t\t}\n\t\t\tif (!preventEmit) this.emitPostRender();\n\t\t\treturn true;\n\t\t}\n\t\ttry {\n\t\t\tconst pre = this.getOrCreatePreNode(fileContainer);\n\t\t\tif (!(this.canPartiallyRender(forceRender, annotationsChanged, filesDidChange || diffDidChange || themeChanged) && this.applyPartialRender({\n\t\t\t\tpreviousRenderRange,\n\t\t\t\trenderRange: nextRenderRange\n\t\t\t}))) {\n\t\t\t\tconst hunksResult = this.hunksRenderer.renderDiff(this.fileDiff, nextRenderRange);\n\t\t\t\tif (hunksResult == null) {\n\t\t\t\t\tif (this.workerManager?.isInitialized() === false) this.workerManager.initialize().then(() => this.rerender());\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tthis.applyThemeState(fileContainer, hunksResult.themeStyles, themeType, hunksResult.baseThemeType);\n\t\t\t\tif (hunksResult.headerElement != null) this.applyHeaderToDOM(hunksResult.headerElement, fileContainer);\n\t\t\t\tif (hunksResult.additionsContentAST != null || hunksResult.deletionsContentAST != null || hunksResult.unifiedContentAST != null) this.applyHunksToDOM(pre, hunksResult);\n\t\t\t\telse if (this.pre != null) {\n\t\t\t\t\tthis.pre.remove();\n\t\t\t\t\tthis.pre = void 0;\n\t\t\t\t}\n\t\t\t\tthis.renderSeparators(hunksResult.hunkData);\n\t\t\t}\n\t\t\tthis.applyBuffers(pre, nextRenderRange);\n\t\t\tthis.injectUnsafeCSS();\n\t\t\tthis.renderAnnotations();\n\t\t\tthis.renderGutterUtility();\n\t\t\tthis.managersDirty = true;\n\t\t\tif (!deferManagers) this.flushManagers();\n\t\t} catch (error) {\n\t\t\tif (disableErrorHandling) throw error;\n\t\t\tconsole.error(error);\n\t\t\tif (error instanceof Error) this.applyErrorToDOM(error, fileContainer);\n\t\t}\n\t\tif (!preventEmit) this.emitPostRender();\n\t\treturn true;\n\t}\n\temitPostRender(unmount = false) {\n\t\tconst { fileContainer, options: { onPostRender } } = this;\n\t\tif (unmount) {\n\t\t\tif (!this.mounted) return;\n\t\t\tthis.mounted = false;\n\t\t\tif (fileContainer == null) return;\n\t\t\tthis.options.onPostRender?.(fileContainer, this, \"unmount\");\n\t\t\treturn;\n\t\t}\n\t\tif (fileContainer == null) return;\n\t\tconst phase = this.mounted ? \"update\" : \"mount\";\n\t\tthis.mounted = true;\n\t\tonPostRender?.(fileContainer, this, phase);\n\t}\n\tremoveRenderedCode() {\n\t\tthis.resizeManager.cleanUp();\n\t\tthis.scrollSyncManager.cleanUp();\n\t\tthis.interactionManager.cleanUp();\n\t\tthis.bufferBefore?.remove();\n\t\tthis.bufferBefore = void 0;\n\t\tthis.bufferAfter?.remove();\n\t\tthis.bufferAfter = void 0;\n\t\tthis.codeUnified?.remove();\n\t\tthis.codeUnified = void 0;\n\t\tthis.codeDeletions?.remove();\n\t\tthis.codeDeletions = void 0;\n\t\tthis.codeAdditions?.remove();\n\t\tthis.codeAdditions = void 0;\n\t\tthis.pre?.remove();\n\t\tthis.pre = void 0;\n\t\tthis.appliedPreAttributes = void 0;\n\t\tthis.lastRowCount = void 0;\n\t}\n\tclearAuxiliaryNodes() {\n\t\tfor (const { element } of this.separatorCache.values()) element.remove();\n\t\tthis.separatorCache.clear();\n\t\tfor (const { element } of this.annotationCache.values()) element.remove();\n\t\tthis.annotationCache.clear();\n\t\tthis.gutterUtilityContent?.remove();\n\t\tthis.gutterUtilityContent = void 0;\n\t}\n\trenderPlaceholder(height) {\n\t\tif (this.fileContainer == null) return false;\n\t\tthis.emitPostRender(true);\n\t\tthis.cleanChildNodes();\n\t\tif (this.placeHolder == null) {\n\t\t\tconst shadowRoot = this.fileContainer.shadowRoot ?? this.fileContainer.attachShadow({ mode: \"open\" });\n\t\t\tthis.placeHolder = document.createElement(\"div\");\n\t\t\tthis.placeHolder.dataset.placeholder = \"\";\n\t\t\tshadowRoot.appendChild(this.placeHolder);\n\t\t}\n\t\tthis.placeHolder.style.setProperty(\"height\", `${height}px`);\n\t\treturn true;\n\t}\n\tprimeHighlightCache() {\n\t\tconst { fileDiff, workerManager } = this;\n\t\tif (fileDiff == null || workerManager == null || isDiffPlainText(fileDiff)) return;\n\t\tconst tokenizeMaxLength = this.options.tokenizeMaxLength ?? 1e5;\n\t\tif (Math.max(fileDiff.additionLines.length, fileDiff.deletionLines.length) > tokenizeMaxLength) return;\n\t\tworkerManager.primeDiffHighlightCache(fileDiff);\n\t}\n\tcleanChildNodes() {\n\t\tthis.resizeManager.cleanUp();\n\t\tthis.scrollSyncManager.cleanUp();\n\t\tthis.interactionManager.cleanUp();\n\t\tthis.clearAuxiliaryNodes();\n\t\tthis.bufferAfter?.remove();\n\t\tthis.bufferBefore?.remove();\n\t\tthis.codeAdditions?.remove();\n\t\tthis.codeDeletions?.remove();\n\t\tthis.codeUnified?.remove();\n\t\tthis.errorWrapper?.remove();\n\t\tthis.headerElement?.remove();\n\t\tthis.headerPrefix?.remove();\n\t\tthis.headerMetadata?.remove();\n\t\tthis.headerCustom?.remove();\n\t\tthis.pre?.remove();\n\t\tthis.spriteSVG?.remove();\n\t\tthis.themeCSSStyle?.remove();\n\t\tthis.unsafeCSSStyle?.remove();\n\t\tthis.bufferAfter = void 0;\n\t\tthis.bufferBefore = void 0;\n\t\tthis.codeAdditions = void 0;\n\t\tthis.codeDeletions = void 0;\n\t\tthis.codeUnified = void 0;\n\t\tthis.errorWrapper = void 0;\n\t\tthis.headerElement = void 0;\n\t\tthis.headerPrefix = void 0;\n\t\tthis.headerMetadata = void 0;\n\t\tthis.headerCustom = void 0;\n\t\tthis.pre = void 0;\n\t\tthis.spriteSVG = void 0;\n\t\tthis.themeCSSStyle = void 0;\n\t\tthis.appliedThemeCSS = void 0;\n\t\tthis.hasAdoptedThemeCSS = false;\n\t\tthis.unsafeCSSStyle = void 0;\n\t\tthis.appliedUnsafeCSS = void 0;\n\t\tthis.lastRenderedHeaderHTML = void 0;\n\t\tthis.lastRowCount = void 0;\n\t\tthis.mounted = false;\n\t}\n\trenderSeparators(hunkData) {\n\t\tconst { hunkSeparators } = this.options;\n\t\tif (this.isContainerManaged || this.fileContainer == null || typeof hunkSeparators !== \"function\") {\n\t\t\tfor (const { element } of this.separatorCache.values()) element.remove();\n\t\t\tthis.separatorCache.clear();\n\t\t\treturn;\n\t\t}\n\t\tconst staleSeparators = new Map(this.separatorCache);\n\t\tfor (const hunk of hunkData) {\n\t\t\tconst id = hunk.slotName;\n\t\t\tlet cache = this.separatorCache.get(id);\n\t\t\tif (cache == null || !areHunkDataEqual(hunk, cache.hunkData)) {\n\t\t\t\tcache?.element.remove();\n\t\t\t\tconst element = document.createElement(\"div\");\n\t\t\t\telement.style.display = \"contents\";\n\t\t\t\telement.slot = hunk.slotName;\n\t\t\t\tconst child = hunkSeparators(hunk, this);\n\t\t\t\tif (child != null) element.appendChild(child);\n\t\t\t\tthis.fileContainer.appendChild(element);\n\t\t\t\tcache = {\n\t\t\t\t\telement,\n\t\t\t\t\thunkData: hunk\n\t\t\t\t};\n\t\t\t\tthis.separatorCache.set(id, cache);\n\t\t\t}\n\t\t\tstaleSeparators.delete(id);\n\t\t}\n\t\tfor (const [id, { element }] of staleSeparators.entries()) {\n\t\t\tthis.separatorCache.delete(id);\n\t\t\telement.remove();\n\t\t}\n\t}\n\trenderAnnotations() {\n\t\tif (this.isContainerManaged || this.fileContainer == null) {\n\t\t\tfor (const { element } of this.annotationCache.values()) element.remove();\n\t\t\tthis.annotationCache.clear();\n\t\t\treturn;\n\t\t}\n\t\tconst staleAnnotations = new Map(this.annotationCache);\n\t\tconst { renderAnnotation } = this.options;\n\t\tif (renderAnnotation != null && this.lineAnnotations.length > 0) for (const [index, annotation] of this.lineAnnotations.entries()) {\n\t\t\tconst id = `${index}-${getLineAnnotationName(annotation)}`;\n\t\t\tlet cache = this.annotationCache.get(id);\n\t\t\tif (cache == null || !areDiffLineAnnotationsEqual(annotation, cache.annotation)) {\n\t\t\t\tcache?.element.remove();\n\t\t\t\tconst content = renderAnnotation(annotation);\n\t\t\t\tif (content == null) continue;\n\t\t\t\tcache = {\n\t\t\t\t\telement: createAnnotationWrapperNode(getLineAnnotationName(annotation)),\n\t\t\t\t\tannotation\n\t\t\t\t};\n\t\t\t\tcache.element.appendChild(content);\n\t\t\t\tthis.fileContainer.appendChild(cache.element);\n\t\t\t\tthis.annotationCache.set(id, cache);\n\t\t\t}\n\t\t\tstaleAnnotations.delete(id);\n\t\t}\n\t\tfor (const [id, { element }] of staleAnnotations.entries()) {\n\t\t\tthis.annotationCache.delete(id);\n\t\t\telement.remove();\n\t\t}\n\t}\n\trenderGutterUtility() {\n\t\tconst { renderGutterUtility } = this.options;\n\t\tif (this.fileContainer == null || renderGutterUtility == null) {\n\t\t\tthis.gutterUtilityContent?.remove();\n\t\t\tthis.gutterUtilityContent = void 0;\n\t\t\treturn;\n\t\t}\n\t\tconst element = renderGutterUtility(this.interactionManager.getHoveredLine);\n\t\tif (element != null && this.gutterUtilityContent != null) return;\n\t\telse if (element == null) {\n\t\t\tthis.gutterUtilityContent?.remove();\n\t\t\tthis.gutterUtilityContent = void 0;\n\t\t\treturn;\n\t\t}\n\t\tconst gutterUtilityContent = createGutterUtilityContentNode();\n\t\tgutterUtilityContent.appendChild(element);\n\t\tthis.fileContainer.appendChild(gutterUtilityContent);\n\t\tthis.gutterUtilityContent = gutterUtilityContent;\n\t}\n\tgetOrCreateFileContainer(fileContainer, parentNode) {\n\t\tconst { fileContainer: previousContainer } = this;\n\t\tconst nextContainer = fileContainer ?? previousContainer ?? document.createElement(\"diffs-container\");\n\t\tconst containerChanged = previousContainer !== nextContainer;\n\t\tif (containerChanged) this.emitPostRender(true);\n\t\tthis.fileContainer = nextContainer;\n\t\tif (previousContainer != null && containerChanged) {\n\t\t\tthis.lastRenderedHeaderHTML = void 0;\n\t\t\tthis.headerElement = void 0;\n\t\t}\n\t\tif (parentNode != null && this.fileContainer.parentNode !== parentNode) parentNode.appendChild(this.fileContainer);\n\t\tif (containerChanged) this.adoptReusableShellElements(this.fileContainer);\n\t\tthis.ensureSpriteSVG(this.fileContainer);\n\t\treturn this.fileContainer;\n\t}\n\tadoptReusableShellElements(fileContainer) {\n\t\tconst { shadowRoot } = fileContainer;\n\t\tif (shadowRoot == null) return;\n\t\tfor (const element of shadowRoot.children) if (element instanceof SVGElement) this.spriteSVG ??= element;\n\t\telse if (isStyleNode(element) && element.hasAttribute(\"data-theme-css\")) {\n\t\t\tthis.themeCSSStyle ??= element;\n\t\t\tthis.hasAdoptedThemeCSS = true;\n\t\t} else if (isStyleNode(element) && element.hasAttribute(\"data-unsafe-css\")) {\n\t\t\tthis.unsafeCSSStyle ??= element;\n\t\t\tthis.appliedUnsafeCSS ??= this.options.unsafeCSS ?? void 0;\n\t\t}\n\t}\n\tensureSpriteSVG(fileContainer) {\n\t\tconst shadowRoot = fileContainer.shadowRoot ?? fileContainer.attachShadow({ mode: \"open\" });\n\t\tif (this.spriteSVG == null) {\n\t\t\tconst fragment = document.createElement(\"div\");\n\t\t\tfragment.innerHTML = SVGSpriteSheet;\n\t\t\tconst firstChild = fragment.firstChild;\n\t\t\tif (firstChild instanceof SVGElement) this.spriteSVG = firstChild;\n\t\t}\n\t\tif (this.spriteSVG != null && this.spriteSVG.parentNode !== shadowRoot) shadowRoot.appendChild(this.spriteSVG);\n\t}\n\tgetOrCreatePreNode(container) {\n\t\tconst shadowRoot = container.shadowRoot ?? container.attachShadow({ mode: \"open\" });\n\t\tif (this.pre == null) {\n\t\t\tthis.pre = document.createElement(\"pre\");\n\t\t\tthis.appliedPreAttributes = void 0;\n\t\t\tthis.codeUnified = void 0;\n\t\t\tthis.codeDeletions = void 0;\n\t\t\tthis.codeAdditions = void 0;\n\t\t\tshadowRoot.appendChild(this.pre);\n\t\t} else if (this.pre.parentNode !== shadowRoot) {\n\t\t\tshadowRoot.appendChild(this.pre);\n\t\t\tthis.appliedPreAttributes = void 0;\n\t\t}\n\t\tthis.placeHolder?.remove();\n\t\tthis.placeHolder = void 0;\n\t\treturn this.pre;\n\t}\n\tsyncCodeNodesFromPre(pre) {\n\t\tthis.codeUnified = void 0;\n\t\tthis.codeDeletions = void 0;\n\t\tthis.codeAdditions = void 0;\n\t\tfor (const child of Array.from(pre.children)) {\n\t\t\tif (!(child instanceof HTMLElement)) continue;\n\t\t\tif (child.hasAttribute(\"data-unified\")) this.codeUnified = child;\n\t\t\telse if (child.hasAttribute(\"data-deletions\")) this.codeDeletions = child;\n\t\t\telse if (child.hasAttribute(\"data-additions\")) this.codeAdditions = child;\n\t\t}\n\t}\n\tapplyHeaderToDOM(headerAST, container) {\n\t\tthis.cleanupErrorWrapper();\n\t\tthis.placeHolder?.remove();\n\t\tthis.placeHolder = void 0;\n\t\tconst { fileDiff } = this;\n\t\tconst headerHTML = this.cachedHeaderHTML ?? toHtml(headerAST);\n\t\tthis.cachedHeaderHTML = headerHTML;\n\t\tif (headerHTML !== this.lastRenderedHeaderHTML) {\n\t\t\tconst tempDiv = document.createElement(\"div\");\n\t\t\ttempDiv.innerHTML = headerHTML;\n\t\t\tconst newHeader = tempDiv.firstElementChild;\n\t\t\tif (!(newHeader instanceof HTMLElement)) return;\n\t\t\tif (this.headerElement != null) container.shadowRoot?.replaceChild(newHeader, this.headerElement);\n\t\t\telse container.shadowRoot?.prepend(newHeader);\n\t\t\tthis.headerElement = newHeader;\n\t\t\tthis.lastRenderedHeaderHTML = headerHTML;\n\t\t}\n\t\tif (this.isContainerManaged || fileDiff == null) return;\n\t\tconst { renderCustomHeader, renderHeaderPrefix, renderHeaderMetadata } = this.options;\n\t\tif (renderCustomHeader != null) {\n\t\t\tconst content = renderCustomHeader(fileDiff) ?? void 0;\n\t\t\tthis.headerCustom = this.upsertHeaderSlotElement(container, this.headerCustom, CUSTOM_HEADER_SLOT_ID, content);\n\t\t\tthis.headerPrefix?.remove();\n\t\t\tthis.headerMetadata?.remove();\n\t\t\tthis.headerPrefix = void 0;\n\t\t\tthis.headerMetadata = void 0;\n\t\t\treturn;\n\t\t}\n\t\tconst prefix = renderHeaderPrefix?.(fileDiff) ?? void 0;\n\t\tconst content = renderHeaderMetadata?.(fileDiff) ?? void 0;\n\t\tthis.headerPrefix = this.upsertHeaderSlotElement(container, this.headerPrefix, HEADER_PREFIX_SLOT_ID, prefix);\n\t\tthis.headerMetadata = this.upsertHeaderSlotElement(container, this.headerMetadata, HEADER_METADATA_SLOT_ID, content);\n\t\tthis.headerCustom?.remove();\n\t\tthis.headerCustom = void 0;\n\t}\n\tclearHeaderSlots() {\n\t\tthis.headerPrefix?.remove();\n\t\tthis.headerMetadata?.remove();\n\t\tthis.headerCustom?.remove();\n\t\tthis.headerPrefix = void 0;\n\t\tthis.headerMetadata = void 0;\n\t\tthis.headerCustom = void 0;\n\t}\n\tupsertHeaderSlotElement(container, current, slot, content) {\n\t\tif (content == null) {\n\t\t\tcurrent?.remove();\n\t\t\treturn;\n\t\t}\n\t\tconst element = current ?? this.createHeaderSlotElement(slot);\n\t\tif (current == null) container.appendChild(element);\n\t\tthis.replaceHeaderSlotContent(element, content);\n\t\treturn element;\n\t}\n\treplaceHeaderSlotContent(element, content) {\n\t\telement.replaceChildren();\n\t\tif (content instanceof Element) element.appendChild(content);\n\t\telse element.innerText = `${content}`;\n\t}\n\tcreateHeaderSlotElement(slot) {\n\t\tconst element = document.createElement(\"div\");\n\t\telement.slot = slot;\n\t\treturn element;\n\t}\n\tinjectUnsafeCSS() {\n\t\tconst { unsafeCSS } = this.options;\n\t\tconst shadowRoot = this.fileContainer?.shadowRoot;\n\t\tif (shadowRoot == null) return;\n\t\tif (unsafeCSS == null || unsafeCSS === \"\") {\n\t\t\tif (this.unsafeCSSStyle != null) {\n\t\t\t\tthis.unsafeCSSStyle.remove();\n\t\t\t\tthis.unsafeCSSStyle = void 0;\n\t\t\t}\n\t\t\tthis.appliedUnsafeCSS = void 0;\n\t\t\treturn;\n\t\t}\n\t\tif (this.unsafeCSSStyle?.parentNode === shadowRoot && this.appliedUnsafeCSS === unsafeCSS) return;\n\t\tthis.unsafeCSSStyle ??= createUnsafeCSSStyleNode();\n\t\tif (this.unsafeCSSStyle.parentNode !== shadowRoot) shadowRoot.appendChild(this.unsafeCSSStyle);\n\t\tthis.unsafeCSSStyle.textContent = wrapUnsafeCSS(unsafeCSS);\n\t\tthis.appliedUnsafeCSS = unsafeCSS;\n\t}\n\tapplyThemeState(container, themeStyles, themeType, baseThemeType) {\n\t\tconst shadowRoot = container.shadowRoot ?? container.attachShadow({ mode: \"open\" });\n\t\tconst effectiveThemeType = baseThemeType ?? themeType;\n\t\tconst currentTheme = this.options.theme ?? DEFAULT_THEMES;\n\t\tconst theme = typeof currentTheme === \"string\" ? currentTheme : { ...currentTheme };\n\t\tconst scrollbarGutter = getMeasuredScrollbarGutter(shadowRoot);\n\t\tif (this.themeCSSStyle?.parentNode === shadowRoot && this.appliedThemeCSS?.themeStyles === themeStyles && this.appliedThemeCSS.themeType === effectiveThemeType && this.appliedThemeCSS.scrollbarGutter === scrollbarGutter) {\n\t\t\tthis.appliedThemeCSS.theme = theme;\n\t\t\treturn;\n\t\t}\n\t\tif (this.hasAdoptedThemeCSS && this.themeCSSStyle?.parentNode === shadowRoot) {\n\t\t\tthis.hasAdoptedThemeCSS = false;\n\t\t\tthis.appliedThemeCSS = {\n\t\t\t\ttheme,\n\t\t\t\tthemeStyles,\n\t\t\t\tthemeType: effectiveThemeType,\n\t\t\t\tbaseThemeType,\n\t\t\t\tscrollbarGutter\n\t\t\t};\n\t\t\treturn;\n\t\t}\n\t\tthis.themeCSSStyle = upsertHostThemeStyle({\n\t\t\tshadowRoot,\n\t\t\tcurrentNode: this.themeCSSStyle,\n\t\t\tthemeCSS: wrapThemeCSS(themeStyles, effectiveThemeType, scrollbarGutter)\n\t\t});\n\t\tthis.appliedThemeCSS = this.themeCSSStyle != null ? {\n\t\t\ttheme,\n\t\t\tthemeStyles,\n\t\t\tthemeType: effectiveThemeType,\n\t\t\tbaseThemeType,\n\t\t\tscrollbarGutter\n\t\t} : void 0;\n\t}\n\thydrateMeasuredScrollbar() {\n\t\tconst shadowRoot = this.fileContainer?.shadowRoot;\n\t\tif (shadowRoot == null || this.themeCSSStyle == null) return;\n\t\tthis.themeCSSStyle.textContent = patchScrollbarGutterSize(this.themeCSSStyle.textContent ?? \"\", getMeasuredScrollbarGutter(shadowRoot));\n\t}\n\tapplyHunksToDOM(pre, result) {\n\t\tconst { overflow = \"scroll\" } = this.options;\n\t\tconst containerSize = (this.options.hunkSeparators ?? \"line-info\") === \"line-info\";\n\t\tconst rowSpan = overflow === \"wrap\" ? result.rowCount : void 0;\n\t\tthis.cleanupErrorWrapper();\n\t\tthis.applyPreNodeAttributes(pre, result);\n\t\tlet shouldReplace = false;\n\t\tconst codeElements = [];\n\t\tconst unifiedAST = this.hunksRenderer.renderCodeAST(\"unified\", result);\n\t\tconst deletionsAST = this.hunksRenderer.renderCodeAST(\"deletions\", result);\n\t\tconst additionsAST = this.hunksRenderer.renderCodeAST(\"additions\", result);\n\t\tif (unifiedAST != null) {\n\t\t\tshouldReplace = this.codeUnified == null || this.codeAdditions != null || this.codeDeletions != null;\n\t\t\tthis.codeDeletions?.remove();\n\t\t\tthis.codeDeletions = void 0;\n\t\t\tthis.codeAdditions?.remove();\n\t\t\tthis.codeAdditions = void 0;\n\t\t\tthis.codeUnified = getOrCreateCodeNode({\n\t\t\t\tcode: this.codeUnified,\n\t\t\t\tcolumnType: \"unified\",\n\t\t\t\trowSpan,\n\t\t\t\tcontainerSize\n\t\t\t});\n\t\t\tthis.codeUnified.innerHTML = this.hunksRenderer.renderPartialHTML(unifiedAST);\n\t\t\tcodeElements.push(this.codeUnified);\n\t\t} else if (deletionsAST != null || additionsAST != null) {\n\t\t\tif (deletionsAST != null) {\n\t\t\t\tshouldReplace = this.codeDeletions == null || this.codeUnified != null;\n\t\t\t\tthis.codeUnified?.remove();\n\t\t\t\tthis.codeUnified = void 0;\n\t\t\t\tthis.codeDeletions = getOrCreateCodeNode({\n\t\t\t\t\tcode: this.codeDeletions,\n\t\t\t\t\tcolumnType: \"deletions\",\n\t\t\t\t\trowSpan,\n\t\t\t\t\tcontainerSize\n\t\t\t\t});\n\t\t\t\tthis.codeDeletions.innerHTML = this.hunksRenderer.renderPartialHTML(deletionsAST);\n\t\t\t\tcodeElements.push(this.codeDeletions);\n\t\t\t} else {\n\t\t\t\tthis.codeDeletions?.remove();\n\t\t\t\tthis.codeDeletions = void 0;\n\t\t\t}\n\t\t\tif (additionsAST != null) {\n\t\t\t\tshouldReplace = shouldReplace || this.codeAdditions == null || this.codeUnified != null;\n\t\t\t\tthis.codeUnified?.remove();\n\t\t\t\tthis.codeUnified = void 0;\n\t\t\t\tthis.codeAdditions = getOrCreateCodeNode({\n\t\t\t\t\tcode: this.codeAdditions,\n\t\t\t\t\tcolumnType: \"additions\",\n\t\t\t\t\trowSpan,\n\t\t\t\t\tcontainerSize\n\t\t\t\t});\n\t\t\t\tthis.codeAdditions.innerHTML = this.hunksRenderer.renderPartialHTML(additionsAST);\n\t\t\t\tcodeElements.push(this.codeAdditions);\n\t\t\t} else {\n\t\t\t\tthis.codeAdditions?.remove();\n\t\t\t\tthis.codeAdditions = void 0;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.codeUnified?.remove();\n\t\t\tthis.codeUnified = void 0;\n\t\t\tthis.codeDeletions?.remove();\n\t\t\tthis.codeDeletions = void 0;\n\t\t\tthis.codeAdditions?.remove();\n\t\t\tthis.codeAdditions = void 0;\n\t\t}\n\t\tif (codeElements.length === 0) pre.textContent = \"\";\n\t\telse if (shouldReplace) pre.replaceChildren(...codeElements);\n\t\tthis.lastRowCount = result.rowCount;\n\t}\n\tapplyPartialRender({ previousRenderRange, renderRange }) {\n\t\tconst { pre, codeUnified, codeAdditions, codeDeletions, options: { diffStyle = \"split\" } } = this;\n\t\tif (pre == null || previousRenderRange == null || renderRange == null || !Number.isFinite(previousRenderRange.totalLines) || !Number.isFinite(renderRange.totalLines) || this.lastRowCount == null) return false;\n\t\tconst codeElements = this.getCodeColumns(diffStyle, codeUnified, codeDeletions, codeAdditions);\n\t\tif (codeElements == null) return false;\n\t\tconst previousStart = previousRenderRange.startingLine;\n\t\tconst nextStart = renderRange.startingLine;\n\t\tconst previousEnd = previousStart + previousRenderRange.totalLines;\n\t\tconst nextEnd = nextStart + renderRange.totalLines;\n\t\tconst overlapStart = Math.max(previousStart, nextStart);\n\t\tconst overlapEnd = Math.min(previousEnd, nextEnd);\n\t\tif (overlapEnd <= overlapStart) return false;\n\t\tconst trimStart = Math.max(0, overlapStart - previousStart);\n\t\tconst trimEnd = Math.max(0, previousEnd - overlapEnd);\n\t\tconst trimResult = this.trimColumns({\n\t\t\tcolumns: codeElements,\n\t\t\ttrimStart,\n\t\t\ttrimEnd,\n\t\t\tpreviousStart,\n\t\t\toverlapStart,\n\t\t\toverlapEnd,\n\t\t\tdiffStyle\n\t\t});\n\t\tif (trimResult < 0) throw new Error(\"applyPartialRender: failed to trim to overlap\");\n\t\tif (this.lastRowCount < trimResult) throw new Error(\"applyPartialRender: trimmed beyond DOM row count\");\n\t\tlet rowCount = this.lastRowCount - trimResult;\n\t\tconst renderChunk = (startingLine, totalLines) => {\n\t\t\tif (totalLines <= 0 || this.fileDiff == null) return;\n\t\t\treturn this.hunksRenderer.renderDiff(this.fileDiff, {\n\t\t\t\tstartingLine,\n\t\t\t\ttotalLines,\n\t\t\t\tbufferBefore: 0,\n\t\t\t\tbufferAfter: 0\n\t\t\t});\n\t\t};\n\t\tconst prependResult = renderChunk(nextStart, Math.max(overlapStart - nextStart, 0));\n\t\tif (prependResult == null && nextStart < overlapStart) return false;\n\t\tconst appendResult = renderChunk(overlapEnd, Math.max(nextEnd - overlapEnd, 0));\n\t\tif (appendResult == null && nextEnd > overlapEnd) return false;\n\t\tconst applyChunk = (result, insertPosition) => {\n\t\t\tif (result == null) return;\n\t\t\tif (diffStyle === \"unified\" && !Array.isArray(codeElements)) this.insertPartialHTML(diffStyle, codeElements, result, insertPosition);\n\t\t\telse if (diffStyle === \"split\" && Array.isArray(codeElements)) this.insertPartialHTML(diffStyle, codeElements, result, insertPosition);\n\t\t\telse throw new Error(\"FileDiff.applyPartialRender.applyChunk: invalid chunk application\");\n\t\t\trowCount += result.rowCount;\n\t\t};\n\t\tthis.cleanupErrorWrapper();\n\t\tapplyChunk(prependResult, \"afterbegin\");\n\t\tapplyChunk(appendResult, \"beforeend\");\n\t\tif (this.lastRowCount !== rowCount) {\n\t\t\tthis.applyRowSpan(diffStyle, codeElements, rowCount);\n\t\t\tthis.lastRowCount = rowCount;\n\t\t}\n\t\treturn true;\n\t}\n\tinsertPartialHTML(diffStyle, columns, result, insertPosition) {\n\t\tif (diffStyle === \"unified\" && !Array.isArray(columns)) {\n\t\t\tconst unifiedAST = this.hunksRenderer.renderCodeAST(\"unified\", result);\n\t\t\tthis.renderPartialColumn(columns, unifiedAST, insertPosition);\n\t\t} else if (diffStyle === \"split\" && Array.isArray(columns)) {\n\t\t\tconst deletionsAST = this.hunksRenderer.renderCodeAST(\"deletions\", result);\n\t\t\tconst additionsAST = this.hunksRenderer.renderCodeAST(\"additions\", result);\n\t\t\tthis.renderPartialColumn(columns[0], deletionsAST, insertPosition);\n\t\t\tthis.renderPartialColumn(columns[1], additionsAST, insertPosition);\n\t\t} else throw new Error(\"FileDiff.insertPartialHTML: Invalid argument composition\");\n\t}\n\trenderPartialColumn(column, ast, insertPosition) {\n\t\tif (column == null || ast == null) return;\n\t\tconst gutterChildren = getElementChildren(ast[0]);\n\t\tconst contentChildren = getElementChildren(ast[1]);\n\t\tif (gutterChildren == null || contentChildren == null) throw new Error(\"FileDiff.insertPartialHTML: Unexpected AST structure\");\n\t\tconst firstHASTElement = contentChildren.at(0);\n\t\tif (insertPosition === \"beforeend\" && firstHASTElement?.type === \"element\" && typeof firstHASTElement.properties[\"data-buffer-size\"] === \"number\") this.mergeBuffersIfNecessary(firstHASTElement.properties[\"data-buffer-size\"], column.content.children[column.content.children.length - 1], column.gutter.children[column.gutter.children.length - 1], gutterChildren, contentChildren, true);\n\t\tconst lastHASTElement = contentChildren.at(-1);\n\t\tif (insertPosition === \"afterbegin\" && lastHASTElement?.type === \"element\" && typeof lastHASTElement.properties[\"data-buffer-size\"] === \"number\") this.mergeBuffersIfNecessary(lastHASTElement.properties[\"data-buffer-size\"], column.content.children[0], column.gutter.children[0], gutterChildren, contentChildren, false);\n\t\tcolumn.gutter.insertAdjacentHTML(insertPosition, this.hunksRenderer.renderPartialHTML(gutterChildren));\n\t\tcolumn.content.insertAdjacentHTML(insertPosition, this.hunksRenderer.renderPartialHTML(contentChildren));\n\t}\n\tmergeBuffersIfNecessary(adjustmentSize, contentElement, gutterElement, gutterChildren, contentChildren, fromStart) {\n\t\tif (!(contentElement instanceof HTMLElement) || !(gutterElement instanceof HTMLElement)) return;\n\t\tconst currentSize = this.getBufferSize(contentElement.dataset);\n\t\tif (currentSize == null) return;\n\t\tif (fromStart) {\n\t\t\tgutterChildren.shift();\n\t\t\tcontentChildren.shift();\n\t\t} else {\n\t\t\tgutterChildren.pop();\n\t\t\tcontentChildren.pop();\n\t\t}\n\t\tthis.updateBufferSize(contentElement, currentSize + adjustmentSize);\n\t\tthis.updateBufferSize(gutterElement, currentSize + adjustmentSize);\n\t}\n\tapplyRowSpan(diffStyle, columns, rowCount) {\n\t\tconst applySpan = (column) => {\n\t\t\tif (column == null) return;\n\t\t\tcolumn.gutter.style.setProperty(\"grid-row\", `span ${rowCount}`);\n\t\t\tcolumn.content.style.setProperty(\"grid-row\", `span ${rowCount}`);\n\t\t};\n\t\tif (diffStyle === \"unified\" && !Array.isArray(columns)) applySpan(columns);\n\t\telse if (diffStyle === \"split\" && Array.isArray(columns)) {\n\t\t\tapplySpan(columns[0]);\n\t\t\tapplySpan(columns[1]);\n\t\t} else throw new Error(\"dun fuuuuked up\");\n\t}\n\ttrimColumnRows(columns, preTrimCount, postTrimStart) {\n\t\tlet visibleLineIndex = 0;\n\t\tlet rowCount = 0;\n\t\tlet rowIndex = 0;\n\t\tlet pendingMetadataTrim = false;\n\t\tconst hasPostTrim = postTrimStart >= 0;\n\t\tif (columns == null) return 0;\n\t\tconst contentChildren = Array.from(columns.content.children);\n\t\tconst gutterChildren = Array.from(columns.gutter.children);\n\t\tif (contentChildren.length !== gutterChildren.length) throw new Error(\"FileDiff.trimColumnRows: columns do not match\");\n\t\twhile (rowIndex < contentChildren.length) {\n\t\t\tif (preTrimCount <= 0 && !hasPostTrim && !pendingMetadataTrim) break;\n\t\t\tconst gutterElement = gutterChildren[rowIndex];\n\t\t\tconst contentElement = contentChildren[rowIndex];\n\t\t\trowIndex++;\n\t\t\tif (!(gutterElement instanceof HTMLElement) || !(contentElement instanceof HTMLElement)) {\n\t\t\t\tconsole.error({\n\t\t\t\t\tgutterElement,\n\t\t\t\t\tcontentElement\n\t\t\t\t});\n\t\t\t\tthrow new Error(\"FileDiff.trimColumnRows: invalid row elements\");\n\t\t\t}\n\t\t\tif (pendingMetadataTrim) {\n\t\t\t\tpendingMetadataTrim = false;\n\t\t\t\tif (gutterElement.dataset.gutterBuffer === \"annotation\" && \"lineAnnotation\" in contentElement.dataset || gutterElement.dataset.gutterBuffer === \"metadata\" && \"noNewline\" in contentElement.dataset) {\n\t\t\t\t\tgutterElement.remove();\n\t\t\t\t\tcontentElement.remove();\n\t\t\t\t\trowCount++;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (\"lineIndex\" in gutterElement.dataset && \"lineIndex\" in contentElement.dataset) {\n\t\t\t\tif (preTrimCount > 0 || hasPostTrim && visibleLineIndex >= postTrimStart) {\n\t\t\t\t\tgutterElement.remove();\n\t\t\t\t\tcontentElement.remove();\n\t\t\t\t\tif (preTrimCount > 0) {\n\t\t\t\t\t\tpreTrimCount--;\n\t\t\t\t\t\tif (preTrimCount === 0) pendingMetadataTrim = true;\n\t\t\t\t\t}\n\t\t\t\t\trowCount++;\n\t\t\t\t}\n\t\t\t\tvisibleLineIndex++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (\"separator\" in gutterElement.dataset && \"separator\" in contentElement.dataset) {\n\t\t\t\tif (preTrimCount > 0 || hasPostTrim && visibleLineIndex >= postTrimStart) {\n\t\t\t\t\tgutterElement.remove();\n\t\t\t\t\tcontentElement.remove();\n\t\t\t\t\trowCount++;\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (gutterElement.dataset.gutterBuffer === \"annotation\" && \"lineAnnotation\" in contentElement.dataset) {\n\t\t\t\tif (preTrimCount > 0 || hasPostTrim && visibleLineIndex >= postTrimStart) {\n\t\t\t\t\tgutterElement.remove();\n\t\t\t\t\tcontentElement.remove();\n\t\t\t\t\trowCount++;\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (gutterElement.dataset.gutterBuffer === \"metadata\" && \"noNewline\" in contentElement.dataset) {\n\t\t\t\tif (preTrimCount > 0 || hasPostTrim && visibleLineIndex >= postTrimStart) {\n\t\t\t\t\tgutterElement.remove();\n\t\t\t\t\tcontentElement.remove();\n\t\t\t\t\trowCount++;\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (gutterElement.dataset.gutterBuffer === \"buffer\" && \"contentBuffer\" in contentElement.dataset) {\n\t\t\t\tconst totalRows = this.getBufferSize(contentElement.dataset);\n\t\t\t\tif (totalRows == null) throw new Error(\"FileDiff.trimColumnRows: invalid element\");\n\t\t\t\tif (preTrimCount > 0) {\n\t\t\t\t\tconst rowsToRemove = Math.min(preTrimCount, totalRows);\n\t\t\t\t\tconst newSize = totalRows - rowsToRemove;\n\t\t\t\t\tif (newSize > 0) {\n\t\t\t\t\t\tthis.updateBufferSize(gutterElement, newSize);\n\t\t\t\t\t\tthis.updateBufferSize(contentElement, newSize);\n\t\t\t\t\t\trowCount += rowsToRemove;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tgutterElement.remove();\n\t\t\t\t\t\tcontentElement.remove();\n\t\t\t\t\t\trowCount += totalRows;\n\t\t\t\t\t}\n\t\t\t\t\tpreTrimCount -= rowsToRemove;\n\t\t\t\t\tif (preTrimCount === 0 && newSize === 0) pendingMetadataTrim = true;\n\t\t\t\t} else if (hasPostTrim) {\n\t\t\t\t\tconst bufferStart = visibleLineIndex;\n\t\t\t\t\tconst bufferEnd = visibleLineIndex + totalRows - 1;\n\t\t\t\t\tif (postTrimStart <= bufferStart) {\n\t\t\t\t\t\tgutterElement.remove();\n\t\t\t\t\t\tcontentElement.remove();\n\t\t\t\t\t\trowCount += totalRows;\n\t\t\t\t\t} else if (postTrimStart <= bufferEnd) {\n\t\t\t\t\t\tconst rowsToRemove = bufferEnd - postTrimStart + 1;\n\t\t\t\t\t\tconst newSize = totalRows - rowsToRemove;\n\t\t\t\t\t\tthis.updateBufferSize(gutterElement, newSize);\n\t\t\t\t\t\tthis.updateBufferSize(contentElement, newSize);\n\t\t\t\t\t\trowCount += rowsToRemove;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvisibleLineIndex += totalRows;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconsole.error({\n\t\t\t\tgutterElement,\n\t\t\t\tcontentElement\n\t\t\t});\n\t\t\tthrow new Error(\"FileDiff.trimColumnRows: unknown row elements\");\n\t\t}\n\t\treturn rowCount;\n\t}\n\ttrimColumns({ columns, diffStyle, overlapEnd, overlapStart, previousStart, trimEnd, trimStart }) {\n\t\tconst preTrimCount = Math.max(0, overlapStart - previousStart);\n\t\tconst postTrimStart = overlapEnd - previousStart;\n\t\tif (postTrimStart < 0) throw new Error(\"FileDiff.trimColumns: overlap ends before previous\");\n\t\tconst shouldTrimStart = trimStart > 0;\n\t\tconst shouldTrimEnd = trimEnd > 0;\n\t\tif (!shouldTrimStart && !shouldTrimEnd) return 0;\n\t\tconst effectivePreTrimCount = shouldTrimStart ? preTrimCount : 0;\n\t\tconst effectivePostTrimStart = shouldTrimEnd ? postTrimStart : -1;\n\t\tif (diffStyle === \"unified\" && !Array.isArray(columns)) return this.trimColumnRows(columns, effectivePreTrimCount, effectivePostTrimStart);\n\t\telse if (diffStyle === \"split\" && Array.isArray(columns)) {\n\t\t\tconst deletionsTrim = this.trimColumnRows(columns[0], effectivePreTrimCount, effectivePostTrimStart);\n\t\t\tconst additionsTrim = this.trimColumnRows(columns[1], effectivePreTrimCount, effectivePostTrimStart);\n\t\t\tif (columns[0] != null && columns[1] != null && deletionsTrim !== additionsTrim) throw new Error(\"FileDiff.trimColumns: split columns out of sync\");\n\t\t\treturn columns[0] != null ? deletionsTrim : additionsTrim;\n\t\t} else {\n\t\t\tconsole.error({\n\t\t\t\tdiffStyle,\n\t\t\t\tcolumns\n\t\t\t});\n\t\t\tthrow new Error(\"FileDiff.trimColumns: Invalid columns for diffType\");\n\t\t}\n\t}\n\tgetBufferSize(properties) {\n\t\tconst parsed = Number.parseInt(properties?.bufferSize ?? \"\", 10);\n\t\treturn Number.isNaN(parsed) ? void 0 : parsed;\n\t}\n\tupdateBufferSize(element, size) {\n\t\telement.dataset.bufferSize = `${size}`;\n\t\telement.style.setProperty(\"grid-row\", `span ${size}`);\n\t\telement.style.setProperty(\"min-height\", `calc(${size} * 1lh)`);\n\t}\n\tgetCodeColumns(diffStyle, codeUnified, codeDeletions, codeAdditions) {\n\t\tfunction getColumns(code) {\n\t\t\tif (code == null) return;\n\t\t\tconst gutter = code.children[0];\n\t\t\tconst content = code.children[1];\n\t\t\tif (!(gutter instanceof HTMLElement) || !(content instanceof HTMLElement) || gutter.dataset.gutter == null || content.dataset.content == null) return;\n\t\t\treturn {\n\t\t\t\tgutter,\n\t\t\t\tcontent\n\t\t\t};\n\t\t}\n\t\tif (diffStyle === \"unified\") return getColumns(codeUnified);\n\t\telse {\n\t\t\tconst deletions = getColumns(codeDeletions);\n\t\t\tconst additions = getColumns(codeAdditions);\n\t\t\treturn deletions != null || additions != null ? [deletions, additions] : void 0;\n\t\t}\n\t}\n\tapplyBuffers(pre, renderRange) {\n\t\tif (renderRange == null || this.shouldDisableVirtualizationBuffers()) {\n\t\t\tif (this.bufferBefore != null) {\n\t\t\t\tthis.bufferBefore.remove();\n\t\t\t\tthis.bufferBefore = void 0;\n\t\t\t}\n\t\t\tif (this.bufferAfter != null) {\n\t\t\t\tthis.bufferAfter.remove();\n\t\t\t\tthis.bufferAfter = void 0;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (renderRange.bufferBefore > 0) {\n\t\t\tif (this.bufferBefore == null) {\n\t\t\t\tthis.bufferBefore = document.createElement(\"div\");\n\t\t\t\tthis.bufferBefore.dataset.virtualizerBuffer = \"before\";\n\t\t\t\tpre.before(this.bufferBefore);\n\t\t\t}\n\t\t\tthis.bufferBefore.style.setProperty(\"height\", `${renderRange.bufferBefore}px`);\n\t\t\tthis.bufferBefore.style.setProperty(\"contain\", \"strict\");\n\t\t} else if (this.bufferBefore != null) {\n\t\t\tthis.bufferBefore.remove();\n\t\t\tthis.bufferBefore = void 0;\n\t\t}\n\t\tif (renderRange.bufferAfter > 0) {\n\t\t\tif (this.bufferAfter == null) {\n\t\t\t\tthis.bufferAfter = document.createElement(\"div\");\n\t\t\t\tthis.bufferAfter.dataset.virtualizerBuffer = \"after\";\n\t\t\t\tpre.after(this.bufferAfter);\n\t\t\t}\n\t\t\tthis.bufferAfter.style.setProperty(\"height\", `${renderRange.bufferAfter}px`);\n\t\t\tthis.bufferAfter.style.setProperty(\"contain\", \"strict\");\n\t\t} else if (this.bufferAfter != null) {\n\t\t\tthis.bufferAfter.remove();\n\t\t\tthis.bufferAfter = void 0;\n\t\t}\n\t}\n\tshouldDisableVirtualizationBuffers() {\n\t\treturn this.options.disableVirtualizationBuffers ?? false;\n\t}\n\tapplyPreNodeAttributes(pre, { additionsContentAST, deletionsContentAST, totalLines }, customProperties) {\n\t\tconst { diffIndicators = \"bars\", disableBackground = false, disableLineNumbers = false, overflow = \"scroll\", diffStyle = \"split\" } = this.options;\n\t\tconst preProperties = {\n\t\t\ttype: \"diff\",\n\t\t\tdiffIndicators,\n\t\t\tdisableBackground,\n\t\t\tdisableLineNumbers,\n\t\t\toverflow,\n\t\t\tsplit: diffStyle === \"unified\" ? false : additionsContentAST != null && deletionsContentAST != null,\n\t\t\ttotalLines,\n\t\t\tcustomProperties\n\t\t};\n\t\tif (arePrePropertiesEqual(preProperties, this.appliedPreAttributes)) return;\n\t\tsetPreNodeProperties(pre, preProperties);\n\t\tthis.appliedPreAttributes = preProperties;\n\t}\n\tapplyErrorToDOM(error, container) {\n\t\tthis.cleanupErrorWrapper();\n\t\tthis.pre?.remove();\n\t\tthis.pre = void 0;\n\t\tthis.appliedPreAttributes = void 0;\n\t\tconst shadowRoot = container.shadowRoot ?? container.attachShadow({ mode: \"open\" });\n\t\tthis.errorWrapper ??= document.createElement(\"div\");\n\t\tthis.errorWrapper.dataset.errorWrapper = \"\";\n\t\tthis.errorWrapper.textContent = \"\";\n\t\tshadowRoot.appendChild(this.errorWrapper);\n\t\tconst errorMessage = document.createElement(\"div\");\n\t\terrorMessage.dataset.errorMessage = \"\";\n\t\terrorMessage.innerText = error.message;\n\t\tthis.errorWrapper.appendChild(errorMessage);\n\t\tconst errorStack = document.createElement(\"pre\");\n\t\terrorStack.dataset.errorStack = \"\";\n\t\terrorStack.innerText = error.stack ?? \"No Error Stack\";\n\t\tthis.errorWrapper.appendChild(errorStack);\n\t}\n\tcleanupErrorWrapper() {\n\t\tthis.errorWrapper?.remove();\n\t\tthis.errorWrapper = void 0;\n\t}\n};\nfunction hasDiffContent({ fileDiff, oldFile, newFile }) {\n\treturn fileDiff != null && fileDiff.hunks.length > 0 || oldFile != null || newFile != null;\n}\nfunction hasDiffHeaderContent({ fileDiff, oldFile, newFile }) {\n\treturn fileDiff != null || oldFile != null || newFile != null;\n}\nfunction shouldRenderCode(pre, hasContent, collapsed = false) {\n\treturn !collapsed && pre == null && hasContent;\n}\nfunction shouldRenderHeader(headerElement, hasContent, disableFileHeader = false) {\n\treturn headerElement == null && hasContent && !disableFileHeader;\n}\nfunction getElementChildren(node) {\n\tif (node == null || node.type !== \"element\") return;\n\treturn node.children ?? [];\n}\n//#endregion\nexport { FileDiff };\n\n//# sourceMappingURL=FileDiff.js.map","import \"../constants.js\";\nimport { areObjectsEqual } from \"../utils/areObjectsEqual.js\";\nimport { areOptionsEqual } from \"../utils/areOptionsEqual.js\";\nimport { computeVirtualFileMetrics, getVirtualFileHeaderRegion, getVirtualFilePaddingBottom } from \"../utils/computeVirtualFileMetrics.js\";\nimport { FILE_ANNOTATION_DOM_KEY, includesFileAnnotations, shouldRenderFileAnnotations } from \"../utils/includesFileAnnotations.js\";\nimport { areDiffTargetsEqual } from \"../utils/areDiffTargetsEqual.js\";\nimport { getExpandedRegion, getLeadingHunkSeparatorLayout, getTrailingExpandedRegion, getTrailingHunkSeparatorLayout } from \"../utils/virtualDiffLayout.js\";\nimport { computeEstimatedDiffHeights } from \"../utils/computeEstimatedDiffHeights.js\";\nimport { iterateOverDiff } from \"../utils/iterateOverDiff.js\";\nimport { parseDiffFromFile } from \"../utils/parseDiffFromFile.js\";\nimport { FileDiff } from \"./FileDiff.js\";\n//#region src/components/VirtualizedFileDiff.ts\nconst LAYOUT_CHECKPOINT_INTERVAL = 5e3;\nlet instanceId = -1;\nvar VirtualizedFileDiff = class extends FileDiff {\n\t__id = `little-virtualized-file-diff:${++instanceId}`;\n\ttop;\n\theight = 0;\n\tmetrics;\n\tcache = {\n\t\theightDeltas: /* @__PURE__ */ new Map(),\n\t\tmeasuredHeightDeltaTotal: 0,\n\t\testimatedSplitHeight: void 0,\n\t\testimatedUnifiedHeight: void 0,\n\t\tcheckpoints: [],\n\t\ttotalLines: 0,\n\t\tfileAnnotationHeight: 0\n\t};\n\tisVisible = false;\n\tisSetup = false;\n\tvirtualizer;\n\tlayoutDirty = true;\n\tforceRenderOverride;\n\tcurrentCollapsed;\n\tconstructor(options, virtualizer, metrics, workerManager, isContainerManaged = false) {\n\t\tsuper(options, workerManager, isContainerManaged);\n\t\tthis.virtualizer = virtualizer;\n\t\tthis.metrics = computeVirtualFileMetrics(metrics);\n\t}\n\tsetMetrics(metrics, force = false) {\n\t\tconst nextMetrics = computeVirtualFileMetrics(metrics);\n\t\tif (!force && areObjectsEqual(this.metrics, nextMetrics)) return;\n\t\tthis.metrics = nextMetrics;\n\t\tthis.resetLayoutCache({ includeEstimatedHeights: true });\n\t}\n\tsetLineAnnotations(lineAnnotations) {\n\t\tif (this.syncLineAnnotations(lineAnnotations)) this.resetLayoutCache({ includeEstimatedHeights: false });\n\t}\n\tsyncLineAnnotations(lineAnnotations) {\n\t\tif (lineAnnotations == null || lineAnnotations === this.lineAnnotations || lineAnnotations.length === 0 && this.lineAnnotations.length === 0) return false;\n\t\tsuper.setLineAnnotations(lineAnnotations);\n\t\treturn true;\n\t}\n\tsetFileAnnotationHeight(nextHeight) {\n\t\tconst previousHeight = this.cache.fileAnnotationHeight;\n\t\tif (nextHeight === previousHeight) return false;\n\t\tthis.cache.fileAnnotationHeight = nextHeight;\n\t\tthis.cache.measuredHeightDeltaTotal += nextHeight - previousHeight;\n\t\treturn true;\n\t}\n\thasFileAnnotations(fileDiff = this.fileDiff) {\n\t\tif (fileDiff == null || !includesFileAnnotations(this.lineAnnotations)) return false;\n\t\treturn this.lineAnnotations.some((annotation) => {\n\t\t\tif (annotation.lineNumber !== 0) return false;\n\t\t\tif (fileDiff.type === \"new\") return annotation.side === \"additions\";\n\t\t\tif (fileDiff.type === \"deleted\") return annotation.side === \"deletions\";\n\t\t\treturn true;\n\t\t});\n\t}\n\tgetLineHeight(lineIndex, hasMetadataLine = false) {\n\t\treturn this.getEstimatedLineHeight(hasMetadataLine) + (this.cache.heightDeltas.get(lineIndex) ?? 0);\n\t}\n\tgetEstimatedLineHeight(hasMetadataLine = false) {\n\t\tconst multiplier = hasMetadataLine ? 2 : 1;\n\t\treturn this.metrics.lineHeight * multiplier;\n\t}\n\tsetOptions(options) {\n\t\tif (this.isAdvancedMode()) throw new Error(\"VirtualizedFileDiff.setOptions cannot be used inside CodeView. Update CodeView options instead.\");\n\t\tif (options == null) return;\n\t\tconst { options: previousOptions } = this;\n\t\tconst optionsChanged = !areOptionsEqual(previousOptions, options);\n\t\tconst layoutChanged = optionsChanged && hasDiffLayoutOptionChanged(previousOptions, options);\n\t\tsuper.setOptions(options);\n\t\tif (layoutChanged) this.resetLayoutCache({\n\t\t\tforceSimpleRecompute: true,\n\t\t\tincludeEstimatedHeights: hasDiffEstimateOptionChanged(previousOptions, options)\n\t\t});\n\t\tif (optionsChanged) this.forceRenderOverride = true;\n\t\tif (optionsChanged && this.isSimpleMode()) this.virtualizer.instanceChanged(this, layoutChanged);\n\t}\n\tsetThemeType(themeType) {\n\t\tif (this.isAdvancedMode()) throw new Error(\"VirtualizedFileDiff.setThemeType cannot be used inside CodeView. Update CodeView options instead.\");\n\t\tsuper.setThemeType(themeType);\n\t}\n\tresetLayoutCache({ forceSimpleRecompute = false, includeEstimatedHeights = false } = {}) {\n\t\tthis.layoutDirty = true;\n\t\tthis.cache.fileAnnotationHeight = 0;\n\t\tif (this.cache.heightDeltas.size > 0) this.cache.heightDeltas.clear();\n\t\tif (this.cache.measuredHeightDeltaTotal !== 0) this.cache.measuredHeightDeltaTotal = 0;\n\t\tif (this.cache.checkpoints.length > 0) this.cache.checkpoints.length = 0;\n\t\tif (this.cache.totalLines !== 0) this.cache.totalLines = 0;\n\t\tif (includeEstimatedHeights) {\n\t\t\tthis.cache.estimatedSplitHeight = void 0;\n\t\t\tthis.cache.estimatedUnifiedHeight = void 0;\n\t\t}\n\t\tif (this.renderRange != null) this.renderRange = void 0;\n\t\tif (forceSimpleRecompute && this.isSimpleMode()) this.computeApproximateSize();\n\t}\n\treconcileHeights() {\n\t\tlet hasHeightChange = false;\n\t\tconst { overflow = \"scroll\" } = this.options;\n\t\tif (this.fileContainer == null || this.fileDiff == null) {\n\t\t\tif (this.height !== 0) hasHeightChange = true;\n\t\t\tthis.height = 0;\n\t\t\treturn hasHeightChange;\n\t\t}\n\t\tthis.top = this.getVirtualizedTop();\n\t\tif (overflow === \"scroll\" && this.lineAnnotations.length === 0 && !this.isResizeDebuggingEnabled()) return hasHeightChange;\n\t\tconst diffStyle = this.getDiffStyle();\n\t\tconst codeGroups = diffStyle === \"split\" ? [this.codeDeletions, this.codeAdditions] : [this.codeUnified];\n\t\tconst hasFileAnnotations = this.hasFileAnnotations(this.fileDiff);\n\t\tif (this.renderRange != null && hasFileAnnotations && shouldRenderFileAnnotations(this.renderRange)) {\n\t\t\tconst nextFileAnnotationHeight = measureFileAnnotationHeight(codeGroups) ?? 0;\n\t\t\tif (this.setFileAnnotationHeight(nextFileAnnotationHeight)) hasHeightChange = true;\n\t\t} else if (!hasFileAnnotations && this.setFileAnnotationHeight(0)) hasHeightChange = true;\n\t\tfor (const codeGroup of codeGroups) {\n\t\t\tif (codeGroup == null) continue;\n\t\t\tconst content = codeGroup.children[1];\n\t\t\tif (!(content instanceof HTMLElement)) continue;\n\t\t\tfor (const line of content.children) {\n\t\t\t\tif (!(line instanceof HTMLElement)) continue;\n\t\t\t\tconst lineIndexAttr = line.dataset.lineIndex;\n\t\t\t\tif (lineIndexAttr == null) continue;\n\t\t\t\tconst lineIndex = parseLineIndex(lineIndexAttr, diffStyle);\n\t\t\t\tlet measuredHeight = line.getBoundingClientRect().height;\n\t\t\t\tlet hasMetadata = false;\n\t\t\t\tif (line.nextElementSibling instanceof HTMLElement && (\"lineAnnotation\" in line.nextElementSibling.dataset || \"noNewline\" in line.nextElementSibling.dataset)) {\n\t\t\t\t\tif (\"noNewline\" in line.nextElementSibling.dataset) hasMetadata = true;\n\t\t\t\t\tmeasuredHeight += line.nextElementSibling.getBoundingClientRect().height;\n\t\t\t\t}\n\t\t\t\tconst estimatedHeight = this.getEstimatedLineHeight(hasMetadata);\n\t\t\t\tconst previousDelta = this.cache.heightDeltas.get(lineIndex) ?? 0;\n\t\t\t\tconst nextDelta = measuredHeight - estimatedHeight;\n\t\t\t\tif (nextDelta === previousDelta) continue;\n\t\t\t\thasHeightChange = true;\n\t\t\t\tthis.cache.measuredHeightDeltaTotal += nextDelta - previousDelta;\n\t\t\t\tif (nextDelta === 0) this.cache.heightDeltas.delete(lineIndex);\n\t\t\t\telse this.cache.heightDeltas.set(lineIndex, nextDelta);\n\t\t\t}\n\t\t}\n\t\tif (hasHeightChange || this.isResizeDebuggingEnabled()) this.computeApproximateSize(true);\n\t\treturn hasHeightChange;\n\t}\n\tonRender = (dirty) => {\n\t\tif (this.fileContainer == null) return false;\n\t\tif (dirty) this.top = this.getVirtualizedTop();\n\t\treturn this.render();\n\t};\n\tprepareCodeViewItem(fileDiff, top, reset, lineAnnotations) {\n\t\tconst targetChanged = !areDiffTargetsEqual(this.fileDiff, fileDiff);\n\t\tconst annotationsChanged = this.syncLineAnnotations(lineAnnotations);\n\t\tlet shouldResetLayoutCache = reset?.resetDiffLayoutCache === true || targetChanged || annotationsChanged;\n\t\tlet includeEstimatedHeights = targetChanged || reset?.resetDiffLayoutCache === true && reset.includeEstimatedDiffHeights;\n\t\tif (reset?.metrics != null) {\n\t\t\tthis.metrics = computeVirtualFileMetrics(reset.metrics);\n\t\t\tshouldResetLayoutCache = true;\n\t\t\tincludeEstimatedHeights = true;\n\t\t}\n\t\tconst { collapsed = false } = this.options;\n\t\tif (this.currentCollapsed !== collapsed) {\n\t\t\tthis.currentCollapsed = collapsed;\n\t\t\tshouldResetLayoutCache = true;\n\t\t}\n\t\tif (shouldResetLayoutCache) this.resetLayoutCache({ includeEstimatedHeights });\n\t\tthis.fileDiff = fileDiff;\n\t\tthis.top = top;\n\t\tthis.computeApproximateSize();\n\t\treturn this.height;\n\t}\n\tgetLinePosition(lineNumber, side = \"additions\") {\n\t\tif (this.fileDiff == null || lineNumber < 1) return;\n\t\tconst targetLineIndexes = this.getLineIndex(lineNumber, side);\n\t\tif (targetLineIndexes == null) return;\n\t\tconst { disableFileHeader = false, expandUnchanged = false, collapsed = false, collapsedContextThreshold = 1 } = this.options;\n\t\tconst diffStyle = this.getDiffStyle();\n\t\tconst hunkSeparators = this.getHunkSeparatorType();\n\t\tconst targetLineIndex = diffStyle === \"split\" ? targetLineIndexes[1] : targetLineIndexes[0];\n\t\tthis.approximateLayoutCheckpoints();\n\t\tconst headerRegion = getVirtualFileHeaderRegion(this.metrics, disableFileHeader);\n\t\tconst checkpoint = this.getLayoutCheckpointBeforeLineIndex(targetLineIndex);\n\t\tlet top = checkpoint?.top ?? headerRegion + this.cache.fileAnnotationHeight;\n\t\tif (collapsed) return {\n\t\t\ttop: headerRegion,\n\t\t\theight: 0\n\t\t};\n\t\tlet position;\n\t\titerateOverDiff({\n\t\t\tdiff: this.fileDiff,\n\t\t\tdiffStyle,\n\t\t\tstartingLine: checkpoint?.renderedLineIndex ?? 0,\n\t\t\texpandedHunks: expandUnchanged ? true : this.hunksRenderer.getExpandedHunksMap(),\n\t\t\tcollapsedContextThreshold,\n\t\t\tcallback: ({ hunkIndex, hunk, collapsedBefore, collapsedAfter, deletionLine, additionLine }) => {\n\t\t\t\tconst lineIndex = diffStyle === \"split\" ? additionLine?.splitLineIndex ?? deletionLine?.splitLineIndex : additionLine?.unifiedLineIndex ?? deletionLine?.unifiedLineIndex;\n\t\t\t\tif (lineIndex == null) throw new Error(\"VirtualizedFileDiff.getLinePosition: missing line index data\");\n\t\t\t\tif (collapsedBefore > 0) {\n\t\t\t\t\tconst separator = getLeadingHunkSeparatorLayout({\n\t\t\t\t\t\ttype: hunkSeparators,\n\t\t\t\t\t\tmetrics: this.metrics,\n\t\t\t\t\t\thunkIndex,\n\t\t\t\t\t\thunkSpecs: hunk?.hunkSpecs\n\t\t\t\t\t});\n\t\t\t\t\tif (separator != null) {\n\t\t\t\t\t\ttop += separator.gapBefore;\n\t\t\t\t\t\tif (targetLineIndex >= lineIndex - collapsedBefore && targetLineIndex < lineIndex) {\n\t\t\t\t\t\t\tposition = {\n\t\t\t\t\t\t\t\ttop,\n\t\t\t\t\t\t\t\theight: separator.height\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttop += separator.height + separator.gapAfter;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst lineHeight = this.getLineHeight(lineIndex, (additionLine?.noEOFCR ?? false) || (deletionLine?.noEOFCR ?? false));\n\t\t\t\tif (lineIndex === targetLineIndex) {\n\t\t\t\t\tposition = {\n\t\t\t\t\t\ttop,\n\t\t\t\t\t\theight: lineHeight\n\t\t\t\t\t};\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\ttop += lineHeight;\n\t\t\t\tif (collapsedAfter > 0) {\n\t\t\t\t\tconst separator = getTrailingHunkSeparatorLayout({\n\t\t\t\t\t\ttype: hunkSeparators,\n\t\t\t\t\t\tmetrics: this.metrics\n\t\t\t\t\t});\n\t\t\t\t\tif (separator != null) {\n\t\t\t\t\t\tif (targetLineIndex > lineIndex && targetLineIndex <= lineIndex + collapsedAfter) {\n\t\t\t\t\t\t\tposition = {\n\t\t\t\t\t\t\t\ttop: top + separator.gapBefore,\n\t\t\t\t\t\t\t\theight: separator.height\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttop += separator.totalHeight;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\treturn position;\n\t}\n\tgetNumericScrollAnchor(localViewportTop) {\n\t\tif (this.fileDiff == null) return;\n\t\tconst { disableFileHeader = false, expandUnchanged = false, collapsed = false, collapsedContextThreshold = 1 } = this.options;\n\t\tif (collapsed) return;\n\t\tconst diffStyle = this.getDiffStyle();\n\t\tconst hunkSeparators = this.getHunkSeparatorType();\n\t\tthis.approximateLayoutCheckpoints();\n\t\tconst checkpoint = this.getLayoutCheckpointBeforeTop(localViewportTop);\n\t\tlet top = checkpoint?.top ?? getVirtualFileHeaderRegion(this.metrics, disableFileHeader) + this.cache.fileAnnotationHeight;\n\t\tlet anchor;\n\t\titerateOverDiff({\n\t\t\tdiff: this.fileDiff,\n\t\t\tdiffStyle,\n\t\t\tstartingLine: checkpoint?.renderedLineIndex ?? 0,\n\t\t\texpandedHunks: expandUnchanged ? true : this.hunksRenderer.getExpandedHunksMap(),\n\t\t\tcollapsedContextThreshold,\n\t\t\tcallback: ({ hunkIndex, hunk, collapsedBefore, collapsedAfter, deletionLine, additionLine }) => {\n\t\t\t\tconst lineIndex = diffStyle === \"split\" ? additionLine?.splitLineIndex ?? deletionLine?.splitLineIndex : additionLine?.unifiedLineIndex ?? deletionLine?.unifiedLineIndex;\n\t\t\t\tif (lineIndex == null) throw new Error(\"VirtualizedFileDiff.getNumericScrollAnchor: missing line index data\");\n\t\t\t\tif (collapsedBefore > 0) {\n\t\t\t\t\tconst separator = getLeadingHunkSeparatorLayout({\n\t\t\t\t\t\ttype: hunkSeparators,\n\t\t\t\t\t\tmetrics: this.metrics,\n\t\t\t\t\t\thunkIndex,\n\t\t\t\t\t\thunkSpecs: hunk?.hunkSpecs\n\t\t\t\t\t});\n\t\t\t\t\tif (separator != null) top += separator.totalHeight;\n\t\t\t\t}\n\t\t\t\tif (top >= localViewportTop) {\n\t\t\t\t\tif (deletionLine != null) anchor = {\n\t\t\t\t\t\tlineNumber: deletionLine.lineNumber,\n\t\t\t\t\t\tside: \"deletions\",\n\t\t\t\t\t\ttop\n\t\t\t\t\t};\n\t\t\t\t\telse if (additionLine != null) anchor = {\n\t\t\t\t\t\tlineNumber: additionLine.lineNumber,\n\t\t\t\t\t\tside: \"additions\",\n\t\t\t\t\t\ttop\n\t\t\t\t\t};\n\t\t\t\t\tif (anchor != null) return true;\n\t\t\t\t}\n\t\t\t\tconst lineHeight = this.getLineHeight(lineIndex, (additionLine?.noEOFCR ?? false) || (deletionLine?.noEOFCR ?? false));\n\t\t\t\ttop += lineHeight;\n\t\t\t\tif (collapsedAfter > 0) {\n\t\t\t\t\tconst separator = getTrailingHunkSeparatorLayout({\n\t\t\t\t\t\ttype: hunkSeparators,\n\t\t\t\t\t\tmetrics: this.metrics\n\t\t\t\t\t});\n\t\t\t\t\tif (separator != null) top += separator.totalHeight;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\treturn anchor;\n\t}\n\tgetVirtualizedHeight() {\n\t\treturn this.height;\n\t}\n\tgetAdvancedStickySpecs(windowSpecs) {\n\t\tif (this.top == null || this.fileDiff == null) return;\n\t\tif (this.options.collapsed === true) return {\n\t\t\ttopOffset: this.top,\n\t\t\theight: this.height\n\t\t};\n\t\tconst renderRange = windowSpecs != null ? this.computeRenderRangeFromWindow(this.fileDiff, this.top, windowSpecs) : this.renderRange;\n\t\tif (renderRange == null) return;\n\t\tconst { bufferBefore, bufferAfter, totalLines } = renderRange;\n\t\tlet headerOnlyOffset = 0;\n\t\tif (totalLines === 0) {\n\t\t\tconst activeWindow = windowSpecs ?? this.virtualizer.getWindowSpecs();\n\t\t\tif (this.top < activeWindow.top) headerOnlyOffset = bufferAfter;\n\t\t}\n\t\treturn {\n\t\t\ttopOffset: this.top + bufferBefore + headerOnlyOffset,\n\t\t\theight: this.height - (bufferBefore + bufferAfter)\n\t\t};\n\t}\n\tcleanUp(recycle = false) {\n\t\tif (this.fileContainer != null && this.isSimpleMode()) this.getSimpleVirtualizer()?.disconnect(this.fileContainer);\n\t\tif (!recycle) this.resetLayoutCache({ includeEstimatedHeights: true });\n\t\tthis.isSetup = false;\n\t\tsuper.cleanUp(recycle);\n\t}\n\texpandHunk = (hunkIndex, direction, expansionLineCountOverride) => {\n\t\tthis.hunksRenderer.expandHunk(hunkIndex, direction, expansionLineCountOverride);\n\t\tthis.forceRenderOverride = true;\n\t\tthis.resetLayoutCache({ includeEstimatedHeights: true });\n\t\tif (this.isSimpleMode()) this.computeApproximateSize();\n\t\tthis.virtualizer.instanceChanged(this, true);\n\t};\n\tsetVisibility(visible) {\n\t\tif (this.isAdvancedMode() || this.fileContainer == null) return;\n\t\tthis.renderRange = void 0;\n\t\tif (visible && !this.isVisible) {\n\t\t\tthis.top = this.getVirtualizedTop();\n\t\t\tthis.isVisible = true;\n\t\t} else if (!visible && this.isVisible) {\n\t\t\tthis.isVisible = false;\n\t\t\tthis.rerender();\n\t\t}\n\t}\n\trerender() {\n\t\tif (!this.enabled || this.fileDiff == null && this.additionFile == null && this.deletionFile == null) return;\n\t\tthis.forceRenderOverride = true;\n\t\tthis.virtualizer.instanceChanged(this, false);\n\t}\n\tcomputeApproximateSize(force = false) {\n\t\tconst shouldValidateSize = this.isResizeDebuggingEnabled();\n\t\tif (!force && !this.layoutDirty && !shouldValidateSize) return;\n\t\tconst isFirstCompute = this.height === 0;\n\t\tthis.height = 0;\n\t\tthis.cache.checkpoints = [];\n\t\tthis.cache.totalLines = 0;\n\t\tif (this.fileDiff == null) {\n\t\t\tthis.layoutDirty = false;\n\t\t\treturn;\n\t\t}\n\t\tconst { disableFileHeader = false, collapsed = false } = this.options;\n\t\tconst headerRegion = getVirtualFileHeaderRegion(this.metrics, disableFileHeader);\n\t\tthis.height += headerRegion;\n\t\tif (collapsed) {\n\t\t\tthis.layoutDirty = false;\n\t\t\treturn;\n\t\t}\n\t\tthis.height = this.getActiveEstimatedHeight() + this.cache.measuredHeightDeltaTotal;\n\t\tif (shouldValidateSize && !isFirstCompute) this.validateComputedHeight();\n\t\tthis.layoutDirty = false;\n\t}\n\tgetActiveEstimatedHeight() {\n\t\tthis.ensureEstimatedDiffHeights();\n\t\tconst estimatedHeight = this.getDiffStyle() === \"split\" ? this.cache.estimatedSplitHeight : this.cache.estimatedUnifiedHeight;\n\t\tif (estimatedHeight == null) throw new Error(\"VirtualizedFileDiff.getActiveEstimatedHeight: missing estimated height\");\n\t\treturn estimatedHeight;\n\t}\n\tensureEstimatedDiffHeights() {\n\t\tif (this.fileDiff == null) {\n\t\t\tthis.cache.estimatedSplitHeight = void 0;\n\t\t\tthis.cache.estimatedUnifiedHeight = void 0;\n\t\t\treturn;\n\t\t}\n\t\tif (this.cache.estimatedSplitHeight != null && this.cache.estimatedUnifiedHeight != null) return;\n\t\tconst { disableFileHeader = false, expandUnchanged = false, collapsedContextThreshold = 1 } = this.options;\n\t\tconst { splitHeight, unifiedHeight } = computeEstimatedDiffHeights({\n\t\t\tfileDiff: this.fileDiff,\n\t\t\tmetrics: this.metrics,\n\t\t\tdisableFileHeader,\n\t\t\thunkSeparators: this.getHunkSeparatorType(),\n\t\t\texpandUnchanged,\n\t\t\texpandedHunks: this.hunksRenderer.getExpandedHunksMap(),\n\t\t\tcollapsedContextThreshold\n\t\t});\n\t\tthis.cache.estimatedSplitHeight = splitHeight;\n\t\tthis.cache.estimatedUnifiedHeight = unifiedHeight;\n\t}\n\tvalidateComputedHeight() {\n\t\tif (this.fileContainer == null || this.fileDiff == null) return;\n\t\tconst rect = this.fileContainer.getBoundingClientRect();\n\t\tif (rect.height !== this.height) console.log(\"VirtualizedFileDiff.computeApproximateSize: computed height doesnt match\", {\n\t\t\tname: this.fileDiff.name,\n\t\t\telementHeight: rect.height,\n\t\t\tcomputedHeight: this.height\n\t\t});\n\t\telse console.log(\"VirtualizedFileDiff.computeApproximateSize: computed height IS CORRECT\");\n\t}\n\trender({ fileContainer, oldFile, newFile, fileDiff, forceRender = false, lineAnnotations, ...props } = {}) {\n\t\tconst { forceRenderOverride, isSetup } = this;\n\t\tthis.forceRenderOverride = void 0;\n\t\tconst annotationsChanged = this.syncLineAnnotations(lineAnnotations);\n\t\tif (annotationsChanged) this.resetLayoutCache({ includeEstimatedHeights: false });\n\t\tthis.fileDiff ??= fileDiff ?? (oldFile != null && newFile != null ? parseDiffFromFile(oldFile, newFile, this.options.parseDiffOptions) : void 0);\n\t\tfileContainer = this.getOrCreateFileContainer(fileContainer);\n\t\tif (this.fileDiff == null) {\n\t\t\tconsole.error(\"VirtualizedFileDiff.render: attempting to virtually render when we dont have the correct data\");\n\t\t\treturn false;\n\t\t}\n\t\tif (!isSetup) {\n\t\t\tthis.computeApproximateSize();\n\t\t\tconst virtualizer = this.getSimpleVirtualizer();\n\t\t\tthis.top ??= this.getVirtualizedTop();\n\t\t\tif (this.isAdvancedMode()) this.isVisible = true;\n\t\t\telse {\n\t\t\t\tif (virtualizer == null) throw new Error(\"VirtualizedFileDiff.render: simple virtualizer is not available\");\n\t\t\t\tvirtualizer.connect(fileContainer, this);\n\t\t\t\tthis.isVisible = virtualizer.isInstanceVisible(this.top ?? 0, this.height);\n\t\t\t}\n\t\t\tthis.isSetup = true;\n\t\t} else this.top ??= this.getVirtualizedTop();\n\t\tif (!this.isVisible && this.isSimpleMode()) return this.renderPlaceholder(this.height);\n\t\tconst windowSpecs = this.virtualizer.getWindowSpecs();\n\t\tconst fileTop = this.top ?? 0;\n\t\tconst renderRange = this.computeRenderRangeFromWindow(this.fileDiff, fileTop, windowSpecs);\n\t\treturn super.render({\n\t\t\tfileDiff: this.fileDiff,\n\t\t\tfileContainer,\n\t\t\trenderRange,\n\t\t\toldFile,\n\t\t\tnewFile,\n\t\t\tlineAnnotations,\n\t\t\tforceRender: (forceRenderOverride ?? forceRender) || annotationsChanged,\n\t\t\t...props\n\t\t});\n\t}\n\tsyncVirtualizedTop() {\n\t\tthis.top = this.getVirtualizedTop();\n\t}\n\tshouldDisableVirtualizationBuffers() {\n\t\treturn this.isAdvancedMode() || super.shouldDisableVirtualizationBuffers();\n\t}\n\tisSimpleMode() {\n\t\treturn this.virtualizer.type === \"simple\";\n\t}\n\tisAdvancedMode() {\n\t\treturn this.virtualizer.type === \"advanced\";\n\t}\n\tgetVirtualizedTop() {\n\t\tif (this.virtualizer.type === \"advanced\") return this.virtualizer.getLocalTopForInstance(this);\n\t\treturn this.fileContainer != null ? this.virtualizer.getOffsetInScrollContainer(this.fileContainer) : 0;\n\t}\n\tgetSimpleVirtualizer() {\n\t\treturn this.virtualizer.type === \"simple\" ? this.virtualizer : void 0;\n\t}\n\tisResizeDebuggingEnabled() {\n\t\treturn this.getSimpleVirtualizer()?.config.resizeDebugging ?? false;\n\t}\n\tgetDiffStyle() {\n\t\treturn this.options.diffStyle ?? \"split\";\n\t}\n\tgetHunkSeparatorType() {\n\t\treturn getOptionHunkSeparatorType(this.options.hunkSeparators);\n\t}\n\tapproximateLayoutCheckpoints() {\n\t\tif (this.cache.checkpoints.length > 0 || this.fileDiff == null || this.fileDiff.hunks.length === 0 || this.options.collapsed === true) return;\n\t\tconst { disableFileHeader = false, expandUnchanged = false, collapsedContextThreshold = 1 } = this.options;\n\t\tconst finalHunkIndex = this.fileDiff.hunks.length - 1;\n\t\tconst diffStyle = this.getDiffStyle();\n\t\tconst hunkSeparators = this.getHunkSeparatorType();\n\t\tconst expandedHunks = expandUnchanged ? true : this.hunksRenderer.getExpandedHunksMap();\n\t\tconst heightDeltaPrefix = createHeightDeltaPrefix(this.cache.heightDeltas);\n\t\tlet top = getVirtualFileHeaderRegion(this.metrics, disableFileHeader) + this.cache.fileAnnotationHeight;\n\t\tlet renderedLineIndex = 0;\n\t\tconst processRows = ({ rowCount, startLineIndex, preSeparatorHeight = 0, postSeparatorHeight = 0, metadataOffsets = [] }) => {\n\t\t\tif (rowCount <= 0) return;\n\t\t\tconst blockStart = renderedLineIndex;\n\t\t\tconst blockEnd = renderedLineIndex + rowCount;\n\t\t\tlet nextCheckpoint = getNextCheckpointIndex(blockStart);\n\t\t\twhile (nextCheckpoint < blockEnd) {\n\t\t\t\tconst offset = nextCheckpoint - blockStart;\n\t\t\t\tconst checkpointTop = top + (offset > 0 ? preSeparatorHeight : 0) + offset * this.metrics.lineHeight + countMetadataOffsetsBefore(metadataOffsets, offset) * this.metrics.lineHeight + sumHeightDeltas(heightDeltaPrefix, startLineIndex, startLineIndex + offset);\n\t\t\t\tthis.cache.checkpoints.push({\n\t\t\t\t\trenderedLineIndex: nextCheckpoint,\n\t\t\t\t\tlineIndex: startLineIndex + offset,\n\t\t\t\t\ttop: checkpointTop\n\t\t\t\t});\n\t\t\t\tnextCheckpoint += LAYOUT_CHECKPOINT_INTERVAL;\n\t\t\t}\n\t\t\ttop += preSeparatorHeight + rowCount * this.metrics.lineHeight + metadataOffsets.length * this.metrics.lineHeight + sumHeightDeltas(heightDeltaPrefix, startLineIndex, startLineIndex + rowCount) + postSeparatorHeight;\n\t\t\trenderedLineIndex = blockEnd;\n\t\t};\n\t\tfor (let hunkIndex = 0; hunkIndex < this.fileDiff.hunks.length; hunkIndex++) {\n\t\t\tconst hunk = this.fileDiff.hunks[hunkIndex];\n\t\t\tif (hunk == null) throw new Error(\"VirtualizedFileDiff.approximateLayoutCheckpoints: invalid hunk index\");\n\t\t\tconst leadingRegion = getExpandedRegion({\n\t\t\t\tisPartial: this.fileDiff.isPartial,\n\t\t\t\trangeSize: hunk.collapsedBefore,\n\t\t\t\texpandedHunks,\n\t\t\t\thunkIndex,\n\t\t\t\tcollapsedContextThreshold\n\t\t\t});\n\t\t\tconst leadingSeparatorHeight = leadingRegion.collapsedLines > 0 ? getLeadingHunkSeparatorLayout({\n\t\t\t\ttype: hunkSeparators,\n\t\t\t\tmetrics: this.metrics,\n\t\t\t\thunkIndex,\n\t\t\t\thunkSpecs: hunk.hunkSpecs\n\t\t\t})?.totalHeight ?? 0 : 0;\n\t\t\tprocessRows({\n\t\t\t\trowCount: leadingRegion.fromStart,\n\t\t\t\tstartLineIndex: (diffStyle === \"split\" ? hunk.splitLineStart : hunk.unifiedLineStart) - leadingRegion.rangeSize\n\t\t\t});\n\t\t\tlet pendingLeadingSeparatorHeight = leadingSeparatorHeight;\n\t\t\tprocessRows({\n\t\t\t\trowCount: leadingRegion.fromEnd,\n\t\t\t\tstartLineIndex: (diffStyle === \"split\" ? hunk.splitLineStart : hunk.unifiedLineStart) - leadingRegion.fromEnd,\n\t\t\t\tpreSeparatorHeight: pendingLeadingSeparatorHeight\n\t\t\t});\n\t\t\tif (leadingRegion.fromEnd > 0) pendingLeadingSeparatorHeight = 0;\n\t\t\tconst trailingRegion = hunkIndex === finalHunkIndex ? getTrailingExpandedRegion({\n\t\t\t\tfileDiff: this.fileDiff,\n\t\t\t\thunkIndex,\n\t\t\t\texpandedHunks,\n\t\t\t\tcollapsedContextThreshold,\n\t\t\t\terrorPrefix: \"VirtualizedFileDiff\"\n\t\t\t}) : void 0;\n\t\t\tconst trailingSeparatorHeight = trailingRegion != null && trailingRegion.collapsedLines > 0 ? getTrailingHunkSeparatorLayout({\n\t\t\t\ttype: hunkSeparators,\n\t\t\t\tmetrics: this.metrics\n\t\t\t})?.totalHeight ?? 0 : 0;\n\t\t\tconst trailingExpandedCount = trailingRegion != null ? trailingRegion.fromStart + trailingRegion.fromEnd : 0;\n\t\t\tconst hunkBodyRowCount = diffStyle === \"split\" ? hunk.splitLineCount : hunk.unifiedLineCount;\n\t\t\tconst hunkBodyStartLineIndex = diffStyle === \"split\" ? hunk.splitLineStart : hunk.unifiedLineStart;\n\t\t\tprocessRows({\n\t\t\t\trowCount: hunkBodyRowCount,\n\t\t\t\tstartLineIndex: hunkBodyStartLineIndex,\n\t\t\t\tpreSeparatorHeight: pendingLeadingSeparatorHeight,\n\t\t\t\tpostSeparatorHeight: trailingExpandedCount === 0 ? trailingSeparatorHeight : 0,\n\t\t\t\tmetadataOffsets: getHunkMetadataOffsets({\n\t\t\t\t\tdiffStyle,\n\t\t\t\t\thunk,\n\t\t\t\t\trowCount: hunkBodyRowCount\n\t\t\t\t})\n\t\t\t});\n\t\t\tif (trailingRegion != null && trailingExpandedCount > 0) processRows({\n\t\t\t\trowCount: trailingExpandedCount,\n\t\t\t\tstartLineIndex: hunkBodyStartLineIndex + hunkBodyRowCount,\n\t\t\t\tpostSeparatorHeight: trailingSeparatorHeight\n\t\t\t});\n\t\t}\n\t\tthis.cache.totalLines = renderedLineIndex;\n\t}\n\tgetLayoutCheckpointBeforeLineIndex(lineIndex) {\n\t\tif (lineIndex <= 0 || this.cache.checkpoints.length === 0) return;\n\t\tlet low = 0;\n\t\tlet high = this.cache.checkpoints.length - 1;\n\t\tlet result;\n\t\twhile (low <= high) {\n\t\t\tconst mid = low + high >> 1;\n\t\t\tconst checkpoint = this.cache.checkpoints[mid];\n\t\t\tif (checkpoint == null) throw new Error(\"VirtualizedFileDiff: invalid checkpoint index\");\n\t\t\tif (checkpoint.lineIndex <= lineIndex) {\n\t\t\t\tresult = checkpoint;\n\t\t\t\tlow = mid + 1;\n\t\t\t} else high = mid - 1;\n\t\t}\n\t\treturn result;\n\t}\n\tgetLayoutCheckpointBeforeTop(top, hunkLineCount) {\n\t\tlet low = 0;\n\t\tlet high = this.cache.checkpoints.length - 1;\n\t\tlet resultIndex = -1;\n\t\twhile (low <= high) {\n\t\t\tconst mid = low + high >> 1;\n\t\t\tconst checkpoint = this.cache.checkpoints[mid];\n\t\t\tif (checkpoint == null) throw new Error(\"VirtualizedFileDiff: invalid checkpoint index\");\n\t\t\tif (checkpoint.top <= top) {\n\t\t\t\tresultIndex = mid;\n\t\t\t\tlow = mid + 1;\n\t\t\t} else high = mid - 1;\n\t\t}\n\t\tif (hunkLineCount == null) return resultIndex >= 0 ? this.cache.checkpoints[resultIndex] : void 0;\n\t\tfor (let index = resultIndex; index >= 0; index--) {\n\t\t\tconst checkpoint = this.cache.checkpoints[index];\n\t\t\tif (checkpoint == null) throw new Error(\"VirtualizedFileDiff: invalid checkpoint index\");\n\t\t\tif (checkpoint.renderedLineIndex % hunkLineCount === 0) return checkpoint;\n\t\t}\n\t}\n\tgetExpandedLineCount(fileDiff, diffStyle) {\n\t\tlet count = 0;\n\t\tif (fileDiff.isPartial) {\n\t\t\tfor (const hunk of fileDiff.hunks) count += diffStyle === \"split\" ? hunk.splitLineCount : hunk.unifiedLineCount;\n\t\t\treturn count;\n\t\t}\n\t\tconst { expandUnchanged = false, collapsedContextThreshold = 1 } = this.options;\n\t\tconst expandedHunks = expandUnchanged ? true : this.hunksRenderer.getExpandedHunksMap();\n\t\tfor (const [hunkIndex, hunk] of fileDiff.hunks.entries()) {\n\t\t\tconst hunkCount = diffStyle === \"split\" ? hunk.splitLineCount : hunk.unifiedLineCount;\n\t\t\tcount += hunkCount;\n\t\t\tconst collapsedBefore = Math.max(hunk.collapsedBefore, 0);\n\t\t\tconst { fromStart, fromEnd, renderAll } = getExpandedRegion({\n\t\t\t\tisPartial: fileDiff.isPartial,\n\t\t\t\trangeSize: collapsedBefore,\n\t\t\t\texpandedHunks,\n\t\t\t\thunkIndex,\n\t\t\t\tcollapsedContextThreshold\n\t\t\t});\n\t\t\tif (collapsedBefore > 0) count += renderAll ? collapsedBefore : fromStart + fromEnd;\n\t\t}\n\t\tconst trailingRegion = getTrailingExpandedRegion({\n\t\t\tfileDiff,\n\t\t\thunkIndex: fileDiff.hunks.length - 1,\n\t\t\texpandedHunks,\n\t\t\tcollapsedContextThreshold,\n\t\t\terrorPrefix: \"VirtualizedFileDiff\"\n\t\t});\n\t\tif (trailingRegion != null) count += trailingRegion.fromStart + trailingRegion.fromEnd;\n\t\treturn count;\n\t}\n\tcomputeRenderRangeFromWindow(fileDiff, fileTop, { top, bottom }) {\n\t\tconst { disableFileHeader = false, expandUnchanged = false, collapsedContextThreshold = 1 } = this.options;\n\t\tconst { hunkLineCount, lineHeight } = this.metrics;\n\t\tconst diffStyle = this.getDiffStyle();\n\t\tconst hunkSeparators = this.getHunkSeparatorType();\n\t\tconst fileHeight = this.height;\n\t\tlet lineCount = this.cache.totalLines > 0 ? this.cache.totalLines : this.getExpandedLineCount(fileDiff, diffStyle);\n\t\tconst headerRegion = getVirtualFileHeaderRegion(this.metrics, disableFileHeader);\n\t\tconst paddingBottom = fileDiff.hunks.length > 0 ? getVirtualFilePaddingBottom(this.metrics) : 0;\n\t\tconst { fileAnnotationHeight } = this.cache;\n\t\tconst codeRegionTop = headerRegion + fileAnnotationHeight;\n\t\tconst codeHeight = Math.max(0, fileHeight - headerRegion - fileAnnotationHeight - paddingBottom);\n\t\tconst hasFileAnnotations = this.hasFileAnnotations(fileDiff);\n\t\tconst fileAnnotationTop = fileTop + headerRegion;\n\t\tconst measuredFileAnnotationVisible = fileAnnotationHeight > 0 && hasFileAnnotations && fileAnnotationTop < bottom && fileAnnotationTop + fileAnnotationHeight > top;\n\t\tif (fileTop < top - fileHeight || fileTop > bottom) return {\n\t\t\tstartingLine: 0,\n\t\t\ttotalLines: 0,\n\t\t\tbufferBefore: 0,\n\t\t\tbufferAfter: fileHeight - headerRegion - paddingBottom\n\t\t};\n\t\tif (lineCount <= hunkLineCount || fileDiff.hunks.length === 0) return {\n\t\t\tstartingLine: 0,\n\t\t\ttotalLines: hunkLineCount,\n\t\t\tbufferBefore: 0,\n\t\t\tbufferAfter: 0\n\t\t};\n\t\tthis.approximateLayoutCheckpoints();\n\t\tlineCount = this.cache.totalLines > 0 ? this.cache.totalLines : lineCount;\n\t\tconst estimatedTargetLines = Math.ceil(Math.max(bottom - top, 0) / lineHeight);\n\t\tconst totalLines = Math.ceil(estimatedTargetLines / hunkLineCount) * hunkLineCount + hunkLineCount;\n\t\tconst totalHunks = totalLines / hunkLineCount;\n\t\tconst overflowHunks = totalHunks;\n\t\tconst hunkOffsets = [];\n\t\tconst viewportCenter = (top + bottom) / 2;\n\t\tconst checkpoint = this.getLayoutCheckpointBeforeTop(Math.max(0, top - fileTop - totalLines * lineHeight * 2), hunkLineCount);\n\t\tlet absoluteLineTop = fileTop + (checkpoint?.top ?? codeRegionTop);\n\t\tlet currentLine = checkpoint?.renderedLineIndex ?? 0;\n\t\tlet firstVisibleHunk;\n\t\tlet centerHunk;\n\t\tlet overflowCounter;\n\t\titerateOverDiff({\n\t\t\tdiff: fileDiff,\n\t\t\tdiffStyle,\n\t\t\tstartingLine: checkpoint?.renderedLineIndex ?? 0,\n\t\t\texpandedHunks: expandUnchanged ? true : this.hunksRenderer.getExpandedHunksMap(),\n\t\t\tcollapsedContextThreshold,\n\t\t\tcallback: ({ hunkIndex, hunk, collapsedBefore, collapsedAfter, deletionLine, additionLine }) => {\n\t\t\t\tconst splitLineIndex = additionLine != null ? additionLine.splitLineIndex : deletionLine.splitLineIndex;\n\t\t\t\tconst unifiedLineIndex = additionLine != null ? additionLine.unifiedLineIndex : deletionLine.unifiedLineIndex;\n\t\t\t\tconst hasMetadata = (additionLine?.noEOFCR ?? false) || (deletionLine?.noEOFCR ?? false);\n\t\t\t\tconst gapAdjustment = (collapsedBefore > 0 ? getLeadingHunkSeparatorLayout({\n\t\t\t\t\ttype: hunkSeparators,\n\t\t\t\t\tmetrics: this.metrics,\n\t\t\t\t\thunkIndex,\n\t\t\t\t\thunkSpecs: hunk?.hunkSpecs\n\t\t\t\t}) : void 0)?.totalHeight ?? 0;\n\t\t\t\tabsoluteLineTop += gapAdjustment;\n\t\t\t\tconst isAtHunkBoundary = currentLine % hunkLineCount === 0;\n\t\t\t\tconst currentHunk = Math.floor(currentLine / hunkLineCount);\n\t\t\t\tif (isAtHunkBoundary) {\n\t\t\t\t\thunkOffsets[currentHunk] = absoluteLineTop - (fileTop + codeRegionTop + gapAdjustment);\n\t\t\t\t\tif (overflowCounter != null) {\n\t\t\t\t\t\tif (overflowCounter <= 0) return true;\n\t\t\t\t\t\toverflowCounter--;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst lineHeight = this.getLineHeight(diffStyle === \"split\" ? splitLineIndex : unifiedLineIndex, hasMetadata);\n\t\t\t\tif (absoluteLineTop > top - lineHeight && absoluteLineTop < bottom) firstVisibleHunk ??= currentHunk;\n\t\t\t\tif (centerHunk == null && absoluteLineTop + lineHeight > viewportCenter) centerHunk = currentHunk;\n\t\t\t\tif (overflowCounter == null && absoluteLineTop >= bottom && isAtHunkBoundary) overflowCounter = overflowHunks;\n\t\t\t\tcurrentLine++;\n\t\t\t\tabsoluteLineTop += lineHeight;\n\t\t\t\tif (collapsedAfter > 0) absoluteLineTop += getTrailingHunkSeparatorLayout({\n\t\t\t\t\ttype: hunkSeparators,\n\t\t\t\t\tmetrics: this.metrics\n\t\t\t\t})?.totalHeight ?? 0;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif (firstVisibleHunk == null) if (measuredFileAnnotationVisible) {\n\t\t\tfirstVisibleHunk = 0;\n\t\t\tcenterHunk = 0;\n\t\t} else return {\n\t\t\tstartingLine: 0,\n\t\t\ttotalLines: 0,\n\t\t\tbufferBefore: 0,\n\t\t\tbufferAfter: fileHeight - headerRegion - paddingBottom\n\t\t};\n\t\tcenterHunk ??= firstVisibleHunk;\n\t\tconst idealStartHunk = Math.round(centerHunk - totalHunks / 2);\n\t\tconst maxStartHunk = Math.max(0, Math.ceil(lineCount / hunkLineCount) - totalHunks);\n\t\tconst startHunk = Math.max(0, Math.min(idealStartHunk, maxStartHunk));\n\t\tconst startingLine = startHunk * hunkLineCount;\n\t\tconst clampedTotalLines = idealStartHunk < 0 ? totalLines + idealStartHunk * hunkLineCount : totalLines;\n\t\tconst codeBufferBefore = hunkOffsets[startHunk] ?? 0;\n\t\tconst bufferBefore = startingLine === 0 ? 0 : fileAnnotationHeight + codeBufferBefore;\n\t\tconst finalHunkIndex = startHunk + clampedTotalLines / hunkLineCount;\n\t\tconst bufferAfter = finalHunkIndex < hunkOffsets.length ? codeHeight - hunkOffsets[finalHunkIndex] : codeHeight - (absoluteLineTop - fileTop - codeRegionTop);\n\t\treturn {\n\t\t\tstartingLine,\n\t\t\ttotalLines: clampedTotalLines,\n\t\t\tbufferBefore,\n\t\t\tbufferAfter: Math.max(0, bufferAfter)\n\t\t};\n\t}\n};\nfunction measureFileAnnotationHeight(codeGroups) {\n\tlet height;\n\tfor (const codeGroup of codeGroups) {\n\t\tif (codeGroup == null) continue;\n\t\tconst content = codeGroup.children[1];\n\t\tif (!(content instanceof HTMLElement)) continue;\n\t\tfor (const child of content.children) {\n\t\t\tif (!(child instanceof HTMLElement)) continue;\n\t\t\tif (child.dataset.lineAnnotation !== FILE_ANNOTATION_DOM_KEY) continue;\n\t\t\theight = Math.max(height ?? 0, child.getBoundingClientRect().height);\n\t\t}\n\t}\n\treturn height;\n}\nfunction createHeightDeltaPrefix(heightDeltas) {\n\tconst entries = Array.from(heightDeltas).sort((a, b) => a[0] - b[0]);\n\tconst lineIndexes = [];\n\tconst prefixTotals = [0];\n\tlet total = 0;\n\tfor (const [lineIndex, delta] of entries) {\n\t\tlineIndexes.push(lineIndex);\n\t\ttotal += delta;\n\t\tprefixTotals.push(total);\n\t}\n\treturn {\n\t\tlineIndexes,\n\t\tprefixTotals\n\t};\n}\nfunction sumHeightDeltas({ lineIndexes, prefixTotals }, startLineIndex, endLineIndex) {\n\tif (startLineIndex >= endLineIndex || lineIndexes.length === 0) return 0;\n\tconst start = lowerBound(lineIndexes, startLineIndex);\n\treturn (prefixTotals[lowerBound(lineIndexes, endLineIndex)] ?? 0) - (prefixTotals[start] ?? 0);\n}\nfunction lowerBound(values, target) {\n\tlet low = 0;\n\tlet high = values.length;\n\twhile (low < high) {\n\t\tconst mid = low + high >> 1;\n\t\tconst value = values[mid];\n\t\tif (value == null) throw new Error(\"VirtualizedFileDiff: invalid prefix index\");\n\t\tif (value < target) low = mid + 1;\n\t\telse high = mid;\n\t}\n\treturn low;\n}\nfunction getNextCheckpointIndex(renderedLineIndex) {\n\treturn Math.ceil(renderedLineIndex / LAYOUT_CHECKPOINT_INTERVAL) * LAYOUT_CHECKPOINT_INTERVAL;\n}\nfunction countMetadataOffsetsBefore(metadataOffsets, offset) {\n\tlet count = 0;\n\tfor (const metadataOffset of metadataOffsets) if (metadataOffset < offset) count++;\n\treturn count;\n}\nfunction getHunkMetadataOffsets({ diffStyle, hunk, rowCount }) {\n\tif (rowCount <= 0 || !hunk.noEOFCRAdditions && !hunk.noEOFCRDeletions) return [];\n\tconst lastContent = hunk.hunkContent.at(-1);\n\tif (lastContent == null) return [];\n\tif (lastContent.type === \"context\") return [rowCount - 1];\n\tconst splitCount = Math.max(lastContent.deletions, lastContent.additions);\n\tconst unifiedCount = lastContent.deletions + lastContent.additions;\n\tif (diffStyle === \"split\") return splitCount > 0 && (hunk.noEOFCRAdditions || hunk.noEOFCRDeletions) ? [rowCount - 1] : [];\n\tconst offsets = [];\n\tconst contentStartOffset = rowCount - unifiedCount;\n\tif (lastContent.deletions > 0 && hunk.noEOFCRDeletions) offsets.push(contentStartOffset + lastContent.deletions - 1);\n\tif (lastContent.additions > 0 && hunk.noEOFCRAdditions) offsets.push(rowCount - 1);\n\treturn offsets;\n}\nfunction hasDiffLayoutOptionChanged(previousOptions, nextOptions) {\n\treturn (previousOptions.diffStyle ?? \"split\") !== (nextOptions.diffStyle ?? \"split\") || (previousOptions.overflow ?? \"scroll\") !== (nextOptions.overflow ?? \"scroll\") || (previousOptions.collapsed ?? false) !== (nextOptions.collapsed ?? false) || (previousOptions.disableLineNumbers ?? false) !== (nextOptions.disableLineNumbers ?? false) || (previousOptions.disableFileHeader ?? false) !== (nextOptions.disableFileHeader ?? false) || (previousOptions.diffIndicators ?? \"bars\") !== (nextOptions.diffIndicators ?? \"bars\") || (previousOptions.hunkSeparators ?? \"line-info\") !== (nextOptions.hunkSeparators ?? \"line-info\") || (previousOptions.expandUnchanged ?? false) !== (nextOptions.expandUnchanged ?? false) || (previousOptions.collapsedContextThreshold ?? 1) !== (nextOptions.collapsedContextThreshold ?? 1) || previousOptions.unsafeCSS !== nextOptions.unsafeCSS;\n}\nfunction hasDiffEstimateOptionChanged(previousOptions, nextOptions) {\n\treturn (previousOptions.disableFileHeader ?? false) !== (nextOptions.disableFileHeader ?? false) || (previousOptions.hunkSeparators ?? \"line-info\") !== (nextOptions.hunkSeparators ?? \"line-info\") || (previousOptions.expandUnchanged ?? false) !== (nextOptions.expandUnchanged ?? false) || (previousOptions.collapsedContextThreshold ?? 1) !== (nextOptions.collapsedContextThreshold ?? 1);\n}\nfunction getOptionHunkSeparatorType(hunkSeparators) {\n\treturn typeof hunkSeparators === \"function\" ? \"custom\" : hunkSeparators ?? \"line-info\";\n}\nfunction parseLineIndex(lineIndexAttr, diffStyle) {\n\tconst [unifiedIndex, splitIndex] = lineIndexAttr.split(\",\").map(Number);\n\treturn diffStyle === \"split\" ? splitIndex : unifiedIndex;\n}\n//#endregion\nexport { VirtualizedFileDiff };\n\n//# sourceMappingURL=VirtualizedFileDiff.js.map","import { DEFAULT_CODE_VIEW_FILE_METRICS, DEFAULT_CODE_VIEW_LAYOUT, DEFAULT_SMOOTH_SCROLL_SETTINGS, DEFAULT_THEMES, DIFFS_DEVELOPMENT_BUILD, DIFFS_TAG_NAME } from \"../constants.js\";\nimport { dequeueRender, queueRender } from \"../managers/UniversalRenderingManager.js\";\nimport { areObjectsEqual } from \"../utils/areObjectsEqual.js\";\nimport { areThemesEqual } from \"../utils/areThemesEqual.js\";\nimport { areOptionsEqual } from \"../utils/areOptionsEqual.js\";\nimport { areSelectionsEqual } from \"../utils/areSelectionsEqual.js\";\nimport { createWindowFromScrollPosition } from \"../utils/createWindowFromScrollPosition.js\";\nimport { isStyleNode } from \"../utils/isStyleNode.js\";\nimport { prefersReducedMotion } from \"../utils/prefersReducedMotion.js\";\nimport { roundToDevicePixel } from \"../utils/roundToDevicePixel.js\";\nimport { VirtualizedFile } from \"./VirtualizedFile.js\";\nimport { VirtualizedFileDiff } from \"./VirtualizedFileDiff.js\";\n//#region src/components/CodeView.ts\nconst CODE_VIEW_DIFF_OPTION_KEYS = [\n\t\"theme\",\n\t\"disableLineNumbers\",\n\t\"overflow\",\n\t\"themeType\",\n\t\"disableFileHeader\",\n\t\"disableVirtualizationBuffers\",\n\t\"preferredHighlighter\",\n\t\"useCSSClasses\",\n\t\"useTokenTransformer\",\n\t\"tokenizeMaxLineLength\",\n\t\"tokenizeMaxLength\",\n\t\"unsafeCSS\",\n\t\"diffStyle\",\n\t\"diffIndicators\",\n\t\"disableBackground\",\n\t\"expandUnchanged\",\n\t\"collapsedContextThreshold\",\n\t\"lineDiffType\",\n\t\"maxLineDiffLength\",\n\t\"expansionLineCount\",\n\t\"lineHoverHighlight\",\n\t\"enableTokenInteractionsOnWhitespace\",\n\t\"enableGutterUtility\",\n\t\"__debugPointerEvents\",\n\t\"enableLineSelection\",\n\t\"controlledSelection\",\n\t\"disableErrorHandling\"\n];\nconst CODE_VIEW_FILE_OPTION_KEYS = [\n\t\"theme\",\n\t\"disableLineNumbers\",\n\t\"overflow\",\n\t\"themeType\",\n\t\"disableFileHeader\",\n\t\"disableVirtualizationBuffers\",\n\t\"preferredHighlighter\",\n\t\"useCSSClasses\",\n\t\"useTokenTransformer\",\n\t\"tokenizeMaxLineLength\",\n\t\"tokenizeMaxLength\",\n\t\"unsafeCSS\",\n\t\"lineHoverHighlight\",\n\t\"enableTokenInteractionsOnWhitespace\",\n\t\"enableGutterUtility\",\n\t\"__debugPointerEvents\",\n\t\"enableLineSelection\",\n\t\"controlledSelection\",\n\t\"disableErrorHandling\"\n];\nconst CODE_VIEW_SHARED_CALLBACK_KEYS = [\n\t\"renderCustomHeader\",\n\t\"renderHeaderPrefix\",\n\t\"renderHeaderMetadata\",\n\t\"renderAnnotation\",\n\t\"renderGutterUtility\",\n\t\"onPostRender\",\n\t\"onGutterUtilityClick\",\n\t\"onLineClick\",\n\t\"onLineNumberClick\",\n\t\"onLineEnter\",\n\t\"onLineLeave\",\n\t\"onTokenClick\",\n\t\"onTokenEnter\",\n\t\"onTokenLeave\"\n];\nconst CODE_VIEW_SELECTION_CALLBACK_KEYS = [\n\t\"onLineSelected\",\n\t\"onLineSelectionStart\",\n\t\"onLineSelectionChange\",\n\t\"onLineSelectionEnd\"\n];\nconst CODE_VIEW_ITEM_OPTIONS_STATE = Symbol(\"CodeView.itemOptionsState\");\nfunction defineOptionsState(options, state) {\n\tObject.defineProperty(options, CODE_VIEW_ITEM_OPTIONS_STATE, {\n\t\tconfigurable: false,\n\t\tenumerable: false,\n\t\tvalue: state\n\t});\n}\nfunction getItemOptionsState(options) {\n\treturn options[CODE_VIEW_ITEM_OPTIONS_STATE];\n}\nfunction defineItemOption(target, key, get) {\n\tObject.defineProperty(target, key, {\n\t\tconfigurable: false,\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn get(this);\n\t\t}\n\t});\n}\nconst DEFAULT_SCROLL_INTERACTION_RESTORE_DELAY_MS = 120;\nconst SCROLLING_CODE_OVERFLOW_FIX_VARIABLE = \"--diffs-overflow-override\";\nconst SCROLL_REBASE_CONTAINER_HEIGHT = 12e6;\nconst SCROLL_REBASE_TRIGGER_TOP = 1e6;\nconst SCROLL_REBASE_TARGET_TOP = 2e6;\nconst SCROLL_REBASE_TARGET_BOTTOM = SCROLL_REBASE_CONTAINER_HEIGHT - SCROLL_REBASE_TARGET_TOP;\nconst SCROLL_REBASE_THRESHOLD = SCROLL_REBASE_CONTAINER_HEIGHT - SCROLL_REBASE_TRIGGER_TOP;\nconst MOBILE_SAFARI = (() => {\n\tconst { navigator } = globalThis;\n\tconst userAgent = navigator.userAgent;\n\tconst isIOS = /iP(?:hone|ad|od)/.test(userAgent);\n\tconst isIPadOS = navigator.platform === \"MacIntel\" && navigator.maxTouchPoints > 1;\n\treturn (isIOS || isIPadOS) && /AppleWebKit/.test(userAgent) && /Safari/.test(userAgent) && !/(CriOS|FxiOS|EdgiOS|OPiOS)/.test(userAgent);\n})();\nvar CodeView = class CodeView {\n\tstatic __STOP = false;\n\tstatic __lastScrollPosition = 0;\n\ttype = \"advanced\";\n\tconfig = {\n\t\toverscrollSize: 200,\n\t\tintersectionObserverMargin: 0,\n\t\tresizeDebugging: false\n\t};\n\titems = [];\n\tidToItem = /* @__PURE__ */ new Map();\n\tselectedLines = null;\n\tinstanceToItem = /* @__PURE__ */ new Map();\n\tlayoutDirtyIndex;\n\tpendingLayoutReset;\n\trenderOptionsRevision = 0;\n\tslotCoordinator;\n\tslotSnapshot;\n\tscrollListeners = /* @__PURE__ */ new Set();\n\tscrollHeight = 0;\n\tcontainerHeight = -1;\n\tscrollTop = 0;\n\tscrollPageOffset = 0;\n\tscrollDirty = true;\n\tscrollInteractionFixTimer;\n\tpointerEventsDisabled = false;\n\tcodeOverflowFix = false;\n\theight = 0;\n\theightDirty = true;\n\twindowSpecs = {\n\t\ttop: 0,\n\t\tbottom: 0\n\t};\n\trenderState = {\n\t\tscrollTop: -1,\n\t\tfirstIndex: -1,\n\t\tlastIndex: -1,\n\t\tstickyHeight: 0,\n\t\tstickyTop: -1,\n\t\tstickyBottom: -1\n\t};\n\titemMetricsCache = DEFAULT_CODE_VIEW_FILE_METRICS;\n\tfileOptionsPrototype;\n\tdiffOptionsPrototype;\n\tpendingScrollTarget;\n\tpendingLayoutAnchor;\n\tshouldFixContainerFocus = false;\n\tscrollAnimation;\n\troot;\n\tresizeObserver;\n\tcontainer = document.createElement(\"div\");\n\tstickyContainer = document.createElement(\"div\");\n\tstickyOffset = document.createElement(\"div\");\n\telementPool = [];\n\telementPoolVersion = 0;\n\telementPoolTracker = /* @__PURE__ */ new WeakMap();\n\tpendingElementPool = [];\n\toptions;\n\tworkerManager;\n\tisContainerManaged;\n\tconstructor(options = { theme: DEFAULT_THEMES }, workerManager, isContainerManaged = false) {\n\t\tthis.options = options;\n\t\tthis.computeMetricsCache(options.itemMetrics);\n\t\tthis.fileOptionsPrototype = this.createFileOptionsPrototype();\n\t\tthis.diffOptionsPrototype = this.createDiffOptionsPrototype();\n\t\tthis.workerManager = workerManager;\n\t\tthis.isContainerManaged = isContainerManaged;\n\t\tthis.stickyOffset.style.contain = \"layout size\";\n\t\tthis.stickyContainer.style.position = \"sticky\";\n\t\tthis.stickyContainer.style.width = \"100%\";\n\t\tthis.stickyContainer.style.contain = \"layout style inline-size\";\n\t\tthis.stickyContainer.style.isolation = \"isolate\";\n\t\tthis.stickyContainer.style.display = \"flex\";\n\t\tthis.stickyContainer.style.flexDirection = \"column\";\n\t}\n\tgetLayout() {\n\t\treturn this.options.layout ?? DEFAULT_CODE_VIEW_LAYOUT;\n\t}\n\tcomputeMetricsCache(itemMetrics) {\n\t\tthis.itemMetricsCache = {\n\t\t\thunkLineCount: itemMetrics?.hunkLineCount ?? DEFAULT_CODE_VIEW_FILE_METRICS.hunkLineCount,\n\t\t\tlineHeight: itemMetrics?.lineHeight ?? DEFAULT_CODE_VIEW_FILE_METRICS.lineHeight,\n\t\t\tdiffHeaderHeight: itemMetrics?.diffHeaderHeight ?? DEFAULT_CODE_VIEW_FILE_METRICS.diffHeaderHeight,\n\t\t\thunkSeparatorHeight: itemMetrics?.hunkSeparatorHeight,\n\t\t\tspacing: itemMetrics?.spacing ?? DEFAULT_CODE_VIEW_FILE_METRICS.spacing,\n\t\t\tpaddingTop: itemMetrics?.paddingTop,\n\t\t\tpaddingBottom: itemMetrics?.paddingBottom\n\t\t};\n\t\treturn this.itemMetricsCache;\n\t}\n\tgetSmoothScrollSettings() {\n\t\treturn this.options.smoothScrollSettings ?? DEFAULT_SMOOTH_SCROLL_SETTINGS;\n\t}\n\tshouldDisablePointerEvents() {\n\t\treturn this.options.pointerEventsOnScroll !== true;\n\t}\n\tshouldValidateItemHeights() {\n\t\treturn DIFFS_DEVELOPMENT_BUILD && this.options.__devOnlyValidateItemHeights === true;\n\t}\n\tvalidateRenderedItemHeight(item) {\n\t\tif (!this.shouldValidateItemHeights() || item.element == null) return;\n\t\tconst stickySpecs = item.instance.getAdvancedStickySpecs();\n\t\tif (stickySpecs == null) return;\n\t\tconst expectedHeight = stickySpecs.height;\n\t\tconst actualHeight = item.element.getBoundingClientRect().height;\n\t\tif (expectedHeight === actualHeight) return;\n\t\tconsole.error(\"CodeView: reconciled item height does not match DOM height\", {\n\t\t\tid: item.item.id,\n\t\t\ttype: item.type,\n\t\t\tindex: item.index,\n\t\t\tversion: item.version,\n\t\t\texpectedHeight,\n\t\t\tactualHeight,\n\t\t\tdelta: actualHeight - expectedHeight,\n\t\t\tstickyTopOffset: stickySpecs.topOffset,\n\t\t\tvirtualizedHeight: item.instance.getVirtualizedHeight(),\n\t\t\ttop: item.top,\n\t\t\tscrollTop: this.getScrollTop(),\n\t\t\twindowSpecs: { ...this.windowSpecs },\n\t\t\telement: item.element,\n\t\t\tinstance: item.instance\n\t\t});\n\t}\n\tvalidateStickyContainerHeight() {\n\t\tif (!this.shouldValidateItemHeights()) return;\n\t\tconst { firstIndex, lastIndex, stickyHeight, stickyTop, stickyBottom } = this.renderState;\n\t\tif (firstIndex === -1 || lastIndex === -1) return;\n\t\tconst actualHeight = this.stickyContainer.getBoundingClientRect().height;\n\t\tif (Math.abs(actualHeight - stickyHeight) < 1) return;\n\t\tconsole.error(\"CodeView: sticky container height does not match computed layout\", {\n\t\t\tcomputedStickyHeight: stickyHeight,\n\t\t\tactualStickyHeight: actualHeight,\n\t\t\tdelta: actualHeight - stickyHeight,\n\t\t\tstickyTop,\n\t\t\tstickyBottom,\n\t\t\tfirstIndex,\n\t\t\tlastIndex,\n\t\t\tfirstStickySpecs: this.items[firstIndex]?.instance.getAdvancedStickySpecs(),\n\t\t\tlastStickySpecs: this.items[lastIndex]?.instance.getAdvancedStickySpecs(),\n\t\t\tscrollTop: this.getScrollTop(),\n\t\t\tscrollPageOffset: this.scrollPageOffset,\n\t\t\twindowSpecs: { ...this.windowSpecs },\n\t\t\tstickyContainer: this.stickyContainer\n\t\t});\n\t}\n\tclearScrollInteractionTimer() {\n\t\tif (this.scrollInteractionFixTimer != null) {\n\t\t\tclearTimeout(this.scrollInteractionFixTimer);\n\t\t\tthis.scrollInteractionFixTimer = void 0;\n\t\t}\n\t}\n\tsuspendScrollInteractions() {\n\t\tthis.clearScrollInteractionTimer();\n\t\tif (this.shouldDisablePointerEvents() && !this.pointerEventsDisabled) {\n\t\t\tthis.stickyContainer.style.pointerEvents = \"none\";\n\t\t\tthis.pointerEventsDisabled = true;\n\t\t}\n\t\tif (MOBILE_SAFARI && !this.codeOverflowFix) {\n\t\t\tthis.stickyContainer.style.setProperty(SCROLLING_CODE_OVERFLOW_FIX_VARIABLE, \"hidden\");\n\t\t\tthis.codeOverflowFix = true;\n\t\t}\n\t\tthis.scrollInteractionFixTimer = setTimeout(this.restoreScrollInteractions, DEFAULT_SCROLL_INTERACTION_RESTORE_DELAY_MS);\n\t}\n\trestoreScrollInteractions = () => {\n\t\tthis.clearScrollInteractionTimer();\n\t\tif (this.pointerEventsDisabled) {\n\t\t\tthis.stickyContainer.style.removeProperty(\"pointer-events\");\n\t\t\tthis.pointerEventsDisabled = false;\n\t\t}\n\t\tif (this.codeOverflowFix) {\n\t\t\tthis.stickyContainer.style.setProperty(SCROLLING_CODE_OVERFLOW_FIX_VARIABLE, \"auto\");\n\t\t\tthis.codeOverflowFix = false;\n\t\t}\n\t};\n\tsyncLayout() {\n\t\tconst { gap, paddingBottom, paddingTop } = this.getLayout();\n\t\tthis.stickyContainer.style.gap = `${gap}px`;\n\t\tthis.container?.style.setProperty(\"margin-top\", `${paddingTop}px`);\n\t\tthis.container?.style.setProperty(\"margin-bottom\", `${paddingBottom}px`);\n\t}\n\tsetup(root) {\n\t\tif (this.root != null) throw new Error(\"CodeView.setup: already setup\");\n\t\tthis.workerManager?.subscribeToThemeChanges(this);\n\t\tthis.root = root;\n\t\tthis.root.style.overflowAnchor = \"none\";\n\t\tif (!this.root.hasAttribute(\"tabindex\")) this.root.tabIndex = -1;\n\t\tthis.container ??= document.createElement(\"div\");\n\t\tthis.container.style.contain = \"layout style\";\n\t\tthis.syncLayout();\n\t\tthis.container.appendChild(this.stickyOffset);\n\t\tthis.container.appendChild(this.stickyContainer);\n\t\tthis.root.appendChild(this.container);\n\t\tthis.scrollDirty = true;\n\t\tthis.heightDirty = true;\n\t\tthis.resizeObserver = new ResizeObserver(this.handleResize);\n\t\tthis.resizeObserver.observe(this.stickyContainer);\n\t\tthis.root.addEventListener(\"scroll\", this.handleScroll, { passive: true });\n\t\tthis.root.addEventListener(\"wheel\", this.clearPendingScroll, { passive: true });\n\t\tthis.root.addEventListener(\"touchstart\", this.clearPendingScroll, { passive: true });\n\t\tthis.root.addEventListener(\"pointerdown\", this.clearPendingScroll, { passive: true });\n\t\tthis.root.addEventListener(\"keydown\", this.clearPendingScroll, { passive: true });\n\t\tthis.resizeObserver.observe(this.root);\n\t\tthis.render(true);\n\t\twindow.__INSTANCE = this;\n\t\twindow.__TOGGLE = () => {\n\t\t\tif (CodeView.__STOP) {\n\t\t\t\tCodeView.__STOP = false;\n\t\t\t\tthis.scrollTo({\n\t\t\t\t\ttype: \"position\",\n\t\t\t\t\tposition: CodeView.__lastScrollPosition,\n\t\t\t\t\tbehavior: \"instant\"\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tCodeView.__lastScrollPosition = this.getScrollTop();\n\t\t\t\tCodeView.__STOP = true;\n\t\t\t}\n\t\t};\n\t}\n\treset() {\n\t\tthis.restoreScrollInteractions();\n\t\tthis.cleanAllRenderedItems();\n\t\tthis.selectedLines = null;\n\t\tthis.items.length = 0;\n\t\tthis.idToItem.clear();\n\t\tthis.instanceToItem.clear();\n\t\tthis.layoutDirtyIndex = void 0;\n\t\tthis.pendingLayoutReset = void 0;\n\t\tthis.stickyContainer.textContent = \"\";\n\t\tthis.stickyOffset.style.height = \"\";\n\t\tthis.container?.style.removeProperty(\"height\");\n\t\tthis.containerHeight = -1;\n\t\tthis.windowSpecs = {\n\t\t\ttop: 0,\n\t\t\tbottom: 0\n\t\t};\n\t\tthis.pendingLayoutAnchor = void 0;\n\t\tthis.shouldFixContainerFocus = false;\n\t\tthis.height = 0;\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollPageOffset = 0;\n\t\tthis.scrollHeight = 0;\n\t\tthis.scrollDirty = true;\n\t\tthis.heightDirty = true;\n\t\tthis.resetRenderState();\n\t\tif (!this.isContainerManaged) this.flushSlotCoordinator();\n\t}\n\tcleanUp() {\n\t\tthis.reset();\n\t\tthis.clearElementPool();\n\t\tthis.restoreScrollInteractions();\n\t\tthis.workerManager?.unsubscribeToThemeChanges(this);\n\t\tthis.resizeObserver?.disconnect();\n\t\tthis.resizeObserver = void 0;\n\t\tthis.root?.removeEventListener(\"scroll\", this.handleScroll);\n\t\tthis.root?.removeEventListener(\"wheel\", this.clearPendingScroll);\n\t\tthis.root?.removeEventListener(\"touchstart\", this.clearPendingScroll);\n\t\tthis.root?.removeEventListener(\"pointerdown\", this.clearPendingScroll);\n\t\tthis.root?.removeEventListener(\"keydown\", this.clearPendingScroll);\n\t\tthis.root?.style.removeProperty(\"overflow-anchor\");\n\t\tthis.container?.remove();\n\t\tthis.stickyOffset.remove();\n\t\tthis.stickyContainer.remove();\n\t\tthis.stickyContainer.textContent = \"\";\n\t\tthis.root = void 0;\n\t\tthis.container = void 0;\n\t}\n\tcleanAllRenderedItems() {\n\t\tif (this.renderState.firstIndex === -1) return;\n\t\tfor (let index = this.renderState.firstIndex; index <= this.renderState.lastIndex; index++) {\n\t\t\tconst item = this.items[index];\n\t\t\tif (item == null) throw new Error(`CodeView.cleanAllRenderedItems: Item does not exist at index: ${index}`);\n\t\t\tthis.releaseRenderedItem(item);\n\t\t}\n\t}\n\tprimeScrollTarget(target) {\n\t\tif (target.type === \"position\") return;\n\t\tconst item = this.idToItem.get(target.id);\n\t\tif (item == null) return;\n\t\titem.instance.primeHighlightCache();\n\t}\n\tgetElementPoolLimit() {\n\t\tconst viewportSize = this.getHeight() + this.config.overscrollSize * 2;\n\t\tconst { diffHeaderHeight } = this.itemMetricsCache;\n\t\treturn Math.max(8, Math.ceil(viewportSize / Math.max(diffHeaderHeight, 10)) + 1) * (this.isContainerManaged ? 2 : 1);\n\t}\n\tacquireElement() {\n\t\tthis.promotePendingPooledElements();\n\t\tlet element = this.elementPool.pop();\n\t\twhile (element != null && !this.isElementPoolGenerationCurrent(element)) element = this.elementPool.pop();\n\t\telement ??= document.createElement(DIFFS_TAG_NAME);\n\t\tthis.markElementPoolGenerationCurrent(element);\n\t\treturn element;\n\t}\n\treleaseRenderedItem(item) {\n\t\tconst { element } = item;\n\t\tif (element != null && this.renderedItemOwnsFocus(element)) this.shouldFixContainerFocus = true;\n\t\titem.instance.cleanUp(true);\n\t\titem.element = void 0;\n\t\tif (element == null) return;\n\t\telement.remove();\n\t\tthis.cleanElement(element);\n\t\tthis.queueElementForPool(element);\n\t}\n\trenderedItemOwnsFocus(element) {\n\t\tconst { activeElement } = document;\n\t\treturn activeElement === element || element.contains(activeElement) || element.shadowRoot?.activeElement != null;\n\t}\n\tfixContainerFocus() {\n\t\tif (this.shouldFixContainerFocus) {\n\t\t\tthis.shouldFixContainerFocus = false;\n\t\t\tthis.root?.focus({ preventScroll: true });\n\t\t}\n\t}\n\tcleanElement(element) {\n\t\tconst { shadowRoot } = element;\n\t\tif (shadowRoot != null) {\n\t\t\tfor (const child of Array.from(shadowRoot.children)) if (!isPooledShadowChild(child)) child.remove();\n\t\t}\n\t\tif (!this.isContainerManaged) element.replaceChildren();\n\t}\n\tqueueElementForPool(element) {\n\t\tconst poolLimit = this.getElementPoolLimit();\n\t\tif (!this.isElementPoolGenerationCurrent(element) || this.getElementPoolSize() >= poolLimit) return;\n\t\tif (this.isElementClean(element)) this.elementPool.push(element);\n\t\telse this.pendingElementPool.push(element);\n\t}\n\tpromotePendingPooledElements() {\n\t\tif (this.pendingElementPool.length === 0) return;\n\t\tconst { pendingElementPool: pendingElements } = this;\n\t\tthis.pendingElementPool = [];\n\t\tconst poolLimit = this.getElementPoolLimit();\n\t\tfor (const element of pendingElements) if (this.isElementPoolGenerationCurrent(element) && this.isElementClean(element) && this.elementPool.length < poolLimit) this.elementPool.push(element);\n\t\telse if (this.isElementPoolGenerationCurrent(element) && this.getElementPoolSize() < poolLimit) this.pendingElementPool.push(element);\n\t}\n\tisElementClean(element) {\n\t\treturn element.childNodes.length === 0;\n\t}\n\tgetElementPoolSize() {\n\t\treturn this.elementPool.length + this.pendingElementPool.length;\n\t}\n\tclearElementPool() {\n\t\tthis.elementPool.length = 0;\n\t\tthis.pendingElementPool.length = 0;\n\t}\n\tinvalidateElementPool() {\n\t\tthis.elementPoolVersion++;\n\t\tthis.clearElementPool();\n\t}\n\tmarkElementPoolGenerationCurrent(element) {\n\t\tthis.elementPoolTracker.set(element, this.elementPoolVersion);\n\t}\n\tisElementPoolGenerationCurrent(element) {\n\t\treturn this.elementPoolTracker.get(element) === this.elementPoolVersion;\n\t}\n\tresolveEffectiveScrollBehavior(target, destination) {\n\t\tif (prefersReducedMotion()) return \"instant\";\n\t\tif (target.behavior !== \"smooth-auto\") return target.behavior ?? \"instant\";\n\t\treturn Math.abs(destination - this.getScrollTop()) <= this.getHeight() * 10 ? \"smooth\" : \"instant\";\n\t}\n\tscrollTo(target) {\n\t\tif (this.root == null) return;\n\t\tconst pendingTarget = this.normalizeScrollTarget(target);\n\t\tif (pendingTarget == null) return;\n\t\tconst destination = this.resolveScrollTargetTop(pendingTarget);\n\t\tif (destination == null) return;\n\t\tthis.primeScrollTarget(pendingTarget);\n\t\tif (this.resolveEffectiveScrollBehavior(pendingTarget, destination) === \"smooth\") this.scrollAnimation ??= {\n\t\t\tposition: this.getScrollTop(),\n\t\t\tvelocity: 0,\n\t\t\tlastTimestamp: performance.now()\n\t\t};\n\t\telse this.scrollAnimation = void 0;\n\t\tthis.suspendScrollInteractions();\n\t\tthis.pendingLayoutAnchor = void 0;\n\t\tthis.pendingScrollTarget = pendingTarget;\n\t\tthis.render();\n\t}\n\tsetSelectedLines(selection, options) {\n\t\tthis.applySelectedLines(selection, options);\n\t}\n\tgetSelectedLines() {\n\t\treturn this.selectedLines;\n\t}\n\tclearSelectedLines(options) {\n\t\tthis.applySelectedLines(null, options);\n\t}\n\tgetItem(itemId) {\n\t\treturn this.idToItem.get(itemId)?.item;\n\t}\n\tupdateItem(input) {\n\t\tconst item = this.idToItem.get(input.id);\n\t\tif (item == null) {\n\t\t\tconsole.error(`CodeView.updateItem: unknown item id \"${input.id}\"`);\n\t\t\treturn false;\n\t\t}\n\t\tif (!this.syncItemRecord(item, input)) return false;\n\t\tthis.markItemLayoutDirty(item);\n\t\tthis.scrollDirty = true;\n\t\tthis.render();\n\t\tthis.syncSelection();\n\t\treturn true;\n\t}\n\tupdateItemId(oldId, newId) {\n\t\tif (oldId === newId) return true;\n\t\tconst item = this.idToItem.get(oldId);\n\t\tif (item == null) {\n\t\t\tconsole.error(`CodeView.updateItemId: unknown item id \"${oldId}\"`);\n\t\t\treturn false;\n\t\t}\n\t\tif (this.idToItem.has(newId)) {\n\t\t\tconsole.error(`CodeView.updateItemId: duplicate item id \"${newId}\"`);\n\t\t\treturn false;\n\t\t}\n\t\tthis.idToItem.delete(oldId);\n\t\titem.item.id = newId;\n\t\tthis.idToItem.set(newId, item);\n\t\tthis.updateItemOptionsId(item.instance.options, newId);\n\t\tif (this.selectedLines?.id === oldId) {\n\t\t\tthis.selectedLines = {\n\t\t\t\t...this.selectedLines,\n\t\t\t\tid: newId\n\t\t\t};\n\t\t\tthis.options.onSelectedLinesChange?.(this.selectedLines);\n\t\t}\n\t\tthis.renamePendingScrollTarget(oldId, newId);\n\t\tthis.renamePendingLayoutAnchor(oldId, newId);\n\t\tthis.render();\n\t\treturn true;\n\t}\n\taddItem(input) {\n\t\tthis.addItems([input]);\n\t\tthis.syncSelection();\n\t}\n\taddItems(inputs) {\n\t\tthis.appendItemsInternal(inputs);\n\t\tthis.syncSelection();\n\t}\n\tsetItems(items) {\n\t\tif (items.length === 0) this.reset();\n\t\telse if (this.items.length === 0) this.appendItemsInternal(items);\n\t\telse if (!this.tryAppendItems(items)) this.reconcileItems(items);\n\t\tthis.syncSelection();\n\t}\n\t/**\n\t* Append new records to the viewer while preserving existing layout state.\n\t* This is the shared path for imperative adds and the append-only reconcile\n\t* fast path, so it measures new items immediately and only triggers render\n\t* once at the end.\n\t*/\n\tappendItemsInternal(inputs, render = true) {\n\t\tif (inputs.length === 0) return;\n\t\tconst layout = this.getLayout();\n\t\tlet nextTop = this.items.length === 0 ? 0 : this.scrollHeight + layout.gap;\n\t\tconst appendedTop = nextTop;\n\t\tfor (let index = 0; index < inputs.length; index++) {\n\t\t\tconst input = inputs[index];\n\t\t\tif (input == null) throw new Error(\"CodeView.appendItemsInternal: missing input item\");\n\t\t\tif (this.idToItem.has(input.id)) throw new Error(`CodeView.addItem: duplicate id \"${input.id}\"`);\n\t\t\tconst item = this.createItem(input, this.items.length, nextTop);\n\t\t\tthis.items.push(item);\n\t\t\tthis.idToItem.set(item.item.id, item);\n\t\t\tthis.instanceToItem.set(item.instance, item);\n\t\t\titem.height = prepareItemInstance(item);\n\t\t\tnextTop += item.height + layout.gap;\n\t\t}\n\t\tthis.scrollHeight = nextTop - layout.gap;\n\t\tthis.scrollDirty = true;\n\t\tif (render) if (this.canSkipRenderForAppend(appendedTop)) this.syncContainerHeight();\n\t\telse this.render();\n\t}\n\tcanSkipRenderForAppend(appendedTop) {\n\t\treturn this.container != null && this.renderState.firstIndex !== -1 && this.pendingScrollTarget == null && this.scrollAnimation == null && this.layoutDirtyIndex == null && appendedTop > this.windowSpecs.bottom;\n\t}\n\tonThemeChange() {\n\t\tthis.invalidateElementPool();\n\t}\n\tsetOptions(options) {\n\t\tif (options == null) return;\n\t\tthis.capturePendingLayoutAnchor();\n\t\tconst { options: prevOptions } = this;\n\t\tconst previousLayout = this.getLayout();\n\t\tconst { itemMetricsCache: previousItemMetrics } = this;\n\t\tif (shouldClearPool(prevOptions, options)) this.invalidateElementPool();\n\t\tthis.options = options;\n\t\tconst nextItemMetrics = this.computeMetricsCache(options.itemMetrics);\n\t\tconst itemMetricsChanged = !areObjectsEqual(previousItemMetrics, nextItemMetrics);\n\t\tconst layoutChanged = !areObjectsEqual(previousLayout, this.getLayout());\n\t\tif (layoutChanged) this.syncLayout();\n\t\tconst itemLayoutChanged = itemMetricsChanged || hasItemLayoutOptionChanged(prevOptions, options);\n\t\tif (itemLayoutChanged) {\n\t\t\tconst previousReset = this.pendingLayoutReset;\n\t\t\tthis.pendingLayoutReset = {\n\t\t\t\tmetrics: itemMetricsChanged ? nextItemMetrics : previousReset?.metrics,\n\t\t\t\tresetFileLayoutCache: true,\n\t\t\t\tresetDiffLayoutCache: true,\n\t\t\t\tincludeEstimatedDiffHeights: previousReset?.includeEstimatedDiffHeights === true || itemMetricsChanged || hasCodeViewDiffEstimateOptionChanged(prevOptions, options)\n\t\t\t};\n\t\t}\n\t\tif (layoutChanged || itemLayoutChanged) {\n\t\t\tthis.markLayoutDirtyFromIndex(0);\n\t\t\tthis.scrollDirty = true;\n\t\t}\n\t\tif (!areOptionsEqual(prevOptions, options)) this.renderOptionsRevision++;\n\t\tif (!this.isContainerManaged && this.items.length > 0) this.render();\n\t}\n\tcapturePendingLayoutAnchor() {\n\t\tif (this.root == null || this.items.length === 0 || this.pendingScrollTarget != null) return;\n\t\tthis.pendingLayoutAnchor = this.getScrollAnchor(this.getScrollTop());\n\t}\n\trender(immediate = false) {\n\t\tif (CodeView.__STOP) return;\n\t\tif (immediate) {\n\t\t\tdequeueRender(this.computeRenderRangeAndEmit);\n\t\t\tthis.computeRenderRangeAndEmit();\n\t\t} else queueRender(this.computeRenderRangeAndEmit);\n\t}\n\tinstanceChanged(instance, layoutDirty) {\n\t\tconst item = this.instanceToItem.get(instance);\n\t\tif (item == null) throw new Error(\"CodeView.instanceChanged: An instance has changed that is not registered\");\n\t\tif (layoutDirty) this.markItemLayoutDirty(item);\n\t\tthis.render();\n\t}\n\tgetWindowSpecs() {\n\t\treturn this.windowSpecs;\n\t}\n\tgetContainerElement() {\n\t\treturn this.root;\n\t}\n\tgetRenderedItems() {\n\t\tconst { firstIndex, lastIndex } = this.renderState;\n\t\tif (firstIndex === -1 || lastIndex === -1 || lastIndex < firstIndex) return [];\n\t\tconst renderedItems = [];\n\t\tfor (let index = firstIndex; index <= lastIndex; index++) {\n\t\t\tconst item = this.items[index];\n\t\t\tif (item?.element == null) continue;\n\t\t\tif (item.type === \"diff\") renderedItems.push({\n\t\t\t\tid: item.item.id,\n\t\t\t\ttype: \"diff\",\n\t\t\t\titem: item.item,\n\t\t\t\tversion: item.version,\n\t\t\t\telement: item.element,\n\t\t\t\tinstance: item.instance\n\t\t\t});\n\t\t\telse renderedItems.push({\n\t\t\t\tid: item.item.id,\n\t\t\t\ttype: \"file\",\n\t\t\t\titem: item.item,\n\t\t\t\tversion: item.version,\n\t\t\t\telement: item.element,\n\t\t\t\tinstance: item.instance\n\t\t\t});\n\t\t}\n\t\treturn renderedItems;\n\t}\n\tsetSlotCoordinator(coordinator) {\n\t\tif (coordinator === this.slotCoordinator) return false;\n\t\tthis.slotCoordinator = coordinator;\n\t\tthis.slotSnapshot = void 0;\n\t\treturn true;\n\t}\n\tgetSlotSnapshot(coordinator) {\n\t\treturn getSlotSnapshot(this.getRenderedItems(), coordinator);\n\t}\n\tsubscribeToScroll(listener) {\n\t\tthis.scrollListeners.add(listener);\n\t\treturn () => {\n\t\t\tthis.scrollListeners.delete(listener);\n\t\t};\n\t}\n\tgetLocalTopForInstance(instance) {\n\t\tconst item = this.instanceToItem.get(instance);\n\t\tif (item == null) throw new Error(\"CodeView.getLocalTopForInstance: unknown virtualized instance\");\n\t\treturn item.top;\n\t}\n\tgetTopForItem(id) {\n\t\tconst item = this.idToItem.get(id);\n\t\tif (item == null) return;\n\t\treturn item.top + this.getLayout().paddingTop;\n\t}\n\tcreateItem(input, index, top) {\n\t\tconst { itemMetricsCache: itemMetrics } = this;\n\t\tif (input.type === \"diff\") {\n\t\t\tconst instance = new VirtualizedFileDiff(this.createDiffOptions(input.id), this, itemMetrics, this.workerManager, this.isContainerManaged);\n\t\t\treturn {\n\t\t\t\ttype: \"diff\",\n\t\t\t\titem: input,\n\t\t\t\tversion: input.version,\n\t\t\t\tindex,\n\t\t\t\ttop,\n\t\t\t\theight: 0,\n\t\t\t\telement: void 0,\n\t\t\t\trenderedOptionsRevision: this.renderOptionsRevision,\n\t\t\t\tinstance\n\t\t\t};\n\t\t}\n\t\tconst instance = new VirtualizedFile(this.createFileOptions(input.id), this, itemMetrics, this.workerManager, this.isContainerManaged);\n\t\treturn {\n\t\t\ttype: \"file\",\n\t\t\titem: input,\n\t\t\tversion: input.version,\n\t\t\tindex,\n\t\t\ttop,\n\t\t\theight: 0,\n\t\t\telement: void 0,\n\t\t\trenderedOptionsRevision: this.renderOptionsRevision,\n\t\t\tinstance\n\t\t};\n\t}\n\tapplySelectedLines(selection, options) {\n\t\tconst { selectedLines: prevSelection } = this;\n\t\tif (selection == null && prevSelection == null || selection != null && prevSelection?.id === selection.id && areSelectionsEqual(prevSelection.range, selection.range)) return;\n\t\tif (prevSelection != null && prevSelection.id !== selection?.id) this.idToItem.get(prevSelection.id)?.instance.setSelectedLines(null, { notify: false });\n\t\tthis.selectedLines = selection;\n\t\tthis.idToItem.get(selection?.id ?? \"\")?.instance.setSelectedLines(selection?.range ?? null, options);\n\t}\n\tsyncSelection() {\n\t\tif (this.selectedLines == null) return;\n\t\tconst item = this.idToItem.get(this.selectedLines.id);\n\t\tif (item == null) {\n\t\t\tthis.selectedLines = null;\n\t\t\treturn;\n\t\t}\n\t\titem.instance.setSelectedLines(this.selectedLines.range, { notify: false });\n\t}\n\trenamePendingScrollTarget(oldId, newId) {\n\t\tconst { pendingScrollTarget } = this;\n\t\tif (pendingScrollTarget == null || pendingScrollTarget.type === \"position\" || pendingScrollTarget.id !== oldId) return;\n\t\tthis.pendingScrollTarget = {\n\t\t\t...pendingScrollTarget,\n\t\t\tid: newId\n\t\t};\n\t}\n\trenamePendingLayoutAnchor(oldId, newId) {\n\t\tif (this.pendingLayoutAnchor?.id === oldId) this.pendingLayoutAnchor.id = newId;\n\t}\n\tcreateFileOptionsPrototype() {\n\t\tconst prototype = {};\n\t\tfor (const key of CODE_VIEW_FILE_OPTION_KEYS) defineItemOption(prototype, key, () => this.options[key]);\n\t\tdefineItemOption(prototype, \"stickyHeader\", () => this.options.stickyHeaders);\n\t\tdefineItemOption(prototype, \"collapsed\", (receiver) => this.getItemOptions(getItemOptionsState(receiver), \"file\")?.item.collapsed === true);\n\t\tfor (const key of CODE_VIEW_SHARED_CALLBACK_KEYS) this.defineItemSharedCallback(prototype, \"file\", key);\n\t\tfor (const key of CODE_VIEW_SELECTION_CALLBACK_KEYS) this.defineItemSelectionCallback(prototype, \"file\", key);\n\t\treturn prototype;\n\t}\n\tcreateDiffOptionsPrototype() {\n\t\tconst prototype = {};\n\t\tfor (const key of CODE_VIEW_DIFF_OPTION_KEYS) defineItemOption(prototype, key, () => this.options[key]);\n\t\tdefineItemOption(prototype, \"stickyHeader\", () => this.options.stickyHeaders);\n\t\tdefineItemOption(prototype, \"hunkSeparators\", () => this.options.hunkSeparators);\n\t\tdefineItemOption(prototype, \"collapsed\", (receiver) => this.getItemOptions(getItemOptionsState(receiver), \"diff\")?.item.collapsed === true);\n\t\tfor (const key of CODE_VIEW_SHARED_CALLBACK_KEYS) this.defineItemSharedCallback(prototype, \"diff\", key);\n\t\tfor (const key of CODE_VIEW_SELECTION_CALLBACK_KEYS) this.defineItemSelectionCallback(prototype, \"diff\", key);\n\t\treturn prototype;\n\t}\n\tcreateFileOptions(id) {\n\t\tconst options = Object.create(this.fileOptionsPrototype);\n\t\tdefineOptionsState(options, { id });\n\t\treturn options;\n\t}\n\tcreateDiffOptions(id) {\n\t\tconst options = Object.create(this.diffOptionsPrototype);\n\t\tdefineOptionsState(options, { id });\n\t\treturn options;\n\t}\n\tupdateItemOptionsId(options, id) {\n\t\tgetItemOptionsState(options).id = id;\n\t}\n\tgetItemOptions(state, mode) {\n\t\tconst item = this.idToItem.get(state.id);\n\t\tif (item == null || item.type !== mode) return;\n\t\treturn item;\n\t}\n\tdefineItemSharedCallback(options, mode, key) {\n\t\tdefineItemOption(options, key, (receiver) => {\n\t\t\tif (this.options[key] == null) return;\n\t\t\tconst state = getItemOptionsState(receiver);\n\t\t\tconst callbackCache = state.callbackCache ??= {};\n\t\t\tlet wrapped = callbackCache[key];\n\t\t\tif (wrapped == null) {\n\t\t\t\twrapped = ((...args) => {\n\t\t\t\t\tconst latest = this.getItemOptions(state, mode);\n\t\t\t\t\tif (latest == null) return;\n\t\t\t\t\tconst callback = this.options[key];\n\t\t\t\t\treturn callback?.(...args, latest);\n\t\t\t\t});\n\t\t\t\tcallbackCache[key] = wrapped;\n\t\t\t}\n\t\t\treturn wrapped;\n\t\t});\n\t}\n\tdefineItemSelectionCallback(options, mode, key) {\n\t\tdefineItemOption(options, key, (receiver) => {\n\t\t\tif (this.options.enableLineSelection !== true) return;\n\t\t\tconst state = getItemOptionsState(receiver);\n\t\t\tconst callbackCache = state.callbackCache ??= {};\n\t\t\tlet wrapped = callbackCache[key];\n\t\t\tif (wrapped == null) {\n\t\t\t\twrapped = ((range) => {\n\t\t\t\t\tconst latest = this.getItemOptions(state, mode);\n\t\t\t\t\tif (latest == null) return;\n\t\t\t\t\tconst selection = range == null ? null : {\n\t\t\t\t\t\tid: latest.item.id,\n\t\t\t\t\t\trange\n\t\t\t\t\t};\n\t\t\t\t\tif (this.options.controlledSelection !== true) {\n\t\t\t\t\t\tif (range != null || this.selectedLines?.id === latest.item.id) this.applySelectedLines(selection, { notify: false });\n\t\t\t\t\t}\n\t\t\t\t\tthis.options.onSelectedLinesChange?.(selection);\n\t\t\t\t\tconst callback = this.options[key];\n\t\t\t\t\treturn callback?.(range, latest);\n\t\t\t\t});\n\t\t\t\tcallbackCache[key] = wrapped;\n\t\t\t}\n\t\t\treturn wrapped;\n\t\t});\n\t}\n\t/**\n\t* Track the earliest index whose measured layout may now be stale. Later\n\t* render passes relayout from this point forward so we do not have to rebuild\n\t* positions for the whole list after every change.\n\t*/\n\tmarkLayoutDirtyFromIndex(index) {\n\t\tthis.layoutDirtyIndex = Math.min(this.layoutDirtyIndex ?? index, index);\n\t}\n\t/**\n\t* Mark the earliest affected item as layout-dirty after an imperative change.\n\t* Each record carries its current array index so this stays O(1) even when\n\t* the viewer holds a very large number of items.\n\t*/\n\tmarkItemLayoutDirty(item) {\n\t\tif (this.items[item.index] !== item) throw new Error(`CodeView.markItemLayoutDirty: unknown item id \"${item.item.id}\"`);\n\t\tthis.markLayoutDirtyFromIndex(item.index);\n\t}\n\t/**\n\t* Detect the common controlled-update case where the new list simply extends\n\t* the existing ordered prefix. When that happens we can reuse every current\n\t* record in place, sync any versioned payload changes, and append only the new\n\t* tail instead of rebuilding the whole list.\n\t*/\n\ttryAppendItems(items) {\n\t\tif (items.length <= this.items.length) return false;\n\t\tfor (let index = 0; index < this.items.length; index++) {\n\t\t\tconst existingItem = this.items[index];\n\t\t\tif (existingItem == null) throw new Error(\"CodeView.tryAppendItems: missing existing item\");\n\t\t\tconst nextItem = items[index];\n\t\t\tif (nextItem == null || existingItem.item.id !== nextItem.id || existingItem.type !== nextItem.type) return false;\n\t\t}\n\t\tfor (let index = 0; index < this.items.length; index++) {\n\t\t\tconst existingItem = this.items[index];\n\t\t\tif (existingItem == null) throw new Error(\"CodeView.tryAppendItems: missing existing item\");\n\t\t\tconst nextItem = items[index];\n\t\t\tif (nextItem == null) throw new Error(\"CodeView.tryAppendItems: append candidate missing prefix item\");\n\t\t\tif (this.syncItemRecord(existingItem, nextItem)) this.markLayoutDirtyFromIndex(index);\n\t\t}\n\t\tthis.appendItemsInternal(items.slice(this.items.length), false);\n\t\tthis.scrollDirty = true;\n\t\tthis.render();\n\t\treturn true;\n\t}\n\t/**\n\t* Reconcile a new controlled item list against the existing records by id.\n\t* This reuses records and instances when type matches, cleans up removed\n\t* records, rebuilds the lookup maps, and marks layout dirty whenever order,\n\t* membership, or versioned item data changes.\n\t*/\n\treconcileItems(items) {\n\t\tconst { items: previousItems, idToItem: previousById } = this;\n\t\tconst removedItems = new Set(previousItems);\n\t\tconst nextItems = [];\n\t\tconst nextIdToItem = /* @__PURE__ */ new Map();\n\t\tconst nextInstanceToItem = /* @__PURE__ */ new Map();\n\t\tlet firstDirtyIndex;\n\t\tfor (let index = 0; index < items.length; index++) {\n\t\t\tconst input = items[index];\n\t\t\tif (input == null) throw new Error(\"CodeView.reconcileItems: missing input item\");\n\t\t\tif (nextIdToItem.has(input.id)) throw new Error(`CodeView.setItems: duplicate id \"${input.id}\"`);\n\t\t\tconst previousItem = previousById.get(input.id);\n\t\t\tconst item = previousItem != null && previousItem.type === input.type ? previousItem : this.createItem(input, index, 0);\n\t\t\titem.index = index;\n\t\t\tif (previousItem != null && previousItem.type === input.type) {\n\t\t\t\tremovedItems.delete(previousItem);\n\t\t\t\tif (this.syncItemRecord(item, input)) firstDirtyIndex = Math.min(firstDirtyIndex ?? index, index);\n\t\t\t} else firstDirtyIndex = Math.min(firstDirtyIndex ?? index, index);\n\t\t\tif (previousItems[index] !== item) firstDirtyIndex = Math.min(firstDirtyIndex ?? index, index);\n\t\t\tnextItems.push(item);\n\t\t\tnextIdToItem.set(input.id, item);\n\t\t\tnextInstanceToItem.set(item.instance, item);\n\t\t}\n\t\tfor (let index = 0; index < previousItems.length; index++) {\n\t\t\tconst removedItem = previousItems[index];\n\t\t\tif (removedItem == null || !removedItems.has(removedItem)) continue;\n\t\t\tthis.releaseRenderedItem(removedItem);\n\t\t\tconst dirtyIndex = Math.max(nextItems.length - 1, 0);\n\t\t\tfirstDirtyIndex = Math.min(firstDirtyIndex ?? dirtyIndex, dirtyIndex);\n\t\t}\n\t\tif (firstDirtyIndex == null) return;\n\t\tthis.items = nextItems;\n\t\tthis.idToItem = nextIdToItem;\n\t\tthis.instanceToItem = nextInstanceToItem;\n\t\tif (this.renderState.firstIndex >= nextItems.length) this.resetRenderState();\n\t\telse if (this.renderState.lastIndex >= nextItems.length) this.renderState.lastIndex = nextItems.length - 1;\n\t\tthis.markLayoutDirtyFromIndex(firstDirtyIndex);\n\t\tthis.scrollDirty = true;\n\t\tthis.render();\n\t}\n\t/**\n\t* Update a reused record from the latest controlled item only when its item\n\t* version changes. Matching versions mean CodeView keeps the current record\n\t* snapshot, which lets imperative updates remain in place until the caller\n\t* intentionally publishes a newer version.\n\t*/\n\tsyncItemRecord(item, nextItem) {\n\t\tif (item.type !== nextItem.type) throw new Error(`CodeView.syncItemRecord: type mismatch for id \"${nextItem.id}\"`);\n\t\tif (item.version === nextItem.version) return false;\n\t\titem.item = nextItem;\n\t\titem.version = nextItem.version;\n\t\titem.renderedOptionsRevision = -1;\n\t\treturn true;\n\t}\n\tgetMaxScrollTopForHeight(scrollHeight) {\n\t\tconst { paddingBottom, paddingTop } = this.getLayout();\n\t\treturn Math.max(paddingTop + scrollHeight + paddingBottom - this.getHeight(), 0);\n\t}\n\tgetMaxScrollTop() {\n\t\treturn this.getMaxScrollTopForHeight(this.getScrollHeight());\n\t}\n\tshouldRebaseScroll() {\n\t\treturn this.getMaxScrollTop() > SCROLL_REBASE_THRESHOLD;\n\t}\n\tgetPagedScrollHeight() {\n\t\treturn this.shouldRebaseScroll() ? Math.min(this.getScrollHeight(), SCROLL_REBASE_CONTAINER_HEIGHT) : this.getScrollHeight();\n\t}\n\tgetMaxPagedScrollTop() {\n\t\treturn this.getMaxScrollTopForHeight(this.getPagedScrollHeight());\n\t}\n\tclampPagedScrollTop(value) {\n\t\tconst maxScroll = this.getMaxPagedScrollTop();\n\t\treturn Math.max(0, Math.min(value, maxScroll));\n\t}\n\t/**\n\t* Clamps a logical scroll position to the min/max allowable scroll range\n\t* based on the full computed content height.\n\t*/\n\tclampScrollTop(value) {\n\t\tconst maxScroll = this.getMaxScrollTop();\n\t\treturn Math.max(0, Math.min(value, maxScroll));\n\t}\n\tgetMaxScrollPageOffset() {\n\t\treturn Math.max(this.getMaxScrollTop() - this.getMaxPagedScrollTop(), 0);\n\t}\n\tclampScrollPageOffset(value) {\n\t\tconst maxOffset = this.getMaxScrollPageOffset();\n\t\treturn Math.max(0, Math.min(value, maxOffset));\n\t}\n\tresolveScrollPageWindow(scrollTop, preferredPagedScrollTop) {\n\t\tlet pagedScrollTop = roundToDevicePixel(this.clampPagedScrollTop(preferredPagedScrollTop));\n\t\tlet scrollPageOffset = this.clampScrollPageOffset(scrollTop - pagedScrollTop);\n\t\tpagedScrollTop = roundToDevicePixel(this.clampPagedScrollTop(scrollTop - scrollPageOffset));\n\t\tscrollPageOffset = this.clampScrollPageOffset(scrollTop - pagedScrollTop);\n\t\treturn {\n\t\t\tpagedScrollTop,\n\t\t\tscrollPageOffset\n\t\t};\n\t}\n\t/**\n\t* Resolve how a logical scrollTop maps onto the reusable paged scroll window\n\t* without mutating the current page offset.\n\t*/\n\tresolvePagedScrollPosition(logicalScrollTop) {\n\t\tif (!this.shouldRebaseScroll()) return {\n\t\t\tpagedScrollTop: this.clampPagedScrollTop(logicalScrollTop),\n\t\t\tscrollPageOffset: 0\n\t\t};\n\t\tconst currentPageOffset = this.clampScrollPageOffset(this.scrollPageOffset);\n\t\tconst pagedScrollTop = logicalScrollTop - currentPageOffset;\n\t\tconst pagedMaxScrollTop = this.getMaxPagedScrollTop();\n\t\tconst maxRebaseOffset = this.getMaxScrollPageOffset();\n\t\tconst shouldMoveDown = pagedScrollTop > SCROLL_REBASE_THRESHOLD && currentPageOffset < maxRebaseOffset;\n\t\tconst shouldMoveUp = pagedScrollTop < SCROLL_REBASE_TRIGGER_TOP && currentPageOffset > 0;\n\t\tif (pagedScrollTop < 0 || pagedScrollTop > pagedMaxScrollTop || shouldMoveDown || shouldMoveUp) return this.resolveScrollPageWindow(logicalScrollTop, shouldMoveUp ? Math.min(SCROLL_REBASE_TARGET_BOTTOM, pagedMaxScrollTop) : SCROLL_REBASE_TARGET_TOP);\n\t\treturn {\n\t\t\tpagedScrollTop: roundToDevicePixel(this.clampPagedScrollTop(pagedScrollTop)),\n\t\t\tscrollPageOffset: currentPageOffset\n\t\t};\n\t}\n\tneedsScrollPageUpdate(logicalScrollTop) {\n\t\tconst roundedScrollTop = roundToDevicePixel(this.clampScrollTop(logicalScrollTop));\n\t\tconst { scrollPageOffset } = this.resolvePagedScrollPosition(roundedScrollTop);\n\t\treturn scrollPageOffset !== this.scrollPageOffset;\n\t}\n\tgetPagedLayoutTop(logicalTop) {\n\t\tif (!this.shouldRebaseScroll()) return logicalTop;\n\t\treturn Math.max(logicalTop - this.scrollPageOffset, 0);\n\t}\n\tgetStickyHeaderOffset() {\n\t\treturn this.options.stickyHeaders === true && this.options.disableFileHeader !== true ? this.itemMetricsCache.diffHeaderHeight : 0;\n\t}\n\tgetScrollTargetRect(target) {\n\t\tconst item = this.idToItem.get(target.id);\n\t\tif (item == null) {\n\t\t\tconsole.warn(`CodeView.scrollTo: unknown item id \"${target.id}\"`);\n\t\t\treturn;\n\t\t}\n\t\tif (target.type === \"item\") return {\n\t\t\ttop: item.top,\n\t\t\theight: item.height\n\t\t};\n\t\tif (target.type === \"range\") {\n\t\t\tconst rangePosition = this.getRangeScrollPosition(item, target);\n\t\t\tif (rangePosition == null) {\n\t\t\t\tconsole.warn(`CodeView.scrollTo: unable to resolve range ${formatSelectedLineRange(target.range)} for item \"${target.id}\"`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ttop: item.top + rangePosition.top,\n\t\t\t\theight: rangePosition.height\n\t\t\t};\n\t\t}\n\t\tconst linePosition = this.getLineScrollPosition(item, target);\n\t\tif (linePosition == null) {\n\t\t\tconsole.warn(`CodeView.scrollTo: unable to resolve line ${target.lineNumber} for item \"${target.id}\"`);\n\t\t\treturn;\n\t\t}\n\t\treturn {\n\t\t\ttop: item.top + linePosition.top,\n\t\t\theight: linePosition.height\n\t\t};\n\t}\n\tnormalizeScrollTarget(target) {\n\t\tif (target.type === \"position\" || target.align !== \"nearest\") return target;\n\t\tconst rect = this.getScrollTargetRect(target);\n\t\tif (rect == null) return;\n\t\tconst offset = target.offset ?? 0;\n\t\tconst targetTop = this.getLayout().paddingTop + rect.top;\n\t\tconst targetBottom = targetTop + rect.height;\n\t\tconst currentTop = this.getScrollTop();\n\t\tconst visibleTop = currentTop + (target.type === \"line\" || target.type === \"range\" ? this.getStickyHeaderOffset() : 0);\n\t\tconst visibleBottom = currentTop + this.getHeight();\n\t\tif (targetTop - offset <= visibleTop && targetBottom + offset >= visibleBottom) return;\n\t\tif (targetTop - offset < visibleTop) return {\n\t\t\t...target,\n\t\t\talign: \"start\"\n\t\t};\n\t\tif (targetBottom + offset > visibleBottom) return {\n\t\t\t...target,\n\t\t\talign: \"end\"\n\t\t};\n\t}\n\t/**\n\t* Resolve a target's scroll position\n\t\n\t* Returns `undefined` when we can't resolve a target for whatever reason\n\t*/\n\tresolveScrollTargetTop(target) {\n\t\tif (target.type === \"position\") {\n\t\t\tconst clampedPosition = this.clampScrollTop(target.position);\n\t\t\treturn clampedPosition !== target.position ? clampedPosition : this.clampScrollTop(target.position - this.getStickyHeaderOffset());\n\t\t}\n\t\tconst item = this.idToItem.get(target.id);\n\t\tif (item == null) {\n\t\t\tconsole.warn(`CodeView.scrollTo: unknown item id \"${target.id}\"`);\n\t\t\treturn;\n\t\t}\n\t\tif (target.type === \"item\") return this.clampScrollTop(this.resolveAlignedScrollPosition(item.top, item.height, target.align, target.offset));\n\t\tif (target.type === \"range\") {\n\t\t\tconst rangePosition = this.getRangeScrollPosition(item, target);\n\t\t\tif (rangePosition == null) {\n\t\t\t\tconsole.warn(`CodeView.scrollTo: unable to resolve range ${formatSelectedLineRange(target.range)} for item \"${target.id}\"`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn this.clampScrollTop(this.resolveAlignedScrollPosition(item.top + rangePosition.top, rangePosition.height, target.align, target.offset, this.getStickyHeaderOffset()));\n\t\t}\n\t\tconst linePosition = this.getLineScrollPosition(item, target);\n\t\tif (linePosition == null) {\n\t\t\tconsole.warn(`CodeView.scrollTo: unable to resolve line ${target.lineNumber} for item \"${target.id}\"`);\n\t\t\treturn;\n\t\t}\n\t\treturn this.clampScrollTop(this.resolveAlignedScrollPosition(item.top + linePosition.top, linePosition.height, target.align, target.offset, this.getStickyHeaderOffset()));\n\t}\n\t/**\n\t* Given an existing scroll target (scroll top and height), figure out the\n\t* correct scroll position to target based on the desired alignment, offset\n\t* and stickyOffset if necessary\n\t*/\n\tresolveAlignedScrollPosition(targetTop, targetHeight, align, offset = 0, stickyOffset = 0) {\n\t\ttargetTop += this.getLayout().paddingTop;\n\t\tconst viewportHeight = this.getHeight();\n\t\tif (align === \"center\" && targetHeight + offset < viewportHeight) return targetTop - (viewportHeight - targetHeight) / 2 + offset;\n\t\tif (align === \"end\") return targetTop - (viewportHeight - targetHeight) + offset;\n\t\treturn targetTop - stickyOffset - offset;\n\t}\n\tgetLineScrollPosition(item, target) {\n\t\tif (item.type === \"diff\") return item.instance.getLinePosition(target.lineNumber, target.side);\n\t\treturn item.instance.getLinePosition(target.lineNumber);\n\t}\n\tgetRangeScrollPosition(item, target) {\n\t\tconst { range } = target;\n\t\tconst startPosition = this.getLineScrollPosition(item, {\n\t\t\ttype: \"line\",\n\t\t\tid: target.id,\n\t\t\tlineNumber: range.start,\n\t\t\tside: range.side\n\t\t});\n\t\tconst endPosition = this.getLineScrollPosition(item, {\n\t\t\ttype: \"line\",\n\t\t\tid: target.id,\n\t\t\tlineNumber: range.end,\n\t\t\tside: range.endSide ?? range.side\n\t\t});\n\t\tif (startPosition == null || endPosition == null) return;\n\t\tconst startTop = startPosition.top;\n\t\tconst startBottom = startTop + startPosition.height;\n\t\tconst endTop = endPosition.top;\n\t\tconst endBottom = endTop + endPosition.height;\n\t\tconst top = Math.min(startTop, endTop);\n\t\treturn {\n\t\t\ttop,\n\t\t\theight: Math.max(startBottom, endBottom) - top\n\t\t};\n\t}\n\t/**\n\t* Determine target scroll position for current frame.\n\t*\n\t* If there's no pendingScrollTarget then we just return the current scroll\n\t* position\n\t*\n\t* If there's a pendingScrollTarget then we depend on whether there's a\n\t* smooth scroll animation or not. If not just return the destination, or\n\t* compute next position given the smooth scroll spring physics\n\t*/\n\tcomputeTargetScrollTopForFrame(scrollTop, frameTimestamp) {\n\t\tif (this.pendingScrollTarget == null) return scrollTop;\n\t\tconst destination = this.resolveScrollTargetTop(this.pendingScrollTarget);\n\t\tif (destination == null) return scrollTop;\n\t\tconst { scrollAnimation } = this;\n\t\tif (scrollAnimation == null) return destination;\n\t\treturn this.computeSpringStep(scrollAnimation, destination, frameTimestamp).position;\n\t}\n\t/**\n\t* Closed-form critical-damped ODE step.\n\t*\n\t* Stable at any dt (Euler would blow up once ω·dt ≳ 1), so this survives\n\t* big RAF gaps (tab-wake, offscreen frames) and resize-driven ticks that\n\t* fire outside the normal RAF cadence.\n\t*/\n\tcomputeSpringStep(animation, destination, frameTimestamp) {\n\t\tconst dt = Math.max(0, frameTimestamp - animation.lastTimestamp);\n\t\tconst { omega } = this.getSmoothScrollSettings();\n\t\tconst decay = Math.exp(-omega * dt);\n\t\tconst displacement = animation.position - destination;\n\t\tconst springCoeff = animation.velocity + omega * displacement;\n\t\treturn {\n\t\t\tposition: destination + (displacement + springCoeff * dt) * decay,\n\t\t\tvelocity: (springCoeff * (1 - omega * dt) - omega * displacement) * decay\n\t\t};\n\t}\n\t/**\n\t* For any given pendingScrollTarget, updates any in flight smooth scroll\n\t* animations and returns the target scrollTop to move towards\n\t*\n\t* Resolves the animation based on frame time and adopts any necessary scroll\n\t* anchoring corrections if necessary\n\t*/\n\tadvanceScrollAnimation(frameTimestamp, anchorDelta) {\n\t\tif (this.pendingScrollTarget == null) return;\n\t\tconst destination = this.resolveScrollTargetTop(this.pendingScrollTarget);\n\t\tif (destination == null) {\n\t\t\tthis.pendingScrollTarget = void 0;\n\t\t\tthis.scrollAnimation = void 0;\n\t\t\treturn;\n\t\t}\n\t\tconst animation = this.scrollAnimation;\n\t\tif (animation == null) return destination;\n\t\tanimation.position += anchorDelta;\n\t\tconst { position, velocity } = this.computeSpringStep(animation, destination, frameTimestamp);\n\t\tanimation.lastTimestamp = frameTimestamp;\n\t\tanimation.position = position;\n\t\tanimation.velocity = velocity;\n\t\tconst { positionEpsilon, velocityEpsilon } = this.getSmoothScrollSettings();\n\t\tif (Math.abs(destination - position) <= positionEpsilon && Math.abs(velocity) <= velocityEpsilon) {\n\t\t\tanimation.position = destination;\n\t\t\tanimation.velocity = 0;\n\t\t\tthis.scrollAnimation = void 0;\n\t\t\treturn destination;\n\t\t}\n\t\treturn animation.position;\n\t}\n\tcomputeRenderRangeAndEmit = (timestamp = performance.now()) => {\n\t\tif (CodeView.__STOP || this.container == null) return;\n\t\tconst viewportHeight = this.getHeight();\n\t\tconst initialScrollTop = this.getScrollTop();\n\t\tlet scrollTopAfterLayout = initialScrollTop;\n\t\tlet computeScrollCorrection = this.pendingLayoutAnchor != null;\n\t\tlet scrollAnchor = this.getScrollAnchor(scrollTopAfterLayout);\n\t\tif (this.layoutDirtyIndex != null) {\n\t\t\tthis.recomputeLayout(this.layoutDirtyIndex, this.pendingLayoutReset);\n\t\t\tthis.layoutDirtyIndex = void 0;\n\t\t\tthis.pendingLayoutReset = void 0;\n\t\t\tcomputeScrollCorrection = true;\n\t\t}\n\t\tif (computeScrollCorrection && scrollAnchor != null) {\n\t\t\tconst anchoredScrollTopAfterLayout = this.resolveAnchoredScrollTop(scrollAnchor);\n\t\t\tif (anchoredScrollTopAfterLayout != null) {\n\t\t\t\tconst layoutAnchorDelta = anchoredScrollTopAfterLayout - scrollTopAfterLayout;\n\t\t\t\tscrollTopAfterLayout = anchoredScrollTopAfterLayout;\n\t\t\t\tif (this.scrollAnimation != null) this.scrollAnimation.position += layoutAnchorDelta;\n\t\t\t}\n\t\t}\n\t\tif (computeScrollCorrection) {\n\t\t\tscrollTopAfterLayout = this.clampScrollTop(scrollTopAfterLayout);\n\t\t\tthis.syncContainerHeight();\n\t\t}\n\t\tconst targetScrollTop = this.computeTargetScrollTopForFrame(scrollTopAfterLayout, timestamp);\n\t\tconst fitPerfectly = !computeScrollCorrection && (this.renderState.scrollTop === -1 || Math.abs(targetScrollTop - this.renderState.scrollTop) > viewportHeight + this.config.overscrollSize * 2);\n\t\tif (fitPerfectly) scrollAnchor = void 0;\n\t\tthis.windowSpecs = createWindowFromScrollPosition({\n\t\t\tscrollTop: targetScrollTop,\n\t\t\theight: viewportHeight,\n\t\t\tscrollHeight: this.getScrollHeight(),\n\t\t\tfitPerfectly,\n\t\t\tfitPerfectlyOverscroll: this.getFitPerfectlyOverscroll(),\n\t\t\toverscrollSize: this.config.overscrollSize\n\t\t});\n\t\tlet syncedScrollTop = initialScrollTop;\n\t\tif (this.pendingScrollTarget != null && targetScrollTop !== syncedScrollTop || this.needsScrollPageUpdate(targetScrollTop)) {\n\t\t\tthis.applyScrollFix(targetScrollTop, syncedScrollTop, this.windowSpecs);\n\t\t\tsyncedScrollTop = targetScrollTop;\n\t\t}\n\t\tconst { top, bottom } = this.windowSpecs;\n\t\tconst { firstIndex, lastIndex } = this.renderState;\n\t\tif (firstIndex >= 0) for (let index = firstIndex; index <= lastIndex; index++) {\n\t\t\tconst item = this.items[index];\n\t\t\tif (item == null) throw new Error(`CodeView.computeRenderRangeAndEmit: No item at index: ${index}`);\n\t\t\tif (!(item.top > top - item.height && item.top <= bottom)) this.releaseRenderedItem(item);\n\t\t}\n\t\tlet prevElement;\n\t\tconst updatedItems = /* @__PURE__ */ new Set();\n\t\tconst startingIndex = this.findFirstVisibleIndex(top);\n\t\tconst lastRenderedIndex = this.findLastVisibleIndex(bottom);\n\t\tfor (let itemIndex = startingIndex; itemIndex <= lastRenderedIndex; itemIndex++) {\n\t\t\tconst item = this.items[itemIndex];\n\t\t\tif (item == null) throw new Error(`CodeView.computeRenderRangeAndEmit: missing item`);\n\t\t\tconst { instance } = item;\n\t\t\tif (item.element == null) {\n\t\t\t\titem.element = this.acquireElement();\n\t\t\t\tsyncRenderedItemOrder(this.stickyContainer, item.element, prevElement);\n\t\t\t\tinstance.virtualizedSetup();\n\t\t\t\tif (renderItem(item, item.element)) {\n\t\t\t\t\titem.renderedOptionsRevision = this.renderOptionsRevision;\n\t\t\t\t\tupdatedItems.add(item);\n\t\t\t\t}\n\t\t\t\tprevElement = item.element;\n\t\t\t} else {\n\t\t\t\tsyncRenderedItemOrder(this.stickyContainer, item.element, prevElement);\n\t\t\t\tif (renderItem(item, void 0, item.renderedOptionsRevision !== this.renderOptionsRevision)) {\n\t\t\t\t\titem.renderedOptionsRevision = this.renderOptionsRevision;\n\t\t\t\t\tupdatedItems.add(item);\n\t\t\t\t}\n\t\t\t\tprevElement = item.element;\n\t\t\t}\n\t\t}\n\t\tthis.renderState.firstIndex = startingIndex <= lastRenderedIndex ? startingIndex : -1;\n\t\tthis.renderState.lastIndex = lastRenderedIndex;\n\t\tthis.flushSlotCoordinator();\n\t\tthis.reconcileRenderedItems(updatedItems);\n\t\tthis.syncContainerHeight();\n\t\tthis.updateStickyPositioning();\n\t\tconst anchoredScrollTopAfterRender = scrollAnchor != null ? this.resolveAnchoredScrollTop(scrollAnchor) : void 0;\n\t\tif (scrollAnchor === this.pendingLayoutAnchor) this.pendingLayoutAnchor = void 0;\n\t\tconst postRenderAnchorDelta = anchoredScrollTopAfterRender != null ? anchoredScrollTopAfterRender - scrollTopAfterLayout : 0;\n\t\tlet postRenderScrollTop = targetScrollTop;\n\t\tlet shouldCheckPendingTargetSettled = false;\n\t\tif (this.pendingScrollTarget != null) {\n\t\t\tconst pendingTargetScrollTop = this.advanceScrollAnimation(timestamp, postRenderAnchorDelta);\n\t\t\tif (pendingTargetScrollTop != null) {\n\t\t\t\tpostRenderScrollTop = pendingTargetScrollTop;\n\t\t\t\tshouldCheckPendingTargetSettled = true;\n\t\t\t} else postRenderScrollTop = scrollTopAfterLayout;\n\t\t} else postRenderScrollTop = anchoredScrollTopAfterRender ?? targetScrollTop;\n\t\tif (postRenderScrollTop !== syncedScrollTop) {\n\t\t\tthis.applyScrollFix(postRenderScrollTop, syncedScrollTop, this.windowSpecs);\n\t\t\tsyncedScrollTop = postRenderScrollTop;\n\t\t}\n\t\tif (shouldCheckPendingTargetSettled && this.pendingScrollTarget != null && this.isPendingTargetSettled(this.pendingScrollTarget)) {\n\t\t\tthis.pendingScrollTarget = void 0;\n\t\t\tthis.scrollAnimation = void 0;\n\t\t}\n\t\tthis.renderState.scrollTop = roundToDevicePixel(syncedScrollTop);\n\t\tthis.flushManagers(updatedItems);\n\t\tthis.validateStickyContainerHeight();\n\t\tthis.fixContainerFocus();\n\t\tif (fitPerfectly || this.scrollAnimation != null) this.render();\n\t};\n\tflushManagers(updatedItems) {\n\t\tfor (const item of updatedItems) item.instance.flushManagers();\n\t}\n\tsyncContainerHeight() {\n\t\tconst pagedScrollHeight = this.getPagedScrollHeight();\n\t\tif (this.container == null || this.containerHeight === pagedScrollHeight) return;\n\t\tthis.container.style.height = `${pagedScrollHeight}px`;\n\t\tthis.containerHeight = pagedScrollHeight;\n\t}\n\tgetStickyBounds(windowSpecs) {\n\t\tconst { firstIndex, lastIndex } = windowSpecs != null ? {\n\t\t\tfirstIndex: this.findFirstVisibleIndex(windowSpecs.top),\n\t\t\tlastIndex: this.findLastVisibleIndex(windowSpecs.bottom)\n\t\t} : this.renderState;\n\t\tif (firstIndex === -1 || lastIndex === -1 || firstIndex > lastIndex) return;\n\t\tconst firstStickySpecs = this.items[firstIndex]?.instance.getAdvancedStickySpecs(windowSpecs);\n\t\tconst lastStickySpecs = this.items[lastIndex]?.instance.getAdvancedStickySpecs(windowSpecs);\n\t\tif (firstStickySpecs == null || lastStickySpecs == null) return;\n\t\treturn {\n\t\t\tstickyTop: this.getPagedLayoutTop(Math.max(firstStickySpecs.topOffset, 0)),\n\t\t\tstickyBottom: this.getPagedLayoutTop(lastStickySpecs.topOffset + lastStickySpecs.height)\n\t\t};\n\t}\n\tapplyStickyPositioning({ stickyTop, stickyBottom }) {\n\t\tconst height = this.getHeight();\n\t\tconst { itemMetricsCache: itemMetrics } = this;\n\t\tconst stickyContainerHeight = stickyBottom - stickyTop;\n\t\tthis.renderState.stickyHeight = stickyContainerHeight;\n\t\tthis.renderState.stickyTop = stickyTop;\n\t\tthis.renderState.stickyBottom = stickyBottom;\n\t\tthis.stickyOffset.style.height = `${stickyTop}px`;\n\t\tconst randomOffset = (Math.random() * itemMetrics.lineHeight >> 0) * -1;\n\t\tconst stickyJitter = -Math.max(stickyContainerHeight + randomOffset, 0) + height;\n\t\tthis.stickyContainer.style.top = `${stickyJitter}px`;\n\t\tthis.stickyContainer.style.bottom = `${stickyJitter + itemMetrics.diffHeaderHeight}px`;\n\t}\n\tsyncPagedScrollScaffolding(windowSpecs) {\n\t\tthis.syncContainerHeight();\n\t\tconst stickyBounds = this.getStickyBounds(windowSpecs);\n\t\tif (stickyBounds == null) return;\n\t\tthis.applyStickyPositioning(stickyBounds);\n\t}\n\treconcileRenderedItems(updatedItems) {\n\t\tconst { firstIndex, lastIndex } = this.renderState;\n\t\tif (firstIndex === -1) return;\n\t\tlet currentTop = -1;\n\t\tlet heightChanged = false;\n\t\tfor (let index = firstIndex; index < this.items.length; index++) {\n\t\t\tif (!heightChanged && index > lastIndex) break;\n\t\t\tconst item = this.items[index];\n\t\t\tif (item == null) throw new Error(\"CodeView.reconcileRenderedItems: Invalid item\");\n\t\t\tif (currentTop === -1) currentTop = item.top;\n\t\t\telse if (item.top !== currentTop) {\n\t\t\t\titem.top = currentTop;\n\t\t\t\titem.instance.syncVirtualizedTop();\n\t\t\t\theightChanged = true;\n\t\t\t}\n\t\t\tif (updatedItems == null ? index <= lastIndex : updatedItems.has(item)) {\n\t\t\t\tif (item.instance.reconcileHeights()) {\n\t\t\t\t\theightChanged = true;\n\t\t\t\t\titem.height = item.instance.getVirtualizedHeight();\n\t\t\t\t}\n\t\t\t\tthis.validateRenderedItemHeight(item);\n\t\t\t}\n\t\t\tcurrentTop += item.instance.getVirtualizedHeight();\n\t\t\tif (index < this.items.length - 1) currentTop += this.getLayout().gap;\n\t\t}\n\t\tif (heightChanged && currentTop != null) {\n\t\t\tthis.scrollDirty = true;\n\t\t\tthis.scrollHeight = currentTop;\n\t\t}\n\t}\n\tupdateStickyPositioning() {\n\t\tconst stickyBounds = this.getStickyBounds();\n\t\tif (stickyBounds == null) return;\n\t\tconst { stickyTop, stickyBottom } = stickyBounds;\n\t\tif (stickyBottom - stickyTop === this.renderState.stickyHeight && stickyTop === this.renderState.stickyTop && stickyBottom === this.renderState.stickyBottom) return;\n\t\tthis.applyStickyPositioning(stickyBounds);\n\t}\n\thandleScroll = () => {\n\t\tif (CodeView.__STOP) return;\n\t\tthis.suspendScrollInteractions();\n\t\tthis.scrollDirty = true;\n\t\tthis.notifyScroll();\n\t\tthis.render();\n\t};\n\tclearPendingScroll = () => {\n\t\tthis.pendingScrollTarget = void 0;\n\t\tthis.pendingLayoutAnchor = void 0;\n\t\tthis.scrollAnimation = void 0;\n\t};\n\thandleResize = (entries) => {\n\t\tfor (const entry of entries) if (entry.target === this.stickyContainer) {\n\t\t\tif (entry.borderBoxSize[0].blockSize !== this.renderState.stickyHeight) {\n\t\t\t\tconst currentScrollTop = this.getScrollTop();\n\t\t\t\tconst anchor = this.getScrollAnchor(currentScrollTop);\n\t\t\t\tthis.reconcileRenderedItems();\n\t\t\t\tthis.updateStickyPositioning();\n\t\t\t\tconst anchoredScrollTop = anchor != null ? this.resolveAnchoredScrollTop(anchor) : void 0;\n\t\t\t\tif (anchoredScrollTop != null) {\n\t\t\t\t\tconst resizeAnchorDelta = anchoredScrollTop - currentScrollTop;\n\t\t\t\t\tthis.applyScrollFix(anchoredScrollTop, currentScrollTop, this.windowSpecs);\n\t\t\t\t\tif (this.scrollAnimation != null) this.scrollAnimation.position += resizeAnchorDelta;\n\t\t\t\t}\n\t\t\t\tif (this.pendingScrollTarget != null && this.isPendingTargetSettled(this.pendingScrollTarget)) {\n\t\t\t\t\tthis.pendingScrollTarget = void 0;\n\t\t\t\t\tthis.scrollAnimation = void 0;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthis.scrollDirty = true;\n\t\t\tthis.heightDirty = true;\n\t\t\tthis.render();\n\t\t}\n\t};\n\t/**\n\t* Figure out scrollTop accounting for sticky header if enabled and\n\t* necessary\n\t*/\n\tgetScrollAnchorViewportTop(absoluteItemTop, scrollTop) {\n\t\treturn absoluteItemTop < scrollTop ? scrollTop + this.getStickyHeaderOffset() : scrollTop;\n\t}\n\t/**\n\t* Attempt to find a scroll anchor based on build in metrics of the existing\n\t* rendered files/diff.\n\t*\n\t* A scroll anchor represents the first fully visible element (in other\n\t* words, the first file or first line who's top is fully in the viewport).\n\t*/\n\tgetScrollAnchor(scrollTop) {\n\t\tif (this.pendingLayoutAnchor != null) return this.pendingLayoutAnchor;\n\t\tconst { firstIndex, lastIndex, stickyTop, stickyBottom } = this.renderState;\n\t\tif (firstIndex === -1 || lastIndex === -1) return;\n\t\tconst viewportHeight = this.getHeight();\n\t\tif (stickyTop === -1 || stickyBottom === -1) return;\n\t\tfor (let index = firstIndex; index <= lastIndex; index++) {\n\t\t\tconst item = this.items[index];\n\t\t\tif (item == null) continue;\n\t\t\tconst absoluteItemTop = this.getLayout().paddingTop + item.top;\n\t\t\tif (absoluteItemTop + item.height <= scrollTop) continue;\n\t\t\tif (absoluteItemTop >= scrollTop + viewportHeight) break;\n\t\t\tif (absoluteItemTop >= scrollTop) return {\n\t\t\t\ttype: \"item\",\n\t\t\t\tid: item.item.id,\n\t\t\t\tviewportOffset: absoluteItemTop - scrollTop\n\t\t\t};\n\t\t\tconst localViewportTop = this.getScrollAnchorViewportTop(absoluteItemTop, scrollTop) - absoluteItemTop;\n\t\t\tconst lineAnchor = item.instance.getNumericScrollAnchor(localViewportTop);\n\t\t\tif (lineAnchor != null) {\n\t\t\t\tconst absoluteLineTop = absoluteItemTop + lineAnchor.top;\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"line\",\n\t\t\t\t\tid: item.item.id,\n\t\t\t\t\tlineNumber: lineAnchor.lineNumber,\n\t\t\t\t\tside: lineAnchor.side,\n\t\t\t\t\tviewportOffset: absoluteLineTop - scrollTop\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\t/**\n\t* Given a scroll anchor, attempt to resolve a newly updated (and clamped)\n\t* scroll position to keep the anchored element in place.\n\t*\n\t* If we can't resolve a position for whatever reason, we'll return\n\t* undefined.\n\t*/\n\tresolveAnchoredScrollTop(anchor) {\n\t\tconst item = this.idToItem.get(anchor.id);\n\t\tif (item == null) return;\n\t\tconst { paddingTop } = this.getLayout();\n\t\tif (anchor.type === \"item\") {\n\t\t\tconst absoluteItemTop = paddingTop + item.top;\n\t\t\treturn this.clampScrollTop(absoluteItemTop - anchor.viewportOffset);\n\t\t}\n\t\tconst linePosition = item.type === \"diff\" ? item.instance.getLinePosition(anchor.lineNumber, anchor.side) : item.instance.getLinePosition(anchor.lineNumber);\n\t\tif (linePosition == null) return;\n\t\tconst absoluteLineTop = paddingTop + item.top + linePosition.top;\n\t\treturn this.clampScrollTop(absoluteLineTop - anchor.viewportOffset);\n\t}\n\t/**\n\t* Apply a device-pixel-rounded scroll position if it differs from the last\n\t* logical scrollTop synchronized into the paged scroll scaffold.\n\t*/\n\tapplyScrollFix(targetScrollTop, syncedScrollTop, windowSpecs) {\n\t\tif (this.root == null) return;\n\t\tconst roundedTargetScrollTop = roundToDevicePixel(this.clampScrollTop(targetScrollTop));\n\t\tconst roundedSyncedScrollTop = roundToDevicePixel(syncedScrollTop);\n\t\tconst { scrollPageOffset: previousPageOffset } = this;\n\t\tconst syncedPagedScrollTop = roundToDevicePixel(this.clampPagedScrollTop(roundedSyncedScrollTop - previousPageOffset));\n\t\tconst { pagedScrollTop, scrollPageOffset } = this.resolvePagedScrollPosition(roundedTargetScrollTop);\n\t\tconst targetPagedScrollTop = pagedScrollTop;\n\t\tconst rebaseChanged = previousPageOffset !== scrollPageOffset;\n\t\tif (roundedTargetScrollTop === this.renderState.scrollTop && roundedTargetScrollTop === roundedSyncedScrollTop && targetPagedScrollTop === syncedPagedScrollTop && !rebaseChanged) return;\n\t\tthis.suspendScrollInteractions();\n\t\tif (targetPagedScrollTop !== syncedPagedScrollTop || rebaseChanged) {\n\t\t\tthis.scrollPageOffset = scrollPageOffset;\n\t\t\tthis.syncPagedScrollScaffolding(windowSpecs);\n\t\t}\n\t\tif (targetPagedScrollTop !== syncedPagedScrollTop) this.root.scrollTo({\n\t\t\ttop: targetPagedScrollTop,\n\t\t\tbehavior: \"instant\"\n\t\t});\n\t\tthis.renderState.scrollTop = roundedTargetScrollTop;\n\t\tthis.scrollTop = roundedTargetScrollTop;\n\t\tthis.scrollDirty = false;\n\t}\n\t/**\n\t* Decide whether a pending programmatic scroll has reached its\n\t* destination and should be cleared.\n\t*/\n\tisPendingTargetSettled(target) {\n\t\tconst top = this.resolveScrollTargetTop(target);\n\t\tif (top == null) return true;\n\t\treturn roundToDevicePixel(this.getScrollTop()) === roundToDevicePixel(top);\n\t}\n\tgetScrollTop() {\n\t\tif (!this.scrollDirty) return this.scrollTop;\n\t\tthis.scrollDirty = false;\n\t\tconst rootScrollTop = this.root?.scrollTop ?? 0;\n\t\tthis.scrollTop = this.clampScrollTop(rootScrollTop + this.scrollPageOffset);\n\t\treturn this.scrollTop;\n\t}\n\tgetHeight() {\n\t\tif (!this.heightDirty) return this.height;\n\t\tthis.heightDirty = false;\n\t\tthis.height = this.root?.getBoundingClientRect().height ?? 0;\n\t\treturn this.height;\n\t}\n\tgetScrollHeight() {\n\t\treturn this.scrollHeight;\n\t}\n\tflushSlotCoordinator() {\n\t\tif (this.slotCoordinator == null) return;\n\t\tconst { onSnapshotChange } = this.slotCoordinator;\n\t\tconst slotSnapshot = getSlotSnapshot(this.getRenderedItems(), this.slotCoordinator);\n\t\tif (areSlotSnapshotsEqual(this.slotSnapshot, slotSnapshot)) return;\n\t\tthis.slotSnapshot = slotSnapshot;\n\t\tonSnapshotChange(slotSnapshot);\n\t}\n\tnotifyScroll() {\n\t\tif (this.scrollListeners.size === 0) return;\n\t\tconst scrollTop = this.getScrollTop();\n\t\tfor (const listener of this.scrollListeners) listener(scrollTop, this);\n\t}\n\t/**\n\t* Find the first item whose bottom edge crosses into the viewport window.\n\t* This lets scroll-time rendering jump directly near the visible range instead\n\t* of linearly scanning from the start of very large item lists.\n\t*/\n\tfindFirstVisibleIndex(top) {\n\t\tlet low = 0;\n\t\tlet high = this.items.length - 1;\n\t\tlet result = this.items.length;\n\t\twhile (low <= high) {\n\t\t\tconst mid = low + high >> 1;\n\t\t\tconst item = this.items[mid];\n\t\t\tif (item == null) throw new Error(\"CodeView.findFirstVisibleIndex: invalid item index\");\n\t\t\tif (item.top + item.height > top) {\n\t\t\t\tresult = mid;\n\t\t\t\thigh = mid - 1;\n\t\t\t} else low = mid + 1;\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t* Find the last item whose top edge is still within the viewport window.\n\t* Paired with findFirstVisibleIndex, this bounds the render loop to only the\n\t* slice of items that can actually intersect the current scroll range.\n\t*/\n\tfindLastVisibleIndex(bottom) {\n\t\tlet low = 0;\n\t\tlet high = this.items.length - 1;\n\t\tlet result = -1;\n\t\twhile (low <= high) {\n\t\t\tconst mid = low + high >> 1;\n\t\t\tconst item = this.items[mid];\n\t\t\tif (item == null) throw new Error(\"CodeView.findLastVisibleIndex: invalid item index\");\n\t\t\tif (item.top <= bottom) {\n\t\t\t\tresult = mid;\n\t\t\t\tlow = mid + 1;\n\t\t\t} else high = mid - 1;\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t* Recompute measured tops and heights starting from the earliest dirty item.\n\t* Earlier items keep their existing layout, while everything from startIndex\n\t* onward is remeasured so downstream positions and total scroll height stay\n\t* consistent after inserts, removals, or versioned item updates.\n\t*/\n\trecomputeLayout(startIndex = 0, reset) {\n\t\tif (this.items.length === 0) {\n\t\t\tthis.scrollHeight = 0;\n\t\t\treturn;\n\t\t}\n\t\tconst layout = this.getLayout();\n\t\tlet runningTop = 0;\n\t\tif (startIndex > 0) {\n\t\t\tconst previousItem = this.items[startIndex - 1];\n\t\t\tif (previousItem == null) throw new Error(\"CodeView.recomputeLayout: invalid dirty index\");\n\t\t\trunningTop = previousItem.top + previousItem.height + layout.gap;\n\t\t}\n\t\tfor (let index = startIndex; index < this.items.length; index++) {\n\t\t\tconst item = this.items[index];\n\t\t\tif (item == null) throw new Error(\"CodeView.recomputeLayout: invalid item index\");\n\t\t\titem.top = runningTop;\n\t\t\tif (item.type === \"diff\") item.height = item.instance.prepareCodeViewItem(item.item.fileDiff, runningTop, reset, item.item.annotations ?? []);\n\t\t\telse item.height = item.instance.prepareCodeViewItem(item.item.file, runningTop, reset, item.item.annotations ?? []);\n\t\t\trunningTop += item.height;\n\t\t\tif (index < this.items.length - 1) runningTop += layout.gap;\n\t\t}\n\t\tif (runningTop !== this.scrollHeight) this.scrollDirty = true;\n\t\tthis.scrollHeight = runningTop;\n\t}\n\tresetRenderState() {\n\t\tthis.renderState.scrollTop = -1;\n\t\tthis.renderState.firstIndex = -1;\n\t\tthis.renderState.lastIndex = -1;\n\t\tthis.renderState.stickyHeight = 0;\n\t\tthis.renderState.stickyTop = -1;\n\t\tthis.renderState.stickyBottom = -1;\n\t}\n\tgetFitPerfectlyOverscroll() {\n\t\treturn this.getLayout().gap + this.itemMetricsCache.diffHeaderHeight;\n\t}\n};\nfunction prepareItemInstance(item) {\n\titem.instance.cleanUp(true);\n\tif (item.type === \"diff\") return item.instance.prepareCodeViewItem(item.item.fileDiff, item.top, void 0, item.item.annotations ?? []);\n\telse return item.instance.prepareCodeViewItem(item.item.file, item.top, void 0, item.item.annotations ?? []);\n}\nfunction shouldClearPool(previousOptions, nextOptions) {\n\treturn !areThemesEqual(previousOptions.theme ?? DEFAULT_THEMES, nextOptions.theme ?? DEFAULT_THEMES) || (previousOptions.themeType ?? \"system\") !== (nextOptions.themeType ?? \"system\") || previousOptions.unsafeCSS !== nextOptions.unsafeCSS;\n}\nfunction hasItemLayoutOptionChanged(previousOptions, nextOptions) {\n\treturn (previousOptions.overflow ?? \"scroll\") !== (nextOptions.overflow ?? \"scroll\") || (previousOptions.disableLineNumbers ?? false) !== (nextOptions.disableLineNumbers ?? false) || (previousOptions.disableFileHeader ?? false) !== (nextOptions.disableFileHeader ?? false) || previousOptions.unsafeCSS !== nextOptions.unsafeCSS || (previousOptions.diffStyle ?? \"split\") !== (nextOptions.diffStyle ?? \"split\") || (previousOptions.diffIndicators ?? \"bars\") !== (nextOptions.diffIndicators ?? \"bars\") || (previousOptions.hunkSeparators ?? \"line-info\") !== (nextOptions.hunkSeparators ?? \"line-info\") || (previousOptions.expandUnchanged ?? false) !== (nextOptions.expandUnchanged ?? false) || (previousOptions.collapsedContextThreshold ?? 1) !== (nextOptions.collapsedContextThreshold ?? 1);\n}\nfunction hasCodeViewDiffEstimateOptionChanged(previousOptions, nextOptions) {\n\treturn (previousOptions.disableFileHeader ?? false) !== (nextOptions.disableFileHeader ?? false) || (previousOptions.hunkSeparators ?? \"line-info\") !== (nextOptions.hunkSeparators ?? \"line-info\") || (previousOptions.expandUnchanged ?? false) !== (nextOptions.expandUnchanged ?? false) || (previousOptions.collapsedContextThreshold ?? 1) !== (nextOptions.collapsedContextThreshold ?? 1);\n}\nfunction isPooledShadowChild(child) {\n\tif (child instanceof SVGElement) return true;\n\treturn isStyleNode(child) && (child.hasAttribute(\"data-core-css\") || child.hasAttribute(\"data-theme-css\") || child.hasAttribute(\"data-unsafe-css\"));\n}\nfunction formatSelectedLineRange(range) {\n\tconst start = formatSelectedLinePoint(range.start, range.side);\n\tconst end = formatSelectedLinePoint(range.end, range.endSide ?? range.side);\n\treturn start === end ? start : `${start}-${end}`;\n}\nfunction formatSelectedLinePoint(lineNumber, side) {\n\tif (side == null) return `${lineNumber}`;\n\treturn `${side === \"deletions\" ? \"D\" : \"A\"}${lineNumber}`;\n}\nfunction renderItem(item, fileContainer, forceRender = false) {\n\tif (item.type === \"diff\") return item.instance.render({\n\t\tdeferManagers: true,\n\t\tfileContainer,\n\t\tfileDiff: item.item.fileDiff,\n\t\tforceRender,\n\t\tlineAnnotations: item.item.annotations ?? []\n\t});\n\telse return item.instance.render({\n\t\tdeferManagers: true,\n\t\tfileContainer,\n\t\tfile: item.item.file,\n\t\tforceRender,\n\t\tlineAnnotations: item.item.annotations ?? []\n\t});\n}\n/**\n* Keep the rendered DOM order aligned with the current record order even when\n* we reuse existing elements. Reused items may already be mounted elsewhere in\n* the sticky container, so this moves them into the correct sibling position\n* before rendering updates.\n*/\nfunction syncRenderedItemOrder(container, element, prevElement) {\n\tif (prevElement == null) {\n\t\tif (container.firstChild !== element) container.prepend(element);\n\t\treturn;\n\t}\n\tif (prevElement.nextSibling !== element) prevElement.after(element);\n}\nfunction hasAnnotations(item) {\n\treturn (item.annotations?.length ?? 0) > 0;\n}\nfunction getSlotSnapshot(renderedItems, { hasHeaderRenderers, hasAnnotationRenderer, hasGutterRenderer }) {\n\tif (renderedItems.length === 0) return;\n\tif (hasHeaderRenderers || hasGutterRenderer) return renderedItems;\n\tif (!hasAnnotationRenderer) return;\n\tconst slotSnapshot = [];\n\tfor (const renderedItem of renderedItems) if (hasAnnotations(renderedItem.item)) slotSnapshot.push(renderedItem);\n\treturn slotSnapshot.length > 0 ? slotSnapshot : void 0;\n}\nfunction areSlotSnapshotsEqual(previous, next) {\n\tif (previous == null || next == null) return previous === next;\n\tif (previous.length !== next.length) return false;\n\tfor (let index = 0; index < previous.length; index++) {\n\t\tconst previousItem = previous[index];\n\t\tconst nextItem = next[index];\n\t\tif (previousItem == null || nextItem == null || previousItem.id !== nextItem.id || previousItem.type !== nextItem.type || previousItem.element !== nextItem.element || previousItem.version !== nextItem.version) return false;\n\t}\n\treturn true;\n}\n//#endregion\nexport { CodeView };\n\n//# sourceMappingURL=CodeView.js.map","//#region src/utils/areManagedSnapshotsEqual.ts\nfunction areManagedSnapshotsEqual(previous, next) {\n\tif (previous == null || next == null) return previous === next;\n\tif (previous.length !== next.length) return false;\n\tfor (let index = 0; index < previous.length; index++) {\n\t\tconst previousItem = previous[index];\n\t\tconst nextItem = next[index];\n\t\tif (previousItem == null || nextItem == null || previousItem.id !== nextItem.id || previousItem.type !== nextItem.type || previousItem.element !== nextItem.element || previousItem.version !== nextItem.version) return false;\n\t}\n\treturn true;\n}\n//#endregion\nexport { areManagedSnapshotsEqual };\n\n//# sourceMappingURL=areManagedSnapshotsEqual.js.map","\"use client\";\nimport { areOptionsEqual } from \"../utils/areOptionsEqual.js\";\nimport { CodeView as CodeView$1 } from \"../components/CodeView.js\";\nimport { areManagedSnapshotsEqual } from \"../utils/areManagedSnapshotsEqual.js\";\nimport { renderDiffChildren } from \"./utils/renderDiffChildren.js\";\nimport { renderFileChildren } from \"./utils/renderFileChildren.js\";\nimport { useStableCallback } from \"./utils/useStableCallback.js\";\nimport { WorkerPoolContext } from \"./WorkerPoolContext.js\";\nimport { forwardRef, memo, useContext, useEffect, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore } from \"react\";\nimport { createPortal, flushSync } from \"react-dom\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\n//#region src/react/CodeView.tsx\nconst useIsometricEffect = typeof window === \"undefined\" ? useEffect : useLayoutEffect;\nfunction createDefaultCache(controlled) {\n\treturn {\n\t\tinstance: void 0,\n\t\titems: void 0,\n\t\tcontrolled,\n\t\tmanagedOptions: void 0,\n\t\tdisableFlushSync: false,\n\t\tslotCoordinator: void 0\n\t};\n}\nfunction CodeViewInner(props, ref) {\n\tconst { className, containerRef, disableWorkerPool = false, initialItems, items: controlledItems, onScroll, onSelectedLinesChange, options, renderAnnotation, renderCustomHeader, renderGutterUtility, renderHeaderMetadata, renderHeaderPrefix, selectedLines, style } = props;\n\tconst controlled = controlledItems !== void 0;\n\tconst poolManager = useContext(WorkerPoolContext);\n\tconst cachedDataRef = useRef(createDefaultCache(controlled));\n\tconst hasCustomHeader = renderCustomHeader != null;\n\tconst hasAnnotationRenderer = renderAnnotation != null;\n\tconst hasGutterRenderer = renderGutterUtility != null;\n\tconst hasHeaderRenderers = hasCustomHeader || renderHeaderPrefix != null || renderHeaderMetadata != null;\n\tconst hasRenderers = hasHeaderRenderers || hasAnnotationRenderer || hasGutterRenderer;\n\tconst emitSelectedLinesChange = useStableCallback((selection) => {\n\t\tonSelectedLinesChange?.(selection);\n\t});\n\tconst controlledSelection = selectedLines !== void 0;\n\tconst managedOptions = useMemo(() => createManagedCodeViewOptions({\n\t\toptions,\n\t\thasCustomHeader,\n\t\thasGutterRenderer,\n\t\tonSelectedLinesChange: onSelectedLinesChange != null ? emitSelectedLinesChange : void 0,\n\t\tcontrolledSelection\n\t}), [\n\t\toptions,\n\t\thasCustomHeader,\n\t\thasGutterRenderer,\n\t\tonSelectedLinesChange,\n\t\temitSelectedLinesChange,\n\t\tcontrolledSelection\n\t]);\n\tconst [slotContentStore] = useState(() => createSlotContentStore());\n\tconst [, forceUpdate] = useState({});\n\tconst nodeRef = useStableCallback((node) => {\n\t\tif (cachedDataRef.current.instance != null && (node == null || node !== cachedDataRef.current.instance.getContainerElement())) {\n\t\t\tcachedDataRef.current.instance.cleanUp();\n\t\t\tslotContentStore.publish(void 0);\n\t\t\tcachedDataRef.current = createDefaultCache(controlled);\n\t\t}\n\t\tif (node != null && node !== cachedDataRef.current.instance?.getContainerElement()) {\n\t\t\tcachedDataRef.current.instance = new CodeView$1(managedOptions, !disableWorkerPool ? poolManager : void 0, true);\n\t\t\tcachedDataRef.current.instance.setup(node);\n\t\t}\n\t\tif (typeof containerRef === \"function\") containerRef(node);\n\t\telse if (containerRef != null) containerRef.current = node;\n\t});\n\tconst onSnapshotChange = useStableCallback((snapshot) => {\n\t\tif (cachedDataRef.current.disableFlushSync) slotContentStore.publish(snapshot);\n\t\telse flushSync(() => {\n\t\t\tslotContentStore.publish(snapshot);\n\t\t});\n\t});\n\tconst slotCoordinator = useMemo(() => {\n\t\tif (!hasHeaderRenderers && !hasAnnotationRenderer && !hasGutterRenderer) return;\n\t\telse return {\n\t\t\thasHeaderRenderers,\n\t\t\thasAnnotationRenderer,\n\t\t\thasGutterRenderer,\n\t\t\tonSnapshotChange\n\t\t};\n\t}, [\n\t\tonSnapshotChange,\n\t\thasAnnotationRenderer,\n\t\thasGutterRenderer,\n\t\thasHeaderRenderers\n\t]);\n\tuseIsometricEffect(() => {\n\t\treturn onScroll != null ? cachedDataRef.current.instance?.subscribeToScroll(onScroll) : void 0;\n\t});\n\tuseIsometricEffect(() => {\n\t\tconst { instance, controlled: prevControlled, items: prevItems, managedOptions: prevManagedOptions, slotCoordinator: prevSlotCoordinator } = cachedDataRef.current;\n\t\tif (instance == null) return;\n\t\ttry {\n\t\t\tcachedDataRef.current.disableFlushSync = true;\n\t\t\tlet shouldRender = false;\n\t\t\tif (!areOptionsEqual(managedOptions, prevManagedOptions)) {\n\t\t\t\tcachedDataRef.current.managedOptions = managedOptions;\n\t\t\t\tinstance.setOptions(managedOptions);\n\t\t\t\tshouldRender = true;\n\t\t\t}\n\t\t\tif (prevControlled !== controlled) {\n\t\t\t\tconsole.error(\"CodeView: cannot switch between controlled and uncontrolled modes. Remount with a new key instead.\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (controlled) {\n\t\t\t\tif (controlledItems !== prevItems) if (areItemListsEqual(prevItems, controlledItems)) cachedDataRef.current.items = controlledItems;\n\t\t\t\telse if (isAppendOnlyItemUpdate(prevItems, controlledItems)) {\n\t\t\t\t\tcachedDataRef.current.items = controlledItems;\n\t\t\t\t\tinstance.addItems(controlledItems.slice(prevItems.length));\n\t\t\t\t} else {\n\t\t\t\t\tcachedDataRef.current.items = controlledItems;\n\t\t\t\t\tinstance.setItems(controlledItems);\n\t\t\t\t\tshouldRender = true;\n\t\t\t\t}\n\t\t\t} else if (prevItems == null) {\n\t\t\t\tconst seedItems = initialItems ?? [];\n\t\t\t\tcachedDataRef.current.items = seedItems;\n\t\t\t\tif (seedItems.length > 0) {\n\t\t\t\t\tinstance.setItems(seedItems);\n\t\t\t\t\tshouldRender = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (selectedLines !== void 0) instance.setSelectedLines(selectedLines, { notify: false });\n\t\t\tconst slotPublish = instance.setSlotCoordinator(slotCoordinator);\n\t\t\tlet forceInlinePublish = false;\n\t\t\tif (slotCoordinator !== prevSlotCoordinator) {\n\t\t\t\tif (slotCoordinator == null || prevSlotCoordinator == null) forceInlinePublish = true;\n\t\t\t\tcachedDataRef.current.slotCoordinator = slotCoordinator;\n\t\t\t}\n\t\t\tif (shouldRender || slotPublish) instance.render(true);\n\t\t\tif (slotPublish && slotCoordinator == null) slotContentStore.publish(void 0);\n\t\t\tif (forceInlinePublish) forceUpdate({});\n\t\t} finally {\n\t\t\tcachedDataRef.current.disableFlushSync = false;\n\t\t}\n\t});\n\tuseImperativeHandle(ref, () => ({\n\t\taddItems(items) {\n\t\t\tconst { controlled, instance } = cachedDataRef.current;\n\t\t\tassertUncontrolledCodeViewAction(controlled, \"addItems\");\n\t\t\tif (instance == null) console.error(\"CodeView.addItems: no valid instance to append items with\", items);\n\t\t\telse instance.addItems(items);\n\t\t},\n\t\tgetItem(id) {\n\t\t\tconst { instance } = cachedDataRef.current;\n\t\t\tif (instance == null) {\n\t\t\t\tconsole.error(\"CodeView.getItem: no valid instance exists\", id);\n\t\t\t\treturn;\n\t\t\t} else return instance.getItem(id);\n\t\t},\n\t\tupdateItem(item) {\n\t\t\tconst { controlled, instance } = cachedDataRef.current;\n\t\t\tassertUncontrolledCodeViewAction(controlled, \"updateItem\");\n\t\t\tif (instance == null) {\n\t\t\t\tconsole.error(\"CodeView.updateItem: no valid instance to update item with\", item);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn instance.updateItem(item);\n\t\t},\n\t\tupdateItemId(oldId, newId) {\n\t\t\tconst { controlled, instance } = cachedDataRef.current;\n\t\t\tassertUncontrolledCodeViewAction(controlled, \"updateItemId\");\n\t\t\tif (instance == null) {\n\t\t\t\tconsole.error(\"CodeView.updateItemId: no valid instance to update item id with\", oldId, newId);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn instance.updateItemId(oldId, newId);\n\t\t},\n\t\tscrollTo(target) {\n\t\t\tconst { instance } = cachedDataRef.current;\n\t\t\tif (instance == null) console.error(\"CodeView.scrollTo: no valid instance to scroll with\", target);\n\t\t\telse instance.scrollTo(target);\n\t\t},\n\t\tsetSelectedLines(selection) {\n\t\t\tconst { instance } = cachedDataRef.current;\n\t\t\tif (instance == null) console.error(\"CodeView.setSelectedLines: no valid instance to update selection with\", selection);\n\t\t\telse {\n\t\t\t\tinstance.setSelectedLines(selection, { notify: false });\n\t\t\t\temitSelectedLinesChange(selection);\n\t\t\t}\n\t\t},\n\t\tgetSelectedLines() {\n\t\t\tconst { instance } = cachedDataRef.current;\n\t\t\tif (instance == null) {\n\t\t\t\tconsole.error(\"CodeView.getSelectedLines: no valid instance exists\");\n\t\t\t\treturn null;\n\t\t\t} else return instance.getSelectedLines();\n\t\t},\n\t\tclearSelectedLines() {\n\t\t\tconst { instance } = cachedDataRef.current;\n\t\t\tif (instance == null) console.error(\"CodeView.clearSelectedLines: no valid instance to update selection with\");\n\t\t\telse {\n\t\t\t\tinstance.clearSelectedLines({ notify: false });\n\t\t\t\temitSelectedLinesChange(null);\n\t\t\t}\n\t\t},\n\t\tgetInstance() {\n\t\t\treturn cachedDataRef.current.instance;\n\t\t}\n\t}), [emitSelectedLinesChange]);\n\treturn /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(\"div\", {\n\t\tref: nodeRef,\n\t\tclassName,\n\t\tstyle\n\t}), hasRenderers && /* @__PURE__ */ jsx(SlotPortals, {\n\t\tmanagedContentStore: slotContentStore,\n\t\trenderCustomHeader,\n\t\trenderHeaderPrefix,\n\t\trenderHeaderMetadata,\n\t\trenderAnnotation,\n\t\trenderGutterUtility\n\t})] });\n}\nconst CodeView = forwardRef(CodeViewInner);\nfunction isAppendOnlyItemUpdate(previousItems, nextItems) {\n\tif (previousItems == null || nextItems.length <= previousItems.length) return false;\n\tif (previousItems.length === 0) return true;\n\tfor (let index = 0; index < previousItems.length; index++) if (nextItems[index] !== previousItems[index]) return false;\n\treturn true;\n}\nfunction areItemListsEqual(previousItems, nextItems) {\n\tif (previousItems == null || previousItems.length !== nextItems.length) return false;\n\tfor (let index = 0; index < previousItems.length; index++) if (previousItems[index] !== nextItems[index]) return false;\n\treturn true;\n}\nfunction assertUncontrolledCodeViewAction(controlled, action) {\n\tif (!controlled) return;\n\tthrow new Error(`CodeView.${action} cannot be used when CodeView is controlled. Use initialItems for imperative item updates.`);\n}\nfunction createSlotContentStore() {\n\tlet snapshot;\n\tconst listeners = /* @__PURE__ */ new Set();\n\treturn {\n\t\tgetSnapshot() {\n\t\t\treturn snapshot;\n\t\t},\n\t\tpublish(nextSnapshot) {\n\t\t\tif (areManagedSnapshotsEqual(snapshot, nextSnapshot)) return;\n\t\t\tsnapshot = nextSnapshot;\n\t\t\tfor (const listener of listeners) listener();\n\t\t},\n\t\tsubscribe(listener) {\n\t\t\tlisteners.add(listener);\n\t\t\treturn () => {\n\t\t\t\tlisteners.delete(listener);\n\t\t\t};\n\t\t}\n\t};\n}\nfunction createManagedCodeViewOptions({ options, hasCustomHeader, hasGutterRenderer, onSelectedLinesChange, controlledSelection }) {\n\tif (!hasCustomHeader && !hasGutterRenderer && onSelectedLinesChange == null && !controlledSelection) return options;\n\toptions = {\n\t\t...options,\n\t\tcontrolledSelection,\n\t\tonSelectedLinesChange\n\t};\n\tif (hasCustomHeader) options.renderCustomHeader = noopRender;\n\tif (hasGutterRenderer) options.renderGutterUtility = noopRender;\n\treturn options;\n}\nconst SlotPortals = memo(function SlotPortals({ managedContentStore, renderCustomHeader, renderHeaderPrefix, renderHeaderMetadata, renderAnnotation, renderGutterUtility }) {\n\tconst subscribe = useStableCallback((listener) => managedContentStore.subscribe(listener));\n\tconst getSnapshot = useStableCallback(() => managedContentStore.getSnapshot());\n\treturn useSyncExternalStore(subscribe, getSnapshot, getSnapshot)?.map((renderedItem) => {\n\t\treturn createPortal(renderCodeViewItemChildren({\n\t\t\trenderedItem,\n\t\t\trenderCustomHeader,\n\t\t\trenderHeaderPrefix,\n\t\t\trenderHeaderMetadata,\n\t\t\trenderAnnotation,\n\t\t\trenderGutterUtility\n\t\t}), renderedItem.element, renderedItem.id);\n\t});\n});\nfunction renderCodeViewItemChildren({ renderedItem, renderCustomHeader, renderHeaderPrefix, renderHeaderMetadata, renderAnnotation, renderGutterUtility }) {\n\tif (renderedItem.type === \"diff\") {\n\t\tconst { item, instance } = renderedItem;\n\t\treturn renderDiffChildren({\n\t\t\tfileDiff: item.fileDiff,\n\t\t\trenderCustomHeader: renderCustomHeader != null ? () => renderCustomHeader(item) : void 0,\n\t\t\trenderHeaderPrefix: renderHeaderPrefix != null ? () => renderHeaderPrefix(item) : void 0,\n\t\t\trenderHeaderMetadata: renderHeaderMetadata != null ? () => renderHeaderMetadata(item) : void 0,\n\t\t\trenderAnnotation: renderAnnotation != null ? (annotation) => renderAnnotation(annotation, item) : void 0,\n\t\t\tlineAnnotations: item.annotations,\n\t\t\trenderGutterUtility: renderGutterUtility != null ? (getHoveredLine) => renderGutterUtility(getHoveredLine, item) : void 0,\n\t\t\tgetHoveredLine: instance.getHoveredLine\n\t\t});\n\t} else {\n\t\tconst { item, instance } = renderedItem;\n\t\treturn renderFileChildren({\n\t\t\tfile: item.file,\n\t\t\trenderCustomHeader: renderCustomHeader != null ? () => renderCustomHeader(item) : void 0,\n\t\t\trenderHeaderPrefix: renderHeaderPrefix != null ? () => renderHeaderPrefix(item) : void 0,\n\t\t\trenderHeaderMetadata: renderHeaderMetadata != null ? () => renderHeaderMetadata(item) : void 0,\n\t\t\trenderAnnotation: renderAnnotation != null ? (annotation) => renderAnnotation(annotation, item) : void 0,\n\t\t\tlineAnnotations: item.annotations,\n\t\t\trenderGutterUtility: renderGutterUtility != null ? (getHoveredLine) => renderGutterUtility(getHoveredLine, item) : void 0,\n\t\t\tgetHoveredLine: instance.getHoveredLine\n\t\t});\n\t}\n}\nfunction noopRender() {}\n//#endregion\nexport { CodeView };\n\n//# sourceMappingURL=CodeView.js.map","import { themeResolver } from \"./themeResolver.js\";\nimport { createTheme } from \"@pierre/theming/themes\";\nimport { DuplicateThemeError } from \"@pierre/theming\";\n//#region src/highlighter/themes/registerCustomTheme.ts\nfunction registerCustomTheme(themeName, loader) {\n\ttry {\n\t\tconst descriptor = createTheme({\n\t\t\tname: themeName,\n\t\t\tload: loader\n\t\t});\n\t\tthemeResolver.registerTheme(descriptor.name, descriptor.load);\n\t} catch (error) {\n\t\tif (error instanceof DuplicateThemeError) {\n\t\t\tconsole.error(\"SharedHighlight.registerCustomTheme: theme name already registered\", themeName);\n\t\t\treturn;\n\t\t}\n\t\tthrow error;\n\t}\n}\n//#endregion\nexport { registerCustomTheme };\n\n//# sourceMappingURL=registerCustomTheme.js.map","import { formatCSSVariablePrefix } from \"../../utils/formatCSSVariablePrefix.js\";\nimport { registerCustomTheme } from \"./registerCustomTheme.js\";\nimport { createCssVariablesTheme } from \"shiki\";\n//#region src/highlighter/themes/registerCustomCSSVariableTheme.ts\nfunction registerCustomCSSVariableTheme(name, variableDefaults, fontStyle = false) {\n\tconst theme = createCssVariablesTheme({\n\t\tname,\n\t\tvariablePrefix: formatCSSVariablePrefix(\"global\"),\n\t\tvariableDefaults,\n\t\tfontStyle\n\t});\n\tregisterCustomTheme(name, () => Promise.resolve(theme));\n}\n//#endregion\nexport { registerCustomCSSVariableTheme };\n\n//# sourceMappingURL=registerCustomCSSVariableTheme.js.map","import { type FileDiffMetadata, parseDiffFromFile } from \"@pierre/diffs\"\nimport type { RlyDiffCodeItem } from \"./types.js\"\n\nconst requireText = (value: string, field: string): string => {\n if (value.trim().length === 0) throw new Error(`${field} must not be blank`)\n return value\n}\n\nexport const validateDiffCodeItem = (item: RlyDiffCodeItem): void => {\n requireText(item.id, \"Diff item id\")\n requireText(item.before.name, `Diff item ${item.id} before name`)\n requireText(item.after.name, `Diff item ${item.id} after name`)\n if (item.version !== undefined && (!Number.isInteger(item.version) || item.version < 0)) {\n throw new Error(`Diff item ${item.id} version must be a non-negative integer`)\n }\n}\n\n/** Parse one validated rly before/after item into the pinned renderer's metadata shape. */\nexport const parseDiffFilePair = (item: RlyDiffCodeItem): FileDiffMetadata => {\n validateDiffCodeItem(item)\n return parseDiffFromFile(\n {\n ...(item.before.cacheKey === undefined ? {} : { cacheKey: item.before.cacheKey }),\n contents: item.before.contents,\n name: item.before.name\n },\n {\n ...(item.after.cacheKey === undefined ? {} : { cacheKey: item.after.cacheKey }),\n contents: item.after.contents,\n name: item.after.name\n },\n undefined,\n true\n )\n}\n","import { registerCustomCSSVariableTheme } from \"@pierre/diffs\"\n\n/** Stable custom theme identifiers registered for the isolated diff renderer. */\nexport const RLY_DIFF_THEMES: { readonly dark: \"rly-dark\"; readonly light: \"rly-light\" } = {\n dark: \"rly-dark\",\n light: \"rly-light\"\n}\n\nconst VARIABLE_DEFAULTS: Record<string, string> = {\n \"ansi-black\": \"var(--rly-color-text-1)\",\n \"ansi-blue\": \"var(--rly-color-text-1)\",\n \"ansi-bright-black\": \"var(--rly-color-text-2)\",\n \"ansi-bright-blue\": \"var(--rly-color-text-1)\",\n \"ansi-bright-cyan\": \"var(--rly-color-text-1)\",\n \"ansi-bright-green\": \"var(--rly-color-text-1)\",\n \"ansi-bright-magenta\": \"var(--rly-color-text-1)\",\n \"ansi-bright-red\": \"var(--rly-color-text-1)\",\n \"ansi-bright-white\": \"var(--rly-color-text-1)\",\n \"ansi-bright-yellow\": \"var(--rly-color-text-1)\",\n \"ansi-cyan\": \"var(--rly-color-text-1)\",\n \"ansi-green\": \"var(--rly-color-text-1)\",\n \"ansi-magenta\": \"var(--rly-color-text-1)\",\n \"ansi-red\": \"var(--rly-color-text-1)\",\n \"ansi-white\": \"var(--rly-color-text-2)\",\n \"ansi-yellow\": \"var(--rly-color-text-1)\",\n background: \"var(--rly-color-surface-1)\",\n foreground: \"var(--rly-color-text-1)\",\n \"token-changed\": \"var(--rly-color-text-1)\",\n \"token-comment\": \"var(--rly-color-text-3)\",\n \"token-constant\": \"var(--rly-color-text-1)\",\n \"token-deleted\": \"var(--rly-color-text-1)\",\n \"token-function\": \"var(--rly-color-text-1)\",\n \"token-inserted\": \"var(--rly-color-text-1)\",\n \"token-keyword\": \"var(--rly-color-text-1)\",\n \"token-link\": \"var(--rly-color-text-1)\",\n \"token-parameter\": \"var(--rly-color-text-1)\",\n \"token-punctuation\": \"var(--rly-color-text-1)\",\n \"token-string\": \"var(--rly-color-text-1)\",\n \"token-string-expression\": \"var(--rly-color-text-1)\"\n}\n\nlet themesRegistered = false\n\nexport const ensureRlyDiffThemes = (): void => {\n if (themesRegistered) return\n registerCustomCSSVariableTheme(RLY_DIFF_THEMES.light, VARIABLE_DEFAULTS)\n registerCustomCSSVariableTheme(RLY_DIFF_THEMES.dark, VARIABLE_DEFAULTS)\n themesRegistered = true\n}\n","\"use client\"\n\nimport { WorkerPoolContext } from \"@pierre/diffs/react\"\nimport { WorkerPoolManager } from \"@pierre/diffs/worker\"\n// Vite's ?worker&url transform supplies this default export after static analysis.\n// eslint-disable-next-line import-x/default\nimport defaultWorkerUrl from \"@pierre/diffs/worker/worker.js?worker&url\"\nimport { createContext, type ReactNode, useContext, useEffect, useState } from \"react\"\nimport { RLY_DIFF_THEMES, ensureRlyDiffThemes } from \"./themes.js\"\n\ntype RlyDiffWorkerStatus = \"fallback\" | \"main-thread\" | \"worker\"\n\ninterface RlyDiffWorkerState {\n readonly manager?: WorkerPoolManager\n readonly status: RlyDiffWorkerStatus\n}\n\ninterface WorkerSubscription {\n unsubscribe?: () => void\n}\n\n/** Props for the bounded, fail-open diff syntax-highlighting worker provider. */\nexport interface DiffWorkerProviderProps {\n readonly children: ReactNode\n readonly poolSize?: number\n readonly workerFactory?: () => Worker\n}\n\n/** Options for creating package-relative module workers without exposing vendor types. */\nexport interface CreateDiffWorkerFactoryOptions {\n readonly name?: string\n readonly workerUrl?: string | URL\n}\n\nconst DiffWorkerStateContext = createContext<RlyDiffWorkerState>({ status: \"main-thread\" })\n\n/** Validate and normalize the supported one-to-four worker pool size. */\nexport const normalizeDiffWorkerPoolSize = (poolSize = 2): number => {\n if (!Number.isInteger(poolSize) || poolSize < 1 || poolSize > 4) {\n throw new RangeError(\"Diff worker pool size must be an integer from 1 through 4\")\n }\n return poolSize\n}\n\n/** Create a browser-only module-worker factory for the packaged diff worker. */\nexport const createDiffWorkerFactory = ({\n name = \"rly-diff-highlighter\",\n workerUrl = defaultWorkerUrl\n}: CreateDiffWorkerFactoryOptions = {}): (() => Worker) => {\n return () => {\n if (typeof window === \"undefined\" || typeof Worker === \"undefined\") {\n throw new Error(\"Diff workers are available only in a browser\")\n }\n return new Worker(workerUrl, { name, type: \"module\" })\n }\n}\n\nconst DEFAULT_DIFF_WORKER_FACTORY = createDiffWorkerFactory()\n\nconst initializeWorkerState = (workerFactory: () => Worker, poolSize: number): RlyDiffWorkerState => {\n if (typeof window === \"undefined\") return { status: \"main-thread\" }\n\n try {\n const probe = workerFactory()\n probe.terminate()\n ensureRlyDiffThemes()\n return {\n manager: new WorkerPoolManager(\n { poolSize, workerFactory },\n { langs: [\"text\", \"tsx\", \"typescript\", \"json\", \"yaml\", \"markdown\"], theme: RLY_DIFF_THEMES }\n ),\n status: \"worker\"\n }\n } catch {\n return { status: \"fallback\" }\n }\n}\n\n/** Provide bounded worker acceleration with immediate synchronous failover and cleanup. */\nexport const DiffWorkerProvider = ({\n children,\n poolSize: requestedPoolSize,\n workerFactory = DEFAULT_DIFF_WORKER_FACTORY\n}: DiffWorkerProviderProps): ReactNode => {\n const [state, setState] = useState<RlyDiffWorkerState>({ status: \"main-thread\" })\n\n useEffect(() => {\n let active = true\n const nextState = initializeWorkerState(workerFactory, normalizeDiffWorkerPoolSize(requestedPoolSize))\n const manager = nextState.manager\n let cleaned = false\n const subscription: WorkerSubscription = {}\n const cleanWorkerManager = (): void => {\n if (cleaned) return\n cleaned = true\n subscription.unsubscribe?.()\n manager?.terminate()\n }\n if (manager !== undefined) {\n subscription.unsubscribe = manager.subscribeToStatChanges((stats) => {\n if (active && stats.workersFailed) {\n cleanWorkerManager()\n setState({ status: \"fallback\" })\n }\n })\n if (cleaned) subscription.unsubscribe()\n }\n if (!cleaned) setState(nextState)\n\n return () => {\n active = false\n cleanWorkerManager()\n }\n }, [requestedPoolSize, workerFactory])\n\n return (\n <DiffWorkerStateContext.Provider value={state}>\n <WorkerPoolContext.Provider value={state.manager}>{children}</WorkerPoolContext.Provider>\n </DiffWorkerStateContext.Provider>\n )\n}\n\nexport const useDiffWorkerState = (): RlyDiffWorkerState => useContext(DiffWorkerStateContext)\n","\"use client\"\n\nimport { CodeView, type CodeViewHandle, type CodeViewItem, type DiffLineAnnotation } from \"@pierre/diffs/react\"\nimport { forwardRef, useEffect, useImperativeHandle, useRef, useState } from \"react\"\nimport { cssClass } from \"../internal/component.js\"\nimport styles from \"./DiffCodeView.module.css\"\nimport { parseDiffFilePair, validateDiffCodeItem } from \"./parse-diff.js\"\nimport { ensureRlyDiffThemes, RLY_DIFF_THEMES } from \"./themes.js\"\nimport type { RlyDiffCodeAnnotation, RlyDiffCodeItem, RlyDiffCodeViewHandle, RlyDiffCodeViewProps } from \"./types.js\"\nimport { useDiffWorkerState } from \"./worker-pool.js\"\n\ninterface AnnotationMetadata {\n readonly id: string\n readonly message: string\n}\n\nconst requireAnnotations = (annotations: ReadonlyArray<RlyDiffCodeAnnotation>): void => {\n const ids = new Set<string>()\n for (const annotation of annotations) {\n if (annotation.id.trim().length === 0 || annotation.message.trim().length === 0) {\n throw new Error(\"Diff annotation id and message must not be blank\")\n }\n if (!Number.isInteger(annotation.lineNumber) || annotation.lineNumber < 0) {\n throw new Error(`Diff annotation ${annotation.id} line number must be a non-negative integer`)\n }\n if (ids.has(annotation.id)) throw new Error(`Diff annotation id ${annotation.id} must be unique`)\n ids.add(annotation.id)\n }\n}\n\nconst annotationsForItem = (\n itemId: string,\n annotations: ReadonlyArray<RlyDiffCodeAnnotation>\n): Array<DiffLineAnnotation<AnnotationMetadata>> =>\n annotations\n .filter((annotation) => annotation.itemId === itemId)\n .map((annotation) => ({\n lineNumber: annotation.lineNumber,\n metadata: { id: annotation.id, message: annotation.message },\n side: annotation.side\n }))\n\nconst toRendererItem = (\n item: RlyDiffCodeItem,\n annotations: ReadonlyArray<RlyDiffCodeAnnotation>,\n version: number\n): CodeViewItem<AnnotationMetadata> => {\n return {\n annotations: annotationsForItem(item.id, annotations),\n ...(item.collapsed === undefined ? {} : { collapsed: item.collapsed }),\n fileDiff: parseDiffFilePair(item),\n id: item.id,\n type: \"diff\",\n version\n }\n}\n\nconst requireInitialItems = (items: ReadonlyArray<RlyDiffCodeItem>): void => {\n const ids = new Set<string>()\n for (const item of items) {\n validateDiffCodeItem(item)\n if (ids.has(item.id)) throw new Error(`Diff item id ${item.id} must be unique`)\n ids.add(item.id)\n }\n}\n\nconst joinClassNames = (className: string | undefined): string =>\n className === undefined ? cssClass(styles, \"root\") : `${cssClass(styles, \"root\")} ${className}`\n\nconst keepScrollableCodeKeyboardAccessible = (node: HTMLElement, phase: \"mount\" | \"unmount\" | \"update\"): void => {\n if (phase === \"unmount\") return\n for (const region of node.shadowRoot?.querySelectorAll<HTMLElement>(\"code[data-code]\") ?? []) {\n region.tabIndex = 0\n }\n}\n\n/** Render and incrementally update complete text changes through rly's isolated renderer adapter. */\nexport const DiffCodeView = forwardRef<RlyDiffCodeViewHandle, RlyDiffCodeViewProps>(function DiffCodeView(\n {\n annotations = [],\n className,\n contextLines = 3,\n empty = \"No renderable source changes.\",\n expandContext = false,\n initialItems,\n mode = \"split\",\n onSelectedLinesChange,\n selectedLines,\n virtualization = \"buffered\",\n wrap = false\n },\n ref\n) {\n requireInitialItems(initialItems)\n requireAnnotations(annotations)\n if (!Number.isInteger(contextLines) || contextLines < 0) {\n throw new Error(\"Diff context lines must be a non-negative integer\")\n }\n ensureRlyDiffThemes()\n\n const workerState = useDiffWorkerState()\n const rendererRef = useRef<CodeViewHandle<AnnotationMetadata>>(null)\n const annotationsRef = useRef(annotations)\n annotationsRef.current = annotations\n const [sourceItems] = useState(() => new Map(initialItems.map((item) => [item.id, item])))\n const [versions] = useState(() => new Map(initialItems.map((item) => [item.id, item.version ?? 0])))\n const rendererItems = [...sourceItems.values()].map((item) =>\n toRendererItem(item, annotations, versions.get(item.id) ?? item.version ?? 0)\n )\n\n useEffect(() => {\n for (const item of sourceItems.values()) {\n const nextVersion = (versions.get(item.id) ?? item.version ?? 0) + 1\n versions.set(item.id, nextVersion)\n rendererRef.current?.updateItem(toRendererItem(item, annotations, nextVersion))\n }\n }, [annotations, sourceItems, versions])\n\n useImperativeHandle(\n ref,\n () => ({\n addItems(items) {\n requireInitialItems(items)\n for (const item of items) {\n if (sourceItems.has(item.id)) throw new Error(`Diff item id ${item.id} already exists`)\n }\n const rendererItems = items.map((item) => {\n sourceItems.set(item.id, item)\n const version = item.version ?? 0\n versions.set(item.id, version)\n return toRendererItem(item, annotationsRef.current, version)\n })\n rendererRef.current?.addItems(rendererItems)\n },\n scrollTo(target) {\n rendererRef.current?.scrollTo(target)\n },\n updateItem(item) {\n validateDiffCodeItem(item)\n if (!sourceItems.has(item.id)) return false\n const version = Math.max(item.version ?? 0, (versions.get(item.id) ?? 0) + 1)\n versions.set(item.id, version)\n sourceItems.set(item.id, item)\n return rendererRef.current?.updateItem(toRendererItem(item, annotationsRef.current, version)) ?? false\n }\n }),\n [sourceItems, versions]\n )\n\n if (initialItems.length === 0) {\n return <p className={joinClassNames(className)}>{empty}</p>\n }\n\n return (\n <div className={joinClassNames(className)} data-rly-diff-code-view=\"\" data-rly-diff-mode={mode}>\n {workerState.status === \"fallback\" ? (\n <p aria-live=\"polite\" className={styles.fallbackNotice} role=\"status\">\n Worker acceleration is unavailable. The complete diff is rendered on this device.\n </p>\n ) : null}\n <CodeView<AnnotationMetadata>\n key={workerState.status}\n ref={rendererRef}\n className={cssClass(styles, \"viewer\")}\n disableWorkerPool={workerState.status !== \"worker\"}\n initialItems={rendererItems}\n {...(onSelectedLinesChange === undefined ? {} : { onSelectedLinesChange })}\n options={{\n collapsedContextThreshold: contextLines,\n controlledSelection: selectedLines !== undefined,\n diffIndicators: \"bars\",\n diffStyle: mode === \"split\" ? \"split\" : \"unified\",\n disableVirtualizationBuffers: virtualization === \"strict\",\n enableLineSelection: true,\n expandUnchanged: expandContext,\n expansionLineCount: contextLines,\n hunkSeparators: \"line-info-basic\",\n layout: { gap: 8, paddingBottom: 8, paddingTop: 8 },\n ...(wrap\n ? {}\n : { onPostRender: (node, _instance, phase) => keepScrollableCodeKeyboardAccessible(node, phase) }),\n overflow: wrap ? \"wrap\" : \"scroll\",\n stickyHeaders: true,\n theme: RLY_DIFF_THEMES\n }}\n renderAnnotation={(annotation) => (\n <div className={styles.annotation} data-rly-diff-annotation={annotation.metadata.id}>\n {annotation.metadata.message}\n </div>\n )}\n {...(selectedLines === undefined ? {} : { selectedLines })}\n />\n </div>\n )\n})\n","import { type ComponentPropsWithRef, type ReactElement, useId } from \"react\"\nimport { classNames, cssClass, requireText } from \"../internal/component.js\"\nimport styles from \"./DiffFileTree.module.css\"\n\nconst style = (name: string): string => cssClass(styles, name)\n\n/** The provider change recorded for one path in the complete diff inventory. */\nexport type RlyDiffFileChange = \"added\" | \"modified\" | \"deleted\" | \"renamed\"\n\n/** Content readiness is independent from the file change, so exceptional files never disappear. */\nexport type RlyDiffFileContent =\n | { readonly state: \"ready\" }\n | { readonly label: string; readonly state: \"loading\" }\n | {\n readonly reason: string\n readonly state: \"binary\" | \"generated\" | \"oversized\" | \"unavailable\" | \"error\"\n }\n\ninterface RlyDiffFileBase {\n readonly content: RlyDiffFileContent\n readonly id: string\n readonly path: string\n}\n\n/** One indexed path. Renames always preserve both the previous and current path. */\nexport type RlyDiffFile =\n | (RlyDiffFileBase & { readonly change: \"renamed\"; readonly previousPath: string })\n | (RlyDiffFileBase & {\n readonly change: \"added\" | \"modified\" | \"deleted\"\n readonly previousPath?: never\n })\n\ninterface RlyIndexedInventory {\n readonly files: ReadonlyArray<RlyDiffFile>\n readonly indexedCount: number\n readonly totalCount: number\n}\n\n/** Complete or in-progress inventory state. Error states retain every path indexed so far. */\nexport type RlyDiffInventory =\n | { readonly files: ReadonlyArray<RlyDiffFile>; readonly state: \"ready\" }\n | (RlyIndexedInventory & { readonly label: string; readonly state: \"loading\" })\n | (RlyIndexedInventory & {\n readonly description: string\n readonly state: \"error\"\n readonly title: string\n })\n\n/** Props for a complete, application-controlled changed-file inventory. */\nexport type DiffFileTreeProps = Omit<ComponentPropsWithRef<\"nav\">, \"aria-label\" | \"children\"> & {\n readonly data: RlyDiffInventory\n readonly heading: string\n readonly onSelectedFileChange: (fileId: string) => void\n readonly selectedFileId?: string\n}\n\nconst contentLabel = (content: RlyDiffFileContent): string => {\n if (content.state === \"ready\") return \"Ready\"\n if (content.state === \"loading\") return requireText(content.label, \"DiffFileTree loading label\")\n return `${content.state}: ${requireText(content.reason, `DiffFileTree ${content.state} reason`)}`\n}\n\nconst validateInventory = (data: RlyDiffInventory): void => {\n const ids = new Set<string>()\n for (const file of data.files) {\n const id = requireText(file.id, \"DiffFileTree file id\")\n if (ids.has(id)) throw new Error(`DiffFileTree file ids must be unique: ${id}`)\n ids.add(id)\n const path = requireText(file.path, `DiffFileTree path for ${id}`)\n if (file.change === \"renamed\") {\n const previousPath = requireText(file.previousPath, `DiffFileTree previousPath for ${id}`)\n if (previousPath === path) throw new Error(`DiffFileTree renamed paths must differ: ${id}`)\n }\n contentLabel(file.content)\n }\n\n if (data.state === \"loading\" || data.state === \"error\") {\n if (!Number.isInteger(data.indexedCount) || !Number.isInteger(data.totalCount)) {\n throw new Error(\"DiffFileTree counts must be integers\")\n }\n if (data.indexedCount !== data.files.length || data.totalCount < data.indexedCount) {\n throw new Error(\"DiffFileTree indexedCount must match visible files and cannot exceed totalCount\")\n }\n if (data.state === \"loading\") requireText(data.label, \"DiffFileTree loading label\")\n if (data.state === \"error\") {\n requireText(data.title, \"DiffFileTree error title\")\n requireText(data.description, \"DiffFileTree error description\")\n }\n }\n}\n\n/** Render every indexed path as a lightweight row without instantiating file content renderers. */\nexport const DiffFileTree = ({\n className,\n data,\n heading,\n onSelectedFileChange,\n selectedFileId,\n ...props\n}: DiffFileTreeProps): ReactElement => {\n const visibleHeading = requireText(heading, \"DiffFileTree heading\")\n validateInventory(data)\n if (selectedFileId !== undefined && !data.files.some((file) => file.id === selectedFileId)) {\n throw new Error(`DiffFileTree selectedFileId is not in the visible inventory: ${selectedFileId}`)\n }\n const headingId = `rly-diff-file-tree-${useId()}`\n const indexedCount = data.state === \"ready\" ? data.files.length : data.indexedCount\n const totalCount = data.state === \"ready\" ? data.files.length : data.totalCount\n\n return (\n <nav\n {...props}\n aria-busy={data.state === \"loading\" ? \"true\" : undefined}\n aria-labelledby={headingId}\n className={classNames(style(\"root\"), className)}\n data-rly-diff-inventory-state={data.state}\n >\n <header className={style(\"header\")}>\n <span>\n <span className={style(\"eyebrow\")}>Changed files</span>\n <h2 id={headingId}>{visibleHeading}</h2>\n </span>\n <strong aria-label={`${indexedCount} of ${totalCount} files indexed`} className={style(\"count\")}>\n {indexedCount}/{totalCount}\n </strong>\n </header>\n\n {data.state === \"loading\" ? (\n <p className={style(\"notice\")} role=\"status\">\n {data.label}\n </p>\n ) : null}\n {data.state === \"error\" ? (\n <section className={style(\"error\")} role=\"alert\">\n <strong>{data.title}</strong>\n <span>{data.description}</span>\n </section>\n ) : null}\n\n {data.files.length === 0 ? (\n <p className={style(\"empty\")}>No changed files.</p>\n ) : (\n <ol className={style(\"list\")}>\n {data.files.map((file, index) => {\n const isSelected = selectedFileId === file.id\n return (\n <li data-rly-diff-file-id={file.id} key={file.id}>\n <button\n aria-current={isSelected ? \"true\" : undefined}\n aria-label={`File ${index + 1} of ${totalCount}: ${file.path}, ${file.change}, ${contentLabel(file.content)}`}\n className={style(\"file\")}\n data-rly-diff-content-state={file.content.state}\n data-rly-diff-file-change={file.change}\n onClick={() => onSelectedFileChange(file.id)}\n type=\"button\"\n >\n <span aria-hidden=\"true\" className={style(\"index\")}>\n {index + 1}\n </span>\n <span className={style(\"pathBlock\")}>\n {file.change === \"renamed\" ? (\n <span className={style(\"previousPath\")}>{file.previousPath}</span>\n ) : null}\n <code className={style(\"path\")}>{file.path}</code>\n </span>\n <span className={style(\"badges\")}>\n <span className={style(\"change\")}>{file.change}</span>\n <span className={style(\"content\")}>{contentLabel(file.content)}</span>\n </span>\n </button>\n </li>\n )\n })}\n </ol>\n )}\n </nav>\n )\n}\n","import { type ComponentPropsWithRef, type ReactElement, useId } from \"react\"\nimport { classNames, cssClass, requireText } from \"../internal/component.js\"\nimport styles from \"./DiffFinding.module.css\"\n\nconst style = (name: string): string => cssClass(styles, name)\n\n/** A current immutable line anchor or a preserved anchor invalidated by a newer revision. */\nexport type RlyDiffFindingAnchor =\n | {\n readonly contextHash: string\n readonly fileId: string\n readonly line: number\n readonly path: string\n readonly revision: string\n readonly side: \"before\" | \"after\"\n readonly state: \"current\"\n }\n | {\n readonly contextHash: string\n readonly currentRevision?: string\n readonly fileId: string\n readonly line: number\n readonly path: string\n readonly reason: string\n readonly revision: string\n readonly side: \"before\" | \"after\"\n readonly state: \"stale\"\n }\n\n/** Static or behavioral enforcement layers available to a prevention plan. */\nexport type RlyDiffFindingPreventionEnforcement = \"ast-grep\" | \"eslint\" | \"instruction\" | \"test\" | \"type-check\"\n\n/** Implementation-ready guardrail suggested by a review finding. */\nexport type RlyDiffFindingPrevention =\n | {\n readonly boundary: string\n readonly enforcement: RlyDiffFindingPreventionEnforcement\n readonly existingRuleOrConfig: string\n readonly invalidFixture: string\n readonly matcherOrInvariant: string\n readonly sourcePaths: ReadonlyArray<string>\n readonly summary: string\n readonly targetFile: string\n readonly validFixture: string\n }\n | {\n readonly enforcement: \"none\"\n readonly rationale: string\n readonly summary: string\n }\n\n/** Semantic presentation data for one human or agent-authored finding. */\ninterface RlyDiffFindingBase {\n readonly anchor: RlyDiffFindingAnchor\n readonly authorName: string\n readonly body: string\n readonly id: string\n readonly severity: \"note\" | \"warning\" | \"critical\"\n readonly status: \"open\" | \"resolved\"\n readonly title: string\n}\n\n/** Semantic presentation data for one human or agent-authored finding. */\nexport type RlyDiffFinding = RlyDiffFindingBase &\n (\n | { readonly prevention: RlyDiffFindingPrevention; readonly source: \"agent\" }\n | { readonly prevention?: RlyDiffFindingPrevention; readonly source: \"human\" }\n )\n\n/** Props for a semantic finding card with an application-controlled anchor callback. */\nexport type DiffFindingProps = Omit<ComponentPropsWithRef<\"article\">, \"aria-label\" | \"children\"> & {\n readonly finding: RlyDiffFinding\n readonly onAnchorActivate: (findingId: string) => void\n}\n\nconst validateFinding = (finding: RlyDiffFinding): void => {\n requireText(finding.id, \"DiffFinding id\")\n requireText(finding.authorName, \"DiffFinding authorName\")\n requireText(finding.title, \"DiffFinding title\")\n requireText(finding.body, \"DiffFinding body\")\n requireText(finding.anchor.fileId, \"DiffFinding anchor fileId\")\n requireText(finding.anchor.path, \"DiffFinding anchor path\")\n requireText(finding.anchor.revision, \"DiffFinding anchor revision\")\n requireText(finding.anchor.contextHash, \"DiffFinding anchor contextHash\")\n if (!Number.isInteger(finding.anchor.line) || finding.anchor.line < 1) {\n throw new Error(\"DiffFinding anchor line must be a positive integer\")\n }\n if (finding.anchor.state === \"stale\") {\n requireText(finding.anchor.reason, \"DiffFinding stale anchor reason\")\n if (finding.anchor.currentRevision !== undefined) {\n requireText(finding.anchor.currentRevision, \"DiffFinding currentRevision\")\n }\n }\n const prevention = finding.prevention\n if (finding.source === \"agent\" && prevention === undefined) {\n throw new Error(\"DiffFinding agent findings require a prevention plan\")\n }\n if (prevention !== undefined) {\n requireText(prevention.summary, \"DiffFinding prevention summary\")\n if (prevention.enforcement === \"none\") {\n requireText(prevention.rationale, \"DiffFinding prevention rationale\")\n } else {\n requireText(prevention.existingRuleOrConfig, \"DiffFinding prevention existingRuleOrConfig\")\n requireText(prevention.targetFile, \"DiffFinding prevention targetFile\")\n requireText(prevention.matcherOrInvariant, \"DiffFinding prevention matcherOrInvariant\")\n requireText(prevention.invalidFixture, \"DiffFinding prevention invalidFixture\")\n requireText(prevention.validFixture, \"DiffFinding prevention validFixture\")\n requireText(prevention.boundary, \"DiffFinding prevention boundary\")\n if (prevention.sourcePaths.length === 0) {\n throw new Error(\"DiffFinding prevention sourcePaths must contain at least one path\")\n }\n for (const sourcePath of prevention.sourcePaths) {\n requireText(sourcePath, \"DiffFinding prevention sourcePath\")\n }\n }\n }\n}\n\nconst enforcementLabels = {\n \"ast-grep\": \"ast-grep\",\n eslint: \"ESLint\",\n instruction: \"Agent instruction\",\n none: \"Human judgment\",\n test: \"Test\",\n \"type-check\": \"Type check\"\n} satisfies Readonly<Record<RlyDiffFindingPrevention[\"enforcement\"], string>>\n\n/** Render a finding as evidence; agent authorship never implies human approval. */\nexport const DiffFinding = ({ className, finding, onAnchorActivate, ...props }: DiffFindingProps): ReactElement => {\n validateFinding(finding)\n const titleId = `rly-diff-finding-${useId()}`\n const anchorLabel = `${finding.anchor.path}, ${finding.anchor.side} line ${finding.anchor.line}`\n\n return (\n <article\n {...props}\n aria-labelledby={titleId}\n className={classNames(style(\"root\"), className)}\n data-rly-diff-finding-anchor={finding.anchor.state}\n data-rly-diff-finding-source={finding.source}\n data-rly-diff-finding-status={finding.status}\n >\n <header className={style(\"header\")}>\n <span aria-hidden=\"true\" className={classNames(style(\"avatar\"), style(finding.source))}>\n {finding.source === \"agent\" ? \"AI\" : finding.authorName.slice(0, 1).toUpperCase()}\n </span>\n <span className={style(\"identity\")}>\n <strong>{finding.authorName}</strong>\n <span>{finding.source === \"agent\" ? \"Agent finding · not an approval\" : \"Human finding\"}</span>\n </span>\n <span className={style(\"state\")}>{finding.status}</span>\n </header>\n\n <section className={style(\"body\")}>\n <span className={style(\"severity\")}>{finding.severity}</span>\n <h2 id={titleId}>{finding.title}</h2>\n <p>{finding.body}</p>\n </section>\n\n {finding.prevention === undefined ? null : (\n <details className={style(\"prevention\")} data-rly-diff-finding-prevention={finding.prevention.enforcement}>\n <summary>\n <span className={style(\"preventionSummary\")}>\n <span className={style(\"preventionCopy\")}>\n <strong>Prevent recurrence</strong>\n <span>{finding.prevention.summary}</span>\n </span>\n <code>{enforcementLabels[finding.prevention.enforcement]}</code>\n <span aria-hidden=\"true\" className={style(\"preventionIndicator\")} />\n </span>\n </summary>\n {finding.prevention.enforcement === \"none\" ? (\n <p className={style(\"rationale\")}>{finding.prevention.rationale}</p>\n ) : (\n <dl>\n <div>\n <dt>Extend</dt>\n <dd>{finding.prevention.existingRuleOrConfig}</dd>\n </div>\n <div>\n <dt>Change</dt>\n <dd>\n <code>{finding.prevention.targetFile}</code>\n </dd>\n </div>\n <div>\n <dt>Cover</dt>\n <dd>{finding.prevention.sourcePaths.join(\", \")}</dd>\n </div>\n <div>\n <dt>Matcher or invariant</dt>\n <dd>{finding.prevention.matcherOrInvariant}</dd>\n </div>\n <div>\n <dt>Must reject</dt>\n <dd>{finding.prevention.invalidFixture}</dd>\n </div>\n <div>\n <dt>Must allow</dt>\n <dd>{finding.prevention.validFixture}</dd>\n </div>\n <div>\n <dt>Boundary</dt>\n <dd>{finding.prevention.boundary}</dd>\n </div>\n </dl>\n )}\n </details>\n )}\n\n <dl className={style(\"anchorDetails\")}>\n <div>\n <dt>Revision</dt>\n <dd>\n <code>{finding.anchor.revision}</code>\n </dd>\n </div>\n <div>\n <dt>Context</dt>\n <dd>\n <code>{finding.anchor.contextHash}</code>\n </dd>\n </div>\n {finding.anchor.state === \"stale\" && finding.anchor.currentRevision !== undefined ? (\n <div>\n <dt>Current revision</dt>\n <dd>\n <code>{finding.anchor.currentRevision}</code>\n </dd>\n </div>\n ) : null}\n </dl>\n\n <footer className={style(\"footer\")}>\n {finding.anchor.state === \"current\" ? (\n <button onClick={() => onAnchorActivate(finding.id)} type=\"button\">\n <span>Open anchor</span>\n <code>{anchorLabel}</code>\n </button>\n ) : (\n <span className={style(\"stale\")} role=\"status\">\n <strong>Stale anchor</strong>\n <span>{finding.anchor.reason}</span>\n <code>{anchorLabel}</code>\n </span>\n )}\n </footer>\n </article>\n )\n}\n","import { type ComponentPropsWithRef, type ReactElement, useId } from \"react\"\nimport { classNames, cssClass, requireText } from \"../internal/component.js\"\nimport styles from \"./DiffHeader.module.css\"\n\nconst style = (name: string): string => cssClass(styles, name)\n\n/** Controlled diff arrangement. */\nexport type RlyDiffLayout = \"split\" | \"stacked\"\n\n/** Controlled semantic finding filter. */\nexport type RlyDiffFindingFilter = \"all\" | \"human\" | \"agent\" | \"unresolved\"\n\n/** Props for the complete diff inventory thesis and its application-controlled view preferences. */\nexport type DiffHeaderProps = Omit<ComponentPropsWithRef<\"header\">, \"children\"> & {\n readonly findingFilter: RlyDiffFindingFilter\n readonly heading: string\n readonly indexedCount: number\n readonly isWrapped: boolean\n readonly layout: RlyDiffLayout\n readonly onFindingFilterChange: (filter: RlyDiffFindingFilter) => void\n readonly onLayoutChange: (layout: RlyDiffLayout) => void\n readonly onWrapChange: (isWrapped: boolean) => void\n readonly selectedFileLabel?: string\n readonly totalCount: number\n}\n\nconst findingFilters = [\"all\", \"human\", \"agent\", \"unresolved\"] satisfies ReadonlyArray<RlyDiffFindingFilter>\nconst layouts = [\"split\", \"stacked\"] satisfies ReadonlyArray<RlyDiffLayout>\n\nconst titleCase = (value: string): string => `${value.slice(0, 1).toUpperCase()}${value.slice(1)}`\n\nconst validateCounts = (indexedCount: number, totalCount: number): void => {\n if (!Number.isInteger(indexedCount) || !Number.isInteger(totalCount)) {\n throw new Error(\"DiffHeader counts must be integers\")\n }\n if (indexedCount < 0 || totalCount < 0 || indexedCount > totalCount) {\n throw new Error(\"DiffHeader indexedCount must be between zero and totalCount\")\n }\n}\n\n/** Render indexed progress and controlled preferences without fetching or rendering provider content. */\nexport const DiffHeader = ({\n className,\n findingFilter,\n heading,\n indexedCount,\n isWrapped,\n layout,\n onFindingFilterChange,\n onLayoutChange,\n onWrapChange,\n selectedFileLabel,\n totalCount,\n ...props\n}: DiffHeaderProps): ReactElement => {\n const visibleHeading = requireText(heading, \"DiffHeader heading\")\n if (selectedFileLabel !== undefined) requireText(selectedFileLabel, \"DiffHeader selectedFileLabel\")\n validateCounts(indexedCount, totalCount)\n const progressId = `rly-diff-header-progress-${useId()}`\n\n return (\n <header {...props} className={classNames(style(\"root\"), className)} data-rly-diff-layout={layout}>\n <section className={style(\"thesis\")}>\n <span className={style(\"eyebrow\")}>Complete diff</span>\n <h1>{visibleHeading}</h1>\n <p>{selectedFileLabel === undefined ? \"All changed files\" : selectedFileLabel}</p>\n </section>\n\n <section aria-labelledby={progressId} className={style(\"progress\")}>\n <span className={style(\"progressCopy\")} id={progressId}>\n <strong>{indexedCount}</strong>\n <span>of {totalCount} files indexed</span>\n </span>\n <progress max={Math.max(totalCount, 1)} value={indexedCount} />\n </section>\n\n <div className={style(\"controls\")}>\n <div aria-label=\"Diff layout\" className={style(\"group\")} role=\"group\">\n {layouts.map((option) => (\n <button aria-pressed={layout === option} key={option} onClick={() => onLayoutChange(option)} type=\"button\">\n {titleCase(option)}\n </button>\n ))}\n </div>\n <button\n aria-pressed={isWrapped}\n className={style(\"standalone\")}\n onClick={() => onWrapChange(!isWrapped)}\n type=\"button\"\n >\n Wrap lines\n </button>\n <div aria-label=\"Finding filter\" className={style(\"group\")} role=\"group\">\n {findingFilters.map((filter) => (\n <button\n aria-pressed={findingFilter === filter}\n key={filter}\n onClick={() => onFindingFilterChange(filter)}\n type=\"button\"\n >\n {titleCase(filter)}\n </button>\n ))}\n </div>\n </div>\n </header>\n )\n}\n","import type { ComponentPropsWithRef, ReactElement, ReactNode } from \"react\"\nimport { classNames, cssClass, requireText } from \"../internal/component.js\"\nimport styles from \"./DiffWorkbench.module.css\"\n\nconst style = (name: string): string => cssClass(styles, name)\n\n/** The application-controlled file scope shown by the workbench. */\nexport type RlyDiffWorkbenchScope =\n | { readonly label: string; readonly mode: \"all-files\" }\n | { readonly fileId: string; readonly label: string; readonly mode: \"selected-file\" }\n\n/** One stable semantic finding slot, independent from virtualized line annotations. */\nexport interface RlyDiffWorkbenchFinding {\n readonly content: ReactNode\n readonly id: string\n}\n\n/** Presentation-only slots for a complete diff review surface. */\nexport type DiffWorkbenchProps = Omit<ComponentPropsWithRef<\"section\">, \"aria-label\" | \"children\"> & {\n readonly emptyFindings?: ReactNode\n readonly findings: ReadonlyArray<RlyDiffWorkbenchFinding>\n readonly findingsLabel?: string\n readonly header: ReactNode\n readonly inventory: ReactNode\n readonly inventoryLabel?: string\n readonly label: string\n readonly onShowAllFiles?: () => void\n readonly scope: RlyDiffWorkbenchScope\n readonly statusNotice?: ReactNode\n readonly viewer: ReactNode\n readonly viewerLabel?: string\n}\n\nconst validateFindings = (findings: ReadonlyArray<RlyDiffWorkbenchFinding>): void => {\n const ids = new Set<string>()\n for (const finding of findings) {\n const id = requireText(finding.id, \"DiffWorkbench finding id\")\n if (ids.has(id)) throw new Error(`DiffWorkbench finding ids must be unique: ${id}`)\n ids.add(id)\n }\n}\n\n/** Compose complete inventory, renderer, and semantic evidence without owning application state. */\nexport const DiffWorkbench = ({\n className,\n emptyFindings = \"No findings match this view.\",\n findings,\n findingsLabel = \"Semantic findings\",\n header,\n inventory,\n inventoryLabel = \"Changed files\",\n label,\n onShowAllFiles,\n scope,\n statusNotice,\n viewer,\n viewerLabel = \"Code changes\",\n ...props\n}: DiffWorkbenchProps): ReactElement => {\n const visibleLabel = requireText(label, \"DiffWorkbench label\")\n const visibleScopeLabel = requireText(scope.label, \"DiffWorkbench scope label\")\n const visibleInventoryLabel = requireText(inventoryLabel, \"DiffWorkbench inventoryLabel\")\n const visibleViewerLabel = requireText(viewerLabel, \"DiffWorkbench viewerLabel\")\n const visibleFindingsLabel = requireText(findingsLabel, \"DiffWorkbench findingsLabel\")\n if (scope.mode === \"selected-file\") {\n requireText(scope.fileId, \"DiffWorkbench selected file id\")\n if (onShowAllFiles === undefined) {\n throw new Error(\"DiffWorkbench selected-file scope requires onShowAllFiles\")\n }\n }\n validateFindings(findings)\n\n return (\n <section\n {...props}\n aria-label={visibleLabel}\n className={classNames(style(\"root\"), className)}\n data-rly-diff-scope={scope.mode}\n {...(scope.mode === \"selected-file\" ? { \"data-rly-diff-selected-file\": scope.fileId } : {})}\n >\n <div className={style(\"header\")} data-rly-diff-workbench-slot=\"header\">\n {header}\n </div>\n\n <div className={style(\"body\")}>\n <section\n aria-label={visibleInventoryLabel}\n className={style(\"inventory\")}\n data-rly-diff-workbench-slot=\"inventory\"\n >\n {inventory}\n </section>\n\n <div className={style(\"review\")}>\n <header className={style(\"scope\")}>\n <span className={style(\"scopeLabel\")}>{scope.mode === \"all-files\" ? \"All files\" : \"Selected file\"}</span>\n <strong className={style(\"scopeValue\")}>{visibleScopeLabel}</strong>\n {scope.mode === \"selected-file\" ? (\n <button className={style(\"showAll\")} onClick={onShowAllFiles} type=\"button\">\n Show all files\n </button>\n ) : null}\n </header>\n {statusNotice === undefined ? null : (\n <div aria-live=\"polite\" className={style(\"notice\")} data-rly-diff-workbench-slot=\"status\" role=\"status\">\n {statusNotice}\n </div>\n )}\n <section aria-label={visibleViewerLabel} className={style(\"viewer\")} data-rly-diff-workbench-slot=\"viewer\">\n {viewer}\n </section>\n </div>\n\n <aside aria-label={visibleFindingsLabel} className={style(\"findings\")} data-rly-diff-workbench-slot=\"findings\">\n <header className={style(\"findingsHeader\")}>\n <span>Review evidence</span>\n <h2>{visibleFindingsLabel}</h2>\n <strong aria-label={`${findings.length} findings`}>{findings.length}</strong>\n </header>\n {findings.length === 0 ? (\n <div className={style(\"empty\")}>{emptyFindings}</div>\n ) : (\n <ol aria-label={`${visibleFindingsLabel} list`} className={style(\"findingList\")} tabIndex={0}>\n {findings.map((finding) => (\n <li className={style(\"findingItem\")} key={finding.id}>\n {finding.content}\n </li>\n ))}\n </ol>\n )}\n </aside>\n </div>\n </section>\n )\n}\n"],"x_google_ignoreList":[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,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,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,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206],"mappings":"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"}