@voicenter-team/voicenter-ui-plus 2.0.10 → 2.0.12

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 (208) hide show
  1. package/library/core/{clike-DaICHkS3.mjs → clike-CTYGlS6x.mjs} +7 -13
  2. package/library/core/clike-CTYGlS6x.mjs.br +0 -0
  3. package/library/core/clike-CTYGlS6x.mjs.gz +0 -0
  4. package/library/core/{css-c-jst79C.mjs → css-DkSyTW67.mjs} +4 -15
  5. package/library/core/css-DkSyTW67.mjs.br +0 -0
  6. package/library/core/css-DkSyTW67.mjs.gz +0 -0
  7. package/library/core/{dockerfile-D1TIj5jA.mjs → dockerfile-DEtqCkHn.mjs} +1 -1
  8. package/library/core/dockerfile-DEtqCkHn.mjs.br +0 -0
  9. package/library/core/dockerfile-DEtqCkHn.mjs.gz +0 -0
  10. package/library/core/{entry-LR10HxE9.mjs → entry-CMErlSCw.mjs} +10767 -9995
  11. package/library/core/entry-CMErlSCw.mjs.br +0 -0
  12. package/library/core/entry-CMErlSCw.mjs.gz +0 -0
  13. package/library/core/{factor-ne7PWKF0.mjs → factor-CxBhtrN5.mjs} +1 -1
  14. package/library/core/factor-CxBhtrN5.mjs.br +0 -0
  15. package/library/core/factor-CxBhtrN5.mjs.gz +0 -0
  16. package/library/core/{gas-d3KEcW3x.mjs → gas-0Aw8zDr5.mjs} +2 -3
  17. package/library/core/gas-0Aw8zDr5.mjs.br +0 -0
  18. package/library/core/gas-0Aw8zDr5.mjs.gz +0 -0
  19. package/library/core/{index-C0ljYJcE.mjs → index-BOpZ-QT3.mjs} +3 -3
  20. package/library/core/index-BOpZ-QT3.mjs.br +0 -0
  21. package/library/core/index-BOpZ-QT3.mjs.gz +0 -0
  22. package/library/core/{index-CILzzTha.mjs → index-BZ73mEvz.mjs} +1 -1
  23. package/library/core/index-BZ73mEvz.mjs.br +0 -0
  24. package/library/core/index-BZ73mEvz.mjs.gz +0 -0
  25. package/library/core/index-BZYZsdvW.mjs +307 -0
  26. package/library/core/index-BZYZsdvW.mjs.br +0 -0
  27. package/library/core/index-BZYZsdvW.mjs.gz +0 -0
  28. package/library/core/{index-BA8abdi2.mjs → index-Bol0A18-.mjs} +1 -1
  29. package/library/core/index-Bol0A18-.mjs.br +0 -0
  30. package/library/core/index-Bol0A18-.mjs.gz +0 -0
  31. package/library/core/{index-BJY90l9K.mjs → index-BzgPPKBc.mjs} +1 -1
  32. package/library/core/index-BzgPPKBc.mjs.br +0 -0
  33. package/library/core/index-BzgPPKBc.mjs.gz +0 -0
  34. package/library/core/{index-BwsMbgFM.mjs → index-C5NXq8_G.mjs} +1 -1
  35. package/library/core/index-C5NXq8_G.mjs.br +0 -0
  36. package/library/core/index-C5NXq8_G.mjs.gz +0 -0
  37. package/library/core/{index-CkyvhKsl.mjs → index-C7x-T1Iq.mjs} +1 -1
  38. package/library/core/index-C7x-T1Iq.mjs.br +0 -0
  39. package/library/core/index-C7x-T1Iq.mjs.gz +0 -0
  40. package/library/core/index-DO35X02z.mjs +328 -0
  41. package/library/core/index-DO35X02z.mjs.br +0 -0
  42. package/library/core/index-DO35X02z.mjs.gz +0 -0
  43. package/library/core/{index-DPXcVCmu.mjs → index-DappDgUH.mjs} +1 -1
  44. package/library/core/index-DappDgUH.mjs.br +0 -0
  45. package/library/core/index-DappDgUH.mjs.gz +0 -0
  46. package/library/core/{index-BWbyTPKj.mjs → index-DbwwziFY.mjs} +48 -23
  47. package/library/core/index-DbwwziFY.mjs.br +0 -0
  48. package/library/core/index-DbwwziFY.mjs.gz +0 -0
  49. package/library/core/{index-DfwsN9ON.mjs → index-Df4jbl9R.mjs} +1 -1
  50. package/library/core/index-Df4jbl9R.mjs.br +0 -0
  51. package/library/core/index-Df4jbl9R.mjs.gz +0 -0
  52. package/library/core/{index-CydJw8NR.mjs → index-Df8e64Kc.mjs} +1 -1
  53. package/library/core/index-Df8e64Kc.mjs.br +0 -0
  54. package/library/core/index-Df8e64Kc.mjs.gz +0 -0
  55. package/library/core/index-Du6O_L2u.mjs +287 -0
  56. package/library/core/index-Du6O_L2u.mjs.br +0 -0
  57. package/library/core/index-Du6O_L2u.mjs.gz +0 -0
  58. package/library/core/index-MZYTfKgp.mjs +325 -0
  59. package/library/core/index-MZYTfKgp.mjs.br +0 -0
  60. package/library/core/index-MZYTfKgp.mjs.gz +0 -0
  61. package/library/core/index-accBWmVe.mjs +156 -0
  62. package/library/core/index-accBWmVe.mjs.br +0 -0
  63. package/library/core/index-accBWmVe.mjs.gz +0 -0
  64. package/library/core/{index-C1QKFrvZ.mjs → index-wLsWU3ZT.mjs} +1 -1
  65. package/library/core/index-wLsWU3ZT.mjs.br +0 -0
  66. package/library/core/index-wLsWU3ZT.mjs.gz +0 -0
  67. package/library/core/index.mjs +154 -154
  68. package/library/core/index.mjs.br +0 -0
  69. package/library/core/index.mjs.gz +0 -0
  70. package/library/core/index.umd.js +7 -17
  71. package/library/core/index.umd.js.br +0 -0
  72. package/library/core/index.umd.js.gz +0 -0
  73. package/library/core/{javascript-C3MnDRiU.mjs → javascript-CJze3-DU.mjs} +3 -5
  74. package/library/core/javascript-CJze3-DU.mjs.br +0 -0
  75. package/library/core/javascript-CJze3-DU.mjs.gz +0 -0
  76. package/library/core/{nsis-BnYeX9pP.mjs → nsis-mZ2GYujm.mjs} +1 -1
  77. package/library/core/nsis-mZ2GYujm.mjs.br +0 -0
  78. package/library/core/nsis-mZ2GYujm.mjs.gz +0 -0
  79. package/library/core/{pug-DGCLwxp4.mjs → pug-CEXQMbca.mjs} +1 -1
  80. package/library/core/pug-CEXQMbca.mjs.br +0 -0
  81. package/library/core/pug-CEXQMbca.mjs.gz +0 -0
  82. package/library/core/{python-CvWbmiX4.mjs → python-BFGRmuZ9.mjs} +2 -3
  83. package/library/core/python-BFGRmuZ9.mjs.br +0 -0
  84. package/library/core/python-BFGRmuZ9.mjs.gz +0 -0
  85. package/library/core/{q-819KmTeu.mjs → q-CrbCVq4a.mjs} +4 -1
  86. package/library/core/q-CrbCVq4a.mjs.br +0 -0
  87. package/library/core/q-CrbCVq4a.mjs.gz +0 -0
  88. package/library/core/{simple-mode-zrLq6ojR.mjs → simple-mode-DMneyfDu.mjs} +1 -0
  89. package/library/core/simple-mode-DMneyfDu.mjs.br +0 -0
  90. package/library/core/simple-mode-DMneyfDu.mjs.gz +0 -0
  91. package/library/core/{sql-BSrOzCRI.mjs → sql-Cei9CMfk.mjs} +13 -25
  92. package/library/core/sql-Cei9CMfk.mjs.br +0 -0
  93. package/library/core/sql-Cei9CMfk.mjs.gz +0 -0
  94. package/library/core/{stex-B6LNC55o.mjs → stex-C1nZSzAw.mjs} +2 -3
  95. package/library/core/stex-C1nZSzAw.mjs.br +0 -0
  96. package/library/core/stex-C1nZSzAw.mjs.gz +0 -0
  97. package/library/core/style.css +1 -1
  98. package/library/core/style.css.br +0 -0
  99. package/library/core/style.css.gz +0 -0
  100. package/library/core/{toml-CrLTxh7K.mjs → toml-BOuWGMcf.mjs} +8 -7
  101. package/library/core/toml-BOuWGMcf.mjs.br +4 -0
  102. package/library/core/toml-BOuWGMcf.mjs.gz +0 -0
  103. package/library/core/types/components/VcButton/VcToggleButton.vue.d.ts +1 -1
  104. package/library/core/types/components/VcDatePicker/VcDatePicker.vue.d.ts +6 -6
  105. package/library/core/types/components/VcDropdown/VcDropdown.vue.d.ts +1 -1
  106. package/library/core/types/components/VcInputNumber/VcInputNumber.vue.d.ts +1 -1
  107. package/library/core/types/components/VcJsonSchema/Components/JsonSchemaEditor.vue.d.ts +1 -1
  108. package/library/core/types/components/VcMeterGroup/VcMeterGroup.vue.d.ts +1 -1
  109. package/library/core/types/components/VcOtpInput/VcOtpInput.vue.d.ts +1 -1
  110. package/library/core/types/components/VcPopover/VcSelectPopover.vue.d.ts +9 -9
  111. package/library/core/types/components/VcProgress/VcProgressCircular.vue.d.ts +2 -2
  112. package/library/core/types/components/VcRadioTabs/VcRadioTabs.vue.d.ts +92 -0
  113. package/library/core/types/components/VcSegmented/VcSegmented.vue.d.ts +6 -6
  114. package/library/core/types/components/VcSelect/VcInfiniteScrollSelect.vue.d.ts +6 -6
  115. package/library/core/types/components/VcSoundplayer/VcSoundPlayerWrapper.vue.d.ts +4 -0
  116. package/library/core/types/components/VcSparkline/VcBarLine.vue.d.ts +1 -1
  117. package/library/core/types/components/VcSparkline/VcSparkline.vue.d.ts +1 -1
  118. package/library/core/types/components/VcSparkline/VcTrendLine.vue.d.ts +1 -1
  119. package/library/core/types/components/VcSwitch/VcSwitch.vue.d.ts +9 -9
  120. package/library/core/types/components/VcTable/VcTable.vue.d.ts +9 -9
  121. package/library/core/types/components/VcTree/VcTree.vue.d.ts +9 -9
  122. package/library/core/types/components/VcTree/VcTreeSelect.vue.d.ts +3 -3
  123. package/library/core/types/directives/index.d.ts +1 -1
  124. package/library/core/types/theme/themes.json.d.ts +1 -1
  125. package/library/core/{vbscript-CI6_mxxU.mjs → vbscript-Bfn8O8I7.mjs} +2 -3
  126. package/library/core/vbscript-Bfn8O8I7.mjs.br +0 -0
  127. package/library/core/vbscript-Bfn8O8I7.mjs.gz +0 -0
  128. package/library/core/{verilog-DDCYnHN8.mjs → verilog-CnT9bMk0.mjs} +1 -2
  129. package/library/core/verilog-CnT9bMk0.mjs.br +0 -0
  130. package/library/core/verilog-CnT9bMk0.mjs.gz +0 -0
  131. package/library/core/{z80-BZV19vqv.mjs → z80-ClgwfNdB.mjs} +4 -5
  132. package/library/core/z80-ClgwfNdB.mjs.br +0 -0
  133. package/library/core/z80-ClgwfNdB.mjs.gz +0 -0
  134. package/package.json +1 -1
  135. package/src/core/theme/themes.json +1 -1
  136. package/library/core/clike-DaICHkS3.mjs.br +0 -0
  137. package/library/core/clike-DaICHkS3.mjs.gz +0 -0
  138. package/library/core/css-c-jst79C.mjs.br +0 -0
  139. package/library/core/css-c-jst79C.mjs.gz +0 -0
  140. package/library/core/dockerfile-D1TIj5jA.mjs.br +0 -0
  141. package/library/core/dockerfile-D1TIj5jA.mjs.gz +0 -0
  142. package/library/core/entry-LR10HxE9.mjs.br +0 -0
  143. package/library/core/entry-LR10HxE9.mjs.gz +0 -0
  144. package/library/core/factor-ne7PWKF0.mjs.br +0 -0
  145. package/library/core/factor-ne7PWKF0.mjs.gz +0 -0
  146. package/library/core/gas-d3KEcW3x.mjs.br +0 -0
  147. package/library/core/gas-d3KEcW3x.mjs.gz +0 -0
  148. package/library/core/index-9IanTzTm.mjs +0 -300
  149. package/library/core/index-9IanTzTm.mjs.br +0 -0
  150. package/library/core/index-9IanTzTm.mjs.gz +0 -0
  151. package/library/core/index-BA8abdi2.mjs.br +0 -0
  152. package/library/core/index-BA8abdi2.mjs.gz +0 -0
  153. package/library/core/index-BJY90l9K.mjs.br +0 -0
  154. package/library/core/index-BJY90l9K.mjs.gz +0 -0
  155. package/library/core/index-BWbyTPKj.mjs.br +0 -0
  156. package/library/core/index-BWbyTPKj.mjs.gz +0 -0
  157. package/library/core/index-Bdc1C92P.mjs +0 -322
  158. package/library/core/index-Bdc1C92P.mjs.br +0 -0
  159. package/library/core/index-Bdc1C92P.mjs.gz +0 -0
  160. package/library/core/index-BwsMbgFM.mjs.br +0 -0
  161. package/library/core/index-BwsMbgFM.mjs.gz +0 -0
  162. package/library/core/index-C0ljYJcE.mjs.br +0 -0
  163. package/library/core/index-C0ljYJcE.mjs.gz +0 -0
  164. package/library/core/index-C1QKFrvZ.mjs.br +0 -0
  165. package/library/core/index-C1QKFrvZ.mjs.gz +0 -0
  166. package/library/core/index-CILzzTha.mjs.br +0 -0
  167. package/library/core/index-CILzzTha.mjs.gz +0 -0
  168. package/library/core/index-CU6v6rFv.mjs +0 -156
  169. package/library/core/index-CU6v6rFv.mjs.br +0 -0
  170. package/library/core/index-CU6v6rFv.mjs.gz +0 -0
  171. package/library/core/index-CkyvhKsl.mjs.br +0 -0
  172. package/library/core/index-CkyvhKsl.mjs.gz +0 -0
  173. package/library/core/index-Cvn_Ekcu.mjs +0 -327
  174. package/library/core/index-Cvn_Ekcu.mjs.br +0 -0
  175. package/library/core/index-Cvn_Ekcu.mjs.gz +0 -0
  176. package/library/core/index-CydJw8NR.mjs.br +0 -0
  177. package/library/core/index-CydJw8NR.mjs.gz +0 -0
  178. package/library/core/index-DPXcVCmu.mjs.br +0 -0
  179. package/library/core/index-DPXcVCmu.mjs.gz +0 -0
  180. package/library/core/index-DfwsN9ON.mjs.br +0 -0
  181. package/library/core/index-DfwsN9ON.mjs.gz +0 -0
  182. package/library/core/javascript-C3MnDRiU.mjs.br +0 -0
  183. package/library/core/javascript-C3MnDRiU.mjs.gz +0 -0
  184. package/library/core/jinja2-2Vo2sGef.mjs +0 -208
  185. package/library/core/jinja2-2Vo2sGef.mjs.br +0 -0
  186. package/library/core/jinja2-2Vo2sGef.mjs.gz +0 -0
  187. package/library/core/nsis-BnYeX9pP.mjs.br +0 -0
  188. package/library/core/nsis-BnYeX9pP.mjs.gz +0 -0
  189. package/library/core/pug-DGCLwxp4.mjs.br +0 -0
  190. package/library/core/pug-DGCLwxp4.mjs.gz +0 -0
  191. package/library/core/python-CvWbmiX4.mjs.br +0 -0
  192. package/library/core/python-CvWbmiX4.mjs.gz +0 -0
  193. package/library/core/q-819KmTeu.mjs.br +0 -0
  194. package/library/core/q-819KmTeu.mjs.gz +0 -0
  195. package/library/core/simple-mode-zrLq6ojR.mjs.br +0 -0
  196. package/library/core/simple-mode-zrLq6ojR.mjs.gz +0 -0
  197. package/library/core/sql-BSrOzCRI.mjs.br +0 -0
  198. package/library/core/sql-BSrOzCRI.mjs.gz +0 -0
  199. package/library/core/stex-B6LNC55o.mjs.br +0 -0
  200. package/library/core/stex-B6LNC55o.mjs.gz +0 -0
  201. package/library/core/toml-CrLTxh7K.mjs.br +0 -0
  202. package/library/core/toml-CrLTxh7K.mjs.gz +0 -0
  203. package/library/core/vbscript-CI6_mxxU.mjs.br +0 -0
  204. package/library/core/vbscript-CI6_mxxU.mjs.gz +0 -0
  205. package/library/core/verilog-DDCYnHN8.mjs.br +0 -0
  206. package/library/core/verilog-DDCYnHN8.mjs.gz +0 -0
  207. package/library/core/z80-BZV19vqv.mjs.br +0 -0
  208. package/library/core/z80-BZV19vqv.mjs.gz +0 -0
