@band-app/server 0.31.1 → 0.33.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 (178) hide show
  1. package/dist/client/assets/{TerminalPanel-DdoEObnF.js → TerminalPanel-CyltRZLD.js} +1 -1
  2. package/dist/client/assets/_basePickBy-Dl99bUuK.js +1 -0
  3. package/dist/client/assets/{_baseUniq-BZZjCl_a.js → _baseUniq-xYPKjKRI.js} +1 -1
  4. package/dist/client/assets/addon-unicode11-LsnDChsR.js +1 -0
  5. package/dist/client/assets/{arc-CHfgBvn_.js → arc-L0FqLNvl.js} +1 -1
  6. package/dist/client/assets/{architectureDiagram-VXUJARFQ-DQA19xNg.js → architectureDiagram-VXUJARFQ-sxFQR6t8.js} +1 -1
  7. package/dist/client/assets/{blockDiagram-VD42YOAC-F8PTxmQ_.js → blockDiagram-VD42YOAC-CKyryScy.js} +4 -4
  8. package/dist/client/assets/{c4Diagram-YG6GDRKO-BJUm36SI.js → c4Diagram-YG6GDRKO-CKkLibM6.js} +1 -1
  9. package/dist/client/assets/channel-CnUqAM2K.js +1 -0
  10. package/dist/client/assets/{chunk-4BX2VUAB-C1wjI1w7.js → chunk-4BX2VUAB-B2Q5eiyh.js} +1 -1
  11. package/dist/client/assets/{chunk-55IACEB6-CGfcCH6v.js → chunk-55IACEB6-Bx7ppH1E.js} +1 -1
  12. package/dist/client/assets/{chunk-B4BG7PRW-DmVN_q5R.js → chunk-B4BG7PRW-z63abbDt.js} +3 -3
  13. package/dist/client/assets/{chunk-DI55MBZ5-Cp0-lUyt.js → chunk-DI55MBZ5-CVuxJX-G.js} +3 -3
  14. package/dist/client/assets/{chunk-FMBD7UC4-BE3Cu6Ut.js → chunk-FMBD7UC4-C4mR-Kqh.js} +1 -1
  15. package/dist/client/assets/{chunk-QN33PNHL-CPVRy0ja.js → chunk-QN33PNHL-DC9EuvVO.js} +1 -1
  16. package/dist/client/assets/{chunk-QZHKN3VN-C7Y7bhq5.js → chunk-QZHKN3VN-BVfYPmR6.js} +1 -1
  17. package/dist/client/assets/{chunk-TZMSLE5B-Bi_vlgox.js → chunk-TZMSLE5B-BERfyjOQ.js} +1 -1
  18. package/dist/client/assets/classDiagram-2ON5EDUG-Bl2ARqSW.js +1 -0
  19. package/dist/client/assets/classDiagram-v2-WZHVMYZB-Bl2ARqSW.js +1 -0
  20. package/dist/client/assets/clone-DoC0Yowh.js +1 -0
  21. package/dist/client/assets/{cose-bilkent-S5V4N54A-CoCMLv_6.js → cose-bilkent-S5V4N54A-CKYh86Nn.js} +1 -1
  22. package/dist/client/assets/{dagre-6UL2VRFP-EnAkiIUe.js → dagre-6UL2VRFP-CHXYsbsT.js} +2 -2
  23. package/dist/client/assets/{diagram-PSM6KHXK-C2Y89USX.js → diagram-PSM6KHXK-BgTabbUt.js} +1 -1
  24. package/dist/client/assets/{diagram-QEK2KX5R-B-lmAMSj.js → diagram-QEK2KX5R-DGko5nSx.js} +2 -2
  25. package/dist/client/assets/diagram-S2PKOQOG-CE06Gb7p.js +24 -0
  26. package/dist/client/assets/{erDiagram-Q2GNP2WA-PNRr4PfI.js → erDiagram-Q2GNP2WA-DRAdXF3c.js} +3 -3
  27. package/dist/client/assets/{flowDiagram-NV44I4VS-DMJLrOve.js → flowDiagram-NV44I4VS-DMdYos4M.js} +3 -3
  28. package/dist/client/assets/{ganttDiagram-JELNMOA3-B8xTGdhz.js → ganttDiagram-JELNMOA3-B1hq9zyH.js} +5 -5
  29. package/dist/client/assets/gitGraphDiagram-V2S2FVAM-BX_eqyqV.js +65 -0
  30. package/dist/client/assets/{graph-DtlkBWdT.js → graph-B1pXNJmu.js} +1 -1
  31. package/dist/client/assets/highlighted-body-B3W2YXNL-xpTIV5H4.js +1 -0
  32. package/dist/client/assets/index-61SgNErm.js +3 -0
  33. package/dist/client/assets/index-67ml7mn1.js +1 -0
  34. package/dist/client/assets/index-BAlyKPeT.js +1 -0
  35. package/dist/client/assets/index-BD37kyMP.js +1 -0
  36. package/dist/client/assets/index-BHygUCeT.js +1 -0
  37. package/dist/client/assets/{index-DwIIxwyA.js → index-BYm6dlG5.js} +2 -2
  38. package/dist/client/assets/index-CWczZ7eS.js +1 -0
  39. package/dist/client/assets/{index-DzmcYgsK.js → index-CoSFZPv4.js} +1 -1
  40. package/dist/client/assets/index-DNX82GPp.js +1 -0
  41. package/dist/client/assets/index-DUaIvPpT.js +7 -0
  42. package/dist/client/assets/index-Dm9xRcT9.js +1 -0
  43. package/dist/client/assets/index-Do4DO4E-.js +1 -0
  44. package/dist/client/assets/index-Mpl66MhJ.js +1 -0
  45. package/dist/client/assets/{infoDiagram-HS3SLOUP-DekD9pOv.js → infoDiagram-HS3SLOUP-DHAIDbZu.js} +1 -1
  46. package/dist/client/assets/{journeyDiagram-XKPGCS4Q-Fzs0FbeM.js → journeyDiagram-XKPGCS4Q-BJHZIWhu.js} +1 -1
  47. package/dist/client/assets/{kanban-definition-3W4ZIXB7-6B7ehAZt.js → kanban-definition-3W4ZIXB7-_qzn6_ii.js} +6 -6
  48. package/dist/client/assets/{layout-CcUD7gHw.js → layout-CksxJldr.js} +1 -1
  49. package/dist/client/assets/main-D4u0xEOA.css +1 -0
  50. package/dist/client/assets/main-FnYu011V.js +1002 -0
  51. package/dist/client/assets/{mindmap-definition-VGOIOE7T-CfY1kt2W.js → mindmap-definition-VGOIOE7T-Deop3o-V.js} +4 -4
  52. package/dist/client/assets/{pieDiagram-ADFJNKIX-C-ZZw4jN.js → pieDiagram-ADFJNKIX-d4k56ZYA.js} +2 -2
  53. package/dist/client/assets/{quadrantDiagram-AYHSOK5B-Cn4pxyBH.js → quadrantDiagram-AYHSOK5B-CBA2J09q.js} +1 -1
  54. package/dist/client/assets/{requirementDiagram-UZGBJVZJ-B0UYN1Sq.js → requirementDiagram-UZGBJVZJ-C6Nnujg6.js} +1 -1
  55. package/dist/client/assets/{sankeyDiagram-TZEHDZUN-DegmNHvK.js → sankeyDiagram-TZEHDZUN-CPfLLuk9.js} +6 -6
  56. package/dist/client/assets/{sequenceDiagram-WL72ISMW-B8BlHF2c.js → sequenceDiagram-WL72ISMW-C_OY-5TF.js} +6 -6
  57. package/dist/client/assets/{stateDiagram-FKZM4ZOC-3FR63a_N.js → stateDiagram-FKZM4ZOC-CeuP4CjM.js} +1 -1
  58. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-B9BH2TF6.js +1 -0
  59. package/dist/client/assets/{timeline-definition-IT6M3QCI-F2yYpGjm.js → timeline-definition-IT6M3QCI-CL_Rmapn.js} +4 -4
  60. package/dist/client/assets/{treemap-GDKQZRPO-Br0ExAYs.js → treemap-GDKQZRPO-2uvsx2LQ.js} +1 -1
  61. package/dist/client/assets/workspace._workspaceId-D3mRY9_6.js +1 -0
  62. package/dist/client/assets/{workspace._workspaceId-DxBPbkq5.js → workspace._workspaceId-DF3JNMRG.js} +1 -1
  63. package/dist/client/assets/{xychartDiagram-PRI3JC2R-CnbekSuG.js → xychartDiagram-PRI3JC2R-5Pzm62mv.js} +1 -1
  64. package/dist/migrations/20260926162113_browser_profiles/migration.sql +12 -0
  65. package/dist/migrations/20260926162113_browser_profiles/snapshot.json +1520 -0
  66. package/dist/migrations/20260927123820_agent_sessions/migration.sql +16 -0
  67. package/dist/migrations/20260927123820_agent_sessions/snapshot.json +1675 -0
  68. package/dist/openapi.json +2748 -1140
  69. package/dist/server/assets/{TerminalPanel-CThgG3BY.js → TerminalPanel-DMTU2FMX.js} +1 -1
  70. package/dist/server/assets/{_basePickBy-DMEcDwoD.js → _basePickBy-CMTHAoTW.js} +2 -2
  71. package/dist/server/assets/{_baseUniq-C6YEem8Y.js → _baseUniq-DkG_FLLk.js} +1 -1
  72. package/dist/server/assets/_tanstack-start-manifest_v-cBOqdEgL.js +4 -0
  73. package/dist/server/assets/addon-unicode11-BhCmKRb7.js +181 -0
  74. package/dist/server/assets/{arc-CcEw1rIf.js → arc-CSj375cS.js} +1 -1
  75. package/dist/server/assets/{architecture-7HQA4BMR-BXvzNToj.js → architecture-7HQA4BMR-MwhJw22a.js} +6 -6
  76. package/dist/server/assets/{architectureDiagram-VXUJARFQ-BliQCKdG.js → architectureDiagram-VXUJARFQ-DyVVxp88.js} +6 -6
  77. package/dist/server/assets/{blockDiagram-VD42YOAC-CjmYP_Tq.js → blockDiagram-VD42YOAC-aGbi3Kv_.js} +6 -6
  78. package/dist/server/assets/{c4Diagram-YG6GDRKO-BfRolLuL.js → c4Diagram-YG6GDRKO-DhyUvqPs.js} +2 -2
  79. package/dist/server/assets/{channel-CmYmU2fF.js → channel-CJthnbp1.js} +1 -1
  80. package/dist/server/assets/{chunk-4BX2VUAB-DnWdxOy5.js → chunk-4BX2VUAB-Ch7bkquC.js} +1 -1
  81. package/dist/server/assets/{chunk-55IACEB6-BTmbTQIk.js → chunk-55IACEB6-CLKopZj8.js} +1 -1
  82. package/dist/server/assets/{chunk-B4BG7PRW-Dd8U8eRH.js → chunk-B4BG7PRW-BVv_KeWC.js} +4 -4
  83. package/dist/server/assets/{chunk-DI55MBZ5-DOSx8ES_.js → chunk-DI55MBZ5-C0_HSk1s.js} +3 -3
  84. package/dist/server/assets/{chunk-FMBD7UC4-DoS4CUAI.js → chunk-FMBD7UC4-3fy4TSVt.js} +1 -1
  85. package/dist/server/assets/{chunk-QN33PNHL-81e5hpqA.js → chunk-QN33PNHL-QdSQZPQz.js} +1 -1
  86. package/dist/server/assets/{chunk-QZHKN3VN-Cruwx7ml.js → chunk-QZHKN3VN-Dak-YXr5.js} +1 -1
  87. package/dist/server/assets/{chunk-TZMSLE5B-CVdCnVV1.js → chunk-TZMSLE5B-ThSW8afd.js} +1 -1
  88. package/dist/server/assets/{classDiagram-v2-WZHVMYZB-CI4dbXAN.js → classDiagram-2ON5EDUG-Cmkciu-2.js} +5 -5
  89. package/dist/server/assets/{classDiagram-2ON5EDUG-CI4dbXAN.js → classDiagram-v2-WZHVMYZB-Cmkciu-2.js} +5 -5
  90. package/dist/server/assets/{clone-DCf3XlPY.js → clone-ciZ96ZK2.js} +1 -1
  91. package/dist/server/assets/{cose-bilkent-S5V4N54A-MuUXxVtC.js → cose-bilkent-S5V4N54A-CP20--8W.js} +1 -1
  92. package/dist/server/assets/{dagre-6UL2VRFP-C7ckn20c.js → dagre-6UL2VRFP-D9LrmNJH.js} +6 -6
  93. package/dist/server/assets/{diagram-PSM6KHXK-CMxqFNNc.js → diagram-PSM6KHXK-l3xztHYH.js} +7 -7
  94. package/dist/server/assets/{diagram-QEK2KX5R-DGn7Wc3l.js → diagram-QEK2KX5R-i9twZ5aj.js} +6 -6
  95. package/dist/server/assets/{diagram-S2PKOQOG-DCkkbBLl.js → diagram-S2PKOQOG-DIHmhvbo.js} +6 -6
  96. package/dist/server/assets/{erDiagram-Q2GNP2WA-CKPFaAp2.js → erDiagram-Q2GNP2WA-fMWrL8ta.js} +4 -4
  97. package/dist/server/assets/{flowDiagram-NV44I4VS-DFf8L08F.js → flowDiagram-NV44I4VS-BqKFb2gL.js} +5 -5
  98. package/dist/server/assets/{ganttDiagram-JELNMOA3-1-t_r6jX.js → ganttDiagram-JELNMOA3-XwScweUm.js} +1 -1
  99. package/dist/server/assets/{gitGraph-G5XIXVHT-CXVQFRFs.js → gitGraph-G5XIXVHT-DDO_mRkl.js} +6 -6
  100. package/dist/server/assets/{gitGraphDiagram-V2S2FVAM-DVqN7ZP0.js → gitGraphDiagram-V2S2FVAM-B2e2LaZt.js} +7 -7
  101. package/dist/server/assets/{graph-Dot7YH89.js → graph-DqF0fiyC.js} +2 -2
  102. package/dist/server/assets/{highlighted-body-B3W2YXNL-8cjZuRJ2.js → highlighted-body-B3W2YXNL-B9lH9lqG.js} +1 -1
  103. package/dist/server/assets/{index-C1hQNNzU.js → index-BFzH6uNZ.js} +1 -2
  104. package/dist/server/assets/{index-Bi1NreVG.js → index-BRPRiIzs.js} +1 -5
  105. package/dist/server/assets/{index-D6Vm7E_i.js → index-BZSpvQ87.js} +1 -2
  106. package/dist/server/assets/{index-BcZgkaNS.js → index-BuxMoI9R.js} +1 -2
  107. package/dist/server/assets/{index-GgrvHhHi.js → index-C0T5sHCj.js} +1 -3
  108. package/dist/server/assets/{index-nzUHfYBx.js → index-C35Eg9Oe.js} +1 -2
  109. package/dist/server/assets/{index-CxlXrP3m.js → index-C4LlK8zq.js} +1 -1
  110. package/dist/server/assets/{index-B2x1DfYc.js → index-Cz3ed2GU.js} +1 -2
  111. package/dist/server/assets/{index-BDgBWXBD.js → index-Oepbj3Cu.js} +1 -2
  112. package/dist/server/assets/{index-Ba8AA28e.js → index-QY-ciJ02.js} +1 -2
  113. package/dist/server/assets/{index-D3AFKy3U.js → index-dOV5Jyvk.js} +1 -3
  114. package/dist/server/assets/{index-p6O_x_qN.js → index-iLqcyvvo.js} +1 -2
  115. package/dist/server/assets/{index-AmUVRRsa.js → index-ihiIN7Vo.js} +1 -2
  116. package/dist/server/assets/{info-VBDWY6EO-BXRDzzOP.js → info-VBDWY6EO-BSfwYSKN.js} +6 -6
  117. package/dist/server/assets/{infoDiagram-HS3SLOUP-D2jQYgOa.js → infoDiagram-HS3SLOUP-BcPNSucE.js} +5 -5
  118. package/dist/server/assets/{journeyDiagram-XKPGCS4Q-bf_S8co7.js → journeyDiagram-XKPGCS4Q-B_JljIi2.js} +4 -4
  119. package/dist/server/assets/{kanban-definition-3W4ZIXB7-eje5lYLG.js → kanban-definition-3W4ZIXB7-B5aPUZvg.js} +2 -2
  120. package/dist/server/assets/{layout-D3AhBFqI.js → layout-Cv2BYqNX.js} +4 -4
  121. package/dist/server/assets/{mermaid-3ZIDBTTL-C-00O3F0.js → mermaid-3ZIDBTTL-D_akVRms.js} +1 -1
  122. package/dist/server/assets/{mermaid-parser.core-CyX4B1l5.js → mermaid-parser.core-uDeqwrPN.js} +11 -11
  123. package/dist/server/assets/{mindmap-definition-VGOIOE7T-D51F_plo.js → mindmap-definition-VGOIOE7T-C9LF9XTT.js} +3 -3
  124. package/dist/server/assets/{packet-DYOGHKS2-CCJkkNTh.js → packet-DYOGHKS2-lRBX1T35.js} +6 -6
  125. package/dist/server/assets/{pie-VRWISCQL-7Tei6lnA.js → pie-VRWISCQL-BCZ9vmsj.js} +6 -6
  126. package/dist/server/assets/{pieDiagram-ADFJNKIX-BclaT-41.js → pieDiagram-ADFJNKIX-HYsm0km8.js} +7 -7
  127. package/dist/server/assets/{quadrantDiagram-AYHSOK5B-CnerVMbZ.js → quadrantDiagram-AYHSOK5B-Fdzz2j2T.js} +1 -1
  128. package/dist/server/assets/{radar-ZZBFDIW7-QLmbgAT7.js → radar-ZZBFDIW7-iZ-6xOx9.js} +6 -6
  129. package/dist/server/assets/{requirementDiagram-UZGBJVZJ-a2FIYlfE.js → requirementDiagram-UZGBJVZJ-CeHGAs1A.js} +3 -3
  130. package/dist/server/assets/{router-DDnNUwTm.js → router-A58OKuIG.js} +52793 -29611
  131. package/dist/server/assets/{sankeyDiagram-TZEHDZUN-B3I-S6CG.js → sankeyDiagram-TZEHDZUN-DXgjoM9B.js} +1 -1
  132. package/dist/server/assets/{sequenceDiagram-WL72ISMW-kgJrgJ9r.js → sequenceDiagram-WL72ISMW-BK24aHRm.js} +3 -3
  133. package/dist/server/assets/{stateDiagram-FKZM4ZOC-C6UTf0ag.js → stateDiagram-FKZM4ZOC-uW8qduwY.js} +8 -8
  134. package/dist/server/assets/{stateDiagram-v2-4FDKWEC3-Dj0SlbA4.js → stateDiagram-v2-4FDKWEC3-O0D8F8J2.js} +4 -4
  135. package/dist/server/assets/{timeline-definition-IT6M3QCI-DGPtqtJD.js → timeline-definition-IT6M3QCI-BaSl1O8h.js} +2 -2
  136. package/dist/server/assets/{treemap-GDKQZRPO-B-wn0rT7.js → treemap-GDKQZRPO-DqxwR6w-.js} +6 -6
  137. package/dist/server/assets/{workspace._workspaceId-CG5NG8aZ.js → workspace._workspaceId-B09dwAP5.js} +1 -1
  138. package/dist/server/assets/workspace._workspaceId-CZZSeH-P.js +316 -0
  139. package/dist/server/assets/{xychartDiagram-PRI3JC2R-BTb4nc1D.js → xychartDiagram-PRI3JC2R-Du3l-FcL.js} +1 -1
  140. package/dist/server/server.js +2 -2
  141. package/dist/start-server.mjs +80228 -58130
  142. package/dist/terminal-daemon.mjs +747 -113
  143. package/package.json +6 -4
  144. package/dist/client/assets/_basePickBy-B3BFyLWC.js +0 -1
  145. package/dist/client/assets/channel-RulspXoY.js +0 -1
  146. package/dist/client/assets/classDiagram-2ON5EDUG-Db0XAgV5.js +0 -1
  147. package/dist/client/assets/classDiagram-v2-WZHVMYZB-Db0XAgV5.js +0 -1
  148. package/dist/client/assets/clone-OMk_JTVX.js +0 -1
  149. package/dist/client/assets/diagram-S2PKOQOG-D3nbDuM4.js +0 -24
  150. package/dist/client/assets/gitGraphDiagram-V2S2FVAM-1W-3cgTi.js +0 -65
  151. package/dist/client/assets/highlighted-body-B3W2YXNL-By10eQ93.js +0 -1
  152. package/dist/client/assets/index-3OKF_8Is.js +0 -1
  153. package/dist/client/assets/index-Bgy7cu0a.js +0 -1
  154. package/dist/client/assets/index-BzNAZ5FA.js +0 -1
  155. package/dist/client/assets/index-Bzw80mva.js +0 -1
  156. package/dist/client/assets/index-C0hp-RSv.js +0 -7
  157. package/dist/client/assets/index-CEIbmBrz.js +0 -1
  158. package/dist/client/assets/index-D0-MMrtE.js +0 -13
  159. package/dist/client/assets/index-D1tzUCeW.js +0 -1
  160. package/dist/client/assets/index-DS648c4_.js +0 -1
  161. package/dist/client/assets/index-DV4-ZPTy.js +0 -1
  162. package/dist/client/assets/index-DkJyKKg0.js +0 -1
  163. package/dist/client/assets/index-Do8FqasK.js +0 -1
  164. package/dist/client/assets/index-DtgD3j-s.js +0 -6
  165. package/dist/client/assets/index-UlnCpzJG.js +0 -1
  166. package/dist/client/assets/index-bqUQQY5s.js +0 -3
  167. package/dist/client/assets/index-os2U5ZBq.js +0 -1
  168. package/dist/client/assets/main-B-TE9tSM.js +0 -979
  169. package/dist/client/assets/main-mRE1Fhv7.css +0 -1
  170. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-BrxlUWYt.js +0 -1
  171. package/dist/client/assets/workspace._workspaceId-C0VOYb-1.js +0 -1
  172. package/dist/server/assets/_tanstack-start-manifest_v-D-Rf7MMa.js +0 -4
  173. package/dist/server/assets/index-Bt0zkb77.js +0 -1052
  174. package/dist/server/assets/index-CImaqmmh.js +0 -1764
  175. package/dist/server/assets/index-CXGBWoOB.js +0 -2499
  176. package/dist/server/assets/index-CyFAdMlV.js +0 -1030
  177. package/dist/server/assets/index-DoE2xDo2.js +0 -653
  178. package/dist/server/assets/workspace._workspaceId-Dd-upXb6.js +0 -309
