@aiderdesk/aiderdesk 0.61.0-dev → 0.61.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 (175) 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/runner.js +976 -386
  55. package/package.json +2 -3
  56. package/out/renderer/assets/_basePickBy-BWoXHZ8Z.js +0 -161
  57. package/out/renderer/assets/apl-fqmucPXA.js +0 -140
  58. package/out/renderer/assets/asciiarmor-DucZyvP0.js +0 -56
  59. package/out/renderer/assets/asn1-BnOEsgAm.js +0 -144
  60. package/out/renderer/assets/asterisk-QAlztEwS.js +0 -345
  61. package/out/renderer/assets/brainfuck-DZVCuF_t.js +0 -53
  62. package/out/renderer/assets/clike-xqXYL6ge.js +0 -805
  63. package/out/renderer/assets/clojure-BhXMqnxz.js +0 -849
  64. package/out/renderer/assets/cmake-BGaNd9E7.js +0 -71
  65. package/out/renderer/assets/cobol-4yqQntpt.js +0 -120
  66. package/out/renderer/assets/coffeescript-D2dXvhEc.js +0 -308
  67. package/out/renderer/assets/commonlisp-CF_VNHQR.js +0 -130
  68. package/out/renderer/assets/crystal-DyuLTqLs.js +0 -398
  69. package/out/renderer/assets/css-c-jst79C.js +0 -1783
  70. package/out/renderer/assets/cypher-Dlu_3r4V.js +0 -121
  71. package/out/renderer/assets/d-UURgV0Ux.js +0 -179
  72. package/out/renderer/assets/diff-B_Bi2Crb.js +0 -25
  73. package/out/renderer/assets/dockerfile-Bvk733Ga.js +0 -201
  74. package/out/renderer/assets/dtd-Dy74G54E.js +0 -114
  75. package/out/renderer/assets/dylan-TSb-Nfix.js +0 -314
  76. package/out/renderer/assets/ebnf-4fKAGW3a.js +0 -140
  77. package/out/renderer/assets/ecl-B59qGGVg.js +0 -178
  78. package/out/renderer/assets/eiffel-Dze7nlu3.js +0 -134
  79. package/out/renderer/assets/elm-DG7jkhNZ.js +0 -176
  80. package/out/renderer/assets/erlang-BO6gOnGA.js +0 -674
  81. package/out/renderer/assets/factor-CMxFHDqz.js +0 -65
  82. package/out/renderer/assets/fcl-CDDUNjTj.js +0 -141
  83. package/out/renderer/assets/forth-B9D2JCeE.js +0 -116
  84. package/out/renderer/assets/fortran-CAG2BFbe.js +0 -467
  85. package/out/renderer/assets/gas-d3KEcW3x.js +0 -294
  86. package/out/renderer/assets/gherkin-DhZlEZiy.js +0 -115
  87. package/out/renderer/assets/groovy-CpwJiBl7.js +0 -223
  88. package/out/renderer/assets/haskell-ySd-OUo8.js +0 -459
  89. package/out/renderer/assets/haxe-7MlzfeYV.js +0 -514
  90. package/out/renderer/assets/http-BqypyemW.js +0 -79
  91. package/out/renderer/assets/idl-4HIGJlDI.js +0 -985
  92. package/out/renderer/assets/index-6qedlt0q.js +0 -689
  93. package/out/renderer/assets/index-86jDpUJn.js +0 -385
  94. package/out/renderer/assets/index-BRjO8ber.js +0 -332
  95. package/out/renderer/assets/index-BVgw7j0d.js +0 -312
  96. package/out/renderer/assets/index-BhkyI1q3.js +0 -642
  97. package/out/renderer/assets/index-BqrmLPkg.js +0 -82
  98. package/out/renderer/assets/index-BuPbw4xM.js +0 -178
  99. package/out/renderer/assets/index-CTO-LPBg.js +0 -311
  100. package/out/renderer/assets/index-CTO4SzlI.js +0 -97
  101. package/out/renderer/assets/index-CZ9IQK_0.js +0 -2488
  102. package/out/renderer/assets/index-CZxsVxBZ.js +0 -1765
  103. package/out/renderer/assets/index-DIXV-3Xn.js +0 -406
  104. package/out/renderer/assets/index-DNzOtZX5.js +0 -61
  105. package/out/renderer/assets/index-DZtJe7oC.js +0 -1019
  106. package/out/renderer/assets/index-DaWjZz_g.js +0 -291
  107. package/out/renderer/assets/index-De056HHR.js +0 -151
  108. package/out/renderer/assets/index-Dk3wSDSN.js +0 -117
  109. package/out/renderer/assets/index-Dy4VRsnA.js +0 -1041
  110. package/out/renderer/assets/index-FnnayPBc.js +0 -82
  111. package/out/renderer/assets/index-MZb_zy6R.js +0 -704
  112. package/out/renderer/assets/index-chzQl8rJ.js +0 -157
  113. package/out/renderer/assets/index-s-Owx3Pm.js +0 -327
  114. package/out/renderer/assets/javascript-C_OHM9hj.js +0 -994
  115. package/out/renderer/assets/julia-Bs6JJhYG.js +0 -407
  116. package/out/renderer/assets/livescript-DmzgM3Yt.js +0 -296
  117. package/out/renderer/assets/lua-8cJgIlqe.js +0 -256
  118. package/out/renderer/assets/mathematica-DNLOL9PQ.js +0 -110
  119. package/out/renderer/assets/mbox-Ga7d4MMN.js +0 -117
  120. package/out/renderer/assets/mirc-Dma3B8rS.js +0 -107
  121. package/out/renderer/assets/mllike-DHn7xckP.js +0 -334
  122. package/out/renderer/assets/modelica-0d55jYY0.js +0 -147
  123. package/out/renderer/assets/mscgen-DdqZYINH.js +0 -135
  124. package/out/renderer/assets/mumps-Btr8VblO.js +0 -93
  125. package/out/renderer/assets/nginx-DTDtBDVN.js +0 -141
  126. package/out/renderer/assets/nsis-3zG7tgur.js +0 -62
  127. package/out/renderer/assets/ntriples-CvgOYMpL.js +0 -153
  128. package/out/renderer/assets/octave-DYBj3-tl.js +0 -200
  129. package/out/renderer/assets/oz-R_e8WMIi.js +0 -231
  130. package/out/renderer/assets/pascal-GD8iposT.js +0 -105
  131. package/out/renderer/assets/perl-DL9mHpoi.js +0 -1105
  132. package/out/renderer/assets/pig-C_4T4YIV.js +0 -101
  133. package/out/renderer/assets/powershell-B0suO7Vd.js +0 -328
  134. package/out/renderer/assets/properties-BR-vP1aU.js +0 -58
  135. package/out/renderer/assets/protobuf-BxgpyhoW.js +0 -77
  136. package/out/renderer/assets/pug-CTXt1f8z.js +0 -405
  137. package/out/renderer/assets/puppet-Bdao66PW.js +0 -137
  138. package/out/renderer/assets/python-CvWbmiX4.js +0 -427
  139. package/out/renderer/assets/q-CrbCVq4a.js +0 -131
  140. package/out/renderer/assets/r-V7nswm59.js +0 -170
  141. package/out/renderer/assets/rpm-C-DLY-If.js +0 -109
  142. package/out/renderer/assets/ruby-JDKLJNK0.js +0 -330
  143. package/out/renderer/assets/sas-D2UG-yhZ.js +0 -207
  144. package/out/renderer/assets/scheme-BKzrkGJD.js +0 -222
  145. package/out/renderer/assets/shell-BlsXDxCn.js +0 -222
  146. package/out/renderer/assets/sieve-CjwBwOY5.js +0 -135
  147. package/out/renderer/assets/simple-mode-DMneyfDu.js +0 -130
  148. package/out/renderer/assets/smalltalk-BOIGQuhN.js +0 -121
  149. package/out/renderer/assets/solr-CwD7U71z.js +0 -69
  150. package/out/renderer/assets/sparql-DYskk2vE.js +0 -249
  151. package/out/renderer/assets/spreadsheet-Bgtt3oLP.js +0 -87
  152. package/out/renderer/assets/sql-BSrOzCRI.js +0 -354
  153. package/out/renderer/assets/stex-B6LNC55o.js +0 -231
  154. package/out/renderer/assets/stylus-BkS-boTH.js +0 -565
  155. package/out/renderer/assets/swift-FRZi1uvB.js +0 -291
  156. package/out/renderer/assets/tcl-CUcaCdmq.js +0 -114
  157. package/out/renderer/assets/textile-BnFpjsrl.js +0 -414
  158. package/out/renderer/assets/tiddlywiki-CjprD-Qp.js +0 -218
  159. package/out/renderer/assets/tiki-DK9DOeWn.js +0 -268
  160. package/out/renderer/assets/toml-BOuWGMcf.js +0 -76
  161. package/out/renderer/assets/troff-E1bJ0PPL.js +0 -61
  162. package/out/renderer/assets/ttcn-cfg-Dc39-fIP.js +0 -133
  163. package/out/renderer/assets/ttcn-tKd4HLu4.js +0 -192
  164. package/out/renderer/assets/turtle-Dq7-1WAf.js +0 -124
  165. package/out/renderer/assets/vb-Dp90gtsv.js +0 -196
  166. package/out/renderer/assets/vbscript-CI6_mxxU.js +0 -479
  167. package/out/renderer/assets/velocity-BwIZK1TH.js +0 -149
  168. package/out/renderer/assets/verilog-DDCYnHN8.js +0 -430
  169. package/out/renderer/assets/vhdl-DCkMIyT9.js +0 -158
  170. package/out/renderer/assets/webidl-BTLTThCm.js +0 -204
  171. package/out/renderer/assets/xquery-BrBUuxMR.js +0 -525
  172. package/out/renderer/assets/yacas-b5lAVEIl.js +0 -130
  173. package/out/renderer/assets/z80-BZV19vqv.js +0 -93
  174. package/scripts/download-uv.mjs +0 -147
  175. /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
- };