@@ -1,4 +1,4 @@
1
- import { L as LRLanguage, a as LRParser, b as LanguageSupport, i as indentNodeProp, f as foldNodeProp, s as styleTags, c as continuedIndent, t as tags, E as ExternalTokenizer, d as ifNotIn, e as completeFromList, g as syntaxTree } from "./entry-LR10HxE9.mjs";
1
+ import { L as LRLanguage, a as LanguageSupport, i as indentNodeProp, c as continuedIndent, f as foldNodeProp, s as styleTags, t as tags, E as ExternalTokenizer, b as ifNotIn, d as completeFromList, e as LRParser, g as syntaxTree } from "./entry-CMErlSCw.mjs";
2
2
  const whitespace = 36, LineComment = 1, BlockComment = 2, String$1 = 3, Number = 4, Bool = 5, Null = 6, ParenL = 7, ParenR = 8, BraceL = 9, BraceR = 10, BracketL = 11, BracketR = 12, Semi = 13, Dot = 14, Operator = 15, Punctuation = 16, SpecialVar = 17, Identifier = 18, QuotedIdentifier = 19, Keyword = 20, Type = 21, Bits = 22, Bytes = 23, Builtin = 24;
3
3
  function isAlpha(ch) {
4
4
  return ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || ch >= 48 && ch <= 57;
@@ -216,6 +216,10 @@ function tokensFor(d) {
216
216
  input.advance(2);
217
217
  readPLSQLQuotedLiteral(input, openDelim);
218
218
  input.acceptToken(String$1);
219
+ } else if (inString(next, d.identifierQuotes)) {
220
+ const endQuote = next == 91 ? 93 : next;
221
+ readLiteral(input, endQuote, false);
222
+ input.acceptToken(QuotedIdentifier);
219
223
  } else if (next == 40) {
220
224
  input.acceptToken(ParenL);
221
225
  } else if (next == 41) {
@@ -269,9 +273,6 @@ function tokensFor(d) {
269
273
  input.advance();
270
274
  readWordOrQuoted(input);
271
275
  input.acceptToken(SpecialVar);
272
- } else if (inString(next, d.identifierQuotes)) {
273
- readLiteral(input, next, false);
274
- input.acceptToken(QuotedIdentifier);
275
276
  } else if (next == 58 || next == 44) {
276
277
  input.acceptToken(Punctuation);
277
278
  } else if (isAlpha(next)) {
@@ -306,7 +307,7 @@ function tokenBefore(tree) {
306
307
  }
307
308
  function idName(doc, node) {
308
309
  let text = doc.sliceString(node.from, node.to);
309
- let quoted = /^([`'"])(.*)\1$/.exec(text);
310
+ let quoted = /^([`'"\[])(.*)([`'"\]])$/.exec(text);
310
311
  return quoted ? quoted[2] : text;
311
312
  }
312
313
  function plainID(node) {
@@ -381,12 +382,10 @@ function getAliases(doc, at) {
381
382
  }
382
383
  return aliases;
383
384
  }
384
- function maybeQuoteCompletions(quote, completions) {
385
- if (!quote)
386
- return completions;
387
- return completions.map((c) => Object.assign(Object.assign({}, c), { label: c.label[0] == quote ? c.label : quote + c.label + quote, apply: void 0 }));
385
+ function maybeQuoteCompletions(openingQuote, closingQuote, completions) {
386
+ return completions.map((c) => ({ ...c, label: c.label[0] == openingQuote ? c.label : openingQuote + c.label + closingQuote, apply: void 0 }));
388
387
  }
389
- const Span = /^\w*$/, QuotedSpan = /^[`'"]?\w*[`'"]?$/;
388
+ const Span = /^\w*$/, QuotedSpan = /^[`'"\[]?\w*[`'"\]]?$/;
390
389
  function isSelfTag(namespace) {
391
390
  return namespace.self && typeof namespace.self.label == "string";
392
391
  }
@@ -450,7 +449,10 @@ class CompletionLevel {
450
449
  function nameCompletion(label, type, idQuote, idCaseInsensitive) {
451
450
  if (new RegExp("^[a-z_][a-z_\\d]*$", idCaseInsensitive ? "i" : "").test(label))
452
451
  return { label, type };
453
- return { label, type, apply: idQuote + label + idQuote };
452
+ return { label, type, apply: idQuote + label + getClosingQuote(idQuote) };
453
+ }
454
+ function getClosingQuote(openingQuote) {
455
+ return openingQuote === "[" ? "]" : openingQuote;
454
456
  }
455
457
  function completeFromSchema(schema, tables, schemas, defaultTableName, defaultSchemaName, dialect2) {
456
458
  var _a;
@@ -487,16 +489,26 @@ function completeFromSchema(schema, tables, schemas, defaultTableName, defaultSc
487
489
  return null;
488
490
  level = next;
489
491
  }
490
- let quoteAfter = quoted && context.state.sliceDoc(context.pos, context.pos + 1) == quoted;
491
492
  let options = level.list;
492
493
  if (level == top && aliases)
493
494
  options = options.concat(Object.keys(aliases).map((name) => ({ label: name, type: "constant" })));
494
- return {
495
- from,
496
- to: quoteAfter ? context.pos + 1 : void 0,
497
- options: maybeQuoteCompletions(quoted, options),
498
- validFor: quoted ? QuotedSpan : Span
499
- };
495
+ if (quoted) {
496
+ let openingQuote = quoted[0];
497
+ let closingQuote = getClosingQuote(openingQuote);
498
+ let quoteAfter = context.state.sliceDoc(context.pos, context.pos + 1) == closingQuote;
499
+ return {
500
+ from,
501
+ to: quoteAfter ? context.pos + 1 : void 0,
502
+ options: maybeQuoteCompletions(openingQuote, closingQuote, options),
503
+ validFor: QuotedSpan
504
+ };
505
+ } else {
506
+ return {
507
+ from,
508
+ options,
509
+ validFor: Span
510
+ };
511
+ }
500
512
  };
501
513
  }
502
514
  function completionType(tokenType) {
@@ -504,7 +516,7 @@ function completionType(tokenType) {
504
516
  }
505
517
  function completeKeywords(keywords2, upperCase, build) {
506
518
  let completions = Object.keys(keywords2).map((keyword) => build(upperCase ? keyword.toUpperCase() : keyword, completionType(keywords2[keyword])));
507
- return ifNotIn(["QuotedIdentifier", "SpecialVar", "String", "LineComment", "BlockComment", "."], completeFromList(completions));
519
+ return ifNotIn(["QuotedIdentifier", "String", "LineComment", "BlockComment", "."], completeFromList(completions));
508
520
  }
509
521
  let parser = /* @__PURE__ */ parser$1.configure({
510
522
  props: [
@@ -555,6 +567,13 @@ class SQLDialect {
555
567
  return this.language.extension;
556
568
  }
557
569
  /**
570
+ Reconfigure the parser used by this dialect. Returns a new
571
+ dialect object.
572
+ */
573
+ configureLanguage(options, name) {
574
+ return new SQLDialect(this.dialect, this.language.configure(options, name), this.spec);
575
+ }
576
+ /**
558
577
  Define a new dialect.
559
578
  */
560
579
  static define(spec) {
@@ -633,12 +652,18 @@ const MariaSQL = /* @__PURE__ */ SQLDialect.define({
633
652
  types: MySQLTypes,
634
653
  builtin: MySQLBuiltin
635
654
  });
655
+ let MSSQLBuiltin = (
656
+ // Aggregate https://msdn.microsoft.com/en-us/library/ms173454.aspx
657
+ "approx_count_distinct approx_percentile_cont approx_percentile_disc avg checksum_agg count count_big grouping grouping_id max min product stdev stdevp sum var varp ai_generate_embeddings ai_generate_chunks cume_dist first_value lag last_value lead percentile_cont percentile_disc percent_rank left_shift right_shift bit_count get_bit set_bit collationproperty tertiary_weights @@datefirst @@dbts @@langid @@language @@lock_timeout @@max_connections @@max_precision @@nestlevel @@options @@remserver @@servername @@servicename @@spid @@textsize @@version cast convert parse try_cast try_convert try_parse asymkey_id asymkeyproperty certproperty cert_id crypt_gen_random decryptbyasymkey decryptbycert decryptbykey decryptbykeyautoasymkey decryptbykeyautocert decryptbypassphrase encryptbyasymkey encryptbycert encryptbykey encryptbypassphrase hashbytes is_objectsigned key_guid key_id key_name signbyasymkey signbycert symkeyproperty verifysignedbycert verifysignedbyasymkey @@cursor_rows @@fetch_status cursor_status datalength ident_current ident_incr ident_seed identity sql_variant_property @@datefirst current_timestamp current_timezone current_timezone_id date_bucket dateadd datediff datediff_big datefromparts datename datepart datetime2fromparts datetimefromparts datetimeoffsetfromparts datetrunc day eomonth getdate getutcdate isdate month smalldatetimefromparts switchoffset sysdatetime sysdatetimeoffset sysutcdatetime timefromparts todatetimeoffset year edit_distance edit_distance_similarity jaro_winkler_distance jaro_winkler_similarity edge_id_from_parts graph_id_from_edge_id graph_id_from_node_id node_id_from_parts object_id_from_edge_id object_id_from_node_id json isjson json_array json_contains json_modify json_object json_path_exists json_query json_value regexp_like regexp_replace regexp_substr regexp_instr regexp_count regexp_matches regexp_split_to_table abs acos asin atan atn2 ceiling cos cot degrees exp floor log log10 pi power radians rand round sign sin sqrt square tan choose greatest iif least @@procid app_name applock_mode applock_test assemblyproperty col_length col_name columnproperty databasepropertyex db_id db_name file_id file_idex file_name filegroup_id filegroup_name filegroupproperty fileproperty filepropertyex fulltextcatalogproperty fulltextserviceproperty index_col indexkey_property indexproperty next value for object_definition object_id object_name object_schema_name objectproperty objectpropertyex original_db_name parsename schema_id schema_name scope_identity serverproperty stats_date type_id type_name typeproperty dense_rank ntile rank row_number publishingservername certenclosed certprivatekey current_user database_principal_id has_dbaccess has_perms_by_name is_member is_rolemember is_srvrolemember loginproperty original_login permissions pwdencrypt pwdcompare session_user sessionproperty suser_id suser_name suser_sid suser_sname system_user user user_id user_name ascii char charindex concat concat_ws difference format left len lower ltrim nchar patindex quotename replace replicate reverse right rtrim soundex space str string_agg string_escape stuff substring translate trim unicode upper $partition @@error @@identity @@pack_received @@rowcount @@trancount binary_checksum checksum compress connectionproperty context_info current_request_id current_transaction_id decompress error_line error_message error_number error_procedure error_severity error_state formatmessage get_filestream_transaction_context getansinull host_id host_name isnull isnumeric min_active_rowversion newid newsequentialid rowcount_big session_context xact_state @@connections @@cpu_busy @@idle @@io_busy @@pack_sent @@packet_errors @@timeticks @@total_errors @@total_read @@total_write textptr textvalid columns_updated eventdata trigger_nestlevel vector_distance vectorproperty vector_search generate_series opendatasource openjson openquery openrowset openxml predict string_split coalesce nullif apply catch filter force include keep keepfixed modify optimize parameterization parameters partition recompile sequence set"
658
+ );
636
659
  const MSSQL = /* @__PURE__ */ SQLDialect.define({
637
- keywords: SQLKeywords + "trigger proc view index for add constraint key primary foreign collate clustered nonclustered declare exec go if use index holdlock nolock nowait paglock pivot readcommitted readcommittedlock readpast readuncommitted repeatableread rowlock serializable snapshot tablock tablockx unpivot updlock with",
638
- types: SQLTypes + "bigint smallint smallmoney tinyint money real text nvarchar ntext varbinary image hierarchyid uniqueidentifier sql_variant xml",
639
- builtin: "binary_checksum checksum connectionproperty context_info current_request_id error_line error_message error_number error_procedure error_severity error_state formatmessage get_filestream_transaction_context getansinull host_id host_name isnull isnumeric min_active_rowversion newid newsequentialid rowcount_big xact_state object_id",
660
+ keywords: SQLKeywords + // Reserved Keywords https://learn.microsoft.com/en-us/sql/t-sql/language-elements/reserved-keywords-transact-sql?view=sql-server-ver17
661
+ "add external procedure all fetch public alter file raiserror and fillfactor read any for readtext as foreign reconfigure asc freetext references authorization freetexttable replication backup from restore begin full restrict between function return break goto revert browse grant revoke bulk group right by having rollback cascade holdlock rowcount case identity rowguidcol check identity_insert rule checkpoint identitycol save close if schema clustered in securityaudit coalesce index select collate inner semantickeyphrasetable column insert semanticsimilaritydetailstable commit intersect semanticsimilaritytable compute into session_user constraint is set contains join setuser containstable key shutdown continue kill some convert left statistics create like system_user cross lineno table current load tablesample current_date merge textsize current_time national then current_timestamp nocheck to current_user nonclustered top cursor not tran database null transaction dbcc nullif trigger deallocate of truncate declare off try_convert default offsets tsequal delete on union deny open unique desc opendatasource unpivot disk openquery update distinct openrowset updatetext distributed openxml use double option user drop or values dump order varying else outer view end over waitfor errlvl percent when escape pivot where except plan while exec precision with execute primary within group exists print writetext exit proc noexpand index forceseek forcescan holdlock nolock nowait paglock readcommitted readcommittedlock readpast readuncommitted repeatableread rowlock serializable snapshot spatial_window_max_cells tablock tablockx updlock xlock keepidentity keepdefaults ignore_constraints ignore_triggers",
662
+ types: SQLTypes + "smalldatetime datetimeoffset datetime2 datetime bigint smallint smallmoney tinyint money real text nvarchar ntext varbinary image hierarchyid uniqueidentifier sql_variant xml",
663
+ builtin: MSSQLBuiltin,
640
664
  operatorChars: "*+-%<>!=^&|/",
641
- specialVar: "@"
665
+ specialVar: "@",
666
+ identifierQuotes: '"['
642
667
  });
643
668
  const SQLite = /* @__PURE__ */ SQLDialect.define({
644
669
  keywords: SQLKeywords + "abort analyze attach autoincrement conflict database detach exclusive fail glob ignore index indexed instead isnull notnull offset plan pragma query raise regexp reindex rename replace temp vacuum virtual",
@@ -1,4 +1,4 @@
1
- import { a as LRParser, E as ExternalTokenizer, s as styleTags, t as tags, L as LRLanguage, b as LanguageSupport, i as indentNodeProp, f as foldNodeProp, c as continuedIndent, k as foldInside } from "./entry-LR10HxE9.mjs";
1
+ import { e as LRParser, E as ExternalTokenizer, s as styleTags, t as tags, a as LanguageSupport, L as LRLanguage, i as indentNodeProp, c as continuedIndent, f as foldNodeProp, l as foldInside } from "./entry-CMErlSCw.mjs";
2
2
  const closureParamDelim = 1, tpOpen = 2, tpClose = 3, RawString = 4, Float = 5;
3
3
  const _b = 98, _e = 101, _f = 102, _r = 114, _E = 69, Zero = 48, Dot = 46, Plus = 43, Minus = 45, Hash = 35, Quote = 34, Pipe = 124, LessThan = 60, GreaterThan = 62;
4
4
  function isNum(ch) {
@@ -1,4 +1,4 @@
1
- import { L as LRLanguage, b as LanguageSupport, a as LRParser, i as indentNodeProp, f as foldNodeProp, s as styleTags, h as delimitedIndent, k as foldInside, t as tags } from "./entry-LR10HxE9.mjs";
1
+ import { a as LanguageSupport, L as LRLanguage, i as indentNodeProp, k as delimitedIndent, f as foldNodeProp, l as foldInside, s as styleTags, t as tags, e as LRParser } from "./entry-CMErlSCw.mjs";
2
2
  const spec_Keyword = { __proto__: null, anyref: 34, dataref: 34, eqref: 34, externref: 34, i31ref: 34, funcref: 34, i8: 34, i16: 34, i32: 34, i64: 34, f32: 34, f64: 34 };
3
3
  const parser = /* @__PURE__ */ LRParser.deserialize({
4
4
  version: 14,
@@ -0,0 +1,287 @@
1
+ import { n as EditorView, o as EditorSelection, a as LanguageSupport, p as html, q as parseMixed, g as syntaxTree, L as LRLanguage, s as styleTags, t as tags, i as indentNodeProp, k as delimitedIndent, f as foldNodeProp, e as LRParser, E as ExternalTokenizer, h as LocalTokenGroup } from "./entry-CMErlSCw.mjs";
2
+ const interpolationStart = 1, commentTagStart = 2, tagStart = 3, text = 155, endrawTagStart = 4, rawText = 156;
3
+ function wordChar(code) {
4
+ return code >= 65 && code <= 90 || code >= 97 && code <= 122;
5
+ }
6
+ const base = /* @__PURE__ */ new ExternalTokenizer((input) => {
7
+ let start = input.pos;
8
+ for (; ; ) {
9
+ let { next } = input;
10
+ if (next < 0)
11
+ break;
12
+ if (next == 123) {
13
+ let after = input.peek(1);
14
+ if (after == 123) {
15
+ if (input.pos > start)
16
+ break;
17
+ input.acceptToken(interpolationStart, 2);
18
+ return;
19
+ } else if (after == 35) {
20
+ if (input.pos > start)
21
+ break;
22
+ input.acceptToken(commentTagStart, 2);
23
+ return;
24
+ } else if (after == 37) {
25
+ if (input.pos > start)
26
+ break;
27
+ let scan = 2, size = 2;
28
+ for (; ; ) {
29
+ let next2 = input.peek(scan);
30
+ if (next2 == 32 || next2 == 10) {
31
+ ++scan;
32
+ } else if (next2 == 35) {
33
+ ++scan;
34
+ for (; ; ) {
35
+ let comment = input.peek(scan);
36
+ if (comment < 0 || comment == 10)
37
+ break;
38
+ scan++;
39
+ }
40
+ } else if (next2 == 45 && size == 2) {
41
+ size = ++scan;
42
+ } else {
43
+ input.acceptToken(tagStart, size);
44
+ return;
45
+ }
46
+ }
47
+ }
48
+ }
49
+ input.advance();
50
+ if (next == 10)
51
+ break;
52
+ }
53
+ if (input.pos > start)
54
+ input.acceptToken(text);
55
+ });
56
+ function rawTokenizer(endTag, text2, tagStart2) {
57
+ return new ExternalTokenizer((input) => {
58
+ let start = input.pos;
59
+ for (; ; ) {
60
+ let { next } = input;
61
+ if (next == 123 && input.peek(1) == 37) {
62
+ let scan = 2;
63
+ for (; ; scan++) {
64
+ let ch = input.peek(scan);
65
+ if (ch != 32 && ch != 10)
66
+ break;
67
+ }
68
+ let word = "";
69
+ for (; ; scan++) {
70
+ let next2 = input.peek(scan);
71
+ if (!wordChar(next2))
72
+ break;
73
+ word += String.fromCharCode(next2);
74
+ }
75
+ if (word == endTag) {
76
+ if (input.pos > start)
77
+ break;
78
+ input.acceptToken(tagStart2, 2);
79
+ break;
80
+ }
81
+ } else if (next < 0) {
82
+ break;
83
+ }
84
+ input.advance();
85
+ if (next == 10)
86
+ break;
87
+ }
88
+ if (input.pos > start)
89
+ input.acceptToken(text2);
90
+ });
91
+ }
92
+ const raw = /* @__PURE__ */ rawTokenizer("endraw", rawText, endrawTagStart);
93
+ const spec_identifier = { __proto__: null, in: 38, is: 40, and: 46, or: 48, not: 52, if: 78, else: 80, true: 98, false: 98, self: 100, super: 102, loop: 104, recursive: 136, scoped: 160, required: 162, as: 256, import: 260, ignore: 268, missing: 270, with: 272, without: 274, context: 276 };
94
+ const spec_TagName = { __proto__: null, if: 112, elif: 118, else: 122, endif: 126, for: 132, endfor: 140, raw: 146, endraw: 152, block: 158, endblock: 166, macro: 172, endmacro: 182, call: 188, endcall: 192, filter: 198, endfilter: 202, set: 208, endset: 212, trans: 218, pluralize: 222, endtrans: 226, with: 232, endwith: 236, autoescape: 242, endautoescape: 246, import: 254, from: 258, include: 266 };
95
+ const parser = /* @__PURE__ */ LRParser.deserialize({
96
+ version: 14,
97
+ states: "!*dQVOPOOOOOP'#F`'#F`OeOTO'#CbOvQSO'#CdO!kOPO'#DcO!yOPO'#DnO#XOQO'#DuO#^OPO'#D{O#lOPO'#ESO#zOPO'#E[O$YOPO'#EaO$hOPO'#EfO$vOPO'#EkO%UOPO'#ErO%dOPO'#EwOOOP'#F|'#F|O%rQWO'#E|O&sO#tO'#F]OOOP'#Fq'#FqOOOP'#F_'#F_QVOPOOOOOP-E9^-E9^OOQO'#Ce'#CeO'sQSO,59OO'zQSO'#DWO(RQSO'#DXO(YQ`O'#DZOOQO'#Fr'#FrOvQSO'#CuO(aOPO'#CbOOOP'#Fd'#FdO!kOPO,59}OOOP,59},59}O(oOPO,59}O(}QWO'#E|OOOP,5:Y,5:YO)[OPO,5:YO!yOPO,5:YO)jQWO'#E|OOOQ'#Ff'#FfO)tOQO'#DxO)|OQO,5:aOOOP,5:g,5:gO#^OPO,5:gO*RQWO'#E|OOOP,5:n,5:nO#lOPO,5:nO*YQWO'#E|OOOP,5:v,5:vO#zOPO,5:vO*aQWO'#E|OOOP,5:{,5:{O$YOPO,5:{O*hQWO'#E|OOOP,5;Q,5;QO$hOPO,5;QO*oQWO'#E|OOOP,5;V,5;VO*vOPO,5;VO$vOPO,5;VO+UQWO'#E|OOOP,5;^,5;^O%UOPO,5;^O+`QWO'#E|OOOP,5;c,5;cO%dOPO,5;cO+gQWO'#E|O+nQSO,5;hOvQSO,5:OO+uQSO,5:ZO+zQSO,5:bO+uQSO,5:hO+uQSO,5:oO,PQSO,5:wO,XQpO,5:|O+uQSO,5;RO,^QSO,5;WO,fQSO,5;_OvQSO,5;dOvQSO,5;jOvQSO,5;jOvQSO,5;pOOOO'#Fk'#FkO,nO#tO,5;wOOOP-E9]-E9]O,vQ!bO,59QOvQSO,59TOvQSO,59UOvQSO,59UOvQSO,59UOvQSO,59UO,{QSO'#C}O,XQpO,59cOOQO,59q,59qOOOP1G.j1G.jOvQSO,59UO-SQSO,59UOvQSO,59UOvQSO,59UOvQSO,59nO-wQSO'#FxO.RQSO,59rO.WQSO,59tOOQO,59s,59sO.bQSO'#D[O.iQWO'#F{O.qQWO,59uO0WQSO,59aOOOP-E9b-E9bOOOP1G/i1G/iO(oOPO1G/iO(oOPO1G/iO)TQWO'#E|OvQSO,5:SO0nQSO,5:UO0sQSO,5:WOOOP1G/t1G/tO)[OPO1G/tO)mQWO'#E|O)[OPO1G/tO0xQSO,5:_OOOQ-E9d-E9dOOOP1G/{1G/{O0}QWO'#DyOOOP1G0R1G0RO1SQSO,5:lOOOP1G0Y1G0YO1[QSO,5:tOOOP1G0b1G0bO1aQSO,5:yOOOP1G0g1G0gO1fQSO,5;OOOOP1G0l1G0lO1kQSO,5;TOOOP1G0q1G0qO*vOPO1G0qO+XQWO'#E|O*vOPO1G0qOvQSO,5;YO1pQSO,5;[OOOP1G0x1G0xO1uQSO,5;aOOOP1G0}1G0}O1zQSO,5;fO2PQSO1G1SOOOP1G1S1G1SO2WQSO1G/jOOQO'#Dq'#DqO2_QSO1G/uOOOQ1G/|1G/|O2gQSO1G0SO2rQSO1G0ZO2zQSO'#EVO3SQSO1G0cO,SQSO1G0cO4fQSO'#FvOOQO'#Fv'#FvO5]QSO1G0hO5bQSO1G0mOOOP1G0r1G0rO5mQSO1G0rO5rQSO'#GOO5zQSO1G0yO6PQSO1G1OO6WQSO1G1UO6_QSO1G1UO6fQSO1G1[OOOO-E9i-E9iOOOP1G1c1G1cOOQO1G.l1G.lO6vQSO1G.oO8wQSO1G.pO:oQSO1G.pO:vQSO1G.pO<nQSO1G.pO<uQSO'#FwO>QQSO'#FrO>XQSO'#FwO>aQSO,59iOOQO1G.}1G.}O>fQSO1G.pO@aQSO1G.pOB_QSO1G.pOBfQSO1G.pOD^QSO1G/YOvQSO'#FbODeQSO,5<dOOQO1G/^1G/^ODmQSO1G/_OOQO1G/`1G/`ODuQSO,59vOvQSO'#FcOEjQWO,5<gOOQO1G/a1G/aPErQWO'#E|OOOP7+%T7+%TO(oOPO7+%TOEyQSO1G/nOOOP1G/p1G/pOOOP1G/r1G/rOOOP7+%`7+%`O)[OPO7+%`OOOP1G/y1G/yOFQQSO,5:eOOOP1G0W1G0WOFVQSO1G0WOOOP1G0`1G0`OOOP1G0e1G0eOOOP1G0j1G0jOOOP1G0o1G0oOOOP7+&]7+&]O*vOPO7+&]OF[QSO1G0tOOOP1G0v1G0vOOOP1G0{1G0{OOOP1G1Q1G1QOOOP7+&n7+&nOOOP7+%U7+%UO+uQSO'#FeOFcQSO7+%aOvQSO7+%aOOOP7+%n7+%nOFkQSO7+%nOFpQSO7+%nOOOP7+%u7+%uOFxQSO7+%uOF}QSO'#F}OGQQSO'#F}OGYQSO,5:qOOOP7+%}7+%}OG_QSO7+%}OGdQSO7+%}OOQO,59f,59fOOOP7+&S7+&SOGlQSO7+&oOOOP7+&X7+&XOvQSO7+&oOvQSO7+&^OGtQSO,5<jOvQSO,5<jOOOP7+&e7+&eOOOP7+&j7+&jO+uQSO7+&pOG|QSO7+&pOOOP7+&v7+&vOHRQSO7+&vOHWQSO7+&vOOQO7+$Z7+$ZOvQSO'#FaOH]QSO,5<cOvQSO,59jOOQO1G/T1G/TOOQO7+$[7+$[OvQSO7+$tOHeQSO,5;|OOQO-E9`-E9`OOQO7+$y7+$yOImQ`O1G/bOIwQSO'#D^OOQO,5;},5;}OOQO-E9a-E9aOOOP<<Ho<<HoOOOP7+%Y7+%YOOOP<<Hz<<HzOOOP1G0P1G0POOOP7+%r7+%rOOOP<<Iw<<IwOOOP7+&`7+&`OOQO,5<P,5<POOQO-E9c-E9cOvQSO<<H{OJOQSO<<H{OOOP<<IY<<IYOJYQSO<<IYOOOP<<Ia<<IaOvQSO,5:rO+uQSO'#FgOJ_QSO,5<iOOQO1G0]1G0]OOOP<<Ii<<IiOJgQSO<<IiOvQSO<<JZOJlQSO<<JZOJsQSO<<IxOvQSO1G2UOJ}QSO1G2UOKXQSO<<J[OK^QSO'#CeOOQO'#FT'#FTOKiQSO'#FTOKnQSO<<J[OKvQSO<<JbOK{QSO<<JbOLWQSO,5;{OLbQSO'#FrOOQO,5;{,5;{OOQO-E9_-E9_OLiQSO1G/UOM}QSO<<H`O! ]Q`O,59aODuQSO,59xO! sQSOAN>gOOOPAN>gAN>gO! }QSOAN>gOOOPAN>tAN>tO!!SQSO1G0^O!!^QSO,5<ROOQO,5<R,5<ROOQO-E9e-E9eOOOPAN?TAN?TO!!iQSOAN?uOOOPAN?uAN?uO+uQSO'#FhO!!pQSOAN?dOOOPAN?dAN?dO!!xQSO7+'pO+uQSO'#FiO!#SQSO7+'pOOOPAN?vAN?vO+uQSO,5;oOG|QSO'#FjO!#[QSOAN?vOOOPAN?|AN?|O!#dQSOAN?|OvQSO,59mO!$sQ`O1G.pO!%{Q`O1G.pO!&SQ`O1G.pO!'[Q`O1G.pO!'cQ`O'#FvO!'jQ`O1G.pO!(uQ`O1G.pO!*TQ`O1G.pO!*[Q`O1G.pO!+dQ`O1G/YO!+kQ`O1G/dOOOPG24RG24RO!+uQSOG24ROvQSO,5:sOOOPG25aG25aO!+zQSO,5<SOOQO-E9f-E9fOOOPG25OG25OO!,PQSO<<K[O!,XQSO,5<TOOQO-E9g-E9gOOQO1G1Z1G1ZOOQO,5<U,5<UOOQO-E9h-E9hOOOPG25bG25bO!,aQSOG25hO!,fQSO1G/XOOOPLD)mLD)mO!,pQSO1G0_OvQSO1G1nO!,zQSO1G1oOvQSO1G1oOOOPLD+SLD+SO!-wQ`O<<H`O!.[QSO7+'YOvQSO7+'ZO!.fQSO7+'ZO!.pQSO<<JuODuQSO'#CuODuQSO,59UODuQSO,59UODuQSO,59UODuQSO,59UO!.zQpO,59cODuQSO,59UO!/PQSO,59UODuQSO,59UODuQSO,59UODuQSO,59nO!/tQSO1G.pP!0RQSO1G/YODuQSO7+$tO!0YQ`O1G.pP!0gQ`O1G/YO-SQSO,59UPvQSO,59nO!0nQSO,59aP!3XQSO1G.pP!3`QSO1G.pP!5aQSO1G/YP!5hQSO<<H`O!/PQSO,59UPDuQSO,59nP!6_QSO1G/YP!7pQ`O1G/YO-SQSO'#CuO-SQSO,59UO-SQSO,59UO-SQSO,59UO-SQSO,59UO-SQSO,59UP-SQSO,59UP-SQSO,59UP-SQSO,59nO!7wQSO1G.pO!9xQSO1G.pO!:PQSO1G.pO!;UQSO1G.pP-SQSO7+$tO!<XQ`O,59aP!>SQ`O1G.pP!>ZQ`O1G.pP!>bQ`O1G/YP!?QQ`O<<H`O!/PQSO'#CuO!/PQSO,59UO!/PQSO,59UO!/PQSO,59UO!/PQSO,59UO!/PQSO,59UP!/PQSO,59UP!/PQSO,59UP!/PQSO,59nP!/PQSO7+$tP-SQSO,59nP!/PQSO,59nO!?zQ`O1G.pO!@RQ`O1G.pO!@fQ`O1G.pO!@yQ`O1G.p",
98
+ stateData: "!Ac~O$dOS~OPROQaOR`O$aPO~O$aPOPUXQUXRUX$`UX~OekOfkOjlOpiO!RkO!SkO!TkO!UkO$gfO$ihO$njO~OPROQaORrO$aPO~OPROQaORvO$aPO~O$bwO~OPROQaOR|O$aPO~OPROQaOR!PO$aPO~OPROQaOR!SO$aPO~OPROQaOR!VO$aPO~OPROQaOR!YO$aPO~OPROQaOR!^O$aPO~OPROQaOR!aO$aPO~OPROQaOR!dO$aPO~O!X!eO!Y!fO!d!gO!k!hO!q!iO!x!jO#Q!kO#V!lO#[!mO#a!nO#h!oO#m!pO#s!qO#u!rO#y!sO~O$s!tO~OZ!wO_!yO`!zOa!{Ob!|Oc#ROd#SOg#TOh#UOl#OOp!}Ow#VO$i!xO~OV#QO~P&xO$h$lP~PvOo#ZO~PvO$m$oP~PvO$aPOPUXQUXRUX~OPROQaOR#dO$aPO~O!]#eO!_#fO!a#gO~P%rOPROQaOR#jO$aPO~O!_#fO!h#lO~P%rO$bwOS!lX~OS#oO~O!u#qO~P%rO!}#sO~P%rO#S#uO~P%rO#X#wO~P%rO#^#yO~P%rOPROQaOR#|O$aPO~O#c$OO#e$PO~P%rO#j$RO~P%rO#o$TO~P%rO!Z$VO~PvO$g$XO~O!Z$ZO~Op$^O$gfO~Om$aO~O!Z$eO$g$XO~O$g$XO!Z$rP~O$Q$nO$s!tO~O[$oO~Oo$kP~PvOekOfkOj)fOpiO!RkO!SkO!TkO!UkO$gfO$ihO$njO~Ot%PO$h$lX~P&xO$h%RO~Oo%TOt%PO~P&xO!P%UO~P&xOt%VO$m$oX~O$m%XO~OZ!wOp!}O$i!xOViagiahialiawiatia$hiaoia!Pia!Zia#tia#via#zia#|ia#}iaxia!fia~O_!yO`!zOa!{Ob!|Oc#ROd#SO~P.vO!Z%^O~O!Z%_O~O!Z%bO~O!n%cO~O!Z%dO$g$XO~O!Z%fO~O!Z%gO~O!Z%hO~O!Z%iO~O!Z%mO~O!Z%nO~O!Z%oO~O!Z%pO~P&xO!Z%qO~P&xOc%tOt%rO~O!Z%uO!r%wO!s%vO~Op$^O!Z%xO~O$g$XOo$qP~Op!}O!Z%}O~Op!}OZ$jX_$jX`$jXa$jXb$jXc$jXd$jXg$jXh$jXl$jXw$jX$i$jXt$jXe$jXf$jX$g$jXx$jX~O!Z$jXV$jX$h$jXo$jX!P$jX#t$jX#v$jX#z$jX#|$jX#}$jX!f$jX~P3[O!Z&RO~Os&UOt%rO!Z&TO~Os&VO~Os&XOt%rO~O!Z&YO~O!Z&ZO~P&xO#t&[O~P&xO#v&]O~P&xO!Z&^O#z&`O#|&_O#}&_O~P&xO$h&aO~P&xOZ!wOp!}O$i!xOV^i`^ia^ib^ic^id^ig^ih^il^iw^it^i$h^io^i!P^i!Z^i#t^i#v^i#z^i#|^i#}^ie^if^i$g^ix^i!f^i~O_^i~P6}OZ!wO_!yOp!}O$i!xOV^ia^ib^ic^id^ig^ih^il^iw^it^i$h^io^i!P^i!Z^i#t^i#v^i#z^i#|^i#}^ix^i!f^i~O`^i~P9OO`!zO~P9OOZ!wO_!yO`!zOa!{Op!}O$i!xOV^ic^id^ig^ih^il^iw^it^i$h^io^i!P^i!Z^i#t^i#v^i#z^i#|^i#}^ix^i!f^i~Ob^i~P:}Ot&bOo$kX~P&xOZ$fX_$fX`$fXa$fXb$fXc$fXd$fXg$fXh$fXl$fXo$fXp$fXt$fXw$fX$i$fX~Os&dO~P=POt&bOo$kX~Oo&eO~Ob!|O~P:}OZ!wO_)gO`)hOa)iOb)jOc)kOp!}O$i!xOV^id^ig^ih^il^iw^it^i$h^io^i!P^i!Z^i#t^i#v^i#z^i#|^i#}^ix^i!f^i~Oe&fOf&fO$gfO~P>mOZ!wO_!yO`!zOa!{Ob!|Oc#ROd#SOp!}O$i!xOV^ih^il^iw^it^i$h^io^i!P^i!Z^i#t^i#v^i#z^i#|^i#}^ix^i!f^i~Og^i~P@nOg#TO~P@nOZ!wO_!yO`!zOa!{Ob!|Oc#ROd#SOg#TOh#UOp!}O$i!xOVvilviwvitvi$hviovi!Pvi!Zvi#tvi#vvi#zvi#|vi#}vi!fvi~Ox&gO~PBmOt%PO$h$la~Oo&jOt%PO~OekOfkOj(yOpiO!RkO!SkO!TkO!UkO$gfO$ihO$njO~Ot%VO$m$oa~O!]#eO~P%rO!Z&pO~P&xO!Z&rO~O!Z&sO~O!Z&uO~P&xOc&xOt%rO~O!Z&zO~O!Z&zO!s&{O~O!Z&|O~Os&}Ot'OOo$qX~Oo'QO~O!Z'RO~Op!}O!Z'RO~Os'TOt%rO~Os'WOt%rO~O$g'ZO~O$O'_O~O#{'`O~Ot&bOo$ka~Ot$Ua$h$Uao$Ua~P&xOZ!wO_(zO`({Oa(|Ob(}Oc)POd)QOg)ROh)SOl)OOp!}Ow)TO$i!xO~Ot!Oi$m!Oi~PHrO!P'hO~P&xO!Z'jO!f'kO~P&xO!Z'lO~Ot'OOo$qa~O!Z'qO~O!Z'sO~P&xOt'tO!Z'vO~P&xOt'xO!Z$ri~P&xO!Z'zO~Ot!eX!Z!eX#tXX~O#t'{O~Ot'|O!Z'zO~O!Z(OO~O!Z(OO#|(PO#}(PO~Oo$Tat$Ta~P&xOs(QO~P=POoritri~P&xOZ!wOp!}O$i!xOVvylvywvytvy$hvyovy!Pvy!Zvy#tvy#vvy#zvy#|vy#}vyxvy!fvy~O_!yO`!zOa!{Ob!|Oc#ROd#SOg#TOh#UO~PLsOZ!wOp!}O$i!xOgiahialiatiawia$miaxia~O_(zO`({Oa(|Ob(}Oc)POd)QO~PNkO!Z(^O!f(_O~P&xO!Z(^O~Oo!zit!zi~P&xOs(`Oo$Zat$Za~O!Z(aO~P&xOt'tO!Z(dO~Ot'xO!Z$rq~P&xOt'xO!Z$rq~Ot'|O!Z(kO~O$O(lO~OZ!wOp!}O$i!xO`^ia^ib^ic^id^ig^ih^il^it^iw^i$m^ie^if^i$g^ix^i~O_^i~P!#iOZ!wO_(zOp!}O$i!xOa^ib^ic^id^ig^ih^il^it^iw^i$m^ix^i~O`^i~P!$zO`({O~P!$zOZ!wO_(zO`({Oa(|Op!}O$i!xOc^id^ig^ih^il^it^iw^i$m^ix^i~Ob^i~P!&ZO$m$jX~P3[Ob(}O~P!&ZOZ!wO_)zO`){Oa)|Ob)}Oc*OOp!}O$i!xOd^ig^ih^il^it^iw^i$m^ix^i~Oe&fOf&fO$gfO~P!'qOZ!wO_(zO`({Oa(|Ob(}Oc)POd)QOp!}O$i!xOh^il^it^iw^i$m^ix^i~Og^i~P!)SOg)RO~P!)SOZ!wO_(zO`({Oa(|Ob(}Oc)POd)QOg)ROh)SOp!}O$i!xOlvitviwvi$mvi~Ox)WO~P!*cOt!Qi$m!Qi~PHrO!Z(nO~Os(pO~Ot'xO!Z$ry~Os(rOt%rO~O!Z(sO~Oouitui~P&xOo!{it!{i~P&xOs(vOt%rO~OZ!wO_(zO`({Oa(|Ob(}Oc)POd)QOg)ROh)SOp!}O$i!xO~Olvytvywvy$mvyxvy~P!-SOt$[q!Z$[q~P&xOt$]q!Z$]q~P&xOt$]y!Z$]y~P&xOm(VO~OekOfkOj)yOpiO!RkO!SkO!TkO!UkO$gfO$ihO$njO~Oe^if^i$g^i~P>mOxvi~PBmOe^if^i$g^i~P!'qOxvi~P!*cO_)gO`)hOa)iOb)jOc)kOd)ZOeiafia$gia~P.vOZ!wO_)gO`)hOa)iOb)jOc)kOd)ZOp!}O$i!xOV^ie^if^ih^il^iw^i$g^it^i$h^io^i!P^i!Z^i#t^i#v^i#z^i#|^i#}^ix^i!f^i~Og^i~P!1_Og)lO~P!1_OZ!wO_)gO`)hOa)iOb)jOc)kOd)ZOg)lOh)mOp!}O$i!xOVvievifvilviwvi$gvitvi$hviovi!Pvi!Zvi#tvi#vvi#zvi#|vi#}vi!fvi~Ox)sO~P!3gO_)gO`)hOa)iOb)jOc)kOd)ZOg)lOh)mOevyfvy$gvy~PLsOxvi~P!3gOZ!wO_)zO`){Oa)|Ob)}Oc*OOd)bOg*POh*QOp!}O$i!xOevifvilvitviwvi$gvi$mvi~Oxvi~P!6fO_)gO~P6}OZ!wO_)gO`)hOp!}O$i!xOV^ib^ic^id^ie^if^ig^ih^il^iw^i$g^it^i$h^io^i!P^i!Z^i#t^i#v^i#z^i#|^i#}^ix^i!f^i~Oa^i~P!8OOa)iO~P!8OOZ!wOp!}O$i!xOc^id^ie^if^ig^ih^il^iw^i$g^it^ix^i~O_)gO`)hOa)iOb)jOV^i$h^io^i!P^i!Z^i#t^i#v^i#z^i#|^i#}^i!f^i~P!:WO_)zO`){Oa)|Ob)}Oc*OOd)bOeiafia$gia~PNkOZ!wO_)zO`){Oa)|Ob)}Oc*OOd)bOp!}O$i!xOe^if^ih^il^it^iw^i$g^i$m^ix^i~Og^i~P!<xOg*PO~P!<xOx*SO~P!6fOZ!wO_)zO`){Oa)|Ob)}Op!}O$i!xO~Oc*OOd)bOg*POh*QOevyfvylvytvywvy$gvy$mvyxvy~P!>iO_)zO~P!#iO_)zO`){Oa^ib^i$m^i~P!:WO_)zO`){Oa)|Ob^i$m^i~P!:WO_)zO`){Oa)|Ob)}O$m^i~P!:WOfaZa~",
99
+ goto: "Cy$sPPPPPP$tP$t%j'sPP's'sPPPPPPPPPP'sP'sPP)jPP)o+nPP+q'sPP's's's's's+tP+wPPPP+z,pPPP-fP-jP-vP+z.UP.zP/zP+z0YP1O1RP+z1UPPP1zP+z2QP2v2|3P3SP+z3YP4OP+z4UP4zP+z5QP5vP+z5|P6rP6xP+z7WP7|P+z8SP8xP$t$t$tPPPP9O$tPPPPPP$tP9U:j;f;m;w;}<T<g<m<t<z=U=[PPPPP=b>YPPPCcCjCmPPCp$tCsCv!gbOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%k$dkRhijl!e!f!p!q!r!s!x!y!z!{!|#R#S#T#U#V#e$O%P%U%V%t&U&V&X&d&g&x&}'T'W'h(Q(`(p(r(v(y(z({(|(})P)Q)R)S)T)W)Z)[)b)c)f)g)h)i)j)k)l)m)n)s)y)z){)|)}*O*P*Q*R*S*T*UQ$_!kQ$v!}Q&P$`S&f${(XS']&]'|R'b&b$ikRhijl!e!f!p!q!r!s!x!y!z!{!|!}#R#S#T#U#V#e$O%P%U%V%t&U&V&X&b&d&g&x&}'T'W'h(Q(`(p(r(v(y(z({(|(})P)Q)R)S)T)W)Z)[)b)c)f)g)h)i)j)k)l)m)n)s)y)z){)|)}*O*P*Q*R*S*T*UV$b!l#O)O$d#Pg#W#Y#[#_$U$W$i$j$k$l$p$q$r$s$t$u$z${$|$}%O%]%l&h&k&l&y'U'V'X'a'e'f'g'i'm'r'w(R(S(T(U(W(X(Y(Z([(](m(o(t(u(w(x)U)V)X)Y)])^)_)`)a)d)e)o)p)q)r)t)u)v)w)x*V*W*X*YQ&O$_S&Q$a(VR'S&PR$w!}R'c&bR#]jR&m%V!g_OSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%k!gSOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kTnSoQqSQtTQ#boR#kuQpSS#aoqS%Z#b#cR&o%[!gTOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQ$Y!gQ$[!iQ$]!jQ$d!mQ$f!nQ$g!oQ%e#qQ%z$^Q&v%rQ'Y&[S'[&]'|Q'n'OQ(b'tQ(f'xR(h'{QsTS#htuS%`#i#kR&q%a!gUOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kRyUR#ny!gVOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQzVR#p{!gWOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQ$`!kR%y$]R%{$^R'o'OQ}WR#r!O!gXOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQ!QXR#t!R!gYOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQ!TYR#v!U!gZOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQ!WZR#x!X!g[OSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQ![[R#}!]Q!Z[S#z![!]S%j#{#}R&t%k!g]OSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQ!_]R$Q!`!g^OSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQ!b^R$S!cQ'^&]R(i'|QdOQuTQ{VQ!OWQ!RXQ!UYQ!XZQ!][Q!`]Q!c^p!vdu{!O!R!U!X!]!`!c#c#i#{%[%a%kQ#cqQ#itQ#{![Q%[#bQ%a#kR%k#}SQOdSeQm!cmSTVWXYZ[]^oqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kS&c$u$wR'd&cQ%Q#WQ%S#YT&i%Q%SQ%W#]R&n%WQoSR#`oQ%s$YQ&S$dQ&W$gW&w%s&S&W(qR(q(fQxUR#mxS'P%z%{R'p'PQ'u'VR(c'uQ'y'XQ(e'wT(g'y(eQ'}'^R(j'}Q!uaR$m!u!bcOTVWXYZ[]^dqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kTnSoQgRQ#WhQ#YiQ#[jQ#_lQ$U!eQ$W!fQ$i!pQ$j!qQ$k!rQ$l!sQ$p!xS$q!y)gQ$r!zQ$s!{Q$t!|Q$u!}Q$z#RQ${#SQ$|#TQ$}#UQ%O#VQ%]#eQ%l$OQ&h%PQ&k%UQ&l%VQ&y%tQ'U&UQ'V&VQ'X&XQ'a&bQ'e&dQ'f&gQ'g(yQ'i&xQ'm&}Q'r'TQ'w'WS(R(z)zQ(S({Q(T(|Q(U(}Q(W)PQ(X)QQ(Y)RQ(Z)SQ([)TQ(]'hQ(m(QQ(o(`Q(t)WQ(u(pQ(w(rQ(x(vQ)U)ZQ)V)[Q)X)bQ)Y)cQ)])fQ)^)lQ)_)mQ)`)nQ)a)sQ)d*TQ)e*UQ)o)hQ)p)iQ)q)jQ)r)kQ)t)yQ)u*PQ)v*QQ)w*RQ)x*SQ*V){Q*W)|Q*X)}R*Y*OQ$c!lT$y#O)OR$x!}R#XhR#^jR%|$^R$h!o",
100
+ nodeNames: "⚠ {{ {# {% {% Template Text }} Interpolation VariableName MemberExpression . PropertyName SubscriptExpression BinaryExpression ConcatOp ArithOp ArithOp CompareOp in is StringLiteral NumberLiteral and or NotExpression not FilterExpression FilterOp FilterName FilterCall ) ( ArgumentList NamedArgument AssignOp , NamedArgument ConditionalExpression if else CallExpression ArrayExpression TupleExpression ParenthesizedExpression DictExpression Entry : Entry BooleanLiteral self super loop IfStatement Tag TagName if %} Tag elif Tag else EndTag endif ForStatement Tag for Definition recursive EndTag endfor RawStatement Tag raw RawText EndTag endraw BlockStatement Tag block scoped required EndTag endblock MacroStatement Tag macro ParamList OptionalParameter OptionalParameter EndTag endmacro CallStatement Tag call EndTag endcall FilterStatement Tag filter EndTag endfilter SetStatement Tag set EndTag endset TransStatement Tag trans Tag pluralize EndTag endtrans WithStatement Tag with EndTag endwith AutoescapeStatement Tag autoescape EndTag endautoescape Tag Tag Tag import as from import ImportItem Tag include ignore missing with without context Comment #}",
101
+ maxTerm: 173,
102
+ nodeProps: [
103
+ ["closedBy", 1, "}}", 2, "#}", -2, 3, 4, "%}", 32, ")"],
104
+ ["openedBy", 7, "{{", 31, "(", 57, "{%", 140, "{#"],
105
+ ["group", -18, 9, 10, 13, 14, 21, 22, 25, 27, 38, 41, 42, 43, 44, 45, 49, 50, 51, 52, "Expression", -11, 53, 64, 71, 77, 84, 92, 97, 102, 107, 114, 119, "Statement"]
106
+ ],
107
+ skippedNodes: [0],
108
+ repeatNodeCount: 13,
109
+ tokenData: ".|~RqXY#YYZ#Y]^#Ypq#Yqr#krs#vuv&nwx&{xy)nyz)sz{)x{|*V|}+|}!O,R!O!P,g!P!Q,o!Q![+h![!],w!^!_,|!_!`-U!`!a,|!c!}-^!}#O.U#P#Q.Z#R#S-^#T#o-^#o#p.`#p#q.e#q#r.j#r#s.w%W;'S-^;'S;:j.O<%lO-^~#_S$d~XY#YYZ#Y]^#Ypq#Y~#nP!_!`#q~#vOb~~#yWOY#vZr#vrs$cs#O#v#O#P$h#P;'S#v;'S;=`%x<%lO#v~$hOe~~$kYOY#vYZ#vZr#vrs%Zs#O#v#O#P$h#P;'S#v;'S;=`&O;=`<%l#v<%lO#v~%`We~OY#vZr#vrs$cs#O#v#O#P$h#P;'S#v;'S;=`%x<%lO#v~%{P;=`<%l#v~&RXOY#vZr#vrs$cs#O#v#O#P$h#P;'S#v;'S;=`%x;=`<%l#v<%lO#v~&sP`~#q#r&v~&{O!Z~~'OWOY&{Zw&{wx$cx#O&{#O#P'h#P;'S&{;'S;=`(x<%lO&{~'kYOY&{YZ&{Zw&{wx(Zx#O&{#O#P'h#P;'S&{;'S;=`)O;=`<%l&{<%lO&{~(`We~OY&{Zw&{wx$cx#O&{#O#P'h#P;'S&{;'S;=`(x<%lO&{~({P;=`<%l&{~)RXOY&{Zw&{wx$cx#O&{#O#P'h#P;'S&{;'S;=`(x;=`<%l&{<%lO&{~)sOp~~)xOo~~)}P`~z{*Q~*VO`~~*[Qa~!O!P*b!Q![+h~*eP!Q![*h~*mSf~!Q![*h!g!h*y#R#S*h#X#Y*y~*|R{|+V}!O+V!Q![+]~+YP!Q![+]~+bQf~!Q![+]#R#S+]~+mTf~!O!P*b!Q![+h!g!h*y#R#S+h#X#Y*y~,ROt~~,WRa~uv,a!O!P*b!Q![+h~,dP#q#r&v~,lPZ~!Q![*h~,tP`~!P!Q*Q~,|O!P~~-RPb~!_!`#q~-ZPs~!_!`#q!`-iVm`[p!XS$gY!Q![-^!c!}-^#R#S-^#T#o-^%W;'S-^;'S;:j.O<%lO-^!`.RP;=`<%l-^~.ZO$i~~.`O$h~~.eO$n~~.jOl~^.oP$m[#q#r.rQ.wOVQ~.|O_~",
110
+ tokenizers: [base, raw, 1, 2, 3, 4, 5, /* @__PURE__ */ new LocalTokenGroup("b~RPstU~XP#q#r[~aO$Q~~", 17, 173)],
111
+ topRules: { "Template": [0, 5] },
112
+ specialized: [{ term: 161, get: (value) => spec_identifier[value] || -1 }, { term: 55, get: (value) => spec_TagName[value] || -1 }],
113
+ tokenPrec: 3602
114
+ });
115
+ function completions(words, type) {
116
+ return words.split(" ").map((label) => ({ label, type }));
117
+ }
118
+ const Filters = /* @__PURE__ */ completions("abs attr batch capitalize center default dictsort escape filesizeformat first float forceescape format groupby indent int items join last length list lower map max min pprint random reject rejectattr replace reverse round safe select selectattr slice sort string striptags sum title tojson trim truncate unique upper urlencode urlize wordcount wordwrap xmlattr", "function");
119
+ const Functions = /* @__PURE__ */ completions("boolean callable defined divisibleby eq escaped even filter float ge gt in integer iterable le lower lt mapping ne none number odd sameas sequence string test undefined upper range lipsum dict joiner namespace", "function");
120
+ const Globals = /* @__PURE__ */ completions("loop super self true false varargs kwargs caller name arguments catch_kwargs catch_varargs caller", "keyword");
121
+ const Expressions = /* @__PURE__ */ Functions.concat(Globals);
122
+ const Tags = /* @__PURE__ */ completions("raw endraw filter endfilter trans pluralize endtrans with endwith autoescape endautoescape if elif else endif for endfor call endcall block endblock set endset macro endmacro import include break continue debug do extends", "keyword");
123
+ function findContext(context) {
124
+ var _a;
125
+ let { state, pos } = context;
126
+ let node = syntaxTree(state).resolveInner(pos, -1).enterUnfinishedNodesBefore(pos);
127
+ let before = ((_a = node.childBefore(pos)) === null || _a === void 0 ? void 0 : _a.name) || node.name;
128
+ if (node.name == "FilterName")
129
+ return { type: "filter", node };
130
+ if (context.explicit && (before == "FilterOp" || before == "filter"))
131
+ return { type: "filter" };
132
+ if (node.name == "TagName")
133
+ return { type: "tag", node };
134
+ if (context.explicit && before == "{%")
135
+ return { type: "tag" };
136
+ if (node.name == "PropertyName" && node.parent.name == "MemberExpression")
137
+ return { type: "prop", node, target: node.parent };
138
+ if (node.name == "." && node.parent.name == "MemberExpression")
139
+ return { type: "prop", target: node.parent };
140
+ if (node.name == "MemberExpression" && before == ".")
141
+ return { type: "prop", target: node };
142
+ if (node.name == "VariableName")
143
+ return { type: "expr", from: node.from };
144
+ if (node.name == "Comment" || node.name == "StringLiteral" || node.name == "NumberLiteral")
145
+ return null;
146
+ let word = context.matchBefore(/[\w\u00c0-\uffff]+$/);
147
+ if (word)
148
+ return { type: "expr", from: word.from };
149
+ if (context.explicit)
150
+ return { type: "expr" };
151
+ return null;
152
+ }
153
+ function resolveProperties(state, node, context, properties) {
154
+ let path = [];
155
+ for (; ; ) {
156
+ let obj = node.getChild("Expression");
157
+ if (!obj)
158
+ return [];
159
+ if (obj.name == "VariableName") {
160
+ path.unshift(state.sliceDoc(obj.from, obj.to));
161
+ break;
162
+ } else if (obj.name == "MemberExpression") {
163
+ let name = obj.getChild("PropertyName");
164
+ if (name)
165
+ path.unshift(state.sliceDoc(name.from, name.to));
166
+ node = obj;
167
+ } else {
168
+ return [];
169
+ }
170
+ }
171
+ return properties(path, state, context);
172
+ }
173
+ function jinjaCompletionSource(config = {}) {
174
+ let tags2 = config.tags ? config.tags.concat(Tags) : Tags;
175
+ let exprs = config.variables ? config.variables.concat(Expressions) : Expressions;
176
+ let { properties } = config;
177
+ return (context) => {
178
+ var _a;
179
+ let cx = findContext(context);
180
+ if (!cx)
181
+ return null;
182
+ let from = (_a = cx.from) !== null && _a !== void 0 ? _a : cx.node ? cx.node.from : context.pos;
183
+ let options;
184
+ if (cx.type == "filter")
185
+ options = Filters;
186
+ else if (cx.type == "tag")
187
+ options = tags2;
188
+ else if (cx.type == "expr")
189
+ options = exprs;
190
+ else
191
+ options = properties ? resolveProperties(context.state, cx.target, context, properties) : [];
192
+ return options.length ? { options, from, validFor: /^[\w\u00c0-\uffff]*$/ } : null;
193
+ };
194
+ }
195
+ const closePercentBrace = /* @__PURE__ */ EditorView.inputHandler.of((view, from, to, text2) => {
196
+ if (text2 != "%" || from != to || view.state.doc.sliceString(from - 1, to + 1) != "{}")
197
+ return false;
198
+ view.dispatch(view.state.changeByRange((range) => ({
199
+ changes: { from: range.from, to: range.to, insert: "%%" },
200
+ range: EditorSelection.cursor(range.from + 1)
201
+ })), {
202
+ scrollIntoView: true,
203
+ userEvent: "input.type"
204
+ });
205
+ return true;
206
+ });
207
+ function statementIndent(except) {
208
+ return (context) => {
209
+ let back = except.test(context.textAfter);
210
+ return context.lineIndent(context.node.from) + (back ? 0 : context.unit);
211
+ };
212
+ }
213
+ const tagLanguage = /* @__PURE__ */ LRLanguage.define({
214
+ name: "jinja",
215
+ parser: /* @__PURE__ */ parser.configure({
216
+ props: [
217
+ /* @__PURE__ */ styleTags({
218
+ "TagName raw endraw filter endfilter as trans pluralize endtrans with endwith autoescape endautoescape": tags.keyword,
219
+ "required scoped recursive with without context ignore missing": tags.modifier,
220
+ "self": tags.self,
221
+ "loop super": /* @__PURE__ */ tags.standard(tags.variableName),
222
+ "if elif else endif for endfor call endcall": tags.controlKeyword,
223
+ "block endblock set endset macro endmacro import from include": tags.definitionKeyword,
224
+ "Comment/...": tags.blockComment,
225
+ "VariableName": tags.variableName,
226
+ "Definition": /* @__PURE__ */ tags.definition(tags.variableName),
227
+ "PropertyName": tags.propertyName,
228
+ "FilterName": /* @__PURE__ */ tags.special(tags.variableName),
229
+ "ArithOp": tags.arithmeticOperator,
230
+ "AssignOp": tags.definitionOperator,
231
+ "not and or": tags.logicOperator,
232
+ "CompareOp": tags.compareOperator,
233
+ "in is": tags.operatorKeyword,
234
+ "FilterOp ConcatOp": tags.operator,
235
+ "StringLiteral": tags.string,
236
+ "NumberLiteral": tags.number,
237
+ "BooleanLiteral": tags.bool,
238
+ "{% %} {# #} {{ }} { }": tags.brace,
239
+ "( )": tags.paren,
240
+ ".": tags.derefOperator,
241
+ ": , .": tags.punctuation
242
+ }),
243
+ /* @__PURE__ */ indentNodeProp.add({
244
+ Tag: /* @__PURE__ */ delimitedIndent({ closing: "%}" }),
245
+ "IfStatement ForStatement": /* @__PURE__ */ statementIndent(/^\s*(\{%-?\s*)?(endif|endfor|else|elif)\b/),
246
+ "Statement": /* @__PURE__ */ statementIndent(/^\s*(\{%-?\s*)?end\w/)
247
+ }),
248
+ /* @__PURE__ */ foldNodeProp.add({
249
+ "Statement Comment"(tree) {
250
+ let first = tree.firstChild, last = tree.lastChild;
251
+ if (!first || first.name != "Tag" && first.name != "{#")
252
+ return null;
253
+ return { from: first.to, to: last.name == "EndTag" || last.name == "#}" ? last.from : tree.to };
254
+ }
255
+ })
256
+ ]
257
+ }),
258
+ languageData: {
259
+ indentOnInput: /^\s*{%-?\s*(?:end|elif|else)$/
260
+ }
261
+ });
262
+ const baseHTML = /* @__PURE__ */ html();
263
+ function makeJinja(base2) {
264
+ return tagLanguage.configure({
265
+ wrap: parseMixed((node) => node.type.isTop ? {
266
+ parser: base2.parser,
267
+ overlay: (n) => n.name == "Text" || n.name == "RawText"
268
+ } : null)
269
+ }, "jinja");
270
+ }
271
+ const jinjaLanguage = /* @__PURE__ */ makeJinja(baseHTML.language);
272
+ function jinja(config = {}) {
273
+ let base2 = config.base || baseHTML;
274
+ let lang = base2.language == baseHTML.language ? jinjaLanguage : makeJinja(base2.language);
275
+ return new LanguageSupport(lang, [
276
+ base2.support,
277
+ lang.data.of({ autocomplete: jinjaCompletionSource(config) }),
278
+ base2.language.data.of({ closeBrackets: { brackets: ["{"] } }),
279
+ closePercentBrace
280
+ ]);
281
+ }
282
+ export {
283
+ closePercentBrace,
284
+ jinja,
285
+ jinjaCompletionSource,
286
+ jinjaLanguage
287
+ };