@aiderdesk/aiderdesk 0.61.0-dev → 0.61.1

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 (196) hide show
  1. package/out/renderer/assets/__vite-browser-external-2447137e-DYxpcVy9.js +4 -0
  2. package/out/renderer/assets/{_baseUniq-Z8t1Ab1g.js → _baseUniq-BPF2Herp.js} +21 -197
  3. package/out/renderer/assets/{arc-CwESpVYE.js → arc-DfPLteHF.js} +1 -1
  4. package/out/renderer/assets/{architectureDiagram-2XIMDMQ5-C490EQr5.js → architectureDiagram-Q4EWVU46-Bw0u-sSH.js} +34 -20
  5. package/out/renderer/assets/{blockDiagram-WCTKOSBZ-DbHssxrQ.js → blockDiagram-DXYQGD6D-CkfB9if8.js} +21 -8
  6. package/out/renderer/assets/{c4Diagram-IC4MRINW-BxE3GUKu.js → c4Diagram-AHTNJAMY-DweK9Liz.js} +31 -35
  7. package/out/renderer/assets/{channel-C9hJq_Xr.js → channel-C5wwrRof.js} +1 -1
  8. package/out/renderer/assets/{chunk-4BX2VUAB-ChcKNpL6.js → chunk-4BX2VUAB-0KM14cFd.js} +1 -1
  9. package/out/renderer/assets/{chunk-WL4C6EOR-vhby2fZi.js → chunk-4TB4RGXK-CmVtCVL4.js} +121 -82
  10. package/out/renderer/assets/{chunk-55IACEB6-oLT9lXTt.js → chunk-55IACEB6-BzVYZvBM.js} +1 -1
  11. package/out/renderer/assets/{chunk-KX2RTZJC-D32tV7H-.js → chunk-EDXVE4YY-BryQl5Kv.js} +1 -1
  12. package/out/renderer/assets/{chunk-FMBD7UC4-B5k8rETe.js → chunk-FMBD7UC4-CRiLea_e.js} +1 -1
  13. package/out/renderer/assets/{chunk-NQ4KR5QH-Bmqo2FpL.js → chunk-OYMX7WX6-Cpi4N3NO.js} +32 -15
  14. package/out/renderer/assets/{chunk-QZHKN3VN-8BpGifjS.js → chunk-QZHKN3VN-BT8kABWC.js} +1 -1
  15. package/out/renderer/assets/{chunk-JSJVCQXG-DtjSx6Cj.js → chunk-YZCP3GAM-OLZV_Sef.js} +1 -1
  16. package/out/renderer/assets/{classDiagram-VBA2DB6C-BxRSSb9e.js → classDiagram-6PBFFD2Q-VdE6G90i.js} +6 -6
  17. package/out/renderer/assets/{classDiagram-v2-RAHNMMFH-BxRSSb9e.js → classDiagram-v2-HSJHXN6E-VdE6G90i.js} +6 -6
  18. package/out/renderer/assets/{clone-D9a-uIZa.js → clone-DwQZ86nS.js} +1 -1
  19. package/out/renderer/assets/{cose-bilkent-S5V4N54A-CUqqQ-6R.js → cose-bilkent-S5V4N54A-BEcAKM9H.js} +1 -1
  20. package/out/renderer/assets/{dagre-KLK3FWXG-ORIwMMhq.js → dagre-KV5264BT-BcFQYL1M.js} +6 -6
  21. package/out/renderer/assets/diagram-5BDNPKRD-GrUNdC1u.js +171 -0
  22. package/out/renderer/assets/{diagram-E7M64L7V-bS9HcoDQ.js → diagram-G4DWMVQ6-CG4S-ov5.js} +15 -13
  23. package/out/renderer/assets/{diagram-IFDJBPK2-BRlTIR0J.js → diagram-MMDJMWI5-9ogY3MRC.js} +5 -6
  24. package/out/renderer/assets/{diagram-P4PSJMXO-jsjGwH-p.js → diagram-TYMM5635-Ck7mI1bS.js} +5 -6
  25. package/out/renderer/assets/{erDiagram-INFDFZHY-DGlgjHOQ.js → erDiagram-SMLLAGMA-Dvf_c-7M.js} +81 -35
  26. package/out/renderer/assets/{flowDiagram-PKNHOUZH-CzLC87bM.js → flowDiagram-DWJPFMVM-CPDjOXYp.js} +27 -45
  27. package/out/renderer/assets/{ganttDiagram-A5KZAMGK-BbDv36wT.js → ganttDiagram-T4ZO3ILL-B4dJrK-3.js} +17 -8
  28. package/out/renderer/assets/{gitGraphDiagram-K3NZZRJ6-CBQnBjEi.js → gitGraphDiagram-UUTBAWPF-De2eCfMN.js} +244 -67
  29. package/out/renderer/assets/{graph-Dl5N6maZ.js → graph-BFn23kR_.js} +175 -3
  30. package/out/renderer/assets/{index-MDHavDF9.js → index-BL-57WPa.js} +15877 -20787
  31. package/out/renderer/assets/{index-CDCy_DhA.css → index-BkntVzTm.css} +114 -301
  32. package/out/renderer/assets/{infoDiagram-LFFYTUFH-GtEDBEmz.js → infoDiagram-42DDH7IO-BIt9B6mQ.js} +5 -6
  33. package/out/renderer/assets/{ishikawaDiagram-PHBUUO56-Uj90gr3I.js → ishikawaDiagram-UXIWVN3A-CXZs0KGV.js} +3 -3
  34. package/out/renderer/assets/{journeyDiagram-4ABVD52K-DekFuOwS.js → journeyDiagram-VCZTEJTY-B-EXuj5b.js} +14 -13
  35. package/out/renderer/assets/{kanban-definition-K7BYSVSG-Hfz2L6NS.js → kanban-definition-6JOO6SKY-ByvN0qaD.js} +5 -2
  36. package/out/renderer/assets/{layout-B9K2VT39.js → layout-BpybWUv6.js} +117 -4
  37. package/out/renderer/assets/min-DB8ixvoT.js +41 -0
  38. package/out/renderer/assets/{mindmap-definition-YRQLILUH-DDcS7_GH.js → mindmap-definition-QFDTVHPH-Do-I-At8.js} +69 -13
  39. package/out/renderer/assets/{pieDiagram-SKSYHLDU-DwjEcJ0Q.js → pieDiagram-DEJITSTG-Cnpf6Gt6.js} +20 -13
  40. package/out/renderer/assets/{quadrantDiagram-337W2JSQ-CpGqN7vo.js → quadrantDiagram-34T5L4WZ-VcOb1qLd.js} +1 -1
  41. package/out/renderer/assets/{requirementDiagram-Z7DCOOCP-qDRUf1ip.js → requirementDiagram-MS252O5E-VJs9Hpaw.js} +42 -11
  42. package/out/renderer/assets/{sankeyDiagram-WA2Y5GQK-DRKS8C1H.js → sankeyDiagram-XADWPNL6-BoXxgLvi.js} +1 -1
  43. package/out/renderer/assets/{sequenceDiagram-2WXFIKYE-DhVN2ug2.js → sequenceDiagram-FGHM5R23-b69hQjSp.js} +446 -220
  44. package/out/renderer/assets/{stateDiagram-RAJIS63D-BpP4eSqu.js → stateDiagram-FHFEXIEX-BK7E-REm.js} +10 -9
  45. package/out/renderer/assets/{stateDiagram-v2-FVOUBMTO-B_qQJqra.js → stateDiagram-v2-QKLJ7IA2-Cd2wfCQu.js} +4 -4
  46. package/out/renderer/assets/{timeline-definition-YZTLITO2-UoWXE_76.js → timeline-definition-GMOUNBTQ-Bl-MTfK5.js} +445 -71
  47. package/out/renderer/assets/{vennDiagram-LZ73GAT5-Dp1FZ609.js → vennDiagram-DHZGUBPP-DNmr1k2L.js} +1 -1
  48. package/out/renderer/assets/{treemap-KZPCXAKY-W2a2L6ff.js → wardley-RL74JXVD-DTbxPMj9.js} +1474 -977
  49. package/out/renderer/assets/wardleyDiagram-NUSXRM2D-BWw08wtD.js +901 -0
  50. package/out/renderer/assets/{xychartDiagram-JWTSCODW-CTzYHTbD.js → xychartDiagram-5P7HB3ND-EEYPnLDT.js} +20 -4
  51. package/out/renderer/index.html +3 -3
  52. package/out/renderer/progress.html +212 -62
  53. package/out/resources/mcp-server/aider-desk-mcp-server.js +642 -402
  54. package/out/resources/skills/extension-creator/SKILL.md +320 -0
  55. package/out/resources/skills/extension-creator/assets/templates/Component.jsx.template +76 -0
  56. package/out/resources/skills/extension-creator/assets/templates/ConfigComponent.jsx.template +38 -0
  57. package/out/resources/skills/extension-creator/assets/templates/folder-extension/config.ts.template +29 -0
  58. package/out/resources/skills/extension-creator/assets/templates/folder-extension/index.ts.template +42 -0
  59. package/out/resources/skills/extension-creator/assets/templates/folder-extension/package.json +12 -0
  60. package/out/resources/skills/extension-creator/assets/templates/folder-extension/tsconfig.json +23 -0
  61. package/out/resources/skills/extension-creator/assets/templates/folder-extension-with-config/index.ts.template +80 -0
  62. package/out/resources/skills/extension-creator/assets/templates/single-file.ts.template +30 -0
  63. package/out/resources/skills/extension-creator/assets/templates/ui-component-external.ts.template +91 -0
  64. package/out/resources/skills/extension-creator/assets/templates/ui-component.ts.template +79 -0
  65. package/out/resources/skills/extension-creator/references/command-definition.md +170 -0
  66. package/out/resources/skills/extension-creator/references/config-components.md +427 -0
  67. package/out/resources/skills/extension-creator/references/event-types.md +156 -0
  68. package/out/resources/skills/extension-creator/references/examples-gallery.md +583 -0
  69. package/out/resources/skills/extension-creator/references/extension-interface.md +240 -0
  70. package/out/resources/skills/extension-creator/references/extension-types.md +186 -0
  71. package/out/resources/skills/extension-creator/references/in-repo-flow.md +132 -0
  72. package/out/resources/skills/extension-creator/references/install-targets.md +96 -0
  73. package/out/resources/skills/extension-creator/references/project-global-flow.md +76 -0
  74. package/out/resources/skills/extension-creator/references/ui-components.md +663 -0
  75. package/out/runner.js +976 -386
  76. package/package.json +2 -3
  77. package/out/renderer/assets/_basePickBy-BWoXHZ8Z.js +0 -161
  78. package/out/renderer/assets/apl-fqmucPXA.js +0 -140
  79. package/out/renderer/assets/asciiarmor-DucZyvP0.js +0 -56
  80. package/out/renderer/assets/asn1-BnOEsgAm.js +0 -144
  81. package/out/renderer/assets/asterisk-QAlztEwS.js +0 -345
  82. package/out/renderer/assets/brainfuck-DZVCuF_t.js +0 -53
  83. package/out/renderer/assets/clike-xqXYL6ge.js +0 -805
  84. package/out/renderer/assets/clojure-BhXMqnxz.js +0 -849
  85. package/out/renderer/assets/cmake-BGaNd9E7.js +0 -71
  86. package/out/renderer/assets/cobol-4yqQntpt.js +0 -120
  87. package/out/renderer/assets/coffeescript-D2dXvhEc.js +0 -308
  88. package/out/renderer/assets/commonlisp-CF_VNHQR.js +0 -130
  89. package/out/renderer/assets/crystal-DyuLTqLs.js +0 -398
  90. package/out/renderer/assets/css-c-jst79C.js +0 -1783
  91. package/out/renderer/assets/cypher-Dlu_3r4V.js +0 -121
  92. package/out/renderer/assets/d-UURgV0Ux.js +0 -179
  93. package/out/renderer/assets/diff-B_Bi2Crb.js +0 -25
  94. package/out/renderer/assets/dockerfile-Bvk733Ga.js +0 -201
  95. package/out/renderer/assets/dtd-Dy74G54E.js +0 -114
  96. package/out/renderer/assets/dylan-TSb-Nfix.js +0 -314
  97. package/out/renderer/assets/ebnf-4fKAGW3a.js +0 -140
  98. package/out/renderer/assets/ecl-B59qGGVg.js +0 -178
  99. package/out/renderer/assets/eiffel-Dze7nlu3.js +0 -134
  100. package/out/renderer/assets/elm-DG7jkhNZ.js +0 -176
  101. package/out/renderer/assets/erlang-BO6gOnGA.js +0 -674
  102. package/out/renderer/assets/factor-CMxFHDqz.js +0 -65
  103. package/out/renderer/assets/fcl-CDDUNjTj.js +0 -141
  104. package/out/renderer/assets/forth-B9D2JCeE.js +0 -116
  105. package/out/renderer/assets/fortran-CAG2BFbe.js +0 -467
  106. package/out/renderer/assets/gas-d3KEcW3x.js +0 -294
  107. package/out/renderer/assets/gherkin-DhZlEZiy.js +0 -115
  108. package/out/renderer/assets/groovy-CpwJiBl7.js +0 -223
  109. package/out/renderer/assets/haskell-ySd-OUo8.js +0 -459
  110. package/out/renderer/assets/haxe-7MlzfeYV.js +0 -514
  111. package/out/renderer/assets/http-BqypyemW.js +0 -79
  112. package/out/renderer/assets/idl-4HIGJlDI.js +0 -985
  113. package/out/renderer/assets/index-6qedlt0q.js +0 -689
  114. package/out/renderer/assets/index-86jDpUJn.js +0 -385
  115. package/out/renderer/assets/index-BRjO8ber.js +0 -332
  116. package/out/renderer/assets/index-BVgw7j0d.js +0 -312
  117. package/out/renderer/assets/index-BhkyI1q3.js +0 -642
  118. package/out/renderer/assets/index-BqrmLPkg.js +0 -82
  119. package/out/renderer/assets/index-BuPbw4xM.js +0 -178
  120. package/out/renderer/assets/index-CTO-LPBg.js +0 -311
  121. package/out/renderer/assets/index-CTO4SzlI.js +0 -97
  122. package/out/renderer/assets/index-CZ9IQK_0.js +0 -2488
  123. package/out/renderer/assets/index-CZxsVxBZ.js +0 -1765
  124. package/out/renderer/assets/index-DIXV-3Xn.js +0 -406
  125. package/out/renderer/assets/index-DNzOtZX5.js +0 -61
  126. package/out/renderer/assets/index-DZtJe7oC.js +0 -1019
  127. package/out/renderer/assets/index-DaWjZz_g.js +0 -291
  128. package/out/renderer/assets/index-De056HHR.js +0 -151
  129. package/out/renderer/assets/index-Dk3wSDSN.js +0 -117
  130. package/out/renderer/assets/index-Dy4VRsnA.js +0 -1041
  131. package/out/renderer/assets/index-FnnayPBc.js +0 -82
  132. package/out/renderer/assets/index-MZb_zy6R.js +0 -704
  133. package/out/renderer/assets/index-chzQl8rJ.js +0 -157
  134. package/out/renderer/assets/index-s-Owx3Pm.js +0 -327
  135. package/out/renderer/assets/javascript-C_OHM9hj.js +0 -994
  136. package/out/renderer/assets/julia-Bs6JJhYG.js +0 -407
  137. package/out/renderer/assets/livescript-DmzgM3Yt.js +0 -296
  138. package/out/renderer/assets/lua-8cJgIlqe.js +0 -256
  139. package/out/renderer/assets/mathematica-DNLOL9PQ.js +0 -110
  140. package/out/renderer/assets/mbox-Ga7d4MMN.js +0 -117
  141. package/out/renderer/assets/mirc-Dma3B8rS.js +0 -107
  142. package/out/renderer/assets/mllike-DHn7xckP.js +0 -334
  143. package/out/renderer/assets/modelica-0d55jYY0.js +0 -147
  144. package/out/renderer/assets/mscgen-DdqZYINH.js +0 -135
  145. package/out/renderer/assets/mumps-Btr8VblO.js +0 -93
  146. package/out/renderer/assets/nginx-DTDtBDVN.js +0 -141
  147. package/out/renderer/assets/nsis-3zG7tgur.js +0 -62
  148. package/out/renderer/assets/ntriples-CvgOYMpL.js +0 -153
  149. package/out/renderer/assets/octave-DYBj3-tl.js +0 -200
  150. package/out/renderer/assets/oz-R_e8WMIi.js +0 -231
  151. package/out/renderer/assets/pascal-GD8iposT.js +0 -105
  152. package/out/renderer/assets/perl-DL9mHpoi.js +0 -1105
  153. package/out/renderer/assets/pig-C_4T4YIV.js +0 -101
  154. package/out/renderer/assets/powershell-B0suO7Vd.js +0 -328
  155. package/out/renderer/assets/properties-BR-vP1aU.js +0 -58
  156. package/out/renderer/assets/protobuf-BxgpyhoW.js +0 -77
  157. package/out/renderer/assets/pug-CTXt1f8z.js +0 -405
  158. package/out/renderer/assets/puppet-Bdao66PW.js +0 -137
  159. package/out/renderer/assets/python-CvWbmiX4.js +0 -427
  160. package/out/renderer/assets/q-CrbCVq4a.js +0 -131
  161. package/out/renderer/assets/r-V7nswm59.js +0 -170
  162. package/out/renderer/assets/rpm-C-DLY-If.js +0 -109
  163. package/out/renderer/assets/ruby-JDKLJNK0.js +0 -330
  164. package/out/renderer/assets/sas-D2UG-yhZ.js +0 -207
  165. package/out/renderer/assets/scheme-BKzrkGJD.js +0 -222
  166. package/out/renderer/assets/shell-BlsXDxCn.js +0 -222
  167. package/out/renderer/assets/sieve-CjwBwOY5.js +0 -135
  168. package/out/renderer/assets/simple-mode-DMneyfDu.js +0 -130
  169. package/out/renderer/assets/smalltalk-BOIGQuhN.js +0 -121
  170. package/out/renderer/assets/solr-CwD7U71z.js +0 -69
  171. package/out/renderer/assets/sparql-DYskk2vE.js +0 -249
  172. package/out/renderer/assets/spreadsheet-Bgtt3oLP.js +0 -87
  173. package/out/renderer/assets/sql-BSrOzCRI.js +0 -354
  174. package/out/renderer/assets/stex-B6LNC55o.js +0 -231
  175. package/out/renderer/assets/stylus-BkS-boTH.js +0 -565
  176. package/out/renderer/assets/swift-FRZi1uvB.js +0 -291
  177. package/out/renderer/assets/tcl-CUcaCdmq.js +0 -114
  178. package/out/renderer/assets/textile-BnFpjsrl.js +0 -414
  179. package/out/renderer/assets/tiddlywiki-CjprD-Qp.js +0 -218
  180. package/out/renderer/assets/tiki-DK9DOeWn.js +0 -268
  181. package/out/renderer/assets/toml-BOuWGMcf.js +0 -76
  182. package/out/renderer/assets/troff-E1bJ0PPL.js +0 -61
  183. package/out/renderer/assets/ttcn-cfg-Dc39-fIP.js +0 -133
  184. package/out/renderer/assets/ttcn-tKd4HLu4.js +0 -192
  185. package/out/renderer/assets/turtle-Dq7-1WAf.js +0 -124
  186. package/out/renderer/assets/vb-Dp90gtsv.js +0 -196
  187. package/out/renderer/assets/vbscript-CI6_mxxU.js +0 -479
  188. package/out/renderer/assets/velocity-BwIZK1TH.js +0 -149
  189. package/out/renderer/assets/verilog-DDCYnHN8.js +0 -430
  190. package/out/renderer/assets/vhdl-DCkMIyT9.js +0 -158
  191. package/out/renderer/assets/webidl-BTLTThCm.js +0 -204
  192. package/out/renderer/assets/xquery-BrBUuxMR.js +0 -525
  193. package/out/renderer/assets/yacas-b5lAVEIl.js +0 -130
  194. package/out/renderer/assets/z80-BZV19vqv.js +0 -93
  195. package/scripts/download-uv.mjs +0 -147
  196. /package/patches/{ai+5.0.161.patch → ai+5.0.167.patch} +0 -0