@@ -1,1052 +0,0 @@
1
- import { L as LRParser, E as ExternalTokenizer, C as ContextTracker } from "./index-CImaqmmh.js";
2
- import { aW as parseMixed, s as styleTags, t as tags, a$ as EditorView, h as syntaxTree, aX as EditorSelection, L as LanguageSupport, b as LRLanguage, i as indentNodeProp, f as foldNodeProp, b9 as bracketMatchingHandle } from "./router-DDnNUwTm.js";
3
- import { cssLanguage, css } from "./index-CyFAdMlV.js";
4
- import { typescriptLanguage, jsxLanguage, tsxLanguage, javascriptLanguage, javascript } from "./index-DoE2xDo2.js";
5
- import "../server.js";
6
- import "node:async_hooks";
7
- import "node:stream";
8
- import "util";
9
- import "crypto";
10
- import "async_hooks";
11
- import "stream";
12
- import "node:stream/web";
13
- import "node:process";
14
- import "node:path";
15
- import "node:url";
16
- const scriptText = 55, StartCloseScriptTag = 1, styleText = 56, StartCloseStyleTag = 2, textareaText = 57, StartCloseTextareaTag = 3, EndTag = 4, SelfClosingEndTag = 5, StartTag = 6, StartScriptTag = 7, StartStyleTag = 8, StartTextareaTag = 9, StartSelfClosingTag = 10, StartCloseTag = 11, NoMatchStartCloseTag = 12, MismatchedStartCloseTag = 13, missingCloseTag = 58, IncompleteTag = 14, IncompleteCloseTag = 15, commentContent$1 = 59, Element = 21, TagName = 23, Attribute = 24, AttributeName = 25, AttributeValue = 27, UnquotedAttributeValue = 28, ScriptText = 29, StyleText = 32, TextareaText = 35, OpenTag = 37, CloseTag = 38, Dialect_noMatch = 0, Dialect_selfClosing = 1;
17
- const selfClosers$1 = {
18
- area: true,
19
- base: true,
20
- br: true,
21
- col: true,
22
- command: true,
23
- embed: true,
24
- frame: true,
25
- hr: true,
26
- img: true,
27
- input: true,
28
- keygen: true,
29
- link: true,
30
- meta: true,
31
- param: true,
32
- source: true,
33
- track: true,
34
- wbr: true,
35
- menuitem: true
36
- };
37
- const implicitlyClosed = {
38
- dd: true,
39
- li: true,
40
- optgroup: true,
41
- option: true,
42
- p: true,
43
- rp: true,
44
- rt: true,
45
- tbody: true,
46
- td: true,
47
- tfoot: true,
48
- th: true,
49
- tr: true
50
- };
51
- const closeOnOpen = {
52
- dd: { dd: true, dt: true },
53
- dt: { dd: true, dt: true },
54
- li: { li: true },
55
- option: { option: true, optgroup: true },
56
- optgroup: { optgroup: true },
57
- p: {
58
- address: true,
59
- article: true,
60
- aside: true,
61
- blockquote: true,
62
- dir: true,
63
- div: true,
64
- dl: true,
65
- fieldset: true,
66
- footer: true,
67
- form: true,
68
- h1: true,
69
- h2: true,
70
- h3: true,
71
- h4: true,
72
- h5: true,
73
- h6: true,
74
- header: true,
75
- hgroup: true,
76
- hr: true,
77
- menu: true,
78
- nav: true,
79
- ol: true,
80
- p: true,
81
- pre: true,
82
- section: true,
83
- table: true,
84
- ul: true
85
- },
86
- rp: { rp: true, rt: true },
87
- rt: { rp: true, rt: true },
88
- tbody: { tbody: true, tfoot: true },
89
- td: { td: true, th: true },
90
- tfoot: { tbody: true },
91
- th: { td: true, th: true },
92
- thead: { tbody: true, tfoot: true },
93
- tr: { tr: true }
94
- };
95
- function nameChar(ch) {
96
- return ch == 45 || ch == 46 || ch == 58 || ch >= 65 && ch <= 90 || ch == 95 || ch >= 97 && ch <= 122 || ch >= 161;
97
- }
98
- let cachedName = null, cachedInput = null, cachedPos = 0;
99
- function tagNameAfter(input, offset) {
100
- let pos = input.pos + offset;
101
- if (cachedPos == pos && cachedInput == input) return cachedName;
102
- let next = input.peek(offset), name = "";
103
- for (; ; ) {
104
- if (!nameChar(next)) break;
105
- name += String.fromCharCode(next);
106
- next = input.peek(++offset);
107
- }
108
- cachedInput = input;
109
- cachedPos = pos;
110
- return cachedName = name ? name.toLowerCase() : next == question || next == bang ? void 0 : null;
111
- }
112
- const lessThan = 60, greaterThan = 62, slash = 47, question = 63, bang = 33, dash = 45;
113
- function ElementContext(name, parent) {
114
- this.name = name;
115
- this.parent = parent;
116
- }
117
- const startTagTerms = [StartTag, StartSelfClosingTag, StartScriptTag, StartStyleTag, StartTextareaTag];
118
- const elementContext = new ContextTracker({
119
- start: null,
120
- shift(context, term, stack, input) {
121
- return startTagTerms.indexOf(term) > -1 ? new ElementContext(tagNameAfter(input, 1) || "", context) : context;
122
- },
123
- reduce(context, term) {
124
- return term == Element && context ? context.parent : context;
125
- },
126
- reuse(context, node, stack, input) {
127
- let type = node.type.id;
128
- return type == StartTag || type == OpenTag ? new ElementContext(tagNameAfter(input, 1) || "", context) : context;
129
- },
130
- strict: false
131
- });
132
- const tagStart = new ExternalTokenizer((input, stack) => {
133
- if (input.next != lessThan) {
134
- if (input.next < 0 && stack.context) input.acceptToken(missingCloseTag);
135
- return;
136
- }
137
- input.advance();
138
- let close = input.next == slash;
139
- if (close) input.advance();
140
- let name = tagNameAfter(input, 0);
141
- if (name === void 0) return;
142
- if (!name) return input.acceptToken(close ? IncompleteCloseTag : IncompleteTag);
143
- let parent = stack.context ? stack.context.name : null;
144
- if (close) {
145
- if (name == parent) return input.acceptToken(StartCloseTag);
146
- if (parent && implicitlyClosed[parent]) return input.acceptToken(missingCloseTag, -2);
147
- if (stack.dialectEnabled(Dialect_noMatch)) return input.acceptToken(NoMatchStartCloseTag);
148
- for (let cx = stack.context; cx; cx = cx.parent) if (cx.name == name) return;
149
- input.acceptToken(MismatchedStartCloseTag);
150
- } else {
151
- if (name == "script") return input.acceptToken(StartScriptTag);
152
- if (name == "style") return input.acceptToken(StartStyleTag);
153
- if (name == "textarea") return input.acceptToken(StartTextareaTag);
154
- if (selfClosers$1.hasOwnProperty(name)) return input.acceptToken(StartSelfClosingTag);
155
- if (parent && closeOnOpen[parent] && closeOnOpen[parent][name]) input.acceptToken(missingCloseTag, -1);
156
- else input.acceptToken(StartTag);
157
- }
158
- }, { contextual: true });
159
- const commentContent = new ExternalTokenizer((input) => {
160
- for (let dashes = 0, i = 0; ; i++) {
161
- if (input.next < 0) {
162
- if (i) input.acceptToken(commentContent$1);
163
- break;
164
- }
165
- if (input.next == dash) {
166
- dashes++;
167
- } else if (input.next == greaterThan && dashes >= 2) {
168
- if (i >= 3) input.acceptToken(commentContent$1, -2);
169
- break;
170
- } else {
171
- dashes = 0;
172
- }
173
- input.advance();
174
- }
175
- });
176
- function inForeignElement(context) {
177
- for (; context; context = context.parent)
178
- if (context.name == "svg" || context.name == "math") return true;
179
- return false;
180
- }
181
- const endTag = new ExternalTokenizer((input, stack) => {
182
- if (input.next == slash && input.peek(1) == greaterThan) {
183
- let selfClosing = stack.dialectEnabled(Dialect_selfClosing) || inForeignElement(stack.context);
184
- input.acceptToken(selfClosing ? SelfClosingEndTag : EndTag, 2);
185
- } else if (input.next == greaterThan) {
186
- input.acceptToken(EndTag, 1);
187
- }
188
- });
189
- function contentTokenizer(tag, textToken, endToken) {
190
- let lastState = 2 + tag.length;
191
- return new ExternalTokenizer((input) => {
192
- for (let state = 0, matchedLen = 0, i = 0; ; i++) {
193
- if (input.next < 0) {
194
- if (i) input.acceptToken(textToken);
195
- break;
196
- }
197
- if (state == 0 && input.next == lessThan || state == 1 && input.next == slash || state >= 2 && state < lastState && input.next == tag.charCodeAt(state - 2)) {
198
- state++;
199
- matchedLen++;
200
- } else if (state == lastState && input.next == greaterThan) {
201
- if (i > matchedLen)
202
- input.acceptToken(textToken, -matchedLen);
203
- else
204
- input.acceptToken(endToken, -(matchedLen - 2));
205
- break;
206
- } else if ((input.next == 10 || input.next == 13) && i) {
207
- input.acceptToken(textToken, 1);
208
- break;
209
- } else {
210
- state = matchedLen = 0;
211
- }
212
- input.advance();
213
- }
214
- });
215
- }
216
- const scriptTokens = contentTokenizer("script", scriptText, StartCloseScriptTag);
217
- const styleTokens = contentTokenizer("style", styleText, StartCloseStyleTag);
218
- const textareaTokens = contentTokenizer("textarea", textareaText, StartCloseTextareaTag);
219
- const htmlHighlighting = styleTags({
220
- "Text RawText IncompleteTag IncompleteCloseTag": tags.content,
221
- "StartTag StartCloseTag SelfClosingEndTag EndTag": tags.angleBracket,
222
- TagName: tags.tagName,
223
- "MismatchedCloseTag/TagName": [tags.tagName, tags.invalid],
224
- AttributeName: tags.attributeName,
225
- "AttributeValue UnquotedAttributeValue": tags.attributeValue,
226
- Is: tags.definitionOperator,
227
- "EntityReference CharacterReference": tags.character,
228
- Comment: tags.blockComment,
229
- ProcessingInst: tags.processingInstruction,
230
- DoctypeDecl: tags.documentMeta
231
- });
232
- const parser = LRParser.deserialize({
233
- version: 14,
234
- states: ",xOVO!rOOO!ZQ#tO'#CrO!`Q#tO'#C{O!eQ#tO'#DOO!jQ#tO'#DRO!oQ#tO'#DTO!tOaO'#CqO#PObO'#CqO#[OdO'#CqO$kO!rO'#CqOOO`'#Cq'#CqO$rO$fO'#DUO$zQ#tO'#DWO%PQ#tO'#DXOOO`'#Dl'#DlOOO`'#DZ'#DZQVO!rOOO%UQ&rO,59^O%aQ&rO,59gO%lQ&rO,59jO%wQ&rO,59mO&SQ&rO,59oOOOa'#D_'#D_O&_OaO'#CyO&jOaO,59]OOOb'#D`'#D`O&rObO'#C|O&}ObO,59]OOOd'#Da'#DaO'VOdO'#DPO'bOdO,59]OOO`'#Db'#DbO'jO!rO,59]O'qQ#tO'#DSOOO`,59],59]OOOp'#Dc'#DcO'vO$fO,59pOOO`,59p,59pO(OQ#|O,59rO(TQ#|O,59sOOO`-E7X-E7XO(YQ&rO'#CtOOQW'#D['#D[O(hQ&rO1G.xOOOa1G.x1G.xOOO`1G/Z1G/ZO(sQ&rO1G/ROOOb1G/R1G/RO)OQ&rO1G/UOOOd1G/U1G/UO)ZQ&rO1G/XOOO`1G/X1G/XO)fQ&rO1G/ZOOOa-E7]-E7]O)qQ#tO'#CzOOO`1G.w1G.wOOOb-E7^-E7^O)vQ#tO'#C}OOOd-E7_-E7_O){Q#tO'#DQOOO`-E7`-E7`O*QQ#|O,59nOOOp-E7a-E7aOOO`1G/[1G/[OOO`1G/^1G/^OOO`1G/_1G/_O*VQ,UO,59`OOQW-E7Y-E7YOOOa7+$d7+$dOOO`7+$u7+$uOOOb7+$m7+$mOOOd7+$p7+$pOOO`7+$s7+$sO*bQ#|O,59fO*gQ#|O,59iO*lQ#|O,59lOOO`1G/Y1G/YO*qO7[O'#CwO+SOMhO'#CwOOQW1G.z1G.zOOO`1G/Q1G/QOOO`1G/T1G/TOOO`1G/W1G/WOOOO'#D]'#D]O+eO7[O,59cOOQW,59c,59cOOOO'#D^'#D^O+vOMhO,59cOOOO-E7Z-E7ZOOQW1G.}1G.}OOOO-E7[-E7[",
235
- stateData: ",c~O!_OS~OUSOVPOWQOXROYTO[]O][O^^O_^Oa^Ob^Oc^Od^Oy^O|_O!eZO~OgaO~OgbO~OgcO~OgdO~OgeO~O!XfOPmP![mP~O!YiOQpP![pP~O!ZlORsP![sP~OUSOVPOWQOXROYTOZqO[]O][O^^O_^Oa^Ob^Oc^Od^Oy^O!eZO~O![rO~P#gO!]sO!fuO~OgvO~OgwO~OS|OT}OiyO~OS!POT}OiyO~OS!ROT}OiyO~OS!TOT}OiyO~OS}OT}OiyO~O!XfOPmX![mX~OP!WO![!XO~O!YiOQpX![pX~OQ!ZO![!XO~O!ZlORsX![sX~OR!]O![!XO~O![!XO~P#gOg!_O~O!]sO!f!aO~OS!bO~OS!cO~Oj!dOShXThXihX~OS!fOT!gOiyO~OS!hOT!gOiyO~OS!iOT!gOiyO~OS!jOT!gOiyO~OS!gOT!gOiyO~Og!kO~Og!lO~Og!mO~OS!nO~Ol!qO!a!oO!c!pO~OS!rO~OS!sO~OS!tO~Ob!uOc!uOd!uO!a!wO!b!uO~Ob!xOc!xOd!xO!c!wO!d!xO~Ob!uOc!uOd!uO!a!{O!b!uO~Ob!xOc!xOd!xO!c!{O!d!xO~OT~cbd!ey|!e~",
236
- goto: "%q!aPPPPPPPPPPPPPPPPPPPPP!b!hP!nPP!zP!}#Q#T#Z#^#a#g#j#m#s#y!bP!b!bP$P$V$m$s$y%P%V%]%cPPPPPPPP%iX^OX`pXUOX`pezabcde{!O!Q!S!UR!q!dRhUR!XhXVOX`pRkVR!XkXWOX`pRnWR!XnXXOX`pQrXR!XpXYOX`pQ`ORx`Q{aQ!ObQ!QcQ!SdQ!UeZ!e{!O!Q!S!UQ!v!oR!z!vQ!y!pR!|!yQgUR!VgQjVR!YjQmWR![mQpXR!^pQtZR!`tS_O`ToXp",
237
- nodeNames: "⚠ StartCloseTag StartCloseTag StartCloseTag EndTag SelfClosingEndTag StartTag StartTag StartTag StartTag StartTag StartCloseTag StartCloseTag StartCloseTag IncompleteTag IncompleteCloseTag Document Text EntityReference CharacterReference InvalidEntity Element OpenTag TagName Attribute AttributeName Is AttributeValue UnquotedAttributeValue ScriptText CloseTag OpenTag StyleText CloseTag OpenTag TextareaText CloseTag OpenTag CloseTag SelfClosingTag Comment ProcessingInst MismatchedCloseTag CloseTag DoctypeDecl",
238
- maxTerm: 68,
239
- context: elementContext,
240
- nodeProps: [
241
- ["closedBy", -10, 1, 2, 3, 7, 8, 9, 10, 11, 12, 13, "EndTag", 6, "EndTag SelfClosingEndTag", -4, 22, 31, 34, 37, "CloseTag"],
242
- ["openedBy", 4, "StartTag StartCloseTag", 5, "StartTag", -4, 30, 33, 36, 38, "OpenTag"],
243
- ["group", -10, 14, 15, 18, 19, 20, 21, 40, 41, 42, 43, "Entity", 17, "Entity TextContent", -3, 29, 32, 35, "TextContent Entity"],
244
- ["isolate", -11, 22, 30, 31, 33, 34, 36, 37, 38, 39, 42, 43, "ltr", -3, 27, 28, 40, ""]
245
- ],
246
- propSources: [htmlHighlighting],
247
- skippedNodes: [0],
248
- repeatNodeCount: 9,
249
- tokenData: "!<p!aR!YOX$qXY,QYZ,QZ[$q[]&X]^,Q^p$qpq,Qqr-_rs3_sv-_vw3}wxHYx}-_}!OH{!O!P-_!P!Q$q!Q![-_![!]Mz!]!^-_!^!_!$S!_!`!;x!`!a&X!a!c-_!c!}Mz!}#R-_#R#SMz#S#T1k#T#oMz#o#s-_#s$f$q$f%W-_%W%oMz%o%p-_%p&aMz&a&b-_&b1pMz1p4U-_4U4dMz4d4e-_4e$ISMz$IS$I`-_$I`$IbMz$Ib$Kh-_$Kh%#tMz%#t&/x-_&/x&EtMz&Et&FV-_&FV;'SMz;'S;:j!#|;:j;=`3X<%l?&r-_?&r?AhMz?Ah?BY$q?BY?MnMz?MnO$q!Z$|caPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr$qrs&}sv$qvw+Pwx(tx!^$q!^!_*V!_!a&X!a#S$q#S#T&X#T;'S$q;'S;=`+z<%lO$q!R&bXaP!b`!dpOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&Xq'UVaP!dpOv&}wx'kx!^&}!^!_(V!_;'S&};'S;=`(n<%lO&}P'pTaPOv'kw!^'k!_;'S'k;'S;=`(P<%lO'kP(SP;=`<%l'kp([S!dpOv(Vx;'S(V;'S;=`(h<%lO(Vp(kP;=`<%l(Vq(qP;=`<%l&}a({WaP!b`Or(trs'ksv(tw!^(t!^!_)e!_;'S(t;'S;=`*P<%lO(t`)jT!b`Or)esv)ew;'S)e;'S;=`)y<%lO)e`)|P;=`<%l)ea*SP;=`<%l(t!Q*^V!b`!dpOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!Q*vP;=`<%l*V!R*|P;=`<%l&XW+UYlWOX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+PW+wP;=`<%l+P!Z+}P;=`<%l$q!a,]`aP!b`!dp!_^OX&XXY,QYZ,QZ]&X]^,Q^p&Xpq,Qqr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X!_-ljiSaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx!P-_!P!Q$q!Q!^-_!^!_*V!_!a&X!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q[/ebiSlWOX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+PS0rXiSqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0mS1bP;=`<%l0m[1hP;=`<%l/^!V1vciSaP!b`!dpOq&Xqr1krs&}sv1kvw0mwx(tx!P1k!P!Q&X!Q!^1k!^!_*V!_!a&X!a#s1k#s$f&X$f;'S1k;'S;=`3R<%l?Ah1k?Ah?BY&X?BY?Mn1k?MnO&X!V3UP;=`<%l1k!_3[P;=`<%l-_!Z3hV!ahaP!dpOv&}wx'kx!^&}!^!_(V!_;'S&};'S;=`(n<%lO&}!_4WiiSlWd!ROX5uXZ7SZ[5u[^7S^p5uqr8trs7Sst>]tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^/^!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V<%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!Z5zblWOX5uXZ7SZ[5u[^7S^p5uqr5urs7Sst+Ptw5uwx7Sx!]5u!]!^7w!^!a7S!a#S5u#S#T7S#T;'S5u;'S;=`8n<%lO5u!R7VVOp7Sqs7St!]7S!]!^7l!^;'S7S;'S;=`7q<%lO7S!R7qOb!R!R7tP;=`<%l7S!Z8OYlWb!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!Z8qP;=`<%l5u!_8{iiSlWOX5uXZ7SZ[5u[^7S^p5uqr8trs7Sst/^tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^:j!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V<%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!_:sbiSlWb!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!V<QciSOp7Sqr;{rs7Sst0mtw;{wx7Sx!P;{!P!Q7S!Q!];{!]!^=]!^!a7S!a#s;{#s$f7S$f;'S;{;'S;=`>P<%l?Ah;{?Ah?BY7S?BY?Mn;{?MnO7S!V=dXiSb!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0m!V>SP;=`<%l;{!_>YP;=`<%l8t!_>dhiSlWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^/^!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS<%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!Z@TalWOX@OXZAYZ[@O[^AY^p@Oqr@OrsAYsw@OwxAYx!]@O!]!^Az!^!aAY!a#S@O#S#TAY#T;'S@O;'S;=`Bq<%lO@O!RA]UOpAYq!]AY!]!^Ao!^;'SAY;'S;=`At<%lOAY!RAtOc!R!RAwP;=`<%lAY!ZBRYlWc!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!ZBtP;=`<%l@O!_COhiSlWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^Dj!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS<%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!_DsbiSlWc!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!VFQbiSOpAYqrE{rsAYswE{wxAYx!PE{!P!QAY!Q!]E{!]!^GY!^!aAY!a#sE{#s$fAY$f;'SE{;'S;=`G|<%l?AhE{?Ah?BYAY?BY?MnE{?MnOAY!VGaXiSc!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0m!VHPP;=`<%lE{!_HVP;=`<%lBw!ZHcW!cxaP!b`Or(trs'ksv(tw!^(t!^!_)e!_;'S(t;'S;=`*P<%lO(t!aIYliSaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OKQ!O!P-_!P!Q$q!Q!^-_!^!_*V!_!a&X!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!aK_kiSaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx!P-_!P!Q$q!Q!^-_!^!_*V!_!`&X!`!aMS!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!TM_XaP!b`!dp!fQOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X!aNZ!ZiSgQaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OMz!O!PMz!P!Q$q!Q![Mz![!]Mz!]!^-_!^!_*V!_!a&X!a!c-_!c!}Mz!}#R-_#R#SMz#S#T1k#T#oMz#o#s-_#s$f$q$f$}-_$}%OMz%O%W-_%W%oMz%o%p-_%p&aMz&a&b-_&b1pMz1p4UMz4U4dMz4d4e-_4e$ISMz$IS$I`-_$I`$IbMz$Ib$Je-_$Je$JgMz$Jg$Kh-_$Kh%#tMz%#t&/x-_&/x&EtMz&Et&FV-_&FV;'SMz;'S;:j!#|;:j;=`3X<%l?&r-_?&r?AhMz?Ah?BY$q?BY?MnMz?MnO$q!a!$PP;=`<%lMz!R!$ZY!b`!dpOq*Vqr!$yrs(Vsv*Vwx)ex!a*V!a!b!4t!b;'S*V;'S;=`*s<%lO*V!R!%Q]!b`!dpOr*Vrs(Vsv*Vwx)ex}*V}!O!%y!O!f*V!f!g!']!g#W*V#W#X!0`#X;'S*V;'S;=`*s<%lO*V!R!&QX!b`!dpOr*Vrs(Vsv*Vwx)ex}*V}!O!&m!O;'S*V;'S;=`*s<%lO*V!R!&vV!b`!dp!ePOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!'dX!b`!dpOr*Vrs(Vsv*Vwx)ex!q*V!q!r!(P!r;'S*V;'S;=`*s<%lO*V!R!(WX!b`!dpOr*Vrs(Vsv*Vwx)ex!e*V!e!f!(s!f;'S*V;'S;=`*s<%lO*V!R!(zX!b`!dpOr*Vrs(Vsv*Vwx)ex!v*V!v!w!)g!w;'S*V;'S;=`*s<%lO*V!R!)nX!b`!dpOr*Vrs(Vsv*Vwx)ex!{*V!{!|!*Z!|;'S*V;'S;=`*s<%lO*V!R!*bX!b`!dpOr*Vrs(Vsv*Vwx)ex!r*V!r!s!*}!s;'S*V;'S;=`*s<%lO*V!R!+UX!b`!dpOr*Vrs(Vsv*Vwx)ex!g*V!g!h!+q!h;'S*V;'S;=`*s<%lO*V!R!+xY!b`!dpOr!+qrs!,hsv!+qvw!-Swx!.[x!`!+q!`!a!/j!a;'S!+q;'S;=`!0Y<%lO!+qq!,mV!dpOv!,hvx!-Sx!`!,h!`!a!-q!a;'S!,h;'S;=`!.U<%lO!,hP!-VTO!`!-S!`!a!-f!a;'S!-S;'S;=`!-k<%lO!-SP!-kO|PP!-nP;=`<%l!-Sq!-xS!dp|POv(Vx;'S(V;'S;=`(h<%lO(Vq!.XP;=`<%l!,ha!.aX!b`Or!.[rs!-Ssv!.[vw!-Sw!`!.[!`!a!.|!a;'S!.[;'S;=`!/d<%lO!.[a!/TT!b`|POr)esv)ew;'S)e;'S;=`)y<%lO)ea!/gP;=`<%l!.[!R!/sV!b`!dp|POr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!0]P;=`<%l!+q!R!0gX!b`!dpOr*Vrs(Vsv*Vwx)ex#c*V#c#d!1S#d;'S*V;'S;=`*s<%lO*V!R!1ZX!b`!dpOr*Vrs(Vsv*Vwx)ex#V*V#V#W!1v#W;'S*V;'S;=`*s<%lO*V!R!1}X!b`!dpOr*Vrs(Vsv*Vwx)ex#h*V#h#i!2j#i;'S*V;'S;=`*s<%lO*V!R!2qX!b`!dpOr*Vrs(Vsv*Vwx)ex#m*V#m#n!3^#n;'S*V;'S;=`*s<%lO*V!R!3eX!b`!dpOr*Vrs(Vsv*Vwx)ex#d*V#d#e!4Q#e;'S*V;'S;=`*s<%lO*V!R!4XX!b`!dpOr*Vrs(Vsv*Vwx)ex#X*V#X#Y!+q#Y;'S*V;'S;=`*s<%lO*V!R!4{Y!b`!dpOr!4trs!5ksv!4tvw!6Vwx!8]x!a!4t!a!b!:]!b;'S!4t;'S;=`!;r<%lO!4tq!5pV!dpOv!5kvx!6Vx!a!5k!a!b!7W!b;'S!5k;'S;=`!8V<%lO!5kP!6YTO!a!6V!a!b!6i!b;'S!6V;'S;=`!7Q<%lO!6VP!6lTO!`!6V!`!a!6{!a;'S!6V;'S;=`!7Q<%lO!6VP!7QOyPP!7TP;=`<%l!6Vq!7]V!dpOv!5kvx!6Vx!`!5k!`!a!7r!a;'S!5k;'S;=`!8V<%lO!5kq!7yS!dpyPOv(Vx;'S(V;'S;=`(h<%lO(Vq!8YP;=`<%l!5ka!8bX!b`Or!8]rs!6Vsv!8]vw!6Vw!a!8]!a!b!8}!b;'S!8];'S;=`!:V<%lO!8]a!9SX!b`Or!8]rs!6Vsv!8]vw!6Vw!`!8]!`!a!9o!a;'S!8];'S;=`!:V<%lO!8]a!9vT!b`yPOr)esv)ew;'S)e;'S;=`)y<%lO)ea!:YP;=`<%l!8]!R!:dY!b`!dpOr!4trs!5ksv!4tvw!6Vwx!8]x!`!4t!`!a!;S!a;'S!4t;'S;=`!;r<%lO!4t!R!;]V!b`!dpyPOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!;uP;=`<%l!4t!V!<TXjSaP!b`!dpOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X",
250
- tokenizers: [scriptTokens, styleTokens, textareaTokens, endTag, tagStart, commentContent, 0, 1, 2, 3, 4, 5],
251
- topRules: { "Document": [0, 16] },
252
- dialects: { noMatch: 0, selfClosing: 515 },
253
- tokenPrec: 517
254
- });
255
- function getAttrs(openTag, input) {
256
- let attrs = /* @__PURE__ */ Object.create(null);
257
- for (let att of openTag.getChildren(Attribute)) {
258
- let name = att.getChild(AttributeName), value = att.getChild(AttributeValue) || att.getChild(UnquotedAttributeValue);
259
- if (name) attrs[input.read(name.from, name.to)] = !value ? "" : value.type.id == AttributeValue ? input.read(value.from + 1, value.to - 1) : input.read(value.from, value.to);
260
- }
261
- return attrs;
262
- }
263
- function findTagName(openTag, input) {
264
- let tagNameNode = openTag.getChild(TagName);
265
- return tagNameNode ? input.read(tagNameNode.from, tagNameNode.to) : " ";
266
- }
267
- function maybeNest(node, input, tags2) {
268
- let attrs;
269
- for (let tag of tags2) {
270
- if (!tag.attrs || tag.attrs(attrs || (attrs = getAttrs(node.node.parent.firstChild, input))))
271
- return { parser: tag.parser, bracketed: true };
272
- }
273
- return null;
274
- }
275
- function configureNesting(tags2 = [], attributes = []) {
276
- let script = [], style = [], textarea = [], other = [];
277
- for (let tag of tags2) {
278
- let array = tag.tag == "script" ? script : tag.tag == "style" ? style : tag.tag == "textarea" ? textarea : other;
279
- array.push(tag);
280
- }
281
- let attrs = attributes.length ? /* @__PURE__ */ Object.create(null) : null;
282
- for (let attr of attributes) (attrs[attr.name] || (attrs[attr.name] = [])).push(attr);
283
- return parseMixed((node, input) => {
284
- let id = node.type.id;
285
- if (id == ScriptText) return maybeNest(node, input, script);
286
- if (id == StyleText) return maybeNest(node, input, style);
287
- if (id == TextareaText) return maybeNest(node, input, textarea);
288
- if (id == Element && other.length) {
289
- let n = node.node, open = n.firstChild, tagName = open && findTagName(open, input), attrs2;
290
- if (tagName) for (let tag of other) {
291
- if (tag.tag == tagName && (!tag.attrs || tag.attrs(attrs2 || (attrs2 = getAttrs(open, input))))) {
292
- let close = n.lastChild;
293
- let to = close.type.id == CloseTag ? close.from : n.to;
294
- if (to > open.to)
295
- return { parser: tag.parser, overlay: [{ from: open.to, to }] };
296
- }
297
- }
298
- }
299
- if (attrs && id == Attribute) {
300
- let n = node.node, nameNode;
301
- if (nameNode = n.firstChild) {
302
- let matches = attrs[input.read(nameNode.from, nameNode.to)];
303
- if (matches) for (let attr of matches) {
304
- if (attr.tagName && attr.tagName != findTagName(n.parent, input)) continue;
305
- let value = n.lastChild;
306
- if (value.type.id == AttributeValue) {
307
- let from = value.from + 1;
308
- let last = value.lastChild, to = value.to - (last && last.isError ? 0 : 1);
309
- if (to > from) return { parser: attr.parser, overlay: [{ from, to }], bracketed: true };
310
- } else if (value.type.id == UnquotedAttributeValue) {
311
- return { parser: attr.parser, overlay: [{ from: value.from, to: value.to }] };
312
- }
313
- }
314
- }
315
- }
316
- return null;
317
- });
318
- }
319
- const Targets = ["_blank", "_self", "_top", "_parent"];
320
- const Charsets = ["ascii", "utf-8", "utf-16", "latin1", "latin1"];
321
- const Methods = ["get", "post", "put", "delete"];
322
- const Encs = ["application/x-www-form-urlencoded", "multipart/form-data", "text/plain"];
323
- const Bool = ["true", "false"];
324
- const S = {};
325
- const Tags = {
326
- a: {
327
- attrs: {
328
- href: null,
329
- ping: null,
330
- type: null,
331
- media: null,
332
- target: Targets,
333
- hreflang: null
334
- }
335
- },
336
- abbr: S,
337
- address: S,
338
- area: {
339
- attrs: {
340
- alt: null,
341
- coords: null,
342
- href: null,
343
- target: null,
344
- ping: null,
345
- media: null,
346
- hreflang: null,
347
- type: null,
348
- shape: ["default", "rect", "circle", "poly"]
349
- }
350
- },
351
- article: S,
352
- aside: S,
353
- audio: {
354
- attrs: {
355
- src: null,
356
- mediagroup: null,
357
- crossorigin: ["anonymous", "use-credentials"],
358
- preload: ["none", "metadata", "auto"],
359
- autoplay: ["autoplay"],
360
- loop: ["loop"],
361
- controls: ["controls"]
362
- }
363
- },
364
- b: S,
365
- base: { attrs: { href: null, target: Targets } },
366
- bdi: S,
367
- bdo: S,
368
- blockquote: { attrs: { cite: null } },
369
- body: S,
370
- br: S,
371
- button: {
372
- attrs: {
373
- form: null,
374
- formaction: null,
375
- name: null,
376
- value: null,
377
- autofocus: ["autofocus"],
378
- disabled: ["autofocus"],
379
- formenctype: Encs,
380
- formmethod: Methods,
381
- formnovalidate: ["novalidate"],
382
- formtarget: Targets,
383
- type: ["submit", "reset", "button"]
384
- }
385
- },
386
- canvas: { attrs: { width: null, height: null } },
387
- caption: S,
388
- center: S,
389
- cite: S,
390
- code: S,
391
- col: { attrs: { span: null } },
392
- colgroup: { attrs: { span: null } },
393
- command: {
394
- attrs: {
395
- type: ["command", "checkbox", "radio"],
396
- label: null,
397
- icon: null,
398
- radiogroup: null,
399
- command: null,
400
- title: null,
401
- disabled: ["disabled"],
402
- checked: ["checked"]
403
- }
404
- },
405
- data: { attrs: { value: null } },
406
- datagrid: { attrs: { disabled: ["disabled"], multiple: ["multiple"] } },
407
- datalist: { attrs: { data: null } },
408
- dd: S,
409
- del: { attrs: { cite: null, datetime: null } },
410
- details: { attrs: { open: ["open"] } },
411
- dfn: S,
412
- div: S,
413
- dl: S,
414
- dt: S,
415
- em: S,
416
- embed: { attrs: { src: null, type: null, width: null, height: null } },
417
- eventsource: { attrs: { src: null } },
418
- fieldset: { attrs: { disabled: ["disabled"], form: null, name: null } },
419
- figcaption: S,
420
- figure: S,
421
- footer: S,
422
- form: {
423
- attrs: {
424
- action: null,
425
- name: null,
426
- "accept-charset": Charsets,
427
- autocomplete: ["on", "off"],
428
- enctype: Encs,
429
- method: Methods,
430
- novalidate: ["novalidate"],
431
- target: Targets
432
- }
433
- },
434
- h1: S,
435
- h2: S,
436
- h3: S,
437
- h4: S,
438
- h5: S,
439
- h6: S,
440
- head: {
441
- children: ["title", "base", "link", "style", "meta", "script", "noscript", "command"]
442
- },
443
- header: S,
444
- hgroup: S,
445
- hr: S,
446
- html: {
447
- attrs: { manifest: null }
448
- },
449
- i: S,
450
- iframe: {
451
- attrs: {
452
- src: null,
453
- srcdoc: null,
454
- name: null,
455
- width: null,
456
- height: null,
457
- sandbox: ["allow-top-navigation", "allow-same-origin", "allow-forms", "allow-scripts"],
458
- seamless: ["seamless"]
459
- }
460
- },
461
- img: {
462
- attrs: {
463
- alt: null,
464
- src: null,
465
- ismap: null,
466
- usemap: null,
467
- width: null,
468
- height: null,
469
- crossorigin: ["anonymous", "use-credentials"]
470
- }
471
- },
472
- input: {
473
- attrs: {
474
- alt: null,
475
- dirname: null,
476
- form: null,
477
- formaction: null,
478
- height: null,
479
- list: null,
480
- max: null,
481
- maxlength: null,
482
- min: null,
483
- name: null,
484
- pattern: null,
485
- placeholder: null,
486
- size: null,
487
- src: null,
488
- step: null,
489
- value: null,
490
- width: null,
491
- accept: ["audio/*", "video/*", "image/*"],
492
- autocomplete: ["on", "off"],
493
- autofocus: ["autofocus"],
494
- checked: ["checked"],
495
- disabled: ["disabled"],
496
- formenctype: Encs,
497
- formmethod: Methods,
498
- formnovalidate: ["novalidate"],
499
- formtarget: Targets,
500
- multiple: ["multiple"],
501
- readonly: ["readonly"],
502
- required: ["required"],
503
- type: [
504
- "hidden",
505
- "text",
506
- "search",
507
- "tel",
508
- "url",
509
- "email",
510
- "password",
511
- "datetime",
512
- "date",
513
- "month",
514
- "week",
515
- "time",
516
- "datetime-local",
517
- "number",
518
- "range",
519
- "color",
520
- "checkbox",
521
- "radio",
522
- "file",
523
- "submit",
524
- "image",
525
- "reset",
526
- "button"
527
- ]
528
- }
529
- },
530
- ins: { attrs: { cite: null, datetime: null } },
531
- kbd: S,
532
- keygen: {
533
- attrs: {
534
- challenge: null,
535
- form: null,
536
- name: null,
537
- autofocus: ["autofocus"],
538
- disabled: ["disabled"],
539
- keytype: ["RSA"]
540
- }
541
- },
542
- label: { attrs: { for: null, form: null } },
543
- legend: S,
544
- li: { attrs: { value: null } },
545
- link: {
546
- attrs: {
547
- href: null,
548
- type: null,
549
- hreflang: null,
550
- media: null,
551
- sizes: ["all", "16x16", "16x16 32x32", "16x16 32x32 64x64"]
552
- }
553
- },
554
- map: { attrs: { name: null } },
555
- mark: S,
556
- menu: { attrs: { label: null, type: ["list", "context", "toolbar"] } },
557
- meta: {
558
- attrs: {
559
- content: null,
560
- charset: Charsets,
561
- name: ["viewport", "application-name", "author", "description", "generator", "keywords"],
562
- "http-equiv": ["content-language", "content-type", "default-style", "refresh"]
563
- }
564
- },
565
- meter: { attrs: { value: null, min: null, low: null, high: null, max: null, optimum: null } },
566
- nav: S,
567
- noscript: S,
568
- object: {
569
- attrs: {
570
- data: null,
571
- type: null,
572
- name: null,
573
- usemap: null,
574
- form: null,
575
- width: null,
576
- height: null,
577
- typemustmatch: ["typemustmatch"]
578
- }
579
- },
580
- ol: {
581
- attrs: { reversed: ["reversed"], start: null, type: ["1", "a", "A", "i", "I"] },
582
- children: ["li", "script", "template", "ul", "ol"]
583
- },
584
- optgroup: { attrs: { disabled: ["disabled"], label: null } },
585
- option: { attrs: { disabled: ["disabled"], label: null, selected: ["selected"], value: null } },
586
- output: { attrs: { for: null, form: null, name: null } },
587
- p: S,
588
- param: { attrs: { name: null, value: null } },
589
- pre: S,
590
- progress: { attrs: { value: null, max: null } },
591
- q: { attrs: { cite: null } },
592
- rp: S,
593
- rt: S,
594
- ruby: S,
595
- samp: S,
596
- script: {
597
- attrs: {
598
- type: ["text/javascript"],
599
- src: null,
600
- async: ["async"],
601
- defer: ["defer"],
602
- charset: Charsets
603
- }
604
- },
605
- section: S,
606
- select: {
607
- attrs: {
608
- form: null,
609
- name: null,
610
- size: null,
611
- autofocus: ["autofocus"],
612
- disabled: ["disabled"],
613
- multiple: ["multiple"]
614
- }
615
- },
616
- slot: { attrs: { name: null } },
617
- small: S,
618
- source: { attrs: { src: null, type: null, media: null } },
619
- span: S,
620
- strong: S,
621
- style: {
622
- attrs: {
623
- type: ["text/css"],
624
- media: null,
625
- scoped: null
626
- }
627
- },
628
- sub: S,
629
- summary: S,
630
- sup: S,
631
- table: S,
632
- tbody: S,
633
- td: { attrs: { colspan: null, rowspan: null, headers: null } },
634
- template: S,
635
- textarea: {
636
- attrs: {
637
- dirname: null,
638
- form: null,
639
- maxlength: null,
640
- name: null,
641
- placeholder: null,
642
- rows: null,
643
- cols: null,
644
- autofocus: ["autofocus"],
645
- disabled: ["disabled"],
646
- readonly: ["readonly"],
647
- required: ["required"],
648
- wrap: ["soft", "hard"]
649
- }
650
- },
651
- tfoot: S,
652
- th: { attrs: { colspan: null, rowspan: null, headers: null, scope: ["row", "col", "rowgroup", "colgroup"] } },
653
- thead: S,
654
- time: { attrs: { datetime: null } },
655
- title: S,
656
- tr: S,
657
- track: {
658
- attrs: {
659
- src: null,
660
- label: null,
661
- default: null,
662
- kind: ["subtitles", "captions", "descriptions", "chapters", "metadata"],
663
- srclang: null
664
- }
665
- },
666
- ul: { children: ["li", "script", "template", "ul", "ol"] },
667
- var: S,
668
- video: {
669
- attrs: {
670
- src: null,
671
- poster: null,
672
- width: null,
673
- height: null,
674
- crossorigin: ["anonymous", "use-credentials"],
675
- preload: ["auto", "metadata", "none"],
676
- autoplay: ["autoplay"],
677
- mediagroup: ["movie"],
678
- muted: ["muted"],
679
- controls: ["controls"]
680
- }
681
- },
682
- wbr: S
683
- };
684
- const GlobalAttrs = {
685
- accesskey: null,
686
- class: null,
687
- contenteditable: Bool,
688
- contextmenu: null,
689
- dir: ["ltr", "rtl", "auto"],
690
- draggable: ["true", "false", "auto"],
691
- dropzone: ["copy", "move", "link", "string:", "file:"],
692
- hidden: ["hidden"],
693
- id: null,
694
- inert: ["inert"],
695
- itemid: null,
696
- itemprop: null,
697
- itemref: null,
698
- itemscope: ["itemscope"],
699
- itemtype: null,
700
- lang: ["ar", "bn", "de", "en-GB", "en-US", "es", "fr", "hi", "id", "ja", "pa", "pt", "ru", "tr", "zh"],
701
- spellcheck: Bool,
702
- autocorrect: Bool,
703
- autocapitalize: Bool,
704
- style: null,
705
- tabindex: null,
706
- title: null,
707
- translate: ["yes", "no"],
708
- rel: ["stylesheet", "alternate", "author", "bookmark", "help", "license", "next", "nofollow", "noreferrer", "prefetch", "prev", "search", "tag"],
709
- role: /* @__PURE__ */ "alert application article banner button cell checkbox complementary contentinfo dialog document feed figure form grid gridcell heading img list listbox listitem main navigation region row rowgroup search switch tab table tabpanel textbox timer".split(" "),
710
- "aria-activedescendant": null,
711
- "aria-atomic": Bool,
712
- "aria-autocomplete": ["inline", "list", "both", "none"],
713
- "aria-busy": Bool,
714
- "aria-checked": ["true", "false", "mixed", "undefined"],
715
- "aria-controls": null,
716
- "aria-describedby": null,
717
- "aria-disabled": Bool,
718
- "aria-dropeffect": null,
719
- "aria-expanded": ["true", "false", "undefined"],
720
- "aria-flowto": null,
721
- "aria-grabbed": ["true", "false", "undefined"],
722
- "aria-haspopup": Bool,
723
- "aria-hidden": Bool,
724
- "aria-invalid": ["true", "false", "grammar", "spelling"],
725
- "aria-label": null,
726
- "aria-labelledby": null,
727
- "aria-level": null,
728
- "aria-live": ["off", "polite", "assertive"],
729
- "aria-multiline": Bool,
730
- "aria-multiselectable": Bool,
731
- "aria-owns": null,
732
- "aria-posinset": null,
733
- "aria-pressed": ["true", "false", "mixed", "undefined"],
734
- "aria-readonly": Bool,
735
- "aria-relevant": null,
736
- "aria-required": Bool,
737
- "aria-selected": ["true", "false", "undefined"],
738
- "aria-setsize": null,
739
- "aria-sort": ["ascending", "descending", "none", "other"],
740
- "aria-valuemax": null,
741
- "aria-valuemin": null,
742
- "aria-valuenow": null,
743
- "aria-valuetext": null
744
- };
745
- const eventAttributes = /* @__PURE__ */ "beforeunload copy cut dragstart dragover dragleave dragenter dragend drag paste focus blur change click load mousedown mouseenter mouseleave mouseup keydown keyup resize scroll unload".split(" ").map((n) => "on" + n);
746
- for (let a of eventAttributes)
747
- GlobalAttrs[a] = null;
748
- class Schema {
749
- constructor(extraTags, extraAttrs) {
750
- this.tags = { ...Tags, ...extraTags };
751
- this.globalAttrs = { ...GlobalAttrs, ...extraAttrs };
752
- this.allTags = Object.keys(this.tags);
753
- this.globalAttrNames = Object.keys(this.globalAttrs);
754
- }
755
- }
756
- Schema.default = /* @__PURE__ */ new Schema();
757
- function elementName(doc, tree, max = doc.length) {
758
- if (!tree)
759
- return "";
760
- let tag = tree.firstChild;
761
- let name = tag && tag.getChild("TagName");
762
- return name ? doc.sliceString(name.from, Math.min(name.to, max)) : "";
763
- }
764
- function findParentElement(tree, skip = false) {
765
- for (; tree; tree = tree.parent)
766
- if (tree.name == "Element") {
767
- if (skip)
768
- skip = false;
769
- else
770
- return tree;
771
- }
772
- return null;
773
- }
774
- function allowedChildren(doc, tree, schema) {
775
- let parentInfo = schema.tags[elementName(doc, findParentElement(tree))];
776
- return (parentInfo === null || parentInfo === void 0 ? void 0 : parentInfo.children) || schema.allTags;
777
- }
778
- function openTags(doc, tree) {
779
- let open = [];
780
- for (let parent = findParentElement(tree); parent && !parent.type.isTop; parent = findParentElement(parent.parent)) {
781
- let tagName = elementName(doc, parent);
782
- if (tagName && parent.lastChild.name == "CloseTag")
783
- break;
784
- if (tagName && open.indexOf(tagName) < 0 && (tree.name == "EndTag" || tree.from >= parent.firstChild.to))
785
- open.push(tagName);
786
- }
787
- return open;
788
- }
789
- const identifier = /^[:\-\.\w\u00b7-\uffff]*$/;
790
- function completeTag(state, schema, tree, from, to) {
791
- let end = /\s*>/.test(state.sliceDoc(to, to + 5)) ? "" : ">";
792
- let parent = findParentElement(tree, tree.name == "StartTag" || tree.name == "TagName");
793
- return {
794
- from,
795
- to,
796
- options: allowedChildren(state.doc, parent, schema).map((tagName) => ({ label: tagName, type: "type" })).concat(openTags(state.doc, tree).map((tag, i) => ({
797
- label: "/" + tag,
798
- apply: "/" + tag + end,
799
- type: "type",
800
- boost: 99 - i
801
- }))),
802
- validFor: /^\/?[:\-\.\w\u00b7-\uffff]*$/
803
- };
804
- }
805
- function completeCloseTag(state, tree, from, to) {
806
- let end = /\s*>/.test(state.sliceDoc(to, to + 5)) ? "" : ">";
807
- return {
808
- from,
809
- to,
810
- options: openTags(state.doc, tree).map((tag, i) => ({ label: tag, apply: tag + end, type: "type", boost: 99 - i })),
811
- validFor: identifier
812
- };
813
- }
814
- function completeStartTag(state, schema, tree, pos) {
815
- let options = [], level = 0;
816
- for (let tagName of allowedChildren(state.doc, tree, schema))
817
- options.push({ label: "<" + tagName, type: "type" });
818
- for (let open of openTags(state.doc, tree))
819
- options.push({ label: "</" + open + ">", type: "type", boost: 99 - level++ });
820
- return { from: pos, to: pos, options, validFor: /^<\/?[:\-\.\w\u00b7-\uffff]*$/ };
821
- }
822
- function completeAttrName(state, schema, tree, from, to) {
823
- let elt = findParentElement(tree), info = elt ? schema.tags[elementName(state.doc, elt)] : null;
824
- let localAttrs = info && info.attrs ? Object.keys(info.attrs) : [];
825
- let names = info && info.globalAttrs === false ? localAttrs : localAttrs.length ? localAttrs.concat(schema.globalAttrNames) : schema.globalAttrNames;
826
- return {
827
- from,
828
- to,
829
- options: names.map((attrName) => ({ label: attrName, type: "property" })),
830
- validFor: identifier
831
- };
832
- }
833
- function completeAttrValue(state, schema, tree, from, to) {
834
- var _a;
835
- let nameNode = (_a = tree.parent) === null || _a === void 0 ? void 0 : _a.getChild("AttributeName");
836
- let options = [], token = void 0;
837
- if (nameNode) {
838
- let attrName = state.sliceDoc(nameNode.from, nameNode.to);
839
- let attrs = schema.globalAttrs[attrName];
840
- if (!attrs) {
841
- let elt = findParentElement(tree), info = elt ? schema.tags[elementName(state.doc, elt)] : null;
842
- attrs = (info === null || info === void 0 ? void 0 : info.attrs) && info.attrs[attrName];
843
- }
844
- if (attrs) {
845
- let base = state.sliceDoc(from, to).toLowerCase(), quoteStart = '"', quoteEnd = '"';
846
- if (/^['"]/.test(base)) {
847
- token = base[0] == '"' ? /^[^"]*$/ : /^[^']*$/;
848
- quoteStart = "";
849
- quoteEnd = state.sliceDoc(to, to + 1) == base[0] ? "" : base[0];
850
- base = base.slice(1);
851
- from++;
852
- } else {
853
- token = /^[^\s<>='"]*$/;
854
- }
855
- for (let value of attrs)
856
- options.push({ label: value, apply: quoteStart + value + quoteEnd, type: "constant" });
857
- }
858
- }
859
- return { from, to, options, validFor: token };
860
- }
861
- function htmlCompletionFor(schema, context) {
862
- let { state, pos } = context, tree = syntaxTree(state).resolveInner(pos, -1), around = tree.resolve(pos);
863
- for (let scan = pos, before; around == tree && (before = tree.childBefore(scan)); ) {
864
- let last = before.lastChild;
865
- if (!last || !last.type.isError || last.from < last.to)
866
- break;
867
- around = tree = before;
868
- scan = last.from;
869
- }
870
- if (tree.name == "TagName") {
871
- return tree.parent && /CloseTag$/.test(tree.parent.name) ? completeCloseTag(state, tree, tree.from, pos) : completeTag(state, schema, tree, tree.from, pos);
872
- } else if (tree.name == "StartTag" || tree.name == "IncompleteTag") {
873
- return completeTag(state, schema, tree, pos, pos);
874
- } else if (tree.name == "StartCloseTag" || tree.name == "IncompleteCloseTag") {
875
- return completeCloseTag(state, tree, pos, pos);
876
- } else if (tree.name == "OpenTag" || tree.name == "SelfClosingTag" || tree.name == "AttributeName") {
877
- return completeAttrName(state, schema, tree, tree.name == "AttributeName" ? tree.from : pos, pos);
878
- } else if (tree.name == "Is" || tree.name == "AttributeValue" || tree.name == "UnquotedAttributeValue") {
879
- return completeAttrValue(state, schema, tree, tree.name == "Is" ? pos : tree.from, pos);
880
- } else if (context.explicit && (around.name == "Element" || around.name == "Text" || around.name == "Document")) {
881
- return completeStartTag(state, schema, tree, pos);
882
- } else {
883
- return null;
884
- }
885
- }
886
- function htmlCompletionSource(context) {
887
- return htmlCompletionFor(Schema.default, context);
888
- }
889
- function htmlCompletionSourceWith(config) {
890
- let { extraTags, extraGlobalAttributes: extraAttrs } = config;
891
- let schema = extraAttrs || extraTags ? new Schema(extraTags, extraAttrs) : Schema.default;
892
- return (context) => htmlCompletionFor(schema, context);
893
- }
894
- const jsonParser = /* @__PURE__ */ javascriptLanguage.parser.configure({ top: "SingleExpression" });
895
- const defaultNesting = [
896
- {
897
- tag: "script",
898
- attrs: (attrs) => attrs.type == "text/typescript" || attrs.lang == "ts",
899
- parser: typescriptLanguage.parser
900
- },
901
- {
902
- tag: "script",
903
- attrs: (attrs) => attrs.type == "text/babel" || attrs.type == "text/jsx",
904
- parser: jsxLanguage.parser
905
- },
906
- {
907
- tag: "script",
908
- attrs: (attrs) => attrs.type == "text/typescript-jsx",
909
- parser: tsxLanguage.parser
910
- },
911
- {
912
- tag: "script",
913
- attrs(attrs) {
914
- return /^(importmap|speculationrules|application\/(.+\+)?json)$/i.test(attrs.type);
915
- },
916
- parser: jsonParser
917
- },
918
- {
919
- tag: "script",
920
- attrs(attrs) {
921
- return !attrs.type || /^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i.test(attrs.type);
922
- },
923
- parser: javascriptLanguage.parser
924
- },
925
- {
926
- tag: "style",
927
- attrs(attrs) {
928
- return (!attrs.lang || attrs.lang == "css") && (!attrs.type || /^(text\/)?(x-)?(stylesheet|css)$/i.test(attrs.type));
929
- },
930
- parser: cssLanguage.parser
931
- }
932
- ];
933
- const defaultAttrs = /* @__PURE__ */ [
934
- {
935
- name: "style",
936
- parser: /* @__PURE__ */ cssLanguage.parser.configure({ top: "Styles" })
937
- }
938
- ].concat(/* @__PURE__ */ eventAttributes.map((name) => ({ name, parser: javascriptLanguage.parser })));
939
- const htmlPlain = /* @__PURE__ */ LRLanguage.define({
940
- name: "html",
941
- parser: /* @__PURE__ */ parser.configure({
942
- props: [
943
- /* @__PURE__ */ indentNodeProp.add({
944
- Element(context) {
945
- let after = /^(\s*)(<\/)?/.exec(context.textAfter);
946
- if (context.node.to <= context.pos + after[0].length)
947
- return context.continue();
948
- return context.lineIndent(context.node.from) + (after[2] ? 0 : context.unit);
949
- },
950
- "OpenTag CloseTag SelfClosingTag"(context) {
951
- return context.column(context.node.from) + context.unit;
952
- },
953
- Document(context) {
954
- if (context.pos + /\s*/.exec(context.textAfter)[0].length < context.node.to)
955
- return context.continue();
956
- let endElt = null, close;
957
- for (let cur = context.node; ; ) {
958
- let last = cur.lastChild;
959
- if (!last || last.name != "Element" || last.to != cur.to)
960
- break;
961
- endElt = cur = last;
962
- }
963
- if (endElt && !((close = endElt.lastChild) && (close.name == "CloseTag" || close.name == "SelfClosingTag")))
964
- return context.lineIndent(endElt.from) + context.unit;
965
- return null;
966
- }
967
- }),
968
- /* @__PURE__ */ foldNodeProp.add({
969
- Element(node) {
970
- let first = node.firstChild, last = node.lastChild;
971
- if (!first || first.name != "OpenTag")
972
- return null;
973
- return { from: first.to, to: last.name == "CloseTag" ? last.from : node.to };
974
- }
975
- }),
976
- /* @__PURE__ */ bracketMatchingHandle.add({
977
- "OpenTag CloseTag": (node) => node.getChild("TagName")
978
- })
979
- ]
980
- }),
981
- languageData: {
982
- commentTokens: { block: { open: "<!--", close: "-->" } },
983
- indentOnInput: /^\s*<\/\w+\W$/,
984
- wordChars: "-_"
985
- }
986
- });
987
- const htmlLanguage = /* @__PURE__ */ htmlPlain.configure({
988
- wrap: /* @__PURE__ */ configureNesting(defaultNesting, defaultAttrs)
989
- });
990
- function html(config = {}) {
991
- let dialect = "", wrap;
992
- if (config.matchClosingTags === false)
993
- dialect = "noMatch";
994
- if (config.selfClosingTags === true)
995
- dialect = (dialect ? dialect + " " : "") + "selfClosing";
996
- if (config.nestedLanguages && config.nestedLanguages.length || config.nestedAttributes && config.nestedAttributes.length)
997
- wrap = configureNesting((config.nestedLanguages || []).concat(defaultNesting), (config.nestedAttributes || []).concat(defaultAttrs));
998
- let lang = wrap ? htmlPlain.configure({ wrap, dialect }) : dialect ? htmlLanguage.configure({ dialect }) : htmlLanguage;
999
- return new LanguageSupport(lang, [
1000
- htmlLanguage.data.of({ autocomplete: htmlCompletionSourceWith(config) }),
1001
- config.autoCloseTags !== false ? autoCloseTags : [],
1002
- javascript().support,
1003
- css().support
1004
- ]);
1005
- }
1006
- const selfClosers = /* @__PURE__ */ new Set(/* @__PURE__ */ "area base br col command embed frame hr img input keygen link meta param source track wbr menuitem".split(" "));
1007
- const autoCloseTags = /* @__PURE__ */ EditorView.inputHandler.of((view, from, to, text, insertTransaction) => {
1008
- if (view.composing || view.state.readOnly || from != to || text != ">" && text != "/" || !htmlLanguage.isActiveAt(view.state, from, -1))
1009
- return false;
1010
- let base = insertTransaction(), { state } = base;
1011
- let closeTags = state.changeByRange((range) => {
1012
- var _a, _b, _c;
1013
- let didType = state.doc.sliceString(range.from - 1, range.to) == text;
1014
- let { head } = range, after = syntaxTree(state).resolveInner(head, -1), name;
1015
- if (didType && text == ">" && after.name == "EndTag") {
1016
- let tag = after.parent;
1017
- if (((_b = (_a = tag.parent) === null || _a === void 0 ? void 0 : _a.lastChild) === null || _b === void 0 ? void 0 : _b.name) != "CloseTag" && (name = elementName(state.doc, tag.parent, head)) && !selfClosers.has(name)) {
1018
- let to2 = head + (state.doc.sliceString(head, head + 1) === ">" ? 1 : 0);
1019
- let insert = `</${name}>`;
1020
- return { range, changes: { from: head, to: to2, insert } };
1021
- }
1022
- } else if (didType && text == "/" && after.name == "IncompleteCloseTag") {
1023
- let tag = after.parent;
1024
- if (after.from == head - 2 && ((_c = tag.lastChild) === null || _c === void 0 ? void 0 : _c.name) != "CloseTag" && (name = elementName(state.doc, tag, head)) && !selfClosers.has(name)) {
1025
- let to2 = head + (state.doc.sliceString(head, head + 1) === ">" ? 1 : 0);
1026
- let insert = `${name}>`;
1027
- return {
1028
- range: EditorSelection.cursor(head + insert.length, -1),
1029
- changes: { from: head, to: to2, insert }
1030
- };
1031
- }
1032
- }
1033
- return { range };
1034
- });
1035
- if (closeTags.changes.empty)
1036
- return false;
1037
- view.dispatch([
1038
- base,
1039
- state.update(closeTags, {
1040
- userEvent: "input.complete",
1041
- scrollIntoView: true
1042
- })
1043
- ]);
1044
- return true;
1045
- });
1046
- export {
1047
- autoCloseTags,
1048
- html,
1049
- htmlCompletionSource,
1050
- htmlCompletionSourceWith,
1051
- htmlLanguage
1052
- };