@@ -1,1041 +0,0 @@
1
- import { L as LRParser, E as ExternalTokenizer, C as ContextTracker } from "./index-CZxsVxBZ.js";
2
- import { aR as parseMixed, aD as styleTags, aE as tags, aP as EditorView, aH as syntaxTree, aQ as EditorSelection, az as LanguageSupport, ay as LRLanguage, aA as indentNodeProp, aC as foldNodeProp, b1 as bracketMatchingHandle } from "./index-MDHavDF9.js";
3
- import { cssLanguage, css } from "./index-DZtJe7oC.js";
4
- import { typescriptLanguage, jsxLanguage, tsxLanguage, javascriptLanguage, javascript } from "./index-BhkyI1q3.js";
5
- 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;
6
- const selfClosers$1 = {
7
- area: true,
8
- base: true,
9
- br: true,
10
- col: true,
11
- command: true,
12
- embed: true,
13
- frame: true,
14
- hr: true,
15
- img: true,
16
- input: true,
17
- keygen: true,
18
- link: true,
19
- meta: true,
20
- param: true,
21
- source: true,
22
- track: true,
23
- wbr: true,
24
- menuitem: true
25
- };
26
- const implicitlyClosed = {
27
- dd: true,
28
- li: true,
29
- optgroup: true,
30
- option: true,
31
- p: true,
32
- rp: true,
33
- rt: true,
34
- tbody: true,
35
- td: true,
36
- tfoot: true,
37
- th: true,
38
- tr: true
39
- };
40
- const closeOnOpen = {
41
- dd: { dd: true, dt: true },
42
- dt: { dd: true, dt: true },
43
- li: { li: true },
44
- option: { option: true, optgroup: true },
45
- optgroup: { optgroup: true },
46
- p: {
47
- address: true,
48
- article: true,
49
- aside: true,
50
- blockquote: true,
51
- dir: true,
52
- div: true,
53
- dl: true,
54
- fieldset: true,
55
- footer: true,
56
- form: true,
57
- h1: true,
58
- h2: true,
59
- h3: true,
60
- h4: true,
61
- h5: true,
62
- h6: true,
63
- header: true,
64
- hgroup: true,
65
- hr: true,
66
- menu: true,
67
- nav: true,
68
- ol: true,
69
- p: true,
70
- pre: true,
71
- section: true,
72
- table: true,
73
- ul: true
74
- },
75
- rp: { rp: true, rt: true },
76
- rt: { rp: true, rt: true },
77
- tbody: { tbody: true, tfoot: true },
78
- td: { td: true, th: true },
79
- tfoot: { tbody: true },
80
- th: { td: true, th: true },
81
- thead: { tbody: true, tfoot: true },
82
- tr: { tr: true }
83
- };
84
- function nameChar(ch) {
85
- return ch == 45 || ch == 46 || ch == 58 || ch >= 65 && ch <= 90 || ch == 95 || ch >= 97 && ch <= 122 || ch >= 161;
86
- }
87
- let cachedName = null, cachedInput = null, cachedPos = 0;
88
- function tagNameAfter(input, offset) {
89
- let pos = input.pos + offset;
90
- if (cachedPos == pos && cachedInput == input) return cachedName;
91
- let next = input.peek(offset), name = "";
92
- for (; ; ) {
93
- if (!nameChar(next)) break;
94
- name += String.fromCharCode(next);
95
- next = input.peek(++offset);
96
- }
97
- cachedInput = input;
98
- cachedPos = pos;
99
- return cachedName = name ? name.toLowerCase() : next == question || next == bang ? void 0 : null;
100
- }
101
- const lessThan = 60, greaterThan = 62, slash = 47, question = 63, bang = 33, dash = 45;
102
- function ElementContext(name, parent) {
103
- this.name = name;
104
- this.parent = parent;
105
- }
106
- const startTagTerms = [StartTag, StartSelfClosingTag, StartScriptTag, StartStyleTag, StartTextareaTag];
107
- const elementContext = new ContextTracker({
108
- start: null,
109
- shift(context, term, stack, input) {
110
- return startTagTerms.indexOf(term) > -1 ? new ElementContext(tagNameAfter(input, 1) || "", context) : context;
111
- },
112
- reduce(context, term) {
113
- return term == Element && context ? context.parent : context;
114
- },
115
- reuse(context, node, stack, input) {
116
- let type = node.type.id;
117
- return type == StartTag || type == OpenTag ? new ElementContext(tagNameAfter(input, 1) || "", context) : context;
118
- },
119
- strict: false
120
- });
121
- const tagStart = new ExternalTokenizer((input, stack) => {
122
- if (input.next != lessThan) {
123
- if (input.next < 0 && stack.context) input.acceptToken(missingCloseTag);
124
- return;
125
- }
126
- input.advance();
127
- let close = input.next == slash;
128
- if (close) input.advance();
129
- let name = tagNameAfter(input, 0);
130
- if (name === void 0) return;
131
- if (!name) return input.acceptToken(close ? IncompleteCloseTag : IncompleteTag);
132
- let parent = stack.context ? stack.context.name : null;
133
- if (close) {
134
- if (name == parent) return input.acceptToken(StartCloseTag);
135
- if (parent && implicitlyClosed[parent]) return input.acceptToken(missingCloseTag, -2);
136
- if (stack.dialectEnabled(Dialect_noMatch)) return input.acceptToken(NoMatchStartCloseTag);
137
- for (let cx = stack.context; cx; cx = cx.parent) if (cx.name == name) return;
138
- input.acceptToken(MismatchedStartCloseTag);
139
- } else {
140
- if (name == "script") return input.acceptToken(StartScriptTag);
141
- if (name == "style") return input.acceptToken(StartStyleTag);
142
- if (name == "textarea") return input.acceptToken(StartTextareaTag);
143
- if (selfClosers$1.hasOwnProperty(name)) return input.acceptToken(StartSelfClosingTag);
144
- if (parent && closeOnOpen[parent] && closeOnOpen[parent][name]) input.acceptToken(missingCloseTag, -1);
145
- else input.acceptToken(StartTag);
146
- }
147
- }, { contextual: true });
148
- const commentContent = new ExternalTokenizer((input) => {
149
- for (let dashes = 0, i = 0; ; i++) {
150
- if (input.next < 0) {
151
- if (i) input.acceptToken(commentContent$1);
152
- break;
153
- }
154
- if (input.next == dash) {
155
- dashes++;
156
- } else if (input.next == greaterThan && dashes >= 2) {
157
- if (i >= 3) input.acceptToken(commentContent$1, -2);
158
- break;
159
- } else {
160
- dashes = 0;
161
- }
162
- input.advance();
163
- }
164
- });
165
- function inForeignElement(context) {
166
- for (; context; context = context.parent)
167
- if (context.name == "svg" || context.name == "math") return true;
168
- return false;
169
- }
170
- const endTag = new ExternalTokenizer((input, stack) => {
171
- if (input.next == slash && input.peek(1) == greaterThan) {
172
- let selfClosing = stack.dialectEnabled(Dialect_selfClosing) || inForeignElement(stack.context);
173
- input.acceptToken(selfClosing ? SelfClosingEndTag : EndTag, 2);
174
- } else if (input.next == greaterThan) {
175
- input.acceptToken(EndTag, 1);
176
- }
177
- });
178
- function contentTokenizer(tag, textToken, endToken) {
179
- let lastState = 2 + tag.length;
180
- return new ExternalTokenizer((input) => {
181
- for (let state = 0, matchedLen = 0, i = 0; ; i++) {
182
- if (input.next < 0) {
183
- if (i) input.acceptToken(textToken);
184
- break;
185
- }
186
- if (state == 0 && input.next == lessThan || state == 1 && input.next == slash || state >= 2 && state < lastState && input.next == tag.charCodeAt(state - 2)) {
187
- state++;
188
- matchedLen++;
189
- } else if (state == lastState && input.next == greaterThan) {
190
- if (i > matchedLen)
191
- input.acceptToken(textToken, -matchedLen);
192
- else
193
- input.acceptToken(endToken, -(matchedLen - 2));
194
- break;
195
- } else if ((input.next == 10 || input.next == 13) && i) {
196
- input.acceptToken(textToken, 1);
197
- break;
198
- } else {
199
- state = matchedLen = 0;
200
- }
201
- input.advance();
202
- }
203
- });
204
- }
205
- const scriptTokens = contentTokenizer("script", scriptText, StartCloseScriptTag);
206
- const styleTokens = contentTokenizer("style", styleText, StartCloseStyleTag);
207
- const textareaTokens = contentTokenizer("textarea", textareaText, StartCloseTextareaTag);
208
- const htmlHighlighting = styleTags({
209
- "Text RawText IncompleteTag IncompleteCloseTag": tags.content,
210
- "StartTag StartCloseTag SelfClosingEndTag EndTag": tags.angleBracket,
211
- TagName: tags.tagName,
212
- "MismatchedCloseTag/TagName": [tags.tagName, tags.invalid],
213
- AttributeName: tags.attributeName,
214
- "AttributeValue UnquotedAttributeValue": tags.attributeValue,
215
- Is: tags.definitionOperator,
216
- "EntityReference CharacterReference": tags.character,
217
- Comment: tags.blockComment,
218
- ProcessingInst: tags.processingInstruction,
219
- DoctypeDecl: tags.documentMeta
220
- });
221
- const parser = LRParser.deserialize({
222
- version: 14,
223
- 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[",
224
- 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~",
225
- 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",
226
- 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",
227
- maxTerm: 68,
228
- context: elementContext,
229
- nodeProps: [
230
- ["closedBy", -10, 1, 2, 3, 7, 8, 9, 10, 11, 12, 13, "EndTag", 6, "EndTag SelfClosingEndTag", -4, 22, 31, 34, 37, "CloseTag"],
231
- ["openedBy", 4, "StartTag StartCloseTag", 5, "StartTag", -4, 30, 33, 36, 38, "OpenTag"],
232
- ["group", -10, 14, 15, 18, 19, 20, 21, 40, 41, 42, 43, "Entity", 17, "Entity TextContent", -3, 29, 32, 35, "TextContent Entity"],
233
- ["isolate", -11, 22, 30, 31, 33, 34, 36, 37, 38, 39, 42, 43, "ltr", -3, 27, 28, 40, ""]
234
- ],
235
- propSources: [htmlHighlighting],
236
- skippedNodes: [0],
237
- repeatNodeCount: 9,
238
- 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",
239
- tokenizers: [scriptTokens, styleTokens, textareaTokens, endTag, tagStart, commentContent, 0, 1, 2, 3, 4, 5],
240
- topRules: { "Document": [0, 16] },
241
- dialects: { noMatch: 0, selfClosing: 515 },
242
- tokenPrec: 517
243
- });
244
- function getAttrs(openTag, input) {
245
- let attrs = /* @__PURE__ */ Object.create(null);
246
- for (let att of openTag.getChildren(Attribute)) {
247
- let name = att.getChild(AttributeName), value = att.getChild(AttributeValue) || att.getChild(UnquotedAttributeValue);
248
- 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);
249
- }
250
- return attrs;
251
- }
252
- function findTagName(openTag, input) {
253
- let tagNameNode = openTag.getChild(TagName);
254
- return tagNameNode ? input.read(tagNameNode.from, tagNameNode.to) : " ";
255
- }
256
- function maybeNest(node, input, tags2) {
257
- let attrs;
258
- for (let tag of tags2) {
259
- if (!tag.attrs || tag.attrs(attrs || (attrs = getAttrs(node.node.parent.firstChild, input))))
260
- return { parser: tag.parser, bracketed: true };
261
- }
262
- return null;
263
- }
264
- function configureNesting(tags2 = [], attributes = []) {
265
- let script = [], style = [], textarea = [], other = [];
266
- for (let tag of tags2) {
267
- let array = tag.tag == "script" ? script : tag.tag == "style" ? style : tag.tag == "textarea" ? textarea : other;
268
- array.push(tag);
269
- }
270
- let attrs = attributes.length ? /* @__PURE__ */ Object.create(null) : null;
271
- for (let attr of attributes) (attrs[attr.name] || (attrs[attr.name] = [])).push(attr);
272
- return parseMixed((node, input) => {
273
- let id = node.type.id;
274
- if (id == ScriptText) return maybeNest(node, input, script);
275
- if (id == StyleText) return maybeNest(node, input, style);
276
- if (id == TextareaText) return maybeNest(node, input, textarea);
277
- if (id == Element && other.length) {
278
- let n = node.node, open = n.firstChild, tagName = open && findTagName(open, input), attrs2;
279
- if (tagName) for (let tag of other) {
280
- if (tag.tag == tagName && (!tag.attrs || tag.attrs(attrs2 || (attrs2 = getAttrs(open, input))))) {
281
- let close = n.lastChild;
282
- let to = close.type.id == CloseTag ? close.from : n.to;
283
- if (to > open.to)
284
- return { parser: tag.parser, overlay: [{ from: open.to, to }] };
285
- }
286
- }
287
- }
288
- if (attrs && id == Attribute) {
289
- let n = node.node, nameNode;
290
- if (nameNode = n.firstChild) {
291
- let matches = attrs[input.read(nameNode.from, nameNode.to)];
292
- if (matches) for (let attr of matches) {
293
- if (attr.tagName && attr.tagName != findTagName(n.parent, input)) continue;
294
- let value = n.lastChild;
295
- if (value.type.id == AttributeValue) {
296
- let from = value.from + 1;
297
- let last = value.lastChild, to = value.to - (last && last.isError ? 0 : 1);
298
- if (to > from) return { parser: attr.parser, overlay: [{ from, to }], bracketed: true };
299
- } else if (value.type.id == UnquotedAttributeValue) {
300
- return { parser: attr.parser, overlay: [{ from: value.from, to: value.to }] };
301
- }
302
- }
303
- }
304
- }
305
- return null;
306
- });
307
- }
308
- const Targets = ["_blank", "_self", "_top", "_parent"];
309
- const Charsets = ["ascii", "utf-8", "utf-16", "latin1", "latin1"];
310
- const Methods = ["get", "post", "put", "delete"];
311
- const Encs = ["application/x-www-form-urlencoded", "multipart/form-data", "text/plain"];
312
- const Bool = ["true", "false"];
313
- const S = {};
314
- const Tags = {
315
- a: {
316
- attrs: {
317
- href: null,
318
- ping: null,
319
- type: null,
320
- media: null,
321
- target: Targets,
322
- hreflang: null
323
- }
324
- },
325
- abbr: S,
326
- address: S,
327
- area: {
328
- attrs: {
329
- alt: null,
330
- coords: null,
331
- href: null,
332
- target: null,
333
- ping: null,
334
- media: null,
335
- hreflang: null,
336
- type: null,
337
- shape: ["default", "rect", "circle", "poly"]
338
- }
339
- },
340
- article: S,
341
- aside: S,
342
- audio: {
343
- attrs: {
344
- src: null,
345
- mediagroup: null,
346
- crossorigin: ["anonymous", "use-credentials"],
347
- preload: ["none", "metadata", "auto"],
348
- autoplay: ["autoplay"],
349
- loop: ["loop"],
350
- controls: ["controls"]
351
- }
352
- },
353
- b: S,
354
- base: { attrs: { href: null, target: Targets } },
355
- bdi: S,
356
- bdo: S,
357
- blockquote: { attrs: { cite: null } },
358
- body: S,
359
- br: S,
360
- button: {
361
- attrs: {
362
- form: null,
363
- formaction: null,
364
- name: null,
365
- value: null,
366
- autofocus: ["autofocus"],
367
- disabled: ["autofocus"],
368
- formenctype: Encs,
369
- formmethod: Methods,
370
- formnovalidate: ["novalidate"],
371
- formtarget: Targets,
372
- type: ["submit", "reset", "button"]
373
- }
374
- },
375
- canvas: { attrs: { width: null, height: null } },
376
- caption: S,
377
- center: S,
378
- cite: S,
379
- code: S,
380
- col: { attrs: { span: null } },
381
- colgroup: { attrs: { span: null } },
382
- command: {
383
- attrs: {
384
- type: ["command", "checkbox", "radio"],
385
- label: null,
386
- icon: null,
387
- radiogroup: null,
388
- command: null,
389
- title: null,
390
- disabled: ["disabled"],
391
- checked: ["checked"]
392
- }
393
- },
394
- data: { attrs: { value: null } },
395
- datagrid: { attrs: { disabled: ["disabled"], multiple: ["multiple"] } },
396
- datalist: { attrs: { data: null } },
397
- dd: S,
398
- del: { attrs: { cite: null, datetime: null } },
399
- details: { attrs: { open: ["open"] } },
400
- dfn: S,
401
- div: S,
402
- dl: S,
403
- dt: S,
404
- em: S,
405
- embed: { attrs: { src: null, type: null, width: null, height: null } },
406
- eventsource: { attrs: { src: null } },
407
- fieldset: { attrs: { disabled: ["disabled"], form: null, name: null } },
408
- figcaption: S,
409
- figure: S,
410
- footer: S,
411
- form: {
412
- attrs: {
413
- action: null,
414
- name: null,
415
- "accept-charset": Charsets,
416
- autocomplete: ["on", "off"],
417
- enctype: Encs,
418
- method: Methods,
419
- novalidate: ["novalidate"],
420
- target: Targets
421
- }
422
- },
423
- h1: S,
424
- h2: S,
425
- h3: S,
426
- h4: S,
427
- h5: S,
428
- h6: S,
429
- head: {
430
- children: ["title", "base", "link", "style", "meta", "script", "noscript", "command"]
431
- },
432
- header: S,
433
- hgroup: S,
434
- hr: S,
435
- html: {
436
- attrs: { manifest: null }
437
- },
438
- i: S,
439
- iframe: {
440
- attrs: {
441
- src: null,
442
- srcdoc: null,
443
- name: null,
444
- width: null,
445
- height: null,
446
- sandbox: ["allow-top-navigation", "allow-same-origin", "allow-forms", "allow-scripts"],
447
- seamless: ["seamless"]
448
- }
449
- },
450
- img: {
451
- attrs: {
452
- alt: null,
453
- src: null,
454
- ismap: null,
455
- usemap: null,
456
- width: null,
457
- height: null,
458
- crossorigin: ["anonymous", "use-credentials"]
459
- }
460
- },
461
- input: {
462
- attrs: {
463
- alt: null,
464
- dirname: null,
465
- form: null,
466
- formaction: null,
467
- height: null,
468
- list: null,
469
- max: null,
470
- maxlength: null,
471
- min: null,
472
- name: null,
473
- pattern: null,
474
- placeholder: null,
475
- size: null,
476
- src: null,
477
- step: null,
478
- value: null,
479
- width: null,
480
- accept: ["audio/*", "video/*", "image/*"],
481
- autocomplete: ["on", "off"],
482
- autofocus: ["autofocus"],
483
- checked: ["checked"],
484
- disabled: ["disabled"],
485
- formenctype: Encs,
486
- formmethod: Methods,
487
- formnovalidate: ["novalidate"],
488
- formtarget: Targets,
489
- multiple: ["multiple"],
490
- readonly: ["readonly"],
491
- required: ["required"],
492
- type: [
493
- "hidden",
494
- "text",
495
- "search",
496
- "tel",
497
- "url",
498
- "email",
499
- "password",
500
- "datetime",
501
- "date",
502
- "month",
503
- "week",
504
- "time",
505
- "datetime-local",
506
- "number",
507
- "range",
508
- "color",
509
- "checkbox",
510
- "radio",
511
- "file",
512
- "submit",
513
- "image",
514
- "reset",
515
- "button"
516
- ]
517
- }
518
- },
519
- ins: { attrs: { cite: null, datetime: null } },
520
- kbd: S,
521
- keygen: {
522
- attrs: {
523
- challenge: null,
524
- form: null,
525
- name: null,
526
- autofocus: ["autofocus"],
527
- disabled: ["disabled"],
528
- keytype: ["RSA"]
529
- }
530
- },
531
- label: { attrs: { for: null, form: null } },
532
- legend: S,
533
- li: { attrs: { value: null } },
534
- link: {
535
- attrs: {
536
- href: null,
537
- type: null,
538
- hreflang: null,
539
- media: null,
540
- sizes: ["all", "16x16", "16x16 32x32", "16x16 32x32 64x64"]
541
- }
542
- },
543
- map: { attrs: { name: null } },
544
- mark: S,
545
- menu: { attrs: { label: null, type: ["list", "context", "toolbar"] } },
546
- meta: {
547
- attrs: {
548
- content: null,
549
- charset: Charsets,
550
- name: ["viewport", "application-name", "author", "description", "generator", "keywords"],
551
- "http-equiv": ["content-language", "content-type", "default-style", "refresh"]
552
- }
553
- },
554
- meter: { attrs: { value: null, min: null, low: null, high: null, max: null, optimum: null } },
555
- nav: S,
556
- noscript: S,
557
- object: {
558
- attrs: {
559
- data: null,
560
- type: null,
561
- name: null,
562
- usemap: null,
563
- form: null,
564
- width: null,
565
- height: null,
566
- typemustmatch: ["typemustmatch"]
567
- }
568
- },
569
- ol: {
570
- attrs: { reversed: ["reversed"], start: null, type: ["1", "a", "A", "i", "I"] },
571
- children: ["li", "script", "template", "ul", "ol"]
572
- },
573
- optgroup: { attrs: { disabled: ["disabled"], label: null } },
574
- option: { attrs: { disabled: ["disabled"], label: null, selected: ["selected"], value: null } },
575
- output: { attrs: { for: null, form: null, name: null } },
576
- p: S,
577
- param: { attrs: { name: null, value: null } },
578
- pre: S,
579
- progress: { attrs: { value: null, max: null } },
580
- q: { attrs: { cite: null } },
581
- rp: S,
582
- rt: S,
583
- ruby: S,
584
- samp: S,
585
- script: {
586
- attrs: {
587
- type: ["text/javascript"],
588
- src: null,
589
- async: ["async"],
590
- defer: ["defer"],
591
- charset: Charsets
592
- }
593
- },
594
- section: S,
595
- select: {
596
- attrs: {
597
- form: null,
598
- name: null,
599
- size: null,
600
- autofocus: ["autofocus"],
601
- disabled: ["disabled"],
602
- multiple: ["multiple"]
603
- }
604
- },
605
- slot: { attrs: { name: null } },
606
- small: S,
607
- source: { attrs: { src: null, type: null, media: null } },
608
- span: S,
609
- strong: S,
610
- style: {
611
- attrs: {
612
- type: ["text/css"],
613
- media: null,
614
- scoped: null
615
- }
616
- },
617
- sub: S,
618
- summary: S,
619
- sup: S,
620
- table: S,
621
- tbody: S,
622
- td: { attrs: { colspan: null, rowspan: null, headers: null } },
623
- template: S,
624
- textarea: {
625
- attrs: {
626
- dirname: null,
627
- form: null,
628
- maxlength: null,
629
- name: null,
630
- placeholder: null,
631
- rows: null,
632
- cols: null,
633
- autofocus: ["autofocus"],
634
- disabled: ["disabled"],
635
- readonly: ["readonly"],
636
- required: ["required"],
637
- wrap: ["soft", "hard"]
638
- }
639
- },
640
- tfoot: S,
641
- th: { attrs: { colspan: null, rowspan: null, headers: null, scope: ["row", "col", "rowgroup", "colgroup"] } },
642
- thead: S,
643
- time: { attrs: { datetime: null } },
644
- title: S,
645
- tr: S,
646
- track: {
647
- attrs: {
648
- src: null,
649
- label: null,
650
- default: null,
651
- kind: ["subtitles", "captions", "descriptions", "chapters", "metadata"],
652
- srclang: null
653
- }
654
- },
655
- ul: { children: ["li", "script", "template", "ul", "ol"] },
656
- var: S,
657
- video: {
658
- attrs: {
659
- src: null,
660
- poster: null,
661
- width: null,
662
- height: null,
663
- crossorigin: ["anonymous", "use-credentials"],
664
- preload: ["auto", "metadata", "none"],
665
- autoplay: ["autoplay"],
666
- mediagroup: ["movie"],
667
- muted: ["muted"],
668
- controls: ["controls"]
669
- }
670
- },
671
- wbr: S
672
- };
673
- const GlobalAttrs = {
674
- accesskey: null,
675
- class: null,
676
- contenteditable: Bool,
677
- contextmenu: null,
678
- dir: ["ltr", "rtl", "auto"],
679
- draggable: ["true", "false", "auto"],
680
- dropzone: ["copy", "move", "link", "string:", "file:"],
681
- hidden: ["hidden"],
682
- id: null,
683
- inert: ["inert"],
684
- itemid: null,
685
- itemprop: null,
686
- itemref: null,
687
- itemscope: ["itemscope"],
688
- itemtype: null,
689
- lang: ["ar", "bn", "de", "en-GB", "en-US", "es", "fr", "hi", "id", "ja", "pa", "pt", "ru", "tr", "zh"],
690
- spellcheck: Bool,
691
- autocorrect: Bool,
692
- autocapitalize: Bool,
693
- style: null,
694
- tabindex: null,
695
- title: null,
696
- translate: ["yes", "no"],
697
- rel: ["stylesheet", "alternate", "author", "bookmark", "help", "license", "next", "nofollow", "noreferrer", "prefetch", "prev", "search", "tag"],
698
- 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(" "),
699
- "aria-activedescendant": null,
700
- "aria-atomic": Bool,
701
- "aria-autocomplete": ["inline", "list", "both", "none"],
702
- "aria-busy": Bool,
703
- "aria-checked": ["true", "false", "mixed", "undefined"],
704
- "aria-controls": null,
705
- "aria-describedby": null,
706
- "aria-disabled": Bool,
707
- "aria-dropeffect": null,
708
- "aria-expanded": ["true", "false", "undefined"],
709
- "aria-flowto": null,
710
- "aria-grabbed": ["true", "false", "undefined"],
711
- "aria-haspopup": Bool,
712
- "aria-hidden": Bool,
713
- "aria-invalid": ["true", "false", "grammar", "spelling"],
714
- "aria-label": null,
715
- "aria-labelledby": null,
716
- "aria-level": null,
717
- "aria-live": ["off", "polite", "assertive"],
718
- "aria-multiline": Bool,
719
- "aria-multiselectable": Bool,
720
- "aria-owns": null,
721
- "aria-posinset": null,
722
- "aria-pressed": ["true", "false", "mixed", "undefined"],
723
- "aria-readonly": Bool,
724
- "aria-relevant": null,
725
- "aria-required": Bool,
726
- "aria-selected": ["true", "false", "undefined"],
727
- "aria-setsize": null,
728
- "aria-sort": ["ascending", "descending", "none", "other"],
729
- "aria-valuemax": null,
730
- "aria-valuemin": null,
731
- "aria-valuenow": null,
732
- "aria-valuetext": null
733
- };
734
- 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);
735
- for (let a of eventAttributes)
736
- GlobalAttrs[a] = null;
737
- class Schema {
738
- constructor(extraTags, extraAttrs) {
739
- this.tags = { ...Tags, ...extraTags };
740
- this.globalAttrs = { ...GlobalAttrs, ...extraAttrs };
741
- this.allTags = Object.keys(this.tags);
742
- this.globalAttrNames = Object.keys(this.globalAttrs);
743
- }
744
- }
745
- Schema.default = /* @__PURE__ */ new Schema();
746
- function elementName(doc, tree, max = doc.length) {
747
- if (!tree)
748
- return "";
749
- let tag = tree.firstChild;
750
- let name = tag && tag.getChild("TagName");
751
- return name ? doc.sliceString(name.from, Math.min(name.to, max)) : "";
752
- }
753
- function findParentElement(tree, skip = false) {
754
- for (; tree; tree = tree.parent)
755
- if (tree.name == "Element") {
756
- if (skip)
757
- skip = false;
758
- else
759
- return tree;
760
- }
761
- return null;
762
- }
763
- function allowedChildren(doc, tree, schema) {
764
- let parentInfo = schema.tags[elementName(doc, findParentElement(tree))];
765
- return (parentInfo === null || parentInfo === void 0 ? void 0 : parentInfo.children) || schema.allTags;
766
- }
767
- function openTags(doc, tree) {
768
- let open = [];
769
- for (let parent = findParentElement(tree); parent && !parent.type.isTop; parent = findParentElement(parent.parent)) {
770
- let tagName = elementName(doc, parent);
771
- if (tagName && parent.lastChild.name == "CloseTag")
772
- break;
773
- if (tagName && open.indexOf(tagName) < 0 && (tree.name == "EndTag" || tree.from >= parent.firstChild.to))
774
- open.push(tagName);
775
- }
776
- return open;
777
- }
778
- const identifier = /^[:\-\.\w\u00b7-\uffff]*$/;
779
- function completeTag(state, schema, tree, from, to) {
780
- let end = /\s*>/.test(state.sliceDoc(to, to + 5)) ? "" : ">";
781
- let parent = findParentElement(tree, tree.name == "StartTag" || tree.name == "TagName");
782
- return {
783
- from,
784
- to,
785
- options: allowedChildren(state.doc, parent, schema).map((tagName) => ({ label: tagName, type: "type" })).concat(openTags(state.doc, tree).map((tag, i) => ({
786
- label: "/" + tag,
787
- apply: "/" + tag + end,
788
- type: "type",
789
- boost: 99 - i
790
- }))),
791
- validFor: /^\/?[:\-\.\w\u00b7-\uffff]*$/
792
- };
793
- }
794
- function completeCloseTag(state, tree, from, to) {
795
- let end = /\s*>/.test(state.sliceDoc(to, to + 5)) ? "" : ">";
796
- return {
797
- from,
798
- to,
799
- options: openTags(state.doc, tree).map((tag, i) => ({ label: tag, apply: tag + end, type: "type", boost: 99 - i })),
800
- validFor: identifier
801
- };
802
- }
803
- function completeStartTag(state, schema, tree, pos) {
804
- let options = [], level = 0;
805
- for (let tagName of allowedChildren(state.doc, tree, schema))
806
- options.push({ label: "<" + tagName, type: "type" });
807
- for (let open of openTags(state.doc, tree))
808
- options.push({ label: "</" + open + ">", type: "type", boost: 99 - level++ });
809
- return { from: pos, to: pos, options, validFor: /^<\/?[:\-\.\w\u00b7-\uffff]*$/ };
810
- }
811
- function completeAttrName(state, schema, tree, from, to) {
812
- let elt = findParentElement(tree), info = elt ? schema.tags[elementName(state.doc, elt)] : null;
813
- let localAttrs = info && info.attrs ? Object.keys(info.attrs) : [];
814
- let names = info && info.globalAttrs === false ? localAttrs : localAttrs.length ? localAttrs.concat(schema.globalAttrNames) : schema.globalAttrNames;
815
- return {
816
- from,
817
- to,
818
- options: names.map((attrName) => ({ label: attrName, type: "property" })),
819
- validFor: identifier
820
- };
821
- }
822
- function completeAttrValue(state, schema, tree, from, to) {
823
- var _a;
824
- let nameNode = (_a = tree.parent) === null || _a === void 0 ? void 0 : _a.getChild("AttributeName");
825
- let options = [], token = void 0;
826
- if (nameNode) {
827
- let attrName = state.sliceDoc(nameNode.from, nameNode.to);
828
- let attrs = schema.globalAttrs[attrName];
829
- if (!attrs) {
830
- let elt = findParentElement(tree), info = elt ? schema.tags[elementName(state.doc, elt)] : null;
831
- attrs = (info === null || info === void 0 ? void 0 : info.attrs) && info.attrs[attrName];
832
- }
833
- if (attrs) {
834
- let base = state.sliceDoc(from, to).toLowerCase(), quoteStart = '"', quoteEnd = '"';
835
- if (/^['"]/.test(base)) {
836
- token = base[0] == '"' ? /^[^"]*$/ : /^[^']*$/;
837
- quoteStart = "";
838
- quoteEnd = state.sliceDoc(to, to + 1) == base[0] ? "" : base[0];
839
- base = base.slice(1);
840
- from++;
841
- } else {
842
- token = /^[^\s<>='"]*$/;
843
- }
844
- for (let value of attrs)
845
- options.push({ label: value, apply: quoteStart + value + quoteEnd, type: "constant" });
846
- }
847
- }
848
- return { from, to, options, validFor: token };
849
- }
850
- function htmlCompletionFor(schema, context) {
851
- let { state, pos } = context, tree = syntaxTree(state).resolveInner(pos, -1), around = tree.resolve(pos);
852
- for (let scan = pos, before; around == tree && (before = tree.childBefore(scan)); ) {
853
- let last = before.lastChild;
854
- if (!last || !last.type.isError || last.from < last.to)
855
- break;
856
- around = tree = before;
857
- scan = last.from;
858
- }
859
- if (tree.name == "TagName") {
860
- return tree.parent && /CloseTag$/.test(tree.parent.name) ? completeCloseTag(state, tree, tree.from, pos) : completeTag(state, schema, tree, tree.from, pos);
861
- } else if (tree.name == "StartTag" || tree.name == "IncompleteTag") {
862
- return completeTag(state, schema, tree, pos, pos);
863
- } else if (tree.name == "StartCloseTag" || tree.name == "IncompleteCloseTag") {
864
- return completeCloseTag(state, tree, pos, pos);
865
- } else if (tree.name == "OpenTag" || tree.name == "SelfClosingTag" || tree.name == "AttributeName") {
866
- return completeAttrName(state, schema, tree, tree.name == "AttributeName" ? tree.from : pos, pos);
867
- } else if (tree.name == "Is" || tree.name == "AttributeValue" || tree.name == "UnquotedAttributeValue") {
868
- return completeAttrValue(state, schema, tree, tree.name == "Is" ? pos : tree.from, pos);
869
- } else if (context.explicit && (around.name == "Element" || around.name == "Text" || around.name == "Document")) {
870
- return completeStartTag(state, schema, tree, pos);
871
- } else {
872
- return null;
873
- }
874
- }
875
- function htmlCompletionSource(context) {
876
- return htmlCompletionFor(Schema.default, context);
877
- }
878
- function htmlCompletionSourceWith(config) {
879
- let { extraTags, extraGlobalAttributes: extraAttrs } = config;
880
- let schema = extraAttrs || extraTags ? new Schema(extraTags, extraAttrs) : Schema.default;
881
- return (context) => htmlCompletionFor(schema, context);
882
- }
883
- const jsonParser = /* @__PURE__ */ javascriptLanguage.parser.configure({ top: "SingleExpression" });
884
- const defaultNesting = [
885
- {
886
- tag: "script",
887
- attrs: (attrs) => attrs.type == "text/typescript" || attrs.lang == "ts",
888
- parser: typescriptLanguage.parser
889
- },
890
- {
891
- tag: "script",
892
- attrs: (attrs) => attrs.type == "text/babel" || attrs.type == "text/jsx",
893
- parser: jsxLanguage.parser
894
- },
895
- {
896
- tag: "script",
897
- attrs: (attrs) => attrs.type == "text/typescript-jsx",
898
- parser: tsxLanguage.parser
899
- },
900
- {
901
- tag: "script",
902
- attrs(attrs) {
903
- return /^(importmap|speculationrules|application\/(.+\+)?json)$/i.test(attrs.type);
904
- },
905
- parser: jsonParser
906
- },
907
- {
908
- tag: "script",
909
- attrs(attrs) {
910
- return !attrs.type || /^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i.test(attrs.type);
911
- },
912
- parser: javascriptLanguage.parser
913
- },
914
- {
915
- tag: "style",
916
- attrs(attrs) {
917
- return (!attrs.lang || attrs.lang == "css") && (!attrs.type || /^(text\/)?(x-)?(stylesheet|css)$/i.test(attrs.type));
918
- },
919
- parser: cssLanguage.parser
920
- }
921
- ];
922
- const defaultAttrs = /* @__PURE__ */ [
923
- {
924
- name: "style",
925
- parser: /* @__PURE__ */ cssLanguage.parser.configure({ top: "Styles" })
926
- }
927
- ].concat(/* @__PURE__ */ eventAttributes.map((name) => ({ name, parser: javascriptLanguage.parser })));
928
- const htmlPlain = /* @__PURE__ */ LRLanguage.define({
929
- name: "html",
930
- parser: /* @__PURE__ */ parser.configure({
931
- props: [
932
- /* @__PURE__ */ indentNodeProp.add({
933
- Element(context) {
934
- let after = /^(\s*)(<\/)?/.exec(context.textAfter);
935
- if (context.node.to <= context.pos + after[0].length)
936
- return context.continue();
937
- return context.lineIndent(context.node.from) + (after[2] ? 0 : context.unit);
938
- },
939
- "OpenTag CloseTag SelfClosingTag"(context) {
940
- return context.column(context.node.from) + context.unit;
941
- },
942
- Document(context) {
943
- if (context.pos + /\s*/.exec(context.textAfter)[0].length < context.node.to)
944
- return context.continue();
945
- let endElt = null, close;
946
- for (let cur = context.node; ; ) {
947
- let last = cur.lastChild;
948
- if (!last || last.name != "Element" || last.to != cur.to)
949
- break;
950
- endElt = cur = last;
951
- }
952
- if (endElt && !((close = endElt.lastChild) && (close.name == "CloseTag" || close.name == "SelfClosingTag")))
953
- return context.lineIndent(endElt.from) + context.unit;
954
- return null;
955
- }
956
- }),
957
- /* @__PURE__ */ foldNodeProp.add({
958
- Element(node) {
959
- let first = node.firstChild, last = node.lastChild;
960
- if (!first || first.name != "OpenTag")
961
- return null;
962
- return { from: first.to, to: last.name == "CloseTag" ? last.from : node.to };
963
- }
964
- }),
965
- /* @__PURE__ */ bracketMatchingHandle.add({
966
- "OpenTag CloseTag": (node) => node.getChild("TagName")
967
- })
968
- ]
969
- }),
970
- languageData: {
971
- commentTokens: { block: { open: "<!--", close: "-->" } },
972
- indentOnInput: /^\s*<\/\w+\W$/,
973
- wordChars: "-_"
974
- }
975
- });
976
- const htmlLanguage = /* @__PURE__ */ htmlPlain.configure({
977
- wrap: /* @__PURE__ */ configureNesting(defaultNesting, defaultAttrs)
978
- });
979
- function html(config = {}) {
980
- let dialect = "", wrap;
981
- if (config.matchClosingTags === false)
982
- dialect = "noMatch";
983
- if (config.selfClosingTags === true)
984
- dialect = (dialect ? dialect + " " : "") + "selfClosing";
985
- if (config.nestedLanguages && config.nestedLanguages.length || config.nestedAttributes && config.nestedAttributes.length)
986
- wrap = configureNesting((config.nestedLanguages || []).concat(defaultNesting), (config.nestedAttributes || []).concat(defaultAttrs));
987
- let lang = wrap ? htmlPlain.configure({ wrap, dialect }) : dialect ? htmlLanguage.configure({ dialect }) : htmlLanguage;
988
- return new LanguageSupport(lang, [
989
- htmlLanguage.data.of({ autocomplete: htmlCompletionSourceWith(config) }),
990
- config.autoCloseTags !== false ? autoCloseTags : [],
991
- javascript().support,
992
- css().support
993
- ]);
994
- }
995
- 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(" "));
996
- const autoCloseTags = /* @__PURE__ */ EditorView.inputHandler.of((view, from, to, text, insertTransaction) => {
997
- if (view.composing || view.state.readOnly || from != to || text != ">" && text != "/" || !htmlLanguage.isActiveAt(view.state, from, -1))
998
- return false;
999
- let base = insertTransaction(), { state } = base;
1000
- let closeTags = state.changeByRange((range) => {
1001
- var _a, _b, _c;
1002
- let didType = state.doc.sliceString(range.from - 1, range.to) == text;
1003
- let { head } = range, after = syntaxTree(state).resolveInner(head, -1), name;
1004
- if (didType && text == ">" && after.name == "EndTag") {
1005
- let tag = after.parent;
1006
- 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)) {
1007
- let to2 = head + (state.doc.sliceString(head, head + 1) === ">" ? 1 : 0);
1008
- let insert = `</${name}>`;
1009
- return { range, changes: { from: head, to: to2, insert } };
1010
- }
1011
- } else if (didType && text == "/" && after.name == "IncompleteCloseTag") {
1012
- let tag = after.parent;
1013
- 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)) {
1014
- let to2 = head + (state.doc.sliceString(head, head + 1) === ">" ? 1 : 0);
1015
- let insert = `${name}>`;
1016
- return {
1017
- range: EditorSelection.cursor(head + insert.length, -1),
1018
- changes: { from: head, to: to2, insert }
1019
- };
1020
- }
1021
- }
1022
- return { range };
1023
- });
1024
- if (closeTags.changes.empty)
1025
- return false;
1026
- view.dispatch([
1027
- base,
1028
- state.update(closeTags, {
1029
- userEvent: "input.complete",
1030
- scrollIntoView: true
1031
- })
1032
- ]);
1033
- return true;
1034
- });
1035
- export {
1036
- autoCloseTags,
1037
- html,
1038
- htmlCompletionSource,
1039
- htmlCompletionSourceWith,
1040
- htmlLanguage
1041
- };